- src/serve.rs : tiny_http (zéro dépendance runtime) — token Bearer obligatoire (comptime-ish), rate limiting fenêtre 60s par IP, routes réutilisant les contrats --json (stats/sessions/ps/providers/run/start/stop/ask) en re-spawnant le binaire (pattern web #54), WebSocket RFC 6455 (handshake 101 + accept sha1, broadcast des events du journal par polling 500ms, première passe = indexation), TLS délégué au reverse proxy (documenté) - am serve --token <TOKEN> [--host] [--port 8080] [--rate-limit 120] + REPL + help + man - 9 tests : auth (sans/mauvais/bon token), routes (runner mocké), run args, 404, rate limit, handshake RFC 6455 (vecteur connu), broadcast journal, comparaison token - E2E réel : curl 401/health/stats + POST run exécutant un agent, client WS brut recevant l'event run en temps réel - version 1.0.0 (milestone v1.0 terminé) ; test version_table suit Cargo.toml (major plus hardcodé)
53 lines
1.3 KiB
TOML
53 lines
1.3 KiB
TOML
[package]
|
|
name = "agent-manager"
|
|
version = "1.0.0"
|
|
edition = "2021"
|
|
description = "Manage local AI coding agents: list, install, start, stop, update — with automatic dependency handling and a YAML-driven catalog."
|
|
license = "MIT"
|
|
default-run = "am"
|
|
|
|
[[bin]]
|
|
name = "am"
|
|
path = "src/main.rs"
|
|
|
|
[lib]
|
|
name = "agent_manager"
|
|
path = "src/lib.rs"
|
|
|
|
[dependencies]
|
|
anyhow = "1"
|
|
chrono = { version = "0.4", features = ["serde"] }
|
|
clap = { version = "4", features = ["derive", "wrap_help"] }
|
|
clap_complete = "4"
|
|
colored = "2"
|
|
flate2 = "1"
|
|
semver = "1"
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
serde_yaml = "0.9"
|
|
reedline = "0.49"
|
|
nu-ansi-term = "0.50"
|
|
sha2 = "0.10"
|
|
shell-words = "1"
|
|
tar = "0.4"
|
|
tempfile = "3"
|
|
tiny_http = "0.12"
|
|
sha1 = "0.10"
|
|
base64 = "0.22"
|
|
toml = "0.8"
|
|
ureq = { version = "2", default-features = false, features = ["tls"] }
|
|
wait-timeout = "0.2"
|
|
keyring = { version = "3", features = ["windows-native", "linux-native"] }
|
|
which = "7"
|
|
zip = "0.6"
|
|
crossterm = "0.29"
|
|
ratatui = "0.30"
|
|
clap_mangen = "0.3"
|
|
|
|
[target.'cfg(windows)'.dependencies]
|
|
windows-sys = { version = "0.52", features = ["Win32_Foundation", "Win32_System_Threading", "Win32_System_ProcessStatus", "Win32_System_Diagnostics_ToolHelp", "Win32_System_Console"] }
|
|
|
|
[profile.release]
|
|
lto = "thin"
|
|
strip = true
|