@wirecat/cli-template 0.13.1 → 0.14.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 (112) hide show
  1. package/.github/workflows/changelog-guard.yml +1 -1
  2. package/.github/workflows/ci.yml +1 -1
  3. package/.github/workflows/monthly.yml +1 -1
  4. package/.github/workflows/release.yml +44 -10
  5. package/CHANGELOG.md +36 -0
  6. package/config/parity-groups.json +32 -1
  7. package/contracts/mcp-tools.json +100 -0
  8. package/dist/bin/clidev.js +6 -2
  9. package/dist/bundle/{all-profiles-MJ6XSFOO.js → all-profiles-NVB2HT2S.js} +6 -6
  10. package/dist/bundle/{anthropic-W5UKBZUB.js → anthropic-ICTW7CNQ.js} +4 -4
  11. package/dist/bundle/{app-server-EZ46JAHB.js → app-server-B6BCKXR7.js} +40 -38
  12. package/dist/bundle/{bun-HB6O2TTT.js → bun-ILPS6AYA.js} +2 -2
  13. package/dist/bundle/{bun-sqlite-KBXOW2ES.js → bun-sqlite-JE6FJFQT.js} +3 -3
  14. package/dist/bundle/{chunk-KJTNT4SW.js → chunk-2DAXUNTS.js} +2 -2
  15. package/dist/bundle/chunk-3MDNAYQA.js +34 -0
  16. package/dist/bundle/chunk-3WDYHOAF.js +91 -0
  17. package/dist/bundle/{chunk-EGRB55FF.js → chunk-45244QQ6.js} +14 -12
  18. package/dist/bundle/{chunk-JHO2LL2J.js → chunk-4PA6DJ7F.js} +7 -7
  19. package/dist/bundle/{chunk-FZZIU4B7.js → chunk-5SAF3XOL.js} +8196 -5601
  20. package/dist/bundle/chunk-62JRF2JA.js +35 -0
  21. package/dist/bundle/{chunk-TGB5F7NC.js → chunk-66VMJGV6.js} +4 -4
  22. package/dist/bundle/{chunk-V3ZTQ24B.js → chunk-6AW4DDK4.js} +4 -4
  23. package/dist/bundle/{chunk-PJOVK7PG.js → chunk-7F5VMLVK.js} +49 -24
  24. package/dist/bundle/{chunk-MFS52LTZ.js → chunk-7Z4HR6GO.js} +1 -1
  25. package/dist/bundle/{chunk-E42W72PQ.js → chunk-AS2PJNQ2.js} +7 -5
  26. package/dist/bundle/{chunk-SVDF6NJF.js → chunk-ASHVHS52.js} +14 -14
  27. package/dist/bundle/{chunk-N2Z3MCOF.js → chunk-BEBD27QT.js} +37 -35
  28. package/dist/bundle/{chunk-IGHEW777.js → chunk-BM5ZCDPQ.js} +5 -40
  29. package/dist/bundle/{chunk-AK257OMS.js → chunk-BVLPNNEL.js} +209 -78
  30. package/dist/bundle/{chunk-ERKR3VJ5.js → chunk-BWBZCYUN.js} +141 -46
  31. package/dist/bundle/{chunk-Z7MSIRSQ.js → chunk-CGFQT3LQ.js} +1 -1
  32. package/dist/bundle/{chunk-QKWRL4OD.js → chunk-DQIBGCF3.js} +6 -6
  33. package/dist/bundle/{chunk-RUKDZEID.js → chunk-DZLHY4IA.js} +3 -3
  34. package/dist/bundle/{chunk-TAYOKLGF.js → chunk-EMHCXXNJ.js} +7 -6
  35. package/dist/bundle/{chunk-IBBN7Z3A.js → chunk-F34HGYWF.js} +12 -3
  36. package/dist/bundle/{chunk-ERGB4NJA.js → chunk-G45R7M42.js} +1 -1
  37. package/dist/bundle/{chunk-ZLY6GUAS.js → chunk-G7W53MQP.js} +3 -3
  38. package/dist/bundle/{chunk-JAOGZMKQ.js → chunk-GUFPQZUA.js} +2 -2
  39. package/dist/bundle/{chunk-4LURWBVV.js → chunk-HYTHTSJP.js} +188 -22
  40. package/dist/bundle/{chunk-EFHLQXG6.js → chunk-IOJ2DTCY.js} +162 -55
  41. package/dist/bundle/{chunk-L5WWMP5M.js → chunk-IZKXJJ7V.js} +121 -31
  42. package/dist/bundle/{chunk-NOVLCHDV.js → chunk-LATYBJ4T.js} +2 -2
  43. package/dist/bundle/{chunk-QBP7OMN5.js → chunk-LFLSV353.js} +2 -2
  44. package/dist/bundle/{chunk-HDY5X3WQ.js → chunk-LU4A2T7Y.js} +4 -4
  45. package/dist/bundle/{chunk-JRK73FOW.js → chunk-NENYWEXF.js} +1 -1
  46. package/dist/bundle/{chunk-2B5U4Z5H.js → chunk-NH6LZ3H3.js} +8 -13
  47. package/dist/bundle/{chunk-OV6PHTAY.js → chunk-NVNUUHT5.js} +17130 -2232
  48. package/dist/bundle/chunk-PIJUGF5F.js +392 -0
  49. package/dist/bundle/{chunk-7IXL4UFK.js → chunk-PX2KP4QE.js} +8 -8
  50. package/dist/bundle/{chunk-N5GXKDBC.js → chunk-QXOSPYM3.js} +1 -1
  51. package/dist/bundle/{chunk-PBN4RBHS.js → chunk-R2JKPHH5.js} +8 -8
  52. package/dist/bundle/{chunk-PDGXMKJS.js → chunk-R5RYPD23.js} +2 -2
  53. package/dist/bundle/{chunk-QJ6XW4DM.js → chunk-RJ7AS7UB.js} +6210 -1207
  54. package/dist/bundle/{chunk-35KYY65W.js → chunk-SOYOOU2D.js} +3 -3
  55. package/dist/bundle/{chunk-FDBINRWA.js → chunk-TJJ2XSJP.js} +5 -5
  56. package/dist/bundle/{chunk-O3UXNU3S.js → chunk-U6QD3J3F.js} +3 -3
  57. package/dist/bundle/{chunk-YJNUDHJD.js → chunk-UT5TQ6MD.js} +139 -35
  58. package/dist/bundle/{chunk-VYSUKHKL.js → chunk-VOTEB3AN.js} +1 -1
  59. package/dist/bundle/{chunk-IN3FVRPK.js → chunk-VS5LGSTM.js} +1 -1
  60. package/dist/bundle/{chunk-MJRSEUKG.js → chunk-VXOR76ZL.js} +13 -89
  61. package/dist/bundle/{chunk-CXQXVKUY.js → chunk-YIVY2WI3.js} +1 -1
  62. package/dist/bundle/{chunk-VLNKTMV7.js → chunk-YOJLIVGO.js} +959 -350
  63. package/dist/bundle/clidev.js +3 -3
  64. package/dist/bundle/command-contract-JMVMT5HT.js +28 -0
  65. package/dist/bundle/{decode-AMXUVKNY.js → decode-NXB5UKMO.js} +18 -16
  66. package/dist/bundle/{echarts-GJDMQ2AQ.js → echarts-DRDGGHJT.js} +2 -2
  67. package/dist/bundle/{embed-L4CRZ2XQ.js → embed-IKZ24BMC.js} +4 -4
  68. package/dist/bundle/{embedder-IBGV4M2K.js → embedder-GMQ24DOQ.js} +7 -7
  69. package/dist/bundle/{first-run-VTKC2IBV.js → first-run-MDD4SIUK.js} +8 -8
  70. package/dist/bundle/first-screen-376CXGXJ.js +26 -0
  71. package/dist/bundle/{instructions-YJECS4KN.js → instructions-EOQOXY6V.js} +1 -1
  72. package/dist/bundle/{mcp-OQBZXELQ.js → mcp-7HBLFGCW.js} +2 -2
  73. package/dist/bundle/mcp-KHUZOJO6.js +82 -0
  74. package/dist/bundle/{mcp-7XPOACO4.js → mcp-MZHWJXAE.js} +38 -37
  75. package/dist/bundle/{node-NQG4EVZR.js → node-52WF2326.js} +2 -2
  76. package/dist/bundle/{node-sqlite-BR7F3BLB.js → node-sqlite-73Z4SFOA.js} +9 -3
  77. package/dist/bundle/{oauth-J7UAWNIK.js → oauth-EVTPAMZP.js} +5 -5
  78. package/dist/bundle/{open-BR47R5UE.js → open-46WZAPJ3.js} +3 -2
  79. package/dist/bundle/openai-GWRDAHDU.js +248 -0
  80. package/dist/bundle/{process-66I7RDPJ.js → process-YIQPKLZI.js} +1 -1
  81. package/dist/bundle/{program-ZNXLJ3D2.js → program-B3CY3FP7.js} +11346 -9559
  82. package/dist/bundle/{prompt-NE5JJ7UP.js → prompt-IVEYRLS5.js} +3 -3
  83. package/dist/bundle/{recognize-GC3YFVIA.js → recognize-WVEKHODM.js} +4 -2
  84. package/dist/bundle/{remote-QELOMKQM.js → remote-4K5VPMC7.js} +5 -5
  85. package/dist/bundle/{rerank-BH6TZ2SP.js → rerank-V24UJZYJ.js} +5 -5
  86. package/dist/bundle/{serve-WWLRNDT2.js → serve-PJWSOV7F.js} +7 -7
  87. package/dist/bundle/server-2ZN7KZHZ.js +40 -0
  88. package/dist/bundle/server-5VYM7CCF.js +53 -0
  89. package/dist/bundle/{state-2BEGXAMO.js → state-ZPYGECVP.js} +4 -4
  90. package/dist/bundle/{store-AH6WZMCF.js → store-6JQCLPQF.js} +14 -9
  91. package/dist/bundle/store-maintenance-command-7XICIYHW.js +42 -0
  92. package/dist/version.d.ts +1 -1
  93. package/dist/version.js +1 -1
  94. package/docs/commands.md +37 -11
  95. package/docs/dev/reference-clis.md +1 -1
  96. package/docs/dev/skills/design-interview/SKILL.md +2 -2
  97. package/docs/dev/test-matrix.md +5 -1
  98. package/kit/dist/interview.js +1 -0
  99. package/kit/dist/new.js +8 -3
  100. package/package.json +3 -3
  101. package/src/program.test.ts +56 -0
  102. package/src/version.ts +1 -1
  103. package/dist/bundle/chunk-IDWW4TU2.js +0 -18
  104. package/dist/bundle/chunk-MUSYGFCY.js +0 -3556
  105. package/dist/bundle/chunk-O5EHUB2V.js +0 -2
  106. package/dist/bundle/command-contract-75VJ36U4.js +0 -29
  107. package/dist/bundle/first-screen-X5IJKBSU.js +0 -27
  108. package/dist/bundle/mcp-RDZGYPSY.js +0 -78
  109. package/dist/bundle/server-DE6NLNUF.js +0 -52
  110. package/dist/bundle/server-ZPSQKOAH.js +0 -39
  111. package/dist/bundle/store-maintenance-command-PBXX3IEV.js +0 -40
  112. /package/dist/bundle/{chunk-GOO67PDU.js → chunk-NL2DQPT7.js} +0 -0
