sigit-code 1.5.8__tar.gz → 1.5.9__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 (96) hide show
  1. {sigit_code-1.5.8 → sigit_code-1.5.9}/.agents/skills/sigit-code-release/SKILL.md +1 -0
  2. {sigit_code-1.5.8 → sigit_code-1.5.9}/.claude/skills/sigit-code-release/SKILL.md +1 -0
  3. {sigit_code-1.5.8 → sigit_code-1.5.9}/.github/workflows/release-github.yml +36 -0
  4. {sigit_code-1.5.8 → sigit_code-1.5.9}/CHANGELOG.md +28 -0
  5. {sigit_code-1.5.8 → sigit_code-1.5.9}/Cargo.lock +1 -1
  6. {sigit_code-1.5.8 → sigit_code-1.5.9}/Cargo.toml +1 -1
  7. {sigit_code-1.5.8 → sigit_code-1.5.9}/PKG-INFO +1 -1
  8. sigit_code-1.5.9/src/inline_tool_calls.rs +882 -0
  9. {sigit_code-1.5.8 → sigit_code-1.5.9}/tests/acp_permissions.rs +80 -0
  10. sigit_code-1.5.8/src/inline_tool_calls.rs +0 -420
  11. {sigit_code-1.5.8 → sigit_code-1.5.9}/.agents/AGENTS.md +0 -0
  12. {sigit_code-1.5.8 → sigit_code-1.5.9}/.agents/skills/agent-client-protocol/SKILL.md +0 -0
  13. {sigit_code-1.5.8 → sigit_code-1.5.9}/.agents/skills/ai-assisted-coding/SKILL.md +0 -0
  14. {sigit_code-1.5.8 → sigit_code-1.5.9}/.agents/skills/branding/SKILL.md +0 -0
  15. {sigit_code-1.5.8 → sigit_code-1.5.9}/.agents/skills/run-sigit/SKILL.md +0 -0
  16. {sigit_code-1.5.8 → sigit_code-1.5.9}/.agents/skills/run-sigit/driver.mjs +0 -0
  17. {sigit_code-1.5.8 → sigit_code-1.5.9}/.agents/skills/run-sigit/tui-smoke.sh +0 -0
  18. {sigit_code-1.5.8 → sigit_code-1.5.9}/.agents/skills/tool-calling/SKILL.md +0 -0
  19. {sigit_code-1.5.8 → sigit_code-1.5.9}/.claude/skills/agent-client-protocol/SKILL.md +0 -0
  20. {sigit_code-1.5.8 → sigit_code-1.5.9}/.claude/skills/ai-assisted-coding/SKILL.md +0 -0
  21. {sigit_code-1.5.8 → sigit_code-1.5.9}/.claude/skills/branding/SKILL.md +0 -0
  22. {sigit_code-1.5.8 → sigit_code-1.5.9}/.claude/skills/run-sigit/SKILL.md +0 -0
  23. {sigit_code-1.5.8 → sigit_code-1.5.9}/.claude/skills/run-sigit/driver.mjs +0 -0
  24. {sigit_code-1.5.8 → sigit_code-1.5.9}/.claude/skills/run-sigit/tui-smoke.sh +0 -0
  25. {sigit_code-1.5.8 → sigit_code-1.5.9}/.claude/skills/tool-calling/SKILL.md +0 -0
  26. {sigit_code-1.5.8 → sigit_code-1.5.9}/.github/workflows/ci.yml +0 -0
  27. {sigit_code-1.5.8 → sigit_code-1.5.9}/.github/workflows/release-aur.yml +0 -0
  28. {sigit_code-1.5.8 → sigit_code-1.5.9}/.github/workflows/release-crates.yml +0 -0
  29. {sigit_code-1.5.8 → sigit_code-1.5.9}/.github/workflows/release-homebrew.yml +0 -0
  30. {sigit_code-1.5.8 → sigit_code-1.5.9}/.github/workflows/release-npm.yml +0 -0
  31. {sigit_code-1.5.8 → sigit_code-1.5.9}/.github/workflows/release-nuget.yml +0 -0
  32. {sigit_code-1.5.8 → sigit_code-1.5.9}/.github/workflows/release-pypi.yml +0 -0
  33. {sigit_code-1.5.8 → sigit_code-1.5.9}/.github/workflows/release-scoop.yml +0 -0
  34. {sigit_code-1.5.8 → sigit_code-1.5.9}/.github/workflows/release-winget.yml +0 -0
  35. {sigit_code-1.5.8 → sigit_code-1.5.9}/.gitignore +0 -0
  36. {sigit_code-1.5.8 → sigit_code-1.5.9}/.nvmrc +0 -0
  37. {sigit_code-1.5.8 → sigit_code-1.5.9}/AGENTS.md +0 -0
  38. {sigit_code-1.5.8 → sigit_code-1.5.9}/CLAUDE.md +0 -0
  39. {sigit_code-1.5.8 → sigit_code-1.5.9}/LICENSE +0 -0
  40. {sigit_code-1.5.8 → sigit_code-1.5.9}/README.md +0 -0
  41. {sigit_code-1.5.8 → sigit_code-1.5.9}/docs/hooks.md +0 -0
  42. {sigit_code-1.5.8 → sigit_code-1.5.9}/docs/mcp.md +0 -0
  43. {sigit_code-1.5.8 → sigit_code-1.5.9}/examples/settings-with-hooks.toml +0 -0
  44. {sigit_code-1.5.8 → sigit_code-1.5.9}/examples/skills/README.md +0 -0
  45. {sigit_code-1.5.8 → sigit_code-1.5.9}/examples/skills/commit-message/SKILL.md +0 -0
  46. {sigit_code-1.5.8 → sigit_code-1.5.9}/npm/README.md.tmpl +0 -0
  47. {sigit_code-1.5.8 → sigit_code-1.5.9}/npm/package-compat.json.tmpl +0 -0
  48. {sigit_code-1.5.8 → sigit_code-1.5.9}/npm/package-main.json.tmpl +0 -0
  49. {sigit_code-1.5.8 → sigit_code-1.5.9}/npm/package.json.tmpl +0 -0
  50. {sigit_code-1.5.8 → sigit_code-1.5.9}/npm/scripts/render-main-package.cjs +0 -0
  51. {sigit_code-1.5.8 → sigit_code-1.5.9}/npm/scripts/render-platform-package.cjs +0 -0
  52. {sigit_code-1.5.8 → sigit_code-1.5.9}/npm/sigit/.gitignore +0 -0
  53. {sigit_code-1.5.8 → sigit_code-1.5.9}/npm/sigit/README.md +0 -0
  54. {sigit_code-1.5.8 → sigit_code-1.5.9}/npm/sigit/package.json +0 -0
  55. {sigit_code-1.5.8 → sigit_code-1.5.9}/npm/sigit/src/index.ts +0 -0
  56. {sigit_code-1.5.8 → sigit_code-1.5.9}/npm/sigit/tsconfig.json +0 -0
  57. {sigit_code-1.5.8 → sigit_code-1.5.9}/nuget/.gitignore +0 -0
  58. {sigit_code-1.5.8 → sigit_code-1.5.9}/nuget/sigit/Program.cs +0 -0
  59. {sigit_code-1.5.8 → sigit_code-1.5.9}/nuget/sigit/README.md +0 -0
  60. {sigit_code-1.5.8 → sigit_code-1.5.9}/nuget/sigit/SiGit.Code.csproj +0 -0
  61. {sigit_code-1.5.8 → sigit_code-1.5.9}/packaging/aur/PKGBUILD.in +0 -0
  62. {sigit_code-1.5.8 → sigit_code-1.5.9}/packaging/nfpm.yaml +0 -0
  63. {sigit_code-1.5.8 → sigit_code-1.5.9}/packaging/winget/getSigit.siGitCode.installer.yaml.in +0 -0
  64. {sigit_code-1.5.8 → sigit_code-1.5.9}/packaging/winget/getSigit.siGitCode.locale.en-US.yaml.in +0 -0
  65. {sigit_code-1.5.8 → sigit_code-1.5.9}/packaging/winget/getSigit.siGitCode.yaml.in +0 -0
  66. {sigit_code-1.5.8 → sigit_code-1.5.9}/pypi/README.md +0 -0
  67. {sigit_code-1.5.8 → sigit_code-1.5.9}/pypi/pyproject.toml +0 -0
  68. {sigit_code-1.5.8 → sigit_code-1.5.9}/pyproject.toml +0 -0
  69. {sigit_code-1.5.8 → sigit_code-1.5.9}/rust-toolchain.toml +0 -0
  70. {sigit_code-1.5.8 → sigit_code-1.5.9}/src/account.rs +0 -0
  71. {sigit_code-1.5.8 → sigit_code-1.5.9}/src/backend.rs +0 -0
  72. {sigit_code-1.5.8 → sigit_code-1.5.9}/src/browser_auth.rs +0 -0
  73. {sigit_code-1.5.8 → sigit_code-1.5.9}/src/chat.rs +0 -0
  74. {sigit_code-1.5.8 → sigit_code-1.5.9}/src/commands.rs +0 -0
  75. {sigit_code-1.5.8 → sigit_code-1.5.9}/src/credentials.rs +0 -0
  76. {sigit_code-1.5.8 → sigit_code-1.5.9}/src/frontmatter.rs +0 -0
  77. {sigit_code-1.5.8 → sigit_code-1.5.9}/src/headless.rs +0 -0
  78. {sigit_code-1.5.8 → sigit_code-1.5.9}/src/hooks.rs +0 -0
  79. {sigit_code-1.5.8 → sigit_code-1.5.9}/src/instructions.rs +0 -0
  80. {sigit_code-1.5.8 → sigit_code-1.5.9}/src/main.rs +0 -0
  81. {sigit_code-1.5.8 → sigit_code-1.5.9}/src/mcp.rs +0 -0
  82. {sigit_code-1.5.8 → sigit_code-1.5.9}/src/models.rs +0 -0
  83. {sigit_code-1.5.8 → sigit_code-1.5.9}/src/permissions.rs +0 -0
  84. {sigit_code-1.5.8 → sigit_code-1.5.9}/src/provider.rs +0 -0
  85. {sigit_code-1.5.8 → sigit_code-1.5.9}/src/session_store.rs +0 -0
  86. {sigit_code-1.5.8 → sigit_code-1.5.9}/src/settings.rs +0 -0
  87. {sigit_code-1.5.8 → sigit_code-1.5.9}/src/setup.rs +0 -0
  88. {sigit_code-1.5.8 → sigit_code-1.5.9}/src/skills.rs +0 -0
  89. {sigit_code-1.5.8 → sigit_code-1.5.9}/src/subagents.rs +0 -0
  90. {sigit_code-1.5.8 → sigit_code-1.5.9}/src/tools.rs +0 -0
  91. {sigit_code-1.5.8 → sigit_code-1.5.9}/src/workspace.rs +0 -0
  92. {sigit_code-1.5.8 → sigit_code-1.5.9}/tests/acp_endpoint_errors.rs +0 -0
  93. {sigit_code-1.5.8 → sigit_code-1.5.9}/tests/acp_multi_root.rs +0 -0
  94. {sigit_code-1.5.8 → sigit_code-1.5.9}/tests/acp_session_load.rs +0 -0
  95. {sigit_code-1.5.8 → sigit_code-1.5.9}/tests/acp_tool_stdin.rs +0 -0
  96. {sigit_code-1.5.8 → sigit_code-1.5.9}/tests/headless_mode.rs +0 -0
