@wirecat/cli-template 0.16.0 → 0.18.0

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 (104) hide show
  1. package/.github/workflows/ci.yml +18 -0
  2. package/.github/workflows/release-pr.yml +37 -0
  3. package/CHANGELOG.md +39 -0
  4. package/bin/release +17 -3
  5. package/biome.json +6 -0
  6. package/contracts/plan.json +2 -1
  7. package/dist/bin/clidev.js +2 -2
  8. package/dist/bundle/{all-profiles-FS7AEOE7.js → all-profiles-I2I5Y47S.js} +7 -7
  9. package/dist/bundle/{anthropic-5RN7BGDI.js → anthropic-6KWLOH3O.js} +4 -4
  10. package/dist/bundle/{app-server-WGTKZQKJ.js → app-server-WDHIM77I.js} +42 -39
  11. package/dist/bundle/{bun-ILPS6AYA.js → bun-NQS22GBW.js} +2 -2
  12. package/dist/bundle/{bun-sqlite-WK2IGBGD.js → bun-sqlite-ZHYZDAFU.js} +3 -3
  13. package/dist/bundle/{chunk-VS5LGSTM.js → chunk-43KXTQB6.js} +1 -1
  14. package/dist/bundle/{chunk-C3GNOEJP.js → chunk-4DHYD37E.js} +3 -3
  15. package/dist/bundle/{chunk-ADFSSIV4.js → chunk-64DNKCG6.js} +4 -4
  16. package/dist/bundle/{chunk-ATHZEV2Z.js → chunk-6HV2ZUJ7.js} +3 -3
  17. package/dist/bundle/{chunk-BPMKAZSS.js → chunk-6K7LOCZA.js} +204 -79
  18. package/dist/bundle/{chunk-YNROUY3R.js → chunk-ALOTPATU.js} +11 -11
  19. package/dist/bundle/{chunk-ZSY4WAGI.js → chunk-AQGUIORH.js} +303 -261
  20. package/dist/bundle/{chunk-EA3TMI4A.js → chunk-CAX65NS4.js} +2477 -1235
  21. package/dist/bundle/{chunk-MEXT6XDP.js → chunk-CZB5RLXN.js} +3 -3
  22. package/dist/bundle/{chunk-VPCXYY46.js → chunk-E5O6R3NL.js} +1 -1
  23. package/dist/bundle/{chunk-TXHCL75B.js → chunk-EMPBFRAG.js} +32 -26
  24. package/dist/bundle/{chunk-RFJKNFVF.js → chunk-ERHKHYWL.js} +6 -6
  25. package/dist/bundle/{chunk-ORV4EGNC.js → chunk-F2KGCZQP.js} +8 -8
  26. package/dist/bundle/{chunk-5KAYQKBK.js → chunk-FGQC6DQK.js} +63 -63
  27. package/dist/bundle/{chunk-VOTEB3AN.js → chunk-FPC4ESDC.js} +1 -1
  28. package/dist/bundle/{chunk-QGOOPPEW.js → chunk-G7JA7YXK.js} +5 -5
  29. package/dist/bundle/{chunk-JJZCPBH3.js → chunk-GBXTIWAE.js} +53 -44
  30. package/dist/bundle/{chunk-3MDNAYQA.js → chunk-HMP5CI4F.js} +4 -2
  31. package/dist/bundle/{chunk-2MWNE4L3.js → chunk-I5HN34YA.js} +4 -4
  32. package/dist/bundle/{chunk-LRHX62ZF.js → chunk-IKFNRGSZ.js} +3 -3
  33. package/dist/bundle/{chunk-7Z4HR6GO.js → chunk-IKGARE4J.js} +1 -1
  34. package/dist/bundle/{chunk-3WDYHOAF.js → chunk-JECGG4TM.js} +1 -1
  35. package/dist/bundle/{chunk-WDWP5N6M.js → chunk-KMYKWHFH.js} +26 -26
  36. package/dist/bundle/{chunk-ENDBOYQR.js → chunk-KSABL7M2.js} +89 -45
  37. package/dist/bundle/{chunk-DEHBTFIC.js → chunk-KWQSDU3D.js} +2 -2
  38. package/dist/bundle/{chunk-CGFQT3LQ.js → chunk-L4U3V7OU.js} +1 -1
  39. package/dist/bundle/{chunk-HTYLT6ME.js → chunk-MJSZEF7M.js} +296 -173
  40. package/dist/bundle/{chunk-OGTRPW2K.js → chunk-MVWHCXYA.js} +7 -7
  41. package/dist/bundle/{chunk-ETJXPB6A.js → chunk-NVALUKZU.js} +4 -4
  42. package/dist/bundle/{chunk-6WOJIAYA.js → chunk-Q5J3LKRL.js} +2 -2
  43. package/dist/bundle/{chunk-7EUX7AZV.js → chunk-QHXHJ3BK.js} +3 -3
  44. package/dist/bundle/{chunk-NENYWEXF.js → chunk-RKZJ7ZKU.js} +1 -1
  45. package/dist/bundle/{chunk-JFXWLQ2L.js → chunk-RQPDYAHW.js} +2 -2
  46. package/dist/bundle/{chunk-RYOAQCVJ.js → chunk-RSCHWXF5.js} +2 -2
  47. package/dist/bundle/{chunk-FMO6F5Q2.js → chunk-RYBCV3CX.js} +2 -2
  48. package/dist/bundle/{chunk-G45R7M42.js → chunk-T6ZLWN7E.js} +1 -1
  49. package/dist/bundle/{chunk-5HHIPDNW.js → chunk-T7657XL5.js} +2 -2
  50. package/dist/bundle/{chunk-SKBRW5U3.js → chunk-TH6AVNNH.js} +2 -2
  51. package/dist/bundle/{chunk-MBBOINK4.js → chunk-TMFSNTR2.js} +3 -3
  52. package/dist/bundle/{chunk-Z5NL6YNU.js → chunk-UESBF7HN.js} +6 -6
  53. package/dist/bundle/{chunk-EILS4BTQ.js → chunk-UGPJDNVX.js} +26 -26
  54. package/dist/bundle/{chunk-OF56L2JU.js → chunk-UXLB5I2B.js} +4 -4
  55. package/dist/bundle/{chunk-CTBHQRX6.js → chunk-VDV3WS4O.js} +13 -13
  56. package/dist/bundle/{chunk-NVPWZF67.js → chunk-VDXS7GR7.js} +8 -8
  57. package/dist/bundle/{chunk-YIVY2WI3.js → chunk-YLN6DBJV.js} +1 -1
  58. package/dist/bundle/{chunk-WM5AMTRY.js → chunk-YMGJJG3W.js} +31 -13
  59. package/dist/bundle/clidev.js +3 -3
  60. package/dist/bundle/{command-contract-ZDU73EPH.js → command-contract-JGOS34WS.js} +11 -11
  61. package/dist/bundle/{decode-QMLOGZ6R.js → decode-HHZMCEZF.js} +3 -3
  62. package/dist/bundle/{echarts-DRDGGHJT.js → echarts-LYV2DLKU.js} +2 -2
  63. package/dist/bundle/{embed-PIR2LJR2.js → embed-BPN3SCZ7.js} +4 -4
  64. package/dist/bundle/{embedder-6KBRPAEQ.js → embedder-NZAL7DVD.js} +7 -7
  65. package/dist/bundle/{first-run-JO3CMY3Z.js → first-run-OKN7MVLP.js} +8 -8
  66. package/dist/bundle/first-screen-6XGF2AKF.js +26 -0
  67. package/dist/bundle/{instructions-EOQOXY6V.js → instructions-N2HYCEWN.js} +1 -1
  68. package/dist/bundle/{mcp-7HBLFGCW.js → mcp-OGWFYUDR.js} +2 -2
  69. package/dist/bundle/{node-52WF2326.js → node-MIHFH7T4.js} +2 -2
  70. package/dist/bundle/{node-sqlite-LIK6OYNF.js → node-sqlite-FF2SFXPZ.js} +4 -4
  71. package/dist/bundle/{oauth-7FVF7HQQ.js → oauth-72XUHG3K.js} +5 -5
  72. package/dist/bundle/{open-CRZDEATN.js → open-HL6SSRKY.js} +3 -3
  73. package/dist/bundle/{openai-WAJ6WREQ.js → openai-DSWDZHQA.js} +12 -12
  74. package/dist/bundle/{process-YIQPKLZI.js → process-5EQF2SZN.js} +1 -1
  75. package/dist/bundle/{program-ZFFFPBRS.js → program-QPXFRATG.js} +970 -503
  76. package/dist/bundle/{prompt-QQIVHO3M.js → prompt-VVRJDKQK.js} +3 -3
  77. package/dist/bundle/{recognize-4KLBZDEC.js → recognize-T6RIVTQL.js} +2 -2
  78. package/dist/bundle/{remote-BABMZTHA.js → remote-7Z3C3FOG.js} +5 -5
  79. package/dist/bundle/{rerank-P3IQQJIL.js → rerank-RUFDP7NP.js} +5 -5
  80. package/dist/bundle/{serve-25SSAKRZ.js → serve-YZQDRGZW.js} +7 -7
  81. package/dist/bundle/server-NDSKEME6.js +52 -0
  82. package/dist/bundle/{server-P4XUYY5A.js → server-WSFS656N.js} +28 -28
  83. package/dist/bundle/{state-QCQALQBJ.js → state-GOQ4J5RS.js} +4 -4
  84. package/dist/bundle/{store-ZECPRGGH.js → store-KRGXTPKQ.js} +12 -10
  85. package/dist/bundle/store-maintenance-command-FNNZ5YCX.js +42 -0
  86. package/dist/commands/session.js +1 -1
  87. package/dist/commands/session.js.map +1 -1
  88. package/dist/program.d.ts.map +1 -1
  89. package/dist/program.js +1 -0
  90. package/dist/program.js.map +1 -1
  91. package/dist/version.d.ts +1 -1
  92. package/dist/version.js +1 -1
  93. package/docs/dev/skills/release/SKILL.md +10 -3
  94. package/docs/dev/skills/release/fresh-audit.md +1 -1
  95. package/kit/dist/new.js +2 -1
  96. package/package.json +4 -4
  97. package/pnpm-workspace.yaml +2 -0
  98. package/src/commands/session.ts +1 -1
  99. package/src/program.ts +1 -0
  100. package/src/run-scope.test.ts +31 -0
  101. package/src/version.ts +1 -1
  102. package/dist/bundle/first-screen-3T5IXTFL.js +0 -26
  103. package/dist/bundle/server-G4GCDMYI.js +0 -52
  104. package/dist/bundle/store-maintenance-command-ECUO5G6L.js +0 -42
