sigit-code 1.0.2__tar.gz → 1.0.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. {sigit_code-1.0.2 → sigit_code-1.0.4}/.agents/skills/agent-client-protocol/SKILL.md +7 -2
  2. {sigit_code-1.0.2 → sigit_code-1.0.4}/.agents/skills/ai-assisted-coding/SKILL.md +7 -2
  3. sigit_code-1.0.4/.agents/skills/branding/SKILL.md +178 -0
  4. sigit_code-1.0.4/.agents/skills/sigit-code-release/SKILL.md +57 -0
  5. {sigit_code-1.0.2 → sigit_code-1.0.4}/.agents/skills/tool-calling/SKILL.md +7 -2
  6. sigit_code-1.0.4/CHANGELOG.md +156 -0
  7. {sigit_code-1.0.2 → sigit_code-1.0.4}/Cargo.lock +473 -843
  8. {sigit_code-1.0.2 → sigit_code-1.0.4}/Cargo.toml +5 -5
  9. {sigit_code-1.0.2 → sigit_code-1.0.4}/PKG-INFO +14 -17
  10. {sigit_code-1.0.2 → sigit_code-1.0.4}/README.md +19 -19
  11. {sigit_code-1.0.2 → sigit_code-1.0.4}/npm/README.md.tmpl +9 -11
  12. {sigit_code-1.0.2 → sigit_code-1.0.4}/npm/sigit/README.md +19 -21
  13. {sigit_code-1.0.2 → sigit_code-1.0.4}/pypi/README.md +10 -14
  14. {sigit_code-1.0.2 → sigit_code-1.0.4}/pypi/pyproject.toml +2 -2
  15. {sigit_code-1.0.2 → sigit_code-1.0.4}/pyproject.toml +2 -2
  16. {sigit_code-1.0.2 → sigit_code-1.0.4}/src/chat.rs +77 -6
  17. {sigit_code-1.0.2 → sigit_code-1.0.4}/src/main.rs +83 -25
  18. sigit_code-1.0.2/CHANGELOG.md +0 -70
  19. {sigit_code-1.0.2 → sigit_code-1.0.4}/.agents/AGENTS.md +0 -0
  20. {sigit_code-1.0.2 → sigit_code-1.0.4}/.github/workflows/ci.yml +0 -0
  21. {sigit_code-1.0.2 → sigit_code-1.0.4}/.github/workflows/release-github.yml +0 -0
  22. {sigit_code-1.0.2 → sigit_code-1.0.4}/.github/workflows/release-homebrew.yml +0 -0
  23. {sigit_code-1.0.2 → sigit_code-1.0.4}/.github/workflows/release-npm.yml +0 -0
  24. {sigit_code-1.0.2 → sigit_code-1.0.4}/.github/workflows/release-pypi.yml +0 -0
  25. {sigit_code-1.0.2 → sigit_code-1.0.4}/.gitignore +0 -0
  26. {sigit_code-1.0.2 → sigit_code-1.0.4}/.nvmrc +0 -0
  27. {sigit_code-1.0.2 → sigit_code-1.0.4}/LICENSE +0 -0
  28. {sigit_code-1.0.2 → sigit_code-1.0.4}/npm/package-main.json.tmpl +0 -0
  29. {sigit_code-1.0.2 → sigit_code-1.0.4}/npm/package.json.tmpl +0 -0
  30. {sigit_code-1.0.2 → sigit_code-1.0.4}/npm/scripts/render-main-package.cjs +0 -0
  31. {sigit_code-1.0.2 → sigit_code-1.0.4}/npm/scripts/render-platform-package.cjs +0 -0
  32. {sigit_code-1.0.2 → sigit_code-1.0.4}/npm/sigit/.gitignore +0 -0
  33. {sigit_code-1.0.2 → sigit_code-1.0.4}/npm/sigit/package.json +0 -0
  34. {sigit_code-1.0.2 → sigit_code-1.0.4}/npm/sigit/src/index.ts +0 -0
  35. {sigit_code-1.0.2 → sigit_code-1.0.4}/npm/sigit/tsconfig.json +0 -0
  36. {sigit_code-1.0.2 → sigit_code-1.0.4}/rust-toolchain.toml +0 -0
  37. {sigit_code-1.0.2 → sigit_code-1.0.4}/src/models.rs +0 -0
  38. {sigit_code-1.0.2 → sigit_code-1.0.4}/src/setup.rs +0 -0
  39. {sigit_code-1.0.2 → sigit_code-1.0.4}/src/tools.rs +0 -0
