1 [package]
2 name = "sigit"
3 version = "1.6.8"
4 edition = "2024"
5 description = "siGit Code — ACP-compatible AI coding agent. Sí, git."
6 documentation = "https://github.com/getsigit/sigit"
7 license = "Apache-2.0"
8 repository = "https://github.com/getsigit/sigit"
9 homepage = "https://sigit.si"
10 readme = "README.md"
11 keywords = ["sigit", "cli", "ai", "coding-agent", "llm"]
12 categories = ["command-line-utilities"]
13 authors = ["Seto Elkahfi <seto@sigit.si>", "paydii <193906237+paydii@users.noreply.github.com>", "keypair34 <216233964+keypair34@users.noreply.github.com>"]
14 # `src/bin/` holds test-only helper binaries (the MCP stdio stub used by the
15 # integration tests). Excluding it keeps them out of the published crate, so
16 # `cargo install sigit` installs exactly one binary. The integration test that
17 # spawns the stub goes with it, or the packaged crate's tests wouldn't compile.
18 exclude = ["src/bin/", "tests/mcp_stdio.rs"]
19
20 [[bin]]
21 name = "sigit"
22 path = "src/main.rs"
23
24 [dependencies]
25 # ACP protocol SDK
26 agent-client-protocol = { version = "2.2", features = ["unstable_session_fork"] }
27
28 # MCP client (rmcp underneath), shared with the other Onde agents
29 ed-mcp = "1.2.0"
30
31 # Onde Inference engine (local LLM)
32 # onde = { path = "../onde" }
33 onde = "1.3.1"
34
35 # Async runtime
36 tokio = { version = "1", features = ["rt", "rt-multi-thread", "macros", "io-std", "io-util", "sync", "time", "process"] }
37 tokio-util = { version = "0.7", features = ["compat"] }
38 futures = "0.3"
39
40 # TUI (interactive chat mode)
41 # `unstable-rendered-line-info` exposes `Paragraph::line_count`, which we use to
42 # pin the message view to the bottom using the exact wrapped-row count (the same
43 # WordWrapper that rendering uses) rather than a hand-rolled estimate.
44 ratatui = { version = "0.30", default-features = false, features = ["crossterm", "layout-cache", "unstable-rendered-line-info"] }
45 crossterm = { version = "0.29", features = ["event-stream"] }
46
47 # Utilities
48 anyhow = "1"
49 libc = "0.2"
50 log = "0.4"
51 tracing-subscriber = { version = "0.3", features = ["fmt", "env-filter"] }
52 serde = { version = "1", features = ["derive"] }
53 serde_json = "1"
54 toml = "0.8"
55 async-trait = "0.1"
56 regex = "1"
57 reqwest = { version = "0.13", default-features = false, features = ["blocking", "form", "json", "rustls", "stream"] }
58 uuid = { version = "1", features = ["v4"] }
59 rpassword = "7"
60 # Browser sign-in: PKCE needs a SHA-256 and base64url, the verifier and state
61 # need a CSPRNG. All three already came in through the dependency graph.
62 base64 = "0.22"
63 rand = "0.9"
64 sha2 = "0.10"
65
66 # ACP `resource_link` blocks carry file URIs. Parsing them with `url` decodes
67 # percent escapes and maps Windows drive paths, which hand-stripping `file://`
68 # did not. Already in the graph through reqwest.
69 url = "2"
70
71 # Release binaries ship to five registries, and the NuGet package bundles all
72 # six targets in a single archive, so binary size is a distribution constraint
73 # rather than a nicety. Stripping symbols takes the macOS arm64 binary from
74 # ~102 MB to ~88 MB. The Homebrew tarball already stripped by hand in
75 # release-github.yml; this makes every channel match.
76 [profile.release]
77 strip = "symbols"