@@ -74,6 +74,24 @@ jobs:
74
74
  - run: pnpm install --frozen-lockfile --ignore-scripts
75
75
  - run: pnpm kit:e2e
76
76
 
77
+ # main's ruleset, the monthly minute and a parity group: the setup steps `new` prints, checked (cli-base new-cli.md).
78
+ repo-setup:
79
+ runs-on: ubuntu-latest
80
+ timeout-minutes: 5
81
+ steps:
82
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
83
+ with:
84
+ persist-credentials: false
85
+ - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0
86
+ - uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
87
+ with:
88
+ node-version: 24
89
+ cache: pnpm
90
+ - run: pnpm install --frozen-lockfile --ignore-scripts
91
+ - env:
92
+ GH_TOKEN: ${{ github.token }}
93
+ run: pnpm exec cli-dev repo-check --cli clidev
94
+
77
95
  version:
78
96
  if: github.event_name == 'pull_request'
79
97
  runs-on: ubuntu-latest
@@ -0,0 +1,37 @@
1
+ name: Release pull request
2
+
3
+ # A pull request that changes the version says what was checked before it (WC-REL-17). `edited` reruns it when only
4
+ # the description changes.
5
+ on:
6
+ pull_request:
7
+ types: [opened, edited, synchronize, reopened]
8
+
9
+ concurrency:
10
+ group: release-pr-${{ github.event.pull_request.number }}
11
+ cancel-in-progress: true
12
+
13
+ permissions:
14
+ contents: read
15
+
16
+ jobs:
17
+ conformance:
18
+ runs-on: ubuntu-latest
19
+ timeout-minutes: 5
20
+ steps:
21
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
22
+ with:
23
+ fetch-depth: 0
24
+ persist-credentials: false
25
+ - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0
26
+ - uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
27
+ with:
28
+ node-version: 24
29
+ cache: pnpm
30
+ - run: pnpm install --frozen-lockfile --ignore-scripts
31
+ - name: Conformance section of a release
32
+ env:
33
+ BODY: ${{ github.event.pull_request.body }}
34
+ BASE_SHA: ${{ github.event.pull_request.base.sha }}
35
+ run: |
36
+ printf '%s\n' "$BODY" > pr-body.md
37
+ pnpm exec cli-dev release-pr --base "$BASE_SHA" --body pr-body.md
package/CHANGELOG.md CHANGED
@@ -5,6 +5,45 @@ 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.18.0 — 07.11.2026
9
+
10
+ ### Added
11
+
12
+ - **A run-scope test, `src/run-scope.test.ts`.** cli-core's `runScopeCases` runs each remote command against the fake
13
+ with `--record`, which must keep a run named after it, and against a service that never answers, which `--timeout`
14
+ must end. A new remote command fails it until it is given words or a reason to skip. cli-core 0.598.0.
15
+
16
+ ### Fixed
17
+
18
+ - **markdownlint's re2js is overridden to 2.8.7.** markdownlint 0.42.0, its latest, pins re2js 2.8.6 exactly, which
19
+ has GHSA-gg6h-894w-4m9c (high, development path only: the docs lint). Every CLI made from the template carried an
20
+ open Dependabot alert that Dependabot could not fix. A CLI gets the override from `upgrade`; tg-cli has the same.
21
+ - **cli-base 0.80.8.** `repo-check` now fails unless main's ruleset requires the template's checks, `conformance` and
22
+ `validation / repo-setup` among them, and unless only `main` can deploy to the GitHub `npm` environment (skipped
23
+ while there is none). `new` prints the environment limit in step 2. `cli-dev live record` hashes the checked files,
24
+ so `bin/release` in a fresh clone passes after the squash merge dropped the branch commit; record the live check
25
+ again to get the new line.
26
+ - **`bin/release` checks the live record in a CLI made from the template again.** 0.17.0 skipped `cli-dev live
27
+ check` when `template.json` existed, and `new` writes one into every CLI, so the WC-REL-17 gate ran nowhere. It now
28
+ skips only where `kit/` exists, which is the template alone. A CLI gets it from `upgrade`.
29
+ - **cli-base 0.80.4 and cli-testing 0.6.1.** `repo-check` skips the ruleset of a private repository on GitHub's free
30
+ plan, which cannot have one, and the contract `deny` check fails instead of passing when it could call no MCP tool
31
+ or a command's `--dry-run` failed.
32
+
33
+ ## 0.17.0 — 07.11.2026
34
+
35
+ ### Added
36
+
37
+ - **CI fails a CLI made from the template on mistakes no check caught before.** `contracts/plan.json`
38
+ has a `deny` block (cli-testing 0.6.0): in an empty home, each command that reaches the service gets `deny` in the
39
+ profile and must exit 5 before any request, on the command line and over `mcp serve`. Biome refuses a
40
+ `resolveSettings` call outside `baseContext` (cli-base's `no-own-settings` plugin). `release-pr.yml` fails a pull
41
+ request that changes the version without a `## Conformance` section, and `bin/release` refuses a version with no
42
+ passed live check in `docs/dev/live-checks.txt` (`cli-dev live record`), or whose code changed since. The
43
+ `repo-setup` job in `ci.yml` checks main's ruleset, a monthly cron minute no other repository holds, and the CLI in
44
+ a parity group: the three setup steps `new` prints. The skeleton moves to cli-core 0.595.0 and cli-base 0.80.3
45
+ (from 0.584.0 and 0.77.1) for them.
46
+
8
47
  ## 0.16.0 — 06.11.2026
9
48
 
10
49
  ### Added
package/bin/release CHANGED
@@ -52,6 +52,9 @@ git fetch -q origin
52
52
  pnpm install --frozen-lockfile
53
53
  package=$(node -p 'require("./package.json").name')
54
54
  version=$(node -p 'require("./package.json").version')
55
+ # The code released is the code a person checked against the real service (WC-REL-17). Only the template has kit/,
56
+ # and no service to check; every CLI made from it has a template.json too, so that file cannot tell them apart.
57
+ [ -d kit ] || pnpm exec cli-dev live check --version "$version"
55
58
  # A 404 for a package npm has never seen is "not published", like any other failure of `npm view`.
56
59
  published() {
57
60
  npm view "$package@$version" version --prefer-online >/dev/null 2>&1
@@ -76,14 +79,21 @@ land() {
76
79
  pr=$(gh pr create --base main --head "$branch" --title "$title" --body "$body")
77
80
  # Checks register a few seconds after the pull request; --watch with none exits at once.
78
81
  for _ in $(seq 30); do
79
- [ "$(gh pr checks "$pr" --json name --jq length 2>/dev/null || echo 0)" -gt 0 ] && break
82
+ [ "$(gh pr checks "$pr" --required --json name --jq length 2>/dev/null || echo 0)" -gt 0 ] && break
80
83
  sleep 2
81
84
  done
82
- gh pr checks "$pr" --watch --fail-fast >/dev/null ||
85
+ gh pr checks "$pr" --watch --required --fail-fast >/dev/null ||
83
86
  { echo "checks failed on $pr — nothing is published" >&2; exit 1; }
84
87
  git fetch -q origin
85
88
  [ "$(git rev-parse HEAD)" = "$(git rev-parse origin/main)" ] ||
86
89
  { echo "main advanced while $pr was being prepared — stop and review the current version before merging" >&2; exit 1; }
90
+ for _ in $(seq 180); do
91
+ state=$(gh pr view "$pr" --json mergeStateStatus -q .mergeStateStatus)
92
+ case "$state" in CLEAN|HAS_HOOKS|UNSTABLE) break ;; esac
93
+ [ "$(gh pr view "$pr" --json state -q .state)" = CLOSED ] && { echo "$pr was closed without merging" >&2; exit 1; }
94
+ sleep 10
95
+ done
96
+ case "$state" in CLEAN|HAS_HOOKS|UNSTABLE) ;; *) echo "$pr is $state after 30 minutes" >&2; exit 1 ;; esac
87
97
  gh pr merge "$pr" --squash --delete-branch --subject "$title (#${pr##*/})"
