[package] name = "goose" version.workspace = true edition.workspace = true rust-version.workspace = true authors.workspace = true license.workspace = true repository.workspace = true description.workspace = true [features] default = ["code-mode", "local-inference", "aws-providers", "telemetry", "otel", "rustls-tls"] telemetry = [] otel = [ "dep:tracing-opentelemetry", "dep:opentelemetry", "dep:opentelemetry_sdk", "dep:opentelemetry-appender-tracing", "dep:opentelemetry-otlp", "dep:opentelemetry-stdout", ] code-mode = ["dep:pctx_code_mode"] local-inference = [ "dep:candle-core", "dep:candle-nn", "dep:candle-transformers", "dep:llama-cpp-2", "dep:tokenizers", "dep:symphonia", "dep:rubato", "dep:byteorder", ] aws-providers = [ "dep:aws-config", "dep:aws-smithy-types", "dep:aws-sdk-bedrockruntime", "dep:aws-sdk-sagemakerruntime", ] cuda = ["local-inference", "candle-core/cuda", "candle-nn/cuda", "llama-cpp-2/cuda"] vulkan = ["local-inference", "llama-cpp-2/vulkan"] rustls-tls = [ "dep:rustls", "reqwest/rustls", "rmcp/reqwest", "sqlx/runtime-tokio-rustls", "jsonwebtoken/aws_lc_rs", "oauth2/reqwest", "oauth2/rustls-tls", ] native-tls = [ "dep:pem", "dep:pkcs1", "dep:pkcs8", "dep:sec1", "reqwest/native-tls", "rmcp/reqwest-native-tls", "sqlx/runtime-tokio-native-tls", "jsonwebtoken/rust_crypto", "oauth2/reqwest", "oauth2/native-tls", ] [lints] workspace = true [dependencies] lru = { workspace = true } rmcp = { workspace = true, features = [ "client", "transport-child-process", "transport-streamable-http-client", "transport-streamable-http-client-reqwest", "transport-streamable-http-client-unix-socket", ] } oauth2 = { version = "5.0", default-features = false } arboard = { workspace = true } anyhow = { workspace = true } thiserror = { workspace = true } futures = { workspace = true } dirs = { workspace = true } reqwest = { workspace = true, features = ["json", "cookies", "gzip", "brotli", "deflate", "zstd", "charset", "http2", "stream", "blocking", "multipart", "system-proxy"], default-features = false } tokio = { workspace = true } serde = { workspace = true } serde_json = { workspace = true } serde_urlencoded = "0.7" jsonschema = "0.30.0" uuid = { workspace = true, features = ["v7"] } regex = { workspace = true } async-trait = { workspace = true } async-stream = { workspace = true } minijinja = { version = "2.19.0", features = ["loader"] } include_dir = { workspace = true } tiktoken-rs = "0.11.0" chrono = { workspace = true } clap = { workspace = true } indoc = { workspace = true } nanoid = "0.4" sha2 = { workspace = true } base64 = { workspace = true } url = { workspace = true } axum = { workspace = true, features = ["ws"] } webbrowser = { workspace = true } tracing = { workspace = true } tracing-subscriber = { workspace = true, features = ["env-filter", "fmt", "json", "time"] } tracing-futures = { workspace = true } tracing-opentelemetry = { workspace = true, optional = true } opentelemetry = { workspace = true, optional = true } opentelemetry_sdk = { workspace = true, optional = true } opentelemetry-appender-tracing = { workspace = true, optional = true } opentelemetry-otlp = { workspace = true, optional = true } opentelemetry-stdout = { workspace = true, optional = true } keyring = { version = "3.6.2", features = ["vendored"] } serde_yaml = { workspace = true } strum = { workspace = true } once_cell = { workspace = true } etcetera = { workspace = true } fs-err = "3" goose-sdk = { path = "../goose-sdk" } rand = { workspace = true } utoipa = { workspace = true, features = ["chrono"] } tokio-cron-scheduler = "0.15.1" urlencoding = { workspace = true } v_htmlescape = "0.15" sqlx = { version = "0.8", default-features = false, features = [ "sqlite", "chrono", "json", "macros", "migrate", ] } # For Bedrock provider (optional, behind "aws-providers" feature) aws-config = { version = "=1.8.16", features = ["behavior-version-latest"], optional = true } aws-smithy-types = { version = "=1.4.7", optional = true } aws-sdk-bedrockruntime = { version = "=1.130.0", default-features = false, features = ["default-https-client", "rt-tokio"], optional = true } # For SageMaker TGI provider (optional, behind "aws-providers" feature) aws-sdk-sagemakerruntime = { version = "1.101.0", default-features = false, features = ["default-https-client", "rt-tokio"], optional = true } # For GCP Vertex AI provider auth jsonwebtoken = { version = "10.4.0", default-features = false, features = ["use_pem"] } blake3 = "1.8" fs2 = { workspace = true } tokio-stream = { workspace = true, features = ["io-util"] } tempfile.workspace = true dashmap = "6.1" ahash = "0.8" tokio-util = { workspace = true, features = ["compat"] } agent-client-protocol-schema = { workspace = true } agent-client-protocol = { workspace = true, features = ["unstable"] } unicode-normalization = "0.1" # For local Whisper transcription (optional, behind "local-inference" feature) candle-core = { version = "0.10.2", default-features = false, optional = true } candle-nn = { version = "0.10.2", default-features = false, optional = true } candle-transformers = { version = "0.10.2", default-features = false, optional = true } byteorder = { version = "1.5.0", optional = true } tokenizers = { version = "0.21.0", default-features = false, features = ["onig"], optional = true } symphonia = { version = "0.5", features = ["all"], optional = true } rubato = { version = "0.16", optional = true } zip = { workspace = true } sys-info = "0.9" schemars = { workspace = true, features = [ "derive", ] } shellexpand = { workspace = true } indexmap = "2.14.0" ignore = { workspace = true } rayon = { workspace = true } tree-sitter = { workspace = true } tree-sitter-go = { workspace = true } tree-sitter-java = { workspace = true } tree-sitter-javascript = { workspace = true } tree-sitter-kotlin-ng = { workspace = true } tree-sitter-python = { workspace = true } tree-sitter-ruby = { workspace = true } tree-sitter-rust = { workspace = true } tree-sitter-swift = { workspace = true } tree-sitter-typescript = { workspace = true } which = { workspace = true } pctx_code_mode = { version = "^0.3.0", optional = true } pulldown-cmark = "0.13.0" llama-cpp-2 = { version = "0.1.145", features = ["sampler", "mtmd"], optional = true } encoding_rs = "0.8.35" pastey = "0.2.2" shell-words = { workspace = true } pem = { version = "3", optional = true } pkcs1 = { version = "0.7", default-features = false, features = ["pkcs8"], optional = true } pkcs8 = { version = "0.10", default-features = false, features = ["alloc"], optional = true } sec1 = { version = "0.7", default-features = false, features = ["der", "pkcs8"], optional = true } goose-acp-macros = { path = "../goose-acp-macros" } tower-http = { workspace = true, features = ["cors"] } http-body-util = "0.1.3" tracing-appender.workspace = true process-wrap = { version = "9.1.0", features = ["std"] } nostr = { version = "0.44.2", features = ["nip44"] } nostr-sdk = { version = "0.44.1", features = ["nip44"] } rustls = { version = "0.23", features = ["aws_lc_rs"], optional = true } [target.'cfg(target_os = "windows")'.dependencies] winapi = { workspace = true } keyring = { version = "3.6.2", features = ["windows-native"] } # Platform-specific GPU acceleration for Whisper and local inference [target.'cfg(target_os = "macos")'.dependencies] candle-core = { version = "0.10.2", default-features = false, features = ["metal"], optional = true } candle-nn = { version = "0.10.2", default-features = false, features = ["metal"], optional = true } llama-cpp-2 = { version = "0.1.145", features = ["sampler", "metal", "mtmd"], optional = true } keyring = { version = "3.6.2", features = ["apple-native"] } [target.'cfg(target_os = "linux")'.dependencies] keyring = { version = "3.6.2", features = ["sync-secret-service"] } libc = "0.2.186" [dev-dependencies] serial_test = { workspace = true } mockall = "0.13.1" wiremock = { workspace = true } tokio = { workspace = true } tokio-util = { workspace = true, features = ["compat"] } dotenvy = { workspace = true } ctor = "0.2.9" test-case = { workspace = true } env-lock = { workspace = true } rmcp = { workspace = true, features = ["transport-streamable-http-server"] } opentelemetry_sdk = { workspace = true, features = ["testing"] } goose-test-support = { path = "../goose-test-support" } bytes.workspace = true http.workspace = true goose-mcp = { path = "../goose-mcp" } insta = "1.47.2" [[example]] name = "agent" path = "examples/agent.rs" [[example]] name = "databricks_oauth" path = "examples/databricks_oauth.rs" [[example]] name = "test_whisper" path = "examples/test_whisper.rs" required-features = ["local-inference"] [[bin]] name = "analyze_cli" path = "src/bin/analyze_cli.rs" [[bin]] name = "build_canonical_models" path = "src/providers/canonical/build_canonical_models.rs" [[bin]] name = "generate-acp-schema" path = "src/bin/generate_acp_schema.rs" [package.metadata.cargo-machete] ignored = [ # Used only on windows "winapi", # Used to provide extras imports for agent-client-protocol "agent-client-protocol-schema", # Used via http transport "http-body-util", ]