@wirecat/cli-template 0.15.0 → 0.17.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.
- package/.github/workflows/ci.yml +35 -0
- package/.github/workflows/release-pr.yml +37 -0
- package/AGENTS.md +56 -2
- package/CHANGELOG.md +50 -0
- package/README.md +12 -4
- package/bin/release +10 -3
- package/biome.json +8 -2
- package/contracts/mcp-tools.json +2 -2
- package/contracts/plan.json +2 -1
- package/dist/bin/clidev.js +2 -2
- package/dist/bundle/{chunk-LU4A2T7Y.js → all-profiles-CCT2XPJL.js} +10 -7
- package/dist/bundle/{anthropic-ICTW7CNQ.js → anthropic-QLLP7EE4.js} +4 -4
- package/dist/bundle/{app-server-OW5LT5XV.js → app-server-ELI5TGL7.js} +36 -37
- package/dist/bundle/{bun-ILPS6AYA.js → bun-C7JS2V7G.js} +2 -2
- package/dist/bundle/{bun-sqlite-JE6FJFQT.js → bun-sqlite-OM72TCYT.js} +3 -3
- package/dist/bundle/{chunk-7F5VMLVK.js → chunk-2Y5NBD7U.js} +4 -4
- package/dist/bundle/chunk-33JGD2CR.js +141 -0
- package/dist/bundle/{chunk-F34HGYWF.js → chunk-3VVIEZRY.js} +2 -2
- package/dist/bundle/{chunk-CGFQT3LQ.js → chunk-6PHTRAZA.js} +1 -1
- package/dist/bundle/{chunk-VS5LGSTM.js → chunk-6VCFDEHT.js} +1 -1
- package/dist/bundle/{chunk-NENYWEXF.js → chunk-7OQF5ZMN.js} +1 -1
- package/dist/bundle/{chunk-62JRF2JA.js → chunk-AKUMR7PE.js} +2 -2
- package/dist/bundle/{chunk-7UPBPE3Z.js → chunk-ASO23RNM.js} +152 -79
- package/dist/bundle/{chunk-VOTEB3AN.js → chunk-AUVPTFUS.js} +1 -1
- package/dist/bundle/{chunk-KLFYY7KC.js → chunk-BOCIYBBO.js} +53 -44
- package/dist/bundle/{chunk-TJJ2XSJP.js → chunk-BXZRTMXA.js} +5 -5
- package/dist/bundle/{chunk-66VMJGV6.js → chunk-DVLM23HB.js} +2 -2
- package/dist/bundle/{chunk-YIVY2WI3.js → chunk-E4KQOKQ5.js} +1 -1
- package/dist/bundle/{chunk-GHF72SHT.js → chunk-EQDVQN4E.js} +306 -258
- package/dist/bundle/{chunk-NH6LZ3H3.js → chunk-FF3AGTHY.js} +6 -6
- package/dist/bundle/{chunk-NG7MOJBT.js → chunk-GG5PXNMH.js} +61 -21
- package/dist/bundle/{chunk-LFLSV353.js → chunk-GUCMIUNB.js} +2 -2
- package/dist/bundle/{chunk-R5RYPD23.js → chunk-HVAEHUSZ.js} +2 -2
- package/dist/bundle/{chunk-PIJUGF5F.js → chunk-ITPFCKCL.js} +13 -13
- package/dist/bundle/{chunk-DQIBGCF3.js → chunk-J2RUBXCI.js} +6 -6
- package/dist/bundle/{chunk-7Z4HR6GO.js → chunk-KRXN3FV3.js} +1 -1
- package/dist/bundle/{chunk-45244QQ6.js → chunk-LFLN6PVS.js} +4 -4
- package/dist/bundle/{chunk-MWUHBEDN.js → chunk-LN53L2V5.js} +11 -11
- package/dist/bundle/{chunk-IOJ2DTCY.js → chunk-MLSN3UP4.js} +28 -26
- package/dist/bundle/{chunk-3MDNAYQA.js → chunk-O6PBO4BU.js} +1 -1
- package/dist/bundle/{chunk-YOJLIVGO.js → chunk-QJS4WWYK.js} +63 -63
- package/dist/bundle/{chunk-NVNUUHT5.js → chunk-QLBS6OC2.js} +2362 -1225
- package/dist/bundle/{chunk-2DAXUNTS.js → chunk-QVPTZDRA.js} +2 -2
- package/dist/bundle/{chunk-4MU2UM4C.js → chunk-R5CPFSPI.js} +7 -7
- package/dist/bundle/{chunk-AS2PJNQ2.js → chunk-R5IY4O25.js} +4 -4
- package/dist/bundle/{chunk-DZLHY4IA.js → chunk-RGKXMVOZ.js} +3 -3
- package/dist/bundle/{chunk-G45R7M42.js → chunk-RT46AWIH.js} +1 -1
- package/dist/bundle/{chunk-NRZV7K4M.js → chunk-RUHNHEAF.js} +3 -3
- package/dist/bundle/{chunk-VXOR76ZL.js → chunk-S465TCR3.js} +8 -8
- package/dist/bundle/{chunk-NVGOHYTE.js → chunk-SQKP6V4S.js} +27 -13
- package/dist/bundle/{chunk-FC53WQHG.js → chunk-SQOXYNKF.js} +1 -1
- package/dist/bundle/{chunk-R2JKPHH5.js → chunk-URPKIONS.js} +8 -8
- package/dist/bundle/{chunk-VVGPAHUN.js → chunk-UW4PJZVJ.js} +298 -170
- package/dist/bundle/{chunk-EX2FV7YJ.js → chunk-WKUJCPSP.js} +89 -45
- package/dist/bundle/{chunk-LATYBJ4T.js → chunk-WQBBSVZM.js} +2 -2
- package/dist/bundle/{chunk-G7W53MQP.js → chunk-WRLOK7XC.js} +3 -3
- package/dist/bundle/{chunk-SOYOOU2D.js → chunk-X44ZT64I.js} +3 -3
- package/dist/bundle/{chunk-U6QD3J3F.js → chunk-XKL5FRH3.js} +3 -3
- package/dist/bundle/{chunk-6AW4DDK4.js → chunk-XS56LIQ7.js} +4 -4
- package/dist/bundle/{chunk-3WDYHOAF.js → chunk-YIH3PYWJ.js} +1 -1
- package/dist/bundle/{chunk-5GTMQTQH.js → chunk-ZRNBKTPP.js} +27 -29
- package/dist/bundle/clidev.js +3 -3
- package/dist/bundle/{command-contract-3MPKXBVL.js → command-contract-RV5ZOEAT.js} +11 -11
- package/dist/bundle/{decode-NXB5UKMO.js → decode-V7HNHZBC.js} +3 -3
- package/dist/bundle/{echarts-DRDGGHJT.js → echarts-Y42YP2OL.js} +2 -2
- package/dist/bundle/{embed-IKZ24BMC.js → embed-JSQZL7JF.js} +4 -4
- package/dist/bundle/{embedder-GMQ24DOQ.js → embedder-7BHRCXWL.js} +7 -7
- package/dist/bundle/{first-run-PURIGDLD.js → first-run-BJ36KGST.js} +8 -8
- package/dist/bundle/first-screen-5YHQVNY4.js +26 -0
- package/dist/bundle/{instructions-EOQOXY6V.js → instructions-UWERND54.js} +1 -1
- package/dist/bundle/{mcp-7HBLFGCW.js → mcp-P4FSBSRS.js} +2 -2
- package/dist/bundle/{node-52WF2326.js → node-PZDNPKN7.js} +2 -2
- package/dist/bundle/{node-sqlite-73Z4SFOA.js → node-sqlite-4F5NLRNT.js} +4 -4
- package/dist/bundle/{oauth-EVTPAMZP.js → oauth-VDXNA3DK.js} +5 -5
- package/dist/bundle/{open-46WZAPJ3.js → open-EUJRQQNS.js} +3 -3
- package/dist/bundle/{openai-GWRDAHDU.js → openai-EIBV2K72.js} +14 -35
- package/dist/bundle/{process-YIQPKLZI.js → process-XD5ZIFIL.js} +1 -1
- package/dist/bundle/{program-37NVH5YJ.js → program-TJTVMIOX.js} +3067 -736
- package/dist/bundle/{prompt-IVEYRLS5.js → prompt-LYUZNHDK.js} +3 -3
- package/dist/bundle/{recognize-WVEKHODM.js → recognize-LQMHLOD5.js} +2 -2
- package/dist/bundle/{remote-4K5VPMC7.js → remote-34HUWSZI.js} +5 -5
- package/dist/bundle/{rerank-V24UJZYJ.js → rerank-ONBASQ5Z.js} +5 -5
- package/dist/bundle/{chunk-EMHCXXNJ.js → serve-UJ7FDYAM.js} +8 -6
- package/dist/bundle/{chunk-KJ3UADR3.js → server-GNT76BXM.js} +29 -9
- package/dist/bundle/server-J4YIXKMI.js +52 -0
- package/dist/bundle/{state-ZPYGECVP.js → state-IW5OO6IZ.js} +4 -4
- package/dist/bundle/{store-6JQCLPQF.js → store-55UB27H2.js} +12 -10
- package/dist/bundle/store-maintenance-command-BLDKUZ3L.js +42 -0
- package/dist/commands/comments.d.ts +3 -0
- package/dist/commands/comments.d.ts.map +1 -0
- package/dist/commands/comments.js +114 -0
- package/dist/commands/comments.js.map +1 -0
- package/dist/commands/session.d.ts +3 -0
- package/dist/commands/session.d.ts.map +1 -0
- package/dist/commands/session.js +96 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/context.d.ts +83 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +58 -0
- package/dist/context.js.map +1 -0
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +25 -4
- package/dist/program.js.map +1 -1
- package/dist/sample/comments.d.ts +61 -0
- package/dist/sample/comments.d.ts.map +1 -0
- package/dist/sample/comments.js +39 -0
- package/dist/sample/comments.js.map +1 -0
- package/dist/sample/transport.d.ts +42 -0
- package/dist/sample/transport.d.ts.map +1 -0
- package/dist/sample/transport.js +152 -0
- package/dist/sample/transport.js.map +1 -0
- package/dist/token.d.ts +16 -0
- package/dist/token.d.ts.map +1 -0
- package/dist/token.js +32 -0
- package/dist/token.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/docs/commands.md +234 -12
- package/docs/configuration.md +1 -1
- package/docs/dev/reference-clis.md +3 -2
- package/docs/dev/skills/release/SKILL.md +9 -3
- package/docs/dev/skills/release/fresh-audit.md +1 -1
- package/docs/dev/test-matrix.md +36 -5
- package/docs/index.md +4 -3
- package/docs/security.md +4 -2
- package/kit/dist/new.js +7 -3
- package/lint/overrides.json +9 -1
- package/package.json +6 -7
- package/scripts/test-matrix-untested.ts +19 -0
- package/skills/clidev-cli/SKILL.md +1 -1
- package/src/commands/comments.ts +167 -0
- package/src/commands/session.ts +144 -0
- package/src/comments.test.ts +258 -0
- package/src/context.ts +78 -0
- package/src/mcp.test.ts +71 -76
- package/src/program.test.ts +9 -16
- package/src/program.ts +29 -4
- package/src/sample/comments.ts +51 -0
- package/src/sample/transport.test.ts +117 -0
- package/src/sample/transport.ts +184 -0
- package/src/testing/fake-comments.ts +167 -0
- package/src/testing/harness.ts +51 -0
- package/src/token.ts +42 -0
- package/src/version.ts +1 -1
- package/dist/bundle/all-profiles-NVB2HT2S.js +0 -24
- package/dist/bundle/chunk-GUFPQZUA.js +0 -48
- package/dist/bundle/chunk-NL2DQPT7.js +0 -2
- package/dist/bundle/first-screen-B2CF2CET.js +0 -26
- package/dist/bundle/mcp-ASNYBQ5B.js +0 -152
- package/dist/bundle/mcp-EY2NUYDQ.js +0 -82
- package/dist/bundle/serve-PJWSOV7F.js +0 -19
- package/dist/bundle/server-3TPCEZ6P.js +0 -40
- package/dist/bundle/server-GQX5MZTT.js +0 -53
- package/dist/bundle/store-maintenance-command-ND4ADMGC.js +0 -42
- package/dist/commands/doctor.d.ts +0 -77
- package/dist/commands/doctor.d.ts.map +0 -1
- package/dist/commands/doctor.js +0 -74
- package/dist/commands/doctor.js.map +0 -1
- package/dist/commands/mcp.d.ts +0 -3
- package/dist/commands/mcp.d.ts.map +0 -1
- package/dist/commands/mcp.js +0 -97
- package/dist/commands/mcp.js.map +0 -1
- package/dist/mcp.d.ts +0 -29
- package/dist/mcp.d.ts.map +0 -1
- package/dist/mcp.js +0 -98
- package/dist/mcp.js.map +0 -1
- package/src/commands/doctor.ts +0 -86
- package/src/commands/mcp.ts +0 -130
- package/src/mcp-http.test.ts +0 -172
- package/src/mcp.ts +0 -140
package/.github/workflows/ci.yml
CHANGED
|
@@ -57,6 +57,41 @@ jobs:
|
|
|
57
57
|
- run: pnpm test
|
|
58
58
|
- run: pnpm smoke:node
|
|
59
59
|
|
|
60
|
+
# The template's own check: a CLI made from it has no kit/. Needs the network for npm and pnpm installs.
|
|
61
|
+
kit-e2e:
|
|
62
|
+
if: github.repository == 'WireCatLabs/cli-template'
|
|
63
|
+
runs-on: ubuntu-latest
|
|
64
|
+
timeout-minutes: 30
|
|
65
|
+
steps:
|
|
66
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
67
|
+
with:
|
|
68
|
+
persist-credentials: false
|
|
69
|
+
- uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0
|
|
70
|
+
- uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
|
|
71
|
+
with:
|
|
72
|
+
node-version: 24
|
|
73
|
+
cache: pnpm
|
|
74
|
+
- run: pnpm install --frozen-lockfile --ignore-scripts
|
|
75
|
+
- run: pnpm kit:e2e
|
|
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
|
+
|
|
60
95
|
version:
|
|
61
96
|
if: github.event_name == 'pull_request'
|
|
62
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/AGENTS.md
CHANGED
|
@@ -10,13 +10,67 @@ touches (`WC-<AREA>-<n>`) in the commit message and the pull request. The rules
|
|
|
10
10
|
|
|
11
11
|
[docs/dev/DESIGN.md](docs/dev/DESIGN.md) holds the owner's answers to the
|
|
12
12
|
[design interview](docs/dev/skills/design-interview/SKILL.md) and the decisions made since. Read it before changing
|
|
13
|
-
what a command does, and write a new decision there. Learn
|
|
14
|
-
|
|
13
|
+
what a command does, and write a new decision there. Learn how a command reaches a service from the sample below,
|
|
14
|
+
and the domain, the store and its commands from the reference CLI.
|
|
15
15
|
|
|
16
16
|
<!-- cli-template:reference-cli:start -->
|
|
17
17
|
The reference CLI is not chosen yet; see [Reference CLIs](docs/dev/reference-clis.md).
|
|
18
18
|
<!-- cli-template:reference-cli:end -->
|
|
19
19
|
|
|
20
|
+
## The sample: what to keep, what to replace
|
|
21
|
+
|
|
22
|
+
<!-- cspell:words gcal SECR -->
|
|
23
|
+
|
|
24
|
+
The template ships one working command group, `comments`, against a made-up service, Example Comments, whose address
|
|
25
|
+
never resolves. It shows every pattern a command that reaches a service needs, each tested against a strict fake of
|
|
26
|
+
the service. Build your first command on it: keep the patterns, replace the service. Delete the rest of the sample
|
|
27
|
+
once your own commands cover every pattern below; until then `pnpm test` keeps it working. A CLI made before the
|
|
28
|
+
sample has no `src/sample/`; read it in [cli-template](https://github.com/WireCatLabs/cli-template/tree/main/src).
|
|
29
|
+
Comments marked `SAMPLE:` in the code say what to replace.
|
|
30
|
+
|
|
31
|
+
Keep, the same for every service:
|
|
32
|
+
|
|
33
|
+
- **Token storage**, `src/token.ts`: cli-base `Credentials`, the environment variable, then the keyring, then a
|
|
34
|
+
private file; a run with moved folders never replaces the owner's entry (WC-SECR-4, WC-SECR-24).
|
|
35
|
+
- **Sign-in**, `src/commands/session.ts`: `session start | status | end | list`. The token is read hidden or from
|
|
36
|
+
stdin, never as an argument, and checked against the service before it is kept (WC-ACCT-12, WC-SECR-5). Replace
|
|
37
|
+
the `me` check with your service's. A service with OAuth signs in through cli-core's oauth module instead, as
|
|
38
|
+
[gcal-cli](https://github.com/WireCatLabs/gcal-cli) does (WC-SECR-22).
|
|
39
|
+
- **The command context**, `src/context.ts`: settings, the keyring and the run come from cli-core's `baseContext`
|
|
40
|
+
only, and every request runs inside its `run()`, with the `events` it gives passed to the transport. That is what
|
|
41
|
+
bounds a command by `--timeout` and records a run named after it (WC-LIFE-5, WC-LIFE-15).
|
|
42
|
+
- **Permissions**, `src/program.ts` and `src/config.ts`: the program hands cli-core the whole `configuration`, and
|
|
43
|
+
each command path is its own key (WC-PERM-22). A command that reaches the service another way, such as an
|
|
44
|
+
`api call`, also checks the key of the command it does the same as, with `alsoChecks`.
|
|
45
|
+
- **Writes**, `write` in `src/commands/comments.ts`: the guard asks or refuses by the command's key, the send journal
|
|
46
|
+
records the attempt, the answer carries `operation_id`, and a write is never retried: one that got no answer is
|
|
47
|
+
`outcome_unknown` (WC-PERM-13, WC-PERM-17, WC-OUT-10, WC-LIFE-9). `--dry-run` and `<PREFIX>_READ_ONLY` are
|
|
48
|
+
cli-core's; declare no `--dry-run` of your own.
|
|
49
|
+
- **MCP and doctor**, `src/program.ts`: cli-core's `appMcpCommand` and `appDoctorCommand`, never a copy of them.
|
|
50
|
+
Rewrite `name` and `untrusted` for your service (WC-MCP-11).
|
|
51
|
+
- **The test harness**, `src/testing/harness.ts`: the CLI through its own `run()`, with a memory keyring and the fake
|
|
52
|
+
in place of the network (WC-TEST-2, WC-TEST-3, WC-TEST-6).
|
|
53
|
+
|
|
54
|
+
Replace, your service's own:
|
|
55
|
+
|
|
56
|
+
- **The transport**, `src/sample/transport.ts`: the token in a header only, no redirects, a timeout, cli-core's
|
|
57
|
+
`Pacer`, cli-base's error codes and no retry (WC-SECR-6, WC-SECR-7, WC-OUT-20). Keep its shape; take the address,
|
|
58
|
+
the header and the error mapping from your service's documentation.
|
|
59
|
+
- **Wire shapes and the mapper**, `src/sample/comments.ts`: each field name from the documentation or a captured
|
|
60
|
+
answer, never from memory; no wire type leaves this file (WC-ARCH-3).
|
|
61
|
+
- **The commands**, `src/commands/comments.ts`: a list with `withPaging`, `withQuery` and `answerEntity`, so
|
|
62
|
+
`--json=a,b` and the MCP schema come from one schema (WC-CMD-19, WC-CMD-20); `show`; `create` and `update`.
|
|
63
|
+
- **The strict fake**, `src/testing/fake-comments.ts`: it refuses an unknown path, parameter or field, so a name typed
|
|
64
|
+
from memory fails a test instead of reaching the owner's account. Build yours from the documentation.
|
|
65
|
+
- **The tests**, `src/comments.test.ts` and `src/sample/transport.test.ts`. Keep each case for your commands: a deny
|
|
66
|
+
stops a read before any request, `--dry-run` sends nothing, a lost write is `outcome_unknown`, a recorded run is
|
|
67
|
+
named after its command, and the token reaches no output, run record or file.
|
|
68
|
+
|
|
69
|
+
Remove the sample only once your own commands and their tests cover each pattern above: the skeleton alone is below
|
|
70
|
+
the coverage floor, and the floor is never lowered (WC-TEST-11). To remove it, unmount `commentsCommand` in `src/program.ts` and delete `src/sample/`,
|
|
71
|
+
`src/commands/comments.ts`, `src/testing/fake-comments.ts` and their tests. Then run `pnpm generate`,
|
|
72
|
+
`pnpm exec cli-contract contracts/plan.json --update` and `pnpm test:matrix`.
|
|
73
|
+
|
|
20
74
|
## Template-owned files
|
|
21
75
|
|
|
22
76
|
This CLI was made from [cli-template](https://github.com/WireCatLabs/cli-template). `template.json` names the files
|
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,56 @@ 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.17.0 — 07.11.2026
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- **CI fails a CLI made from the template on mistakes no check caught before.** `contracts/plan.json`
|
|
13
|
+
has a `deny` block (cli-testing 0.6.0): in an empty home, each command that reaches the service gets `deny` in the
|
|
14
|
+
profile and must exit 5 before any request, on the command line and over `mcp serve`. Biome refuses a
|
|
15
|
+
`resolveSettings` call outside `baseContext` (cli-base's `no-own-settings` plugin). `release-pr.yml` fails a pull
|
|
16
|
+
request that changes the version without a `## Conformance` section, and `bin/release` refuses a version with no
|
|
17
|
+
passed live check in `docs/dev/live-checks.txt` (`cli-dev live record`), or whose code changed since. The
|
|
18
|
+
`repo-setup` job in `ci.yml` checks main's ruleset, a monthly cron minute no other repository holds, and the CLI in
|
|
19
|
+
a parity group: the three setup steps `new` prints. The skeleton moves to cli-core 0.595.0 and cli-base 0.80.3
|
|
20
|
+
(from 0.584.0 and 0.77.1) for them.
|
|
21
|
+
|
|
22
|
+
## 0.16.0 — 06.11.2026
|
|
23
|
+
|
|
24
|
+
### Added
|
|
25
|
+
|
|
26
|
+
- **`pnpm kit:e2e` runs in CI and checks more.** It makes a CLI with a short name and one with a long name, since a
|
|
27
|
+
rename changes line lengths, and runs `pnpm lint` in each besides `ci:quick` and `test:coverage`. A rename that
|
|
28
|
+
broke Biome's formatting passed it before. The `kit-e2e` job in `.github/workflows/ci.yml` runs it on every pull
|
|
29
|
+
request and merge, in this repository only: a CLI made from the template has no `kit/` and skips the job.
|
|
30
|
+
|
|
31
|
+
- **A working sample shows every pattern a command that reaches a service needs.** `comments list | show | create |
|
|
32
|
+
update` and `session start | status | end | list` reach Example Comments, a made-up service whose address never
|
|
33
|
+
resolves. The token is kept with cli-base's `Credentials`; every request runs inside cli-core's `baseContext` run
|
|
34
|
+
with its `events`; the transport keeps the token in a header, times out and never retries; writes pass the guard
|
|
35
|
+
and the send journal and answer with `operation_id`, and a lost write is `outcome_unknown`. The tests run against a
|
|
36
|
+
strict fake that refuses unknown paths, parameters and fields. `AGENTS.md` lists what to keep and what to replace,
|
|
37
|
+
pattern by pattern, with the rules each follows, and the code marks each replaceable part with `SAMPLE:`. Before,
|
|
38
|
+
the template had no sample, and agents copied the patterns from other CLIs, their bugs included.
|
|
39
|
+
|
|
40
|
+
### Changed — may break callers
|
|
41
|
+
|
|
42
|
+
- **MCP and doctor are cli-core's.** `src/program.ts` mounts `appMcpCommand` and `appDoctorCommand`, as gcal-cli
|
|
43
|
+
does, in place of the template's own `src/mcp.ts`, `src/commands/mcp.ts` and `src/commands/doctor.ts`. `mcp` gains
|
|
44
|
+
`config`, `add`, `check`, `--profiles` and `--permission`; `doctor` gains `--online`, and its answer `store` and
|
|
45
|
+
`profile_lock`. A CLI made from an older skeleton swaps them the same way and removes `@modelcontextprotocol/server`
|
|
46
|
+
and `@modelcontextprotocol/client` from its dependencies.
|
|
47
|
+
|
|
48
|
+
### Fixed
|
|
49
|
+
|
|
50
|
+
- **A new CLI passes `pnpm lint` from its first commit.** Renaming `clidev` changes line lengths, so Biome wraps some
|
|
51
|
+
lines differently, and the first commit's hook or CI failed on formatting. `new`'s next steps now run
|
|
52
|
+
`pnpm lint:fix` after `pnpm install`, and `kit:e2e` does the same before it runs `pnpm lint`.
|
|
53
|
+
- **The MCP server applies the permission table too (WC-PERM-23).** `src/mcp.ts` built its tools without it, so a
|
|
54
|
+
command a profile denies was offered to an agent as available and ran. It now passes `permissions` to
|
|
55
|
+
`toolsFromCommands` and to each tool call: the command is listed as unavailable and refused before it runs. A CLI
|
|
56
|
+
made from an older skeleton adds `permissions` in both places by hand.
|
|
57
|
+
|
|
8
58
|
## 0.15.0 — 06.11.2026
|
|
9
59
|
|
|
10
60
|
### Fixed
|
package/README.md
CHANGED
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
|
|
6
6
|
`clidev` is a command-line tool started from [cli-template](https://github.com/WireCatLabs/cli-template), the kit for
|
|
7
7
|
new WireCat CLIs. It is a working skeleton: the shared root commands, the settings, the agent skill and the MCP
|
|
8
|
-
server run, and every check of the WireCat standards passes.
|
|
9
|
-
with the tool's own
|
|
8
|
+
server run, and every check of the WireCat standards passes. Its one service is a sample, Example Comments, made up
|
|
9
|
+
to show how a command reaches a service; its address never resolves. Replace this page with the tool's own
|
|
10
|
+
introduction once the CLI reaches its real service.
|
|
10
11
|
|
|
11
12
|
To start a new CLI from the template:
|
|
12
13
|
|
|
@@ -30,6 +31,8 @@ such as `personal` in `clidev personal config show`; none is ever assumed. `CLID
|
|
|
30
31
|
| Command | What it does |
|
|
31
32
|
| --- | --- |
|
|
32
33
|
| `clidev doctor` | Checks this installation: version, paths, settings and profiles, without the network |
|
|
34
|
+
| `clidev personal session start` | Signs the profile in with the service's token, kept in the OS keyring |
|
|
35
|
+
| `clidev personal comments list` | The sample: lists, shows, creates and updates comments in Example Comments |
|
|
33
36
|
| `clidev commands --json` | Prints every command as JSON, for agents and scripts |
|
|
34
37
|
| `clidev personal config show` | Shows each setting and where it came from |
|
|
35
38
|
| `clidev skill install` | Installs the agent skill for Claude Code, Codex, Gemini CLI and OpenClaw; `--for hermes` for Hermes Agent |
|
|
@@ -57,6 +60,9 @@ keeps the shared files in step later, so a CLI made today does not drift from on
|
|
|
57
60
|
- **`upgrade`** merges each template change into your CLI file by file, and asks before it touches a file you changed.
|
|
58
61
|
- **The skeleton runs.** The shared root commands, settings with permissions, the agent skill and the MCP server
|
|
59
62
|
work before a line of your own code.
|
|
63
|
+
- **A sample shows every pattern.** `comments` reaches a made-up service the way a real command must: the token in
|
|
64
|
+
the keyring, every request inside cli-core's run, writes behind the guard, and a strict fake in the tests.
|
|
65
|
+
`AGENTS.md` lists what to keep and what to replace.
|
|
60
66
|
- **Every check is wired in:** lint, types, tests with a coverage floor, command contracts, the docs checks and the
|
|
61
67
|
release script.
|
|
62
68
|
|
|
@@ -66,7 +72,8 @@ The copy tool is described in [kit/README.md](kit/README.md).
|
|
|
66
72
|
|
|
67
73
|
A profile is a name you choose for one account, such as `personal` or `work`. It is the first word of every command
|
|
68
74
|
that uses an account. No profile is ever assumed: a command without one stops and lists the profiles on this
|
|
69
|
-
computer.
|
|
75
|
+
computer. `session start` signs a profile in; its token goes to the OS keyring, or to a private file where no
|
|
76
|
+
keyring works.
|
|
70
77
|
|
|
71
78
|
## Settings and permissions
|
|
72
79
|
|
|
@@ -80,7 +87,8 @@ The skeleton connects to no service, keeps no messages and has no commands of it
|
|
|
80
87
|
|
|
81
88
|
## Security
|
|
82
89
|
|
|
83
|
-
`clidev` keeps its settings and state on this computer and
|
|
90
|
+
`clidev` keeps its settings and state on this computer, and its token in the OS keyring. Its only service is the
|
|
91
|
+
sample's, whose address never resolves. See
|
|
84
92
|
[Security](docs/security.md), and report a vulnerability privately as [SECURITY.md](SECURITY.md) says.
|
|
85
93
|
|
|
86
94
|
## When it does not work
|
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). template.json is the
|
|
56
|
+
# template's own file, never copied: the template has no service.
|
|
57
|
+
[ -f template.json ] || 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,10 +79,10 @@ 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)" ] ||
|
|
@@ -125,7 +128,11 @@ if [ "$next" != "$version" ]; then
|
|
|
125
128
|
const today = new Date().toLocaleDateString("en-GB").replaceAll("/", ".")
|
|
126
129
|
if (taken) swap("CHANGELOG.md", "\n## Unreleased\n", `\n## ${n} — ${today}\n`)
|
|
127
130
|
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.
|
|
131
|
+
body="bin/release: $why. Only the number changes: package.json, src/version.ts, the CHANGELOG heading.
|
|
132
|
+
|
|
133
|
+
## Conformance
|
|
134
|
+
|
|
135
|
+
The release pull request of $version recorded the checks; this one changes only its number."
|
|
129
136
|
land "release/$next" "chore(release): $next" "$body"
|
|
130
137
|
rerun_if_changed "$@"
|
|
131
138
|
version=$next
|
package/biome.json
CHANGED
|
@@ -3,9 +3,15 @@
|
|
|
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
|
-
"includes": ["src/**", "
|
|
14
|
+
"includes": ["src/**", "!**/*.test.ts"],
|
|
9
15
|
"linter": {
|
|
10
16
|
"rules": {
|
|
11
17
|
"style": {
|
|
@@ -15,7 +21,7 @@
|
|
|
15
21
|
"patterns": [
|
|
16
22
|
{
|
|
17
23
|
"group": ["@modelcontextprotocol/**"],
|
|
18
|
-
"message": "
|
|
24
|
+
"message": "cli-core's appMcpCommand serves MCP; commands and services do not know the protocol"
|
|
19
25
|
}
|
|
20
26
|
]
|
|
21
27
|
}
|
package/contracts/mcp-tools.json
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"type": "object"
|
|
19
19
|
},
|
|
20
20
|
"command": {
|
|
21
|
-
"description": "a command clidev_tools_search returned: \"
|
|
21
|
+
"description": "a command clidev_tools_search returned: \"session list\"",
|
|
22
22
|
"minLength": 1,
|
|
23
23
|
"type": "string"
|
|
24
24
|
}
|
|
@@ -542,7 +542,7 @@
|
|
|
542
542
|
"type": "object"
|
|
543
543
|
},
|
|
544
544
|
"command": {
|
|
545
|
-
"description": "a command clidev_tools_search returned: \"
|
|
545
|
+
"description": "a command clidev_tools_search returned: \"session list\"",
|
|
546
546
|
"minLength": 1,
|
|
547
547
|
"type": "string"
|
|
548
548
|
}
|
package/contracts/plan.json
CHANGED
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.
|
|
12
|
+
process.stdout.write("0.17.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-
|
|
31
|
+
const chunks = ["../bundle/all-profiles-CCT2XPJL.js","../bundle/anthropic-QLLP7EE4.js","../bundle/app-server-ELI5TGL7.js","../bundle/bun-C7JS2V7G.js","../bundle/bun-sqlite-OM72TCYT.js","../bundle/decode-V7HNHZBC.js","../bundle/dist-ESHIQU4M.js","../bundle/echarts-Y42YP2OL.js","../bundle/embed-JSQZL7JF.js","../bundle/embedder-7BHRCXWL.js","../bundle/first-screen-5YHQVNY4.js","../bundle/instructions-UWERND54.js","../bundle/mcp-P4FSBSRS.js","../bundle/node-P4E63KXA.js","../bundle/node-PZDNPKN7.js","../bundle/node-TLZSIHIJ.js","../bundle/node-sqlite-4F5NLRNT.js","../bundle/oauth-VDXNA3DK.js","../bundle/open-EUJRQQNS.js","../bundle/openai-EIBV2K72.js","../bundle/process-XD5ZIFIL.js","../bundle/program-TJTVMIOX.js","../bundle/prompt-LYUZNHDK.js","../bundle/recognize-LQMHLOD5.js","../bundle/remote-34HUWSZI.js","../bundle/rerank-ONBASQ5Z.js","../bundle/serve-UJ7FDYAM.js","../bundle/server-GNT76BXM.js","../bundle/server-J4YIXKMI.js","../bundle/state-IW5OO6IZ.js","../bundle/store-55UB27H2.js","../bundle/store-maintenance-command-BLDKUZ3L.js"]
|
|
32
32
|
if (((words) => words
|
|
33
33
|
.filter((word) => !word.startsWith("-"))
|
|
34
34
|
.slice(0, 2)
|
|
@@ -2,22 +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-
|
|
5
|
+
} from "./chunk-6VCFDEHT.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-
|
|
12
|
+
} from "./chunk-3VVIEZRY.js";
|
|
13
13
|
import {
|
|
14
14
|
McpServer
|
|
15
15
|
} from "./chunk-5D4AEUVA.js";
|
|
16
|
+
import "./chunk-S465TCR3.js";
|
|
17
|
+
import "./chunk-YIH3PYWJ.js";
|
|
18
|
+
import "./chunk-MLSN3UP4.js";
|
|
19
|
+
import "./chunk-Y5E2WNWB.js";
|
|
16
20
|
import {
|
|
17
21
|
__name
|
|
18
22
|
} from "./chunk-ZVVMGPBJ.js";
|
|
19
23
|
|
|
20
|
-
// node_modules/.pnpm/@wirecat+cli-core@0.
|
|
24
|
+
// node_modules/.pnpm/@wirecat+cli-core@0.595.0_@wirecat+cli-base@0.80.3_commander@15.0.0_esbuild@0.28.2_type_2c96d170c489856a39cafd5889a9e4ba/node_modules/@wirecat/cli-core/dist/mcp/all-profiles.js
|
|
21
25
|
import { spawn } from "node:child_process";
|
|
22
26
|
import { randomUUID } from "node:crypto";
|
|
23
27
|
var PROTOCOL = "2025-06-18";
|
|
@@ -251,7 +255,7 @@ var serveAllProfilesOverStdio = /* @__PURE__ */ __name(async (options, io = {})
|
|
|
251
255
|
}, "serveAllProfilesOverStdio");
|
|
252
256
|
var serveAllProfilesOverHttp = /* @__PURE__ */ __name(async (options, http) => {
|
|
253
257
|
const { build, close } = allProfilesServer(options);
|
|
254
|
-
const { serveOverHttp } = await import("./serve-
|
|
258
|
+
const { serveOverHttp } = await import("./serve-UJ7FDYAM.js");
|
|
255
259
|
const listening = await serveOverHttp(build, {
|
|
256
260
|
...http,
|
|
257
261
|
appName: options.command,
|
|
@@ -271,11 +275,10 @@ var serveAllProfilesOverHttp = /* @__PURE__ */ __name(async (options, http) => {
|
|
|
271
275
|
}, "close")
|
|
272
276
|
};
|
|
273
277
|
}, "serveAllProfilesOverHttp");
|
|
274
|
-
|
|
275
278
|
export {
|
|
276
279
|
CHILD_IDLE_MS,
|
|
277
|
-
withProfile,
|
|
278
280
|
allProfilesServer,
|
|
281
|
+
serveAllProfilesOverHttp,
|
|
279
282
|
serveAllProfilesOverStdio,
|
|
280
|
-
|
|
283
|
+
withProfile
|
|
281
284
|
};
|
|
@@ -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-
|
|
5
|
+
} from "./chunk-HVAEHUSZ.js";
|
|
6
6
|
import {
|
|
7
7
|
messagesFor,
|
|
8
8
|
systemFor
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-WQBBSVZM.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-
|
|
18
|
+
} from "./chunk-MLSN3UP4.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.
|
|
24
|
+
// node_modules/.pnpm/@wirecat+cli-core@0.595.0_@wirecat+cli-base@0.80.3_commander@15.0.0_esbuild@0.28.2_type_2c96d170c489856a39cafd5889a9e4ba/node_modules/@wirecat/cli-core/dist/models/anthropic.js
|
|
25
25
|
var options = strictObject({
|
|
26
26
|
stop_sequences: optional(array(string()))
|
|
27
27
|
});
|
|
@@ -3,48 +3,47 @@ const require = __bundleRequire(import.meta.url);
|
|
|
3
3
|
import {
|
|
4
4
|
PER_RUN,
|
|
5
5
|
envelope
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-NG7MOJBT.js";
|
|
6
|
+
} from "./chunk-ZRNBKTPP.js";
|
|
8
7
|
import {
|
|
9
8
|
mcpUrlOf
|
|
10
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-GG5PXNMH.js";
|
|
11
10
|
import {
|
|
12
11
|
answeredWire
|
|
13
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-6VCFDEHT.js";
|
|
14
13
|
import {
|
|
15
14
|
answered,
|
|
16
15
|
failed,
|
|
17
16
|
registerCommands,
|
|
18
17
|
runCommandForAgent,
|
|
19
18
|
toolsFromCommands
|
|
20
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-ASO23RNM.js";
|
|
21
20
|
import {
|
|
22
21
|
agentJson,
|
|
23
22
|
skillResource
|
|
24
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-SQKP6V4S.js";
|
|
25
24
|
import {
|
|
26
25
|
StdioServerTransport,
|
|
27
26
|
serveStdio
|
|
28
|
-
} from "./chunk-
|
|
29
|
-
import "./chunk-
|
|
30
|
-
import "./chunk-
|
|
31
|
-
import "./chunk-
|
|
32
|
-
import "./chunk-
|
|
33
|
-
import "./chunk-
|
|
34
|
-
import "./chunk-
|
|
27
|
+
} from "./chunk-3VVIEZRY.js";
|
|
28
|
+
import "./chunk-BOCIYBBO.js";
|
|
29
|
+
import "./chunk-EQDVQN4E.js";
|
|
30
|
+
import "./chunk-ITPFCKCL.js";
|
|
31
|
+
import "./chunk-QVPTZDRA.js";
|
|
32
|
+
import "./chunk-R5IY4O25.js";
|
|
33
|
+
import "./chunk-KRXN3FV3.js";
|
|
35
34
|
import {
|
|
36
35
|
appInstructions
|
|
37
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-RT46AWIH.js";
|
|
38
37
|
import {
|
|
39
38
|
McpServer
|
|
40
39
|
} from "./chunk-5D4AEUVA.js";
|
|
41
40
|
import {
|
|
42
41
|
mcpHttpMarker
|
|
43
|
-
} from "./chunk-
|
|
44
|
-
import "./chunk-
|
|
45
|
-
import "./chunk-
|
|
46
|
-
import "./chunk-
|
|
47
|
-
import "./chunk-
|
|
42
|
+
} from "./chunk-XS56LIQ7.js";
|
|
43
|
+
import "./chunk-RGKXMVOZ.js";
|
|
44
|
+
import "./chunk-X44ZT64I.js";
|
|
45
|
+
import "./chunk-WQBBSVZM.js";
|
|
46
|
+
import "./chunk-RUHNHEAF.js";
|
|
48
47
|
import {
|
|
49
48
|
DEFAULT_OUTPUT_BYTES,
|
|
50
49
|
changesAuthorityAt,
|
|
@@ -54,31 +53,31 @@ import {
|
|
|
54
53
|
readOnlyLockOf,
|
|
55
54
|
readsOverMcpAt,
|
|
56
55
|
rootOf2 as rootOf
|
|
57
|
-
} from "./chunk-
|
|
58
|
-
import "./chunk-
|
|
59
|
-
import "./chunk-
|
|
60
|
-
import "./chunk-
|
|
61
|
-
import "./chunk-
|
|
62
|
-
import "./chunk-
|
|
63
|
-
import "./chunk-
|
|
64
|
-
import "./chunk-
|
|
65
|
-
import "./chunk-
|
|
66
|
-
import "./chunk-
|
|
67
|
-
import "./chunk-
|
|
68
|
-
import "./chunk-
|
|
69
|
-
import "./chunk-
|
|
70
|
-
import "./chunk-
|
|
71
|
-
import "./chunk-
|
|
56
|
+
} from "./chunk-UW4PJZVJ.js";
|
|
57
|
+
import "./chunk-S465TCR3.js";
|
|
58
|
+
import "./chunk-XKL5FRH3.js";
|
|
59
|
+
import "./chunk-AUVPTFUS.js";
|
|
60
|
+
import "./chunk-QLBS6OC2.js";
|
|
61
|
+
import "./chunk-URPKIONS.js";
|
|
62
|
+
import "./chunk-QJS4WWYK.js";
|
|
63
|
+
import "./chunk-YIH3PYWJ.js";
|
|
64
|
+
import "./chunk-BXZRTMXA.js";
|
|
65
|
+
import "./chunk-FF3AGTHY.js";
|
|
66
|
+
import "./chunk-O6PBO4BU.js";
|
|
67
|
+
import "./chunk-6PHTRAZA.js";
|
|
68
|
+
import "./chunk-J2RUBXCI.js";
|
|
69
|
+
import "./chunk-LFLN6PVS.js";
|
|
70
|
+
import "./chunk-AKUMR7PE.js";
|
|
72
71
|
import {
|
|
73
72
|
CliError,
|
|
74
73
|
mcpErrorResult
|
|
75
|
-
} from "./chunk-
|
|
74
|
+
} from "./chunk-MLSN3UP4.js";
|
|
76
75
|
import "./chunk-Y5E2WNWB.js";
|
|
77
76
|
import {
|
|
78
77
|
__name
|
|
79
78
|
} from "./chunk-ZVVMGPBJ.js";
|
|
80
79
|
|
|
81
|
-
// node_modules/.pnpm/@wirecat+cli-core@0.
|
|
80
|
+
// node_modules/.pnpm/@wirecat+cli-core@0.595.0_@wirecat+cli-base@0.80.3_commander@15.0.0_esbuild@0.28.2_type_2c96d170c489856a39cafd5889a9e4ba/node_modules/@wirecat/cli-core/dist/mcp/app-server.js
|
|
82
81
|
var EXCLUDED = [["mcp"]];
|
|
83
82
|
var createAppServer = /* @__PURE__ */ __name((command, context, options) => {
|
|
84
83
|
const { app } = options;
|
|
@@ -193,7 +192,7 @@ var serveAppOverStdio = /* @__PURE__ */ __name(async (command, context, options)
|
|
|
193
192
|
var serveAppOverHttp = /* @__PURE__ */ __name(async (command, context, options, http) => {
|
|
194
193
|
const { app } = options;
|
|
195
194
|
const { build } = createAppServer(command, context, options);
|
|
196
|
-
const { serveOverHttp } = await import("./serve-
|
|
195
|
+
const { serveOverHttp } = await import("./serve-UJ7FDYAM.js");
|
|
197
196
|
const listening = await serveOverHttp(build, {
|
|
198
197
|
...http,
|
|
199
198
|
appName: app.command,
|
|
@@ -18,12 +18,12 @@ import {
|
|
|
18
18
|
jitCompatCheck,
|
|
19
19
|
refineSqliteCodecs,
|
|
20
20
|
sql
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-6PHTRAZA.js";
|
|
22
22
|
import {
|
|
23
23
|
__name
|
|
24
24
|
} from "./chunk-ZVVMGPBJ.js";
|
|
25
25
|
|
|
26
|
-
// node_modules/.pnpm/@wirecat+cli-core@0.
|
|
26
|
+
// node_modules/.pnpm/@wirecat+cli-core@0.595.0_@wirecat+cli-base@0.80.3_commander@15.0.0_esbuild@0.28.2_type_2c96d170c489856a39cafd5889a9e4ba/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-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-GUCMIUNB.js";
|
|
7
|
+
import "./chunk-MLSN3UP4.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.
|
|
15
|
+
// node_modules/.pnpm/@wirecat+cli-core@0.595.0_@wirecat+cli-base@0.80.3_commander@15.0.0_esbuild@0.28.2_type_2c96d170c489856a39cafd5889a9e4ba/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 {
|