@wirecat/cli-template 0.13.2 → 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 +1 -1
  5. package/CHANGELOG.md +25 -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-KRCCGWWS.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-GBSAK3VW.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-EM4FKOCK.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
@@ -2,9 +2,9 @@ import { createRequire as __bundleRequire } from "node:module";
2
2
  const require = __bundleRequire(import.meta.url);
3
3
  import {
4
4
  readSecret
5
- } from "./chunk-ZLY6GUAS.js";
6
- import "./chunk-KJTNT4SW.js";
7
- import "./chunk-EFHLQXG6.js";
5
+ } from "./chunk-G7W53MQP.js";
6
+ import "./chunk-2DAXUNTS.js";
7
+ import "./chunk-IOJ2DTCY.js";
8
8
  import "./chunk-Y5E2WNWB.js";
9
9
  import "./chunk-ZVVMGPBJ.js";
10
10
  export {
@@ -6,9 +6,10 @@ import {
6
6
  detector,
7
7
  loadSherpa,
8
8
  openRecognizer,
9
+ openSpeechCutter,
9
10
  toModelRate
10
- } from "./chunk-PJOVK7PG.js";
11
- import "./chunk-EFHLQXG6.js";
11
+ } from "./chunk-7F5VMLVK.js";
12
+ import "./chunk-IOJ2DTCY.js";
12
13
  import "./chunk-Y5E2WNWB.js";
13
14
  import "./chunk-ZVVMGPBJ.js";
14
15
  export {
@@ -17,5 +18,6 @@ export {
17
18
  detector,
18
19
  loadSherpa,
19
20
  openRecognizer,
21
+ openSpeechCutter,
20
22
  toModelRate
21
23
  };
@@ -8,11 +8,11 @@ import {
8
8
  openRemote,
9
9
  remoteKey,
10
10
  remoteModel
11
- } from "./chunk-35KYY65W.js";
12
- import "./chunk-QKWRL4OD.js";
13
- import "./chunk-EGRB55FF.js";
14
- import "./chunk-IDWW4TU2.js";
15
- import "./chunk-EFHLQXG6.js";
11
+ } from "./chunk-SOYOOU2D.js";
12
+ import "./chunk-DQIBGCF3.js";
13
+ import "./chunk-45244QQ6.js";
14
+ import "./chunk-62JRF2JA.js";
15
+ import "./chunk-IOJ2DTCY.js";
16
16
  import "./chunk-Y5E2WNWB.js";
17
17
  import "./chunk-ZVVMGPBJ.js";
18
18
  export {
@@ -4,16 +4,16 @@ import {
4
4
  defaultThreads,
5
5
  loadModel,
6
6
  truncated
7
- } from "./chunk-QKWRL4OD.js";
8
- import "./chunk-EGRB55FF.js";
9
- import "./chunk-IDWW4TU2.js";
10
- import "./chunk-EFHLQXG6.js";
7
+ } from "./chunk-DQIBGCF3.js";
8
+ import "./chunk-45244QQ6.js";
9
+ import "./chunk-62JRF2JA.js";
10
+ import "./chunk-IOJ2DTCY.js";
11
11
  import "./chunk-Y5E2WNWB.js";
12
12
  import {
13
13
  __name
14
14
  } from "./chunk-ZVVMGPBJ.js";
15
15
 
