From 88ce836599506fc405569d4deb19e0295882a60f Mon Sep 17 00:00:00 2001 From: Brian Cooper Date: Thu, 26 Mar 2026 01:09:56 -0400 Subject: [PATCH 1/6] feat!: move shell mode to explicit `omni shell` subcommand Remove bare positional prompt from Cli struct. Shell mode is now accessed via `omni shell "prompt"` (alias: `omni sh`). This frees the argument space for plugin external_subcommand routing, so `omni run up runa` works without quoting. BREAKING CHANGE: `omni "list files"` is now `omni shell "list files"` --- .changeset/remove-bare-prompt.md | 7 ++++ src/cli/mod.rs | 69 +++++++++++++++++++++++++------- src/main.rs | 30 ++++++-------- 3 files changed, 74 insertions(+), 32 deletions(-) create mode 100644 .changeset/remove-bare-prompt.md diff --git a/.changeset/remove-bare-prompt.md b/.changeset/remove-bare-prompt.md new file mode 100644 index 0000000..2dc71ff --- /dev/null +++ b/.changeset/remove-bare-prompt.md @@ -0,0 +1,7 @@ +--- +"@omnidotdev/cli": minor +--- + +Move shell mode from bare positional to explicit `omni shell` subcommand (alias: `omni sh`). This frees the positional space for plugin routing via `external_subcommand`, so `omni run up runa` works without quoting. + +Migration: `omni "list files"` becomes `omni shell "list files"` or `omni sh "list files"` diff --git a/src/cli/mod.rs b/src/cli/mod.rs index 93b4a35..6a83b86 100644 --- a/src/cli/mod.rs +++ b/src/cli/mod.rs @@ -11,20 +11,6 @@ pub mod auth; #[command(version)] #[command(propagate_version = true)] pub struct Cli { - /// Natural language shell command (shell mode). - /// - /// Converts natural language to shell commands and executes them. - /// Safe commands auto-execute; others require confirmation. - pub prompt: Option, - - /// Skip confirmation for all commands. - #[arg(short, long)] - pub yes: bool, - - /// Show command only, don't execute. - #[arg(short = 'n', long)] - pub dry_run: bool, - /// Increase logging verbosity. #[arg(short, long, action = clap::ArgAction::Count, global = true)] pub verbose: u8, @@ -50,6 +36,21 @@ pub enum Commands { session: Option, }, + /// Run a natural language shell command. + #[command(visible_alias = "sh")] + Shell { + /// Natural language command to convert and execute. + prompt: String, + + /// Skip confirmation for all commands. + #[arg(short, long)] + yes: bool, + + /// Show command only, don't execute. + #[arg(short = 'n', long)] + dry_run: bool, + }, + /// Start the TUI interface. Tui { /// Continue the most recent session. @@ -396,4 +397,44 @@ mod tests { _ => panic!("expected Session command"), } } + + #[test] + fn cli_parses_shell_command() { + let cli = Cli::parse_from(["omni", "shell", "list files in current dir"]); + match cli.command { + Some(Commands::Shell { + prompt, + yes, + dry_run, + }) => { + assert_eq!(prompt, "list files in current dir"); + assert!(!yes); + assert!(!dry_run); + } + _ => panic!("expected Shell command"), + } + } + + #[test] + fn cli_parses_shell_alias() { + let cli = Cli::parse_from(["omni", "sh", "list files"]); + assert!(matches!(cli.command, Some(Commands::Shell { .. }))); + } + + #[test] + fn cli_parses_shell_flags() { + let cli = Cli::parse_from(["omni", "shell", "-y", "-n", "delete temp files"]); + match cli.command { + Some(Commands::Shell { + prompt, + yes, + dry_run, + }) => { + assert_eq!(prompt, "delete temp files"); + assert!(yes); + assert!(dry_run); + } + _ => panic!("expected Shell command"), + } + } } diff --git a/src/main.rs b/src/main.rs index 28fb141..db30d07 100644 --- a/src/main.rs +++ b/src/main.rs @@ -36,24 +36,6 @@ async fn main() -> ExitCode { } async fn run(cli: Cli) -> anyhow::Result<()> { - // Bare prompt = shell mode - if let Some(prompt) = cli.prompt { - if cli.command.is_some() { - anyhow::bail!("Cannot use both a prompt and a subcommand"); - } - let mut config = Config::load()?; - let provider = config.agent.create_provider_with_fallback().await?; - return omni_cli::core::shell::run( - provider, - &config.agent.model, - &prompt, - cli.yes, - cli.dry_run, - ) - .await - .map_err(|e| anyhow::anyhow!("{e}")); - } - // No subcommand = launch TUI let Some(command) = cli.command else { return omni_cli::tui::run().await; @@ -104,6 +86,18 @@ async fn run(cli: Cli) -> anyhow::Result<()> { println!(); } + Commands::Shell { + prompt, + yes, + dry_run, + } => { + let mut config = Config::load()?; + let provider = config.agent.create_provider_with_fallback().await?; + omni_cli::core::shell::run(provider, &config.agent.model, &prompt, yes, dry_run) + .await + .map_err(|e| anyhow::anyhow!("{e}"))?; + } + Commands::Tui { r#continue, session, From 339da4ebeea0ac2b9a9876639a1bd6449d662811 Mon Sep 17 00:00:00 2001 From: Brian Cooper Date: Thu, 26 Mar 2026 02:56:10 -0400 Subject: [PATCH 2/6] chore: apply rustfmt formatting and add cargo-husky --- Cargo.lock | 7 +++++++ src/core/agent/tools.rs | 17 ++++++++++++----- src/core/mcp/mod.rs | 13 +++++++------ src/core/memory/mod.rs | 7 ++----- 4 files changed, 28 insertions(+), 16 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 70683e9..c5ecb66 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -362,6 +362,12 @@ dependencies = [ "serde_core", ] +[[package]] +name = "cargo-husky" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b02b629252fe8ef6460461409564e2c21d0c8e77e0944f3d189ff06c4e932ad" + [[package]] name = "cargo-platform" version = "0.1.9" @@ -2120,6 +2126,7 @@ dependencies = [ "async-stream", "async-trait", "axum", + "cargo-husky", "chrono", "clap", "crossterm", diff --git a/src/core/agent/tools.rs b/src/core/agent/tools.rs index 9ca8cd0..0f312c5 100644 --- a/src/core/agent/tools.rs +++ b/src/core/agent/tools.rs @@ -1013,9 +1013,9 @@ impl ToolRegistry { let manager = self.mcp_client.read().manager(); // Parse `server::toolname` and route via the manager's scoped format - let (server_name, tool_name) = qualified_name - .split_once("::") - .ok_or_else(|| AgentError::ToolExecution(format!("invalid MCP tool name format: {qualified_name}")))?; + let (server_name, tool_name) = qualified_name.split_once("::").ok_or_else(|| { + AgentError::ToolExecution(format!("invalid MCP tool name format: {qualified_name}")) + })?; let scoped = format!("mcp_{server_name}/{tool_name}"); let result = manager @@ -1024,7 +1024,10 @@ impl ToolRegistry { .map_err(|e| AgentError::ToolExecution(format!("MCP tool error: {e}")))?; if result.is_error { - return Err(AgentError::ToolExecution(format!("Tool error: {}", result.text))); + return Err(AgentError::ToolExecution(format!( + "Tool error: {}", + result.text + ))); } Ok(result.text) @@ -2934,7 +2937,11 @@ impl ToolRegistry { let list: Vec = skills .iter() .map(|s| { - let desc = s.metadata.description.as_deref().unwrap_or("No description"); + let desc = s + .metadata + .description + .as_deref() + .unwrap_or("No description"); format!(" - {}: {desc}", s.id) }) .collect(); diff --git a/src/core/mcp/mod.rs b/src/core/mcp/mod.rs index d75b22f..6ed1f72 100644 --- a/src/core/mcp/mod.rs +++ b/src/core/mcp/mod.rs @@ -128,9 +128,7 @@ impl McpClient { let running = client.manager.server_names().await; for (name, entry) in &config.servers { if !entry.enabled { - client - .statuses - .insert(name.clone(), ServerStatus::Disabled); + client.statuses.insert(name.clone(), ServerStatus::Disabled); } else if running.contains(name) { client .statuses @@ -149,7 +147,7 @@ impl McpClient { } /// Connect all enabled servers from config (sync bridge) - pub fn connect_all(&mut self) { + pub const fn connect_all(&mut self) { // Servers are already started in `from_config`; this is a no-op // for compatibility with the old API } @@ -173,8 +171,11 @@ impl McpClient { .into_iter() .map(|tool| { // Convert from agent-core's scoped format to CLI's `server::tool` format - let qualified_name = - format!("{}::{}", tool.server_name, tool.name.rsplit('/').next().unwrap_or(&tool.name)); + let qualified_name = format!( + "{}::{}", + tool.server_name, + tool.name.rsplit('/').next().unwrap_or(&tool.name) + ); (qualified_name, tool) }) .collect() diff --git a/src/core/memory/mod.rs b/src/core/memory/mod.rs index 47b1bea..89ae315 100644 --- a/src/core/memory/mod.rs +++ b/src/core/memory/mod.rs @@ -5,8 +5,8 @@ //! - Project facts (architecture decisions, patterns used) //! - Learned corrections (things the agent got wrong and was corrected on) -pub use agent_core::memory::{MemoryCategory, MemoryItem}; use agent_core::memory; +pub use agent_core::memory::{MemoryCategory, MemoryItem}; use chrono::Utc; use super::project::Project; @@ -247,10 +247,7 @@ mod tests { fn format_for_prompt_items() { let items = vec![ MemoryItem::new("User prefers vim".to_string(), MemoryCategory::Preference), - MemoryItem::new( - "Uses tokio runtime".to_string(), - MemoryCategory::Fact, - ), + MemoryItem::new("Uses tokio runtime".to_string(), MemoryCategory::Fact), ]; let output = MemoryManager::format_for_prompt(&items); From 79dedd5013c49a1c80cbea88d51fdf5d3d69ebba Mon Sep 17 00:00:00 2001 From: Brian Cooper Date: Thu, 26 Mar 2026 03:03:37 -0400 Subject: [PATCH 3/6] fix(deps): remove committed patch override for agent-core Local dev uses gitignored .cargo/config.toml paths override instead --- Cargo.lock | 1 + Cargo.toml | 3 --- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c5ecb66..467b4f3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -11,6 +11,7 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "agent-core" version = "0.1.0" +source = "git+https://github.com/omnidotdev/agent-core.git#8d180fbb81003b294733e37be8a1460341504055" dependencies = [ "anyhow", "async-stream", diff --git a/Cargo.toml b/Cargo.toml index 9e397fe..40adc6a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -118,9 +118,6 @@ cargo-husky = { version = "1", default-features = false, features = ["precommit- tempfile = "3" tokio-test = "0.4" -[patch."https://github.com/omnidotdev/agent-core.git"] -agent-core = { path = "../../../agent-core" } - [profile.release] lto = "thin" codegen-units = 1 From 35ce51caa56c1869877aa4eb61a35c2ea7485079 Mon Sep 17 00:00:00 2001 From: Brian Cooper Date: Thu, 26 Mar 2026 13:38:48 -0400 Subject: [PATCH 4/6] feat: unify shell mode into agent subcommand Remove the standalone `omni shell` / `omni sh` subcommand. Natural language shell tasks are now handled by `omni agent`, aligning with the industry-standard single agentic entry point pattern. --- .changeset/remove-bare-prompt.md | 4 +-- src/cli/mod.rs | 55 -------------------------------- src/main.rs | 12 ------- 3 files changed, 2 insertions(+), 69 deletions(-) diff --git a/.changeset/remove-bare-prompt.md b/.changeset/remove-bare-prompt.md index 2dc71ff..ee2b5da 100644 --- a/.changeset/remove-bare-prompt.md +++ b/.changeset/remove-bare-prompt.md @@ -2,6 +2,6 @@ "@omnidotdev/cli": minor --- -Move shell mode from bare positional to explicit `omni shell` subcommand (alias: `omni sh`). This frees the positional space for plugin routing via `external_subcommand`, so `omni run up runa` works without quoting. +Remove the standalone `omni shell` subcommand in favor of a unified agent interface. Natural language shell tasks are now handled by `omni agent`, which routes simple shell commands through its existing tool system. This aligns with industry best practice (single agentic entry point) and reduces user-facing complexity. -Migration: `omni "list files"` becomes `omni shell "list files"` or `omni sh "list files"` +Breaking change: `omni shell "list files"` is now `omni agent "list files"` (or `omni a "list files"`) diff --git a/src/cli/mod.rs b/src/cli/mod.rs index 6a83b86..637bcf7 100644 --- a/src/cli/mod.rs +++ b/src/cli/mod.rs @@ -36,21 +36,6 @@ pub enum Commands { session: Option, }, - /// Run a natural language shell command. - #[command(visible_alias = "sh")] - Shell { - /// Natural language command to convert and execute. - prompt: String, - - /// Skip confirmation for all commands. - #[arg(short, long)] - yes: bool, - - /// Show command only, don't execute. - #[arg(short = 'n', long)] - dry_run: bool, - }, - /// Start the TUI interface. Tui { /// Continue the most recent session. @@ -397,44 +382,4 @@ mod tests { _ => panic!("expected Session command"), } } - - #[test] - fn cli_parses_shell_command() { - let cli = Cli::parse_from(["omni", "shell", "list files in current dir"]); - match cli.command { - Some(Commands::Shell { - prompt, - yes, - dry_run, - }) => { - assert_eq!(prompt, "list files in current dir"); - assert!(!yes); - assert!(!dry_run); - } - _ => panic!("expected Shell command"), - } - } - - #[test] - fn cli_parses_shell_alias() { - let cli = Cli::parse_from(["omni", "sh", "list files"]); - assert!(matches!(cli.command, Some(Commands::Shell { .. }))); - } - - #[test] - fn cli_parses_shell_flags() { - let cli = Cli::parse_from(["omni", "shell", "-y", "-n", "delete temp files"]); - match cli.command { - Some(Commands::Shell { - prompt, - yes, - dry_run, - }) => { - assert_eq!(prompt, "delete temp files"); - assert!(yes); - assert!(dry_run); - } - _ => panic!("expected Shell command"), - } - } } diff --git a/src/main.rs b/src/main.rs index db30d07..511623b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -86,18 +86,6 @@ async fn run(cli: Cli) -> anyhow::Result<()> { println!(); } - Commands::Shell { - prompt, - yes, - dry_run, - } => { - let mut config = Config::load()?; - let provider = config.agent.create_provider_with_fallback().await?; - omni_cli::core::shell::run(provider, &config.agent.model, &prompt, yes, dry_run) - .await - .map_err(|e| anyhow::anyhow!("{e}"))?; - } - Commands::Tui { r#continue, session, From dd518228a3889901c3cc3dc6fafb6f03bd6293d6 Mon Sep 17 00:00:00 2001 From: Brian Cooper Date: Thu, 26 Mar 2026 13:42:10 -0400 Subject: [PATCH 5/6] chore: remove unused shell module The agent's built-in tool system handles shell execution via agent-core's ShellTool, making this standalone NL-to-command pipeline redundant. --- src/core/mod.rs | 1 - src/core/shell/mod.rs | 224 ------------------------------------ src/core/shell/whitelist.rs | 187 ------------------------------ 3 files changed, 412 deletions(-) delete mode 100644 src/core/shell/mod.rs delete mode 100644 src/core/shell/whitelist.rs diff --git a/src/core/mod.rs b/src/core/mod.rs index ef3298e..1413cee 100644 --- a/src/core/mod.rs +++ b/src/core/mod.rs @@ -12,7 +12,6 @@ pub mod project; pub mod search; pub mod secret; pub mod session; -pub mod shell; pub mod skill; pub mod snapshot; pub mod storage; diff --git a/src/core/shell/mod.rs b/src/core/shell/mod.rs deleted file mode 100644 index 737f1ba..0000000 --- a/src/core/shell/mod.rs +++ /dev/null @@ -1,224 +0,0 @@ -//! Natural language to shell command translation. - -mod whitelist; - -use std::io::{BufRead, BufReader, Write}; -use std::process::{Command, Stdio}; - -use futures::StreamExt; - -use crate::core::agent::{ - AgentError, CompletionEvent, CompletionRequest, Content, LlmProvider, Message, Result, Role, -}; - -pub use whitelist::is_whitelisted; - -/// Marker returned by the LLM when the prompt is not a shell task. -const NOT_A_SHELL_TASK: &str = "NOT_A_SHELL_TASK"; - -/// System prompt for shell command generation. -const SHELL_SYSTEM_PROMPT: &str = r#"You are a shell command generator. Convert natural language to executable shell commands. - -Rules: -- Output ONLY the command, nothing else -- No explanations, no markdown, no code fences -- Use standard POSIX-compatible commands when possible -- Prefer simple, readable commands over clever one-liners -- Use the user's current working directory context -- If the request is ambiguous, make a reasonable assumption - -If the request is clearly NOT a shell task (e.g., "explain this code", "write a function", "review my PR"), respond with exactly: -NOT_A_SHELL_TASK - -Examples: -- "list files" → ls -la -- "find large files" → find . -type f -size +100M -- "what's using port 3000" → lsof -i :3000 -- "disk usage by folder" → du -sh */ | sort -hr -- "explain recursion" → NOT_A_SHELL_TASK"#; - -/// Result of shell command generation. -#[derive(Debug)] -pub enum ShellResult { - /// A command was generated. - Command(String), - /// The prompt is not a shell task. - NotAShellTask, -} - -/// Result of command execution. -#[derive(Debug)] -pub struct ExecutionResult { - /// The exit code of the command. - pub exit_code: i32, - /// The combined stdout/stderr output. - pub output: String, -} - -/// Generate a shell command from a natural language prompt. -/// -/// # Errors -/// -/// Returns an error if the LLM call fails. -pub async fn generate_command( - provider: &dyn LlmProvider, - model: &str, - prompt: &str, -) -> Result { - let cwd = std::env::current_dir().map_or_else(|_| ".".to_string(), |p| p.display().to_string()); - - let user_message = format!("Current directory: {cwd}\n\nRequest: {prompt}"); - - let request = CompletionRequest { - model: model.to_string(), - max_tokens: 256, - messages: vec![Message { - role: Role::User, - content: Content::Text(user_message), - }], - system: Some(SHELL_SYSTEM_PROMPT.to_string()), - tools: None, - }; - - let stream = provider.stream(request).await?; - futures::pin_mut!(stream); - - let mut response = String::new(); - - while let Some(event) = stream.next().await { - let event = event?; - if let CompletionEvent::TextDelta(text) = event { - response.push_str(&text); - } - } - - let response = response.trim(); - - if response == NOT_A_SHELL_TASK { - Ok(ShellResult::NotAShellTask) - } else { - // Clean up any markdown formatting if the model adds it - let command = response - .trim_start_matches("```bash") - .trim_start_matches("```sh") - .trim_start_matches("```") - .trim_end_matches("```") - .trim(); - Ok(ShellResult::Command(command.to_string())) - } -} - -/// Execute a shell command and stream output. -/// -/// # Errors -/// -/// Returns an error if the command fails to spawn. -/// -/// # Panics -/// -/// Panics if stdout or stderr cannot be captured (should not happen with `Stdio::piped()`). -pub fn execute_command(command: &str) -> std::io::Result { - let mut child = Command::new("sh") - .arg("-c") - .arg(command) - .stdout(Stdio::piped()) - .stderr(Stdio::piped()) - .spawn()?; - - let stdout = child.stdout.take().expect("stdout should be captured"); - let stderr = child.stderr.take().expect("stderr should be captured"); - - let mut output = String::new(); - - // Read stdout and stderr interleaved (simplified: read stdout then stderr) - let stdout_reader = BufReader::new(stdout); - for line in stdout_reader.lines() { - let line = line?; - println!("{line}"); - output.push_str(&line); - output.push('\n'); - } - - let stderr_reader = BufReader::new(stderr); - for line in stderr_reader.lines() { - let line = line?; - eprintln!("{line}"); - output.push_str(&line); - output.push('\n'); - } - - let status = child.wait()?; - let exit_code = status.code().unwrap_or(-1); - - Ok(ExecutionResult { exit_code, output }) -} - -/// Prompt the user for confirmation. -/// -/// Returns true if the user confirms. -#[must_use] -pub fn prompt_confirmation() -> bool { - print!("Execute? [y/N] "); - std::io::stdout().flush().ok(); - - let mut input = String::new(); - if std::io::stdin().read_line(&mut input).is_ok() { - let input = input.trim().to_lowercase(); - input == "y" || input == "yes" - } else { - false - } -} - -/// Run the shell mode flow. -/// -/// # Errors -/// -/// Returns an error if command generation or execution fails. -pub async fn run( - provider: Box, - model: &str, - prompt: &str, - skip_confirmation: bool, - dry_run: bool, -) -> Result<()> { - // Generate command - let result = generate_command(provider.as_ref(), model, prompt).await?; - - match result { - ShellResult::NotAShellTask => { - println!("This looks like a coding task. Try: omni agent \"{prompt}\""); - } - ShellResult::Command(command) => { - println!("Command: {command}"); - println!(); - - if dry_run { - return Ok(()); - } - - let should_execute = if skip_confirmation || is_whitelisted(&command) { - true - } else { - prompt_confirmation() - }; - - if should_execute { - match execute_command(&command) { - Ok(result) => { - if result.exit_code != 0 { - eprintln!("\n[exit code {}]", result.exit_code); - } - } - Err(e) => { - return Err(AgentError::ToolExecution(format!("Failed to execute: {e}"))); - } - } - } else { - println!("Cancelled."); - } - } - } - - Ok(()) -} diff --git a/src/core/shell/whitelist.rs b/src/core/shell/whitelist.rs deleted file mode 100644 index 2ff8fbd..0000000 --- a/src/core/shell/whitelist.rs +++ /dev/null @@ -1,187 +0,0 @@ -//! Safe command whitelist for auto-execution. - -/// Commands that are safe to auto-execute without confirmation. -const SAFE_COMMANDS: &[&str] = &[ - // Filesystem (read-only) - "ls", - "find", - "cat", - "head", - "tail", - "less", - "more", - "file", - "stat", - "wc", - "du", - "df", - "tree", - "realpath", - "dirname", - "basename", - // Search - "grep", - "rg", - "ag", - "fd", - "locate", - "which", - "whereis", - "type", - // Process info - "ps", - "top", - "htop", - "btop", - "pgrep", - "lsof", - "pstree", - // System info - "uname", - "hostname", - "whoami", - "id", - "date", - "uptime", - "free", - "env", - "printenv", - "arch", - "nproc", - "getconf", - // Network (read-only) - "ping", - "curl", - "wget", - "dig", - "nslookup", - "host", - "netstat", - "ss", - "ip", - "ifconfig", - "traceroute", - "mtr", - // Git (read-only) - "git status", - "git log", - "git diff", - "git branch", - "git show", - "git ls-files", - "git remote", - "git tag", - "git stash list", - "git shortlog", - "git blame", - "git rev-parse", - // Dev tools (read-only) - "cargo check", - "cargo test", - "cargo clippy", - "cargo fmt --check", - "cargo doc", - "cargo tree", - "cargo metadata", - "npm test", - "npm run test", - "bun test", - "bun run test", - "go test", - "python -m pytest", - "pytest", - "rustc --version", - "node --version", - "npm --version", - "bun --version", - "go version", - "python --version", - // Misc read-only - "echo", - "printf", - "true", - "false", - "test", - "expr", - "seq", - "sort", - "uniq", - "cut", - "tr", - "awk", - "sed", - "jq", - "yq", - "xargs", - "tee", -]; - -/// Check if a command is whitelisted for auto-execution. -/// -/// Returns true if the command starts with any whitelisted prefix. -/// Handles pipes by checking the first command in the pipeline. -#[must_use] -pub fn is_whitelisted(command: &str) -> bool { - let command = command.trim(); - - // Handle pipes: check first command in pipeline - let first_command = command.split('|').next().unwrap_or(command).trim(); - - // Check if it starts with any whitelisted command - SAFE_COMMANDS.iter().any(|safe| { - // Exact match or starts with safe command followed by space/end - first_command == *safe - || first_command.starts_with(&format!("{safe} ")) - || first_command.starts_with(&format!("{safe}\t")) - }) -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn whitelists_simple_commands() { - assert!(is_whitelisted("ls")); - assert!(is_whitelisted("ls -la")); - assert!(is_whitelisted("find . -name '*.rs'")); - assert!(is_whitelisted("cat file.txt")); - assert!(is_whitelisted("git status")); - assert!(is_whitelisted("git log --oneline -10")); - } - - #[test] - fn whitelists_piped_commands() { - assert!(is_whitelisted("ls -la | grep foo")); - assert!(is_whitelisted("find . -name '*.rs' | wc -l")); - assert!(is_whitelisted("cat file.txt | head -10")); - assert!(is_whitelisted("ps aux | grep node")); - } - - #[test] - fn rejects_dangerous_commands() { - assert!(!is_whitelisted("rm -rf /")); - assert!(!is_whitelisted("rm file.txt")); - assert!(!is_whitelisted("mv a b")); - assert!(!is_whitelisted("chmod 777 file")); - assert!(!is_whitelisted("sudo anything")); - assert!(!is_whitelisted("dd if=/dev/zero")); - } - - #[test] - fn rejects_partial_matches() { - // "lsof" should match, but "lsofx" should not - assert!(is_whitelisted("lsof -i :3000")); - assert!(!is_whitelisted("lsofx")); - - // "cat" should match, but "catalog" should not - assert!(is_whitelisted("cat file.txt")); - assert!(!is_whitelisted("catalog")); - } - - #[test] - fn handles_whitespace() { - assert!(is_whitelisted(" ls -la ")); - assert!(is_whitelisted("ls\t-la")); - } -} From b94fb089be5de4c7faeaaaa37a6f23e58942c795 Mon Sep 17 00:00:00 2001 From: Brian Cooper Date: Thu, 26 Mar 2026 21:17:35 -0400 Subject: [PATCH 6/6] chore(deps): upgrade all dependencies --- Cargo.lock | 576 ++++++++++++++++++++++++++++++++--------------------- Cargo.toml | 3 + 2 files changed, 349 insertions(+), 230 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 467b4f3..c98bb0a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -61,9 +61,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.21" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" dependencies = [ "anstyle", "anstyle-parse", @@ -76,15 +76,15 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" [[package]] name = "anstyle-parse" -version = "0.2.7" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" dependencies = [ "utf8parse", ] @@ -163,7 +163,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -174,7 +174,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -200,9 +200,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "aws-lc-rs" -version = "1.16.0" +version = "1.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9a7b350e3bb1767102698302bc37256cbd48422809984b98d292c40e2579aa9" +checksum = "a054912289d18629dc78375ba2c3726a3afe3ff71b4edba9dedfca0e3446d1fc" dependencies = [ "aws-lc-sys", "zeroize", @@ -210,9 +210,9 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.37.1" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b092fe214090261288111db7a2b2c2118e5a7f30dc2569f1732c4069a6840549" +checksum = "1fa7e52a4c5c547c741610a2c6f123f3881e409b714cd27e6798ef020c514f0a" dependencies = [ "cc", "cmake", @@ -326,9 +326,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.20.1" +version = "3.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6f81257d10a0f602a294ae4182251151ff97dbb504ef9afcdda4a64b24d9b4" +checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" [[package]] name = "bytecount" @@ -402,9 +402,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.56" +version = "1.2.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +checksum = "7a0dd1ca384932ff3641c8718a02769f1698e7563dc6974ffd03346116310423" dependencies = [ "find-msvc-tools", "jobserver", @@ -446,9 +446,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.59" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5caf74d17c3aec5495110c34cc3f78644bfa89af6c8993ed4de2790e49b6499" +checksum = "b193af5b67834b676abd72466a96c1024e6a6ad978a1f484bd90b85c94041351" dependencies = [ "clap_builder", "clap_derive", @@ -456,9 +456,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.59" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "370daa45065b80218950227371916a1633217ae42b2715b2287b606dcd618e24" +checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" dependencies = [ "anstream", "anstyle", @@ -468,21 +468,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.55" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92793da1a46a5f2a02a6f4c46c6496b28c43638adea8306fcb0caa1634f24e5" +checksum = "1110bd8a634a1ab8cb04345d8d878267d57c3cf1b38d91b71af6686408bbca6a" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] name = "clap_lex" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a822ea5bc7590f9d40f1ba12c0dc3c2760f3482c6984db1573ad11031420831" +checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" [[package]] name = "clipboard-win" @@ -495,18 +495,18 @@ dependencies = [ [[package]] name = "cmake" -version = "0.1.57" +version = "0.1.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75443c44cd6b379beb8c5b45d85d0773baf31cce901fe7bb252f4eff3008ef7d" +checksum = "c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678" dependencies = [ "cc", ] [[package]] name = "colorchoice" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" +checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "combine" @@ -541,16 +541,6 @@ dependencies = [ "unicode-segmentation", ] -[[package]] -name = "core-foundation" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" -dependencies = [ - "core-foundation-sys", - "libc", -] - [[package]] name = "core-foundation" version = "0.10.1" @@ -585,6 +575,12 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "critical-section" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" + [[package]] name = "crossbeam-channel" version = "0.5.15" @@ -692,7 +688,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -703,7 +699,7 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -719,6 +715,12 @@ dependencies = [ "parking_lot_core", ] +[[package]] +name = "data-encoding" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea" + [[package]] name = "deltae" version = "0.3.2" @@ -727,9 +729,9 @@ checksum = "5729f5117e208430e437df2f4843f5e5952997175992d1414f94c57d61e270b4" [[package]] name = "deranged" -version = "0.5.6" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc3dc5ad92c2e2d1c193bbbbdf2ea477cb81331de4f3103f267ca18368b988c4" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" dependencies = [ "powerfmt", ] @@ -742,7 +744,7 @@ checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -764,7 +766,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -809,9 +811,9 @@ dependencies = [ [[package]] name = "dispatch2" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" +checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" dependencies = [ "bitflags 2.11.0", "objc2", @@ -825,7 +827,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -861,6 +863,18 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "enum-as-inner" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "env_home" version = "0.1.0" @@ -900,9 +914,9 @@ checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59" [[package]] name = "euclid" -version = "0.22.13" +version = "0.22.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df61bf483e837f88d5c2291dcf55c67be7e676b3a51acc48db3a7b163b91ed63" +checksum = "f1a05365e3b1c6d1650318537c7460c6923f1abdd272ad6842baa2b509957a06" dependencies = [ "num-traits", ] @@ -940,7 +954,7 @@ checksum = "a0aca10fb742cb43f9e7bb8467c91aa9bcb8e3ffbc6a6f7389bb93ffc920577d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -1090,7 +1104,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -1173,20 +1187,20 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "r-efi", + "r-efi 5.3.0", "wasip2", "wasm-bindgen", ] [[package]] name = "getrandom" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "139ef39800118c7683f2fd3c98c1b23c09ae076556b435f8e9064ae108aaeeec" +checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" dependencies = [ "cfg-if", "libc", - "r-efi", + "r-efi 6.0.0", "wasip2", "wasip3", ] @@ -1278,6 +1292,52 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +[[package]] +name = "hickory-proto" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8a6fe56c0038198998a6f217ca4e7ef3a5e51f46163bd6dd60b5c71ca6c6502" +dependencies = [ + "async-trait", + "cfg-if", + "data-encoding", + "enum-as-inner", + "futures-channel", + "futures-io", + "futures-util", + "idna", + "ipnet", + "once_cell", + "rand 0.9.2", + "ring", + "thiserror 2.0.18", + "tinyvec", + "tokio", + "tracing", + "url", +] + +[[package]] +name = "hickory-resolver" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc62a9a99b0bfb44d2ab95a7208ac952d31060efc16241c87eaf36406fecf87a" +dependencies = [ + "cfg-if", + "futures-util", + "hickory-proto", + "ipconfig", + "moka", + "once_cell", + "parking_lot", + "rand 0.9.2", + "resolv-conf", + "smallvec", + "thiserror 2.0.18", + "tokio", + "tracing", +] + [[package]] name = "http" version = "1.4.0" @@ -1381,11 +1441,9 @@ dependencies = [ "percent-encoding", "pin-project-lite", "socket2", - "system-configuration", "tokio", "tower-service", "tracing", - "windows-registry", ] [[package]] @@ -1544,9 +1602,9 @@ dependencies = [ [[package]] name = "image" -version = "0.25.9" +version = "0.25.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6506c6c10786659413faa717ceebcb8f70731c0a60cbae39795fdf114519c1a" +checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104" dependencies = [ "bytemuck", "byteorder-lite", @@ -1579,9 +1637,9 @@ dependencies = [ [[package]] name = "inotify" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3" +checksum = "bd5b3eaf1a28b758ac0faa5a4254e8ab2705605496f1b1f3fbbc3988ad73d199" dependencies = [ "bitflags 2.11.0", "inotify-sys", @@ -1599,28 +1657,41 @@ dependencies = [ [[package]] name = "instability" -version = "0.3.11" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357b7205c6cd18dd2c86ed312d1e70add149aea98e7ef72b9fdf0270e555c11d" +checksum = "5eb2d60ef19920a3a9193c3e371f726ec1dafc045dac788d0fb3704272458971" dependencies = [ "darling", "indoc", "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", +] + +[[package]] +name = "ipconfig" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d40460c0ce33d6ce4b0630ad68ff63d6661961c48b6dba35e5a4d81cfb48222" +dependencies = [ + "socket2", + "widestring", + "windows-registry", + "windows-result", + "windows-sys 0.61.2", ] [[package]] name = "ipnet" -version = "2.11.0" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" +checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" [[package]] name = "iri-string" -version = "0.7.10" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" +checksum = "d8e7418f59cc01c88316161279a7f665217ae316b388e58a0d10e29f54f1e5eb" dependencies = [ "memchr", "serde", @@ -1643,9 +1714,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "jni" @@ -1656,7 +1727,7 @@ dependencies = [ "cesu8", "cfg-if", "combine", - "jni-sys", + "jni-sys 0.3.1", "log", "thiserror 1.0.69", "walkdir", @@ -1665,9 +1736,31 @@ dependencies = [ [[package]] name = "jni-sys" -version = "0.3.0" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" +dependencies = [ + "jni-sys 0.4.1", +] + +[[package]] +name = "jni-sys" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] + +[[package]] +name = "jni-sys-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" +dependencies = [ + "quote", + "syn 2.0.117", +] [[package]] name = "jobserver" @@ -1681,9 +1774,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.85" +version = "0.3.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3" +checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c" dependencies = [ "once_cell", "wasm-bindgen", @@ -1691,9 +1784,9 @@ dependencies = [ [[package]] name = "kasuari" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fe90c1150662e858c7d5f945089b7517b0a80d8bf7ba4b1b5ffc984e7230a5b" +checksum = "bde5057d6143cc94e861d90f591b9303d6716c6b9602309150bd068853c10899" dependencies = [ "hashbrown 0.16.1", "portable-atomic", @@ -1740,17 +1833,16 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" [[package]] name = "libc" -version = "0.2.182" +version = "0.2.183" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" +checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" [[package]] name = "libredox" -version = "0.1.12" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616" +checksum = "7ddbf48fd451246b1f8c2610bd3b4ac0cc6e149d89832867093ab69a17194f08" dependencies = [ - "bitflags 2.11.0", "libc", ] @@ -1765,9 +1857,9 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] name = "litemap" @@ -1940,11 +2032,28 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "moka" +version = "0.12.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "957228ad12042ee839f93c8f257b62b4c0ab5eaae1d4fa60de53b27c9d7c5046" +dependencies = [ + "crossbeam-channel", + "crossbeam-epoch", + "crossbeam-utils", + "equivalent", + "parking_lot", + "portable-atomic", + "smallvec", + "tagptr", + "uuid", +] + [[package]] name = "moxcms" -version = "0.7.11" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac9557c559cd6fc9867e122e20d2cbefc9ca29d80d027a8e39310920ed2f0a97" +checksum = "bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b" dependencies = [ "num-traits", "pxfm", @@ -2011,9 +2120,9 @@ dependencies = [ [[package]] name = "num-conv" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050" +checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967" [[package]] name = "num-derive" @@ -2023,7 +2132,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -2046,9 +2155,9 @@ dependencies = [ [[package]] name = "objc2" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05" +checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f" dependencies = [ "objc2-encode", ] @@ -2141,7 +2250,7 @@ dependencies = [ "notify", "parking_lot", "pin-project-lite", - "pulldown-cmark 0.13.0", + "pulldown-cmark 0.13.3", "rand 0.9.2", "ratatui", "regex", @@ -2174,9 +2283,13 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" +dependencies = [ + "critical-section", + "portable-atomic", +] [[package]] name = "once_cell_polyfill" @@ -2264,7 +2377,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -2317,7 +2430,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -2331,9 +2444,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pin-utils" @@ -2391,7 +2504,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -2416,9 +2529,9 @@ dependencies = [ [[package]] name = "pulldown-cmark" -version = "0.13.0" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e8bbe1a966bd2f362681a44f6edce3c2310ac21e4d5067a6e7ec396297a6ea0" +checksum = "7c3a14896dfa883796f1cb410461aef38810ea05f2b2c33c5aded3649095fdad" dependencies = [ "bitflags 2.11.0", "getopts", @@ -2435,12 +2548,9 @@ checksum = "007d8adb5ddab6f8e3f491ac63566a7d5002cc7ed73901f72057943fa71ae1ae" [[package]] name = "pxfm" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7186d3822593aa4393561d186d1393b3923e9d6163d3fbfd6e825e3e6cf3e6a8" -dependencies = [ - "num-traits", -] +checksum = "b5a041e753da8b807c9255f28de81879c78c876392ff2469cde94799b2896b9d" [[package]] name = "quick-error" @@ -2470,9 +2580,9 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.13" +version = "0.11.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" +checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098" dependencies = [ "aws-lc-rs", "bytes", @@ -2506,9 +2616,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.44" +version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" dependencies = [ "proc-macro2", ] @@ -2519,6 +2629,12 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + [[package]] name = "rand" version = "0.8.5" @@ -2708,9 +2824,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.9" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a96887878f22d7bad8a3b6dc5b7440e0ada9a245242924394987b21cf2210a4c" +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" [[package]] name = "reqwest" @@ -2720,10 +2836,8 @@ checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" dependencies = [ "base64", "bytes", - "encoding_rs", "futures-core", "futures-util", - "h2", "http", "http-body", "http-body-util", @@ -2732,7 +2846,6 @@ dependencies = [ "hyper-util", "js-sys", "log", - "mime", "mime_guess", "percent-encoding", "pin-project-lite", @@ -2765,8 +2878,11 @@ checksum = "ab3f43e3283ab1488b624b44b0e988d0acea0b3214e694730a055cb6b2efa801" dependencies = [ "base64", "bytes", + "encoding_rs", "futures-core", "futures-util", + "h2", + "hickory-resolver", "http", "http-body", "http-body-util", @@ -2775,6 +2891,9 @@ dependencies = [ "hyper-util", "js-sys", "log", + "mime", + "mime_guess", + "once_cell", "percent-encoding", "pin-project-lite", "quinn", @@ -2798,6 +2917,12 @@ dependencies = [ "web-sys", ] +[[package]] +name = "resolv-conf" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e061d1b48cb8d38042de4ae0a7a6401009d6143dc80d2e2d6f31f0bdd6470c7" + [[package]] name = "ring" version = "0.17.14" @@ -2853,7 +2978,7 @@ dependencies = [ "proc-macro2", "quote", "rust-embed-utils", - "syn 2.0.116", + "syn 2.0.117", "walkdir", ] @@ -2884,9 +3009,9 @@ dependencies = [ [[package]] name = "rustix" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ "bitflags 2.11.0", "errno", @@ -2897,9 +3022,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.36" +version = "0.23.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b" +checksum = "758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4" dependencies = [ "aws-lc-rs", "once_cell", @@ -2938,7 +3063,7 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d99feebc72bae7ab76ba994bb5e121b8d83d910ca40b36e0921f53becc41784" dependencies = [ - "core-foundation 0.10.1", + "core-foundation", "core-foundation-sys", "jni", "log", @@ -2961,9 +3086,9 @@ checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" [[package]] name = "rustls-webpki" -version = "0.103.9" +version = "0.103.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53" +checksum = "df33b2b81ac578cabaf06b89b0631153a3f416b0a886e8a7a1707fb51abbd1ef" dependencies = [ "aws-lc-rs", "ring", @@ -2994,9 +3119,9 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.28" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" +checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939" dependencies = [ "windows-sys 0.61.2", ] @@ -3019,12 +3144,12 @@ dependencies = [ [[package]] name = "security-framework" -version = "3.6.0" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d17b898a6d6948c3a8ee4372c17cb384f90d2e6e912ef00895b14fd7ab54ec38" +checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" dependencies = [ "bitflags 2.11.0", - "core-foundation 0.10.1", + "core-foundation", "core-foundation-sys", "libc", "security-framework-sys", @@ -3032,9 +3157,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.16.0" +version = "2.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "321c8673b092a9a42605034a9879d73cb79101ed5fd117bc9a597b89b4e9e61a" +checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3" dependencies = [ "core-foundation-sys", "libc", @@ -3087,7 +3212,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -3125,9 +3250,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.4" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +checksum = "876ac351060d4f882bb1032b6369eb0aef79ad9df1ea8bc404874d8cc3d0cd98" dependencies = [ "serde_core", ] @@ -3261,12 +3386,12 @@ checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "socket2" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86f4aa3ad99f2088c990dfa82d367e19cb29268ed67c574d10d0a4bfe71f07e0" +checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -3305,7 +3430,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -3327,9 +3452,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.116" +version = "2.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3df424c70518695237746f84cede799c9c58fcb37450d7b23716568cc8bc69cb" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" dependencies = [ "proc-macro2", "quote", @@ -3339,9 +3464,9 @@ dependencies = [ [[package]] name = "synapse-billing" version = "0.1.0" -source = "git+https://github.com/omnidotdev/synapse-gateway.git#5816691b84cd8493fd73a67e042130983062d10e" +source = "git+https://github.com/omnidotdev/synapse-gateway.git#6557b12a7eaec123c6a72a145406e797f5d1f4c8" dependencies = [ - "reqwest 0.12.28", + "reqwest 0.13.2", "secrecy", "serde", "serde_json", @@ -3355,14 +3480,14 @@ dependencies = [ [[package]] name = "synapse-client" version = "0.1.0" -source = "git+https://github.com/omnidotdev/synapse-gateway.git#5816691b84cd8493fd73a67e042130983062d10e" +source = "git+https://github.com/omnidotdev/synapse-gateway.git#6557b12a7eaec123c6a72a145406e797f5d1f4c8" dependencies = [ "agent-core", "anyhow", "async-trait", "bytes", "futures", - "reqwest 0.12.28", + "reqwest 0.13.2", "serde", "serde_json", "thiserror 2.0.18", @@ -3387,28 +3512,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", -] - -[[package]] -name = "system-configuration" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a13f3d0daba03132c0aa9767f98351b3488edc2c100cda2d2ec2b04f3d8d3c8b" -dependencies = [ - "bitflags 2.11.0", - "core-foundation 0.9.4", - "system-configuration-sys", -] - -[[package]] -name = "system-configuration-sys" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" -dependencies = [ - "core-foundation-sys", - "libc", + "syn 2.0.117", ] [[package]] @@ -3419,12 +3523,12 @@ checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" [[package]] name = "tempfile" -version = "3.25.0" +version = "3.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0136791f7c95b1f6dd99f9cc786b91bb81c3800b639b3478e561ddb7be95e5f1" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.4.1", + "getrandom 0.4.2", "once_cell", "rustix", "windows-sys 0.61.2", @@ -3519,7 +3623,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -3530,7 +3634,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -3544,9 +3648,9 @@ dependencies = [ [[package]] name = "tiff" -version = "0.10.3" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af9605de7fee8d9551863fd692cce7637f548dbd9db9180fcc07ccc6d26c336f" +checksum = "b63feaf3343d35b6ca4d50483f94843803b0f51634937cc2ec519fc32232bc52" dependencies = [ "fax", "flate2", @@ -3589,9 +3693,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" dependencies = [ "tinyvec_macros", ] @@ -3604,9 +3708,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.49.0" +version = "1.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" +checksum = "27ad5e34374e03cfffefc301becb44e9dc3c17584f414349ebe29ed26661822d" dependencies = [ "bytes", "libc", @@ -3621,13 +3725,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.6.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +checksum = "5c55a2eff8b69ce66c84f85e1da1c233edc36ceb85a2058d11b0d6a3c7e7569c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -3695,11 +3799,11 @@ checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" dependencies = [ "indexmap", "serde_core", - "serde_spanned 1.0.4", + "serde_spanned 1.1.0", "toml_datetime 0.7.5+spec-1.1.0", "toml_parser", "toml_writer", - "winnow", + "winnow 0.7.15", ] [[package]] @@ -3731,16 +3835,16 @@ dependencies = [ "serde_spanned 0.6.9", "toml_datetime 0.6.11", "toml_write", - "winnow", + "winnow 0.7.15", ] [[package]] name = "toml_parser" -version = "1.0.9+spec-1.1.0" +version = "1.1.0+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +checksum = "2334f11ee363607eb04df9b8fc8a13ca1715a72ba8662a26ac285c98aabb4011" dependencies = [ - "winnow", + "winnow 1.0.0", ] [[package]] @@ -3751,9 +3855,9 @@ checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" [[package]] name = "toml_writer" -version = "1.0.6+spec-1.1.0" +version = "1.1.0+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +checksum = "d282ade6016312faf3e41e57ebbba0c073e4056dab1232ab1cb624199648f8ed" [[package]] name = "tower" @@ -3822,7 +3926,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -3848,9 +3952,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.22" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" +checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" dependencies = [ "matchers", "nu-ansi-term", @@ -3912,9 +4016,9 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c" [[package]] name = "unicode-truncate" @@ -3996,7 +4100,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -4019,12 +4123,12 @@ dependencies = [ [[package]] name = "uuid" -version = "1.21.0" +version = "1.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb" +checksum = "5ac8b6f42ead25368cf5b098aeb3dc8a1a2c05a3eee8a9a1a68c640edbfc79d9" dependencies = [ "atomic", - "getrandom 0.4.1", + "getrandom 0.4.2", "js-sys", "wasm-bindgen", ] @@ -4095,9 +4199,9 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.108" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566" +checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e" dependencies = [ "cfg-if", "once_cell", @@ -4108,9 +4212,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.58" +version = "0.4.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f" +checksum = "e9c5522b3a28661442748e09d40924dfb9ca614b21c00d3fd135720e48b67db8" dependencies = [ "cfg-if", "futures-util", @@ -4122,9 +4226,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.108" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608" +checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4132,22 +4236,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.108" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55" +checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.108" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12" +checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16" dependencies = [ "unicode-ident", ] @@ -4214,9 +4318,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.85" +version = "0.3.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598" +checksum = "854ba17bb104abfb26ba36da9729addc7ce7f06f5c0f90f3c391f8461cca21f9" dependencies = [ "js-sys", "wasm-bindgen", @@ -4340,6 +4444,12 @@ dependencies = [ "winsafe", ] +[[package]] +name = "widestring" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471" + [[package]] name = "winapi" version = "0.3.9" @@ -4392,7 +4502,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -4403,7 +4513,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -4674,13 +4784,19 @@ checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winnow" -version = "0.7.14" +version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" dependencies = [ "memchr", ] +[[package]] +name = "winnow" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a90e88e4667264a994d34e6d1ab2d26d398dcdca8b7f52bec8668957517fc7d8" + [[package]] name = "winsafe" version = "0.0.19" @@ -4717,7 +4833,7 @@ dependencies = [ "heck", "indexmap", "prettyplease", - "syn 2.0.116", + "syn 2.0.117", "wasm-metadata", "wit-bindgen-core", "wit-component", @@ -4733,7 +4849,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", "wit-bindgen-core", "wit-bindgen-rust", ] @@ -4817,28 +4933,28 @@ checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", "synstructure", ] [[package]] name = "zerocopy" -version = "0.8.39" +version = "0.8.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" +checksum = "efbb2a062be311f2ba113ce66f697a4dc589f85e78a4aea276200804cea0ed87" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.39" +version = "0.8.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" +checksum = "0e8bc7269b54418e7aeeef514aa68f8690b8c0489a06b0136e5f57c4c5ccab89" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -4858,7 +4974,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", "synstructure", ] @@ -4898,7 +5014,7 @@ checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -4917,9 +5033,9 @@ dependencies = [ [[package]] name = "zlib-rs" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c745c48e1007337ed136dc99df34128b9faa6ed542d80a1c673cf55a6d7236c8" +checksum = "3be3d40e40a133f9c916ee3f9f4fa2d9d63435b5fbe1bfc6d9dae0aa0ada1513" [[package]] name = "zmij" @@ -4941,15 +5057,15 @@ dependencies = [ [[package]] name = "zune-core" -version = "0.4.12" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" +checksum = "cb8a0807f7c01457d0379ba880ba6322660448ddebc890ce29bb64da71fb40f9" [[package]] name = "zune-jpeg" -version = "0.4.21" +version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29ce2c8a9384ad323cf564b67da86e21d3cfdff87908bc1223ed5c99bc792713" +checksum = "27bc9d5b815bc103f142aa054f561d9187d191692ec7c2d1e2b4737f8dbd7296" dependencies = [ "zune-core", ] diff --git a/Cargo.toml b/Cargo.toml index 40adc6a..73617a2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -118,6 +118,9 @@ cargo-husky = { version = "1", default-features = false, features = ["precommit- tempfile = "3" tokio-test = "0.4" +[patch.crates-io] +agent-core = { git = "https://github.com/omnidotdev/agent-core.git" } + [profile.release] lto = "thin" codegen-units = 1