@wirecat/zoom-cli 0.60.1 → 0.61.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 (178) hide show
  1. package/README.md +3 -3
  2. package/dist/answers.d.ts +16 -0
  3. package/dist/answers.d.ts.map +1 -1
  4. package/dist/bin/zm.js +2 -2
  5. package/dist/bundle/{chunk-3R437ICM.js → all-profiles-HZLIU6RZ.js} +11 -7
  6. package/dist/bundle/answer-policy-GRODO2DY.js +96 -0
  7. package/dist/bundle/{anthropic-CSLAACWX.js → anthropic-O2YYPCVK.js} +4 -4
  8. package/dist/bundle/{app-server-RYYXX6QV.js → app-server-YYCANTUE.js} +50 -50
  9. package/dist/bundle/{bun-JVDJVDHL.js → bun-UEFRULAT.js} +2 -2
  10. package/dist/bundle/{bun-sqlite-B5CZHAV4.js → bun-sqlite-VVYKOY7S.js} +3 -3
  11. package/dist/bundle/{chunk-KNAS4VEA.js → chunk-2M2U43IF.js} +2 -2
  12. package/dist/bundle/{chunk-QKSCDALS.js → chunk-35X6G276.js} +1 -1
  13. package/dist/bundle/{chunk-PPHUBORC.js → chunk-3TGR4RDD.js} +32 -34
  14. package/dist/bundle/{chunk-WEUXLXOZ.js → chunk-4XI4PDEH.js} +31 -21
  15. package/dist/bundle/{chunk-W5EUHV3J.js → chunk-4XPIOW5L.js} +1 -1
  16. package/dist/bundle/{chunk-XS72YFPV.js → chunk-5NRBNGR3.js} +2 -2
  17. package/dist/bundle/{chunk-VVKHF6VJ.js → chunk-67WW33JB.js} +49 -24
  18. package/dist/bundle/{chunk-KYUIU5UR.js → chunk-6LHTWR3X.js} +2 -2
  19. package/dist/bundle/{chunk-K6NPOZUP.js → chunk-6RV7KXDF.js} +7 -7
  20. package/dist/bundle/{chunk-46R2JTGO.js → chunk-6SLGIPLT.js} +2 -2
  21. package/dist/bundle/{chunk-IQENQXUJ.js → chunk-77GJITSU.js} +2 -2
  22. package/dist/bundle/{chunk-BO7J5Z3T.js → chunk-7ATLKYBN.js} +17 -17
  23. package/dist/bundle/{chunk-VJBVNDFR.js → chunk-7DMMNCY2.js} +3 -3
  24. package/dist/bundle/chunk-ABCHE4YP.js +217 -0
  25. package/dist/bundle/{chunk-Y3YURIZF.js → chunk-AOSIU5T6.js} +51 -38
  26. package/dist/bundle/{chunk-HYZ545ON.js → chunk-B3PTSX5D.js} +2 -2
  27. package/dist/bundle/{chunk-GEVHI226.js → chunk-B45MFBBF.js} +6 -6
  28. package/dist/bundle/{chunk-6BJQBVMN.js → chunk-BNUNZTOU.js} +25 -25
  29. package/dist/bundle/{chunk-ZDRDCANC.js → chunk-BPQNTYLN.js} +388 -299
  30. package/dist/bundle/{chunk-VLE3FWE3.js → chunk-CMG54Q4X.js} +120 -32
  31. package/dist/bundle/{chunk-RACSKYNX.js → chunk-COU66X3X.js} +7 -5
  32. package/dist/bundle/{chunk-AOZGGGUK.js → chunk-CUSGSXSR.js} +2 -2
  33. package/dist/bundle/{chunk-MFS52LTZ.js → chunk-DLAFGSTN.js} +1 -1
  34. package/dist/bundle/{chunk-V53IB5AU.js → chunk-E4QPLXZT.js} +47 -47
  35. package/dist/bundle/{chunk-EUHQ5D4K.js → chunk-E4T7IJJO.js} +26 -26
  36. package/dist/bundle/{chunk-3LBA63D5.js → chunk-F32GKBMF.js} +22 -5
  37. package/dist/bundle/{chunk-YEZQ7SD7.js → chunk-FAOVUALC.js} +13 -13
  38. package/dist/bundle/{chunk-EF2RCQ3L.js → chunk-FBJC7OCI.js} +1 -1
  39. package/dist/bundle/{chunk-HIAO4MPA.js → chunk-FQ54A7GI.js} +1 -1
  40. package/dist/bundle/{chunk-ES6UWVTM.js → chunk-FXY45HU7.js} +6 -6
  41. package/dist/bundle/{chunk-REC3AZP6.js → chunk-GNHPYQMM.js} +2 -2
  42. package/dist/bundle/{chunk-TY5PBEH2.js → chunk-H5EAHMQN.js} +11 -11
  43. package/dist/bundle/chunk-HF233RN4.js +335 -0
  44. package/dist/bundle/{chunk-RUEPZTNA.js → chunk-HTGBUE2U.js} +2 -2
  45. package/dist/bundle/{chunk-HAUAEGGI.js → chunk-IKZFR645.js} +10 -10
  46. package/dist/bundle/chunk-JKWYXBGK.js +380 -0
  47. package/dist/bundle/{chunk-EN5DBDKW.js → chunk-KGZHRJ7H.js} +4 -4
  48. package/dist/bundle/{chunk-ZK7Y5K63.js → chunk-KPZIQKOF.js} +1 -1
  49. package/dist/bundle/{chunk-PAEBFJUC.js → chunk-KXYURHVE.js} +118 -95
  50. package/dist/bundle/{chunk-IRX2YVAH.js → chunk-KZGHGU2M.js} +4 -4
  51. package/dist/bundle/{chunk-ZXQCA3ZW.js → chunk-KZV5GU7G.js} +8 -8
  52. package/dist/bundle/{chunk-R4SRXI7M.js → chunk-L7VIPVHL.js} +166 -102
  53. package/dist/bundle/{chunk-XLJV3ZOH.js → chunk-LPJ3S6GE.js} +1 -1
  54. package/dist/bundle/{chunk-HBYE4EP2.js → chunk-LX6DO44O.js} +1 -1
  55. package/dist/bundle/{chunk-N27LOY3D.js → chunk-LXOSBFWW.js} +7 -7
  56. package/dist/bundle/{chunk-KXEC5FVT.js → chunk-M3EVVGR6.js} +2 -2
  57. package/dist/bundle/{chunk-YLATWUE7.js → chunk-MBMDF5EL.js} +6 -6
  58. package/dist/bundle/{chunk-AZZPMHP2.js → chunk-MTAVA2LS.js} +2 -2
  59. package/dist/bundle/{chunk-7IDNHVJS.js → chunk-MVRCLMQL.js} +2 -2
  60. package/dist/bundle/{chunk-LVHZQCP4.js → chunk-NVN4O5IC.js} +14 -10
  61. package/dist/bundle/{chunk-4TCQT57W.js → chunk-O3WVOAT7.js} +408 -420
  62. package/dist/bundle/{chunk-UWVNY5CA.js → chunk-OLZE27RS.js} +2 -2
  63. package/dist/bundle/{chunk-XX7KVQIG.js → chunk-OMUX4LSS.js} +4 -4
  64. package/dist/bundle/{chunk-IQSBMAYB.js → chunk-OU46OTTE.js} +3 -3
  65. package/dist/bundle/{chunk-Z4D6M62I.js → chunk-OVVDOVLN.js} +2 -2
  66. package/dist/bundle/{chunk-WB7MQHUI.js → chunk-P2NRA7E5.js} +2 -2
  67. package/dist/bundle/{chunk-PEMLI3T7.js → chunk-PCUPOGKR.js} +6 -4
  68. package/dist/bundle/{chunk-OEEMCNAO.js → chunk-QHT2LZRW.js} +6 -6
  69. package/dist/bundle/{decode-CTQJQYNU.js → chunk-RGOBGHWE.js} +21 -18
  70. package/dist/bundle/{chunk-Q7U627RY.js → chunk-RSXLI5GP.js} +79 -59
  71. package/dist/bundle/{chunk-LPY2ISJK.js → chunk-S726LZCH.js} +6 -6
  72. package/dist/bundle/{chunk-PATM7JGR.js → chunk-SVBM6F4Z.js} +1 -1
  73. package/dist/bundle/{chunk-X7YPTYM4.js → chunk-T7IQMYPW.js} +15 -3
  74. package/dist/bundle/{chunk-WFT2GGFH.js → chunk-TD4Y5LXG.js} +25 -22
  75. package/dist/bundle/{chunk-FZMRHNOP.js → chunk-U4Y2QQ2D.js} +3 -3
  76. package/dist/bundle/{chunk-CGCJ6P3A.js → chunk-UPWHCUVA.js} +617 -380
  77. package/dist/bundle/{chunk-FWJ3Q7NO.js → chunk-UYAKSUT5.js} +5 -5
  78. package/dist/bundle/{chunk-LPDYI5GR.js → chunk-VARX3SBT.js} +1 -1
  79. package/dist/bundle/{chunk-WWNZS7ZY.js → chunk-WVYSOV3C.js} +16 -4
  80. package/dist/bundle/{chunk-VKUS2V4L.js → chunk-XOJGXWTK.js} +8 -8
  81. package/dist/bundle/{chunk-OBUKZ2ZM.js → chunk-XX2PDQ54.js} +31 -211
  82. package/dist/bundle/{chunk-43BX56ZI.js → chunk-XZ4OVTA5.js} +9 -9
  83. package/dist/bundle/{chunk-Z5H47R4G.js → chunk-YESOQEOB.js} +735 -826
  84. package/dist/bundle/{cli-CYKEKT5P.js → cli-O4LAGYXI.js} +60 -54
  85. package/dist/bundle/command-contract-67QKBY6M.js +38 -0
  86. package/dist/bundle/config-ABURZDD2.js +78 -0
  87. package/dist/bundle/decode-WRMZJJCR.js +20 -0
  88. package/dist/bundle/{dist-YLSQKPPY.js → dist-SQK4GIJT.js} +14 -14
  89. package/dist/bundle/{echarts-4OQHS575.js → echarts-3DOOJSQR.js} +2 -2
  90. package/dist/bundle/{embed-P2BKRRJD.js → embed-OYRHTMFI.js} +4 -4
  91. package/dist/bundle/{embedder-HC6ZARP5.js → embedder-ZAYCL22W.js} +7 -7
  92. package/dist/bundle/{first-run-UERFFXBV.js → first-run-QXSPIXOQ.js} +8 -8
  93. package/dist/bundle/first-screen-MD6HWIJW.js +36 -0
  94. package/dist/bundle/{folders-RSLPTZLJ.js → folders-EXQLKXVK.js} +2 -2
  95. package/dist/bundle/{instructions-3QZBKKPF.js → instructions-GFEOB7XJ.js} +1 -1
  96. package/dist/bundle/{main-2T6D77JC.js → main-RADF3CRI.js} +16 -16
  97. package/dist/bundle/{mcp-OQBZXELQ.js → mcp-WSGVVZWI.js} +2 -2
  98. package/dist/bundle/{meetings-ZIDSQZBJ.js → meetings-6BIIT42H.js} +4 -4
  99. package/dist/bundle/{node-R2BLYUSB.js → node-A3B2YRQI.js} +2 -2
  100. package/dist/bundle/{node-sqlite-7CGHAHIS.js → node-sqlite-XRP5FUDY.js} +3 -3
  101. package/dist/bundle/{oauth-UBCYXTWV.js → oauth-YICY4AN4.js} +5 -5
  102. package/dist/bundle/{open-AWUB4Q7Z.js → open-4CNKSQRB.js} +2 -2
  103. package/dist/bundle/openai-YYRO3X7I.js +22 -0
  104. package/dist/bundle/{output-file-SN22HAVL.js → output-file-7BXYV6OL.js} +3 -3
  105. package/dist/bundle/{process-IX5YWGDP.js → process-A45QXKID.js} +1 -1
  106. package/dist/bundle/{program-STYPTNT3.js → program-DTP7BRTW.js} +415 -428
  107. package/dist/bundle/{prompt-MAYUHEGN.js → prompt-5LMKO7SE.js} +3 -3
  108. package/dist/bundle/{recognize-FVTNXRTF.js → recognize-MB6WRGUD.js} +4 -2
  109. package/dist/bundle/{remote-WCPRU73L.js → remote-PD7WMTTS.js} +5 -5
  110. package/dist/bundle/{rerank-6CBLZBCV.js → rerank-7E6GQ5Y6.js} +5 -5
  111. package/dist/bundle/{run-log-G4WZTOBW.js → run-log-TCFK4LEC.js} +53 -53
  112. package/dist/bundle/{chunk-XNUFDYR6.js → serve-JBT2BWHK.js} +8 -6
  113. package/dist/bundle/server-CFIKEPLG.js +66 -0
  114. package/dist/bundle/{chunk-INARC5O7.js → server-H2UPGGBI.js} +43 -10
  115. package/dist/bundle/{services-326Z3TNE.js → services-SJOTKL5V.js} +33 -26
  116. package/dist/bundle/{speech-KSZ7RKM3.js → speech-4SL25GSC.js} +28 -5
  117. package/dist/bundle/{state-EPB3L2JM.js → state-FVMTDZ6B.js} +4 -4
  118. package/dist/bundle/{store-KO242JBK.js → store-DNPKBUVO.js} +13 -13
  119. package/dist/bundle/{store-7WX7SW2R.js → store-TI77SCNL.js} +15 -15
  120. package/dist/bundle/store-connection-GIFWWMNO.js +76 -0
  121. package/dist/bundle/store-maintenance-command-WBKGF2CZ.js +55 -0
  122. package/dist/bundle/{streaming-M6VDKBBH.js → streaming-UHAHGPH5.js} +4 -4
  123. package/dist/bundle/{tokens-BTNXHR7T.js → tokens-Y2MX6JBL.js} +4 -4
  124. package/dist/bundle/zm.js +1 -1
  125. package/dist/commands.d.ts +1 -2
  126. package/dist/commands.d.ts.map +1 -1
  127. package/dist/commands.js +3 -16
  128. package/dist/commands.js.map +1 -1
  129. package/dist/contract-overrides.d.ts +0 -2
  130. package/dist/contract-overrides.d.ts.map +1 -1
  131. package/dist/contract-overrides.js +0 -158
  132. package/dist/contract-overrides.js.map +1 -1
  133. package/dist/program-bindings.d.ts +1 -1
  134. package/dist/program-bindings.d.ts.map +1 -1
  135. package/dist/program-bindings.js +16 -18
  136. package/dist/program-bindings.js.map +1 -1
  137. package/dist/program.d.ts +2 -4
  138. package/dist/program.d.ts.map +1 -1
  139. package/dist/program.js.map +1 -1
  140. package/dist/read-only.d.ts.map +1 -1
  141. package/dist/read-only.js +3 -0
  142. package/dist/read-only.js.map +1 -1
  143. package/dist/run.d.ts.map +1 -1
  144. package/dist/run.js +82 -32
  145. package/dist/run.js.map +1 -1
  146. package/dist/setup-commands.d.ts.map +1 -1
  147. package/dist/setup-commands.js +8 -46
  148. package/dist/setup-commands.js.map +1 -1
  149. package/dist/store-commands.d.ts.map +1 -1
  150. package/dist/store-commands.js +4 -1
  151. package/dist/store-commands.js.map +1 -1
  152. package/dist/version.d.ts +1 -1
  153. package/dist/version.js +1 -1
  154. package/package.json +3 -3
  155. package/dist/bundle/all-profiles-E6KXASLY.js +0 -25
  156. package/dist/bundle/answer-policy-YWCC55NB.js +0 -96
  157. package/dist/bundle/chunk-DBSWVZES.js +0 -48
  158. package/dist/bundle/chunk-WYRYLBST.js +0 -390
  159. package/dist/bundle/chunk-YLBNPI7H.js +0 -2
  160. package/dist/bundle/command-contract-P45QCCXM.js +0 -38
  161. package/dist/bundle/config-JYKTLEA3.js +0 -79
  162. package/dist/bundle/first-screen-VFIS7FX3.js +0 -36
  163. package/dist/bundle/mcp-4VHVUMCR.js +0 -92
  164. package/dist/bundle/mcp-6CLW2IZM.js +0 -189
  165. package/dist/bundle/serve-3IDUVTZL.js +0 -19
  166. package/dist/bundle/server-7GU36TER.js +0 -66
  167. package/dist/bundle/server-VHRS5UAL.js +0 -53
  168. package/dist/bundle/store-connection-K3MNDCQQ.js +0 -76
  169. package/dist/bundle/store-maintenance-command-GJDJYI2U.js +0 -54
  170. package/dist/mcp-command.d.ts +0 -33
  171. package/dist/mcp-command.d.ts.map +0 -1
  172. package/dist/mcp-command.js +0 -143
  173. package/dist/mcp-command.js.map +0 -1
  174. package/dist/mcp.d.ts +0 -30
  175. package/dist/mcp.d.ts.map +0 -1
  176. package/dist/mcp.js +0 -110
  177. package/dist/mcp.js.map +0 -1
  178. /package/dist/bundle/{chunk-O5EHUB2V.js → chunk-62EDJKGP.js} +0 -0