16
- // 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/embeddings/rerank.js
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/embeddings/rerank.js
17
17
  var openReranker = /* @__PURE__ */ __name(async (model, directory, { threads = defaultThreads() } = {}) => {
18
18
  const { ort, tokenizer, session } = await loadModel(model, directory, threads);
19
19
  const typeIds = session.inputNames.includes("token_type_ids");
@@ -3,14 +3,14 @@ const require = __bundleRequire(import.meta.url);
3
3
  import {
4
4
  MCP_PATH,
5
5
  serveOverHttp
6
- } from "./chunk-TAYOKLGF.js";
7
- import "./chunk-JRK73FOW.js";
8
- import "./chunk-TGB5F7NC.js";
6
+ } from "./chunk-EMHCXXNJ.js";
7
+ import "./chunk-NENYWEXF.js";
8
+ import "./chunk-66VMJGV6.js";
9
9
  import "./chunk-5D4AEUVA.js";
10
- import "./chunk-V3ZTQ24B.js";
11
- import "./chunk-RUKDZEID.js";
12
- import "./chunk-VYSUKHKL.js";
13
- import "./chunk-EFHLQXG6.js";
10
+ import "./chunk-6AW4DDK4.js";
11
+ import "./chunk-DZLHY4IA.js";
12
+ import "./chunk-VOTEB3AN.js";
13
+ import "./chunk-IOJ2DTCY.js";
14
14
  import "./chunk-Y5E2WNWB.js";
15
15
  import "./chunk-ZVVMGPBJ.js";
16
16
  export {
@@ -0,0 +1,40 @@
1
+ import { createRequire as __bundleRequire } from "node:module";
2
+ const require = __bundleRequire(import.meta.url);
3
+ import {
4
+ createBotServer,
5
+ serveBotOverStdio
6
+ } from "./chunk-PX2KP4QE.js";
7
+ import "./chunk-YIVY2WI3.js";
8
+ import "./chunk-UT5TQ6MD.js";
9
+ import "./chunk-HYTHTSJP.js";
10
+ import "./chunk-F34HGYWF.js";
11
+ import "./chunk-5SAF3XOL.js";
12
+ import "./chunk-PIJUGF5F.js";
13
+ import "./chunk-2DAXUNTS.js";
14
+ import "./chunk-AS2PJNQ2.js";
15
+ import "./chunk-7Z4HR6GO.js";
16
+ import "./chunk-5D4AEUVA.js";
17
+ import "./chunk-SOYOOU2D.js";
18
+ import "./chunk-LATYBJ4T.js";
19
+ import "./chunk-RJ7AS7UB.js";
20
+ import "./chunk-VXOR76ZL.js";
21
+ import "./chunk-U6QD3J3F.js";
22
+ import "./chunk-VOTEB3AN.js";
23
+ import "./chunk-NVNUUHT5.js";
24
+ import "./chunk-R2JKPHH5.js";
25
+ import "./chunk-YOJLIVGO.js";
26
+ import "./chunk-3WDYHOAF.js";
27
+ import "./chunk-TJJ2XSJP.js";
28
+ import "./chunk-NH6LZ3H3.js";
29
+ import "./chunk-3MDNAYQA.js";
30
+ import "./chunk-CGFQT3LQ.js";
31
+ import "./chunk-DQIBGCF3.js";
32
+ import "./chunk-45244QQ6.js";
33
+ import "./chunk-62JRF2JA.js";
34
+ import "./chunk-IOJ2DTCY.js";
35
+ import "./chunk-Y5E2WNWB.js";
36
+ import "./chunk-ZVVMGPBJ.js";
37
+ export {
38
+ createBotServer,
39
+ serveBotOverStdio
40
+ };
@@ -0,0 +1,53 @@
1
+ import { createRequire as __bundleRequire } from "node:module";
2
+ const require = __bundleRequire(import.meta.url);
3
+ import {
4
+ PER_RUN,
5
+ createServer,
6
+ envelope,
7
+ serveOverHttpUntilStopped,
8
+ serveOverStdio
9
+ } from "./chunk-BEBD27QT.js";
10
+ import "./chunk-BWBZCYUN.js";
11
+ import "./chunk-GUFPQZUA.js";
12
+ import "./chunk-VS5LGSTM.js";
13
+ import "./chunk-UT5TQ6MD.js";
14
+ import "./chunk-HYTHTSJP.js";
15
+ import "./chunk-F34HGYWF.js";
16
+ import "./chunk-IZKXJJ7V.js";
17
+ import "./chunk-5SAF3XOL.js";
18
+ import "./chunk-PIJUGF5F.js";
19
+ import "./chunk-2DAXUNTS.js";
20
+ import "./chunk-AS2PJNQ2.js";
21
+ import "./chunk-7Z4HR6GO.js";
22
+ import "./chunk-G45R7M42.js";
23
+ import "./chunk-5D4AEUVA.js";
24
+ import "./chunk-6AW4DDK4.js";
25
+ import "./chunk-DZLHY4IA.js";
26
+ import "./chunk-SOYOOU2D.js";
27
+ import "./chunk-LATYBJ4T.js";
28
+ import "./chunk-BM5ZCDPQ.js";
29
+ import "./chunk-RJ7AS7UB.js";
30
+ import "./chunk-VXOR76ZL.js";
31
+ import "./chunk-U6QD3J3F.js";
32
+ import "./chunk-VOTEB3AN.js";
33
+ import "./chunk-NVNUUHT5.js";
34
+ import "./chunk-R2JKPHH5.js";
35
+ import "./chunk-YOJLIVGO.js";
36
+ import "./chunk-3WDYHOAF.js";
37
+ import "./chunk-TJJ2XSJP.js";
38
+ import "./chunk-NH6LZ3H3.js";
39
+ import "./chunk-3MDNAYQA.js";
40
+ import "./chunk-CGFQT3LQ.js";
41
+ import "./chunk-DQIBGCF3.js";
42
+ import "./chunk-45244QQ6.js";
43
+ import "./chunk-62JRF2JA.js";
44
+ import "./chunk-IOJ2DTCY.js";
45
+ import "./chunk-Y5E2WNWB.js";
46
+ import "./chunk-ZVVMGPBJ.js";
47
+ export {
48
+ PER_RUN,
49
+ createServer,
50
+ envelope,
51
+ serveOverHttpUntilStopped,
52
+ serveOverStdio
53
+ };
@@ -12,10 +12,10 @@ import {
12
12
  readHttpLock,
13
13
  readStored,
14
14
  signedInClients
15
- } from "./chunk-V3ZTQ24B.js";
16
- import "./chunk-RUKDZEID.js";
17
- import "./chunk-VYSUKHKL.js";
18
- import "./chunk-EFHLQXG6.js";
15
+ } from "./chunk-6AW4DDK4.js";
16
+ import "./chunk-DZLHY4IA.js";
17
+ import "./chunk-VOTEB3AN.js";
18
+ import "./chunk-IOJ2DTCY.js";
19
19
  import "./chunk-Y5E2WNWB.js";
20
20
  import "./chunk-ZVVMGPBJ.js";
21
21
  export {
@@ -8,9 +8,11 @@ import {
8
8
  CONVERSATION_COLUMNS,
9
9
  DEFAULT_AGENT_CLOSE,
10
10
  DEFAULT_FIRST_PASS_PER_CHAT,
11
+ MAIL_AGENDA_COLUMNS,
11
12
  MENTION_QUERY,
12
13
  MENTION_STATUSES,
13
14
  OTHER_SOURCES,
15
+ THREAD_COLUMNS,
14
16
  TRACKED_CHAT_COLUMNS,
15
17
  accountGroupsOf,
16
18
  attachmentColumns,
@@ -53,16 +55,17 @@ import {
53
55
  threadConversation,
54
56
  titlePart,
55
57
  vectorIndexCounts
56
- } from "./chunk-OV6PHTAY.js";
57
- import "./chunk-PBN4RBHS.js";
58
- import "./chunk-VLNKTMV7.js";
59
- import "./chunk-O5EHUB2V.js";
60
- import "./chunk-FDBINRWA.js";
61
- import "./chunk-IDWW4TU2.js";
62
- import "./chunk-2B5U4Z5H.js";
63
- import "./chunk-EFHLQXG6.js";
58
+ } from "./chunk-NVNUUHT5.js";
59
+ import "./chunk-R2JKPHH5.js";
60
+ import "./chunk-YOJLIVGO.js";
61
+ import "./chunk-3WDYHOAF.js";
62
+ import "./chunk-TJJ2XSJP.js";
63
+ import "./chunk-NH6LZ3H3.js";
64
+ import "./chunk-3MDNAYQA.js";
65
+ import "./chunk-CGFQT3LQ.js";
66
+ import "./chunk-62JRF2JA.js";
67
+ import "./chunk-IOJ2DTCY.js";
64
68
  import "./chunk-Y5E2WNWB.js";
65
- import "./chunk-Z7MSIRSQ.js";
66
69
  import "./chunk-ZVVMGPBJ.js";
67
70
  export {
68
71
  AGENDA_COLUMNS,
@@ -72,9 +75,11 @@ export {
72
75
  CONVERSATION_COLUMNS,
73
76
  DEFAULT_AGENT_CLOSE,
74
77
  DEFAULT_FIRST_PASS_PER_CHAT,
78
+ MAIL_AGENDA_COLUMNS,
75
79
  MENTION_QUERY,
76
80
  MENTION_STATUSES,
77
81
  OTHER_SOURCES,
82
+ THREAD_COLUMNS,
78
83
  TRACKED_CHAT_COLUMNS,
79
84
  accountGroupsOf,
80
85
  attachmentColumns,
@@ -0,0 +1,42 @@
1
+ import { createRequire as __bundleRequire } from "node:module";
2
+ const require = __bundleRequire(import.meta.url);
3
+ import {
4
+ buildStems,
5
+ storeMaintenanceCommands,
6
+ storeSummary
7
+ } from "./chunk-BVLPNNEL.js";
8
+ import "./chunk-IZKXJJ7V.js";
9
+ import "./chunk-5SAF3XOL.js";
10
+ import "./chunk-PIJUGF5F.js";
11
+ import "./chunk-G7W53MQP.js";
12
+ import "./chunk-2DAXUNTS.js";
13
+ import "./chunk-HTQTIKWP.js";
14
+ import "./chunk-AS2PJNQ2.js";
15
+ import "./chunk-7Z4HR6GO.js";
16
+ import "./chunk-DZLHY4IA.js";
17
+ import "./chunk-SOYOOU2D.js";
18
+ import "./chunk-R5RYPD23.js";
19
+ import "./chunk-LATYBJ4T.js";
20
+ import "./chunk-RJ7AS7UB.js";
21
+ import "./chunk-VXOR76ZL.js";
22
+ import "./chunk-U6QD3J3F.js";
23
+ import "./chunk-VOTEB3AN.js";
24
+ import "./chunk-NVNUUHT5.js";
25
+ import "./chunk-R2JKPHH5.js";
26
+ import "./chunk-YOJLIVGO.js";
27
+ import "./chunk-3WDYHOAF.js";
28
+ import "./chunk-TJJ2XSJP.js";
29
+ import "./chunk-NH6LZ3H3.js";
30
+ import "./chunk-3MDNAYQA.js";
31
+ import "./chunk-CGFQT3LQ.js";
32
+ import "./chunk-DQIBGCF3.js";
33
+ import "./chunk-45244QQ6.js";
34
+ import "./chunk-62JRF2JA.js";
35
+ import "./chunk-IOJ2DTCY.js";
36
+ import "./chunk-Y5E2WNWB.js";
37
+ import "./chunk-ZVVMGPBJ.js";
38
+ export {
39
+ buildStems,
40
+ storeMaintenanceCommands,
41
+ storeSummary
42
+ };
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.13.2";
1
+ export declare const VERSION = "0.14.0";
2
2
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,2 +1,2 @@
1
- export const VERSION = "0.13.2";
1
+ export const VERSION = "0.14.0";
2
2
  //# sourceMappingURL=version.js.map
package/docs/commands.md CHANGED
@@ -27,6 +27,7 @@ lists the profiles on this computer.
27
27
  | `--max-output-bytes <bytes>` | maximum machine output bytes (default: 4194304; 0 disables). |
28
28
  | `--brief` | found items as reference, title, time, author and excerpt only. |
29
29
  | `--full` | found items with their whole text and every provider field. |
30
+ | `--compact` | one line per item for an agent: reference first, text last, paging and next steps as # lines. |
30
31
  | `--dry-run` | preview parsed arguments and permissions before running the action. |
31
32
  | `--yes` | go ahead without the question an ask level puts before a write. |
32
33
  | `--record` | keep this run even where the config says record false; record_input false leaves the typed words out. |
@@ -228,13 +229,9 @@ the settings in force, and where each one came from
228
229
  the profile, the profiles that exist, and each setting with where it came from
229
230
 
230
231
  ```sh
231
- clidev config show [options]
232
+ clidev config show
232
233
  ```
233
234
 
234
- | Option | What it does |
235
- |---|---|
236
- | `--bot` | the settings a bot command on this profile gets, rather than the personal account's. |
237
-
238
235
  **Returns:** the profile, the profiles that exist, and each setting with where it came from
239
236
 
240
237
  **Example:** `clidev personal config show`
@@ -251,14 +248,12 @@ clidev config set <setting> <value> [options]
251
248
 
252
249
  | Argument | | What it is |
253
250
  |---|---|---|
254
- | `setting` | required | one of: limit, timeout_ms, color, record, record_input, keep_runs_for_days, keep_successful_runs_for_days, runs_size_limit_mb, permissions, requests_per_minute, speech_model, picture_search, search_reranker, embedding_provider, embedding_model, embedding_base_url, embedding_dims, models, update_check, skill_hint, search_stemmers.cyrillic, search_stemmers.latin. |
251
+ | `setting` | required | one of: limit, timeout_ms, color, record, record_input, keep_runs_for_days, keep_successful_runs_for_days, runs_size_limit_mb, permissions, requests_per_minute, search_reranker, embedding_provider, embedding_model, embedding_base_url, embedding_dims, models, update_check, skill_hint, search_stemmers.cyrillic, search_stemmers.latin. |
255
252
  | `value` | required | a number, true or false; for a group tg:work,max:Alice,email:me@x. |
256
253
 
257
254
  | Option | What it does |
258
255
  |---|---|
259
256
  | `--defaults` | change what every profile gets, rather than this profile. |
260
- | `--personal` | only for personal accounts — the personal section of the file. |
261
- | `--bot` | only for bots — the bot section of the file. |
262
257
 
263
258
  **Returns:** save a setting to the configuration file
264
259
 
@@ -276,18 +271,48 @@ clidev config unset <setting> [options]
276
271
 
277
272
  | Argument | | What it is |
278
273
  |---|---|---|
279
- | `setting` | required | one of: limit, timeout_ms, color, record, record_input, keep_runs_for_days, keep_successful_runs_for_days, runs_size_limit_mb, permissions, requests_per_minute, speech_model, picture_search, search_reranker, embedding_provider, embedding_model, embedding_base_url, embedding_dims, models, update_check, skill_hint, search_stemmers.cyrillic, search_stemmers.latin. |
274
+ | `setting` | required | one of: limit, timeout_ms, color, record, record_input, keep_runs_for_days, keep_successful_runs_for_days, runs_size_limit_mb, permissions, requests_per_minute, search_reranker, embedding_provider, embedding_model, embedding_base_url, embedding_dims, models, update_check, skill_hint, search_stemmers.cyrillic, search_stemmers.latin. |
280
275
 
281
276
  | Option | What it does |
282
277
  |---|---|
283
278
  | `--defaults` | change what every profile gets, rather than this profile. |
284
- | `--personal` | only for personal accounts — the personal section of the file. |
285
- | `--bot` | only for bots — the bot section of the file. |
286
279
 
287
280
  **Returns:** remove a setting from the configuration file
288
281
 
289
282
  **Example:** `clidev personal config unset limit`
290
283
 
284
+ ### `clidev config migrate`
285
+
286
+ write each setting the file lacks at its default, keeping yours
287
+
288
+ **Changes something on this computer only.**
289
+
290
+ ```sh
291
+ clidev config migrate
292
+ ```
293
+
294
+ **Returns:** write each setting the file lacks at its default, keeping yours
295
+
296
+ **Example:** `clidev config migrate`
297
+
298
+ ### `clidev config repair`
299
+
300
+ fix broken JSON syntax in the settings file — comments, a missing or extra comma, unquoted keys, single quotes, missing closing brackets at the end — keeping every value, with a backup beside it; refuses anything with more than one reading and changes nothing then
301
+
302
+ **Changes something on this computer only.**
303
+
304
+ ```sh
305
+ clidev config repair [options]
306
+ ```
307
+
308
+ | Option | What it does |
309
+ |---|---|
310
+ | `--dry-run` | say what it would fix, and change nothing. |
311
+
312
+ **Returns:** fix the settings file's JSON syntax, keeping every value
313
+
314
+ **Example:** `clidev config repair`, `clidev config repair --dry-run`
315
+
291
316
  ## `clidev runs`
292
317
 
293
318
  recorded runs — what this tool did, and when
@@ -369,5 +394,6 @@ Branch on the code, not on the text: the text can change, the code does not.
369
394
  | `12` | `provider_unavailable` |
370
395
  | `13` | `invalid_response` |
371
396
  | `14` | `outcome_unknown` |
397
+ | `15` | `conflict` |
372
398
  | `130` | `cancelled` |
373
399
  | `1` | anything else |
@@ -10,7 +10,7 @@ the first question of the [design interview](skills/design-interview/SKILL.md):
10
10
  | calendar | [gcal-cli](https://github.com/WireCatLabs/gcal-cli) |
11
11
  | meetings | [zoom-cli](https://github.com/WireCatLabs/zoom-cli) |
12
12
  | notes | [cli-memo](https://github.com/WireCatLabs/cli-memo) |
13
- | mail, other | none of its own yet: pick the nearest one with the owner. cli-memo [imports mail](https://github.com/WireCatLabs/cli-memo/blob/c2d21254ab360aed7149a3250d17e879283aa603/docs/mail.md) |
13
+ | mail, CRM, other | none of its own yet: pick the nearest one with the owner. cli-memo [imports mail](https://github.com/WireCatLabs/cli-memo/blob/c2d21254ab360aed7149a3250d17e879283aa603/docs/mail.md) |
14
14
 
15
15
  A messenger CLI sets `messenger: true` in `src/identity.ts`, and `new --category messenger` writes it. Every other
16
16
  category keeps the template's `messenger: false`, so the shared help and `commands` do not speak of chats, messages
@@ -10,8 +10,8 @@ this order, one at a time, and write each answer down as it comes. `npx @wirecat
10
10
  questions in a terminal and takes them as flags without one; when `DESIGN.md` already has the answers, read them and
11
11
  go to the further questions.
12
12
 
13
- 1. **What kind of tool is it?** messenger · mail · notes · files and documents · calendar · meetings · other. It
14
- picks the reference CLI (see [Reference CLIs](../../reference-clis.md)).
13
+ 1. **What kind of tool is it?** messenger · mail · notes · files and documents · calendar · meetings · CRM (sales:
14
+ deals, contacts, companies) · other. It picks the reference CLI (see [Reference CLIs](../../reference-clis.md)).
15
15
  2. **Which languages is the content in?** Any languages, several allowed: the messages, documents or transcripts the
16
16
  CLI handles. The answer picks the language-dependent parts: search stemming, the embedding and speech models.
17
17
  3. **How does a person sign in?** OAuth in the browser · an API token or key · a session (phone code, QR) · none ·
@@ -7,7 +7,7 @@ ran it · ⛔ not tested offline, with the reason and where it is checked instea
7
7
  Measured from the test run (`coverage/argv.jsonl`), not searched for — see
8
8
  [TESTING.md](TESTING.md) for how, and for the states and failures that cut across commands.
9
9
 
10
- **50 ✅ · 6 ⛔ · 0 ❌** — 19 commands, 37 options.
10
+ **54 ✅ · 6 ⛔ · 0 ❌** — 21 commands, 39 options.
11
11
 
12
12
  | Command | Option | | Note |
13
13
  |---|---|---|---|
@@ -41,6 +41,9 @@ Measured from the test run (`coverage/argv.jsonl`), not searched for — see
41
41
  | `config unset` | `--defaults` | ✅ | |
42
42
  | `config unset` | `--personal` | ✅ | |
43
43
  | `config unset` | `--bot` | ✅ | |
44
+ | `config migrate` | | ✅ | |
45
+ | `config repair` | | ✅ | |
46
+ | `config repair` | `--dry-run` | ✅ | |
44
47
  | `runs list` | | ✅ | |
45
48
  | `runs list` | `--limit` | ✅ | |
46
49
  | `runs list` | `--page` | ✅ | |
@@ -62,6 +65,7 @@ Measured from the test run (`coverage/argv.jsonl`), not searched for — see
62
65
  | *global* | `--max-output-bytes` | ✅ | |
63
66
  | *global* | `--brief` | ✅ | |
64
67
  | *global* | `--full` | ✅ | |
68
+ | *global* | `--compact` | ✅ | |
65
69
  | *global* | `--dry-run` | ✅ | |
66
70
  | *global* | `--yes` | ✅ | |
67
71
  | *global* | `--record` | ✅ | |
@@ -35,6 +35,7 @@ export const INTERVIEW = [
35
35
  { value: "files", label: "files and documents" },
36
36
  { value: "calendar", label: "calendar" },
37
37
  { value: "meetings", label: "meetings" },
38
+ { value: "crm", label: "CRM (sales: deals, contacts, companies)" },
38
39
  ],
39
40
  },
40
41
  {
package/kit/dist/new.js CHANGED
@@ -117,8 +117,8 @@ export const designDoc = (names, answers) => {
117
117
  "3. Ask the further questions in the interview that the reference CLI does not answer, and write the answers here.",
118
118
  " Build only after the owner has read this page.",
119
119
  "4. When the first command reaches the service, rewrite `README.md`, `docs/index.md` and the description in",
120
- ` \`skills/${names.name}/SKILL.md\` to say what the tool does and who it is for. Rewrite the MCP server's`,
121
- " instructions in `src/mcp.ts` too: name the kinds of outside text the CLI carries (WC-MCP-11).",
120
+ ` \`package.json\` and \`skills/${names.name}/SKILL.md\` to say what the tool does and who it is for. Rewrite the`,
121
+ " MCP server's instructions in `src/mcp.ts` too: name the kinds of outside text the CLI carries (WC-MCP-11).",
122
122
  "",
123
123
  "## Answers",
124
124
  "",
@@ -157,7 +157,12 @@ export const cliPackageJson = (text, names) => {
157
157
  throw new Error("package.json must be a JSON object");
158
158
  const isKit = (value) => typeof value === "string" && /^(\.\/)?kit(\/|$)/.test(value);
159
159
  const repoUrl = `git+https://github.com/${names.owner}/${names.name}.git`;
160
- const next = { ...pkg, name: names.package, version: "0.0.0" };
160
+ const next = {
161
+ ...pkg,
162
+ name: names.package,
163
+ version: "0.0.0",
164
+ description: "A new WireCat CLI, started from cli-template",
165
+ };
161
166
  const bin = typeof pkg.bin === "object" && pkg.bin ? pkg.bin : {};
162
167
  next.bin = {
163
168
  ...Object.fromEntries(Object.entries(bin).filter(([, value]) => !isKit(value))),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wirecat/cli-template",
3
- "version": "0.13.2",
3
+ "version": "0.14.0",
4
4
  "description": "Start a new WireCat CLI: a working skeleton on cli-base and cli-core, copied by new and kept current by upgrade",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Viacheslav Ptsarev",
@@ -87,8 +87,8 @@
87
87
  },
88
88
  "dependencies": {
89
89
  "@modelcontextprotocol/server": "2.4.0",
90
- "@wirecat/cli-base": "0.65.0",
91
- "@wirecat/cli-core": "0.495.0",
90
+ "@wirecat/cli-base": "0.77.1",
91
+ "@wirecat/cli-core": "0.584.0",
92
92
  "commander": "15.0.0"
93
93
  },
94
94
  "devDependencies": {
@@ -177,3 +177,59 @@ it("a failed run keeps the words typed, and record_input false masks them", asyn
177
177
  expect((await ran(["personal", "config", "unset", "record_input"])).code).toBe(0)
178
178
  }
179
179
  })
180
+
181
+ it("runs list --compact prints one plain line per run and the next page as a # line, not JSON", async () => {
182
+ for (const _ of [1, 2]) expect((await ran(["--no-such-flag"])).code).toBe(2)
183
+ const { code, out } = await ran(["runs", "list", "--limit", "1", "--compact"])
184
+ expect(code).toBe(0)
185
+ expect(out.trim().split("\n")).toEqual([
186
+ expect.stringContaining("failed"),
187
+ "# more: clidev runs list --page 2 --limit 1 --compact",
188
+ ])
189
+ expect(() => JSON.parse(out)).toThrow()
190
+ })
191
+
192
+ it("config migrate writes the missing defaults, keeps the owner's value, and repeats as a no-op", async () => {
193
+ const file = join(process.env.CLIDEV_CONFIG_DIR ?? "", "config.json")
194
+ mkdirSync(join(file, ".."), { recursive: true })
195
+ writeFileSync(file, '{ "defaults": { "limit": 5 } }')
196
+ try {
197
+ const first = await ran(["config", "migrate", "--json"])
198
+ expect(first.code).toBe(0)
199
+ expect(json(first.out).item.added).toContain("defaults.record")
200
+ expect(JSON.parse(readFileSync(file, "utf8")).defaults).toMatchObject({ limit: 5, record: expect.any(Boolean) })
201
+ const again = await ran(["config", "migrate", "--json"])
202
+ expect(json(again.out).item.added).toEqual([])
203
+ } finally {
204
+ rmSync(file)
205
+ }
206
+ })
207
+
208
+ it("config repair --dry-run changes nothing, and config repair fixes the JSON with a backup", async () => {
209
+ const dir = process.env.CLIDEV_CONFIG_DIR ?? ""
210
+ const file = join(dir, "config.json")
211
+ const broken = '{ "defaults": { "limit": 5, }, }'
212
+ mkdirSync(dir, { recursive: true })
213
+ writeFileSync(file, broken)
214
+ let backup = ""
215
+ try {
216
+ const preview = await ran(["config", "repair", "--dry-run", "--json"])
217
+ expect(preview.code).toBe(0)
218
+ expect(json(preview.out).item).toMatchObject({ dry_run: true, repaired: false, backup: null })
219
+ expect(readFileSync(file, "utf8")).toBe(broken)
220
+
221
+ const fixed = await ran(["config", "repair", "--json"])
222
+ expect(fixed.code).toBe(0)
223
+ const item = json(fixed.out).item
224
+ expect(item).toMatchObject({
225
+ repaired: true,
226
+ changes: expect.arrayContaining([{ kind: "trailing_comma", line: 1 }]),
227
+ })
228
+ backup = String(item.backup)
229
+ expect(readFileSync(backup, "utf8")).toBe(broken)
230
+ expect(JSON.parse(readFileSync(file, "utf8"))).toEqual({ defaults: { limit: 5 } })
231
+ } finally {
232
+ rmSync(file)
233
+ if (backup) rmSync(backup)
234
+ }
235
+ })
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const VERSION = "0.13.2"
1
+ export const VERSION = "0.14.0"
@@ -1,18 +0,0 @@
1
- import { createRequire as __bundleRequire } from "node:module";
2
- const require = __bundleRequire(import.meta.url);
3
- import {
4
- resolvePaths
5
- } from "./chunk-EFHLQXG6.js";
6
- import {
7
- __name
8
- } from "./chunk-ZVVMGPBJ.js";
9
-
10
- // 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/path.js
11
- import { join } from "node:path";
12
- var wirecatDirectory = /* @__PURE__ */ __name((env = process.env, platform) => resolvePaths({ appName: "WireCat", prefix: "WIRECAT", env, ...platform ? { platform } : {} }).state, "wirecatDirectory");
13
- var storePath = /* @__PURE__ */ __name((env = process.env) => env.MESSAGING_STORE ?? join(wirecatDirectory(env), "wirecat.db"), "storePath");
14
-
15
- export {
16
- wirecatDirectory,
17
- storePath
18
- };