@@ -9,4 +9,4 @@ permissions:
9
9
 
10
10
  jobs:
11
11
  changelog:
12
- uses: WireCatLabs/cli-base/.github/workflows/changelog-guard.yml@08d954b245268c7552a2d33a9ed4c78743784e5a # v0.61.2
12
+ uses: WireCatLabs/cli-base/.github/workflows/changelog-guard.yml@bff94fff66ae17bde081de343fb8cd56d66602e0 # v0.77.1
@@ -19,7 +19,7 @@ permissions:
19
19
 
20
20
  jobs:
21
21
  ci:
22
- uses: WireCatLabs/cli-base/.github/workflows/node-ci.yml@08d954b245268c7552a2d33a9ed4c78743784e5a # v0.61.2
22
+ uses: WireCatLabs/cli-base/.github/workflows/node-ci.yml@bff94fff66ae17bde081de343fb8cd56d66602e0 # v0.77.1
23
23
  with:
24
24
  pack: ${{ inputs.pack || false }}
25
25
  bun-run: pnpm build && pnpm smoke:bun
@@ -22,7 +22,7 @@ jobs:
22
22
  contents: read
23
23
  actions: read
24
24
  security-events: write
25
- uses: WireCatLabs/cli-base/.github/workflows/release-checks.yml@08d954b245268c7552a2d33a9ed4c78743784e5a # v0.61.2
25
+ uses: WireCatLabs/cli-base/.github/workflows/release-checks.yml@bff94fff66ae17bde081de343fb8cd56d66602e0 # v0.77.1
26
26
  with:
