@wirecat/cli-template 0.13.1 → 0.13.2

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.
@@ -67,6 +67,7 @@ jobs:
67
67
  outputs:
68
68
  version: ${{ steps.version.outputs.version }}
69
69
  name: ${{ steps.version.outputs.name }}
70
+ package-sha256: ${{ steps.digest.outputs.sha256 }}
70
71
  steps:
71
72
  - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
72
73
  with:
@@ -103,6 +104,14 @@ jobs:
103
104
  exit 1
104
105
  fi
105
106
 
107
+ # A CLI that changes the package after the check above unpacks the new file and compares it with the checked
108
+ # one before this step (gcal-cli adds its Google client this way); `publish` refuses any other file.
109
+ - name: digest of the package to publish
110
+ id: digest
111
+ run: |
112
+ set -- ./validated/*.tgz
113
+ echo "sha256=$(sha256sum "$1" | cut -d' ' -f1)" >> "$GITHUB_OUTPUT"
114
+
106
115
  - uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
107
116
  with:
108
117
  name: package
@@ -137,6 +146,7 @@ jobs:
137
146
  env:
138
147
  VERSION: ${{ needs.build.outputs.version }}
139
148
  NAME: ${{ needs.build.outputs.name }}
149
+ EXPECTED_SHA256: ${{ needs.build.outputs.package-sha256 }}
140
150
  steps:
141
151
  - uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
142
152
  with:
@@ -151,6 +161,8 @@ jobs:
151
161
  # lifecycle scripts, and nothing is installed here. A tarball path needs its ./.
152
162
  - run: |
153
163
  set -- ./*.tgz
164
+ [ "$#" -eq 1 ] && [ -f "$1" ] && [ -n "$EXPECTED_SHA256" ] || { echo "::error::no single package to verify"; exit 1; }
165
+ printf '%s %s\n' "$EXPECTED_SHA256" "$1" | sha256sum --check -
154
166
  npm publish "$1" --access public
155
167
 
156
168
  - name: wait for npm to show the version
@@ -191,24 +203,46 @@ jobs:
191
203
  gh release create "v$VERSION" --title "$VERSION" --notes-file -
192
204
 
193
205
  # The template's own release publishes @wirecat/cli-template, which has no skill on ClawHub.
194
- # ClawHub's own workflow, pinned: it runs the ClawHub CLI from this commit and needs id-token only to read which
195
- # commit that is. It publishes the skill only when it changed, as the next patch of ClawHub's own version line.
206
+ # The same ClawHub CLI commit as `clawhub`, run here rather than through ClawHub's reusable workflow: that workflow
207
+ # asks for id-token: write, and an OIDC token has no place in a job that runs third-party code outside the npm
208
+ # environment. A dry run needs no ClawHub token either. Bump CLAWHUB_SHA together with `clawhub`'s.
196
209
  clawhub-dry-run:
197
210
  needs: build
198
211
  if: inputs.dry_run && github.repository != 'WireCatLabs/cli-template'
212
+ runs-on: ubuntu-latest
199
213
  permissions:
200
214
  contents: read
201
- id-token: write
202
- uses: openclaw/clawhub/.github/workflows/skill-publish.yml@52358852d3510f1150756d48e8a72cb8c8e698e0 # main, 2026-10-25
203
- with:
204
- skill_path: skills/clidev-cli
205
- owner: wirecat
206
- dry_run: true
215
+ env:
216
+ SKILL_PATH: skills/clidev-cli
217
+ CLAWHUB_SLUG: wirecat-clidev
218
+ CLAWHUB_SHA: 52358852d3510f1150756d48e8a72cb8c8e698e0
219
+ CLAWHUB_URL: https://clawhub.ai
220
+ steps:
221
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
222
+ with:
223
+ persist-credentials: false
224
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
225
+ with:
226
+ repository: openclaw/clawhub
227
+ ref: ${{ env.CLAWHUB_SHA }}
228
+ path: clawhub-source
229
+ persist-credentials: false
230
+ - uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
231
+ with:
232
+ bun-version: 1.4.4
233
+ - run: bun install --frozen-lockfile
234
+ working-directory: clawhub-source
235
+ - name: check the skill would publish
236
+ run: |
237
+ bun clawhub-source/packages/clawhub/src/cli.ts --workdir "$GITHUB_WORKSPACE" \
238
+ --site "$CLAWHUB_URL" --registry "$CLAWHUB_URL" skill publish "$SKILL_PATH" --slug "$CLAWHUB_SLUG" --json \
239
+ --owner wirecat --tags latest --source-repo "$GITHUB_REPOSITORY" --source-commit "$GITHUB_SHA" \
240
+ --source-path "$SKILL_PATH" --source-ref "$GITHUB_REF" --dry-run
207
241
 
208
242
  # After the tag, so a ClawHub failure never holds back the npm release. The same CLI commit as the dry run, but run
209
243
  # here instead of through ClawHub's workflow, which GitHub cannot let fail: a version stuck pending ClawHub's scan
210
244
  # is not counted as the latest, so the next publish picks it again and gets "already exists" (openclaw/clawhub#4046).
211
- # That one error warns; any other fails. Bump CLAWHUB_SHA together with the dry run's pin.
245
+ # That one error warns; any other fails. Bump CLAWHUB_SHA together with clawhub-dry-run's.
212
246
  clawhub:
213
247
  needs: tag
214
248
  if: ${{ !inputs.dry_run && github.repository != 'WireCatLabs/cli-template' }}
package/CHANGELOG.md CHANGED
@@ -5,6 +5,17 @@ Notable changes to `@wirecat/cli-template`. One section per version, newest firs
5
5
 
6
6
  <!-- cspell:words clawhub gcal katex openclaw smol whatsapp -->
7
7
 
8
+ ## 0.13.2 — 03.11.2026
9
+
10
+ ### Fixed
11
+
12
+ - **`release.yml` publishes only the file the build checked.** `build` passes the sha256 of the package it uploads to
13
+ `publish`, which checks it before `npm publish`. A CLI that changes the package after the check must unpack the new
14
+ file and compare it with the checked one in `build`; gcal-cli does this for its Google client.
15
+ - **The ClawHub dry run gets no OIDC token.** `clawhub-dry-run` called ClawHub's shared workflow, which asks for
16
+ `id-token: write` while it runs ClawHub's code outside the `npm` environment. It now runs the same pinned ClawHub
17
+ CLI directly with `--dry-run`, as the `clawhub` job already did. A CLI gets both from `upgrade`.
18
+
8
19
  ## 0.13.1 — 02.11.2026
9
20
 
10
21
  ### Fixed
@@ -9,7 +9,7 @@ if (
9
9
  (words[0] === "--version" || words[0] === "-V") &&
10
10
  !Object.keys(process.env).some((key) => key.endsWith("_TEST_ARGV_LOG"))
11
11
  ) {
12
- process.stdout.write("0.13.1\n")
12
+ process.stdout.write("0.13.2\n")
13
13
  } else {
14
14
  // Before the bundle compiles: the bundle's own call comes after its chunks.
15
15
  module.enableCompileCache()
@@ -29,7 +29,7 @@ if (
29
29
  })
30
30
  }
31
31
  const running = import("../bundle/clidev.js")
32
- const chunks = ["../bundle/all-profiles-MJ6XSFOO.js","../bundle/anthropic-W5UKBZUB.js","../bundle/app-server-EZ46JAHB.js","../bundle/bun-HB6O2TTT.js","../bundle/bun-sqlite-KBXOW2ES.js","../bundle/decode-AMXUVKNY.js","../bundle/dist-ESHIQU4M.js","../bundle/echarts-GJDMQ2AQ.js","../bundle/embed-L4CRZ2XQ.js","../bundle/embedder-IBGV4M2K.js","../bundle/first-screen-X5IJKBSU.js","../bundle/instructions-YJECS4KN.js","../bundle/mcp-7XPOACO4.js","../bundle/mcp-OQBZXELQ.js","../bundle/mcp-RDZGYPSY.js","../bundle/node-NQG4EVZR.js","../bundle/node-P4E63KXA.js","../bundle/node-TLZSIHIJ.js","../bundle/node-sqlite-BR7F3BLB.js","../bundle/oauth-J7UAWNIK.js","../bundle/open-BR47R5UE.js","../bundle/process-66I7RDPJ.js","../bundle/program-ZNXLJ3D2.js","../bundle/prompt-NE5JJ7UP.js","../bundle/recognize-GC3YFVIA.js","../bundle/remote-QELOMKQM.js","../bundle/rerank-BH6TZ2SP.js","../bundle/serve-WWLRNDT2.js","../bundle/server-DE6NLNUF.js","../bundle/server-ZPSQKOAH.js","../bundle/state-2BEGXAMO.js","../bundle/store-AH6WZMCF.js","../bundle/store-maintenance-command-PBXX3IEV.js"]
32
+ const chunks = ["../bundle/all-profiles-MJ6XSFOO.js","../bundle/anthropic-W5UKBZUB.js","../bundle/app-server-EZ46JAHB.js","../bundle/bun-HB6O2TTT.js","../bundle/bun-sqlite-KBXOW2ES.js","../bundle/decode-AMXUVKNY.js","../bundle/dist-ESHIQU4M.js","../bundle/echarts-GJDMQ2AQ.js","../bundle/embed-L4CRZ2XQ.js","../bundle/embedder-IBGV4M2K.js","../bundle/first-screen-X5IJKBSU.js","../bundle/instructions-YJECS4KN.js","../bundle/mcp-GBSAK3VW.js","../bundle/mcp-OQBZXELQ.js","../bundle/mcp-RDZGYPSY.js","../bundle/node-NQG4EVZR.js","../bundle/node-P4E63KXA.js","../bundle/node-TLZSIHIJ.js","../bundle/node-sqlite-BR7F3BLB.js","../bundle/oauth-J7UAWNIK.js","../bundle/open-BR47R5UE.js","../bundle/process-66I7RDPJ.js","../bundle/program-EM4FKOCK.js","../bundle/prompt-NE5JJ7UP.js","../bundle/recognize-GC3YFVIA.js","../bundle/remote-QELOMKQM.js","../bundle/rerank-BH6TZ2SP.js","../bundle/serve-WWLRNDT2.js","../bundle/server-DE6NLNUF.js","../bundle/server-ZPSQKOAH.js","../bundle/state-2BEGXAMO.js","../bundle/store-AH6WZMCF.js","../bundle/store-maintenance-command-PBXX3IEV.js"]
33
33
  // After the server answers its first request, so it starts no later.
34
34
  if (serves) setTimeout(() => void Promise.allSettled(chunks.map((chunk) => import(chunk))), 2000).unref()
35
35
  await running
@@ -2,7 +2,7 @@ import { createRequire as __bundleRequire } from "node:module";
2
2
  const require = __bundleRequire(import.meta.url);
3
3
 
4
4
  // dist/version.js
5
- var VERSION = "0.13.1";
5
+ var VERSION = "0.13.2";
6
6
 
7
7
  // dist/identity.js
8
8
  var PACKAGE = "@wirecat/clidev-cli";
@@ -3,7 +3,7 @@ import { createRequire as __bundleRequire } from "node:module";
3
3
  const require = __bundleRequire(import.meta.url);
4
4
  import {
5
5
  IDENTITY
6
- } from "./chunk-N5GXKDBC.js";
6
+ } from "./chunk-KRCCGWWS.js";
7
7
  import {
8
8
  catchCrashes
9
9
  } from "./chunk-EFHLQXG6.js";
@@ -14,7 +14,7 @@ import "./chunk-ZVVMGPBJ.js";
14
14
  import { enableCompileCache } from "node:module";
15
15
  enableCompileCache();
16
16
  var stopCatching = catchCrashes({ cli: IDENTITY.command, interactive: process.stdout.isTTY === true });
17
- var { run } = await import("./program-ZNXLJ3D2.js");
17
+ var { run } = await import("./program-EM4FKOCK.js");
18
18
  try {
19
19
  process.exitCode = await run(process.argv.slice(2));
20
20
  } finally {
@@ -46,7 +46,7 @@ import "./chunk-O5EHUB2V.js";
46
46
  import "./chunk-FDBINRWA.js";
47
47
  import {
48
48
  IDENTITY
49
- } from "./chunk-N5GXKDBC.js";
49
+ } from "./chunk-KRCCGWWS.js";
50
50
  import "./chunk-QKWRL4OD.js";
51
51
  import "./chunk-EGRB55FF.js";
52
52
  import "./chunk-IDWW4TU2.js";
@@ -593,7 +593,7 @@ import {
593
593
  IDENTITY,
594
594
  PACKAGE,
595
595
  SKILL
596
- } from "./chunk-N5GXKDBC.js";
596
+ } from "./chunk-KRCCGWWS.js";
597
597
  import {
598
598
  isTextModelInstalled,
599
599
  textModelsDirectory
@@ -17198,7 +17198,7 @@ var serveCommand3 = /* @__PURE__ */ __name(() => annotate(new Command("serve"),
17198
17198
  run: run3,
17199
17199
  ...environment.signal ? { signal: environment.signal } : {}
17200
17200
  };
17201
- const { serveMcp, serveMcpOverHttp } = await import("./mcp-7XPOACO4.js");
17201
+ const { serveMcp, serveMcpOverHttp } = await import("./mcp-GBSAK3VW.js");
17202
17202
  if (!flags.http)
17203
17203
  return serveMcp(options);
17204
17204
  const { portOf: portOf2, publicUrlOf: publicUrlOf2 } = await import("./mcp-RDZGYPSY.js");
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.13.1";
1
+ export declare const VERSION = "0.13.2";
2
2
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,2 +1,2 @@
1
- export const VERSION = "0.13.1";
1
+ export const VERSION = "0.13.2";
2
2
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wirecat/cli-template",
3
- "version": "0.13.1",
3
+ "version": "0.13.2",
4
4
  "description": "Start a new WireCat CLI: a working skeleton on cli-base and cli-core, copied by new and kept current by upgrade",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Viacheslav Ptsarev",
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const VERSION = "0.13.1"
1
+ export const VERSION = "0.13.2"