4904e3c856
Co-authored-by: Douwe Osinga <douwe@squareup.com>
287 lines
11 KiB
TOML
287 lines
11 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 = []
|
|
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:llama-cpp-sys-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",
|
|
"dep:smithy-transport-reqwest",
|
|
]
|
|
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",
|
|
"smithy-transport-reqwest?/rustls",
|
|
"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",
|
|
"smithy-transport-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"]
|
|
nostr = ["dep:nostr", "dep:nostr-sdk"]
|
|
|
|
[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"] }
|
|
tokio = { workspace = true }
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
serde_urlencoded = { version = "0.7.1", default-features = false }
|
|
jsonschema = { version = "0.30", default-features = false }
|
|
uuid = { workspace = true, features = ["v7"] }
|
|
regex = { workspace = true }
|
|
async-trait = { workspace = true }
|
|
async-stream = { workspace = true }
|
|
minijinja = { version = "2.18", default-features = false, features = ["loader", "multi_template", "serde"] }
|
|
include_dir = { workspace = true }
|
|
tiktoken-rs = { version = "0.11", default-features = false }
|
|
chrono = { workspace = true }
|
|
clap = { workspace = true }
|
|
indoc = { workspace = true }
|
|
nanoid = { version = "0.5", default-features = false }
|
|
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 = ["ansi", "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 = { workspace = true, optional = true }
|
|
serde_yaml = { workspace = true }
|
|
strum = { workspace = true }
|
|
once_cell = { workspace = true }
|
|
etcetera = { workspace = true }
|
|
fs-err = { version = "3.1", default-features = false }
|
|
goose-providers = { path = "../goose-providers", default-features = false }
|
|
goose-sdk-types = { path = "../goose-sdk-types" }
|
|
rand = { workspace = true }
|
|
utoipa = { workspace = true, features = ["chrono"] }
|
|
tokio-cron-scheduler = { version = "0.15", default-features = false }
|
|
urlencoding = { workspace = true }
|
|
v_htmlescape = { version = "0.17", default-features = false, features = ["std"] }
|
|
sqlx = { version = "0.8.5", default-features = false, features = [
|
|
"sqlite",
|
|
"chrono",
|
|
"json",
|
|
"macros",
|
|
"migrate",
|
|
] }
|
|
|
|
# For Bedrock provider (optional, behind "aws-providers" feature)
|
|
aws-config = { version = "1.8", default-features = false, features = ["credentials-process", "rt-tokio", "sso", "behavior-version-latest"], optional = true }
|
|
aws-smithy-types = { version = "1.3.4", default-features = false, features = ["rt-tokio"], optional = true }
|
|
aws-sdk-bedrockruntime = { version = "1.132", default-features = false, features = ["rt-tokio"], optional = true }
|
|
smithy-transport-reqwest = { version = "0.1", default-features = false, features = ["http2", "system-proxy"], optional = true }
|
|
|
|
# For SageMaker TGI provider (optional, behind "aws-providers" feature)
|
|
aws-sdk-sagemakerruntime = { version = "1.104", default-features = false, features = ["rt-tokio"], optional = true }
|
|
|
|
# For GCP Vertex AI provider auth
|
|
jsonwebtoken = { version = "10.2", default-features = false, features = ["use_pem"] }
|
|
|
|
blake3 = { version = "1", default-features = false, features = ["std"] }
|
|
fs2 = { workspace = true }
|
|
tokio-stream = { workspace = true, features = ["io-util"] }
|
|
tempfile = { workspace = true }
|
|
tokio-util = { workspace = true, features = ["compat"] }
|
|
agent-client-protocol-schema = { workspace = true }
|
|
agent-client-protocol = { workspace = true, features = ["unstable"] }
|
|
unicode-normalization = { version = "0.1.22", default-features = false, features = ["std"] }
|
|
|
|
# For local Whisper transcription (optional, behind "local-inference" feature)
|
|
candle-core = { workspace = true, optional = true }
|
|
candle-nn = { workspace = true, optional = true }
|
|
candle-transformers = { version = "0.10", default-features = false, optional = true }
|
|
byteorder = { version = "1.5", default-features = false, features = ["std"], optional = true }
|
|
tokenizers = { version = "0.22", default-features = false, features = ["onig"], optional = true }
|
|
symphonia = { version = "0.5", default-features = false, features = ["aac", "adpcm", "alac", "isomp4", "mkv", "mp3", "pcm", "vorbis", "wav"], optional = true }
|
|
rubato = { version = "0.16", default-features = false, optional = true }
|
|
zip = { workspace = true }
|
|
sys-info = { version = "0.9", default-features = false }
|
|
|
|
llama-cpp-2 = { workspace = true, optional = true }
|
|
|
|
schemars = { workspace = true, features = [
|
|
"derive",
|
|
] }
|
|
shellexpand = { workspace = true }
|
|
indexmap = { version = "2.9", default-features = false, features = ["std"] }
|
|
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 }
|
|
pulldown-cmark = { version = "0.13", default-features = false }
|
|
encoding_rs = { version = "0.8.35", default-features = false }
|
|
pastey = { version = "0.2", default-features = false }
|
|
shell-words = { workspace = true }
|
|
pem = { version = "3.0.2", default-features = false, features = ["std"], optional = true }
|
|
pkcs1 = { version = "0.7.5", default-features = false, features = ["pkcs8", "std"], optional = true }
|
|
pkcs8 = { version = "0.11.0", default-features = false, features = ["alloc", "std"], optional = true }
|
|
sec1 = { version = "0.7", default-features = false, features = ["der", "pkcs8", "std"], optional = true }
|
|
goose-acp-macros = { path = "../goose-acp-macros", default-features = false }
|
|
tower-http = { workspace = true, features = ["cors"] }
|
|
http-body-util = { version = "0.1.2", default-features = false }
|
|
tracing-appender = { workspace = true }
|
|
process-wrap = { version = "9", default-features = false, features = ["std"] }
|
|
nostr = { version = "0.44", default-features = false, features = ["nip44", "std"], optional = true }
|
|
nostr-sdk = { version = "0.44", default-features = false, features = ["nip44"], optional = true }
|
|
rustls = { workspace = true, optional = true }
|
|
|
|
pctx_code_mode = { version = "0.3", default-features = false, optional = true }
|
|
|
|
# These are needed because temporal_rs 0.1 (a transitive dep via PCTX) enables unstable features on icu_calendar without pinning the dependency version
|
|
# A fix is available in temporal_rs 0.2 but PCTX has not updated
|
|
# They are just here to pin the version, and can be removed if PCTX updates temporal_rs
|
|
icu_calendar = { version = "=2.1.1", default-features = false }
|
|
icu_locale = { version = "=2.1.1", default-features = false }
|
|
llama-cpp-sys-2 = { workspace = true, optional = true }
|
|
image = { version = "0.24.9", default-features = false, features = ["png", "jpeg", "gif", "webp"] }
|
|
|
|
[target.'cfg(target_os = "windows")'.dependencies]
|
|
winapi = { workspace = true }
|
|
keyring = { workspace = true, features = ["windows-native"], optional = true }
|
|
|
|
# Platform-specific GPU acceleration for Whisper and local inference
|
|
[target.'cfg(target_os = "macos")'.dependencies]
|
|
candle-core = { workspace = true, features = ["metal"], optional = true }
|
|
candle-nn = { workspace = true, features = ["metal"], optional = true }
|
|
llama-cpp-2 = { workspace = true, features = ["sampler", "metal", "mtmd"], optional = true }
|
|
keyring = { workspace = true, features = ["apple-native"], optional = true }
|
|
|
|
[target.'cfg(target_os = "linux")'.dependencies]
|
|
keyring = { workspace = true, features = ["sync-secret-service"], optional = true }
|
|
libc = { version = "0.2.182", default-features = false, features = ["std"] }
|
|
|
|
[dev-dependencies]
|
|
serial_test = { workspace = true }
|
|
mockall = { version = "0.14", default-features = false }
|
|
wiremock = { workspace = true }
|
|
tokio = { workspace = true }
|
|
tokio-util = { workspace = true, features = ["compat"] }
|
|
dotenvy = { workspace = true }
|
|
ctor = { version = "0.2", default-features = false }
|
|
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", default-features = false }
|
|
bytes = { workspace = true }
|
|
http = { workspace = true }
|
|
goose-mcp = { path = "../goose-mcp", default-features = false }
|
|
insta = { version = "1", default-features = false }
|
|
dtor = { version = "1.0.5", default-features = false, features = ["proc_macro"] }
|
|
|
|
[[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/bin/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",
|
|
|
|
# Included only to pin version
|
|
"icu_calendar",
|
|
"icu_locale",
|
|
]
|