27
27
  dependencies: true
28
28
  languages: '["actions","javascript-typescript"]'
@@ -56,7 +56,7 @@ jobs:
56
56
  contents: read
57
57
  actions: read
58
58
  security-events: write
59
- uses: WireCatLabs/cli-base/.github/workflows/release-checks.yml@08d954b245268c7552a2d33a9ed4c78743784e5a # v0.61.2
59
+ uses: WireCatLabs/cli-base/.github/workflows/release-checks.yml@bff94fff66ae17bde081de343fb8cd56d66602e0 # v0.77.1
60
60
 
61
61
  build:
62
62
  needs: [checks, validation]
@@ -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,42 @@ 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.14.0 — 06.11.2026
9
+
10
+ ### Added
11
+
12
+ - **The skeleton runs on cli-core 0.584.0 and cli-base 0.77.1.** cli-core 0.584 is the newest; its peer range takes
13
+ cli-base `>=0.76.0 <0.78.0`, so cli-base stays at 0.77.1, not 0.78.0. A new CLI gets the shared `config migrate`,
14
+ `config repair` (with `--dry-run`) and the global `--compact`, each with a test, the error code `conflict` (exit 15)
15
+ and the `page.total` and `meta.now` fields in its MCP schemas. The reusable workflows in `.github/` move from
16
+ cli-base v0.61.2 to v0.77.1; their files are the same. A CLI gets the workflow pins from `upgrade`. `package.json`,
17
+ `contracts/` and the docs belong to the CLI, so it raises cli-core and cli-base itself and regenerates
18
+ `contracts/mcp-tools.json` and `docs/commands.md`.
19
+ - **CRM is a category of its own.** `new --category crm` and the design interview offer "CRM (sales: deals, contacts,
20
+ companies)". It has no reference CLI yet, so `AGENTS.md` asks to pick the nearest one with the owner, and the CLI
21
+ keeps `messenger: false`.
22
+
23
+ ### Changed — may break callers
24
+
25
+ - **`config show`, `set` and `unset` no longer offer the messenger-only `--bot`, `--personal`, `speech_model` and
26
+ `picture_search`** (cli-core 0.565). A script that passes them gets an error.
27
+
28
+ ### Fixed
29
+
30
+ - **`new` no longer copies the template's own description into the new CLI's `package.json`.** It writes a neutral
31
+ placeholder, and the first task in `DESIGN.md` says to rewrite it with `README.md`.
32
+
33
+ ## 0.13.2 — 03.11.2026
34
+
35
+ ### Fixed
36
+
37
+ - **`release.yml` publishes only the file the build checked.** `build` passes the sha256 of the package it uploads to
38
+ `publish`, which checks it before `npm publish`. A CLI that changes the package after the check must unpack the new
39
+ file and compare it with the checked one in `build`; gcal-cli does this for its Google client.
40
+ - **The ClawHub dry run gets no OIDC token.** `clawhub-dry-run` called ClawHub's shared workflow, which asks for
41
+ `id-token: write` while it runs ClawHub's code outside the `npm` environment. It now runs the same pinned ClawHub
42
+ CLI directly with `--dry-run`, as the `clawhub` job already did. A CLI gets both from `upgrade`.
43
+
8
44
  ## 0.13.1 — 02.11.2026
