rust
This commit is contained in:
Generated
+114
@@ -0,0 +1,114 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 4
|
||||
|
||||
[[package]]
|
||||
name = "agent-browser"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"serde",
|
||||
"serde_json",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "itoa"
|
||||
version = "1.0.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2"
|
||||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.180"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc"
|
||||
|
||||
[[package]]
|
||||
name = "memchr"
|
||||
version = "2.7.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.105"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "535d180e0ecab6268a3e718bb9fd44db66bbbc256257165fc699dadf70d16fe7"
|
||||
dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "quote"
|
||||
version = "1.0.43"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dc74d9a594b72ae6656596548f56f667211f8a97b3d4c3d467150794690dc40a"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.228"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
|
||||
dependencies = [
|
||||
"serde_core",
|
||||
"serde_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_core"
|
||||
version = "1.0.228"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
|
||||
dependencies = [
|
||||
"serde_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_derive"
|
||||
version = "1.0.228"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_json"
|
||||
version = "1.0.149"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86"
|
||||
dependencies = [
|
||||
"itoa",
|
||||
"memchr",
|
||||
"serde",
|
||||
"serde_core",
|
||||
"zmij",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "2.0.114"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "unicode-ident"
|
||||
version = "1.0.22"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
|
||||
|
||||
[[package]]
|
||||
name = "zmij"
|
||||
version = "1.0.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2fc5a66a20078bf1251bde995aa2fdcc4b800c70b5d92dd2c62abc5c60f679f8"
|
||||
@@ -0,0 +1,17 @@
|
||||
[package]
|
||||
name = "agent-browser"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
description = "Fast browser automation CLI for AI agents"
|
||||
license = "Apache-2.0"
|
||||
|
||||
[dependencies]
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
serde_json = "1.0"
|
||||
libc = "0.2"
|
||||
|
||||
[profile.release]
|
||||
opt-level = 3
|
||||
lto = true
|
||||
codegen-units = 1
|
||||
strip = true
|
||||
+332
@@ -0,0 +1,332 @@
|
||||
use serde::{Deserialize, Serialize};
|
||||
use serde_json::{json, Value};
|
||||
use std::env;
|
||||
use std::fs;
|
||||
use std::io::{BufRead, BufReader, Write};
|
||||
use std::os::unix::net::UnixStream;
|
||||
use std::path::PathBuf;
|
||||
use std::process::{exit, Command, Stdio};
|
||||
use std::thread;
|
||||
use std::time::Duration;
|
||||
|
||||
#[derive(Serialize)]
|
||||
struct Request {
|
||||
id: String,
|
||||
action: String,
|
||||
#[serde(flatten)]
|
||||
extra: Value,
|
||||
}
|
||||
|
||||
#[derive(Deserialize, Serialize)]
|
||||
struct Response {
|
||||
success: bool,
|
||||
data: Option<Value>,
|
||||
error: Option<String>,
|
||||
}
|
||||
|
||||
fn get_socket_path() -> PathBuf {
|
||||
let session = env::var("AGENT_BROWSER_SESSION").unwrap_or_else(|_| "default".to_string());
|
||||
let tmp = env::temp_dir();
|
||||
tmp.join(format!("agent-browser-{}.sock", session))
|
||||
}
|
||||
|
||||
fn get_pid_path() -> PathBuf {
|
||||
let session = env::var("AGENT_BROWSER_SESSION").unwrap_or_else(|_| "default".to_string());
|
||||
let tmp = env::temp_dir();
|
||||
tmp.join(format!("agent-browser-{}.pid", session))
|
||||
}
|
||||
|
||||
fn is_daemon_running() -> bool {
|
||||
let pid_path = get_pid_path();
|
||||
if !pid_path.exists() {
|
||||
return false;
|
||||
}
|
||||
if let Ok(pid_str) = fs::read_to_string(&pid_path) {
|
||||
if let Ok(pid) = pid_str.trim().parse::<i32>() {
|
||||
// Check if process exists
|
||||
unsafe {
|
||||
return libc::kill(pid, 0) == 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
false
|
||||
}
|
||||
|
||||
fn ensure_daemon() -> Result<(), String> {
|
||||
let socket_path = get_socket_path();
|
||||
|
||||
if is_daemon_running() && socket_path.exists() {
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
// Find daemon.js
|
||||
let exe_path = env::current_exe().map_err(|e| e.to_string())?;
|
||||
let exe_dir = exe_path.parent().unwrap();
|
||||
|
||||
let daemon_paths = [
|
||||
exe_dir.join("daemon.js"),
|
||||
exe_dir.join("../dist/daemon.js"),
|
||||
PathBuf::from("dist/daemon.js"),
|
||||
];
|
||||
|
||||
let daemon_path = daemon_paths
|
||||
.iter()
|
||||
.find(|p| p.exists())
|
||||
.ok_or("Daemon not found. Run from project directory or ensure daemon.js is alongside binary.")?;
|
||||
|
||||
// Start daemon
|
||||
let session = env::var("AGENT_BROWSER_SESSION").unwrap_or_else(|_| "default".to_string());
|
||||
Command::new("node")
|
||||
.arg(daemon_path)
|
||||
.env("AGENT_BROWSER_DAEMON", "1")
|
||||
.env("AGENT_BROWSER_SESSION", &session)
|
||||
.stdin(Stdio::null())
|
||||
.stdout(Stdio::null())
|
||||
.stderr(Stdio::null())
|
||||
.spawn()
|
||||
.map_err(|e| format!("Failed to start daemon: {}", e))?;
|
||||
|
||||
// Wait for socket
|
||||
for _ in 0..50 {
|
||||
if socket_path.exists() {
|
||||
return Ok(());
|
||||
}
|
||||
thread::sleep(Duration::from_millis(100));
|
||||
}
|
||||
|
||||
Err("Daemon failed to start".to_string())
|
||||
}
|
||||
|
||||
fn send_command(cmd: Value) -> Result<Response, String> {
|
||||
let socket_path = get_socket_path();
|
||||
let mut stream = UnixStream::connect(&socket_path)
|
||||
.map_err(|e| format!("Failed to connect: {}", e))?;
|
||||
|
||||
stream.set_read_timeout(Some(Duration::from_secs(30))).ok();
|
||||
stream.set_write_timeout(Some(Duration::from_secs(5))).ok();
|
||||
|
||||
let mut json_str = serde_json::to_string(&cmd).map_err(|e| e.to_string())?;
|
||||
json_str.push('\n');
|
||||
|
||||
stream.write_all(json_str.as_bytes())
|
||||
.map_err(|e| format!("Failed to send: {}", e))?;
|
||||
|
||||
let mut reader = BufReader::new(stream);
|
||||
let mut response_line = String::new();
|
||||
reader.read_line(&mut response_line)
|
||||
.map_err(|e| format!("Failed to read: {}", e))?;
|
||||
|
||||
serde_json::from_str(&response_line)
|
||||
.map_err(|e| format!("Invalid response: {}", e))
|
||||
}
|
||||
|
||||
fn gen_id() -> String {
|
||||
format!("r{}", std::time::SystemTime::now()
|
||||
.duration_since(std::time::UNIX_EPOCH)
|
||||
.unwrap()
|
||||
.as_micros() % 1000000)
|
||||
}
|
||||
|
||||
fn parse_command(args: &[String]) -> Option<Value> {
|
||||
if args.is_empty() {
|
||||
return None;
|
||||
}
|
||||
|
||||
let cmd = args[0].as_str();
|
||||
let rest: Vec<&str> = args[1..].iter().map(|s| s.as_str()).collect();
|
||||
let id = gen_id();
|
||||
|
||||
match cmd {
|
||||
"open" | "goto" | "navigate" => {
|
||||
let url = rest.get(0)?;
|
||||
let url = if url.starts_with("http") {
|
||||
url.to_string()
|
||||
} else {
|
||||
format!("https://{}", url)
|
||||
};
|
||||
Some(json!({ "id": id, "action": "navigate", "url": url }))
|
||||
}
|
||||
"click" => Some(json!({ "id": id, "action": "click", "selector": rest.get(0)? })),
|
||||
"fill" => Some(json!({ "id": id, "action": "fill", "selector": rest.get(0)?, "value": rest[1..].join(" ") })),
|
||||
"type" => Some(json!({ "id": id, "action": "type", "selector": rest.get(0)?, "text": rest[1..].join(" ") })),
|
||||
"hover" => Some(json!({ "id": id, "action": "hover", "selector": rest.get(0)? })),
|
||||
"snapshot" => {
|
||||
let mut cmd = json!({ "id": id, "action": "snapshot" });
|
||||
let obj = cmd.as_object_mut().unwrap();
|
||||
for (i, arg) in rest.iter().enumerate() {
|
||||
match *arg {
|
||||
"-i" | "--interactive" => { obj.insert("interactive".to_string(), json!(true)); }
|
||||
"-c" | "--compact" => { obj.insert("compact".to_string(), json!(true)); }
|
||||
"-d" | "--depth" => {
|
||||
if let Some(d) = rest.get(i + 1) {
|
||||
if let Ok(n) = d.parse::<i32>() {
|
||||
obj.insert("maxDepth".to_string(), json!(n));
|
||||
}
|
||||
}
|
||||
}
|
||||
"-s" | "--selector" => {
|
||||
if let Some(s) = rest.get(i + 1) {
|
||||
obj.insert("selector".to_string(), json!(s));
|
||||
}
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
Some(cmd)
|
||||
}
|
||||
"screenshot" => Some(json!({ "id": id, "action": "screenshot", "path": rest.get(0) })),
|
||||
"close" | "quit" | "exit" => Some(json!({ "id": id, "action": "close" })),
|
||||
"get" => match rest.get(0).map(|s| *s) {
|
||||
Some("text") => Some(json!({ "id": id, "action": "gettext", "selector": rest.get(1)? })),
|
||||
Some("url") => Some(json!({ "id": id, "action": "url" })),
|
||||
Some("title") => Some(json!({ "id": id, "action": "title" })),
|
||||
_ => None,
|
||||
},
|
||||
"press" => Some(json!({ "id": id, "action": "press", "key": rest.get(0)? })),
|
||||
"wait" => {
|
||||
if let Some(arg) = rest.get(0) {
|
||||
if arg.parse::<u64>().is_ok() {
|
||||
Some(json!({ "id": id, "action": "wait", "timeout": arg.parse::<u64>().unwrap() }))
|
||||
} else {
|
||||
Some(json!({ "id": id, "action": "wait", "selector": arg }))
|
||||
}
|
||||
} else {
|
||||
None
|
||||
}
|
||||
}
|
||||
"back" => Some(json!({ "id": id, "action": "back" })),
|
||||
"forward" => Some(json!({ "id": id, "action": "forward" })),
|
||||
"reload" => Some(json!({ "id": id, "action": "reload" })),
|
||||
"eval" => Some(json!({ "id": id, "action": "evaluate", "script": rest.join(" ") })),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
|
||||
fn print_response(resp: &Response, json_mode: bool) {
|
||||
if json_mode {
|
||||
println!("{}", serde_json::to_string(resp).unwrap_or_default());
|
||||
return;
|
||||
}
|
||||
|
||||
if !resp.success {
|
||||
eprintln!("\x1b[31m✗ Error:\x1b[0m {}", resp.error.as_deref().unwrap_or("Unknown error"));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if let Some(data) = &resp.data {
|
||||
if let Some(url) = data.get("url").and_then(|v| v.as_str()) {
|
||||
if let Some(title) = data.get("title").and_then(|v| v.as_str()) {
|
||||
println!("\x1b[32m✓\x1b[0m \x1b[1m{}\x1b[0m", title);
|
||||
println!("\x1b[2m {}\x1b[0m", url);
|
||||
return;
|
||||
}
|
||||
println!("{}", url);
|
||||
return;
|
||||
}
|
||||
if let Some(snapshot) = data.get("snapshot").and_then(|v| v.as_str()) {
|
||||
println!("{}", snapshot);
|
||||
return;
|
||||
}
|
||||
if let Some(title) = data.get("title").and_then(|v| v.as_str()) {
|
||||
println!("{}", title);
|
||||
return;
|
||||
}
|
||||
if let Some(text) = data.get("text").and_then(|v| v.as_str()) {
|
||||
println!("{}", text);
|
||||
return;
|
||||
}
|
||||
if let Some(result) = data.get("result") {
|
||||
println!("{}", serde_json::to_string_pretty(result).unwrap_or_default());
|
||||
return;
|
||||
}
|
||||
if data.get("closed").is_some() {
|
||||
println!("\x1b[32m✓\x1b[0m Browser closed");
|
||||
return;
|
||||
}
|
||||
println!("\x1b[32m✓\x1b[0m Done");
|
||||
}
|
||||
}
|
||||
|
||||
fn print_help() {
|
||||
println!(r#"
|
||||
agent-browser - fast browser automation CLI (Rust)
|
||||
|
||||
Usage: agent-browser <command> [args] [--json]
|
||||
|
||||
Commands:
|
||||
open <url> Navigate to URL
|
||||
click <sel> Click element (@ref from snapshot)
|
||||
fill <sel> <text> Fill input
|
||||
type <sel> <text> Type text
|
||||
hover <sel> Hover element
|
||||
snapshot [opts] Get accessibility tree with refs
|
||||
screenshot [path] Take screenshot
|
||||
get text <sel> Get text content
|
||||
get url Get current URL
|
||||
get title Get page title
|
||||
press <key> Press keyboard key
|
||||
wait <ms|sel> Wait for time or element
|
||||
eval <js> Evaluate JavaScript
|
||||
close Close browser
|
||||
|
||||
Snapshot Options:
|
||||
-i, --interactive Only interactive elements
|
||||
-c, --compact Remove empty structural elements
|
||||
-d, --depth <n> Limit tree depth
|
||||
-s, --selector <sel> Scope to CSS selector
|
||||
|
||||
Options:
|
||||
--json Output JSON
|
||||
|
||||
Examples:
|
||||
agent-browser open example.com
|
||||
agent-browser snapshot -i
|
||||
agent-browser click @e2
|
||||
"#);
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let args: Vec<String> = env::args().skip(1).collect();
|
||||
let json_mode = args.iter().any(|a| a == "--json");
|
||||
let clean_args: Vec<String> = args.iter().filter(|a| !a.starts_with("--")).cloned().collect();
|
||||
|
||||
if clean_args.is_empty() || args.iter().any(|a| a == "--help" || a == "-h") {
|
||||
print_help();
|
||||
return;
|
||||
}
|
||||
|
||||
let cmd = match parse_command(&clean_args) {
|
||||
Some(c) => c,
|
||||
None => {
|
||||
eprintln!("\x1b[31mUnknown command:\x1b[0m {}", clean_args.get(0).unwrap_or(&String::new()));
|
||||
exit(1);
|
||||
}
|
||||
};
|
||||
|
||||
if let Err(e) = ensure_daemon() {
|
||||
if json_mode {
|
||||
println!(r#"{{"success":false,"error":"{}"}}"#, e);
|
||||
} else {
|
||||
eprintln!("\x1b[31m✗ Error:\x1b[0m {}", e);
|
||||
}
|
||||
exit(1);
|
||||
}
|
||||
|
||||
match send_command(cmd) {
|
||||
Ok(resp) => {
|
||||
let success = resp.success;
|
||||
print_response(&resp, json_mode);
|
||||
if !success {
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
Err(e) => {
|
||||
if json_mode {
|
||||
println!(r#"{{"success":false,"error":"{}"}}"#, e);
|
||||
} else {
|
||||
eprintln!("\x1b[31m✗ Error:\x1b[0m {}", e);
|
||||
}
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{"rustc_fingerprint":6311965348799869086,"outputs":{"17747080675513052775":{"success":true,"status":"","code":0,"stdout":"rustc 1.92.0 (ded5c06cf 2025-12-08)\nbinary: rustc\ncommit-hash: ded5c06cf21d2b93bffd5d884aa6e96934ee4234\ncommit-date: 2025-12-08\nhost: aarch64-apple-darwin\nrelease: 1.92.0\nLLVM version: 21.1.3\n","stderr":""},"7971740275564407648":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.dylib\nlib___.dylib\nlib___.a\nlib___.dylib\n/Users/ctate/.rustup/toolchains/stable-aarch64-apple-darwin\noff\npacked\nunpacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_abi=\"\"\ntarget_arch=\"aarch64\"\ntarget_endian=\"little\"\ntarget_env=\"\"\ntarget_family=\"unix\"\ntarget_feature=\"aes\"\ntarget_feature=\"crc\"\ntarget_feature=\"dit\"\ntarget_feature=\"dotprod\"\ntarget_feature=\"dpb\"\ntarget_feature=\"dpb2\"\ntarget_feature=\"fcma\"\ntarget_feature=\"fhm\"\ntarget_feature=\"flagm\"\ntarget_feature=\"fp16\"\ntarget_feature=\"frintts\"\ntarget_feature=\"jsconv\"\ntarget_feature=\"lor\"\ntarget_feature=\"lse\"\ntarget_feature=\"neon\"\ntarget_feature=\"paca\"\ntarget_feature=\"pacg\"\ntarget_feature=\"pan\"\ntarget_feature=\"pmuv3\"\ntarget_feature=\"ras\"\ntarget_feature=\"rcpc\"\ntarget_feature=\"rcpc2\"\ntarget_feature=\"rdm\"\ntarget_feature=\"sb\"\ntarget_feature=\"sha2\"\ntarget_feature=\"sha3\"\ntarget_feature=\"ssbs\"\ntarget_feature=\"vh\"\ntarget_has_atomic=\"128\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"macos\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"apple\"\nunix\n","stderr":""}},"successes":{}}
|
||||
@@ -0,0 +1,3 @@
|
||||
Signature: 8a477f597d28d172789f06886806bc55
|
||||
# This file is a cache directory tag created by cargo.
|
||||
# For information about cache directory tags see https://bford.info/cachedir/
|
||||
@@ -0,0 +1 @@
|
||||
6688ad51a4e95f7d
|
||||
@@ -0,0 +1 @@
|
||||
{"rustc":18415816196306954164,"features":"[]","declared_features":"[]","target":337689355490728565,"profile":5200837052885743122,"path":4942398508502643691,"deps":[[203594543813181569,"libc",false,3626953805464230438],[13548984313718623784,"serde",false,10771651742739107466],[13795362694956882968,"serde_json",false,12645139653150135295]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/agent-browser-5894536b887e2ce7/dep-bin-agent-browser","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
{"$message_type":"diagnostic","message":"struct `Request` is never constructed","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":310,"byte_end":317,"line_start":13,"line_end":13,"column_start":8,"column_end":15,"is_primary":true,"text":[{"text":"struct Request {","highlight_start":8,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: struct `Request` is never constructed\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/main.rs:13:8\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m13\u001b[0m \u001b[1m\u001b[94m|\u001b[0m struct Request {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default\n\n"}
|
||||
{"$message_type":"diagnostic","message":"1 warning emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: 1 warning emitted\u001b[0m\n\n"}
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -0,0 +1 @@
|
||||
679159d09a3e2352
|
||||
@@ -0,0 +1 @@
|
||||
{"rustc":18415816196306954164,"features":"[]","declared_features":"[\"no-panic\"]","target":18426369533666673425,"profile":17665183640080672258,"path":4924545206005113226,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/itoa-653b9192107a1caa/dep-lib-itoa","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||
@@ -0,0 +1 @@
|
||||
1b3dc811a6a84610
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":18415816196306954164,"features":"[\"default\", \"std\"]","declared_features":"[\"align\", \"const-extern-fn\", \"default\", \"extra_traits\", \"rustc-dep-of-std\", \"rustc-std-workspace-core\", \"std\", \"use_std\"]","target":5408242616063297496,"profile":4104031327198523981,"path":717295242675257595,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/libc-0303d277881093f4/dep-build-script-build-script-build","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||
BIN
Binary file not shown.
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
+1
@@ -0,0 +1 @@
|
||||
365eca3fdb4cefee
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":18415816196306954164,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[203594543813181569,"build_script_build",false,1172810184192965915]],"local":[{"RerunIfChanged":{"output":"release/build/libc-b8c0d8e35a1980d3/output","paths":["build.rs"]}},{"RerunIfEnvChanged":{"var":"RUST_LIBC_UNSTABLE_FREEBSD_VERSION","val":null}},{"RerunIfEnvChanged":{"var":"RUST_LIBC_UNSTABLE_MUSL_V1_2_3","val":null}},{"RerunIfEnvChanged":{"var":"RUST_LIBC_UNSTABLE_LINUX_TIME_BITS64","val":null}},{"RerunIfEnvChanged":{"var":"RUST_LIBC_UNSTABLE_GNU_FILE_OFFSET_BITS","val":null}},{"RerunIfEnvChanged":{"var":"RUST_LIBC_UNSTABLE_GNU_TIME_BITS","val":null}}],"rustflags":[],"config":0,"compile_kind":0}
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -0,0 +1 @@
|
||||
265a720745875532
|
||||
@@ -0,0 +1 @@
|
||||
{"rustc":18415816196306954164,"features":"[\"default\", \"std\"]","declared_features":"[\"align\", \"const-extern-fn\", \"default\", \"extra_traits\", \"rustc-dep-of-std\", \"rustc-std-workspace-core\", \"std\", \"use_std\"]","target":17682796336736096309,"profile":9570665444227806274,"path":17393447057695460638,"deps":[[203594543813181569,"build_script_build",false,17217064405012471350]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/libc-d843359d3dd4757b/dep-lib-libc","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -0,0 +1 @@
|
||||
c4b14c030f90f7e5
|
||||
@@ -0,0 +1 @@
|
||||
{"rustc":18415816196306954164,"features":"[\"alloc\", \"std\"]","declared_features":"[\"alloc\", \"core\", \"default\", \"libc\", \"logging\", \"rustc-dep-of-std\", \"std\", \"use_std\"]","target":11745930252914242013,"profile":17665183640080672258,"path":10929854033688823645,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/memchr-dcaf8011940d18dd/dep-lib-memchr","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||
+1
@@ -0,0 +1 @@
|
||||
c6c751fb5985ee18
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":18415816196306954164,"features":"[\"proc-macro\"]","declared_features":"[\"default\", \"nightly\", \"proc-macro\", \"span-locations\"]","target":5408242616063297496,"profile":17984201634715228204,"path":12997304344925603386,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/proc-macro2-291b57751730d5b3/dep-build-script-build-script-build","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||
BIN
Binary file not shown.
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -0,0 +1 @@
|
||||
99492d125678f152
|
||||
@@ -0,0 +1 @@
|
||||
{"rustc":18415816196306954164,"features":"[\"proc-macro\"]","declared_features":"[\"default\", \"nightly\", \"proc-macro\", \"span-locations\"]","target":369203346396300798,"profile":17984201634715228204,"path":13410823482762623739,"deps":[[1548027836057496652,"unicode_ident",false,17464007849574802152],[8265977775676642988,"build_script_build",false,12473910748324930327]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/proc-macro2-a753b344a6b4aa98/dep-lib-proc_macro2","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||
+1
@@ -0,0 +1 @@
|
||||
17a3d569bc3b1cad
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":18415816196306954164,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[8265977775676642988,"build_script_build",false,1796519922882430918]],"local":[{"RerunIfChanged":{"output":"release/build/proc-macro2-fc2999f6676f03db/output","paths":["src/probe/proc_macro_span.rs","src/probe/proc_macro_span_location.rs","src/probe/proc_macro_span_file.rs"]}},{"RerunIfEnvChanged":{"var":"RUSTC_BOOTSTRAP","val":null}}],"rustflags":[],"config":0,"compile_kind":0}
|
||||
+1
@@ -0,0 +1 @@
|
||||
6bdc923342afd40f
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":18415816196306954164,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[8518574257822997924,"build_script_build",false,9121970376368641160]],"local":[{"RerunIfChanged":{"output":"release/build/quote-352ae41707d371c9/output","paths":["build.rs"]}}],"rustflags":[],"config":0,"compile_kind":0}
|
||||
@@ -0,0 +1 @@
|
||||
88d4161fbabf977e
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":18415816196306954164,"features":"[\"proc-macro\"]","declared_features":"[\"default\", \"proc-macro\"]","target":5408242616063297496,"profile":17984201634715228204,"path":13790671566178113312,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/quote-7d13be3cbe4f9de4/dep-build-script-build-script-build","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||
BIN
Binary file not shown.
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -0,0 +1 @@
|
||||
d003c00ee5e827e9
|
||||
@@ -0,0 +1 @@
|
||||
{"rustc":18415816196306954164,"features":"[\"proc-macro\"]","declared_features":"[\"default\", \"proc-macro\"]","target":8313845041260779044,"profile":17984201634715228204,"path":7396022234697991165,"deps":[[8265977775676642988,"proc_macro2",false,5976690491564837273],[8518574257822997924,"build_script_build",false,1140729304499543147]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/quote-833e6725e0f7d298/dep-lib-quote","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||
+1
@@ -0,0 +1 @@
|
||||
756ee17668abdde4
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":18415816196306954164,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[13548984313718623784,"build_script_build",false,17697649354543484049]],"local":[{"RerunIfChanged":{"output":"release/build/serde-b8c046c16de48f41/output","paths":["build.rs"]}}],"rustflags":[],"config":0,"compile_kind":0}
|
||||
@@ -0,0 +1 @@
|
||||
914cfc6052ae9af5
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":18415816196306954164,"features":"[\"default\", \"derive\", \"serde_derive\", \"std\"]","declared_features":"[\"alloc\", \"default\", \"derive\", \"rc\", \"serde_derive\", \"std\", \"unstable\"]","target":5408242616063297496,"profile":17984201634715228204,"path":249724589192208054,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/serde-d35d32ab52b82a81/dep-build-script-build-script-build","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||
BIN
Binary file not shown.
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -0,0 +1 @@
|
||||
8a8e2e7a30987c95
|
||||
@@ -0,0 +1 @@
|
||||
{"rustc":18415816196306954164,"features":"[\"default\", \"derive\", \"serde_derive\", \"std\"]","declared_features":"[\"alloc\", \"default\", \"derive\", \"rc\", \"serde_derive\", \"std\", \"unstable\"]","target":11327258112168116673,"profile":17665183640080672258,"path":12941406846979671253,"deps":[[3051629642231505422,"serde_derive",false,5641576809312684934],[11899261697793765154,"serde_core",false,9364995471257265378],[13548984313718623784,"build_script_build",false,16491525875660058229]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/serde-d6fb44202dad3efd/dep-lib-serde","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -0,0 +1 @@
|
||||
e2646e63c325f781
|
||||
@@ -0,0 +1 @@
|
||||
{"rustc":18415816196306954164,"features":"[\"result\", \"std\"]","declared_features":"[\"alloc\", \"default\", \"rc\", \"result\", \"std\", \"unstable\"]","target":6810695588070812737,"profile":17665183640080672258,"path":2036747530678116908,"deps":[[11899261697793765154,"build_script_build",false,585977647959528904]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/serde_core-0f7ba2581c8c0423/dep-lib-serde_core","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||
+1
@@ -0,0 +1 @@
|
||||
c855f2f090cf2108
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":18415816196306954164,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[11899261697793765154,"build_script_build",false,9484297894334122307]],"local":[{"RerunIfChanged":{"output":"release/build/serde_core-74db491143173930/output","paths":["build.rs"]}}],"rustflags":[],"config":0,"compile_kind":0}
|
||||
+1
@@ -0,0 +1 @@
|
||||
4349c557affe9e83
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":18415816196306954164,"features":"[\"result\", \"std\"]","declared_features":"[\"alloc\", \"default\", \"rc\", \"result\", \"std\", \"unstable\"]","target":5408242616063297496,"profile":17984201634715228204,"path":11726831142147958488,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/serde_core-f043ae3f4b601577/dep-build-script-build-script-build","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||
BIN
Binary file not shown.
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -0,0 +1 @@
|
||||
860b2abc37e84a4e
|
||||
@@ -0,0 +1 @@
|
||||
{"rustc":18415816196306954164,"features":"[\"default\"]","declared_features":"[\"default\", \"deserialize_in_place\"]","target":13076129734743110817,"profile":17984201634715228204,"path":12987448913046961719,"deps":[[6490058671768129134,"syn",false,7558665053758965142],[8265977775676642988,"proc_macro2",false,5976690491564837273],[8518574257822997924,"quote",false,16800653005421544400]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/serde_derive-a5d13e0e658ceae3/dep-lib-serde_derive","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||
+1
@@ -0,0 +1 @@
|
||||
644e2f2e2a90b64e
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":18415816196306954164,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[13795362694956882968,"build_script_build",false,3526728992091369372]],"local":[{"RerunIfChanged":{"output":"release/build/serde_json-a8467019a959068f/output","paths":["build.rs"]}}],"rustflags":[],"config":0,"compile_kind":0}
|
||||
+1
@@ -0,0 +1 @@
|
||||
9c6fad385575f130
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":18415816196306954164,"features":"[\"default\", \"std\"]","declared_features":"[\"alloc\", \"arbitrary_precision\", \"default\", \"float_roundtrip\", \"indexmap\", \"preserve_order\", \"raw_value\", \"std\", \"unbounded_depth\"]","target":5408242616063297496,"profile":17984201634715228204,"path":2724011892659458430,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/serde_json-bfa3f43b57842d41/dep-build-script-build-script-build","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||
BIN
Binary file not shown.
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -0,0 +1 @@
|
||||
ff533889848f7caf
|
||||
@@ -0,0 +1 @@
|
||||
{"rustc":18415816196306954164,"features":"[\"default\", \"std\"]","declared_features":"[\"alloc\", \"arbitrary_precision\", \"default\", \"float_roundtrip\", \"indexmap\", \"preserve_order\", \"raw_value\", \"std\", \"unbounded_depth\"]","target":9592559880233824070,"profile":17665183640080672258,"path":14035373585438498721,"deps":[[198136567835728122,"memchr",false,16570871748087296452],[329814948919240790,"zmij",false,14240623692779305710],[9938278000850417404,"itoa",false,5918643169936380263],[11899261697793765154,"serde_core",false,9364995471257265378],[13795362694956882968,"build_script_build",false,5671879291557596772]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/serde_json-f61651a65bf0eb31/dep-lib-serde_json","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -0,0 +1 @@
|
||||
964576a1d1c5e568
|
||||
@@ -0,0 +1 @@
|
||||
{"rustc":18415816196306954164,"features":"[\"clone-impls\", \"derive\", \"parsing\", \"printing\", \"proc-macro\"]","declared_features":"[\"clone-impls\", \"default\", \"derive\", \"extra-traits\", \"fold\", \"full\", \"parsing\", \"printing\", \"proc-macro\", \"test\", \"visit\", \"visit-mut\"]","target":9442126953582868550,"profile":17984201634715228204,"path":783823479004358955,"deps":[[1548027836057496652,"unicode_ident",false,17464007849574802152],[8265977775676642988,"proc_macro2",false,5976690491564837273],[8518574257822997924,"quote",false,16800653005421544400]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/syn-6f9a22f8c7f909b0/dep-lib-syn","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -0,0 +1 @@
|
||||
e8228a649c9e5cf2
|
||||
@@ -0,0 +1 @@
|
||||
{"rustc":18415816196306954164,"features":"[]","declared_features":"[]","target":5438535436255082082,"profile":17984201634715228204,"path":12877700945182944759,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/unicode-ident-60c57228d30a23d0/dep-lib-unicode_ident","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||
+1
@@ -0,0 +1 @@
|
||||
360c9a380e55e4e2
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":18415816196306954164,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[329814948919240790,"build_script_build",false,6095299370555714152]],"local":[{"RerunIfChanged":{"output":"release/build/zmij-60b0e0e9d7c08f71/output","paths":["build.rs"]}}],"rustflags":[],"config":0,"compile_kind":0}
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -0,0 +1 @@
|
||||
ee3a1f6cccdba0c5
|
||||
@@ -0,0 +1 @@
|
||||
{"rustc":18415816196306954164,"features":"[]","declared_features":"[\"no-panic\"]","target":16603507647234574737,"profile":17665183640080672258,"path":13540680342508186486,"deps":[[329814948919240790,"build_script_build",false,16349286066829265974]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/zmij-9501bcbd6d8b933c/dep-lib-zmij","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||
@@ -0,0 +1 @@
|
||||
68aaa2b57bda9654
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":18415816196306954164,"features":"[]","declared_features":"[\"no-panic\"]","target":5408242616063297496,"profile":17984201634715228204,"path":5279250487697270094,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/zmij-aa602f885104061e/dep-build-script-build-script-build","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||
BIN
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user