88
98
  git fetch -q origin
89
99
  git merge -q --ff-only origin/main
@@ -125,7 +135,11 @@ if [ "$next" != "$version" ]; then
125
135
  const today = new Date().toLocaleDateString("en-GB").replaceAll("/", ".")
126
136
  if (taken) swap("CHANGELOG.md", "\n## Unreleased\n", `\n## ${n} — ${today}\n`)
127
137
  else swap("CHANGELOG.md", `\n## ${o} — `, `\n## ${n} — `)' "$version" "$next" "$taken"
128
- body="bin/release: $why. Only the number changes: package.json, src/version.ts, the CHANGELOG heading."
138
+ body="bin/release: $why. Only the number changes: package.json, src/version.ts, the CHANGELOG heading.
139
+
140
+ ## Conformance
141
+
142
+ The release pull request of $version recorded the checks; this one changes only its number."
129
143
  land "release/$next" "chore(release): $next" "$body"
130
144
  rerun_if_changed "$@"
131
145
  version=$next
package/biome.json CHANGED
@@ -3,6 +3,12 @@
3
3
  "includes": ["**", "!**/node_modules", "!**/dist", "!.worktrees", "!pnpm-lock.yaml", "!config/wirecat"]
4
4
  },
5
5
  "extends": ["./config/wirecat/biome.base.json"],