9
45
 
10
46
  ### Fixed
@@ -9,7 +9,38 @@
9
9
  "name": "template-config",
10
10
  "members": ["clidev", "tg", "max", "wa"],
11
11
  "covers": ["config"],
12
- "differences": []
12
+ "differences": [
13
+ {
14
+ "rule": "same-path-contract",
15
+ "target": "config set --bot",
16
+ "absent": "clidev",
17
+ "reason": "cli-core 0.565 offers the personal and bot sections of the config file only to a messenger CLI; the template is not one"
18
+ },
19
+ {
20
+ "rule": "same-path-contract",
21
+ "target": "config set --personal",
22
+ "absent": "clidev",
23
+ "reason": "cli-core 0.565 offers the personal and bot sections of the config file only to a messenger CLI; the template is not one"
24
+ },
25
+ {
26
+ "rule": "same-path-contract",
27
+ "target": "config show --bot",
28
+ "absent": "clidev",
29
+ "reason": "cli-core 0.565 offers the personal and bot sections of the config file only to a messenger CLI; the template is not one"
30
+ },
31
+ {
32
+ "rule": "same-path-contract",
33
+ "target": "config unset --bot",
34
+ "absent": "clidev",
35
+ "reason": "cli-core 0.565 offers the personal and bot sections of the config file only to a messenger CLI; the template is not one"
36
+ },
37
+ {
38
+ "rule": "same-path-contract",
39
+ "target": "config unset --personal",
40
+ "absent": "clidev",
41
+ "reason": "cli-core 0.565 offers the personal and bot sections of the config file only to a messenger CLI; the template is not one"
42
+ }
43
+ ]
13
44
  },
