@wirecat/zoom-cli 0.59.1 → 0.60.1

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 (153) hide show
  1. package/README.md +4 -3
  2. package/dist/bin/main.js +1 -0
  3. package/dist/bin/main.js.map +1 -1
  4. package/dist/bin/zm.js +2 -2
  5. package/dist/bundle/{all-profiles-RS5IWIGR.js → all-profiles-E6KXASLY.js} +6 -6
  6. package/dist/bundle/answer-policy-YWCC55NB.js +96 -0
  7. package/dist/bundle/{anthropic-5QHQR4WF.js → anthropic-CSLAACWX.js} +4 -4
  8. package/dist/bundle/{app-server-7LANSZGE.js → app-server-RYYXX6QV.js} +48 -48
  9. package/dist/bundle/{bun-O6RL6LRQ.js → bun-JVDJVDHL.js} +2 -2
  10. package/dist/bundle/{bun-sqlite-PEJM6CS4.js → bun-sqlite-B5CZHAV4.js} +3 -3
  11. package/dist/bundle/{chunk-BXZ6WSVF.js → chunk-3LBA63D5.js} +4 -4
  12. package/dist/bundle/{chunk-UXM7I35J.js → chunk-3R437ICM.js} +4 -4
  13. package/dist/bundle/{chunk-MBT7GP7K.js → chunk-43BX56ZI.js} +9 -9
  14. package/dist/bundle/{chunk-VYUSEJE4.js → chunk-46R2JTGO.js} +2 -2
  15. package/dist/bundle/{chunk-2EYP23NY.js → chunk-4TCQT57W.js} +10 -10
  16. package/dist/bundle/{chunk-3SCTDFNO.js → chunk-6BJQBVMN.js} +16 -16
  17. package/dist/bundle/{chunk-AQDWGJZT.js → chunk-7IDNHVJS.js} +39 -2
  18. package/dist/bundle/{chunk-PF25S7L4.js → chunk-AOZGGGUK.js} +2 -2
  19. package/dist/bundle/{chunk-G27MRA24.js → chunk-AZZPMHP2.js} +2 -2
  20. package/dist/bundle/{chunk-T6AAM7UT.js → chunk-BO7J5Z3T.js} +20 -17
  21. package/dist/bundle/{chunk-PNBEREOU.js → chunk-CGCJ6P3A.js} +1906 -1529
  22. package/dist/bundle/{chunk-PKTFZAXG.js → chunk-DBSWVZES.js} +2 -2
  23. package/dist/bundle/{chunk-CVIKKIGE.js → chunk-EF2RCQ3L.js} +1 -1
  24. package/dist/bundle/{chunk-K76WFW4I.js → chunk-EN5DBDKW.js} +4 -4
  25. package/dist/bundle/{chunk-NDXAZB5Z.js → chunk-ES6UWVTM.js} +6 -6
  26. package/dist/bundle/{chunk-BAQLQIMI.js → chunk-EUHQ5D4K.js} +31 -27
  27. package/dist/bundle/{chunk-KVHRHBLY.js → chunk-FWJ3Q7NO.js} +5 -5
  28. package/dist/bundle/{chunk-ZTOAAYFV.js → chunk-FZMRHNOP.js} +3 -3
  29. package/dist/bundle/{chunk-NOKFJJPA.js → chunk-GEVHI226.js} +6 -6
  30. package/dist/bundle/{chunk-YJRMMZI5.js → chunk-HAUAEGGI.js} +10 -10
  31. package/dist/bundle/{chunk-4NGLRHWO.js → chunk-HBYE4EP2.js} +1 -1
  32. package/dist/bundle/{chunk-NW7IMGRR.js → chunk-HIAO4MPA.js} +1 -1
  33. package/dist/bundle/{chunk-VSUY7PDW.js → chunk-HYZ545ON.js} +7 -4
  34. package/dist/bundle/{chunk-OBZWUNO4.js → chunk-INARC5O7.js} +9 -9
  35. package/dist/bundle/{chunk-A6323R5P.js → chunk-IQENQXUJ.js} +2 -2
  36. package/dist/bundle/{chunk-UYJUTZTT.js → chunk-IQSBMAYB.js} +3 -3
  37. package/dist/bundle/{chunk-4AURKUDZ.js → chunk-IRX2YVAH.js} +4 -4
  38. package/dist/bundle/{chunk-CTGI4ES2.js → chunk-K6NPOZUP.js} +6 -6
  39. package/dist/bundle/{chunk-7H3ZRDLW.js → chunk-KNAS4VEA.js} +2 -2
  40. package/dist/bundle/{chunk-B32SF7J3.js → chunk-KXEC5FVT.js} +2 -2
  41. package/dist/bundle/{chunk-XFCSPOLZ.js → chunk-KYUIU5UR.js} +2 -2
  42. package/dist/bundle/{chunk-KDYPY6IL.js → chunk-LPDYI5GR.js} +1 -1
  43. package/dist/bundle/{chunk-L3VS3H34.js → chunk-LPY2ISJK.js} +6 -6
  44. package/dist/bundle/{chunk-UOFOMU3T.js → chunk-LVHZQCP4.js} +1 -1
  45. package/dist/bundle/{chunk-QFGBMS67.js → chunk-N27LOY3D.js} +14 -7
  46. package/dist/bundle/{chunk-JUS4H7Z5.js → chunk-OBUKZ2ZM.js} +25 -25
  47. package/dist/bundle/{chunk-RXDIG23Z.js → chunk-OEEMCNAO.js} +6 -6
  48. package/dist/bundle/{chunk-URO44C5T.js → chunk-PAEBFJUC.js} +157 -145
  49. package/dist/bundle/{chunk-EUQ7XFPK.js → chunk-PATM7JGR.js} +1 -1
  50. package/dist/bundle/{chunk-6FL25KC5.js → chunk-PEMLI3T7.js} +4 -4
  51. package/dist/bundle/{chunk-5DVW77VC.js → chunk-PPHUBORC.js} +32 -32
  52. package/dist/bundle/{chunk-PP3JGQQE.js → chunk-Q7U627RY.js} +110 -54
  53. package/dist/bundle/{chunk-7GVNQOV6.js → chunk-QKSCDALS.js} +1 -1
  54. package/dist/bundle/{chunk-YIMI6O7R.js → chunk-R4SRXI7M.js} +111 -111
  55. package/dist/bundle/{chunk-DP5DX45H.js → chunk-RACSKYNX.js} +1 -1
  56. package/dist/bundle/{chunk-L2UIJDWB.js → chunk-REC3AZP6.js} +2 -2
  57. package/dist/bundle/{chunk-24DLFGES.js → chunk-RUEPZTNA.js} +2 -2
  58. package/dist/bundle/{chunk-ZC5UXEIH.js → chunk-TY5PBEH2.js} +11 -11
  59. package/dist/bundle/{chunk-UKR7KH3H.js → chunk-UWVNY5CA.js} +2 -2
  60. package/dist/bundle/{chunk-SIA7HJE2.js → chunk-V53IB5AU.js} +56 -49
  61. package/dist/bundle/{chunk-N7GAQ27N.js → chunk-VJBVNDFR.js} +3 -3
  62. package/dist/bundle/{chunk-IYAGQXED.js → chunk-VKUS2V4L.js} +8 -8
  63. package/dist/bundle/{chunk-27P22POE.js → chunk-VLE3FWE3.js} +30 -26
  64. package/dist/bundle/{recognize-EMHQX4XF.js → chunk-VVKHF6VJ.js} +7 -6
  65. package/dist/bundle/{chunk-AIXLOMH4.js → chunk-W5EUHV3J.js} +1 -1
  66. package/dist/bundle/{chunk-QCFHL4ES.js → chunk-WB7MQHUI.js} +2 -2
  67. package/dist/bundle/{chunk-7Z4ANTAK.js → chunk-WEUXLXOZ.js} +28 -20
  68. package/dist/bundle/{chunk-VOAVOK4I.js → chunk-WFT2GGFH.js} +57 -18
  69. package/dist/bundle/{chunk-DXZTLB24.js → chunk-WWNZS7ZY.js} +4 -4
  70. package/dist/bundle/{chunk-MIGIKHER.js → chunk-WYRYLBST.js} +4 -4
  71. package/dist/bundle/{chunk-PACC5N6T.js → chunk-X7YPTYM4.js} +10 -3
  72. package/dist/bundle/{chunk-DXKVEOSS.js → chunk-XLJV3ZOH.js} +1 -1
  73. package/dist/bundle/{chunk-7D2CD3E3.js → chunk-XNUFDYR6.js} +5 -5
  74. package/dist/bundle/{chunk-YIFIY7ZE.js → chunk-XS72YFPV.js} +2 -2
  75. package/dist/bundle/{chunk-ZHXIXDH5.js → chunk-XX7KVQIG.js} +4 -4
  76. package/dist/bundle/{chunk-MNUTWGSA.js → chunk-Y3YURIZF.js} +32 -32
  77. package/dist/bundle/{chunk-XT7XVPEM.js → chunk-YEZQ7SD7.js} +11 -11
  78. package/dist/bundle/{chunk-SL3SXQZ5.js → chunk-YLATWUE7.js} +6 -6
  79. package/dist/bundle/{chunk-MMT46EN4.js → chunk-Z4D6M62I.js} +2 -2
  80. package/dist/bundle/{chunk-3SERIWJD.js → chunk-Z5H47R4G.js} +7856 -7818
  81. package/dist/bundle/{chunk-U6QW67SU.js → chunk-ZDRDCANC.js} +374 -317
  82. package/dist/bundle/{chunk-DDYR6DYL.js → chunk-ZK7Y5K63.js} +1 -1
  83. package/dist/bundle/{chunk-YSHSCBPM.js → chunk-ZXQCA3ZW.js} +8 -8
  84. package/dist/bundle/{cli-IQTASP44.js → cli-CYKEKT5P.js} +54 -54
  85. package/dist/bundle/command-contract-P45QCCXM.js +38 -0
  86. package/dist/bundle/config-JYKTLEA3.js +79 -0
  87. package/dist/bundle/decode-CTQJQYNU.js +158 -0
  88. package/dist/bundle/{dist-WT73DF46.js → dist-YLSQKPPY.js} +13 -13
  89. package/dist/bundle/{echarts-LD3AI55P.js → echarts-4OQHS575.js} +2 -2
  90. package/dist/bundle/{embed-XEMH4LNX.js → embed-P2BKRRJD.js} +4 -4
  91. package/dist/bundle/{embedder-ZCYKSKAE.js → embedder-HC6ZARP5.js} +7 -7
  92. package/dist/bundle/{first-run-LGYDLIUM.js → first-run-UERFFXBV.js} +7 -7
  93. package/dist/bundle/first-screen-VFIS7FX3.js +36 -0
  94. package/dist/bundle/{folders-5ZBUQHAM.js → folders-RSLPTZLJ.js} +2 -2
  95. package/dist/bundle/{instructions-RZMSW3OC.js → instructions-3QZBKKPF.js} +1 -1
  96. package/dist/bundle/{main-LDCSYBV3.js → main-2T6D77JC.js} +17 -16
  97. package/dist/bundle/mcp-4VHVUMCR.js +92 -0
  98. package/dist/bundle/{mcp-M7MW5EGT.js → mcp-6CLW2IZM.js} +62 -62
  99. package/dist/bundle/{meetings-XPBHVZAU.js → meetings-ZIDSQZBJ.js} +7 -3
  100. package/dist/bundle/{node-ZRLYQL7J.js → node-R2BLYUSB.js} +2 -2
  101. package/dist/bundle/node-sqlite-7CGHAHIS.js +61 -0
  102. package/dist/bundle/{oauth-UHVRGKZU.js → oauth-UBCYXTWV.js} +5 -5
  103. package/dist/bundle/{open-J4FCAUAJ.js → open-AWUB4Q7Z.js} +2 -2
  104. package/dist/bundle/{output-file-SXV2ANW7.js → output-file-SN22HAVL.js} +3 -3
  105. package/dist/bundle/{process-LL77573L.js → process-IX5YWGDP.js} +1 -1
  106. package/dist/bundle/{program-4S5BJVSW.js → program-STYPTNT3.js} +74 -70
  107. package/dist/bundle/{prompt-LUUMQTMY.js → prompt-MAYUHEGN.js} +3 -3
  108. package/dist/bundle/recognize-FVTNXRTF.js +21 -0
  109. package/dist/bundle/{remote-ZXS6D7VB.js → remote-WCPRU73L.js} +5 -5
  110. package/dist/bundle/{rerank-WP7RKZNB.js → rerank-6CBLZBCV.js} +5 -5
  111. package/dist/bundle/{run-log-GS2L66G6.js → run-log-G4WZTOBW.js} +51 -51
  112. package/dist/bundle/{serve-L6KLLXK2.js → serve-3IDUVTZL.js} +7 -7
  113. package/dist/bundle/server-7GU36TER.js +66 -0
  114. package/dist/bundle/server-VHRS5UAL.js +53 -0
  115. package/dist/bundle/{services-SPOEWVK3.js → services-326Z3TNE.js} +24 -24
  116. package/dist/bundle/{speech-6OBAKMND.js → speech-KSZ7RKM3.js} +4 -4
  117. package/dist/bundle/{state-HN5EJKXQ.js → state-EPB3L2JM.js} +4 -4
  118. package/dist/bundle/{store-ZP2URKET.js → store-7WX7SW2R.js} +14 -14
  119. package/dist/bundle/{store-LEU3M6IN.js → store-KO242JBK.js} +12 -12
  120. package/dist/bundle/store-connection-K3MNDCQQ.js +76 -0
  121. package/dist/bundle/store-maintenance-command-GJDJYI2U.js +54 -0
  122. package/dist/bundle/{streaming-AK6Q2ZGQ.js → streaming-M6VDKBBH.js} +4 -4
  123. package/dist/bundle/{tokens-CCM3D4ZT.js → tokens-BTNXHR7T.js} +4 -4
  124. package/dist/bundle/zm.js +1 -1
  125. package/dist/login.d.ts +1 -0
  126. package/dist/login.d.ts.map +1 -1
  127. package/dist/login.js +1 -1
  128. package/dist/login.js.map +1 -1
  129. package/dist/recording-schedule-setup.d.ts.map +1 -1
  130. package/dist/recording-schedule-setup.js +1 -0
  131. package/dist/recording-schedule-setup.js.map +1 -1
  132. package/dist/setup-commands.d.ts.map +1 -1
  133. package/dist/setup-commands.js +6 -1
  134. package/dist/setup-commands.js.map +1 -1
  135. package/dist/tokens.d.ts +15 -0
  136. package/dist/tokens.d.ts.map +1 -1
  137. package/dist/tokens.js +40 -1
  138. package/dist/tokens.js.map +1 -1
  139. package/dist/version.d.ts +1 -1
  140. package/dist/version.js +1 -1
  141. package/package.json +2 -2
  142. package/skills/zoom-cli/SKILL.md +1 -0
  143. package/dist/bundle/answer-policy-7BYG6XWZ.js +0 -96
  144. package/dist/bundle/command-contract-WHZPF7NA.js +0 -38
  145. package/dist/bundle/config-AXMQ2PXT.js +0 -79
  146. package/dist/bundle/first-screen-LYQKPNF4.js +0 -36
  147. package/dist/bundle/mcp-VISEXTVC.js +0 -92
  148. package/dist/bundle/node-sqlite-BBEDYBWO.js +0 -45
  149. package/dist/bundle/server-NOFYENP5.js +0 -53
  150. package/dist/bundle/server-P5TXAPBY.js +0 -66
  151. package/dist/bundle/store-connection-3UZBORXK.js +0 -76
  152. package/dist/bundle/store-maintenance-command-PSCHEHHY.js +0 -54
  153. /package/dist/bundle/{chunk-Q2Z3VCM4.js → chunk-YLBNPI7H.js} +0 -0