6
+ "plugins": [
7
+ {
8
+ "path": "./node_modules/@wirecat/cli-base/config/lint/no-own-settings.grit",
9
+ "includes": ["src/**", "!**/*.test.ts", "!src/testing/**"]
10
+ }
11
+ ],
6
12
  "overrides": [
7
13
  {
8
14
  "includes": ["src/**", "!**/*.test.ts"],
@@ -46,5 +46,6 @@
46
46
  "mcp": {
47
47
  "args": ["personal", "mcp", "serve"],
48
48
  "snapshot": "mcp-tools.json"
49
- }
49
+ },
50
+ "deny": { "profile": "personal" }
50
51
  }
@@ -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.16.0\n")
12
+ process.stdout.write("0.18.0\n")
13
13
  } else {
14
14
  // Before the bundle compiles: the bundle's own call comes after its chunks.
15
15
  module.enableCompileCache()
@@ -28,7 +28,7 @@ if (
28
28
  : next(specifier, context),
29
29
  })
30
30
  }
31
- const chunks = ["../bundle/all-profiles-FS7AEOE7.js","../bundle/anthropic-5RN7BGDI.js","../bundle/app-server-WGTKZQKJ.js","../bundle/bun-ILPS6AYA.js","../bundle/bun-sqlite-WK2IGBGD.js","../bundle/decode-QMLOGZ6R.js","../bundle/dist-ESHIQU4M.js","../bundle/echarts-DRDGGHJT.js","../bundle/embed-PIR2LJR2.js","../bundle/embedder-6KBRPAEQ.js","../bundle/first-screen-3T5IXTFL.js","../bundle/instructions-EOQOXY6V.js","../bundle/mcp-7HBLFGCW.js","../bundle/node-52WF2326.js","../bundle/node-P4E63KXA.js","../bundle/node-TLZSIHIJ.js","../bundle/node-sqlite-LIK6OYNF.js","../bundle/oauth-7FVF7HQQ.js","../bundle/open-CRZDEATN.js","../bundle/openai-WAJ6WREQ.js","../bundle/process-YIQPKLZI.js","../bundle/program-ZFFFPBRS.js","../bundle/prompt-QQIVHO3M.js","../bundle/recognize-4KLBZDEC.js","../bundle/remote-BABMZTHA.js","../bundle/rerank-P3IQQJIL.js","../bundle/serve-25SSAKRZ.js","../bundle/server-G4GCDMYI.js","../bundle/server-P4XUYY5A.js","../bundle/state-QCQALQBJ.js","../bundle/store-ZECPRGGH.js","../bundle/store-maintenance-command-ECUO5G6L.js"]
31
+ const chunks = ["../bundle/all-profiles-I2I5Y47S.js","../bundle/anthropic-6KWLOH3O.js","../bundle/app-server-WDHIM77I.js","../bundle/bun-NQS22GBW.js","../bundle/bun-sqlite-ZHYZDAFU.js","../bundle/decode-HHZMCEZF.js","../bundle/dist-ESHIQU4M.js","../bundle/echarts-LYV2DLKU.js","../bundle/embed-BPN3SCZ7.js","../bundle/embedder-NZAL7DVD.js","../bundle/first-screen-6XGF2AKF.js","../bundle/instructions-N2HYCEWN.js","../bundle/mcp-OGWFYUDR.js","../bundle/node-MIHFH7T4.js","../bundle/node-P4E63KXA.js","../bundle/node-TLZSIHIJ.js","../bundle/node-sqlite-FF2SFXPZ.js","../bundle/oauth-72XUHG3K.js","../bundle/open-HL6SSRKY.js","../bundle/openai-DSWDZHQA.js","../bundle/process-5EQF2SZN.js","../bundle/program-QPXFRATG.js","../bundle/prompt-VVRJDKQK.js","../bundle/recognize-T6RIVTQL.js","../bundle/remote-7Z3C3FOG.js","../bundle/rerank-RUFDP7NP.js","../bundle/serve-YZQDRGZW.js","../bundle/server-NDSKEME6.js","../bundle/server-WSFS656N.js","../bundle/state-GOQ4J5RS.js","../bundle/store-KRGXTPKQ.js","../bundle/store-maintenance-command-FNNZ5YCX.js"]
32
32
  if (((words) => words
33
33
  .filter((word) => !word.startsWith("-"))
34
34
  .slice(0, 2)
@@ -2,26 +2,26 @@ import { createRequire as __bundleRequire } from "node:module";
2
2
  const require = __bundleRequire(import.meta.url);
3
3
  import {
4
4
  answeredWire
5
- } from "./chunk-VS5LGSTM.js";
5
+ } from "./chunk-43KXTQB6.js";
6
6
  import {
7
7
  CALLER_META_KEY,
8
8
  PROXY_CLIENT_NAME,
9
9
  StdioServerTransport,
10
10
  callerOf,
11
11
  serveStdio
12
- } from "./chunk-JFXWLQ2L.js";
12
+ } from "./chunk-RQPDYAHW.js";
13
13
  import {
14
14
  McpServer
15
15
  } from "./chunk-5D4AEUVA.js";
