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.
- {sigit_code-1.5.8 → sigit_code-1.5.9}/.agents/skills/sigit-code-release/SKILL.md +1 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/.claude/skills/sigit-code-release/SKILL.md +1 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/.github/workflows/release-github.yml +36 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/CHANGELOG.md +28 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/Cargo.lock +1 -1
- {sigit_code-1.5.8 → sigit_code-1.5.9}/Cargo.toml +1 -1
- {sigit_code-1.5.8 → sigit_code-1.5.9}/PKG-INFO +1 -1
- sigit_code-1.5.9/src/inline_tool_calls.rs +882 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/tests/acp_permissions.rs +80 -0
- sigit_code-1.5.8/src/inline_tool_calls.rs +0 -420
- {sigit_code-1.5.8 → sigit_code-1.5.9}/.agents/AGENTS.md +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/.agents/skills/agent-client-protocol/SKILL.md +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/.agents/skills/ai-assisted-coding/SKILL.md +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/.agents/skills/branding/SKILL.md +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/.agents/skills/run-sigit/SKILL.md +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/.agents/skills/run-sigit/driver.mjs +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/.agents/skills/run-sigit/tui-smoke.sh +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/.agents/skills/tool-calling/SKILL.md +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/.claude/skills/agent-client-protocol/SKILL.md +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/.claude/skills/ai-assisted-coding/SKILL.md +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/.claude/skills/branding/SKILL.md +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/.claude/skills/run-sigit/SKILL.md +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/.claude/skills/run-sigit/driver.mjs +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/.claude/skills/run-sigit/tui-smoke.sh +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/.claude/skills/tool-calling/SKILL.md +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/.github/workflows/ci.yml +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/.github/workflows/release-aur.yml +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/.github/workflows/release-crates.yml +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/.github/workflows/release-homebrew.yml +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/.github/workflows/release-npm.yml +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/.github/workflows/release-nuget.yml +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/.github/workflows/release-pypi.yml +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/.github/workflows/release-scoop.yml +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/.github/workflows/release-winget.yml +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/.gitignore +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/.nvmrc +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/AGENTS.md +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/CLAUDE.md +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/LICENSE +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/README.md +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/docs/hooks.md +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/docs/mcp.md +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/examples/settings-with-hooks.toml +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/examples/skills/README.md +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/examples/skills/commit-message/SKILL.md +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/npm/README.md.tmpl +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/npm/package-compat.json.tmpl +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/npm/package-main.json.tmpl +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/npm/package.json.tmpl +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/npm/scripts/render-main-package.cjs +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/npm/scripts/render-platform-package.cjs +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/npm/sigit/.gitignore +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/npm/sigit/README.md +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/npm/sigit/package.json +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/npm/sigit/src/index.ts +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/npm/sigit/tsconfig.json +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/nuget/.gitignore +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/nuget/sigit/Program.cs +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/nuget/sigit/README.md +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/nuget/sigit/SiGit.Code.csproj +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/packaging/aur/PKGBUILD.in +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/packaging/nfpm.yaml +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/packaging/winget/getSigit.siGitCode.installer.yaml.in +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/packaging/winget/getSigit.siGitCode.locale.en-US.yaml.in +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/packaging/winget/getSigit.siGitCode.yaml.in +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/pypi/README.md +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/pypi/pyproject.toml +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/pyproject.toml +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/rust-toolchain.toml +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/src/account.rs +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/src/backend.rs +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/src/browser_auth.rs +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/src/chat.rs +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/src/commands.rs +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/src/credentials.rs +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/src/frontmatter.rs +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/src/headless.rs +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/src/hooks.rs +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/src/instructions.rs +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/src/main.rs +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/src/mcp.rs +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/src/models.rs +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/src/permissions.rs +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/src/provider.rs +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/src/session_store.rs +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/src/settings.rs +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/src/setup.rs +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/src/skills.rs +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/src/subagents.rs +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/src/tools.rs +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/src/workspace.rs +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/tests/acp_endpoint_errors.rs +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/tests/acp_multi_root.rs +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/tests/acp_session_load.rs +0 -0
- {sigit_code-1.5.8 → sigit_code-1.5.9}/tests/acp_tool_stdin.rs +0 -0
- {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
|