@@ -1,4 +1,9 @@
1
- # Skill: Agent Client Protocol (ACP) — Rust Implementation
1
+ ---
2
+ name: agent-client-protocol
3
+ description: Implement or debug Agent Client Protocol (ACP) support in Rust for siGit Code. Use when working on ACP JSON-RPC over stdio, the agent-client-protocol crate, session or prompt handlers, streaming notifications, or editor integration.
4
+ ---
5
+
6
+ # Agent Client Protocol
2
7
 
3
8
  ## Overview
4
9
 
@@ -311,4 +316,4 @@ Editor Agent
311
316
  10. **Never write to stdout except JSON-RPC** — any library that prints to
312
317
  stdout (`mistralrs` model metadata, stray `println!`, whatever) will
313
318
  corrupt the wire. Redirect diagnostics to stderr. If a dependency writes
314
- to stdout internally, fix it or suppress it before shipping.
319
+ to stdout internally, fix it or suppress it before shipping.
@@ -1,4 +1,9 @@
1
- # Skill: AI-Assisted Coding Agents — Onde Inference Integration
1
+ ---
2
+ name: ai-assisted-coding
3
+ description: Build or maintain AI-assisted coding features in Rust using Onde Inference. Use when working on ChatEngine integration, model loading, streaming inference, history management, sampling config, or local coding-agent architecture.
4
+ ---
5
+
6
+ # AI-Assisted Coding
2
7
 
3
8
  ## Overview
4
9
 
@@ -358,4 +363,4 @@ For sandboxed environments (iOS, tvOS, Android):
358
363
  6. **Forgetting that `generate()` doesn't update history** — use it for
359
364
  one-shot enhancements (prompt expansion, code review) that shouldn't pollute
360
365
  the main conversation. Use `send_message()` / `stream_message()` for the
