-
-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathCargo.toml
More file actions
143 lines (127 loc) · 4.68 KB
/
Copy pathCargo.toml
File metadata and controls
143 lines (127 loc) · 4.68 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
[workspace]
members = ["crates/catenary-proc"]
# The cargo-fuzz crate (tokenizer ticket 06) is its own detached workspace
# (`fuzz/Cargo.toml` declares `[workspace]`) and requires the nightly toolchain +
# `libfuzzer-sys`. Excluded here so the stable `make check` run, `cargo deny`, and
# `cargo machete` never descend into it — the fuzz soak is out-of-band (see
# `fuzz/README.md` / `make fuzz`).
exclude = ["fuzz"]
[package]
name = "catenary-mcp"
version = "1.6.1"
edition = "2024"
license = "AGPL-3.0-or-later"
default-run = "catenary"
description = "A high-performance multiplexing bridge between MCP (Model Context Protocol) and LSP (Language Server Protocol). Enables LLMs to access IDE-grade code intelligence across multiple languages simultaneously with smart routing and UTF-8 accuracy."
repository = "https://github.com/TwoWells/Catenary"
documentation = "https://twowells.github.io/catenary/"
keywords = ["mcp", "lsp", "language-server", "llm", "ai"]
categories = ["development-tools"]
[lints]
workspace = true
[[bin]]
name = "catenary"
path = "src/main.rs"
[[bin]]
name = "mockls"
path = "tools/mockls.rs"
required-features = ["mockls"]
[[bin]]
name = "mockc"
path = "tools/mockc.rs"
required-features = ["mockls"]
[[bench]]
name = "logging_overhead"
harness = false
[features]
mockls = []
# Exposes the differential oracle (`cli::command_filter::oracle::check`) and pulls
# in the `brush-parser` reference parse, so the out-of-tree `fuzz/` crate
# (tokenizer ticket 06) can reuse the same `check()` the `proptest` layer drives.
# Off by default and never enabled by the shipped build or `make check`, so
# `brush-parser` stays out of the runtime / `cargo deny` graph. The `proptest`
# layer reaches the oracle through `cfg(test)` instead, so stable CI needs no
# feature flag.
fuzzing = ["dep:brush-parser"]
[dependencies]
catenary-proc = { path = "crates/catenary-proc", version = "0.1.0" }
anyhow = "1.0.100"
# `brush-parser` is the bash-fidelity reference parse for the differential oracle
# (tokenizer ticket 05). It is **optional** and only activated by the `fuzzing`
# feature, which the shipped build and `make check` never enable — so it never
# enters the runtime / `cargo deny` graph and never ships. The `proptest` layer
# reaches it through the `[dev-dependencies]` copy below under `cfg(test)`; the
# out-of-tree `fuzz/` crate reaches it through this optional dep + `fuzzing`.
brush-parser = { version = "0.4.0", optional = true }
bytes = "1.10"
chrono = { version = "0.4", features = ["serde"] }
clap = { version = "4.5.54", features = ["derive"] }
toml = "0.9.11"
crossterm = "0.28"
ratatui = { version = "0.30", default-features = false, features = ["crossterm_0_28"] }
dirs = "6.0.0"
fancy-regex = "0.18"
futures = "0.3"
globset = "0.4"
grep-matcher = "0.1.8"
grep-regex = "0.1.14"
grep-searcher = "0.1.16"
ignore = "0.4.25"
memchr = "2"
notify = "8"
os_pipe = "1"
regex = "1.10"
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.149"
similar = "2.6"
tempfile = "3"
thiserror = "2.0.18"
tokio = { version = "1.49.0", features = ["full"] }
tokio-util = "0.7"
tracing = "0.1.44"
tracing-subscriber = { version = "0.3.22", features = ["env-filter"] }
unicode-width = "0.2"
ureq = { version = "2", features = ["json"] }
uuid = { version = "1", features = ["v4"] }
[dev-dependencies]
# Differential fuzzing oracle for the shell-command parser (tokenizer ticket 05).
# `brush-parser` is the bash-fidelity reference parse; `proptest` drives the
# stable-CI differential. Both are dev-only — they never enter the runtime /
# `cargo deny` *runtime* graph and never ship. `brush-parser` is also declared as
# an `optional` regular dependency above so the out-of-tree `fuzz/` crate can pull
# it in via the `fuzzing` feature; this dev-dependency copy is what lets the
# `cfg(test)` `proptest` layer reach the oracle with no feature flag.
brush-parser = "0.4.0"
proptest = "1.11"
[workspace.lints.rust]
unsafe_code = "forbid"
missing_docs = "warn"
[workspace.lints.clippy]
# Lint groups
pedantic = { level = "warn", priority = -1 }
nursery = { level = "warn", priority = -1 }
cargo = { level = "warn", priority = -1 }
# Hard denials — no agent should produce these
unwrap_used = "deny"
expect_used = "deny" # test modules opt out via #[allow(clippy::expect_used)]
panic = "deny"
todo = "deny"
unimplemented = "deny"
dbg_macro = "deny"
print_stdout = "deny"
print_stderr = "deny"
wildcard_imports = "deny"
# Force agents to justify exceptions
allow_attributes_without_reason = "deny"
# Dependencies
multiple_crate_versions = "allow"
# Documentation
missing_errors_doc = "warn"
missing_panics_doc = "warn"
missing_safety_doc = "warn"
[profile.release]
panic = "abort"
lto = true
codegen-units = 1
opt-level = 3
strip = "symbols"