@@ -4,18 +4,18 @@ import {
4
4
  readSharedSection,
5
5
  sharedConfigPath,
6
6
  writeSharedSection
7
- } from "./chunk-FWJ3Q7NO.js";
7
+ } from "./chunk-UYAKSUT5.js";
8
8
  import {
9
9
  storePath
10
- } from "./chunk-KXEC5FVT.js";
10
+ } from "./chunk-M3EVVGR6.js";
11
11
  import {
12
12
  CliError
13
- } from "./chunk-R4SRXI7M.js";
13
+ } from "./chunk-L7VIPVHL.js";
14
14
  import {
15
15
  __name
16
16
  } from "./chunk-ZVVMGPBJ.js";
17
17
 
18
- // node_modules/.pnpm/@wirecat+cli-core@0.491.0_@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_type_1193098e908042dfe6f4070222ac0245/node_modules/@wirecat/cli-core/dist/cli/setup-answers.js
18
+ // node_modules/.pnpm/@wirecat+cli-core@0.503.0_@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_type_e5d4ab9592406842b4a214ba16b749bd/node_modules/@wirecat/cli-core/dist/cli/setup-answers.js
19
19
  var PERMISSION_ANSWERS = ["readonly", "allow"];
20
20
  var QUESTIONS = ["languages", "tools", "permissions"];
