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.
Files changed (52) hide show
  1. {sigit_code-1.2.2 → sigit_code-1.3.0}/CHANGELOG.md +17 -0
  2. {sigit_code-1.2.2 → sigit_code-1.3.0}/CLAUDE.md +18 -3
  3. {sigit_code-1.2.2 → sigit_code-1.3.0}/Cargo.lock +8 -18
  4. {sigit_code-1.2.2 → sigit_code-1.3.0}/Cargo.toml +2 -2
  5. {sigit_code-1.2.2 → sigit_code-1.3.0}/PKG-INFO +1 -1
  6. sigit_code-1.3.0/examples/skills/README.md +36 -0
  7. sigit_code-1.3.0/examples/skills/commit-message/SKILL.md +44 -0
  8. {sigit_code-1.2.2 → sigit_code-1.3.0}/src/chat.rs +297 -80
  9. {sigit_code-1.2.2 → sigit_code-1.3.0}/src/credentials.rs +3 -0
  10. sigit_code-1.3.0/src/instructions.rs +241 -0
  11. {sigit_code-1.2.2 → sigit_code-1.3.0}/src/main.rs +361 -111
  12. {sigit_code-1.2.2 → sigit_code-1.3.0}/src/models.rs +35 -2
  13. sigit_code-1.3.0/src/settings.rs +153 -0
  14. sigit_code-1.3.0/src/skills.rs +613 -0
  15. {sigit_code-1.2.2 → sigit_code-1.3.0}/src/tools.rs +1 -0
  16. {sigit_code-1.2.2 → sigit_code-1.3.0}/.agents/AGENTS.md +0 -0
  17. {sigit_code-1.2.2 → sigit_code-1.3.0}/.agents/skills/agent-client-protocol/SKILL.md +0 -0
  18. {sigit_code-1.2.2 → sigit_code-1.3.0}/.agents/skills/ai-assisted-coding/SKILL.md +0 -0
  19. {sigit_code-1.2.2 → sigit_code-1.3.0}/.agents/skills/branding/SKILL.md +0 -0
  20. {sigit_code-1.2.2 → sigit_code-1.3.0}/.agents/skills/sigit-code-release/SKILL.md +0 -0
  21. {sigit_code-1.2.2 → sigit_code-1.3.0}/.agents/skills/tool-calling/SKILL.md +0 -0
  22. {sigit_code-1.2.2 → sigit_code-1.3.0}/.claude/skills/run-sigit/SKILL.md +0 -0
  23. {sigit_code-1.2.2 → sigit_code-1.3.0}/.claude/skills/run-sigit/driver.mjs +0 -0
  24. {sigit_code-1.2.2 → sigit_code-1.3.0}/.claude/skills/run-sigit/tui-smoke.sh +0 -0
  25. {sigit_code-1.2.2 → sigit_code-1.3.0}/.github/workflows/ci.yml +0 -0
  26. {sigit_code-1.2.2 → sigit_code-1.3.0}/.github/workflows/release-crates.yml +0 -0
  27. {sigit_code-1.2.2 → sigit_code-1.3.0}/.github/workflows/release-github.yml +0 -0
  28. {sigit_code-1.2.2 → sigit_code-1.3.0}/.github/workflows/release-homebrew.yml +0 -0
  29. {sigit_code-1.2.2 → sigit_code-1.3.0}/.github/workflows/release-npm.yml +0 -0
  30. {sigit_code-1.2.2 → sigit_code-1.3.0}/.github/workflows/release-pypi.yml +0 -0
  31. {sigit_code-1.2.2 → sigit_code-1.3.0}/.gitignore +0 -0
  32. {sigit_code-1.2.2 → sigit_code-1.3.0}/.nvmrc +0 -0
  33. {sigit_code-1.2.2 → sigit_code-1.3.0}/LICENSE +0 -0
  34. {sigit_code-1.2.2 → sigit_code-1.3.0}/README.md +0 -0
  35. {sigit_code-1.2.2 → sigit_code-1.3.0}/npm/README.md.tmpl +0 -0
  36. {sigit_code-1.2.2 → sigit_code-1.3.0}/npm/package-main.json.tmpl +0 -0
  37. {sigit_code-1.2.2 → sigit_code-1.3.0}/npm/package.json.tmpl +0 -0
  38. {sigit_code-1.2.2 → sigit_code-1.3.0}/npm/scripts/render-main-package.cjs +0 -0
  39. {sigit_code-1.2.2 → sigit_code-1.3.0}/npm/scripts/render-platform-package.cjs +0 -0
  40. {sigit_code-1.2.2 → sigit_code-1.3.0}/npm/sigit/.gitignore +0 -0
  41. {sigit_code-1.2.2 → sigit_code-1.3.0}/npm/sigit/README.md +0 -0
  42. {sigit_code-1.2.2 → sigit_code-1.3.0}/npm/sigit/package.json +0 -0
  43. {sigit_code-1.2.2 → sigit_code-1.3.0}/npm/sigit/src/index.ts +0 -0
  44. {sigit_code-1.2.2 → sigit_code-1.3.0}/npm/sigit/tsconfig.json +0 -0
  45. {sigit_code-1.2.2 → sigit_code-1.3.0}/pypi/README.md +0 -0
  46. {sigit_code-1.2.2 → sigit_code-1.3.0}/pypi/pyproject.toml +0 -0
  47. {sigit_code-1.2.2 → sigit_code-1.3.0}/pyproject.toml +0 -0
  48. {sigit_code-1.2.2 → sigit_code-1.3.0}/rust-toolchain.toml +0 -0
  49. {sigit_code-1.2.2 → sigit_code-1.3.0}/src/account.rs +0 -0
  50. {sigit_code-1.2.2 → sigit_code-1.3.0}/src/backend.rs +0 -0
  51. {sigit_code-1.2.2 → sigit_code-1.3.0}/src/provider.rs +0 -0
  52. {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`, `/clear`,
78
- `/status`) are advertised via `advertise_commands` in `main.rs` and handled in both the TUI and
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.13.0"
23
+ version = "1.0.1"
24
24
  source = "registry+https://github.com/rust-lang/crates.io-index"
25
- checksum = "e037424fa2da7aea1363b42e0c792d117b4d0ceb9d6d6f58719ce7520c22eabf"
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.11.1"
45
+ version = "1.0.1"
46
46
  source = "registry+https://github.com/rust-lang/crates.io-index"
47
- checksum = "cabdc9d845d08ec7ed2d0c9de1ae4a1b198301407d55855261572761be90ec9f"
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 = "0.13.4"
55
+ version = "1.1.0"
56
56
  source = "registry+https://github.com/rust-lang/crates.io-index"
57
- checksum = "8dd79d476e25d8562d46b368eb5fc629edd3dd6be75e6b036606e6f4f867e7e7"
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.2.2"
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.2.2"
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.13", features = ["unstable_session_fork", "unstable_session_additional_directories", "unstable_auth_methods"] }
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" }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sigit-code
3
- Version: 1.2.2
3
+ Version: 1.3.0
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Environment :: Console
6
6
  Classifier: Intended Audience :: Developers
@@ -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
+ ```