@@ -35,6 +35,7 @@ Use this skill when preparing a release for this repository.
35
35
  - The crate is published to crates.io (`release-crates.yml`) and the Homebrew tap is updated (`release-homebrew.yml`) as part of the tag-driven flow. Per the siGit release flow, Homebrew is auto-triggered — do not dispatch it manually.
36
36
  - `release-github.yml` builds the binaries, attaches them (plus a `.deb`/`.rpm` per Linux target built with nfpm from `packaging/nfpm.yaml`) to the GitHub release, then dispatches `release-homebrew`, `release-scoop`, `release-winget`, and `release-aur`. A dispatch failure in any one of those four is logged as a warning, not a hard failure — an unconfigured channel doesn't block the rest of the release. `release-nuget.yml` and `release-mcp-registry.yml`, by contrast, are tag-triggered directly like the other language-registry workflows, not dispatched from `release-github.yml`.
37
37
  - Every release asset carries a `.sha256` sidecar (not just the macOS Homebrew tarball). Scoop, winget, and the AUR PKGBUILD each consume the raw binaries plus their sidecar checksum, rather than the tarball.
38
+ - The GitHub release body is generated, not hand-written: `release-github.yml`'s release job checks out the tag, awk-extracts the `## <version>` section from `CHANGELOG.md` (a missing section is a hard failure), appends a full-changelog link and a `sigit.si/code` footnote, and publishes it via `body_path: release_notes.md`. The only file a release-prep change needs to touch is `CHANGELOG.md` — never edit release notes in the GitHub UI, because the next tag push would overwrite them.
38
39
  - npm and NuGet publish via OIDC trusted publishing — neither has a stored token in the repo. On npm this is configured per package (each `@getsigit/*` name has a trusted publisher pointing at `release-npm.yml`), so a new package needs the same setup before its first publish will work. OIDC requires npm >= 11.5.1 and Node >= 22.14.0.