14
45
  {
15
46
  "name": "template-skill",
@@ -73,6 +73,7 @@
73
73
  "provider_unavailable",
74
74
  "invalid_response",
75
75
  "outcome_unknown",
76
+ "conflict",
76
77
  "cancelled"
77
78
  ],
78
79
  "type": "string"
@@ -91,6 +92,15 @@
91
92
  },
92
93
  "type": "array"
93
94
  },
95
+ "now": {
96
+ "format": "date-time",
97
+ "pattern": "Z$",
98
+ "type": "string"
99
+ },
100
+ "now_local": {
101
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{2}:\\d{2}$",
102
+ "type": "string"
103
+ },
94
104
  "run_id": {
95
105
  "pattern": "\\S",
96
106
  "type": "string"
@@ -228,6 +238,21 @@
228
238
  "next_page": {
229
239
  "minimum": 2,
230
240
  "type": "integer"
241
+ },
242
+ "total": {
243
+ "additionalProperties": false,
244
+ "properties": {
245
+ "relation": {
246
+ "enum": ["eq", "gte"],
247
+ "type": "string"
248
+ },
249
+ "value": {
250
+ "minimum": 0,
251
+ "type": "integer"
252
+ }
253
+ },
254
+ "required": ["value", "relation"],
255
+ "type": "object"
231
256
  }
232
257
  },
233
258
  "required": ["mode", "limit", "has_more"],
@@ -249,6 +274,21 @@
249
274
  "next_cursor": {
250
275
  "pattern": "\\S",
251
276
  "type": "string"
277
+ },
278
+ "total": {
279
+ "additionalProperties": false,
280
+ "properties": {
281
+ "relation": {
282
+ "enum": ["eq", "gte"],
283
+ "type": "string"
284
+ },
285
+ "value": {
286
+ "minimum": 0,
287
+ "type": "integer"
288
+ }
289
+ },
290
+ "required": ["value", "relation"],
291
+ "type": "object"
252
292
  }
253
293
  },
254
294
  "required": ["mode", "limit", "has_more"],
@@ -300,6 +340,7 @@
300
340
  "provider_unavailable",
301
341
  "invalid_response",
302
342
  "outcome_unknown",
343
+ "conflict",
303
344
  "cancelled"
304
345
  ],
305
346
  "type": "string"
@@ -318,6 +359,15 @@
318
359
  },
319
360
  "type": "array"
320
361
  },
362
+ "now": {
363
+ "format": "date-time",
364
+ "pattern": "Z$",
365
+ "type": "string"
366
+ },
367
+ "now_local": {
368
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{2}:\\d{2}$",
369
+ "type": "string"
370
+ },
321
371
  "run_id": {
322
372
  "pattern": "\\S",
323
373
  "type": "string"
@@ -547,6 +597,7 @@
547
597
  "provider_unavailable",
548
598
  "invalid_response",
549
599
  "outcome_unknown",
600
+ "conflict",
550
601
  "cancelled"
551
602
  ],
552
603
  "type": "string"
@@ -565,6 +616,15 @@
565
616
  },
566
617
  "type": "array"
567
618
  },
619
+ "now": {
620
+ "format": "date-time",
621
+ "pattern": "Z$",
622
+ "type": "string"
623
+ },
624
+ "now_local": {
625
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{2}:\\d{2}$",
626
+ "type": "string"
627
+ },
568
628
  "run_id": {
569
629
  "pattern": "\\S",
570
630
  "type": "string"
@@ -702,6 +762,21 @@
702
762
  "next_page": {
703
763
  "minimum": 2,
704
764
  "type": "integer"
765
+ },
766
+ "total": {
767
+ "additionalProperties": false,
768
+ "properties": {
769
+ "relation": {
770
+ "enum": ["eq", "gte"],
771
+ "type": "string"
772
+ },
773
+ "value": {
774
+ "minimum": 0,
775
+ "type": "integer"
776
+ }
777
+ },
778
+ "required": ["value", "relation"],
779
+ "type": "object"
705
780
  }
706
781
  },
707
782
  "required": ["mode", "limit", "has_more"],
@@ -723,6 +798,21 @@
723
798
  "next_cursor": {
724
799
  "pattern": "\\S",
725
800
  "type": "string"
801
+ },
802
+ "total": {
803
+ "additionalProperties": false,
804
+ "properties": {
805
+ "relation": {
806
+ "enum": ["eq", "gte"],
807
+ "type": "string"
808
+ },
809
+ "value": {
810
+ "minimum": 0,
811
+ "type": "integer"
812
+ }
813
+ },
814
+ "required": ["value", "relation"],
815
+ "type": "object"
726
816
  }