@@ -4531,6 +4531,115 @@ var systemKeyring = {
4531
4531
  delete: /* @__PURE__ */ __name((service, account) => entry(service, account).deletePassword(), "delete")
4532
4532
  };
4533
4533
 
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
4535
+ 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");
4538
+ var Credentials = class {
4539
+ static {
4540
+ __name(this, "Credentials");
4541
+ }
4542
+ #configDir;
4543
+ #storage;
4544
+ #keyring;
4545
+ #env;
4546
+ #service;
4547
+ #envVar;
4548
+ #fileName;
4549
+ #warn;
4550
+ #warned = false;
4551
+ constructor(options) {
4552
+ this.#configDir = options.configDir;
4553
+ this.#storage = options.storage ?? "auto";
4554
+ this.#keyring = options.keyring ?? systemKeyring;
4555
+ this.#env = options.env ?? process.env;
4556
+ this.#envVar = options.envVar;
4557
+ this.#fileName = options.fileName ?? "credentials.json";
4558
+ this.#warn = options.warn ?? ((message) => process.stderr.write(`${message}
4559
+ `));
4560
+ this.#service = keyringService(options.service, options.configDir, options.isolated);
4561
+ }
4562
+ read(account) {
4563
+ const fromEnv = this.#envVar ? this.#env[this.#envVar]?.trim() : void 0;
4564
+ if (fromEnv)
4565
+ return { secret: fromEnv, source: "environment" };
4566
+ if (this.#storage !== "file") {
4567
+ const fromKeyring = this.#tryKeyring(() => this.#keyring.get(this.#service, account));
4568
+ if (fromKeyring)
4569
+ return { secret: fromKeyring, source: "keyring" };
4570
+ }
4571
+ const fromFile = this.#readFile()?.[account]?.secret;
4572
+ return fromFile ? { secret: fromFile, source: "file" } : void 0;
4573
+ }
4574
+ write(account, secret) {
4575
+ if (this.#storage !== "file") {
4576
+ const stored = this.#tryKeyring(() => {
4577
+ this.#keyring.set(this.#service, account, secret);
4578
+ return true;
4579
+ });
4580
+ if (stored)
4581
+ return "keyring";
4582
+ }
4583
+ const store2 = this.#readFile();
4584
+ if (!store2) {
4585
+ throw new CliError("configuration_error", `${this.#path()} cannot be read as a credentials file; storing now would replace every secret in it. Fix the file or move it aside, then try again.`);
4586
+ }
4587
+ store2[account] = { secret };
4588
+ this.#writeFile(store2);
4589
+ return "file";
4590
+ }
4591
+ remove(account) {
4592
+ const removed = [];
4593
+ if (this.#storage !== "file" && this.#tryKeyring(() => this.#keyring.delete(this.#service, account))) {
4594
+ removed.push("keyring");
4595
+ }
4596
+ const store2 = this.#readFile();
4597
+ if (store2?.[account] !== void 0) {
4598
+ delete store2[account];
4599
+ this.#writeFile(store2);
4600
+ removed.push("file");
4601
+ }
4602
+ return removed;
4603
+ }
4604
+ #path() {
4605
+ return join2(this.#configDir, this.#fileName);
4606
+ }
4607
+ /** `undefined` when the file exists but is not a store: writing would replace what it holds. */
4608
+ #readFile() {
4609
+ let text2;
4610
+ try {
4611
+ text2 = readFileSync2(this.#path(), "utf8");
4612
+ } catch (error) {
4613
+ if (error.code === "ENOENT")
4614
+ return {};
4615
+ return void 0;
4616
+ }
4617
+ try {
4618
+ const parsed = JSON.parse(text2);
4619
+ return typeof parsed === "object" && parsed !== null && !Array.isArray(parsed) ? parsed : void 0;
4620
+ } catch {
4621
+ return void 0;
4622
+ }
4623
+ }
4624
+ #writeFile(store2) {
4625
+ writeSecurely(this.#path(), `${JSON.stringify(store2, null, 2)}
4626
+ `, 384);
4627
+ }
4628
+ #tryKeyring(operation) {
4629
+ if (this.#storage === "keyring")
4630
+ return operation();
4631
+ try {
4632
+ return operation();
4633
+ } catch (error) {
4634
+ if (!this.#warned) {
4635
+ this.#warned = true;
4636
+ this.#warn(`could not reach the OS keyring \u2014 it may be locked, or no keyring service is running (${error instanceof Error ? error.message : String(error)}); using ${this.#path()} instead, readable only by you`);
4637
+ }
4638
+ return void 0;
4639
+ }
4640
+ }
4641
+ };
4642
+
4534
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
4535
4644
  import { appendFileSync } from "node:fs";