21
21
  var SECTION = "setup";
@@ -2,12 +2,12 @@ import { createRequire as __bundleRequire } from "node:module";
2
2
  const require = __bundleRequire(import.meta.url);
3
3
  import {
4
4
  CliError
5
- } from "./chunk-R4SRXI7M.js";
5
+ } from "./chunk-L7VIPVHL.js";
6
6
  import {
7
7
  __name
8
8
  } from "./chunk-ZVVMGPBJ.js";
9
9
 
10
- // node_modules/.pnpm/@wirecat+cli-core@0.491.0_@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_type_1193098e908042dfe6f4070222ac0245/node_modules/@wirecat/cli-core/dist/search/languages.js
10
+ // node_modules/.pnpm/@wirecat+cli-core@0.503.0_@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_type_e5d4ab9592406842b4a214ba16b749bd/node_modules/@wirecat/cli-core/dist/search/languages.js
11
11
  var LANGUAGES = [
12
12
  { name: "russian", code: "ru", label: "Russian", script: "cyrillic", dictionary: "dictionary-ru" },
13
13
  { name: "english", code: "en", label: "English", script: "latin", dictionary: "dictionary-en" },
@@ -15,12 +15,12 @@ var LANGUAGES = [
15
15
  ];
16
16
  var languagesOf = /* @__PURE__ */ __name((script) => LANGUAGES.filter((one) => one.script === script).map(({ name }) => name), "languagesOf");
17
17
 
18
- // node_modules/.pnpm/@wirecat+cli-core@0.491.0_@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_type_1193098e908042dfe6f4070222ac0245/node_modules/@wirecat/cli-core/dist/store/normalize.js
18
+ // node_modules/.pnpm/@wirecat+cli-core@0.503.0_@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_type_e5d4ab9592406842b4a214ba16b749bd/node_modules/@wirecat/cli-core/dist/store/normalize.js
19
19
  var NORMALIZER_VERSION = 1;
20
20
  var fold = /* @__PURE__ */ __name((text) => text.normalize("NFKD").replace(new RegExp("\\p{M}+", "gu"), "").normalize("NFC").toLowerCase(), "fold");
21
21
  var normalize = /* @__PURE__ */ __name((text) => fold(text).replace(new RegExp("\\p{Cc}", "gu"), " ").replace(/\s+/gu, " ").trim(), "normalize");
22
22
 
23
- // node_modules/.pnpm/@wirecat+cli-core@0.491.0_@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_type_1193098e908042dfe6f4070222ac0245/node_modules/@wirecat/cli-core/dist/search/snowball/base-stemmer.js
23
+ // node_modules/.pnpm/@wirecat+cli-core@0.503.0_@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_type_e5d4ab9592406842b4a214ba16b749bd/node_modules/@wirecat/cli-core/dist/search/snowball/base-stemmer.js
24
24
  var BaseStemmer = class {
25
25
  static {
26
26
  __name(this, "BaseStemmer");
@@ -395,7 +395,7 @@ var BaseStemmer = class {
395
395
  }
396
396
  };
397
397
 
398
- // node_modules/.pnpm/@wirecat+cli-core@0.491.0_@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_type_1193098e908042dfe6f4070222ac0245/node_modules/@wirecat/cli-core/dist/search/snowball/english-stemmer.js
398
+ // node_modules/.pnpm/@wirecat+cli-core@0.503.0_@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_type_e5d4ab9592406842b4a214ba16b749bd/node_modules/@wirecat/cli-core/dist/search/snowball/english-stemmer.js
399
399
  var a_0 = [
400
400
  ["arsen", -1],
401
401
  ["commun", -1],
@@ -1096,7 +1096,7 @@ var english_stemmer_default = class extends BaseStemmer {
1096
1096
  stemWord = this.stem;
1097
1097
  };
1098
1098
 
1099
- // node_modules/.pnpm/@wirecat+cli-core@0.491.0_@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_type_1193098e908042dfe6f4070222ac0245/node_modules/@wirecat/cli-core/dist/search/snowball/russian-stemmer.js
1099
+ // node_modules/.pnpm/@wirecat+cli-core@0.503.0_@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_type_e5d4ab9592406842b4a214ba16b749bd/node_modules/@wirecat/cli-core/dist/search/snowball/russian-stemmer.js
1100
1100
  var a_02 = [
1101
1101
  ["\u0432", 1],
1102
1102
  ["\u0438\u0432", 2, 1],
@@ -1519,7 +1519,7 @@ var russian_stemmer_default = class extends BaseStemmer {
1519
1519
  stemWord = this.stem;
1520
1520
  };
1521
1521
 
1522
- // node_modules/.pnpm/@wirecat+cli-core@0.491.0_@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_type_1193098e908042dfe6f4070222ac0245/node_modules/@wirecat/cli-core/dist/search/snowball/spanish-stemmer.js
1522
+ // node_modules/.pnpm/@wirecat+cli-core@0.503.0_@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_type_e5d4ab9592406842b4a214ba16b749bd/node_modules/@wirecat/cli-core/dist/search/snowball/spanish-stemmer.js
1523
1523
  var a_03 = [
1524
1524
  ["", 6],
1525
1525
  ["\xE1", 1, 1],
@@ -2195,7 +2195,7 @@ var spanish_stemmer_default = class extends BaseStemmer {
2195
2195
  stemWord = this.stem;
2196
2196
  };
2197
2197
 
2198
- // node_modules/.pnpm/@wirecat+cli-core@0.491.0_@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_type_1193098e908042dfe6f4070222ac0245/node_modules/@wirecat/cli-core/dist/search/stem.js
2198
+ // node_modules/.pnpm/@wirecat+cli-core@0.503.0_@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_type_e5d4ab9592406842b4a214ba16b749bd/node_modules/@wirecat/cli-core/dist/search/stem.js
2199
2199
  var SNOWBALL_VERSION = "3.1.1";
2200
2200
  var CYRILLIC_STEMMERS = [...languagesOf("cyrillic"), "none"];
2201
2201
  var LATIN_STEMMERS = [...languagesOf("latin"), "none"];
@@ -1872,7 +1872,7 @@ var require_cli_table3 = __commonJS({
1872
1872
  }
1873
1873
  });
1874
1874
 
1875
- // node_modules/.pnpm/@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/errors.js
1875
+ // node_modules/.pnpm/@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/errors.js
1876
1876
  var errorCodes = [
1877
1877
  "validation_error",
1878
1878
  "configuration_error",
@@ -1906,30 +1906,6 @@ var CliError = class extends Error {
1906
1906
  };
1907
1907
  var isCliError = /* @__PURE__ */ __name((value) => typeof value === "object" && value !== null && value[BRAND] === true, "isCliError");
1908
1908
 
1909
- // node_modules/.pnpm/@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/sanitize.js
1910
- var CONTROL = (
1911
- // biome-ignore lint/suspicious/noControlCharactersInRegex: matching them is the whole point
1912
- /[\u0000-\u0008\u000B-\u001F\u007F-\u009F\u200B\u200E\u200F\u202A-\u202E\u2066-\u2069\uFEFF\u{E0000}-\u{E007F}]/gu
1913
- );
1914
- var SUBDIVISION_FLAG = /\u{1F3F4}[\u{E0061}-\u{E007A}]{2}[\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}]{1,3}\u{E007F}/gu;
1915
- var LINE_BREAKS = /[\t\n\u2028\u2029]/g;
1916
- var escaped = /* @__PURE__ */ __name((c) => {
1917
- const code = c.codePointAt(0) ?? 0;
1918
- if (code > 65535)
1919
- return `\\u{${code.toString(16)}}`;
1920
- return code > 255 ? `\\u${code.toString(16).padStart(4, "0")}` : `\\x${code.toString(16).padStart(2, "0")}`;
1921
- }, "escaped");
1922
- var visibleControls = /* @__PURE__ */ __name((text2) => {
1923
- let at = 0;
1924
- let result = "";
1925
- for (const flag of text2.matchAll(SUBDIVISION_FLAG)) {
1926
- result += text2.slice(at, flag.index).replace(CONTROL, escaped) + flag[0];
1927
- at = flag.index + flag[0].length;
1928
- }
1929
- return result + text2.slice(at).replace(CONTROL, escaped);
1930
- }, "visibleControls");
1931
- var singleLine = /* @__PURE__ */ __name((text2) => visibleControls(text2).replace(LINE_BREAKS, escaped), "singleLine");
1932
-
1933
1909
  // node_modules/.pnpm/valibot@1.5.0_typescript@7.0.2/node_modules/valibot/dist/index.mjs
1934
1910
  var store$4;
1935
1911
  var DEFAULT_CONFIG = {
@@ -3793,7 +3769,7 @@ function toStandardJsonSchema(schema) {
3793
3769
  }
3794
3770
  __name(toStandardJsonSchema, "toStandardJsonSchema");
3795
3771
 
3796
- // node_modules/.pnpm/@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/standards/registry.js
3772
+ // node_modules/.pnpm/@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/standards/registry.js
3797
3773
  var word = pipe(string(), regex(/^[a-z][a-z0-9]*(-[a-z0-9]+)*$/, "a lower-case word, words joined by -"));
3798
3774
  var SNAKE_CASE = /^[a-z][a-z0-9]*(_[a-z0-9]+)*$/;
3799
3775
  var text = pipe(string(), regex(/\S/, "must not be empty"));
@@ -3835,7 +3811,7 @@ var fill = /* @__PURE__ */ __name((template, values) => template.replace(PLACEHO
3835
3811
  return String(value);
3836
3812
  }), "fill");
3837
3813
 
3838
- // node_modules/.pnpm/@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/exit-codes.js
3814
+ // node_modules/.pnpm/@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/exit-codes.js
3839
3815
  var EXIT_CODES = {
3840
3816
  validation_error: 2,
3841
3817
  configuration_error: 3,
@@ -3855,7 +3831,31 @@ var EXIT_CODES = {
3855
3831
  var exitCodeFor = /* @__PURE__ */ __name((code) => EXIT_CODES[code], "exitCodeFor");
3856
3832
  var GENERIC_FAILURE = 1;
3857
3833
 
3858
- // node_modules/.pnpm/@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/standards/effects.js
3834
+ // node_modules/.pnpm/@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/sanitize.js
3835
+ var CONTROL = (
3836
+ // biome-ignore lint/suspicious/noControlCharactersInRegex: matching them is the whole point
3837
+ /[\u0000-\u0008\u000B-\u001F\u007F-\u009F\u200B\u200E\u200F\u202A-\u202E\u2066-\u2069\uFEFF\u{E0000}-\u{E007F}]/gu
3838
+ );
3839
+ var SUBDIVISION_FLAG = /\u{1F3F4}[\u{E0061}-\u{E007A}]{2}[\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}]{1,3}\u{E007F}/gu;
3840
+ var LINE_BREAKS = /[\t\n\u2028\u2029]/g;
3841
+ var escaped = /* @__PURE__ */ __name((c) => {
3842
+ const code = c.codePointAt(0) ?? 0;
3843
+ if (code > 65535)
3844
+ return `\\u{${code.toString(16)}}`;
3845
+ return code > 255 ? `\\u${code.toString(16).padStart(4, "0")}` : `\\x${code.toString(16).padStart(2, "0")}`;
3846
+ }, "escaped");
3847
+ var visibleControls = /* @__PURE__ */ __name((text2) => {
3848
+ let at = 0;
3849
+ let result = "";
3850
+ for (const flag of text2.matchAll(SUBDIVISION_FLAG)) {
3851
+ result += text2.slice(at, flag.index).replace(CONTROL, escaped) + flag[0];
3852
+ at = flag.index + flag[0].length;
3853
+ }
3854
+ return result + text2.slice(at).replace(CONTROL, escaped);
3855
+ }, "visibleControls");
3856
+ var singleLine = /* @__PURE__ */ __name((text2) => visibleControls(text2).replace(LINE_BREAKS, escaped), "singleLine");
3857
+
3858
+ // node_modules/.pnpm/@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/standards/effects.js
3859
3859
  var EFFECT_LEVELS = ["none", "read", "write"];
3860
3860
  var effectsSchema = strictObject({
3861
3861
  remote: picklist(EFFECT_LEVELS),
@@ -3863,7 +3863,7 @@ var effectsSchema = strictObject({
3863
3863
  });
3864
3864
  var writes = /* @__PURE__ */ __name((effects) => effects === void 0 || effects.remote === "write" || effects.local === "write", "writes");
3865
3865
 
3866
- // node_modules/.pnpm/@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/standards/output.js
3866
+ // node_modules/.pnpm/@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/standards/output.js
3867
3867
  var MAX_NEXT_STEPS = 2;
3868
3868
  var isoTime = pipe(string(), isoTimestamp("an ISO 8601 time in UTC"), endsWith("Z", "an ISO 8601 time in UTC, ending in `Z`"));
3869
3869
  var reference = pipe(string(), regex(/^[a-z]+:\S+$/, "a reference such as `note:42`"));
@@ -3898,14 +3898,25 @@ var missingSchema = strictObject({
3898
3898
  step: optional(dottedId)
3899
3899
  });
3900
3900
  var limit = pipe(number(), integer(), minValue(1));
3901
+ var totalSchema = strictObject({
3902
+ value: pipe(number(), integer(), minValue(0)),
3903
+ relation: picklist(["eq", "gte"])
3904
+ });
3901
3905
  var pageSchema = variant("mode", [
3902
3906
  strictObject({
3903
3907
  mode: literal("page"),
3904
3908
  limit,
3905
3909
  has_more: boolean(),
3906
- next_page: optional(pipe(number(), integer(), minValue(2)))
3910
+ next_page: optional(pipe(number(), integer(), minValue(2))),
3911
+ total: optional(totalSchema)
3907
3912
  }),
3908
- strictObject({ mode: literal("cursor"), limit, has_more: boolean(), next_cursor: optional(text) })
3913
+ strictObject({
3914
+ mode: literal("cursor"),
3915
+ limit,
3916
+ has_more: boolean(),
3917
+ next_cursor: optional(text),
3918
+ total: optional(totalSchema)
3919
+ })
3909
3920
  ]);
3910
3921
  var issueSchema = strictObject({
3911
3922
  code: picklist(errorCodes),
@@ -3948,7 +3959,7 @@ var jsonlOf = /* @__PURE__ */ __name(({ items, page, meta }) => [
3948
3959
  JSON.stringify({ type: "end", complete: meta.complete, ...meta.issues ? { issues: meta.issues } : {}, page })
3949
3960
  ].join("\n"), "jsonlOf");
3950
3961
 
3951
- // node_modules/.pnpm/@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/standards/errors.js
3962
+ // node_modules/.pnpm/@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/standards/errors.js
3952
3963
  var CRASH_CODE = "internal_error";
3953
3964
  var CRASH_REASON = "command.crashed";
3954
3965
  var errorObjectSchema = strictObject({
@@ -3995,6 +4006,12 @@ var BASE_REASONS = defineReasons([
3995
4006
  { reason: "auth.failed", code: "authentication_error", message: "the sign-in did not work", details: [] },
3996
4007
  { reason: "access.denied", code: "permission_error", message: "this account may not do that", details: [] },
3997
4008
  { reason: "item.not-found", code: "not_found", message: "nothing found by that name", details: [] },
4009
+ {
4010
+ reason: "tool.not-installed",
4011
+ code: "not_found",
4012
+ message: "no wcat-<name> program by that name is on PATH",
4013
+ details: ["tool", "installed"]
4014
+ },
3998
4015
  {
3999
4016
  reason: "confirmation.required",
4000
4017
  code: "confirmation_required",
@@ -4029,7 +4046,7 @@ var BASE_REASONS = defineReasons([
4029
4046
  { reason: CRASH_REASON, code: CRASH_CODE, message: "the command failed; this is a bug", details: [] }
4030
4047
  ]);
4031
4048
 
4032
- // node_modules/.pnpm/@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/standards/steps.js
4049
+ // node_modules/.pnpm/@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/standards/steps.js
4033
4050
  var SAME_COMMAND = "*";
4034
4051
  var commandPath = pipe(string(), regex(/^[a-z][a-z0-9-]*( [a-z][a-z0-9-]*)*$/, "a command path such as `messages sync`"));
4035
4052
  var stepSchema = union([
@@ -4108,7 +4125,7 @@ var STEPS = defineSteps([
4108
4125
  }
4109
4126
  ]);
4110
4127
 
4111
- // node_modules/.pnpm/@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/failure.js
4128
+ // node_modules/.pnpm/@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/failure.js
4112
4129
  var recognise = /* @__PURE__ */ __name((failure) => {
4113
4130
  if (isCliError(failure))
4114
4131
  return failure;
@@ -4255,7 +4272,7 @@ var catchCrashes = /* @__PURE__ */ __name((options) => {
4255
4272
  };
4256
4273
  }, "catchCrashes");
4257
4274
 
4258
- // node_modules/.pnpm/@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/result-fields.js
4275
+ // node_modules/.pnpm/@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/result-fields.js
4259
4276
  var forbidden = /* @__PURE__ */ new Set(["__proto__", "prototype", "constructor"]);
4260
4277
  var validate = /* @__PURE__ */ __name((paths) => {
4261
4278
  if (paths.length === 0 || paths.length > 128 || paths.some((path) => path.length > 256 || !/^[A-Za-z][A-Za-z0-9_]*(?:\.[A-Za-z][A-Za-z0-9_]*)*$/.test(path) || path.split(".").some((part) => forbidden.has(part))))
@@ -4320,7 +4337,7 @@ var projectFields = /* @__PURE__ */ __name((value, fields) => {
4320
4337
  return project(value, fields);
4321
4338
  }, "projectFields");
4322
4339
 
4323
- // node_modules/.pnpm/@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/batch.js
4340
+ // node_modules/.pnpm/@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/batch.js
4324
4341
  var BATCH_LIMITS = Object.freeze({
4325
4342
  requests: 32,
4326
4343
  input_bytes: 262144,
@@ -4467,7 +4484,7 @@ var runBatch = /* @__PURE__ */ __name(async (requests, options = {}) => {
4467
4484
  };
4468
4485
  }, "runBatch");
4469
4486
 
4470
- // node_modules/.pnpm/@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/config.js
4487
+ // node_modules/.pnpm/@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/config.js
4471
4488
  import { randomBytes } from "node:crypto";
4472
4489
  import { mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from "node:fs";
4473
4490
  import { dirname, join } from "node:path";
@@ -4511,7 +4528,7 @@ var saveConfigFile = /* @__PURE__ */ __name((path, config) => {
4511
4528
  `, 384);
4512
4529
  }, "saveConfigFile");
4513
4530
 
4514
- // node_modules/.pnpm/@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/keyring.js
4531
+ // node_modules/.pnpm/@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/keyring.js
4515
4532
  import { createRequire } from "node:module";
4516
4533
  var ENTRY_OPTIONS = { linux: { store: "secret-service" } };
4517
4534
  var require2 = createRequire(new URL("keyring.js", import.meta.resolve("@wirecat/cli-base")).href);
@@ -4531,10 +4548,61 @@ var systemKeyring = {
4531
4548
  delete: /* @__PURE__ */ __name((service, account) => entry(service, account).deletePassword(), "delete")
4532
4549
  };
4533
4550
 
4534
- // node_modules/.pnpm/@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/credentials.js
4551
+ // node_modules/.pnpm/@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/paths.js
4552
+ import { homedir, userInfo } from "node:os";
4553
+ import { join as join2, posix, win32 } from "node:path";
4554
+ var PATH_KINDS = ["config", "state", "cache"];
4555
+ var OVERRIDES = { config: "CONFIG_DIR", state: "STATE_DIR", cache: "CACHE_DIR" };
4556
+ var overrideName = /* @__PURE__ */ __name((appName, prefix, kind) => `${prefix ?? appName.toUpperCase().replace(/[^A-Z0-9]/g, "_")}_${OVERRIDES[kind]}`, "overrideName");
4557
+ var defaultPaths = /* @__PURE__ */ __name(({ appName, env = process.env, platform = process.platform }) => {
4558
+ if (platform === "win32") {
4559
+ const home2 = env.USERPROFILE || homedir();
4560
+ const roaming = env.APPDATA || win32.join(home2, "AppData", "Roaming");
4561
+ const local = env.LOCALAPPDATA || win32.join(home2, "AppData", "Local");
4562
+ return {
4563
+ config: win32.join(roaming, appName, "Config"),
4564
+ state: win32.join(local, appName, "Data"),
4565
+ cache: win32.join(local, appName, "Cache")
4566
+ };
4567
+ }
4568
+ const home = env.HOME || homedir();
4569
+ return {
4570
+ config: posix.join(env.XDG_CONFIG_HOME || posix.join(home, ".config"), appName),
4571
+ state: posix.join(env.XDG_DATA_HOME || posix.join(home, ".local", "share"), appName),
4572
+ cache: posix.join(env.XDG_CACHE_HOME || posix.join(home, ".cache"), appName)
4573
+ };
4574
+ }, "defaultPaths");
4575
+ var resolvePaths = /* @__PURE__ */ __name((options) => {
4576
+ const { appName, prefix, env = process.env } = options;
4577
+ const base = defaultPaths(options);
4578
+ return {
4579
+ config: env[overrideName(appName, prefix, "config")] ?? base.config,
4580
+ state: env[overrideName(appName, prefix, "state")] ?? base.state,
4581
+ cache: env[overrideName(appName, prefix, "cache")] ?? base.cache
4582
+ };
4583
+ }, "resolvePaths");
4584
+ var pathsAreOverridden = /* @__PURE__ */ __name(({ appName, prefix, env = process.env }) => PATH_KINDS.some((kind) => env[overrideName(appName, prefix, kind)] !== void 0), "pathsAreOverridden");
4585
+ var accountHome = /* @__PURE__ */ __name(() => {
4586
+ try {
4587
+ return userInfo().homedir;
4588
+ } catch {
4589
+ return void 0;
4590
+ }
4591
+ }, "accountHome");
4592
+ var homeIsMoved = /* @__PURE__ */ __name(({ env = process.env, platform = process.platform, home = accountHome() } = {}) => {
4593
+ if (home === void 0)
4594
+ return true;
4595
+ const appName = "app";
4596
+ const actual = defaultPaths({ appName, env, platform });
4597
+ const owners = defaultPaths({ appName, env: { HOME: home, USERPROFILE: home }, platform });
4598
+ return PATH_KINDS.some((kind) => actual[kind] !== owners[kind]);
4599
+ }, "homeIsMoved");
4600
+ var configFilePath = /* @__PURE__ */ __name((configDir, fileName = "config.json") => join2(configDir, fileName), "configFilePath");
4601
+
4602
+ // node_modules/.pnpm/@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/credentials.js
4535
4603
  import { readFileSync as readFileSync2 } from "node:fs";
4536
- import { join as join2 } from "node:path";
4537
- var keyringService = /* @__PURE__ */ __name((service, configDir, isolated = false) => isolated ? `${service}:${configDir}` : service, "keyringService");
4604
+ import { join as join3, resolve } from "node:path";
4605
+ var movedRunService = /* @__PURE__ */ __name((service, configDir) => `${service}:${resolve(configDir)}`, "movedRunService");
4538
4606
  var Credentials = class {
4539
4607
  static {
4540
4608
  __name(this, "Credentials");
@@ -4547,6 +4615,8 @@ var Credentials = class {
4547
4615
  #envVar;
4548
4616
  #fileName;
4549
4617
  #warn;
4618
+ /** Set only for a moved run with the system keyring. */
4619
+ #temporaryService;
4550
4620
  #warned = false;
4551
4621
  constructor(options) {
4552
4622
  this.#configDir = options.configDir;
@@ -4557,24 +4627,27 @@ var Credentials = class {
4557
4627
  this.#fileName = options.fileName ?? "credentials.json";
4558
4628
  this.#warn = options.warn ?? ((message) => process.stderr.write(`${message}
4559
4629
  `));
4560
- this.#service = keyringService(options.service, options.configDir, options.isolated);
4630
+ this.#service = options.service;
4631
+ const moved = this.#keyring === systemKeyring && (options.isolated === true || homeIsMoved({ env: this.#env }));
4632
+ this.#temporaryService = moved ? movedRunService(options.service, options.configDir) : void 0;
4561
4633
  }
4562
4634
  read(account) {
4563
4635
  const fromEnv = this.#envVar ? this.#env[this.#envVar]?.trim() : void 0;
4564
4636
  if (fromEnv)
4565
4637
  return { secret: fromEnv, source: "environment" };
4566
4638
  if (this.#storage !== "file") {
4567
- const fromKeyring = this.#tryKeyring(() => this.#keyring.get(this.#service, account));
4639
+ const temporary = this.#temporaryService;
4640
+ const fromKeyring = this.#tryKeyring(() => temporary && this.#keyring.get(temporary, account) || this.#keyring.get(this.#service, account));
4568
4641
  if (fromKeyring)
4569
4642
  return { secret: fromKeyring, source: "keyring" };
4570
4643
  }
4571
- const fromFile = this.#readFile()?.[account]?.secret;
4572
- return fromFile ? { secret: fromFile, source: "file" } : void 0;
4644
+ const secret = this.#readFile()?.[account]?.secret;
4645
+ return secret ? { secret, source: "file" } : void 0;
4573
4646
  }
4574
4647
  write(account, secret) {
4575
4648
  if (this.#storage !== "file") {
4576
4649
  const stored = this.#tryKeyring(() => {
4577
- this.#keyring.set(this.#service, account, secret);
4650
+ this.#keyring.set(this.#temporaryService ?? this.#service, account, secret);
4578
4651
  return true;
4579
4652
  });
4580
4653
  if (stored)
@@ -4590,8 +4663,13 @@ var Credentials = class {
4590
4663
  }
4591
4664
  remove(account) {
4592
4665
  const removed = [];
4593
- if (this.#storage !== "file" && this.#tryKeyring(() => this.#keyring.delete(this.#service, account))) {
4594
- removed.push("keyring");
4666
+ if (this.#storage !== "file") {
4667
+ if (this.#tryKeyring(() => this.#keyring.delete(this.#temporaryService ?? this.#service, account))) {
4668
+ removed.push("keyring");
4669
+ }
4670
+ if (this.#temporaryService && this.#ownersEntryExists(account)) {
4671
+ this.#warn(removed.includes("keyring") ? `removed this run's own sign-in of ${account} from the OS keyring and kept the owner's: a run with moved folders never removes it` : `kept ${account} in the OS keyring: it is the owner's sign-in, shared with every run, and a run with moved folders never removes it`);
4672
+ }
4595
4673
  }
4596
4674
  const store2 = this.#readFile();
4597
4675
  if (store2?.[account] !== void 0) {
@@ -4601,8 +4679,16 @@ var Credentials = class {
4601
4679
  }
4602
4680
  return removed;
4603
4681
  }
4682
+ /** Only for the warning: a keyring that fails here must not fail a removal that already happened. */
4683
+ #ownersEntryExists(account) {
4684
+ try {
4685
+ return this.#keyring.get(this.#service, account) !== null;
4686
+ } catch {
4687
+ return false;
4688
+ }
4689
+ }
4604
4690
  #path() {
4605
- return join2(this.#configDir, this.#fileName);
4691
+ return join3(this.#configDir, this.#fileName);
4606
4692
  }
4607
4693
  /** `undefined` when the file exists but is not a store: writing would replace what it holds. */
4608
4694
  #readFile() {
@@ -4640,10 +4726,10 @@ var Credentials = class {
4640
4726
  }
4641
4727
  };
4642
4728
 
4643
- // node_modules/.pnpm/@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/logging.js
4729
+ // node_modules/.pnpm/@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/logging.js
4644
4730
  import { appendFileSync } from "node:fs";
4645
4731
 
4646
- // node_modules/.pnpm/@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/standards/log.js
4732
+ // node_modules/.pnpm/@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/standards/log.js
4647
4733
  var LOG_SEVERITIES = ["trace", "debug", "info", "warn", "error", "fatal"];
4648
4734
  var logRecordSchema = strictObject({
4649
4735
  time: isoTime,
@@ -4721,7 +4807,7 @@ var traceIdOf = /* @__PURE__ */ __name((traceparent) => {
4721
4807
  return traceId;
4722
4808
  }, "traceIdOf");
4723
4809
 
4724
- // node_modules/.pnpm/@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/logging.js
4810
+ // node_modules/.pnpm/@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/logging.js
4725
4811
  var REDACTED_FIELDS = [
4726
4812
  "authorization",
4727
4813
  "Authorization",
@@ -4815,7 +4901,7 @@ var silent = {
4815
4901
  }, "error")
4816
4902
  };
4817
4903
 
4818
- // node_modules/.pnpm/@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/output-buffer.js
4904
+ // node_modules/.pnpm/@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/output-buffer.js
4819
4905
  var createOutputBuffer = /* @__PURE__ */ __name(({ maxOutputBytes = 4 * 1024 * 1024, fields, format } = {}) => {
4820
4906
  if (!Number.isSafeInteger(maxOutputBytes) || maxOutputBytes < 0)
4821
4907
  throw new CliError("validation_error", "maxOutputBytes must be a nonnegative whole byte count");
@@ -4876,57 +4962,33 @@ var createOutputBuffer = /* @__PURE__ */ __name(({ maxOutputBytes = 4 * 1024 * 1
4876
4962
  };
4877
4963
  }, "createOutputBuffer");
4878
4964
 
4879
- // node_modules/.pnpm/@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/paths.js
4880
- import { homedir } from "node:os";
4881
- import { join as join3, posix, win32 } from "node:path";
4882
- var PATH_KINDS = ["config", "state", "cache"];
4883
- var OVERRIDES = { config: "CONFIG_DIR", state: "STATE_DIR", cache: "CACHE_DIR" };
4884
- var overrideName = /* @__PURE__ */ __name((appName, prefix, kind) => `${prefix ?? appName.toUpperCase().replace(/[^A-Z0-9]/g, "_")}_${OVERRIDES[kind]}`, "overrideName");
4885
- var defaultPaths = /* @__PURE__ */ __name(({ appName, env = process.env, platform = process.platform }) => {
4886
- if (platform === "win32") {
4887
- const home2 = env.USERPROFILE || homedir();
4888
- const roaming = env.APPDATA || win32.join(home2, "AppData", "Roaming");
4889
- const local = env.LOCALAPPDATA || win32.join(home2, "AppData", "Local");
4890
- return {
4891
- config: win32.join(roaming, appName, "Config"),
4892
- state: win32.join(local, appName, "Data"),
4893
- cache: win32.join(local, appName, "Cache")
4894
- };
4895
- }
4896
- const home = env.HOME || homedir();
4897
- return {
4898
- config: posix.join(env.XDG_CONFIG_HOME || posix.join(home, ".config"), appName),
4899
- state: posix.join(env.XDG_DATA_HOME || posix.join(home, ".local", "share"), appName),
4900
- cache: posix.join(env.XDG_CACHE_HOME || posix.join(home, ".cache"), appName)
4901
- };
4902
- }, "defaultPaths");
4903
- var resolvePaths = /* @__PURE__ */ __name((options) => {
4904
- const { appName, prefix, env = process.env } = options;
4905
- const base = defaultPaths(options);
4906
- return {
4907
- config: env[overrideName(appName, prefix, "config")] ?? base.config,
4908
- state: env[overrideName(appName, prefix, "state")] ?? base.state,
4909
- cache: env[overrideName(appName, prefix, "cache")] ?? base.cache
4910
- };
4911
- }, "resolvePaths");
4912
- var pathsAreOverridden = /* @__PURE__ */ __name(({ appName, prefix, env = process.env }) => PATH_KINDS.some((kind) => env[overrideName(appName, prefix, kind)] !== void 0), "pathsAreOverridden");
4913
- var configFilePath = /* @__PURE__ */ __name((configDir, fileName = "config.json") => join3(configDir, fileName), "configFilePath");
4965
+ // node_modules/.pnpm/@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/retry.js
4966
+ var DEFAULT_RETRY = {
4967
+ retries: 1,
4968
+ baseDelayMs: 250,
4969
+ maxDelayMs: 1e4,
4970
+ maxRetryAfterMs: 3e4
4971
+ };
4972
+ var backoffMs = /* @__PURE__ */ __name((attempt, config, random) => {
4973
+ const ceiling = Math.min(config.maxDelayMs, config.baseDelayMs * 2 ** (attempt - 1));
4974
+ return Math.round(random() * ceiling);
4975
+ }, "backoffMs");
4914
4976
 
4915
- // node_modules/.pnpm/@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/time.js
4977
+ // node_modules/.pnpm/@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/time.js
4916
4978
  var abortError = /* @__PURE__ */ __name(() => new DOMException("The operation was aborted.", "AbortError"), "abortError");
4917
- var realSleep = /* @__PURE__ */ __name((ms, signal) => new Promise((resolve, reject) => {
4979
+ var realSleep = /* @__PURE__ */ __name((ms, signal) => new Promise((resolve2, reject) => {
4918
4980
  if (signal?.aborted) {
4919
4981
  reject(abortError());
4920
4982
  return;
4921
4983
  }
4922
- const timer = setTimeout(resolve, ms);
4984
+ const timer = setTimeout(resolve2, ms);
4923
4985
  signal?.addEventListener("abort", () => {
4924
4986
  clearTimeout(timer);
4925
4987
  reject(abortError());
4926
4988
  }, { once: true });
4927
4989
  }), "realSleep");
4928
4990
 
4929
- // node_modules/.pnpm/@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/deadline.js
4991
+ // node_modules/.pnpm/@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/deadline.js
4930
4992
  var createDeadline = /* @__PURE__ */ __name(({ timeoutMs, signal, sleep = realSleep } = {}) => {
4931
4993
  if (timeoutMs !== void 0 && (!Number.isSafeInteger(timeoutMs) || timeoutMs < 0 || timeoutMs > 2147483647))
4932
4994
  throw new CliError("validation_error", "timeoutMs must be an integer from zero through 2147483647");
@@ -5010,7 +5072,7 @@ var createDeadline = /* @__PURE__ */ __name(({ timeoutMs, signal, sleep = realSl
5010
5072
  };
5011
5073
  }, "createDeadline");
5012
5074
 
5013
- // node_modules/.pnpm/@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/pretty.js
5075
+ // node_modules/.pnpm/@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/pretty.js
5014
5076
  var import_cli_table3 = __toESM(require_cli_table3(), 1);
5015
5077
  import { styleText } from "node:util";
5016
5078
  var renderPretty = /* @__PURE__ */ __name((value, options) => {
@@ -5085,7 +5147,7 @@ var BORDERLESS = {
5085
5147
  middle: ""
5086
5148
  };
5087
5149
 
5088
- // node_modules/.pnpm/@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/drain.js
5150
+ // node_modules/.pnpm/@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/drain.js
5089
5151
  var waitForDrain = /* @__PURE__ */ __name((stream, signal) => {
5090
5152
  if (signal?.aborted)
5091
5153
  return Promise.reject(signal.reason);
@@ -5093,14 +5155,14 @@ var waitForDrain = /* @__PURE__ */ __name((stream, signal) => {
5093
5155
  return Promise.reject(new Error("output stream closed"));
5094
5156
  if (!stream.writableNeedDrain)
5095
5157
  return Promise.resolve();
5096
- return new Promise((resolve, reject) => {
5158
+ return new Promise((resolve2, reject) => {
5097
5159
  const cleanup = /* @__PURE__ */ __name(() => {
5098
5160
  stream.off("drain", drained).off("error", failed).off("close", closed);
5099
5161
  signal?.removeEventListener("abort", aborted);
5100
5162
  }, "cleanup");
5101
5163
  const drained = /* @__PURE__ */ __name(() => {
5102
5164
  cleanup();
5103
- resolve();
5165
+ resolve2();
5104
5166
  }, "drained");
5105
5167
  const failed = /* @__PURE__ */ __name((error) => {
5106
5168
  cleanup();
@@ -5113,7 +5175,7 @@ var waitForDrain = /* @__PURE__ */ __name((stream, signal) => {
5113
5175
  });
5114
5176
  }, "waitForDrain");
5115
5177
 
5116
- // node_modules/.pnpm/@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/streams.js
5178
+ // node_modules/.pnpm/@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/streams.js
5117
5179
  var processStreams = {
5118
5180
  drain: /* @__PURE__ */ __name(async (signal) => {
5119
5181
  await Promise.all([waitForDrain(process.stdout, signal), waitForDrain(process.stderr, signal)]);
@@ -5142,7 +5204,7 @@ var captureStreams = /* @__PURE__ */ __name(() => {
5142
5204
  };
5143
5205
  }, "captureStreams");
5144
5206
 
5145
- // node_modules/.pnpm/@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/renderer.js
5207
+ // node_modules/.pnpm/@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/renderer.js
5146
5208
  var createRenderer = /* @__PURE__ */ __name(({ format, color, streams = processStreams, quiet = false }) => {
5147
5209
  const mark = /* @__PURE__ */ __name((symbol, message) => format === "pretty" ? `${symbol} ${visibleControls(message)}` : visibleControls(message), "mark");
5148
5210
  const say = /* @__PURE__ */ __name((symbol) => (message) => {
@@ -5273,6 +5335,9 @@ export {
5273
5335
  loadConfigFile,
5274
5336
  saveConfigFile,
5275
5337
  systemKeyring,
5338
+ resolvePaths,
5339
+ pathsAreOverridden,
5340
+ configFilePath,
5276
5341
  Credentials,
5277
5342
  realSleep,
5278
5343
  createDeadline,
@@ -5282,11 +5347,10 @@ export {
5282
5347
  logRecordOf,
5283
5348
  createRecordLog,
5284
5349
  createOutputBuffer,
5285
- resolvePaths,
5286
- pathsAreOverridden,
5287
- configFilePath,
5288
5350
  indent,
5289
5351
  processStreams,
5290
5352
  captureStreams,
5291
- createRenderer
5353
+ createRenderer,
5354
+ DEFAULT_RETRY,
5355
+ backoffMs
5292
5356
  };
@@ -4,7 +4,7 @@ import {
4
4
  __name
5
5
  } from "./chunk-ZVVMGPBJ.js";
6
6
 
7
- // node_modules/.pnpm/@wirecat+cli-core@0.491.0_@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_type_1193098e908042dfe6f4070222ac0245/node_modules/@wirecat/cli-core/dist/mcp/instructions.js
7
+ // node_modules/.pnpm/@wirecat+cli-core@0.503.0_@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_type_e5d4ab9592406842b4a214ba16b749bd/node_modules/@wirecat/cli-core/dist/mcp/instructions.js
8
8
  var instructions = /* @__PURE__ */ __name(({ command, name, profile, writes, skill }) => {
9
9
  const all = typeof profile !== "string";
10
10
  const offers = /* @__PURE__ */ __name((key) => all || writes.includes(key), "offers");
@@ -4,7 +4,7 @@ import {
4
4
  __name
5
5
  } from "./chunk-ZVVMGPBJ.js";
6
6
 
7
- // node_modules/.pnpm/@wirecat+cli-core@0.491.0_@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_type_1193098e908042dfe6f4070222ac0245/node_modules/@wirecat/cli-core/dist/mcp/bot/instructions.js
7
+ // node_modules/.pnpm/@wirecat+cli-core@0.503.0_@wirecat+cli-base@0.67.0_commander@15.0.0_esbuild@0.28.2_type_e5d4ab9592406842b4a214ba16b749bd/node_modules/@wirecat/cli-core/dist/mcp/bot/instructions.js
8
8
  var botInstructions = /* @__PURE__ */ __name(({ command, name, profile, writes, skill }) => [
9
9
  `The owner's ${name} bot "${profile}", through the official Bot API \u2014 not the owner's personal account. What it writes, people see as the bot.`,
10
10
  "Use these tools to read the chats this bot is in, find a message or a person, and \u2014 when the profile allows \u2014 write as the bot.",