727
817
  },
728
818
  "required": ["mode", "limit", "has_more"],
@@ -774,6 +864,7 @@
774
864
  "provider_unavailable",
775
865
  "invalid_response",
776
866
  "outcome_unknown",
867
+ "conflict",
777
868
  "cancelled"
778
869
  ],
779
870
  "type": "string"
@@ -792,6 +883,15 @@
792
883
  },
793
884
  "type": "array"
794
885
  },
886
+ "now": {
887
+ "format": "date-time",
888
+ "pattern": "Z$",
889
+ "type": "string"
890
+ },
891
+ "now_local": {
892
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{2}:\\d{2}$",
893
+ "type": "string"
894
+ },
795
895
  "run_id": {
796
896
  "pattern": "\\S",
797
897
  "type": "string"
@@ -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.14.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,8 +28,12 @@ if (
28
28
  : next(specifier, context),
29
29
  })
30
30
  }
31
+ const chunks = ["../bundle/all-profiles-NVB2HT2S.js","../bundle/anthropic-ICTW7CNQ.js","../bundle/app-server-B6BCKXR7.js","../bundle/bun-ILPS6AYA.js","../bundle/bun-sqlite-JE6FJFQT.js","../bundle/decode-NXB5UKMO.js","../bundle/dist-ESHIQU4M.js","../bundle/echarts-DRDGGHJT.js","../bundle/embed-IKZ24BMC.js","../bundle/embedder-GMQ24DOQ.js","../bundle/first-screen-376CXGXJ.js","../bundle/instructions-EOQOXY6V.js","../bundle/mcp-7HBLFGCW.js","../bundle/mcp-KHUZOJO6.js","../bundle/mcp-MZHWJXAE.js","../bundle/node-52WF2326.js","../bundle/node-P4E63KXA.js","../bundle/node-TLZSIHIJ.js","../bundle/node-sqlite-73Z4SFOA.js","../bundle/oauth-EVTPAMZP.js","../bundle/open-46WZAPJ3.js","../bundle/openai-GWRDAHDU.js","../bundle/process-YIQPKLZI.js","../bundle/program-B3CY3FP7.js","../bundle/prompt-IVEYRLS5.js","../bundle/recognize-WVEKHODM.js","../bundle/remote-4K5VPMC7.js","../bundle/rerank-V24UJZYJ.js","../bundle/serve-PJWSOV7F.js","../bundle/server-2ZN7KZHZ.js","../bundle/server-5VYM7CCF.js","../bundle/state-ZPYGECVP.js","../bundle/store-6JQCLPQF.js","../bundle/store-maintenance-command-7XICIYHW.js"]
32
+ if (((words) => words
33
+ .filter((word) => !word.startsWith("-"))
34
+ .slice(0, 2)
35
+ .includes("upgrade"))(words)) await Promise.allSettled(chunks.map((chunk) => import(chunk)))
31
36
  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"]
33
37
  // After the server answers its first request, so it starts no later.
34
38
  if (serves) setTimeout(() => void Promise.allSettled(chunks.map((chunk) => import(chunk))), 2000).unref()
35
39
  await running
@@ -6,13 +6,13 @@ import {
6
6
  serveAllProfilesOverHttp,
7
7
  serveAllProfilesOverStdio,
8
8
  withProfile
9
- } from "./chunk-HDY5X3WQ.js";
10
- import "./chunk-IN3FVRPK.js";
11
- import "./chunk-IBBN7Z3A.js";
9
+ } from "./chunk-LU4A2T7Y.js";
10
+ import "./chunk-VS5LGSTM.js";
11
+ import "./chunk-F34HGYWF.js";
12
12
  import "./chunk-5D4AEUVA.js";
13
- import "./chunk-MJRSEUKG.js";
14
- import "./chunk-O5EHUB2V.js";
15
- import "./chunk-EFHLQXG6.js";
13
+ import "./chunk-VXOR76ZL.js";
14
+ import "./chunk-3WDYHOAF.js";
15
+ import "./chunk-IOJ2DTCY.js";
16
16
  import "./chunk-Y5E2WNWB.js";
17
17
  import "./chunk-ZVVMGPBJ.js";