39
40
  - The NuGet package (`SiGit.Code`, `dotnet tool install --global SiGit.Code`) bundles all six platform binaries under `native/<os>-<arch>/` behind a managed shim, rather than shipping one package per platform like npm/PyPI. Watch the nuget.org 250 MB package-size limit if it ever grows.
40
41
  - The baked-in official MCP server is separately listed in the public MCP Registry as `si.sigit/sigit` (`release-mcp-registry.yml`, driven by `server.json` at the repo root). It's a remote Streamable-HTTP listing, so it's verified by a DNS TXT record on the `sigit.si` domain rather than the GitHub-OIDC scheme used for package listings.
@@ -35,6 +35,7 @@ Use this skill when preparing a release for this repository.
35
35
  - The crate is published to crates.io (`release-crates.yml`) and the Homebrew tap is updated (`release-homebrew.yml`) as part of the tag-driven flow. Per the siGit release flow, Homebrew is auto-triggered — do not dispatch it manually.
36
36
  - `release-github.yml` builds the binaries, attaches them (plus a `.deb`/`.rpm` per Linux target built with nfpm from `packaging/nfpm.yaml`) to the GitHub release, then dispatches `release-homebrew`, `release-scoop`, `release-winget`, and `release-aur`. A dispatch failure in any one of those four is logged as a warning, not a hard failure — an unconfigured channel doesn't block the rest of the release. `release-nuget.yml` and `release-mcp-registry.yml`, by contrast, are tag-triggered directly like the other language-registry workflows, not dispatched from `release-github.yml`.
