Skip to content

acp: raw tool call tag when there's plan #97

Description

@setoelkahfi

Built from the dev branch after merging #95. This seem happened only when rendered plan. It could be a bug in how we render plan.

click me Image Image Image Image Image
thread summry

Assistant

Now wire body_path into the softprops/action-gh-release step:<tool_call>edit_file<arg_key>new_text</arg_key><arg_value> - name: Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ steps.tag.outputs.tag }}
body_path: release_notes.md
files: release/</arg_value><arg_key>old_text</arg_key><arg_value> - name: Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ steps.tag.outputs.tag }}
files: release/
</arg_value><arg_key>path</arg_key><arg_value>/Users/setoelkahfi/Repositories/sigit/.github/workflows/release-github.yml</arg_value></tool_call>

Tool Call: Permissions: Auto — tools run without asking, subject to settings.toml rules.
Status: Completed

User

continue.

Assistant

Let me verify the current state of the workflow file:

Tool Call: read_file · /Users/setoelkahfi/Repositories/sigit/.github/workflows/rel…
Status: Completed

… (truncated — showing the last 2000 of 10055 chars)
ag' || github.event_name == 'workflow_dispatch'

    steps:
      - name: Resolve tag
        id: tag
        shell: bash
        run: |
          if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
            echo "tag=${{ github.event.inputs.tag }}" >> "$GITHUB_OUTPUT"
          else
            echo "tag=${{ github.ref_name }}" >> "$GITHUB_OUTPUT"
          fi

      - name: Checkout tag
        # The release job otherwise only downloads artifacts; the changelog
        # has to be read from the tree at the tag being released.
        uses: actions/checkout@v6
        with:
          ref: ${{ steps.tag.outputs.tag }}

      - name: Compose release notes
        # The release page carries the section of CHANGELOG.md for this
        # version, not a bare "Full changelog" default. A missing section is
        # a hard failure: publishing a release whose notes don't match its
        # changelog is worse than stopping the job.
        shell: bash
        run: |
          version="${{ steps.tag.outputs.tag }}"
          version="${version#v}"
          section="$(awk -v ver="${version}" '
            $0 == "## " ver { found = 1; next }
            found && /^## / { exit }
            found { print }
          ' CHANGELOG.md)"
          if [ -z "${section//[$' \t\n']/}" ]; then
            echo "No ## ${version} section found in CHANGELOG.md" >&2
            exit 1
          fi
          {
            printf '%s\n' "${section}"
            printf '\n---\n\n'
            printf 'Full changelog: https://github.com/%s/blob/%s/CHANGELOG.md\n' \
              "${GITHUB_REPOSITORY}" "${{ steps.tag.outputs.tag }}"
            printf '\n---\n\n'
            printf 'About siGit Code: [sigit.si/code](https://sigit.si/code)\n'
          } > release_notes.md
          cat release_notes.md

      - name: Download binary artifacts
        uses: actions/download-artifact@v4
        with:
          pattern: "binary-

--- truncated (showing 10000 of 11889 characters) ---

Assistant

The two new steps are in place. Let me check the tail to confirm the body_path edit landed:

Tool Call: read_file · /Users/setoelkahfi/Repositories/sigit/.github/workflows/rel…
Status: Completed

