-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathCargo.toml
More file actions
158 lines (133 loc) · 4.05 KB
/
Copy pathCargo.toml
File metadata and controls
158 lines (133 loc) · 4.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
[workspace]
members = [".", "xtask"]
resolver = "3"
[workspace.package]
version = "2.2.2"
edition = "2024"
rust-version = "1.97.1"
authors = ["dinglebear.ai <hello@dinglebear.ai>"]
license = "AGPL-3.0-only"
readme = "README.md"
homepage = "https://github.com/dinglebear-ai/yarr#readme"
repository = "https://github.com/dinglebear-ai/yarr"
[workspace.dependencies]
rmcp = { version = "=3.1.0", default-features = false }
schemars = "=1.2.1"
[workspace.lints.rustdoc]
broken_intra_doc_links = "deny"
private_intra_doc_links = "warn"
invalid_codeblock_attributes = "deny"
invalid_html_tags = "deny"
invalid_rust_codeblocks = "deny"
bare_urls = "warn"
unescaped_backticks = "warn"
redundant_explicit_links = "warn"
[workspace.lints.rust]
missing_docs = "allow"
missing_crate_level_docs = "deny"
unsafe_op_in_unsafe_fn = "deny"
[workspace.lints.clippy]
all = { level = "warn", priority = -1 }
mod_module_files = "deny"
missing_safety_doc = "deny"
missing_errors_doc = "warn"
missing_panics_doc = "warn"
doc_markdown = "warn"
[package]
name = "yarr"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
authors.workspace = true
license.workspace = true
readme.workspace = true
homepage.workspace = true
repository.workspace = true
categories = ["command-line-utilities", "api-bindings", "multimedia", "network-programming", "development-tools"]
keywords = ["mcp", "media", "sonarr", "radarr", "plex"]
description = "Self-hosted media fleet operations across Sonarr, Radarr, Plex, and related apps over MCP and CLI."
publish = false
autobins = false
[[bin]]
name = "yarr"
path = "src/main.rs"
[dependencies]
# Async runtime
tokio = { version = "1", features = [
"rt-multi-thread",
"macros",
"net",
"signal",
"sync",
"time",
"io-util",
] }
# HTTP / MCP transport
axum = "0.8"
rmcp = { workspace = true, features = [
"server",
"macros",
"transport-streamable-http-server",
"transport-io",
"schemars",
"elicitation",
] }
tower-http = { version = "0.7", features = ["cors", "limit", "trace"] }
# Serialization
serde = { version = "1", features = ["derive"] }
serde_json = "1"
schemars.workspace = true
# Time
chrono = { version = "0.4", features = ["serde"] }
# Config
toml = "1.1"
# OAuth + JWT
lab-auth = { git = "https://github.com/dinglebear-ai/labby.git", rev = "53dbc4798567f3cacc0f740b3b4de5839ca39133", package = "labby-auth", features = ["http-axum"] }
url = "2"
# Logging
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }
# HTTP client for upstream media services.
reqwest = { version = "0.13", default-features = false, features = ["json", "rustls", "webpki-roots", "cookies", "multipart"] }
base64 = "0.22"
# Prometheus metrics layer for the unauthenticated /metrics endpoint.
axum-prometheus = "0.10"
# Platform dirs — for default_data_dir() (~/.yarr detection)
dirs = "6"
fs2 = "0.4"
# Code Mode: in-process QuickJS engine for the `codemode` action (run JS that
# calls yarr actions). QuickJS parity with lab's javy, but in-process — no
# wasmtime/subprocess, matching yarr's single-binary model.
rquickjs = "0.12"
# Errors
anyhow = "1"
thiserror = "2"
[profile.dev]
# CI recompiles from scratch on every job (CARGO_INCREMENTAL=0 is required
# under the kache rustc-wrapper), and full DWARF is a large share of that
# time — which the build then discards anyway via -C strip=debuginfo.
# "line-tables-only" keeps file/line in panics and backtraces, which is what
# CI logs are read for. Override with CARGO_PROFILE_DEV_DEBUG=full for a
# debugger session. Matches labby and cortex.
debug = "line-tables-only"
[profile.release]
lto = "thin"
codegen-units = 1
strip = "symbols"
[lints]
workspace = true
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs", "--generate-link-to-definition"]
targets = ["x86_64-unknown-linux-gnu"]
[features]
default = []
test-support = []
[dev-dependencies]
yarr = { path = ".", features = ["test-support"] }
tempfile = "3"
tower = { version = "0.5", features = ["util"] }
rmcp = { workspace = true, features = [
"client",
"transport-child-process",
] }