18
18
  export {
@@ -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-PDGXMKJS.js";
5
+ } from "./chunk-R5RYPD23.js";
6
6
  import {
7
7
  messagesFor,
8
8
  systemFor
9
- } from "./chunk-NOVLCHDV.js";
9
+ } from "./chunk-LATYBJ4T.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-EFHLQXG6.js";
18
+ } from "./chunk-IOJ2DTCY.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.495.0_@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_type_24cca5e5c8b0984f2f26e7d1ba6b6d47/node_modules/@wirecat/cli-core/dist/models/anthropic.js
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
25
25
  var options = strictObject({
26
26
  stop_sequences: optional(array(string()))
27
27
  });
@@ -3,81 +3,82 @@ const require = __bundleRequire(import.meta.url);
3
3
  import {
4
4
  PER_RUN,
5
5
  envelope
6
- } from "./chunk-N2Z3MCOF.js";
7
- import "./chunk-ERKR3VJ5.js";
6
+ } from "./chunk-BEBD27QT.js";
7
+ import "./chunk-BWBZCYUN.js";
8
8
  import {
9
9
  mcpUrlOf
10
- } from "./chunk-JAOGZMKQ.js";
10
+ } from "./chunk-GUFPQZUA.js";
11
11
  import {
12
12
  answeredWire
13
- } from "./chunk-IN3FVRPK.js";
13
+ } from "./chunk-VS5LGSTM.js";
14
14
  import {
15
15
  answered,
16
16
  failed,
17
17
  registerCommands,
18
18
  runCommandForAgent,
19
19
  toolsFromCommands
20
- } from "./chunk-YJNUDHJD.js";
20
+ } from "./chunk-UT5TQ6MD.js";
21
21
  import {
22
22
  agentJson,
23
23
  skillResource
24
- } from "./chunk-4LURWBVV.js";
24
+ } from "./chunk-HYTHTSJP.js";
25
25
  import {
26
26
  StdioServerTransport,
27
27
  serveStdio
28
- } from "./chunk-IBBN7Z3A.js";
29
- import "./chunk-L5WWMP5M.js";
30
- import "./chunk-FZZIU4B7.js";
31
- import "./chunk-KJTNT4SW.js";
32
- import "./chunk-E42W72PQ.js";
33
- import "./chunk-MFS52LTZ.js";
28
+ } from "./chunk-F34HGYWF.js";
29
+ import "./chunk-IZKXJJ7V.js";
30
+ import "./chunk-5SAF3XOL.js";
31
+ import "./chunk-PIJUGF5F.js";
32
+ import "./chunk-2DAXUNTS.js";
33
+ import "./chunk-AS2PJNQ2.js";
34
+ import "./chunk-7Z4HR6GO.js";
34
35
  import {
35
36
  appInstructions
36
- } from "./chunk-ERGB4NJA.js";
37
+ } from "./chunk-G45R7M42.js";
37
38
  import {
38
39
  McpServer
39
40
  } from "./chunk-5D4AEUVA.js";
40
41
  import {
41
42
  mcpHttpMarker
42
- } from "./chunk-V3ZTQ24B.js";
43
- import "./chunk-RUKDZEID.js";
44
- import "./chunk-OV6PHTAY.js";
45
- import "./chunk-PBN4RBHS.js";
46
- import "./chunk-35KYY65W.js";
47
- import "./chunk-NOVLCHDV.js";
48
- import "./chunk-IGHEW777.js";
49
- import "./chunk-MUSYGFCY.js";
43
+ } from "./chunk-6AW4DDK4.js";
44
+ import "./chunk-DZLHY4IA.js";
45
+ import "./chunk-SOYOOU2D.js";
46
+ import "./chunk-LATYBJ4T.js";
47
+ import "./chunk-BM5ZCDPQ.js";
50
48
  import {
51
49
  DEFAULT_OUTPUT_BYTES,
52
50
  changesAuthorityAt,
53
51
  describeProgram,
54
52
  environmentOf,
55
- fetchesOnlyAt,
56
53
  judgedTargets,
57
54
  readOnlyLockOf,
55
+ readsOverMcpAt,
58
56
  rootOf2 as rootOf
59
- } from "./chunk-QJ6XW4DM.js";
60
- import "./chunk-MJRSEUKG.js";
61
- import "./chunk-O3UXNU3S.js";
62
- import "./chunk-VYSUKHKL.js";
63
- import "./chunk-VLNKTMV7.js";
64
- import "./chunk-O5EHUB2V.js";
65
- import "./chunk-FDBINRWA.js";
66
- import "./chunk-QKWRL4OD.js";
67
- import "./chunk-EGRB55FF.js";
68
- import "./chunk-IDWW4TU2.js";
69
- import "./chunk-2B5U4Z5H.js";
57
+ } from "./chunk-RJ7AS7UB.js";
58
+ import "./chunk-VXOR76ZL.js";
59
+ import "./chunk-U6QD3J3F.js";
60
+ import "./chunk-VOTEB3AN.js";
61
+ import "./chunk-NVNUUHT5.js";
62
+ import "./chunk-R2JKPHH5.js";
63
+ import "./chunk-YOJLIVGO.js";
64
+ import "./chunk-3WDYHOAF.js";
65
+ import "./chunk-TJJ2XSJP.js";
66
+ import "./chunk-NH6LZ3H3.js";
67
+ import "./chunk-3MDNAYQA.js";
68
+ import "./chunk-CGFQT3LQ.js";
69
+ import "./chunk-DQIBGCF3.js";
70
+ import "./chunk-45244QQ6.js";
71
+ import "./chunk-62JRF2JA.js";
70
72
  import {
71
73
  CliError,
72
74
  mcpErrorResult
73
- } from "./chunk-EFHLQXG6.js";
75
+ } from "./chunk-IOJ2DTCY.js";
74
76
  import "./chunk-Y5E2WNWB.js";