16
- import "./chunk-ORV4EGNC.js";
17
- import "./chunk-3WDYHOAF.js";
18
- import "./chunk-WDWP5N6M.js";
16
+ import "./chunk-F2KGCZQP.js";
17
+ import "./chunk-JECGG4TM.js";
18
+ import "./chunk-KMYKWHFH.js";
19
19
  import "./chunk-Y5E2WNWB.js";
20
20
  import {
21
21
  __name
22
22
  } from "./chunk-ZVVMGPBJ.js";
23
23
 
24
- // node_modules/.pnpm/@wirecat+cli-core@0.584.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ab8c0b68b8b4768d5b87d6e249ef10da/node_modules/@wirecat/cli-core/dist/mcp/all-profiles.js
24
+ // node_modules/.pnpm/@wirecat+cli-core@0.598.0_@wirecat+cli-base@0.80.8_commander@15.0.0_esbuild@0.28.2_type_273187b89e8ba0142d0426b4a9bc937e/node_modules/@wirecat/cli-core/dist/mcp/all-profiles.js
25
25
  import { spawn } from "node:child_process";
26
26
  import { randomUUID } from "node:crypto";
27
27
  var PROTOCOL = "2025-06-18";
@@ -255,7 +255,7 @@ var serveAllProfilesOverStdio = /* @__PURE__ */ __name(async (options, io = {})
255
255
  }, "serveAllProfilesOverStdio");
