Files
goose/crates/goose/Cargo.toml
T
jh-block bdb7d214e7 Add Linux musl CLI builds (#9240)
Signed-off-by: jh-block <jhugo@block.xyz>
2026-05-19 07:28:20 +00:00

282 lines
9.3 KiB
TOML

[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",
"system-keyring",
]
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",
]
system-keyring = ["dep:keyring"]
portable-default = ["rustls-tls", "aws-providers", "telemetry", "otel"]
[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"], optional = true }
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"], optional = true }
# 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"], optional = true }
[target.'cfg(target_os = "linux")'.dependencies]
keyring = { version = "3.6.2", features = ["sync-secret-service"], optional = true }
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",
]