361
- primary turn loop.
366
+ primary turn loop.
@@ -0,0 +1,178 @@
1
+ ---
2
+ name: branding
3
+ description: Keep siGit Code branding, naming, and package references consistent. Use when editing docs, release notes, UI copy, package metadata, setup guides, or any prose that mentions the product, CLI, company, or Onde Inference.
4
+ ---
5
+
6
+ # Branding
7
+
8
+ ## Overview
9
+
10
+ Use this file when writing docs, release notes, UI copy, package metadata, or setup guides for this repository.
11
+
12
+ The short version:
13
+
14
+ - **Product / brand name:** `siGit Code`
15
+ - **CLI command:** `sigit`
16
+ - **Rust crate:** `sigit`
17
+ - **npm package:** `@smbcloud/sigit`
18
+ - **PyPI package:** `sigit-code`
19
+ - **Company name:** `smbCloud`
20
+ - **LLM backend name:** `Onde Inference`
21
+
22
+ The most common mistake is mixing the product name with the command name.
23
+
24
+ ---
25
+
26
+ ## Primary rule
27
+
28
+ When you mean the product, write **`siGit Code`** exactly like that.
29
+
30
+ Correct:
31
+
32
+ - `siGit Code is a local coding agent.`
33
+ - `siGit Code works in Zed over ACP.`
34
+ - `siGit Code shares its model cache with the desktop app on macOS.`
35
+
36
+ Wrong:
37
+
38
+ - `Sigit Code`
39
+ - `SiGit Code`
40
+ - `siGit`
41
+ - `sigit Code`
42
+ - `SIGIT`
43
+
44
+ Do not shorten the product name to just `siGit` in documentation or marketing copy unless there is a very specific reason and the surrounding text makes it unmistakable.
45
+
46
+ ---
47
+
48
+ ## Use lowercase names for commands and packages
49
+
50
+ Use lowercase `sigit` when you mean the executable, crate, repo slug, or package name.
51
+
52
+ Examples:
53
+
54
+ - Run `sigit` in a terminal.
55
+ - Install with `cargo install sigit`.
56
+ - Install with `npm install -g @smbcloud/sigit`.
57
+ - Install with `pip install sigit-code`.
58
+ - The repository is `getsigit/sigit`.
59
+
60
+ This distinction matters:
61
+
62
+ - **Brand / product:** `siGit Code`
63
+ - **Command / package / repo:** `sigit`
64
+
65
+ ---
66
+
67
+ ## Recommended wording patterns
68
+
69
+ ### Product description
70
+
71
+ Prefer:
72
+
73
+ - `siGit Code is a local coding agent.`
74
+ - `siGit Code runs on your machine.`
75
+ - `siGit Code works with any codebase.`
76
+
77
+ Avoid:
78
+
79
+ - `siGit is a local coding agent.`
80
+ - `sigit is a coding assistant.`
81
+ - `The siGit product...`
82
+
83
+ ### Install instructions
84
+
85
+ Prefer:
86
+
87
+ - `Install siGit Code with Cargo:`
88
+ - `Install siGit Code from npm:`
89
+ - To start siGit Code, run `sigit`.
90
+
91
+ That keeps the brand name in prose and the command name in code.
92
+
93
+ ### Editor setup
94
+
95
+ In UI-facing examples, keep the displayed agent name as `siGit Code`.
96
+
97
+ Example:
98
+
99
+ ```/dev/null/branding-example.json#L1-8
100
+ {
101
+ "agent_servers": {
102
+ "siGit Code": {
103
+ "type": "custom",
104
+ "command": "/absolute/path/to/sigit"
105
+ }
106
+ }
107
+ }
108
+ ```
109
+
110
+ The visible name is `siGit Code`. The executable path is `sigit`.
111
+
112
+ ---
113
+
114
+ ## Other names that should stay consistent
115
+
116
+ ### smbCloud
117
+
118
+ Always write `smbCloud` with a lowercase `smb` and uppercase `C`.
119
+
120
+ Correct:
121
+
122
+ - `smbCloud`
123
+
124
+ Wrong:
125
+
126
+ - `SMBCloud`
127
+ - `SmbCloud`
128
+ - `smbcloud`
129
+
130
+ ### Onde Inference
131
+
132
+ Use `Onde Inference` when referring to the product or project.
133
+
134
+ Use `onde` when referring to the Rust crate.
135
+
136
+ Examples:
137
+
138
+ - `siGit Code uses Onde Inference as its local LLM backend.`
139
+ - The Rust dependency is `onde`.
140
+
141
+ ### ACP
142
+
143
+ Use `ACP` for the protocol acronym.
144
+
145
+ Preferred long form:
146
+
147
+ - `Agent Client Protocol (ACP)` on first mention when useful
148
+
149
+ ---
150
+
151
+ ## Copy checklist
152
+
153
+ Before you finish any docs or release-note edit, check these quickly:
154
+
155
+ 1. Did you use `siGit Code` for the product name?
156
+ 2. Did you keep `sigit` lowercase for commands and package names?
157
+ 3. Did you keep `smbCloud` cased correctly?
158
+ 4. Did you keep `Onde Inference` cased correctly in prose?
159
+ 5. In setup examples, does the visible editor label say `siGit Code` while the command stays `sigit`?
160
+
161
+ ---
162
+
163
+ ## Fast replacements
164
+
165
+ Common fixes:
166
+
167
+ - `siGit is` -> `siGit Code is`
168
+ - `siGit works` -> `siGit Code works`
169
+ - `siGit knows` -> `siGit Code knows`
170
+ - `On macOS, siGit` -> `On macOS, siGit Code`
171
+ - `Sigit` -> usually `siGit Code` or `sigit`, depending on context
172
+
173
+ When in doubt, ask:
174
+
175
+ > Am I talking about the branded product, or the literal command/package name?
176
+
177
+ If it is the product, use `siGit Code`.
178
+ If it is something users type or install, use `sigit`.
@@ -0,0 +1,57 @@
1
+ ---
2
+ name: sigit-code-release
3
+ description: Prepare and verify siGit Code releases. Use when bumping versions, checking Cargo, npm, or PyPI package metadata, validating release notes, confirming CI readiness, or assembling a release checklist for a new siGit Code version.
4
+ ---
5
+
6
+ # siGit Code Release
7
+
8
+ Use this skill when preparing a release for this repository.
9
+
10
+ ## Focus areas
11
+
12
+ - Keep the branded product name as `siGit Code` in prose and `sigit` for commands, crate names, repo paths, and package identifiers.
13
+ - Verify version consistency across release surfaces, but respect which files are real sources of truth versus generated or release-time rewritten artifacts.
14
+ - Check release-facing docs such as `README.md`, `CHANGELOG.md`, workflow notes, and package metadata for stale version references or incorrect naming.
15
+ - Validate the local release path pragmatically: formatting, linting, targeted tests, and any repo-specific release checks that matter for the requested version.
16
+
17
+ ## Working approach
18
+
19
+ 1. Read the files that define the release version and distribution metadata before proposing any changes.
20
+ 2. Treat `Cargo.toml` as the primary release version source for the Rust crate and the PyPI package in this repository.
21
+ 3. Check how the release workflows rewrite or derive versions before editing checked-in npm or Python metadata.
22
+ 4. Prefer targeted verification commands that match CI or packaging workflows already present in the repository.
23
+ 5. Report blockers clearly: failed checks, version mismatches, missing changelog entries, or unpublished packaging changes.
24
+
25
+ ## Repo-specific release rules
26
+
27
+ - Bump the crate version in `Cargo.toml`.
28
+ - Update the root `sigit` package entry in `Cargo.lock` when the crate version changes.
29
+ - Add or update the top changelog entry in `CHANGELOG.md` for the release being cut.
30
+ - Do not treat `npm/sigit/package.json` `0.0.0-dev` as a bug by default. The npm release workflow rewrites it at publish time using `npm/scripts/render-main-package.cjs` and the release tag.
31
+ - Do not add a hardcoded version to `pypi/pyproject.toml` for normal releases. PyPI uses `maturin` with `dynamic = ["version"]` and derives the published package version from `Cargo.toml`.
32
+ - Release workflows are tag-driven. `release-github.yml`, `release-npm.yml`, and `release-pypi.yml` all derive `RELEASE_VERSION` from a `v*.*.*` tag or a manually supplied tag input.
33
+
34
+ ## Typical files to inspect
35
+
36
+ - `Cargo.toml`
37
+ - `Cargo.lock`
38
+ - `CHANGELOG.md`
39
+ - `README.md`
40
+ - `npm/sigit/package.json`
41
+ - `npm/scripts/render-main-package.cjs`
42
+ - `npm/`
43
+ - `pypi/`
44
+ - `.github/workflows/`
45
+
46
+ ## Release checklist
47
+
48
+ - Version bump is applied everywhere it needs to be.
49
+ - `Cargo.toml` and the root crate entry in `Cargo.lock` match.
50
+ - `CHANGELOG.md` has a correct top entry for the new release.
51
+ - `npm/sigit/package.json` is left at `0.0.0-dev` unless the packaging flow itself changed.
52
+ - `pypi/pyproject.toml` still uses dynamic versioning unless there is a deliberate packaging change.
53
+ - Release workflows still derive their version from the tag as expected.
54
+ - Release notes or changelog entries match the actual changes.
55
+ - CI-equivalent local checks pass for the relevant platform or target.
56
+ - Package names, install commands, and branding stay consistent.
57
+ - Any known release limitations are called out explicitly.
@@ -1,4 +1,9 @@
1
- # Skill: Tool Calling in siGit Code
1
+ ---
2
+ name: tool-calling
3
+ description: Implement or debug tool calling in siGit Code across the app, Onde Inference, and mistral.rs. Use when working on tool schemas, execution loops, model support, session cwd handling, or tool-call troubleshooting.
4
+ ---
5
+
6
+ # Tool Calling
2
7
 