256
256
  var serveAllProfilesOverHttp = /* @__PURE__ */ __name(async (options, http) => {
257
257
  const { build, close } = allProfilesServer(options);
258
- const { serveOverHttp } = await import("./serve-25SSAKRZ.js");
258
+ const { serveOverHttp } = await import("./serve-YZQDRGZW.js");
259
259
  const listening = await serveOverHttp(build, {
260
260
  ...http,
261
261
  appName: options.command,
@@ -2,11 +2,11 @@ import { createRequire as __bundleRequire } from "node:module";
2
2
  const require = __bundleRequire(import.meta.url);
3
3
  import {
4
4
  checkedOptions
5
- } from "./chunk-RYOAQCVJ.js";
5
+ } from "./chunk-RSCHWXF5.js";
6
6
  import {
7
7
  messagesFor,
8
8
  systemFor
9
- } from "./chunk-FMO6F5Q2.js";
9
+ } from "./chunk-RYBCV3CX.js";
10
10
  import {
11
11
  Anthropic
12
12
  } from "./chunk-ADLS6FVG.js";
@@ -15,13 +15,13 @@ import {
15
15
  optional,
16
16
  strictObject,
17
17
  string
18
- } from "./chunk-WDWP5N6M.js";
18
+ } from "./chunk-KMYKWHFH.js";
19
19
  import "./chunk-Y5E2WNWB.js";
20
20
  import {
21
21
  __name
22
22
  } from "./chunk-ZVVMGPBJ.js";
23
23
 
24
- // node_modules/.pnpm/@wirecat+cli-core@0.584.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ab8c0b68b8b4768d5b87d6e249ef10da/node_modules/@wirecat/cli-core/dist/models/anthropic.js
24
+ // node_modules/.pnpm/@wirecat+cli-core@0.598.0_@wirecat+cli-base@0.80.8_commander@15.0.0_esbuild@0.28.2_type_273187b89e8ba0142d0426b4a9bc937e/node_modules/@wirecat/cli-core/dist/models/anthropic.js
25
25
  var options = strictObject({
26
26
  stop_sequences: optional(array(string()))
27
27
  });
@@ -3,47 +3,47 @@ const require = __bundleRequire(import.meta.url);
3
3
  import {
4
4
  PER_RUN,
5
5
  envelope
6
- } from "./chunk-EILS4BTQ.js";
6
+ } from "./chunk-UGPJDNVX.js";
7
7
  import {
8
8
  mcpUrlOf
9
- } from "./chunk-TXHCL75B.js";
9
+ } from "./chunk-EMPBFRAG.js";
10
10
  import {
11
11
  answeredWire
12
- } from "./chunk-VS5LGSTM.js";
12
+ } from "./chunk-43KXTQB6.js";
13
13
  import {
14
14
  answered,
15
15
  failed,
16
16
  registerCommands,
17
17
  runCommandForAgent,
18
18
  toolsFromCommands
19
- } from "./chunk-BPMKAZSS.js";
19
+ } from "./chunk-6K7LOCZA.js";
20
20
  import {
21
21
  agentJson,
22
22
  skillResource
23
- } from "./chunk-WM5AMTRY.js";
23
+ } from "./chunk-YMGJJG3W.js";
24
24
  import {
25
25
  StdioServerTransport,
26
26
  serveStdio
27
- } from "./chunk-JFXWLQ2L.js";
28
- import "./chunk-JJZCPBH3.js";
29
- import "./chunk-ZSY4WAGI.js";
30
- import "./chunk-CTBHQRX6.js";
31
- import "./chunk-5HHIPDNW.js";
32
- import "./chunk-2MWNE4L3.js";
33
- import "./chunk-7Z4HR6GO.js";
27
+ } from "./chunk-RQPDYAHW.js";
28
+ import "./chunk-GBXTIWAE.js";
29
+ import "./chunk-AQGUIORH.js";
30
+ import "./chunk-VDV3WS4O.js";
31
+ import "./chunk-T7657XL5.js";
32
+ import "./chunk-I5HN34YA.js";
33
+ import "./chunk-IKGARE4J.js";
34
34
  import {
35
35
  appInstructions
36
- } from "./chunk-G45R7M42.js";
36
+ } from "./chunk-T6ZLWN7E.js";
37
37
  import {
38
38
  McpServer
39
39
  } from "./chunk-5D4AEUVA.js";
40
40
  import {
41
41
  mcpHttpMarker
42
- } from "./chunk-ETJXPB6A.js";
43
- import "./chunk-C3GNOEJP.js";
44
- import "./chunk-MBBOINK4.js";
45
- import "./chunk-FMO6F5Q2.js";
46
- import "./chunk-MEXT6XDP.js";
42
+ } from "./chunk-NVALUKZU.js";
43
+ import "./chunk-4DHYD37E.js";
44
+ import "./chunk-TMFSNTR2.js";
45
+ import "./chunk-RYBCV3CX.js";
46
+ import "./chunk-CZB5RLXN.js";
47
47
  import {
48
48
  DEFAULT_OUTPUT_BYTES,
49
49
  changesAuthorityAt,
@@ -53,31 +53,31 @@ import {
53
53
  readOnlyLockOf,
54
54
  readsOverMcpAt,
55
55
  rootOf2 as rootOf
56
- } from "./chunk-HTYLT6ME.js";
57
- import "./chunk-ORV4EGNC.js";
58
- import "./chunk-ATHZEV2Z.js";
59
- import "./chunk-VOTEB3AN.js";
60
- import "./chunk-EA3TMI4A.js";
61
- import "./chunk-NVPWZF67.js";
62
- import "./chunk-5KAYQKBK.js";
63
- import "./chunk-3WDYHOAF.js";
64
- import "./chunk-QGOOPPEW.js";
65
- import "./chunk-RFJKNFVF.js";
66
- import "./chunk-3MDNAYQA.js";
67
- import "./chunk-CGFQT3LQ.js";
68
- import "./chunk-Z5NL6YNU.js";
69
- import "./chunk-OF56L2JU.js";
70
- import "./chunk-6WOJIAYA.js";
56
+ } from "./chunk-MJSZEF7M.js";
57
+ import "./chunk-F2KGCZQP.js";
58
+ import "./chunk-6HV2ZUJ7.js";
59
+ import "./chunk-FPC4ESDC.js";
60
+ import "./chunk-CAX65NS4.js";
61
+ import "./chunk-VDXS7GR7.js";
62
+ import "./chunk-FGQC6DQK.js";
63
+ import "./chunk-JECGG4TM.js";
64
+ import "./chunk-G7JA7YXK.js";
65
+ import "./chunk-ERHKHYWL.js";
66
+ import "./chunk-HMP5CI4F.js";
67
+ import "./chunk-L4U3V7OU.js";
68
+ import "./chunk-UESBF7HN.js";
69
+ import "./chunk-UXLB5I2B.js";
70
+ import "./chunk-Q5J3LKRL.js";
71
71
  import {
72
72
  CliError,
73
73
  mcpErrorResult
74
- } from "./chunk-WDWP5N6M.js";
74
+ } from "./chunk-KMYKWHFH.js";
75
75
  import "./chunk-Y5E2WNWB.js";