75
- import "./chunk-Z7MSIRSQ.js";
76
77
  import {
77
78
  __name
78
79
  } from "./chunk-ZVVMGPBJ.js";
79
80
 
80
- // node_modules/.pnpm/@wirecat+cli-core@0.495.0_@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_type_24cca5e5c8b0984f2f26e7d1ba6b6d47/node_modules/@wirecat/cli-core/dist/mcp/app-server.js
81
+ // 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
81
82
  var EXCLUDED = [["mcp"]];
82
83
  var createAppServer = /* @__PURE__ */ __name((command, context, options) => {
83
84
  const { app } = options;
@@ -101,7 +102,7 @@ var createAppServer = /* @__PURE__ */ __name((command, context, options) => {
101
102
  currentLevels: levels,
102
103
  readOnly: readOnly(),
103
104
  authority,
104
- fetchOnly: fetchesOnlyAt(root),
105
+ fetchOnly: readsOverMcpAt(root),
105
106
  permissions: options.permissions
106
107
  });
107
108
  const availability = /* @__PURE__ */ __name((one) => () => {
@@ -192,10 +193,11 @@ var serveAppOverStdio = /* @__PURE__ */ __name(async (command, context, options)
192
193
  var serveAppOverHttp = /* @__PURE__ */ __name(async (command, context, options, http) => {
193
194
  const { app } = options;
194
195
  const { build } = createAppServer(command, context, options);
195
- const { serveOverHttp } = await import("./serve-WWLRNDT2.js");
196
+ const { serveOverHttp } = await import("./serve-PJWSOV7F.js");
196
197
  const listening = await serveOverHttp(build, {
197
198
  ...http,
198
199
  appName: app.command,
200
+ reaches: `your ${options.name}`,
199
201
  onCode: /* @__PURE__ */ __name((code, expires) => context.renderer.note(context.env[mcpHttpMarker(app.envPrefix)] === void 0 ? `login code for a new browser app: ${code} (until ${expires.toTimeString().slice(0, 5)}; a new one after each login)` : `a new login code for a browser app: \`${app.command} ${context.settings.profile} mcp server status\``), "onCode"),
200
202
  onError: /* @__PURE__ */ __name((error) => context.renderer.note(`mcp: ${error.message}`), "onError")
201
203
  }).catch((error) => {
@@ -18,12 +18,12 @@ import {
18
18
  jitCompatCheck,
19
19
  refineSqliteCodecs,
20
20
  sql
21
- } from "./chunk-Z7MSIRSQ.js";
21
+ } from "./chunk-CGFQT3LQ.js";
22
22
  import {
23
23
  __name
24
24
  } from "./chunk-ZVVMGPBJ.js";
25
25
 
26
- // node_modules/.pnpm/@wirecat+cli-core@0.495.0_@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_type_24cca5e5c8b0984f2f26e7d1ba6b6d47/node_modules/@wirecat/cli-core/dist/store/sqlite/drizzle/bun.js
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
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-QBP7OMN5.js";
7
- import "./chunk-EFHLQXG6.js";
6
+ } from "./chunk-LFLSV353.js";
7
+ import "./chunk-IOJ2DTCY.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.495.0_@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_type_24cca5e5c8b0984f2f26e7d1ba6b6d47/node_modules/@wirecat/cli-core/dist/store/drivers/bun-sqlite.js
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
16
16
  var customised = false;
17
17
  var ownLibrary = /* @__PURE__ */ __name(async () => {
18
18
  try {