4536
4645
 
@@ -4769,7 +4878,7 @@ var createOutputBuffer = /* @__PURE__ */ __name(({ maxOutputBytes = 4 * 1024 * 1
4769
4878
 
4770
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
4771
4880
  import { homedir } from "node:os";
4772
- import { join as join2, posix, win32 } from "node:path";
4881
+ import { join as join3, posix, win32 } from "node:path";
4773
4882
  var PATH_KINDS = ["config", "state", "cache"];
4774
4883
  var OVERRIDES = { config: "CONFIG_DIR", state: "STATE_DIR", cache: "CACHE_DIR" };
4775
4884
  var overrideName = /* @__PURE__ */ __name((appName, prefix, kind) => `${prefix ?? appName.toUpperCase().replace(/[^A-Z0-9]/g, "_")}_${OVERRIDES[kind]}`, "overrideName");
@@ -4801,116 +4910,7 @@ var resolvePaths = /* @__PURE__ */ __name((options) => {
4801
4910
  };
4802
4911
  }, "resolvePaths");
4803
4912
  var pathsAreOverridden = /* @__PURE__ */ __name(({ appName, prefix, env = process.env }) => PATH_KINDS.some((kind) => env[overrideName(appName, prefix, kind)] !== void 0), "pathsAreOverridden");
4804
- var configFilePath = /* @__PURE__ */ __name((configDir, fileName = "config.json") => join2(configDir, fileName), "configFilePath");
4805
-
4806
- // 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
4807
- import { readFileSync as readFileSync2 } from "node:fs";
4808
- import { join as join3 } from "node:path";
4809
- var keyringService = /* @__PURE__ */ __name((service, configDir, isolated = false) => isolated ? `${service}:${configDir}` : service, "keyringService");
4810
- var Credentials = class {
4811
- static {
4812
- __name(this, "Credentials");
4813
- }
4814
- #configDir;
4815
- #storage;
4816
- #keyring;
4817
- #env;
4818
- #service;
4819
- #envVar;
4820
- #fileName;
4821
- #warn;
4822
- #warned = false;
4823
- constructor(options) {
4824
- this.#configDir = options.configDir;
4825
- this.#storage = options.storage ?? "auto";
4826
- this.#keyring = options.keyring ?? systemKeyring;
4827
- this.#env = options.env ?? process.env;
4828
- this.#envVar = options.envVar;
4829
- this.#fileName = options.fileName ?? "credentials.json";
4830
- this.#warn = options.warn ?? ((message) => process.stderr.write(`${message}
4831
- `));
4832
- this.#service = keyringService(options.service, options.configDir, options.isolated);
4833
- }
4834
- read(account) {
4835
- const fromEnv = this.#envVar ? this.#env[this.#envVar]?.trim() : void 0;
4836
- if (fromEnv)
4837
- return { secret: fromEnv, source: "environment" };
4838
- if (this.#storage !== "file") {
4839
- const fromKeyring = this.#tryKeyring(() => this.#keyring.get(this.#service, account));
4840
- if (fromKeyring)
4841
- return { secret: fromKeyring, source: "keyring" };
4842
- }
4843
- const fromFile = this.#readFile()?.[account]?.secret;
4844
- return fromFile ? { secret: fromFile, source: "file" } : void 0;
4845
- }
4846
- write(account, secret) {
4847
- if (this.#storage !== "file") {
4848
- const stored = this.#tryKeyring(() => {
4849
- this.#keyring.set(this.#service, account, secret);
4850
- return true;
4851
- });
4852
- if (stored)
4853
- return "keyring";
4854
- }
4855
- const store2 = this.#readFile();
4856
- if (!store2) {
4857
- throw new CliError("configuration_error", `${this.#path()} cannot be read as a credentials file; storing now would replace every secret in it. Fix the file or move it aside, then try again.`);
4858
- }
4859
- store2[account] = { secret };
4860
- this.#writeFile(store2);
4861
- return "file";
4862
- }
4863
- remove(account) {
4864
- const removed = [];
4865
- if (this.#storage !== "file" && this.#tryKeyring(() => this.#keyring.delete(this.#service, account))) {
4866
- removed.push("keyring");
4867
- }
4868
- const store2 = this.#readFile();
4869
- if (store2?.[account] !== void 0) {
4870
- delete store2[account];
4871
- this.#writeFile(store2);
4872
- removed.push("file");
4873
- }
4874
- return removed;
4875
- }
4876
- #path() {
4877
- return join3(this.#configDir, this.#fileName);
4878
- }
4879
- /** `undefined` when the file exists but is not a store: writing would replace what it holds. */
4880
- #readFile() {
4881
- let text2;
4882
- try {
4883
- text2 = readFileSync2(this.#path(), "utf8");
4884
- } catch (error) {
4885
- if (error.code === "ENOENT")
4886
- return {};
4887
- return void 0;
4888
- }
4889
- try {
4890
- const parsed = JSON.parse(text2);
4891
- return typeof parsed === "object" && parsed !== null && !Array.isArray(parsed) ? parsed : void 0;
4892
- } catch {
4893
- return void 0;
4894
- }
4895
- }
4896
- #writeFile(store2) {
4897
- writeSecurely(this.#path(), `${JSON.stringify(store2, null, 2)}
4898
- `, 384);
4899
- }
4900
- #tryKeyring(operation) {
4901
- if (this.#storage === "keyring")
4902
- return operation();
4903
- try {
4904
- return operation();
4905
- } catch (error) {
4906
- if (!this.#warned) {
4907
- this.#warned = true;
4908
- this.#warn(`could not reach the OS keyring \u2014 it may be locked, or no keyring service is running (${error instanceof Error ? error.message : String(error)}); using ${this.#path()} instead, readable only by you`);
4909
- }
4910
- return void 0;
4911
- }
4912
- }
4913
- };
4913
+ var configFilePath = /* @__PURE__ */ __name((configDir, fileName = "config.json") => join3(configDir, fileName), "configFilePath");
4914
4914
 
4915
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
4916
4916
  var abortError = /* @__PURE__ */ __name(() => new DOMException("The operation was aborted.", "AbortError"), "abortError");
@@ -12,7 +12,7 @@ import {
12
12
  optional,
13
13
  saveConfigFile,
14
14
  string
15
- } from "./chunk-YIMI6O7R.js";
15
+ } from "./chunk-R4SRXI7M.js";
16
16
  import {
17
17
  __name,
18
18
  __toESM
@@ -10,12 +10,12 @@ import {
10
10
  optional,
11
11
  pipe,
12
12
  safeParse
13
- } from "./chunk-YIMI6O7R.js";
13
+ } from "./chunk-R4SRXI7M.js";
14
14
  import {
15
15
  __name
16
16
  } from "./chunk-ZVVMGPBJ.js";