37
37
  - Every release asset carries a `.sha256` sidecar (not just the macOS Homebrew tarball). Scoop, winget, and the AUR PKGBUILD each consume the raw binaries plus their sidecar checksum, rather than the tarball.
38
+ - The GitHub release body is generated, not hand-written: `release-github.yml`'s release job checks out the tag, awk-extracts the `## <version>` section from `CHANGELOG.md` (a missing section is a hard failure), appends a full-changelog link and a `sigit.si/code` footnote, and publishes it via `body_path: release_notes.md`. The only file a release-prep change needs to touch is `CHANGELOG.md` — never edit release notes in the GitHub UI, because the next tag push would overwrite them.
38
39
  - npm and NuGet publish via OIDC trusted publishing — neither has a stored token in the repo. On npm this is configured per package (each `@getsigit/*` name has a trusted publisher pointing at `release-npm.yml`), so a new package needs the same setup before its first publish will work. OIDC requires npm >= 11.5.1 and Node >= 22.14.0.
39
40
  - The NuGet package (`SiGit.Code`, `dotnet tool install --global SiGit.Code`) bundles all six platform binaries under `native/<os>-<arch>/` behind a managed shim, rather than shipping one package per platform like npm/PyPI. Watch the nuget.org 250 MB package-size limit if it ever grows.
40
41
  - The baked-in official MCP server is separately listed in the public MCP Registry as `si.sigit/sigit` (`release-mcp-registry.yml`, driven by `server.json` at the repo root). It's a remote Streamable-HTTP listing, so it's verified by a DNS TXT record on the `sigit.si` domain rather than the GitHub-OIDC scheme used for package listings.
@@ -240,6 +240,41 @@ jobs:
240
240
  echo "tag=${{ github.ref_name }}" >> "$GITHUB_OUTPUT"
241
241
  fi
242
242
 
