sigit-code 1.2.2__tar.gz → 1.3.0__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.
- {sigit_code-1.2.2 → sigit_code-1.3.0}/CHANGELOG.md +17 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/CLAUDE.md +18 -3
- {sigit_code-1.2.2 → sigit_code-1.3.0}/Cargo.lock +8 -18
- {sigit_code-1.2.2 → sigit_code-1.3.0}/Cargo.toml +2 -2
- {sigit_code-1.2.2 → sigit_code-1.3.0}/PKG-INFO +1 -1
- sigit_code-1.3.0/examples/skills/README.md +36 -0
- sigit_code-1.3.0/examples/skills/commit-message/SKILL.md +44 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/src/chat.rs +297 -80
- {sigit_code-1.2.2 → sigit_code-1.3.0}/src/credentials.rs +3 -0
- sigit_code-1.3.0/src/instructions.rs +241 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/src/main.rs +361 -111
- {sigit_code-1.2.2 → sigit_code-1.3.0}/src/models.rs +35 -2
- sigit_code-1.3.0/src/settings.rs +153 -0
- sigit_code-1.3.0/src/skills.rs +613 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/src/tools.rs +1 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/.agents/AGENTS.md +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/.agents/skills/agent-client-protocol/SKILL.md +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/.agents/skills/ai-assisted-coding/SKILL.md +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/.agents/skills/branding/SKILL.md +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/.agents/skills/sigit-code-release/SKILL.md +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/.agents/skills/tool-calling/SKILL.md +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/.claude/skills/run-sigit/SKILL.md +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/.claude/skills/run-sigit/driver.mjs +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/.claude/skills/run-sigit/tui-smoke.sh +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/.github/workflows/ci.yml +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/.github/workflows/release-crates.yml +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/.github/workflows/release-github.yml +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/.github/workflows/release-homebrew.yml +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/.github/workflows/release-npm.yml +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/.github/workflows/release-pypi.yml +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/.gitignore +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/.nvmrc +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/LICENSE +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/README.md +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/npm/README.md.tmpl +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/npm/package-main.json.tmpl +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/npm/package.json.tmpl +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/npm/scripts/render-main-package.cjs +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/npm/scripts/render-platform-package.cjs +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/npm/sigit/.gitignore +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/npm/sigit/README.md +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/npm/sigit/package.json +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/npm/sigit/src/index.ts +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/npm/sigit/tsconfig.json +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/pypi/README.md +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/pypi/pyproject.toml +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/pyproject.toml +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/rust-toolchain.toml +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/src/account.rs +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/src/backend.rs +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/src/provider.rs +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.0}/src/setup.rs +0 -0
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.3.0
|
|
4
|
+
|
|
5
|
+
Adds a Local Inference on/off toggle, the open [Agent Skills](https://agentskills.io)
|
|
6
|
+
format, and support for project instruction files (`AGENTS.md` and the like).
|
|
7
|
+
|
|
8
|
+
### What changed
|
|
9
|
+
|
|
10
|
+
- Added a Local Inference on/off setting that is the explicit local-vs-cloud mode switch. It is persisted in `~/.config/sigit/settings.toml` (default on, local-first) and can be overridden with `SIGIT_LOCAL_INFERENCE`
|
|
11
|
+
- Toggle it with the `/local [on|off]` command (TUI and ACP); ACP clients without slash-command support get an equivalent "Local Inference" On/Off control in the session config panel
|
|
12
|
+
- `/models` now groups models by nature — Local vs siGit Code Cloud — and highlights the active mode's group while still showing the other, so the cloud tiers stay discoverable
|
|
13
|
+
- Discovers Agent Skills (folders with a `SKILL.md`) from `.sigit/skills/` and `.claude/skills/` in the project, `~/.config/sigit/skills/`, and `~/.claude/skills/`
|
|
14
|
+
- Follows the spec's progressive disclosure: each skill's name and description are advertised up front via a new `skill` tool, and the full instructions load only when the agent activates one
|
|
15
|
+
- Added a `/skills` slash command (TUI and ACP) that lists the discovered skills
|
|
16
|
+
- Reads project instruction files at session start: `AGENTS.md` (the cross-tool standard) and `CLAUDE.md`, walking from the working directory up to the repository root, plus a global file under `~/.config/sigit/`, and injects them into the session's system context so their guidance is always in force
|
|
17
|
+
- Nested instruction files are ordered outermost-first so the closest, most specific file takes precedence; the scan never reads above the repository root
|
|
18
|
+
- On-device models are no longer loaded implicitly. The chat UI and ACP sessions come up immediately, and the local model is brought into memory only when you run the `/load` command (or pick one in `/models`). Prompts sent before a model is loaded now return a hint instead of blocking on a multi-minute download.
|
|
19
|
+
|
|
3
20
|
## 1.2.2
|
|
4
21
|
|
|
5
22
|
Streams assistant tokens as they arrive, on-device and over the cloud.
|
|
@@ -64,6 +64,21 @@ feeds results back. Neither the loop nor ACP/TUI surfaces depend on a concrete b
|
|
|
64
64
|
- **`src/tools.rs`** — agent tool schemas + execution: `read_file`, `create_directory`,
|
|
65
65
|
`list_directory`, `search_files`, `read_website`, `create_file`, `edit_file`, `delete_file`,
|
|
66
66
|
`run_command`. Add a tool in both the spec list and the execute `match`.
|
|
67
|
+
- **`src/skills.rs`** — [Agent Skills](https://agentskills.io) support. Discovers skill
|
|
68
|
+
folders (each with a `SKILL.md`: YAML frontmatter `name` + `description`, then Markdown
|
|
69
|
+
instructions) from `.sigit/skills/` and `.claude/skills/` in the cwd, `$SIGIT_CONFIG_DIR/skills/`,
|
|
70
|
+
and `~/.claude/skills/`. Progressive disclosure: the discovery list (name + description) is
|
|
71
|
+
baked into the dynamically-built `skill` tool's description, and activating a skill (the model
|
|
72
|
+
calls `skill` with a name) loads the full `SKILL.md` body. The `skill` tool is appended in the
|
|
73
|
+
`*_as_specs`/`build_tool_specs` layer (not in `all_tools()`) so its description can be dynamic,
|
|
74
|
+
and only when at least one skill exists.
|
|
75
|
+
- **`src/instructions.rs`** — project instruction files, the always-on counterpart to skills.
|
|
76
|
+
Reads `AGENTS.md` (the cross-tool [agents.md](https://agents.md) standard) and `CLAUDE.md`,
|
|
77
|
+
walking from the session cwd up to the repo root (nearest ancestor with `.git`, never above it),
|
|
78
|
+
plus a global file under `$SIGIT_CONFIG_DIR`. Files are ordered outermost-first so the deepest
|
|
79
|
+
(most specific) wins. The combined block is injected via `session_context_message` in `main.rs`
|
|
80
|
+
— pushed as a system message at every ACP session entry point (new/load/fork + model switch)
|
|
81
|
+
and appended to the system prompt on the cloud and TUI-startup paths.
|
|
67
82
|
- **`src/chat.rs`** — the Unix-only ratatui TUI. Loading-spinner phase then chat; uses
|
|
68
83
|
`tokio::select!` to multiplex terminal events with streaming tokens.
|
|
69
84
|
- **`src/setup.rs`** — model cache location, local model discovery, selected-model persistence.
|
|
@@ -74,9 +89,9 @@ feeds results back. Neither the loop nor ACP/TUI surfaces depend on a concrete b
|
|
|
74
89
|
- **`src/credentials.rs`** — local session-token store (TOML, `0600` on Unix).
|
|
75
90
|
- **`src/models.rs`** — model-picker types shared across platforms.
|
|
76
91
|
|
|
77
|
-
Slash commands (`/help`, `/models`, `/login`, `/logout`, `/whoami`, `/reload`,
|
|
78
|
-
`/status`) are advertised via `advertise_commands` in `main.rs` and handled in both the
|
|
79
|
-
ACP sessions.
|
|
92
|
+
Slash commands (`/help`, `/models`, `/skills`, `/login`, `/logout`, `/whoami`, `/reload`,
|
|
93
|
+
`/clear`, `/status`) are advertised via `advertise_commands` in `main.rs` and handled in both the
|
|
94
|
+
TUI and ACP sessions.
|
|
80
95
|
|
|
81
96
|
## Model cache (macOS)
|
|
82
97
|
|
|
@@ -20,9 +20,9 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
|
|
|
20
20
|
|
|
21
21
|
[[package]]
|
|
22
22
|
name = "agent-client-protocol"
|
|
23
|
-
version = "0.
|
|
23
|
+
version = "1.0.1"
|
|
24
24
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
25
|
-
checksum = "
|
|
25
|
+
checksum = "16302d16c7531355db16593d99c38c8297db0c4653aa7dd80c3556bb17f4cd8c"
|
|
26
26
|
dependencies = [
|
|
27
27
|
"agent-client-protocol-derive",
|
|
28
28
|
"agent-client-protocol-schema",
|
|
@@ -30,7 +30,6 @@ dependencies = [
|
|
|
30
30
|
"blocking",
|
|
31
31
|
"futures",
|
|
32
32
|
"futures-concurrency",
|
|
33
|
-
"jsonrpcmsg",
|
|
34
33
|
"rustc-hash 2.1.2",
|
|
35
34
|
"schemars 1.2.1",
|
|
36
35
|
"serde",
|
|
@@ -38,13 +37,14 @@ dependencies = [
|
|
|
38
37
|
"shell-words",
|
|
39
38
|
"tracing",
|
|
40
39
|
"uuid 1.23.3",
|
|
40
|
+
"windows-sys 0.61.2",
|
|
41
41
|
]
|
|
42
42
|
|
|
43
43
|
[[package]]
|
|
44
44
|
name = "agent-client-protocol-derive"
|
|
45
|
-
version = "0.
|
|
45
|
+
version = "1.0.1"
|
|
46
46
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
47
|
-
checksum = "
|
|
47
|
+
checksum = "88b37d552feb6981a0109febda6b71fc723678cd065974c2d76279c19c407095"
|
|
48
48
|
dependencies = [
|
|
49
49
|
"quote",
|
|
50
50
|
"syn 2.0.117",
|
|
@@ -52,9 +52,9 @@ dependencies = [
|
|
|
52
52
|
|
|
53
53
|
[[package]]
|
|
54
54
|
name = "agent-client-protocol-schema"
|
|
55
|
-
version = "
|
|
55
|
+
version = "1.1.0"
|
|
56
56
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
57
|
-
checksum = "
|
|
57
|
+
checksum = "ac542aba230234b1591ace7286a47c0514fe3efc3037d43296bde31ba7ee5728"
|
|
58
58
|
dependencies = [
|
|
59
59
|
"anyhow",
|
|
60
60
|
"derive_more",
|
|
@@ -2879,16 +2879,6 @@ dependencies = [
|
|
|
2879
2879
|
"wasm-bindgen",
|
|
2880
2880
|
]
|
|
2881
2881
|
|
|
2882
|
-
[[package]]
|
|
2883
|
-
name = "jsonrpcmsg"
|
|
2884
|
-
version = "0.1.2"
|
|
2885
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2886
|
-
checksum = "6d833a15225c779251e13929203518c2ff26e2fe0f322d584b213f4f4dad37bd"
|
|
2887
|
-
dependencies = [
|
|
2888
|
-
"serde",
|
|
2889
|
-
"serde_json",
|
|
2890
|
-
]
|
|
2891
|
-
|
|
2892
2882
|
[[package]]
|
|
2893
2883
|
name = "lazy_static"
|
|
2894
2884
|
version = "1.5.0"
|
|
@@ -5210,7 +5200,7 @@ checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba"
|
|
|
5210
5200
|
|
|
5211
5201
|
[[package]]
|
|
5212
5202
|
name = "sigit"
|
|
5213
|
-
version = "1.
|
|
5203
|
+
version = "1.3.0"
|
|
5214
5204
|
dependencies = [
|
|
5215
5205
|
"agent-client-protocol",
|
|
5216
5206
|
"anyhow",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "sigit"
|
|
3
|
-
version = "1.
|
|
3
|
+
version = "1.3.0"
|
|
4
4
|
edition = "2024"
|
|
5
5
|
description = "siGit Code — ACP-compatible AI coding agent. Sí, git."
|
|
6
6
|
documentation = "https://github.com/getsigit/sigit"
|
|
@@ -18,7 +18,7 @@ path = "src/main.rs"
|
|
|
18
18
|
|
|
19
19
|
[dependencies]
|
|
20
20
|
# ACP protocol SDK
|
|
21
|
-
agent-client-protocol = { version = "0
|
|
21
|
+
agent-client-protocol = { version = "1.0", features = ["unstable_session_fork", "unstable_auth_methods"] }
|
|
22
22
|
|
|
23
23
|
# Onde Inference engine (local LLM)
|
|
24
24
|
# onde = { path = "../onde" }
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Example Agent Skills
|
|
2
|
+
|
|
3
|
+
siGit Code supports the open [Agent Skills](https://agentskills.io) format. A
|
|
4
|
+
skill is a folder containing a `SKILL.md` file — YAML frontmatter (`name` and
|
|
5
|
+
`description`, at minimum) followed by Markdown instructions. Skills can bundle
|
|
6
|
+
`scripts/`, `references/`, and `assets/` that the agent reads on demand.
|
|
7
|
+
|
|
8
|
+
## Installing a skill
|
|
9
|
+
|
|
10
|
+
Copy a skill folder into one of the directories siGit scans (in priority order):
|
|
11
|
+
|
|
12
|
+
- `.sigit/skills/` or `.claude/skills/` in your project (project-local)
|
|
13
|
+
- `~/.config/sigit/skills/` (honours `$SIGIT_CONFIG_DIR`)
|
|
14
|
+
- `~/.claude/skills/` (shared with the broader ecosystem)
|
|
15
|
+
|
|
16
|
+
For example, to install the `commit-message` skill here for the current project:
|
|
17
|
+
|
|
18
|
+
```sh
|
|
19
|
+
mkdir -p .sigit/skills
|
|
20
|
+
cp -R examples/skills/commit-message .sigit/skills/
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
The folder name must match the skill's `name` field.
|
|
24
|
+
|
|
25
|
+
## How siGit uses them
|
|
26
|
+
|
|
27
|
+
siGit follows the spec's *progressive disclosure*:
|
|
28
|
+
|
|
29
|
+
1. **Discovery** — at the start of each turn, siGit loads only each skill's
|
|
30
|
+
`name` and `description` into the `skill` tool's description.
|
|
31
|
+
2. **Activation** — when your task matches a skill, the agent calls the `skill`
|
|
32
|
+
tool with that name, which loads the full `SKILL.md` into context.
|
|
33
|
+
3. **Execution** — the agent follows the instructions, reading any bundled files
|
|
34
|
+
from the skill's directory with its normal file and command tools.
|
|
35
|
+
|
|
36
|
+
Run `/skills` to list the skills siGit can see.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: commit-message
|
|
3
|
+
description: Write a clear git commit message from staged changes. Use when the user asks to commit, write a commit message, or describe staged changes.
|
|
4
|
+
license: Apache-2.0
|
|
5
|
+
metadata:
|
|
6
|
+
author: sigit
|
|
7
|
+
version: "1.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Commit message
|
|
11
|
+
|
|
12
|
+
Write a concise, conventional commit message that describes *why* a change was
|
|
13
|
+
made, not just what changed.
|
|
14
|
+
|
|
15
|
+
## Steps
|
|
16
|
+
|
|
17
|
+
1. Inspect what is staged: run `git diff --cached` (and `git status` for context).
|
|
18
|
+
2. Group the changes into a single logical intent. If they span unrelated
|
|
19
|
+
concerns, say so and suggest splitting the commit.
|
|
20
|
+
3. Write the message:
|
|
21
|
+
- **Subject line**: imperative mood, lowercase after the type, no trailing
|
|
22
|
+
period, ≤ 50 characters. Prefix with a type when it fits the repo's
|
|
23
|
+
convention (`feat:`, `fix:`, `refactor:`, `docs:`, `test:`, `chore:`).
|
|
24
|
+
- **Body** (optional): wrap at 72 columns. Explain the motivation and any
|
|
25
|
+
non-obvious tradeoffs. Reference issues if relevant.
|
|
26
|
+
4. Show the message to the user before committing. Only run `git commit` if they
|
|
27
|
+
confirm.
|
|
28
|
+
|
|
29
|
+
## Examples
|
|
30
|
+
|
|
31
|
+
Good subject lines:
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
fix: stop the picker from reloading a working model on /reload
|
|
35
|
+
refactor: extract skill discovery into its own module
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Avoid:
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
Update files
|
|
42
|
+
fixed bug
|
|
43
|
+
WIP
|
|
44
|
+
```
|