@wirecat/cli-template 0.13.0 → 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.
- package/.github/workflows/release.yml +43 -9
- package/CHANGELOG.md +20 -0
- package/dist/bin/clidev.js +2 -2
- package/dist/bundle/{chunk-KUMIGCEQ.js → chunk-KRCCGWWS.js} +1 -1
- package/dist/bundle/clidev.js +2 -2
- package/dist/bundle/{mcp-TBANBEHH.js → mcp-GBSAK3VW.js} +1 -1
- package/dist/bundle/{program-BVYPNH7L.js → program-EM4FKOCK.js} +2 -2
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/scripts/audit.sh +4 -1
- package/src/version.ts +1 -1
|
@@ -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
|
-
#
|
|
195
|
-
#
|
|
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
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
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
|
|
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,26 @@ 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
|
+
|
|
19
|
+
## 0.13.1 — 02.11.2026
|
|
20
|
+
|
|
21
|
+
### Fixed
|
|
22
|
+
|
|
23
|
+
- **`pnpm release:check` no longer downloads the other WireCat CLIs on every run.** Its command audit gave npm the
|
|
24
|
+
throwaway home folder, so npm's cache was empty each time and a slow network failed the release with `ECONNRESET`.
|
|
25
|
+
The install now uses your own npm cache and retries a failed download with longer waits; the CLIs it runs still get
|
|
26
|
+
the throwaway folder. A CLI gets it from `upgrade`.
|
|
27
|
+
|
|
8
28
|
## 0.13.0 — 01.11.2026
|
|
9
29
|
|
|
10
30
|
### Added
|
package/dist/bin/clidev.js
CHANGED
|
@@ -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.
|
|
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-
|
|
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
|
package/dist/bundle/clidev.js
CHANGED
|
@@ -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-
|
|
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-
|
|
17
|
+
var { run } = await import("./program-EM4FKOCK.js");
|
|
18
18
|
try {
|
|
19
19
|
process.exitCode = await run(process.argv.slice(2));
|
|
20
20
|
} finally {
|
|
@@ -593,7 +593,7 @@ import {
|
|
|
593
593
|
IDENTITY,
|
|
594
594
|
PACKAGE,
|
|
595
595
|
SKILL
|
|
596
|
-
} from "./chunk-
|
|
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-
|
|
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
|
+
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
|
+
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.
|
|
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/scripts/audit.sh
CHANGED
|
@@ -7,12 +7,15 @@ root=$(cd "$(dirname "$0")/.." && pwd)
|
|
|
7
7
|
command=$(node --input-type=module -e "import('$root/dist/identity.js').then((m) => console.log(m.IDENTITY.command))")
|
|
8
8
|
scratch=$(mktemp -d)
|
|
9
9
|
trap 'rm -rf "$scratch"' EXIT
|
|
10
|
+
# Read before HOME moves, so the install reuses the owner's npm cache instead of downloading every CLI again.
|
|
11
|
+
npm_cache=$(npm config get cache)
|
|
10
12
|
# A CLI that starts may move the store under HOME; every CLI run here gets a throwaway one.
|
|
11
13
|
# Moved folders do not hide the keyring: it is reached over D-Bus.
|
|
12
14
|
export HOME="$scratch/home" MESSAGING_STORE="$scratch/store" WIRECAT_STATE_DIR="$scratch/state"
|
|
13
15
|
export DBUS_SESSION_BUS_ADDRESS=disabled:
|
|
14
16
|
mkdir -p "$HOME"
|
|
15
|
-
npm install -g --prefix "$scratch/prefix" --
|
|
17
|
+
npm install -g --prefix "$scratch/prefix" --cache "$npm_cache" --fetch-retries 6 --fetch-retry-mintimeout 20000 \
|
|
18
|
+
--fetch-retry-maxtimeout 120000 --maxsockets 4 --ignore-scripts --no-audit --no-fund --loglevel error \
|
|
16
19
|
@wirecat/tg-cli @wirecat/max-cli @wirecat/whatsapp-cli @wirecat/cli-memo @wirecat/drive-cli @wirecat/zoom-cli \
|
|
17
20
|
@wirecat/gcal-cli
|
|
18
21
|
bin="$scratch/prefix/bin"
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const VERSION = "0.13.
|
|
1
|
+
export const VERSION = "0.13.2"
|