3
8
  ## Overview
4
9
 
@@ -287,4 +292,4 @@ The `qwen3_8b()` constructor only exists in the local Onde SDK until it's pushed
287
292
  | `sigit/src/setup.rs` | HF cache setup pointing to shared App Group container |
288
293
  | `onde/src/inference/types.rs` | `ToolDefinition`, `ToolCallRequest`, `ToolResult`, `ToolAwareResult` |
289
294
  | `onde/src/inference/engine.rs` | `send_message_with_tools()`, `send_tool_results()`, `attach_tools()`, `parse_tool_calls()`, `replay_history_with_tools()`, `GgufModelConfig::qwen3_8b()` |
290
- | `onde/src/inference/models.rs` | Model constants and `SUPPORTED_MODELS` array |
295
+ | `onde/src/inference/models.rs` | Model constants and `SUPPORTED_MODELS` array |
@@ -0,0 +1,156 @@
1
+ # Changelog
2
+
3
+ ## 1.0.4
4
+
5
+ This release tightens up the terminal experience and finishes a few release-facing cleanup items.
6
+
7
+ ### What changed
8
+
9
+ - Added bold rich-text rendering in the TUI for assistant replies, so `**text**` now displays with terminal styling instead of raw markdown markers
10
+ - Refreshed the bundled skill metadata to follow the current Agent Skills `SKILL.md` format
11
+ - Synced the crate release metadata for the `1.0.4` cut
12
+
13
+ ## 1.0.3
14
+
15
+ This is the cleanup release for the editor-side startup problems.
16
+
17
+ ### What changed
18
+
19
+ - Fixed ACP sessions failing on the first real prompt because the server claimed the model was ready before anything had actually been loaded
20
+ - Changed ACP startup so the default model loads lazily on the first non-slash prompt instead of pretending it is already in memory
21
+ - Kept `initialize` and `session/new` lightweight while still sending proper progress updates once model loading begins
22
+ - Updated the Onde integration to `1.0.0`
23
+ - Removed a few dependencies we were no longer using
24
+
25
+ ## 1.0.2
26
+
27
+ This release was supposed to fix the ACP auth breakage. It did fix the stdout pollution problem, but it turned out not to be the whole story.
28
+
29
+ ### What changed
30
+
31
+ - Delayed model loading in ACP mode so startup diagnostics would not leak into protocol stdout during the auth handshake
32
+ - Tightened up the ACP startup path for editor integrations
33
+ - Refreshed some README wording while cutting `1.0.2`
34
+
35
+ ## 1.0.1
36
+
37
+ The first patch after `1.0.0` was mostly about making model loading and model switching feel less opaque.
38
+
39
+ ### What changed
40
+
41
+ - Added ToolCall-based progress UI for startup model loading and downloading
42
+ - Improved model-switch progress reporting in ACP clients
43
+ - Fixed model-load error handling so failed switches did not leave the UI in a weird state
44
+ - Cleaned up a few status messages and docs while the release was going out
45
+
46
+ ## 1.0.0 (2026)
47
+
48
+ siGit Code has been living in real smbCloud repos for a while now. At some point it stopped feeling like an experiment, so we called it 1.0.
49
+
50
+ ### What this release is
51
+
52
+ siGit Code is a local coding agent. It runs a quantized model on your machine, talks to editors over ACP, and can read files, run commands, fetch web pages, and write code without sending your project to a hosted API.
53
+
54
+ You can install it with Cargo, pip, npm, or Homebrew and use it like any other tool on your machine.
55
+
56
+ ### What shipped in 1.0
57
+
58
+ #### Editor integration
59
+
60
+ This is the core of the project.
61
+
62
+ Zed and VS Code can talk to siGit Code over ACP. Multi-turn sessions work. Tool calling works. Session forking works. Working-directory context works. That was the original goal, and it feels solid now.
63
+
64
+ #### Terminal UI
65
+
66
+ The terminal UI started as a side quest and turned out to be useful. You get a full-screen ratatui chat, streaming tokens, a spinner while the model is busy, and a model picker you can open in the middle of a session.
67
+
68
+ It runs on macOS and Linux. Windows gets ACP and editor mode for now. The Windows terminal UI is still unfinished.
69
+
70
+ #### Tool calling
71
+
72
+ This is the part that makes siGit Code feel like an agent instead of a chat box. The loop can run up to 10 rounds per message.
73
+
74
+ Available tools:
75
+
76
+ - `read_file` / `write_file` / `delete_file`
77
+ - `list_directory` / `search_files`
78
+ - `run_command`, with an optional working directory
79
+ - `read_website`, which fetches a URL and strips it down to readable text
80
+
81
+ The model can call a tool, inspect the result, and keep going until it has a real answer.
82
+
83
+ #### Model support
84
+
85
+ The model list ended up wider than we expected for 1.0:
86
+
87
+ - Qwen 3 1.7B, 4B, 8B, and 14B
88
+ - Qwen 2.5 1.5B and 3B
89
+ - Qwen 2.5 Coder 1.5B, 3B, and 7B
90
+ - DeepSeek Coder 6.7B
91
+
92
+ They are all GGUF models and they all come from Hugging Face on first run.
93
+
94
+ Qwen 3 is the interesting one. It uses extended thinking mode. The model reasons inside `<think>...</think>` blocks before answering. The TUI strips those blocks out and renders them dimmed above the reply, so you can see what happened without turning the whole conversation into noise.
95
+
96
+ The 8B model is the desktop default. Mobile stays on 1.7B because iOS gives apps roughly 2 to 3 GB of memory, and we learned the hard way that 3B can blow up on an iPhone 16e.
97
+
98
+ #### Model picker
99
+
100
+ The model picker shows:
101
+
102
+ - what is already cached locally
103
+ - what can be downloaded
104
+ - which models support tool calling
105
+ - whether the local cache looks healthy
106
+
107
+ You can open it with `/models` in the TUI or through the editor config option. Switching models happens in the background and the UI stays alive while the download or load is in progress.
108
+
109
+ #### smbCloud context
110
+
111
+ siGit Code knows smbCloud repos better than a generic coding assistant does. It understands the difference between platform-user flows and tenant-app auth flows, how `Project`, `FrontendApp`, `AuthApp`, and GresIQ fit together, and why Next.js SSR deploys are not the same thing as the generic git-push path.
112
+
113
+ Outside smbCloud, it backs off and behaves like a normal coding agent.
114
+
115
+ #### Distribution
116
+
117
+ Distribution took an unreasonable amount of time, honestly.
118
+
119
+ There are prebuilt binaries for macOS, Linux, and Windows on both arm64 and x64 where relevant, plus install paths through Cargo, PyPI, npm, and Homebrew:
120
+
121
+ - `cargo install sigit`
122
+ - `pip install sigit-code`
123
+ - `npm install -g @smbcloud/sigit`
124
+ - `brew install sigit`
125
+
126
+ Getting that whole pipeline to behave across CI, crates.io, PyPI, npm, and Homebrew was basically its own project.
127
+
128
+ ### What still does not work
129
+
130
+ The Windows terminal UI is still missing.
131
+
132
+ ACP and editor mode work on Windows. The part that is still missing is the interactive full-screen terminal UI. The blocker is Unix-specific terminal handling that has not been abstracted cleanly yet.
133
+
134
+ ### Changes since 0.1.2
135
+
136
+ - Added Qwen 3 14B support
137
+ - Added Qwen 3 `<think>` block parsing and separate rendering in the TUI
138
+ - Moved all TUI code into `#[cfg(unix)]`, which fixed a pile of dead-code errors on Windows CI
139
+ - Added live download progress during model switches, including cancellation with Ctrl+C
140
+ - Added model download and loading progress in the Zed agent config panel
141
+ - Added an animated spinner during model switching
142
+ - Added Qwen 2.5 Coder 7B
143
+ - Added downloadable models to the picker, not just locally cached ones
144
+ - Made model selection persist across restarts
145
+ - Added session working-directory support
146
+ - Moved model picker logic into a platform-independent module so Windows can compile without the TUI
147
+ - Added the `/models N` shortcut for picking a model by number
148
+ - Added the `read_website` tool
149
+ - Improved `read_file` handling and empty-reply detection
150
+ - Added async tool execution
151
+ - Fixed CI cross-compilation for macOS, iOS, Linux, and Windows
152
+ - Added npm, PyPI, and Homebrew distribution
153
+
154
+ ---
155
+
156
+ *© 2026 [smbCloud](https://smbcloud.xyz/) (Splitfire AB).*