243
+ - name: Checkout tag
244
+ # The release job otherwise only downloads artifacts; the changelog
245
+ # has to be read from the tree at the tag being released.
246
+ uses: actions/checkout@v6
247
+ with:
248
+ ref: ${{ steps.tag.outputs.tag }}
249
+
250
+ - name: Compose release notes
251
+ # The release page carries the section of CHANGELOG.md for this
252
+ # version, not a bare "Full changelog" default. A missing section is
253
+ # a hard failure: publishing a release whose notes don't match its
254
+ # changelog is worse than stopping the job.
255
+ shell: bash
256
+ run: |
257
+ version="${{ steps.tag.outputs.tag }}"
258
+ version="${version#v}"
259
+ section="$(awk -v ver="${version}" '
260
+ $0 == "## " ver { found = 1; next }
261
+ found && /^## / { exit }
262
+ found { print }
263
+ ' CHANGELOG.md)"
264
+ if [ -z "${section//[$' \t\n']/}" ]; then
265
+ echo "No ## ${version} section found in CHANGELOG.md" >&2
266
+ exit 1
267
+ fi
268
+ {
269
+ printf '%s\n' "${section}"
270
+ printf '\n---\n\n'
271
+ printf 'Full changelog: https://github.com/%s/blob/%s/CHANGELOG.md\n' \
272
+ "${GITHUB_REPOSITORY}" "${{ steps.tag.outputs.tag }}"
273
+ printf '\n---\n\n'
274
+ printf 'About siGit Code: [sigit.si/code](https://sigit.si/code)\n'
275
+ } > release_notes.md
276
+ cat release_notes.md
277
+
243
278
  - name: Download binary artifacts
244
279
  uses: actions/download-artifact@v4
245
280
  with:
@@ -258,6 +293,7 @@ jobs:
258
293
  uses: softprops/action-gh-release@v2
259
294
  with:
260
295
  tag_name: ${{ steps.tag.outputs.tag }}
296
+ body_path: release_notes.md
261
297
  files: release/*
262
298
 
263
299
  # These channels all publish somewhere outside this repo (a tap, a Scoop
@@ -1,5 +1,33 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.5.9
4
+
5
+ ### Fixed
6
+
7
+ - **Kimi K3 tool calls no longer arrive as raw protocol text.** Kimi K3 renders
8
+ a call in Moonshot's XTML protocol — pipe-delimited open/sep/close tokens
9
+ wrapping named blocks — and when the serving stack doesn't parse that back
10
+ into structured tool calls, the whole block surfaced in the editor as literal
11
+ text and the turn ended as though the model had answered in prose. The
12
+ inline-call recovery now speaks that protocol alongside the legacy XML tags:
13
+ tools blocks are parsed into real calls (several per block, argument values
14
+ decoded and typed from the block's own type attribute or, when it is
15
+ missing, the turn's tool schemas), response blocks are unwrapped so their
16
+ text still renders, and think blocks are dropped as private reasoning rather
17
+ than shown. The streaming scanner watches all the opening markers, so a
18
+ block split across chunk boundaries still recovers
19
+ - **GLM's mis-tagged calls recover too.** GLM sometimes precedes the legacy
20
+ block's first argument key with another tool-call opening tag instead of the
21
+ arg-key opening tag the format calls for, and the recovery rejected the
22
+ whole block when it did — the call surfaced as text and whatever it was
23
+ trying to do was dropped. The parser now accepts that alias for the first
24
+ argument only — later arguments stay strict, so text that merely resembles a
25
+ call cannot be recovered as one — in both the whole-blob and streaming
26
+ paths, and the scanner tolerates the malformed marker split across chunk
27
+ boundaries. Recovery in both protocols also checks the call's name against
28
+ the tools actually offered in the turn: a tag naming a tool that was never
29
+ in the turn's spec stays on screen instead of being executed
30
+
3
31
  ## 1.5.8
4
32
 
5
33
  ### What changed
@@ -5778,7 +5778,7 @@ checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba"
5778
5778
 
5779
5779
  [[package]]
5780
5780
  name = "sigit"
5781
- version = "1.5.8"
5781
+ version = "1.5.9"
5782
5782
  dependencies = [
5783
5783
  "agent-client-protocol",
5784
5784
  "anyhow",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "sigit"
3
- version = "1.5.8"
3
+ version = "1.5.9"
4
4
  edition = "2024"
5
5
  description = "siGit Code — ACP-compatible AI coding agent. Sí, git."
6
6
  documentation = "https://github.com/getsigit/sigit"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sigit-code
3
- Version: 1.5.8
3
+ Version: 1.5.9
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Environment :: Console
6
6
  Classifier: Intended Audience :: Developers