76
76
  import {
77
77
  __name
78
78
  } from "./chunk-ZVVMGPBJ.js";
79
79
 
80
- // node_modules/.pnpm/@wirecat+cli-core@0.584.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ab8c0b68b8b4768d5b87d6e249ef10da/node_modules/@wirecat/cli-core/dist/mcp/app-server.js
80
+ // node_modules/.pnpm/@wirecat+cli-core@0.598.0_@wirecat+cli-base@0.80.8_commander@15.0.0_esbuild@0.28.2_type_273187b89e8ba0142d0426b4a9bc937e/node_modules/@wirecat/cli-core/dist/mcp/app-server.js
81
81
  var EXCLUDED = [["mcp"]];
82
82
  var createAppServer = /* @__PURE__ */ __name((command, context, options) => {
83
83
  const { app } = options;
@@ -177,9 +177,12 @@ var serveAppOverStdio = /* @__PURE__ */ __name(async (command, context, options)
177
177
  });
178
178
  const ended = await new Promise((resolve) => {
179
179
  wire.ended.then(() => resolve("input"));
180
- if (own)
181
- signal?.addEventListener("abort", () => resolve("stopped"), { once: true });
182
- else {
180
+ if (own) {
181
+ if (signal?.aborted)
182
+ resolve("stopped");
183
+ else
184
+ signal?.addEventListener("abort", () => resolve("stopped"), { once: true });
185
+ } else {
183
186
  process.once("SIGINT", () => resolve("stopped"));
184
187
  process.once("SIGTERM", () => resolve("stopped"));
185
188
  }
@@ -192,7 +195,7 @@ var serveAppOverStdio = /* @__PURE__ */ __name(async (command, context, options)
192
195
  var serveAppOverHttp = /* @__PURE__ */ __name(async (command, context, options, http) => {
193
196
  const { app } = options;
194
197
  const { build } = createAppServer(command, context, options);
195
- const { serveOverHttp } = await import("./serve-25SSAKRZ.js");
198
+ const { serveOverHttp } = await import("./serve-YZQDRGZW.js");
196
199
  const listening = await serveOverHttp(build, {
197
200
  ...http,
198
201
  appName: app.command,
@@ -18,12 +18,12 @@ import {
18
18
  jitCompatCheck,
19
19
  refineSqliteCodecs,
20
20
  sql
21
- } from "./chunk-CGFQT3LQ.js";
21
+ } from "./chunk-L4U3V7OU.js";
22
22
  import {
23
23
  __name
24
24
  } from "./chunk-ZVVMGPBJ.js";
25
25
 
26
- // node_modules/.pnpm/@wirecat+cli-core@0.584.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ab8c0b68b8b4768d5b87d6e249ef10da/node_modules/@wirecat/cli-core/dist/store/sqlite/drizzle/bun.js
26
+ // node_modules/.pnpm/@wirecat+cli-core@0.598.0_@wirecat+cli-base@0.80.8_commander@15.0.0_esbuild@0.28.2_type_273187b89e8ba0142d0426b4a9bc937e/node_modules/@wirecat/cli-core/dist/store/sqlite/drizzle/bun.js
27
27
  import { Database } from "bun:sqlite";
28
28
  var bunSQLiteCodecs = refineSqliteCodecs({
29
29
  "integer:boolean": { normalize: booleanFromInteger },
@@ -3,8 +3,8 @@ const require = __bundleRequire(import.meta.url);
3
3
  import {
4
4
  loadVectorExtension,
5
5
  vectorExtension
6
- } from "./chunk-DEHBTFIC.js";
7
- import "./chunk-WDWP5N6M.js";
6
+ } from "./chunk-KWQSDU3D.js";
7
+ import "./chunk-KMYKWHFH.js";
8
8
  import {
9
9
  importFrom
10
10
  } from "./chunk-Y5E2WNWB.js";
@@ -12,7 +12,7 @@ import {
12
12
  __name
13
13
  } from "./chunk-ZVVMGPBJ.js";
14
14
 
15
- // node_modules/.pnpm/@wirecat+cli-core@0.584.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ab8c0b68b8b4768d5b87d6e249ef10da/node_modules/@wirecat/cli-core/dist/store/drivers/bun-sqlite.js
15
+ // node_modules/.pnpm/@wirecat+cli-core@0.598.0_@wirecat+cli-base@0.80.8_commander@15.0.0_esbuild@0.28.2_type_273187b89e8ba0142d0426b4a9bc937e/node_modules/@wirecat/cli-core/dist/store/drivers/bun-sqlite.js
16
16
  var customised = false;
17
17
  var ownLibrary = /* @__PURE__ */ __name(async () => {
18
18
  try {
@@ -4,7 +4,7 @@ import {
4
4
  __name
5
5
  } from "./chunk-ZVVMGPBJ.js";
6
6
 
7
- // node_modules/.pnpm/@wirecat+cli-core@0.584.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ab8c0b68b8b4768d5b87d6e249ef10da/node_modules/@wirecat/cli-core/dist/mcp/stdio-wire.js
7
+ // node_modules/.pnpm/@wirecat+cli-core@0.598.0_@wirecat+cli-base@0.80.8_commander@15.0.0_esbuild@0.28.2_type_273187b89e8ba0142d0426b4a9bc937e/node_modules/@wirecat/cli-core/dist/mcp/stdio-wire.js
8
8
  import { PassThrough, Writable } from "node:stream";
9
9
  var lineReader = /* @__PURE__ */ __name((onMessage) => {
10
10
  let rest = "";
@@ -2,16 +2,16 @@ import { createRequire as __bundleRequire } from "node:module";
2
2
  const require = __bundleRequire(import.meta.url);
3
3
  import {
4
4
  alive
5
- } from "./chunk-VOTEB3AN.js";
5
+ } from "./chunk-FPC4ESDC.js";
6
6
  import {
7
7
  resolvePaths,
8
8
  writeSecurely
9
- } from "./chunk-WDWP5N6M.js";
9
+ } from "./chunk-KMYKWHFH.js";
10
10
  import {
11
11
  __name
12
12
  } from "./chunk-ZVVMGPBJ.js";
13
13
 
14
- // node_modules/.pnpm/@wirecat+cli-core@0.584.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ab8c0b68b8b4768d5b87d6e249ef10da/node_modules/@wirecat/cli-core/dist/background/lock.js
14
+ // node_modules/.pnpm/@wirecat+cli-core@0.598.0_@wirecat+cli-base@0.80.8_commander@15.0.0_esbuild@0.28.2_type_273187b89e8ba0142d0426b4a9bc937e/node_modules/@wirecat/cli-core/dist/background/lock.js
15
15
  import { existsSync, linkSync, mkdirSync, readdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
16
16
  import { dirname, join } from "node:path";
17
17
  var lockPath = /* @__PURE__ */ __name((app, profile, env) => join(resolvePaths({ appName: app.appName, prefix: app.envPrefix, env }).state, "serve", `${profile}.lock`), "lockPath");
@@ -2,7 +2,7 @@ import { createRequire as __bundleRequire } from "node:module";
2
2
  const require = __bundleRequire(import.meta.url);
3
3
  import {
4
4
  CliError
5
- } from "./chunk-WDWP5N6M.js";
5
+ } from "./chunk-KMYKWHFH.js";
6
6
  import {
7
7
  importFrom
8
8
  } from "./chunk-Y5E2WNWB.js";
@@ -10,10 +10,10 @@ import {
10
10
  __name
11
11
  } from "./chunk-ZVVMGPBJ.js";
12
12
 
13
- // node_modules/.pnpm/@wirecat+cli-core@0.584.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ab8c0b68b8b4768d5b87d6e249ef10da/node_modules/@wirecat/cli-core/dist/speech/recognize.js
13
+ // node_modules/.pnpm/@wirecat+cli-core@0.598.0_@wirecat+cli-base@0.80.8_commander@15.0.0_esbuild@0.28.2_type_273187b89e8ba0142d0426b4a9bc937e/node_modules/@wirecat/cli-core/dist/speech/recognize.js
14
14
  import { createRequire } from "node:module";
15
15
 
16
- // node_modules/.pnpm/@wirecat+cli-core@0.584.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ab8c0b68b8b4768d5b87d6e249ef10da/node_modules/@wirecat/cli-core/dist/speech/ogg-limit.js
16
+ // node_modules/.pnpm/@wirecat+cli-core@0.598.0_@wirecat+cli-base@0.80.8_commander@15.0.0_esbuild@0.28.2_type_273187b89e8ba0142d0426b4a9bc937e/node_modules/@wirecat/cli-core/dist/speech/ogg-limit.js
17
17
  var invalid = /* @__PURE__ */ __name(() => new CliError("validation_error", "local transcription needs a complete mono or stereo Ogg Opus recording"), "invalid");
18
18
  var checkOggDuration = /* @__PURE__ */ __name((bytes) => {
19
19
  const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
@@ -70,7 +70,7 @@ var checkOggDuration = /* @__PURE__ */ __name((bytes) => {
70
70
  throw invalid();
71
71
  }, "checkOggDuration");
72
72
 
73
- // node_modules/.pnpm/@wirecat+cli-core@0.584.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ab8c0b68b8b4768d5b87d6e249ef10da/node_modules/@wirecat/cli-core/dist/speech/recognize.js
73
+ // node_modules/.pnpm/@wirecat+cli-core@0.598.0_@wirecat+cli-base@0.80.8_commander@15.0.0_esbuild@0.28.2_type_273187b89e8ba0142d0426b4a9bc937e/node_modules/@wirecat/cli-core/dist/speech/recognize.js
74
74
  var SAMPLE_RATE = 16e3;
75
75
  var LEAD = SAMPLE_RATE / 2;
76
76
  var toModelRate = /* @__PURE__ */ __name((samples, rate) => {
@@ -3,15 +3,15 @@ const require = __bundleRequire(import.meta.url);
3
3
  import {
4
4
  readSharedSection,
5
5
  writeSharedSection
6
- } from "./chunk-QGOOPPEW.js";
6
+ } from "./chunk-G7JA7YXK.js";
7
7
  import {
8
8
  CliError
9
- } from "./chunk-WDWP5N6M.js";
9
+ } from "./chunk-KMYKWHFH.js";
10
10
  import {
11
11
  __name
12
12
  } from "./chunk-ZVVMGPBJ.js";
13
13
 
14
- // node_modules/.pnpm/@wirecat+cli-core@0.584.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ab8c0b68b8b4768d5b87d6e249ef10da/node_modules/@wirecat/cli-core/dist/cli/setup-answers.js
14
+ // node_modules/.pnpm/@wirecat+cli-core@0.598.0_@wirecat+cli-base@0.80.8_commander@15.0.0_esbuild@0.28.2_type_273187b89e8ba0142d0426b4a9bc937e/node_modules/@wirecat/cli-core/dist/cli/setup-answers.js
15
15
  var PERMISSION_ANSWERS = ["readonly", "allow"];
16
16
  var QUESTIONS = ["languages", "tools", "permissions"];
17
17
  var SECTION = "setup";