17
17
 
18
- // node_modules/.pnpm/@wirecat+cli-core@0.473.0_@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_type_39633e3162553a2c86dde989a9811fcb/node_modules/@wirecat/cli-core/dist/models/options.js
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/models/options.js
19
19
  var checkedOptions = /* @__PURE__ */ __name((provider, schema, options) => {
20
20
  const parsed = safeParse(schema, options);
21
21
  if (!parsed.success) {
@@ -2,11 +2,11 @@ import { createRequire as __bundleRequire } from "node:module";
2
2
  const require = __bundleRequire(import.meta.url);
3
3
  import {
4
4
  checkCancelled
5
- } from "./chunk-VYUSEJE4.js";
5
+ } from "./chunk-46R2JTGO.js";
6
6
  import {
7
7
  CliError,
8
8
  createOutputBuffer
9
- } from "./chunk-YIMI6O7R.js";
9
+ } from "./chunk-R4SRXI7M.js";
10
10
  import {
11
11
  __name
12
12
  } from "./chunk-ZVVMGPBJ.js";
@@ -3,28 +3,28 @@ const require = __bundleRequire(import.meta.url);
3
3
  import {
4
4
  installerOf,
5
5
  updateCommand
6
- } from "./chunk-DP5DX45H.js";
6
+ } from "./chunk-RACSKYNX.js";
7
7
  import {
8
8
  QUESTIONS,
9
9
  readSetupAnswers,
10
10
  unanswered,
11
11
  writeSetupAnswers
12
- } from "./chunk-4AURKUDZ.js";
12
+ } from "./chunk-IRX2YVAH.js";
13
13
  import {
14
14
  DEFAULT_STEMMERS,
15
15
  LANGUAGES
16
- } from "./chunk-YSHSCBPM.js";
16
+ } from "./chunk-ZXQCA3ZW.js";
17
17
  import {
18
18
  sharedConfigPath
19
- } from "./chunk-KVHRHBLY.js";
19
+ } from "./chunk-FWJ3Q7NO.js";
20
20
  import {
21
21
  storePath
22
- } from "./chunk-B32SF7J3.js";
22
+ } from "./chunk-KXEC5FVT.js";
23
23
  import {
24
24
  __name
25
25
  } from "./chunk-ZVVMGPBJ.js";