… (truncated — showing the last 2000 of 2029 chars)
s/setoelkahfi/Repositories/sigit/.github/workflows/release-github.yml:
        with:
          pattern: "binary-*"
          path: release
          merge-multiple: true

      - name: Download Homebrew artifacts
        uses: actions/download-artifact@v4
        with:
          pattern: "homebrew-*"
          path: release
          merge-multiple: true

      - name: Release
        uses: softprops/action-gh-release@v2
        with:
          tag_name: ${{ steps.tag.outputs.tag }}
          files: release/*

      # These channels all publish somewhere outside this repo (a tap, a Scoop
      # bucket, microsoft/winget-pkgs, the AUR) and every one of them reads
      # checksums off the release created above, so they hang off this job
      # rather than firing on the tag directly.
      - name: Trigger OS package manager releases
        uses: actions/github-script@v7
        with:
          script: |
            const tag = '${{ steps.tag.outputs.tag }}'
            const workflows = [
              'release-homebrew.yml',
              'release-scoop.yml',
              'release-winget.yml',
              // New AUR account registration is temporarily closed
              //'release-aur.yml',
            ]

            for (const workflow_id of workflows) {
              try {
                await github.rest.actions.createWorkflowDispatch({
                  owner: context.repo.owner,
                  repo: context.repo.repo,
                  workflow_id,
                  ref: 'main',
                  inputs: { tag },
                })
                console.log(`Dispatched ${workflow_id} for tag ${tag}`)
              } catch (error) {
                // One packaging channel being unconfigured (a missing secret,
                // a bucket repo that does not exist yet) should not take the
                // rest of the fan-out down with it.
                core.warning(`Failed to dispatch ${workflow_id}: ${error.message}`)
              }
            }

Assistant

The body_path line never landed — the previous edit was interrupted. Applying it now:

Tool Call: edit_file · /Users/setoelkahfi/Repositories/sigit/.github/workflows/rel…
Status: Completed

Edited file: /Users/setoelkahfi/Repositories/sigit/.github/workflows/release-github.yml (11927 bytes written)

Assistant

Now the skill update. Let me read the release-github section of the skill:

Tool Call: search_files · release-github|release notes|CHANGELOG
Status: Completed

… (truncated — showing the last 2000 of 2728 chars)
cut.
/Users/setoelkahfi/Repositories/sigit/.agents/skills/sigit-code-release/SKILL.md:34: - Release workflows are tag-driven. `release-github.yml`, `release-npm.yml`, `release-pypi.yml`, `release-crates.yml`, `release-homebrew.yml`, `release-nuget.yml`, and `release-mcp-registry.yml` all derive `RELEASE_VERSION` from a `v*.*.*` tag or a manually supplied tag input.
/Users/setoelkahfi/Repositories/sigit/.agents/skills/sigit-code-release/SKILL.md: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`.
/Users/setoelkahfi/Repositories/sigit/.agents/skills/sigit-code-release/SKILL.md:60: - `CHANGELOG.md`
/Users/setoelkahfi/Repositories/sigit/.agents/skills/sigit-code-release/SKILL.md:70: - `.github/workflows/` (`release-github.yml`, `release-npm.yml`, `release-pypi.yml`, `release-crates.yml`, `release-homebrew.yml`, `release-scoop.yml`, `release-winget.yml`, `release-aur.yml`, `release-nuget.yml`, `release-mcp-registry.yml`)
/Users/setoelkahfi/Repositories/sigit/.agents/skills/sigit-code-release/SKILL.md:76: - `CHANGELOG.md` has a correct top entry for the new release.
/Users/setoelkahfi/Repositories/sigit/.agents/skills/sigit-code-release/SKILL.md:85: - Any known release limitations are called out explicitly, including a dispatch failure in `release-scoop`/`release-winget`/`release-aur` (non-fatal — logged as a warning by `release-github.yml`) versus a hard failure in a directly tag-triggered workflow like `release-nuget` or `release-mcp-registry`.

Tool Call: read_file · /Users/setoelkahfi/Repositories/sigit/.agents/skills/sigit-…
Status: Completed

… (truncated — showing the last 2000 of 8695 chars)
npm/package-main.json.tmpl`, `npm/package-compat.json.tmpl`, `npm/package.json.tmpl` (publish-time package metadata for both scopes)
- `npm/scripts/render-main-package.cjs`
- `npm/`
- `pypi/`
- `nuget/sigit/` (bundled-binary `.NET` tool packaging)
- `packaging/` (`nfpm.yaml` for `.deb`/`.rpm`, plus `aur/` and `winget/` templates)
- `server.json` (MCP Registry listing)
- `.github/workflows/` (`release-github.yml`, `release-npm.yml`, `release-pypi.yml`, `release-crates.yml`, `release-homebrew.yml`, `release-scoop.yml`, `release-winget.yml`, `release-aur.yml`, `release-nuget.yml`, `release-mcp-registry.yml`)

## Release checklist

- Version bump is applied everywhere it needs to be.
- `Cargo.toml` and the root crate entry in `Cargo.lock` match.
- `CHANGELOG.md` has a correct top entry for the new release.
- `npm/sigit/package.json` is left at `0.0.0-dev` unless the packaging flow itself changed.
- `pypi/pyproject.toml` still uses dynamic versioning unless there is a deliberate packaging change.
- Release workflows still derive their version from the tag as expected.
- Git flow followed: bump committed on `release/v<version>`, merged back to `development`, then `development` merged into `main`, with `v<version>` tagged on the `main` merge commit.
- Release notes or changelog entries match the actual changes.
- CI-equivalent local checks pass for the relevant platform or target.
- Package names, install commands, and branding stay consistent across npm, PyPI, crates.io, Homebrew, NuGet, Scoop, winget, AUR, and the `.deb`/`.rpm` packages.
- Every release asset (including the new `.deb`/`.rpm`/raw binaries consumed by Scoop, winget, and AUR) has a matching `.sha256` sidecar.
- Any known release limitations are called out explicitly, including a dispatch failure in `release-scoop`/`release-winget`/`release-aur` (non-fatal — logged as a warning by `release-github.yml`) versus a hard failure in a directly tag-triggered workflow like `release-nuget` or `release-mcp-registry`.

Assistant

I'll add the release-notes rule to the repo-specific release rules:

Tool Call: edit_file · /Users/setoelkahfi/Repositories/sigit/.agents/skills/sigit-…
Status: Completed

Edited file: /Users/setoelkahfi/Repositories/sigit/.agents/skills/sigit-code-release/SKILL.md (9197 bytes written)

Assistant

Now the CI gates. Confirming the branch and dirty state first, then running fmt:

Tool Call: run_command · git branch --show-current && git status --short
Status: Completed

Exit code 0:
release/v1.5.9
 M .agents/skills/sigit-code-release/SKILL.md
 M .github/workflows/release-github.yml
 M CHANGELOG.md
 M Cargo.lock
 M Cargo.toml

Tool Call: run_command · cargo fmt -- --check
Status: Completed

Command succeeded (exit code 0) with no output.

Tool Call: run_command · cargo clippy --tests -- -D warnings 2>&1 | tail -5
Status: Completed

Started background task 1: `cargo clippy --tests -- -D warnings 2>&1 | tail -5`. Poll its output and status with command_output (task_id: 1); stop it with kill_command. The task is killed when sigit exits.

Tool Call: command_output
Status: Completed

Task 1 (`cargo clippy --tests -- -D warnings 2>&1 | tail -5`) is still running. No new output since the last check.

Tool Call: command_output
Status: Completed

Task 1 (`cargo clippy --tests -- -D warnings 2>&1 | tail -5`) is still running. No new output since the last check.

Tool Call: command_output
Status: Completed

The tool `command_output` was not executed again because the model repeated the same call three times. Continue without this tool.

Assistant

<tool_call>run_command<arg_key>command</arg_key><arg_value>sleep 90</arg_value><arg_key>cwd</arg_key><arg_value>/Users/setoelkahfi/Repositories/sigit</arg_value></tool_call>

User

cont

Tool Call: command_output
Status: Completed

Task 1 (`cargo clippy --tests -- -D warnings 2>&1 | tail -5`) exited with code 0. New output since the last check:
    Checking sigit v1.5.9 (/Users/setoelkahfi/Repositories/sigit)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 5.29s

Assistant

Clippy is clean. Now the test suite:

Tool Call: run_command · cargo test --locked 2>&1 | tail -20
Status: Completed

Started background task 2: `cargo test --locked 2>&1 | tail -20`. Poll its output and status with command_output (task_id: 2); stop it with kill_command. The task is killed when sigit exits.

Tool Call: command_output
Status: Completed

Task 2 (`cargo test --locked 2>&1 | tail -20`) is still running. No new output since the last check.

Tool Call: command_output
Status: Completed

Task 2 (`cargo test --locked 2>&1 | tail -20`) is still running. No new output since the last check.

Tool Call: run_command · sleep 60
Status: Completed

Command succeeded (exit code 0) with no output.

Tool Call: command_output
Status: Completed

The tool `command_output` was not executed again because the model repeated the same call three times. Continue without this tool.

Assistant

<tool_call>run_command<arg_key>command</arg_key><arg_value>sleep 60</arg_value><arg_key>cwd</arg_key><arg_value>/Users/setoelkahfi/Repositories/sigit</arg_value></tool_call>

User

done?

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

ACPGLM-5.3ZedACP issue with the client if any, colon separated.

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions