forked from utensils/claudette
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCargo.toml
More file actions
124 lines (116 loc) · 5.48 KB
/
Copy pathCargo.toml
File metadata and controls
124 lines (116 loc) · 5.48 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
[workspace]
members = ["src-tauri", "src-server", "src-cli", "src-mobile"]
resolver = "2"
[package]
name = "claudette"
version = "0.24.0"
edition = "2024"
description = "Claude's missing better half — a companion tool for Claude Code"
license = "MIT"
[lib]
path = "src/lib.rs"
[dependencies]
base64 = "0.22"
futures = "0.3"
rusqlite = { version = "0.34", features = ["bundled"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
tokio = { version = "1", features = ["process", "fs", "io-util", "io-std", "time", "sync", "rt", "net", "macros"] }
url = "2"
uuid = { version = "1", features = ["v4"] }
which = "7"
dirs = "6"
open = "5"
mlua = { version = "0.10", features = ["luau", "serialize", "async", "send"] }
flate2 = "1"
# Pure-Rust minisign signature verification. Already in our dep tree
# transitively via tauri-plugin-updater; pulling it in directly so the
# community-registry signature check has a stable, named dep. We only
# verify (never sign) on the client, so the verifier-only crate is the
# right shape and keeps the binary slim.
minisign-verify = "0.2"
# Cross-platform filesystem watcher used by env-provider reactive
# invalidation. RecommendedWatcher picks FSEvents (macOS), inotify
# (Linux), and ReadDirectoryChangesW (Windows) — single API across all
# three target platforms.
notify = "7"
rand = "0.8"
sha2 = "0.10"
tar = "0.4"
tempfile = "3"
# WSS client transport shared between the desktop binary (`claudette-tauri`)
# and the mobile binary (`claudette-mobile`). Lives in `src/transport/`.
# `rustls-tls-webpki-roots` matches the existing `claudette-tauri` setup so
# feature unification keeps a single tokio-tungstenite build across the
# workspace.
tokio-tungstenite = { version = "0.26", features = ["rustls-tls-webpki-roots"] }
# Direct `rustls` for the TOFU `ServerCertVerifier` in `transport::ws`.
# `aws-lc-rs` matches the crypto provider already installed at desktop /
# server startup, so we don't end up with two providers in the same binary.
rustls = { version = "0.23", features = ["aws-lc-rs"] }
hex = "0.4"
async-trait = "0.1"
futures-util = "0.3"
# Cross-platform local IPC: Unix domain sockets on macOS/Linux, Named Pipes
# on Windows. One async API for both, used by `agent_mcp::bridge` to talk to
# the Claudette-hosted MCP grandchild that the Claude CLI spawns over stdio.
interprocess = { version = "2", features = ["tokio"] }
# Structured, span-aware logging. We use `tracing` macros across the
# library and binary crates and configure the subscriber from
# `claudette::logging::init` (called once from src-tauri/src/main.rs).
# `tracing-subscriber` provides the layered filter + format pipeline;
# `tracing-appender` adds non-blocking, daily-rotated file output that
# `claudette::logging` pairs with a startup retention sweep so old log
# files are reaped without an external cron.
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt", "json", "registry"] }
tracing-appender = "0.2"
chrono = "0.4"
# HTTP client for the multi-provider usage source
# (`src/usage/anthropic_oauth.rs` + `openrouter.rs`). `rustls` keeps the
# build platform-agnostic; `json` enables `Response::json` for the
# small response bodies these endpoints return.
reqwest = { version = "0.13", default-features = false, features = ["rustls", "json", "stream"] }
[target.'cfg(windows)'.dependencies]
# Read fresh PATH from HKCU + HKLM Environment registry keys so we pick up
# PATH updates made after claudette started (winget/installer edits) without
# forcing the user to log out and back in.
winreg = "0.55"
# `PlaySoundW` for Windows notification audio (see `audio.rs`); plus
# `OpenProcess + GetExitCodeProcess` used by `ops::workspace`'s
# script-timeout test to assert the subtree-kill helper actually
# terminated the root PID. Tiny — we only enable the bound submodules,
# no extra runtime.
windows-sys = { version = "0.61", features = [
"Win32_Media_Audio",
"Win32_Foundation",
"Win32_System_Threading",
] }
# Pure-Rust audio playback, Windows-only (macOS/Linux already shell out
# to native players). Used for OpenPeon sound packs that ship MP3 / OGG
# — `PlaySoundW` only handles PCM WAV. Default features pull in legacy
# decoders (minimp3, lewton, claxon); we route everything through
# Symphonia instead for one decoder pipeline and a smaller binary.
rodio = { version = "0.22", default-features = false, features = ["playback", "symphonia-wav", "symphonia-mp3", "symphonia-vorbis"] }
[target.'cfg(unix)'.dependencies]
# Used by `ops::workspace` to SIGKILL the process group of a setup script
# whose 5-minute deadline elapses, so grandchild processes (`npm install`,
# build helpers) don't survive the kill of the immediate `sh -c` parent.
libc = "0.2"
[features]
# `pi-sdk` gates the Pi coding-agent harness (sidecar wrapper around
# `@earendil-works/pi-coding-agent`). It's on by default so library tests
# and `cargo test -p claudette` see the full surface, but downstream
# crates (notably `claudette-tauri`) can opt out with
# `default-features = false` + a non-pi feature set when they want a
# build that excludes Pi entirely. The umbrella `alternative-backends`
# feature in `claudette-tauri` is independent — you can keep Codex
# Native enabled while disabling Pi by dropping just `pi-sdk`.
default = ["pi-sdk"]
pi-sdk = []
[dev-dependencies]
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
[build-dependencies]
# Probes PATH for direnv/mise/nix so env-provider integration tests
# can compile-out when the tool isn't installed on the build host.
which = "7"