26
26
 
27
- // node_modules/.pnpm/@wirecat+cli-core@0.473.0_@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_type_39633e3162553a2c86dde989a9811fcb/node_modules/@wirecat/cli-core/dist/cli/first-run.js
27
+ // 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/first-run.js
28
28
  import { spawnSync } from "node:child_process";
29
29
  import { accessSync, constants, realpathSync } from "node:fs";
30
30
  import { delimiter, join } from "node:path";
@@ -82,7 +82,7 @@ var suggested = /* @__PURE__ */ __name((env, contentLanguages) => {
82
82
  return (own.length ? own : LANGUAGES.filter(({ code }) => code === "en" || code === system)).map(({ name }) => name);
83
83
  }, "suggested");
84
84
  var askLanguages = /* @__PURE__ */ __name(async ({ command, env, io, contentLanguages }) => {
85
- const { openStore } = await import("./store-LEU3M6IN.js");
85
+ const { openStore } = await import("./store-KO242JBK.js");
86
86
  const store = await openStore({ env });
87
87
  let rebuild = false;
88
88
  try {
@@ -111,8 +111,8 @@ var askLanguages = /* @__PURE__ */ __name(async ({ command, env, io, contentLang
111
111
  if (!rebuild)
112
112
  return;
113
113
  const [{ openCache }, { buildStems }] = await Promise.all([
114
- import("./open-J4FCAUAJ.js"),
115
- import("./store-maintenance-command-PSCHEHHY.js")
114
+ import("./open-AWUB4Q7Z.js"),
115
+ import("./store-maintenance-command-GJDJYI2U.js")
116
116
  ]);
117
117
  const database = await openCache(storePath(env));
118
118
  try {
@@ -124,7 +124,7 @@ var askLanguages = /* @__PURE__ */ __name(async ({ command, env, io, contentLang
124
124
  var askTools = /* @__PURE__ */ __name(async (run) => {
125
125
  const { command, env, io } = run;
126
126
  const installed = run.installed ?? ((name) => onPath(name, env));
127
- const { WIRECAT_TOOLS } = await import("./first-screen-LYQKPNF4.js");
127
+ const { WIRECAT_TOOLS } = await import("./first-screen-VFIS7FX3.js");
128
128
  const others = WIRECAT_TOOLS.filter((tool) => tool.command !== command);
129
129
  const missing = others.filter((tool) => !installed(tool.command));
130
130
  io.say("Other WireCat tools \u2014 they share this store, so one search finds everything:");
@@ -197,7 +197,7 @@ var setupAtStart = /* @__PURE__ */ __name(async (start) => {
197
197
  contentLanguages: start.contentLanguages,
198
198
  all: start.path[0] === "setup",
199
199
  io: {
200
- ask: /* @__PURE__ */ __name(async (prompt) => (await import("./prompt-LUUMQTMY.js")).readSecret(prompt, { input, echo: true }), "ask"),
200
+ ask: /* @__PURE__ */ __name(async (prompt) => (await import("./prompt-MAYUHEGN.js")).readSecret(prompt, { input, echo: true }), "ask"),
201
201
  say: /* @__PURE__ */ __name((text) => process.stderr.write(`${text}
202
202
  `), "say")
203
203
  }
@@ -4,7 +4,7 @@ import {
4
4
  ACCESS_SECONDS,
5
5
  REFRESH_SECONDS,
6
6
  readStored
7
- } from "./chunk-ZHXIXDH5.js";
7
+ } from "./chunk-XX7KVQIG.js";
8
8
  import {
9
9
  OAuthError,
10
10
  OAuthErrorCode
@@ -13,7 +13,7 @@ import {
13
13
  __name
14
14
  } from "./chunk-ZVVMGPBJ.js";
15
15
 
16
- // node_modules/.pnpm/@wirecat+cli-core@0.473.0_@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_type_39633e3162553a2c86dde989a9811fcb/node_modules/@wirecat/cli-core/dist/mcp/http/oauth.js
16
+ // 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/http/oauth.js
17
17
  import { createHash, randomBytes, randomInt, timingSafeEqual } from "node:crypto";
18
18
  import { chmodSync, mkdirSync, renameSync, rmSync, writeFileSync } from "node:fs";
19
19
  import { dirname } from "node:path";