@vm0/cli 9.260.2 → 9.261.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 (142) hide show
  1. package/{agent-AN773EZL.js → agent-YTFQCJSK.js} +11 -11
  2. package/{banking-73G67XKH.js → banking-DST6WKCT.js} +8 -8
  3. package/{browser-RFOQW3TO.js → browser-TBDK2W4E.js} +8 -8
  4. package/{chat-OC4D66E4.js → chat-PVJ23RN4.js} +50 -25
  5. package/chat-PVJ23RN4.js.map +1 -0
  6. package/{chunk-7B7CI54O.js → chunk-2M75MCZL.js} +3 -3
  7. package/{chunk-W75R7EZF.js → chunk-2NW76WYJ.js} +2 -2
  8. package/{chunk-OWS6CFSH.js → chunk-5CEKHRJT.js} +3 -3
  9. package/{chunk-VNURJUYW.js → chunk-7RCVJIZR.js} +7 -7
  10. package/{chunk-EXE3C5JL.js → chunk-A23S6W3Y.js} +3 -3
  11. package/{chunk-X4DBCBU4.js → chunk-BUYER4JA.js} +2 -2
  12. package/{chunk-LD4ZVU4O.js → chunk-CCWPKGTB.js} +2 -2
  13. package/{chunk-W7JXBKQU.js → chunk-F75ZGNZT.js} +5 -5
  14. package/{chunk-B6ELBBRJ.js → chunk-FKYDKKID.js} +2 -2
  15. package/{chunk-BPX62B4R.js → chunk-GKIW3TOG.js} +3 -3
  16. package/{chunk-GPF7NSX7.js → chunk-GPLHJ5JM.js} +2 -2
  17. package/{chunk-3VVCUQPB.js → chunk-GPYQ24DR.js} +3 -3
  18. package/chunk-GPYQ24DR.js.map +1 -0
  19. package/{chunk-473RDDIJ.js → chunk-J2QIAUG3.js} +4 -4
  20. package/{chunk-SB7EZ2ZO.js → chunk-MA22KQYU.js} +2 -2
  21. package/{chunk-QH4JBUUQ.js → chunk-MD3YWUKO.js} +2 -2
  22. package/{chunk-LJ5ON5RL.js → chunk-NGDZ3M3I.js} +3 -3
  23. package/{chunk-X2545RBX.js → chunk-NU6ECB2E.js} +2 -2
  24. package/{chunk-E45KMG2X.js → chunk-QHKN4JX5.js} +60 -9
  25. package/chunk-QHKN4JX5.js.map +1 -0
  26. package/{chunk-PIBXO6CM.js → chunk-SI2P32V7.js} +2 -2
  27. package/{chunk-YS47HRHU.js → chunk-SJN5663Y.js} +7 -2
  28. package/chunk-SJN5663Y.js.map +1 -0
  29. package/{chunk-HWMCC7JJ.js → chunk-TVNB6SCM.js} +3 -3
  30. package/{computer-use-F5NDPXLM.js → computer-use-CSQOXJPU.js} +7 -7
  31. package/{connector-SLGLMXFY.js → connector-MJZECEHE.js} +11 -11
  32. package/{credit-IBPQ5AYH.js → credit-XAZGU5OE.js} +11 -11
  33. package/{developer-support-LB7AUTDK.js → developer-support-AJDEWTTF.js} +8 -8
  34. package/{doctor-DGXZ3BCG.js → doctor-AOFALP4Z.js} +11 -11
  35. package/{esm-IFLVLSSI.js → esm-4E3ADGQ5.js} +3 -3
  36. package/{feishu-RJP2MM4V.js → feishu-FXJ2BQA5.js} +8 -8
  37. package/{finance-PYERQ67D.js → finance-TYOWATHH.js} +8 -8
  38. package/{generate-5QZ2YTAK.js → generate-5CMCUJ63.js} +12 -12
  39. package/{getMachineId-bsd-SB7C44VX.js → getMachineId-bsd-SITNSKZG.js} +4 -4
  40. package/{getMachineId-darwin-R4BWY3CQ.js → getMachineId-darwin-LZP7MPRT.js} +4 -4
  41. package/{getMachineId-linux-BR4HVNPW.js → getMachineId-linux-2KIAVPKF.js} +3 -3
  42. package/{getMachineId-unsupported-FPGM635L.js → getMachineId-unsupported-A7N2GND2.js} +3 -3
  43. package/{getMachineId-win-RB4JMF33.js → getMachineId-win-JC4M2QNN.js} +4 -4
  44. package/{github-J3GLU6NF.js → github-45KU4L2S.js} +8 -8
  45. package/{goal-RRDSGDYK.js → goal-CAJXITHG.js} +8 -8
  46. package/{host-7OMMXIEX.js → host-5JKXRLFZ.js} +8 -8
  47. package/{intro-PMHOBGDL.js → intro-EEUL7YXI.js} +3 -3
  48. package/{logs-U3HDTOWR.js → logs-JE35XUDP.js} +12 -12
  49. package/{mail-M3OGFBWP.js → mail-Z3KK7LMC.js} +10 -10
  50. package/{maps-X4MU5QO2.js → maps-2UNI5VMN.js} +8 -8
  51. package/{model-N376A4X2.js → model-AAJEFRUF.js} +9 -9
  52. package/{model-provider-NDS34UD4.js → model-provider-YBBSOCFA.js} +9 -9
  53. package/{org-JAWJZ5EM.js → org-CKZQ2TAH.js} +9 -9
  54. package/package.json +1 -1
  55. package/{people-search-XR3MYLEQ.js → people-search-GQKJUIF6.js} +8 -8
  56. package/{phone-R3ZNI6WS.js → phone-W2SYQB7I.js} +8 -8
  57. package/{preference-WENL7JDZ.js → preference-BUQ5EGLC.js} +9 -9
  58. package/{resource-ROHTUN4B.js → resource-IJKKAF47.js} +9 -9
  59. package/{scrape-5AIUJADC.js → scrape-RXEJ7HKS.js} +8 -8
  60. package/{search-UPV4DJNT.js → search-GPIMFXPS.js} +12 -12
  61. package/{secret-2CBMTPZA.js → secret-XJY7XLJP.js} +9 -9
  62. package/{slack-LYS43IDS.js → slack-FCPUPC5W.js} +8 -8
  63. package/{teams-AHVEXATR.js → teams-DGBAOSEG.js} +8 -8
  64. package/{telegram-QF5M3W27.js → telegram-4HSWKFBF.js} +8 -8
  65. package/{undici-YXSVPIYI.js → undici-GC3YRKYZ.js} +2 -2
  66. package/{upgrade-JH2KUX2S.js → upgrade-IBPJQOTG.js} +8 -8
  67. package/{variable-TVG5H4OK.js → variable-7EVJY7N2.js} +9 -9
  68. package/{video-DSWZ6JO6.js → video-ETADR6O3.js} +7 -7
  69. package/{weather-LSG2EO6W.js → weather-66X4C54Y.js} +8 -8
  70. package/{web-XVVPKM6L.js → web-LFT6DLOE.js} +8 -8
  71. package/{web-search-IXQ7U6N7.js → web-search-OIBRDJEM.js} +8 -8
  72. package/{whoami-SW2HA6JQ.js → whoami-EBUR5JJI.js} +10 -10
  73. package/{workflow-SWYLNSUI.js → workflow-2HJH6ZLC.js} +10 -10
  74. package/zero.js +49 -49
  75. package/chat-OC4D66E4.js.map +0 -1
  76. package/chunk-3VVCUQPB.js.map +0 -1
  77. package/chunk-E45KMG2X.js.map +0 -1
  78. package/chunk-YS47HRHU.js.map +0 -1
  79. /package/{agent-AN773EZL.js.map → agent-YTFQCJSK.js.map} +0 -0
  80. /package/{banking-73G67XKH.js.map → banking-DST6WKCT.js.map} +0 -0
  81. /package/{browser-RFOQW3TO.js.map → browser-TBDK2W4E.js.map} +0 -0
  82. /package/{chunk-7B7CI54O.js.map → chunk-2M75MCZL.js.map} +0 -0
  83. /package/{chunk-W75R7EZF.js.map → chunk-2NW76WYJ.js.map} +0 -0
  84. /package/{chunk-OWS6CFSH.js.map → chunk-5CEKHRJT.js.map} +0 -0
  85. /package/{chunk-VNURJUYW.js.map → chunk-7RCVJIZR.js.map} +0 -0
  86. /package/{chunk-EXE3C5JL.js.map → chunk-A23S6W3Y.js.map} +0 -0
  87. /package/{chunk-X4DBCBU4.js.map → chunk-BUYER4JA.js.map} +0 -0
  88. /package/{chunk-LD4ZVU4O.js.map → chunk-CCWPKGTB.js.map} +0 -0
  89. /package/{chunk-W7JXBKQU.js.map → chunk-F75ZGNZT.js.map} +0 -0
  90. /package/{chunk-B6ELBBRJ.js.map → chunk-FKYDKKID.js.map} +0 -0
  91. /package/{chunk-BPX62B4R.js.map → chunk-GKIW3TOG.js.map} +0 -0
  92. /package/{chunk-GPF7NSX7.js.map → chunk-GPLHJ5JM.js.map} +0 -0
  93. /package/{chunk-473RDDIJ.js.map → chunk-J2QIAUG3.js.map} +0 -0
  94. /package/{chunk-SB7EZ2ZO.js.map → chunk-MA22KQYU.js.map} +0 -0
  95. /package/{chunk-QH4JBUUQ.js.map → chunk-MD3YWUKO.js.map} +0 -0
  96. /package/{chunk-LJ5ON5RL.js.map → chunk-NGDZ3M3I.js.map} +0 -0
  97. /package/{chunk-X2545RBX.js.map → chunk-NU6ECB2E.js.map} +0 -0
  98. /package/{chunk-PIBXO6CM.js.map → chunk-SI2P32V7.js.map} +0 -0
  99. /package/{chunk-HWMCC7JJ.js.map → chunk-TVNB6SCM.js.map} +0 -0
  100. /package/{computer-use-F5NDPXLM.js.map → computer-use-CSQOXJPU.js.map} +0 -0
  101. /package/{connector-SLGLMXFY.js.map → connector-MJZECEHE.js.map} +0 -0
  102. /package/{credit-IBPQ5AYH.js.map → credit-XAZGU5OE.js.map} +0 -0
  103. /package/{developer-support-LB7AUTDK.js.map → developer-support-AJDEWTTF.js.map} +0 -0
  104. /package/{doctor-DGXZ3BCG.js.map → doctor-AOFALP4Z.js.map} +0 -0
  105. /package/{esm-IFLVLSSI.js.map → esm-4E3ADGQ5.js.map} +0 -0
  106. /package/{feishu-RJP2MM4V.js.map → feishu-FXJ2BQA5.js.map} +0 -0
  107. /package/{finance-PYERQ67D.js.map → finance-TYOWATHH.js.map} +0 -0
  108. /package/{generate-5QZ2YTAK.js.map → generate-5CMCUJ63.js.map} +0 -0
  109. /package/{getMachineId-bsd-SB7C44VX.js.map → getMachineId-bsd-SITNSKZG.js.map} +0 -0
  110. /package/{getMachineId-darwin-R4BWY3CQ.js.map → getMachineId-darwin-LZP7MPRT.js.map} +0 -0
  111. /package/{getMachineId-linux-BR4HVNPW.js.map → getMachineId-linux-2KIAVPKF.js.map} +0 -0
  112. /package/{getMachineId-unsupported-FPGM635L.js.map → getMachineId-unsupported-A7N2GND2.js.map} +0 -0
  113. /package/{getMachineId-win-RB4JMF33.js.map → getMachineId-win-JC4M2QNN.js.map} +0 -0
  114. /package/{github-J3GLU6NF.js.map → github-45KU4L2S.js.map} +0 -0
  115. /package/{goal-RRDSGDYK.js.map → goal-CAJXITHG.js.map} +0 -0
  116. /package/{host-7OMMXIEX.js.map → host-5JKXRLFZ.js.map} +0 -0
  117. /package/{intro-PMHOBGDL.js.map → intro-EEUL7YXI.js.map} +0 -0
  118. /package/{logs-U3HDTOWR.js.map → logs-JE35XUDP.js.map} +0 -0
  119. /package/{mail-M3OGFBWP.js.map → mail-Z3KK7LMC.js.map} +0 -0
  120. /package/{maps-X4MU5QO2.js.map → maps-2UNI5VMN.js.map} +0 -0
  121. /package/{model-N376A4X2.js.map → model-AAJEFRUF.js.map} +0 -0
  122. /package/{model-provider-NDS34UD4.js.map → model-provider-YBBSOCFA.js.map} +0 -0
  123. /package/{org-JAWJZ5EM.js.map → org-CKZQ2TAH.js.map} +0 -0
  124. /package/{people-search-XR3MYLEQ.js.map → people-search-GQKJUIF6.js.map} +0 -0
  125. /package/{phone-R3ZNI6WS.js.map → phone-W2SYQB7I.js.map} +0 -0
  126. /package/{preference-WENL7JDZ.js.map → preference-BUQ5EGLC.js.map} +0 -0
  127. /package/{resource-ROHTUN4B.js.map → resource-IJKKAF47.js.map} +0 -0
  128. /package/{scrape-5AIUJADC.js.map → scrape-RXEJ7HKS.js.map} +0 -0
  129. /package/{search-UPV4DJNT.js.map → search-GPIMFXPS.js.map} +0 -0
  130. /package/{secret-2CBMTPZA.js.map → secret-XJY7XLJP.js.map} +0 -0
  131. /package/{slack-LYS43IDS.js.map → slack-FCPUPC5W.js.map} +0 -0
  132. /package/{teams-AHVEXATR.js.map → teams-DGBAOSEG.js.map} +0 -0
  133. /package/{telegram-QF5M3W27.js.map → telegram-4HSWKFBF.js.map} +0 -0
  134. /package/{undici-YXSVPIYI.js.map → undici-GC3YRKYZ.js.map} +0 -0
  135. /package/{upgrade-JH2KUX2S.js.map → upgrade-IBPJQOTG.js.map} +0 -0
  136. /package/{variable-TVG5H4OK.js.map → variable-7EVJY7N2.js.map} +0 -0
  137. /package/{video-DSWZ6JO6.js.map → video-ETADR6O3.js.map} +0 -0
  138. /package/{weather-LSG2EO6W.js.map → weather-66X4C54Y.js.map} +0 -0
  139. /package/{web-XVVPKM6L.js.map → web-LFT6DLOE.js.map} +0 -0
  140. /package/{web-search-IXQ7U6N7.js.map → web-search-OIBRDJEM.js.map} +0 -0
  141. /package/{whoami-SW2HA6JQ.js.map → whoami-EBUR5JJI.js.map} +0 -0
  142. /package/{workflow-SWYLNSUI.js.map → workflow-2HJH6ZLC.js.map} +0 -0
@@ -4,14 +4,14 @@ const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  loadConnectorPermissionInfos,
6
6
  policyIcon
7
- } from "./chunk-W7JXBKQU.js";
7
+ } from "./chunk-F75ZGNZT.js";
8
8
  import {
9
9
  isInteractive,
10
10
  promptConfirm
11
- } from "./chunk-X2545RBX.js";
11
+ } from "./chunk-NU6ECB2E.js";
12
12
  import {
13
13
  permissionGrantsToFirewallPolicies
14
- } from "./chunk-7B7CI54O.js";
14
+ } from "./chunk-2M75MCZL.js";
15
15
  import {
16
16
  createZeroAgent,
17
17
  deleteZeroAgent,
@@ -23,20 +23,20 @@ import {
23
23
  listZeroUserPermissionGrants,
24
24
  updateZeroAgent,
25
25
  updateZeroAgentInstructions
26
- } from "./chunk-E45KMG2X.js";
27
- import "./chunk-OWS6CFSH.js";
28
- import "./chunk-SB7EZ2ZO.js";
26
+ } from "./chunk-QHKN4JX5.js";
27
+ import "./chunk-5CEKHRJT.js";
28
+ import "./chunk-MA22KQYU.js";
29
29
  import {
30
30
  source_default,
31
31
  withErrorHandler
32
- } from "./chunk-473RDDIJ.js";
33
- import "./chunk-QH4JBUUQ.js";
32
+ } from "./chunk-J2QIAUG3.js";
33
+ import "./chunk-MD3YWUKO.js";
34
34
  import {
35
35
  Command
36
- } from "./chunk-LD4ZVU4O.js";
36
+ } from "./chunk-CCWPKGTB.js";
37
37
  import {
38
38
  init_esm_shims
39
- } from "./chunk-3VVCUQPB.js";
39
+ } from "./chunk-GPYQ24DR.js";
40
40
 
41
41
  // src/commands/zero/agent/index.ts
42
42
  init_esm_shims();
@@ -594,4 +594,4 @@ Notes:
594
594
  export {
595
595
  zeroAgentCommand
596
596
  };
597
- //# sourceMappingURL=agent-AN773EZL.js.map
597
+ //# sourceMappingURL=agent-YTFQCJSK.js.map
@@ -3,21 +3,21 @@ import { createRequire as __createRequire } from "node:module";
3
3
  const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  callZeroBanking
6
- } from "./chunk-E45KMG2X.js";
7
- import "./chunk-OWS6CFSH.js";
8
- import "./chunk-SB7EZ2ZO.js";
6
+ } from "./chunk-QHKN4JX5.js";
7
+ import "./chunk-5CEKHRJT.js";
8
+ import "./chunk-MA22KQYU.js";
9
9
  import {
10
10
  source_default,
11
11
  withErrorHandler
12
- } from "./chunk-473RDDIJ.js";
13
- import "./chunk-QH4JBUUQ.js";
12
+ } from "./chunk-J2QIAUG3.js";
13
+ import "./chunk-MD3YWUKO.js";
14
14
  import {
15
15
  Command,
16
16
  InvalidArgumentError
17
- } from "./chunk-LD4ZVU4O.js";
17
+ } from "./chunk-CCWPKGTB.js";
18
18
  import {
19
19
  init_esm_shims
20
- } from "./chunk-3VVCUQPB.js";
20
+ } from "./chunk-GPYQ24DR.js";
21
21
 
22
22
  // src/commands/zero/banking/index.ts
23
23
  init_esm_shims();
@@ -114,4 +114,4 @@ Notes:
114
114
  export {
115
115
  zeroBankingCommand
116
116
  };
117
- //# sourceMappingURL=banking-73G67XKH.js.map
117
+ //# sourceMappingURL=banking-DST6WKCT.js.map
@@ -10,22 +10,22 @@ import {
10
10
  leaseZeroBrowser,
11
11
  useZeroBrowser,
12
12
  zeroBrowserCreateRequestSchema
13
- } from "./chunk-E45KMG2X.js";
14
- import "./chunk-OWS6CFSH.js";
15
- import "./chunk-SB7EZ2ZO.js";
13
+ } from "./chunk-QHKN4JX5.js";
14
+ import "./chunk-5CEKHRJT.js";
15
+ import "./chunk-MA22KQYU.js";
16
16
  import {
17
17
  source_default,
18
18
  withErrorHandler
19
- } from "./chunk-473RDDIJ.js";
20
- import "./chunk-QH4JBUUQ.js";
19
+ } from "./chunk-J2QIAUG3.js";
20
+ import "./chunk-MD3YWUKO.js";
21
21
  import {
22
22
  Command,
23
23
  InvalidArgumentError,
24
24
  Option
25
- } from "./chunk-LD4ZVU4O.js";
25
+ } from "./chunk-CCWPKGTB.js";
26
26
  import {
27
27
  init_esm_shims
28
- } from "./chunk-3VVCUQPB.js";
28
+ } from "./chunk-GPYQ24DR.js";
29
29
 
30
30
  // src/commands/zero/browser/index.ts
31
31
  init_esm_shims();
@@ -209,4 +209,4 @@ Notes:
209
209
  export {
210
210
  zeroBrowserCommand
211
211
  };
212
- //# sourceMappingURL=browser-RFOQW3TO.js.map
212
+ //# sourceMappingURL=browser-TBDK2W4E.js.map
@@ -5,10 +5,10 @@ import {
5
5
  formatIsoTimestamp,
6
6
  isUuid,
7
7
  parseBoundedLogCount
8
- } from "./chunk-B6ELBBRJ.js";
8
+ } from "./chunk-FKYDKKID.js";
9
9
  import {
10
10
  formatModelProviderRoute
11
- } from "./chunk-BPX62B4R.js";
11
+ } from "./chunk-GKIW3TOG.js";
12
12
  import {
13
13
  chatThreadEventSchema,
14
14
  chatThreadSnapshotProjectionSchema,
@@ -18,23 +18,23 @@ import {
18
18
  listZeroModelPolicies,
19
19
  renameZeroChatThread,
20
20
  updateZeroChatThreadModelSelection
21
- } from "./chunk-E45KMG2X.js";
22
- import "./chunk-OWS6CFSH.js";
23
- import "./chunk-SB7EZ2ZO.js";
21
+ } from "./chunk-QHKN4JX5.js";
22
+ import "./chunk-5CEKHRJT.js";
23
+ import "./chunk-MA22KQYU.js";
24
24
  import {
25
25
  getApiUrl,
26
26
  source_default,
27
27
  withErrorHandler
28
- } from "./chunk-473RDDIJ.js";
28
+ } from "./chunk-J2QIAUG3.js";
29
29
  import {
30
30
  decodeZeroTokenPayload
31
- } from "./chunk-QH4JBUUQ.js";
31
+ } from "./chunk-MD3YWUKO.js";
32
32
  import {
33
33
  Command
34
- } from "./chunk-LD4ZVU4O.js";
34
+ } from "./chunk-CCWPKGTB.js";
35
35
  import {
36
36
  init_esm_shims
37
- } from "./chunk-3VVCUQPB.js";
37
+ } from "./chunk-GPYQ24DR.js";
38
38
 
39
39
  // src/commands/zero/chat/index.ts
40
40
  init_esm_shims();
@@ -217,8 +217,14 @@ function replayChatThreadEvents(snapshot, events) {
217
217
  }
218
218
 
219
219
  // src/commands/zero/chat/chat-thread-cache.ts
220
- var CACHE_VERSION = 1;
220
+ var CACHE_VERSION = 2;
221
221
  var MAX_EVENT_PAGES_PER_SYNC = 20;
222
+ var cachedChatThreadEventSchema = chatThreadEventSchema.extend({
223
+ seqId: chatThreadEventSchema.shape.seqId.optional()
224
+ });
225
+ function eventHasSeqId(event) {
226
+ return event.seqId !== void 0;
227
+ }
222
228
  function isRecord(value) {
223
229
  return typeof value === "object" && value !== null;
224
230
  }
@@ -236,16 +242,18 @@ function parseCache(raw) {
236
242
  return null;
237
243
  }
238
244
  const chatThreads = chatThreadSnapshotProjectionSchema.array().safeParse(value.snapshot.chatThreads);
239
- const events = chatThreadEventSchema.array().safeParse(value.events);
240
- const latestEventId2 = value.snapshot.latestEventId;
241
- if (!chatThreads.success || !events.success || latestEventId2 !== null && typeof latestEventId2 !== "string") {
245
+ const events = cachedChatThreadEventSchema.array().safeParse(value.events);
246
+ const latestEventId = value.snapshot.latestEventId;
247
+ const latestSeqId = value.snapshot.latestSeqId;
248
+ if (!chatThreads.success || !events.success || latestEventId !== null && typeof latestEventId !== "string" || latestSeqId !== null && (typeof latestSeqId !== "number" || !Number.isSafeInteger(latestSeqId) || latestSeqId <= 0)) {
242
249
  return null;
243
250
  }
244
251
  return {
245
252
  version: CACHE_VERSION,
246
253
  snapshot: {
247
254
  chatThreads: chatThreads.data,
248
- latestEventId: latestEventId2
255
+ latestEventId,
256
+ latestSeqId
249
257
  },
250
258
  events: events.data
251
259
  };
@@ -300,10 +308,10 @@ function mergeEvents(existing, incoming) {
300
308
  for (const event of incoming) {
301
309
  byId.set(event.id, event);
302
310
  }
303
- return [...byId.values()].sort((left, right) => {
304
- const timeCompare = left.createdAt.localeCompare(right.createdAt);
305
- return timeCompare !== 0 ? timeCompare : left.id.localeCompare(right.id);
306
- });
311
+ const merged = [...byId.values()];
312
+ return merged.every(eventHasSeqId) ? merged.sort((left, right) => {
313
+ return left.seqId - right.seqId;
314
+ }) : merged;
307
315
  }
308
316
  async function freshCache() {
309
317
  return {
@@ -312,20 +320,34 @@ async function freshCache() {
312
320
  events: []
313
321
  };
314
322
  }
315
- function latestEventId(cache) {
316
- return cache.events.at(-1)?.id ?? cache.snapshot.latestEventId ?? void 0;
323
+ function latestEventCursor(cache) {
324
+ const event = cache.events.at(-1);
325
+ if (event) {
326
+ return {
327
+ eventId: event.id,
328
+ ...event.seqId !== void 0 ? { seqId: event.seqId } : {}
329
+ };
330
+ }
331
+ if (cache.snapshot.latestEventId === null) {
332
+ return void 0;
333
+ }
334
+ return {
335
+ eventId: cache.snapshot.latestEventId,
336
+ ...cache.snapshot.latestSeqId !== null ? { seqId: cache.snapshot.latestSeqId } : {}
337
+ };
317
338
  }
318
339
  async function syncCachedChatThreads() {
319
340
  const path = await cachePath();
320
341
  let cache = await readCache(path) ?? await freshCache();
321
- let cursor = latestEventId(cache);
342
+ let cursor = latestEventCursor(cache);
322
343
  for (let page = 0; page < MAX_EVENT_PAGES_PER_SYNC; page++) {
323
344
  const result = await listZeroChatThreadEvents({
324
- sinceEventId: cursor
345
+ sinceSeqId: cursor?.seqId,
346
+ sinceEventId: cursor?.eventId
325
347
  });
326
348
  if (result.kind === "expired") {
327
349
  cache = await freshCache();
328
- cursor = latestEventId(cache);
350
+ cursor = latestEventCursor(cache);
329
351
  continue;
330
352
  }
331
353
  if (result.events.length > 0) {
@@ -335,7 +357,10 @@ async function syncCachedChatThreads() {
335
357
  };
336
358
  const lastEvent = result.events.at(-1);
337
359
  if (lastEvent) {
338
- cursor = lastEvent.id;
360
+ cursor = {
361
+ eventId: lastEvent.id,
362
+ ...lastEvent.seqId !== void 0 ? { seqId: lastEvent.seqId } : {}
363
+ };
339
364
  }
340
365
  }
341
366
  if (!result.hasMore || result.events.length === 0) {
@@ -622,4 +647,4 @@ Examples:
622
647
  export {
623
648
  zeroChatCommand
624
649
  };
625
- //# sourceMappingURL=chat-OC4D66E4.js.map
650
+ //# sourceMappingURL=chat-PVJ23RN4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/zero/chat/index.ts","../src/commands/zero/chat/get.ts","../src/commands/zero/chat/list.ts","../src/commands/zero/chat/chat-thread-cache.ts","../../../packages/core/src/chat-thread-event-replay.ts","../src/commands/zero/chat/model.ts","../src/commands/zero/chat/rename.ts"],"sourcesContent":["import { Command } from \"commander\";\n\nimport { getCommand } from \"./get\";\nimport { listCommand } from \"./list\";\nimport { modelCommand } from \"./model\";\nimport { renameCommand } from \"./rename\";\n\nexport const zeroChatCommand = new Command()\n .name(\"chat\")\n .description(\"Manage web chat threads\")\n .addCommand(getCommand)\n .addCommand(listCommand)\n .addCommand(modelCommand)\n .addCommand(renameCommand)\n .addHelpText(\n \"after\",\n `\nExamples:\n List agent chats: zero chat list\n Show this chat: zero chat get\n Switch model: zero chat model claude-sonnet-5\n Rename this chat: zero chat rename \"Launch plan\"\n Rename another: zero chat rename --thread <thread-id> \"Launch plan\"`,\n );\n","import chalk from \"chalk\";\nimport { Command } from \"commander\";\n\nimport { getZeroChatThread } from \"../../../lib/api\";\nimport { withErrorHandler } from \"../../../lib/command\";\n\ninterface GetOptions {\n readonly json?: boolean;\n}\n\nfunction getCurrentChatThreadId(): string | undefined {\n return process.env.ZERO_CHAT_THREAD_ID?.trim() || undefined;\n}\n\nfunction printUsageError(message: string, hint: string): never {\n console.error(chalk.red(`✗ ${message}`));\n console.error(chalk.dim(` ${hint}`));\n process.exit(1);\n}\n\nexport const getCommand = new Command()\n .name(\"get\")\n .description(\"Show the current web chat thread\")\n .option(\"--json\", \"Print machine-readable JSON\")\n .addHelpText(\n \"after\",\n `\nExamples:\n Show this chat: zero chat get\n Print JSON: zero chat get --json\n\nNotes:\n - Uses ZERO_CHAT_THREAD_ID from the current web chat thread\n - Authenticates via ZERO_TOKEN (requires chat-thread:read capability)`,\n )\n .action(\n withErrorHandler(async (options: GetOptions) => {\n const threadId = getCurrentChatThreadId();\n if (!threadId) {\n printUsageError(\n \"ZERO_CHAT_THREAD_ID is not set\",\n \"Run this command from a Zero web chat thread.\",\n );\n }\n\n const thread = await getZeroChatThread({ threadId });\n if (options.json) {\n console.log(JSON.stringify(thread));\n return;\n }\n\n console.log(chalk.green(\"✓ Chat thread loaded\"));\n console.log(chalk.dim(` Thread: ${thread.id}`));\n console.log(chalk.dim(` Title: ${thread.title ?? \"(untitled)\"}`));\n console.log(\n chalk.dim(` Model: ${thread.selectedModel ?? \"(default)\"}`),\n );\n }),\n );\n","import chalk from \"chalk\";\nimport { Command } from \"commander\";\n\nimport { withErrorHandler } from \"../../../lib/command\";\nimport { formatIsoTimestamp } from \"../../../lib/utils/time-format\";\nimport { parseBoundedLogCount } from \"../../../lib/utils/log-pagination\";\nimport { isUuid } from \"../../../lib/utils/uuid\";\nimport { syncCachedChatThreads } from \"./chat-thread-cache\";\n\nconst DEFAULT_LIMIT = 20;\nconst MAX_LIMIT = 100;\n\ninterface ListOptions {\n readonly agent?: string;\n readonly json?: boolean;\n readonly limit?: string;\n}\n\nfunction printUsageError(message: string, hint: string): never {\n console.error(chalk.red(`✗ ${message}`));\n console.error(chalk.dim(` ${hint}`));\n process.exit(1);\n}\n\nfunction resolveAgentId(flagAgentId: string | undefined): string {\n const agentId = flagAgentId?.trim() || process.env.ZERO_AGENT_ID?.trim();\n if (!agentId) {\n printUsageError(\n \"ZERO_AGENT_ID is not set\",\n \"Pass --agent <agent-id> or run inside an agent sandbox.\",\n );\n }\n if (!isUuid(agentId)) {\n printUsageError(\n `Invalid agent ID \"${agentId}\" — expected a UUID`,\n \"Pass a valid UUID with --agent <agent-id>.\",\n );\n }\n return agentId;\n}\n\nfunction titleForDisplay(title: string | null): string {\n return (title ?? \"(untitled)\").replace(/\\s+/g, \" \");\n}\n\nexport const listCommand = new Command()\n .name(\"list\")\n .alias(\"ls\")\n .description(\"List web chat threads for an agent\")\n .option(\"--agent <id>\", \"Filter by Zero agent ID (defaults to ZERO_AGENT_ID)\")\n .option(\n \"--limit <n>\",\n `Maximum number of threads to print (default: ${DEFAULT_LIMIT}, max: ${MAX_LIMIT})`,\n )\n .option(\"--json\", \"Print machine-readable JSON\")\n .addHelpText(\n \"after\",\n `\nExamples:\n List this agent's chats: zero chat list\n List another agent: zero chat list --agent <agent-id>\n Limit the output: zero chat list --limit 10\n Print JSON: zero chat list --json\n\nNotes:\n - Defaults --agent to ZERO_AGENT_ID\n - Authenticates via ZERO_TOKEN (requires chat-thread:read capability)\n - Replays cached snapshot and incremental chat thread events`,\n )\n .action(\n withErrorHandler(async (options: ListOptions) => {\n const agentId = resolveAgentId(options.agent);\n const limit =\n options.limit === undefined\n ? DEFAULT_LIMIT\n : parseBoundedLogCount(options.limit, \"--limit\", 1, MAX_LIMIT);\n const allThreads = await syncCachedChatThreads();\n const matchingThreads = allThreads.filter((thread) => {\n return thread.agentId === agentId;\n });\n const threads = matchingThreads.slice(0, limit);\n\n if (options.json) {\n console.log(\n JSON.stringify({\n agentId,\n total: matchingThreads.length,\n threads,\n }),\n );\n return;\n }\n\n if (threads.length === 0) {\n console.log(chalk.dim(\"No chat threads found\"));\n return;\n }\n\n const header = [\n \"THREAD ID\".padEnd(38),\n \"SORTED\".padEnd(20),\n \"PINNED\".padEnd(6),\n \"TITLE\",\n ].join(\" \");\n console.log(chalk.dim(header));\n for (const thread of threads) {\n console.log(\n [\n thread.id.padEnd(38),\n formatIsoTimestamp(thread.sortAt).padEnd(20),\n (thread.pinnedAt === null ? \"-\" : \"yes\").padEnd(6),\n titleForDisplay(thread.title),\n ].join(\" \"),\n );\n }\n\n if (threads.length < matchingThreads.length) {\n console.log();\n console.log(\n chalk.dim(\n ` Showing ${threads.length} of ${matchingThreads.length} threads. Use --limit to adjust.`,\n ),\n );\n }\n }),\n );\n","import { createHash, randomUUID } from \"node:crypto\";\nimport { mkdir, readFile, rename, rm, writeFile } from \"node:fs/promises\";\nimport { homedir } from \"node:os\";\nimport { dirname, join } from \"node:path\";\n\nimport {\n chatThreadEventSchema,\n chatThreadSnapshotProjectionSchema,\n} from \"@vm0/api-contracts/contracts/chat-threads\";\nimport {\n replayChatThreadEvents,\n type EventDrivenChatThread,\n} from \"@vm0/core/chat-thread-event-replay\";\n\nimport {\n getZeroChatThreadSnapshot,\n listZeroChatThreadEvents,\n type ZeroChatThreadEvent,\n type ZeroChatThreadSnapshot,\n} from \"../../../lib/api\";\nimport { decodeZeroTokenPayload, getApiUrl } from \"../../../lib/api/config\";\n\nconst CACHE_VERSION = 2;\nconst MAX_EVENT_PAGES_PER_SYNC = 20;\n\ninterface ChatThreadCache {\n readonly version: typeof CACHE_VERSION;\n readonly snapshot: ZeroChatThreadSnapshot;\n readonly events: readonly ZeroChatThreadEvent[];\n}\n\ninterface ChatThreadEventCursor {\n readonly eventId: string;\n readonly seqId?: number;\n}\n\nconst cachedChatThreadEventSchema = chatThreadEventSchema.extend({\n seqId: chatThreadEventSchema.shape.seqId.optional(),\n});\n\nfunction eventHasSeqId(\n event: ZeroChatThreadEvent,\n): event is ZeroChatThreadEvent & { readonly seqId: number } {\n return event.seqId !== undefined;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction parseCache(raw: string): ChatThreadCache | null {\n let value: unknown;\n try {\n value = JSON.parse(raw);\n } catch (error) {\n if (error instanceof SyntaxError) {\n return null;\n }\n throw error;\n }\n\n if (\n !isRecord(value) ||\n value.version !== CACHE_VERSION ||\n !isRecord(value.snapshot)\n ) {\n return null;\n }\n\n const chatThreads = chatThreadSnapshotProjectionSchema\n .array()\n .safeParse(value.snapshot.chatThreads);\n const events = cachedChatThreadEventSchema.array().safeParse(value.events);\n const latestEventId = value.snapshot.latestEventId;\n const latestSeqId = value.snapshot.latestSeqId;\n if (\n !chatThreads.success ||\n !events.success ||\n (latestEventId !== null && typeof latestEventId !== \"string\") ||\n (latestSeqId !== null &&\n (typeof latestSeqId !== \"number\" ||\n !Number.isSafeInteger(latestSeqId) ||\n latestSeqId <= 0))\n ) {\n return null;\n }\n\n return {\n version: CACHE_VERSION,\n snapshot: {\n chatThreads: chatThreads.data,\n latestEventId,\n latestSeqId,\n },\n events: events.data,\n };\n}\n\nfunction cacheRoot(): string {\n return process.env.XDG_CACHE_HOME?.trim() || join(homedir(), \".cache\");\n}\n\nasync function cachePath(): Promise<string> {\n const token = decodeZeroTokenPayload();\n if (!token) {\n throw new Error(\"ZERO_TOKEN does not contain a valid Zero cache scope\");\n }\n const apiUrl = await getApiUrl();\n const scope = createHash(\"sha256\")\n .update(`${apiUrl}\\0${token.orgId}\\0${token.userId}`)\n .digest(\"hex\");\n return join(cacheRoot(), \"vm0\", \"zero\", \"chat-threads\", `${scope}.json`);\n}\n\nfunction isNodeError(error: unknown): error is NodeJS.ErrnoException {\n return error instanceof Error && \"code\" in error;\n}\n\nasync function readCache(path: string): Promise<ChatThreadCache | null> {\n let raw: string;\n try {\n raw = await readFile(path, \"utf8\");\n } catch (error) {\n if (isNodeError(error) && error.code === \"ENOENT\") {\n return null;\n }\n throw error;\n }\n return parseCache(raw);\n}\n\nasync function writeCache(path: string, cache: ChatThreadCache): Promise<void> {\n await mkdir(dirname(path), { recursive: true, mode: 0o700 });\n const temporaryPath = `${path}.${process.pid}.${randomUUID()}.tmp`;\n try {\n await writeFile(temporaryPath, `${JSON.stringify(cache)}\\n`, {\n encoding: \"utf8\",\n flag: \"wx\",\n mode: 0o600,\n });\n await rename(temporaryPath, path);\n } finally {\n await rm(temporaryPath, { force: true });\n }\n}\n\nfunction mergeEvents(\n existing: readonly ZeroChatThreadEvent[],\n incoming: readonly ZeroChatThreadEvent[],\n): ZeroChatThreadEvent[] {\n const byId = new Map<string, ZeroChatThreadEvent>();\n for (const event of existing) {\n byId.set(event.id, event);\n }\n for (const event of incoming) {\n byId.set(event.id, event);\n }\n const merged = [...byId.values()];\n return merged.every(eventHasSeqId)\n ? merged.sort((left, right) => {\n return left.seqId - right.seqId;\n })\n : merged;\n}\n\nasync function freshCache(): Promise<ChatThreadCache> {\n return {\n version: CACHE_VERSION,\n snapshot: await getZeroChatThreadSnapshot(),\n events: [],\n };\n}\n\nfunction latestEventCursor(\n cache: ChatThreadCache,\n): ChatThreadEventCursor | undefined {\n const event = cache.events.at(-1);\n if (event) {\n return {\n eventId: event.id,\n ...(event.seqId !== undefined ? { seqId: event.seqId } : {}),\n };\n }\n if (cache.snapshot.latestEventId === null) {\n return undefined;\n }\n return {\n eventId: cache.snapshot.latestEventId,\n ...(cache.snapshot.latestSeqId !== null\n ? { seqId: cache.snapshot.latestSeqId }\n : {}),\n };\n}\n\nexport async function syncCachedChatThreads(): Promise<\n EventDrivenChatThread[]\n> {\n const path = await cachePath();\n let cache = (await readCache(path)) ?? (await freshCache());\n let cursor = latestEventCursor(cache);\n\n for (let page = 0; page < MAX_EVENT_PAGES_PER_SYNC; page++) {\n const result = await listZeroChatThreadEvents({\n sinceSeqId: cursor?.seqId,\n sinceEventId: cursor?.eventId,\n });\n if (result.kind === \"expired\") {\n cache = await freshCache();\n cursor = latestEventCursor(cache);\n continue;\n }\n\n if (result.events.length > 0) {\n cache = {\n ...cache,\n events: mergeEvents(cache.events, result.events),\n };\n const lastEvent = result.events.at(-1);\n if (lastEvent) {\n cursor = {\n eventId: lastEvent.id,\n ...(lastEvent.seqId !== undefined ? { seqId: lastEvent.seqId } : {}),\n };\n }\n }\n\n if (!result.hasMore || result.events.length === 0) {\n break;\n }\n }\n\n await writeCache(path, cache);\n return replayChatThreadEvents(cache.snapshot.chatThreads, cache.events);\n}\n","import type {\n ChatThreadEvent,\n ChatThreadSnapshotProjection,\n} from \"@vm0/api-contracts/contracts/chat-threads\";\n\nexport type ReplayChatThreadEvent = Omit<ChatThreadEvent, \"seqId\">;\n\nexport interface EventDrivenChatThread extends ChatThreadSnapshotProjection {\n readonly sortAt: string;\n readonly cloudBrowserEnabled: boolean;\n}\n\nfunction compareThreadOrder(\n left: EventDrivenChatThread,\n right: EventDrivenChatThread,\n): number {\n const leftPinned = left.pinnedAt !== null;\n const rightPinned = right.pinnedAt !== null;\n if (leftPinned !== rightPinned) {\n return leftPinned ? -1 : 1;\n }\n const sortCompare = right.sortAt.localeCompare(left.sortAt);\n if (sortCompare !== 0) {\n return sortCompare;\n }\n return right.id.localeCompare(left.id);\n}\n\nfunction applyEvent(\n threads: Map<string, EventDrivenChatThread>,\n event: ReplayChatThreadEvent,\n pendingThreadUpdates: Map<string, ReplayChatThreadEvent[]>,\n) {\n if (event.kind === \"created\") {\n threads.set(event.chatThreadId, {\n id: event.chatThreadId,\n agentId: event.agentId,\n title: event.title,\n sortAt: event.createdAt,\n createdAt: event.createdAt,\n updatedAt: event.createdAt,\n pinnedAt: null,\n renamedAt: null,\n selectedModel: event.selectedModel,\n serviceTier: event.serviceTier,\n computerUseHostId: event.computerUseHostId,\n cloudBrowserEnabled: event.cloudBrowserEnabled ?? false,\n });\n const pendingUpdates = pendingThreadUpdates.get(event.chatThreadId) ?? [];\n pendingThreadUpdates.delete(event.chatThreadId);\n for (const pendingUpdate of pendingUpdates) {\n if (pendingUpdate.createdAt.localeCompare(event.createdAt) >= 0) {\n applyEvent(threads, pendingUpdate, pendingThreadUpdates);\n }\n }\n return;\n }\n\n if (event.kind === \"deleted\") {\n threads.delete(event.chatThreadId);\n return;\n }\n\n const thread = threads.get(event.chatThreadId);\n if (!thread) {\n if (\n event.kind === \"model_selection_updated\" ||\n event.kind === \"service_tier_updated\" ||\n event.kind === \"computer_use_host_updated\"\n ) {\n const pendingUpdates = pendingThreadUpdates.get(event.chatThreadId) ?? [];\n pendingThreadUpdates.set(event.chatThreadId, [...pendingUpdates, event]);\n }\n return;\n }\n\n if (event.kind === \"renamed\") {\n threads.set(event.chatThreadId, {\n ...thread,\n title: event.title,\n renamedAt: event.createdAt,\n updatedAt: event.createdAt,\n });\n return;\n }\n\n if (event.kind === \"pinned\") {\n threads.set(event.chatThreadId, {\n ...thread,\n pinnedAt: event.createdAt,\n updatedAt: event.createdAt,\n });\n return;\n }\n\n if (event.kind === \"unpinned\") {\n threads.set(event.chatThreadId, {\n ...thread,\n pinnedAt: null,\n updatedAt: event.createdAt,\n });\n return;\n }\n\n if (event.kind === \"model_selection_updated\") {\n threads.set(event.chatThreadId, {\n ...thread,\n selectedModel: event.selectedModel,\n updatedAt: event.createdAt,\n });\n return;\n }\n\n if (event.kind === \"service_tier_updated\") {\n threads.set(event.chatThreadId, {\n ...thread,\n serviceTier: event.serviceTier,\n updatedAt: event.createdAt,\n });\n return;\n }\n\n if (event.kind === \"computer_use_host_updated\") {\n threads.set(event.chatThreadId, {\n ...thread,\n computerUseHostId: event.computerUseHostId,\n cloudBrowserEnabled: event.cloudBrowserEnabled ?? false,\n updatedAt: event.createdAt,\n });\n return;\n }\n\n threads.set(event.chatThreadId, {\n ...thread,\n sortAt: event.createdAt,\n });\n}\n\nexport function replayChatThreadEvents(\n snapshot: readonly ChatThreadSnapshotProjection[],\n events: readonly ReplayChatThreadEvent[],\n): EventDrivenChatThread[] {\n const threads = new Map<string, EventDrivenChatThread>();\n for (const thread of snapshot) {\n threads.set(thread.id, {\n ...thread,\n selectedModel: thread.selectedModel ?? null,\n serviceTier: thread.serviceTier ?? null,\n computerUseHostId: thread.computerUseHostId ?? null,\n cloudBrowserEnabled: thread.cloudBrowserEnabled ?? false,\n });\n }\n const pendingThreadUpdates = new Map<string, ReplayChatThreadEvent[]>();\n for (const event of events) {\n applyEvent(threads, event, pendingThreadUpdates);\n }\n return [...threads.values()].sort(compareThreadOrder);\n}\n","import chalk from \"chalk\";\nimport { Command } from \"commander\";\nimport type { ChatThreadMetadata } from \"@vm0/api-contracts/contracts/chat-threads\";\nimport type { OrgModelPolicy } from \"@vm0/api-contracts/contracts/model-providers\";\n\nimport {\n getZeroChatThread,\n listZeroModelPolicies,\n updateZeroChatThreadModelSelection,\n} from \"../../../lib/api\";\nimport { withErrorHandler } from \"../../../lib/command\";\nimport { formatModelProviderRoute } from \"../../../lib/domain/model-policy-display\";\n\ninterface ModelOptions {\n readonly help?: boolean;\n}\n\nfunction getCurrentChatThreadId(): string | undefined {\n return process.env.ZERO_CHAT_THREAD_ID?.trim() || undefined;\n}\n\nfunction printUsageError(message: string, hint: string): never {\n console.error(chalk.red(`✗ ${message}`));\n console.error(chalk.dim(` ${hint}`));\n process.exit(1);\n}\n\nfunction switchablePolicies(policies: readonly OrgModelPolicy[]) {\n return policies.filter((policy) => {\n return policy.routeStatus === \"valid\";\n });\n}\n\nfunction formatModelName(policy: OrgModelPolicy): string {\n return `${policy.modelLabel} ${chalk.dim(`(${policy.model})`)}`;\n}\n\nfunction printSwitchableModels(policies: readonly OrgModelPolicy[]): void {\n const switchable = switchablePolicies(policies);\n if (switchable.length === 0) {\n console.log(chalk.dim(\"No switchable models are available for this user\"));\n return;\n }\n\n for (const policy of switchable) {\n const defaultMarker = policy.isDefault ? chalk.dim(\" (default)\") : \"\";\n console.log(` - ${formatModelName(policy)}${defaultMarker}`);\n console.log(` provider: ${formatModelProviderRoute(policy)}`);\n }\n}\n\nfunction printCurrentModel(thread: ChatThreadMetadata): void {\n console.log(chalk.green(\"✓ Chat thread loaded\"));\n console.log(chalk.dim(` Thread: ${thread.id}`));\n console.log(chalk.dim(` Title: ${thread.title ?? \"(untitled)\"}`));\n console.log(chalk.dim(` Model: ${thread.selectedModel ?? \"(default)\"}`));\n}\n\nasync function printModelHelp(command: Command): Promise<void> {\n const result = await listZeroModelPolicies();\n console.log(command.helpInformation().trimEnd());\n console.log();\n console.log(chalk.bold(\"Switchable models:\"));\n printSwitchableModels(result.policies);\n console.log();\n console.log(\"Use the model id in parentheses:\");\n console.log(chalk.cyan(\" zero chat model <model>\"));\n}\n\nasync function printCurrentModelAndChoices(threadId: string): Promise<void> {\n const [thread, result] = await Promise.all([\n getZeroChatThread({ threadId }),\n listZeroModelPolicies(),\n ]);\n\n printCurrentModel(thread);\n console.log();\n console.log(chalk.bold(\"Switchable models:\"));\n printSwitchableModels(result.policies);\n console.log();\n console.log(\"Switch models:\");\n console.log(chalk.cyan(\" zero chat model <model>\"));\n}\n\nasync function switchModel(threadId: string, model: string): Promise<void> {\n const result = await listZeroModelPolicies();\n const policy = result.policies.find((candidate) => {\n return candidate.model === model;\n });\n\n if (!policy) {\n printUsageError(`Unknown model: ${model}`, \"Run: zero chat model --help\");\n }\n\n if (policy.routeStatus !== \"valid\") {\n const reason = policy.routeStatusReason\n ? ` (${policy.routeStatusReason})`\n : \"\";\n printUsageError(\n `Model is not switchable: ${model}${reason}`,\n \"Run: zero chat model --help\",\n );\n }\n\n const updated = await updateZeroChatThreadModelSelection({\n threadId,\n model,\n });\n\n console.log(chalk.green(\"✓ Chat model updated\"));\n console.log(chalk.dim(` Thread: ${updated.threadId}`));\n console.log(chalk.dim(` Model: ${policy.modelLabel} (${model})`));\n}\n\nexport const modelCommand = new Command()\n .name(\"model\")\n .description(\"Show or switch the current web chat thread model\")\n .argument(\"[model]\", \"Model id to use for this chat thread\")\n .helpOption(false)\n .option(\"-h, --help\", \"Show help with switchable models\")\n .addHelpText(\n \"after\",\n `\nExamples:\n Show this chat model: zero chat model\n Switch this model: zero chat model claude-sonnet-5\n\nNotes:\n - Uses ZERO_CHAT_THREAD_ID from the current web chat thread\n - Authenticates via ZERO_TOKEN (requires chat-thread:write capability to switch)`,\n )\n .action(\n withErrorHandler(\n async (model: string | undefined, options: ModelOptions) => {\n if (options.help) {\n await printModelHelp(modelCommand);\n return;\n }\n\n const threadId = getCurrentChatThreadId();\n if (!threadId) {\n printUsageError(\n \"ZERO_CHAT_THREAD_ID is not set\",\n \"Run this command from a Zero web chat thread.\",\n );\n }\n\n if (!model) {\n await printCurrentModelAndChoices(threadId);\n return;\n }\n\n await switchModel(threadId, model);\n },\n ),\n );\n","import chalk from \"chalk\";\nimport { Command } from \"commander\";\n\nimport { renameZeroChatThread } from \"../../../lib/api\";\nimport { withErrorHandler } from \"../../../lib/command\";\nimport { isUuid } from \"../../../lib/utils/uuid\";\n\ninterface RenameOptions {\n readonly json?: boolean;\n readonly thread?: string;\n}\n\nfunction getCurrentChatThreadId(): string | undefined {\n return process.env.ZERO_CHAT_THREAD_ID?.trim() || undefined;\n}\n\nfunction printUsageError(message: string, hint: string): never {\n console.error(chalk.red(`✗ ${message}`));\n console.error(chalk.dim(` ${hint}`));\n process.exit(1);\n}\n\nexport const renameCommand = new Command()\n .name(\"rename\")\n .description(\"Rename a web chat thread\")\n .argument(\"<title...>\", \"New chat title\")\n .option(\"--thread <id>\", \"Chat thread ID (defaults to ZERO_CHAT_THREAD_ID)\")\n .option(\"--json\", \"Print machine-readable JSON\")\n .addHelpText(\n \"after\",\n `\nExamples:\n Rename this chat: zero chat rename \"Launch plan\"\n Rename another: zero chat rename --thread <thread-id> \"Launch plan\"\n\nNotes:\n - Defaults --thread to ZERO_CHAT_THREAD_ID\n - Authenticates via ZERO_TOKEN (requires chat-thread:write capability)`,\n )\n .action(\n withErrorHandler(async (titleParts: string[], options: RenameOptions) => {\n const title = titleParts.join(\" \").trim();\n if (!title) {\n printUsageError(\n \"Title is required\",\n 'Run: zero chat rename \"New title\"',\n );\n }\n\n const threadId = options.thread?.trim() || getCurrentChatThreadId();\n if (!threadId) {\n printUsageError(\n \"ZERO_CHAT_THREAD_ID is not set\",\n \"Pass --thread <thread-id> or run inside a Zero web chat thread.\",\n );\n }\n if (!isUuid(threadId)) {\n printUsageError(\n `Invalid thread ID \"${threadId}\" — expected a UUID`,\n \"Pass a valid UUID with --thread <thread-id>.\",\n );\n }\n\n const result = await renameZeroChatThread({ threadId, title });\n if (options.json) {\n console.log(JSON.stringify(result));\n return;\n }\n\n console.log(chalk.green(\"✓ Chat title updated\"));\n console.log(chalk.dim(` Thread: ${result.threadId}`));\n console.log(chalk.dim(` Title: ${result.title}`));\n }),\n );\n"],"mappings":"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","names":["printUsageError","getCurrentChatThreadId","printUsageError","getCurrentChatThreadId","printUsageError"]}
@@ -3,10 +3,10 @@ import { createRequire as __createRequire } from "node:module";
3
3
  const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  UNKNOWN_PERMISSION_GRANT
6
- } from "./chunk-E45KMG2X.js";
6
+ } from "./chunk-QHKN4JX5.js";
7
7
  import {
8
8
  init_esm_shims
9
- } from "./chunk-3VVCUQPB.js";
9
+ } from "./chunk-GPYQ24DR.js";
10
10
 
11
11
  // ../../packages/connectors/src/firewall-metadata/policy.ts
12
12
  init_esm_shims();
@@ -130,4 +130,4 @@ export {
130
130
  resolveFirewallMetadataPolicies,
131
131
  permissionGrantsToFirewallPolicies
132
132
  };
133
- //# sourceMappingURL=chunk-7B7CI54O.js.map
133
+ //# sourceMappingURL=chunk-2M75MCZL.js.map
@@ -3,7 +3,7 @@ import { createRequire as __createRequire } from "node:module";
3
3
  const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  init_esm_shims
6
- } from "./chunk-3VVCUQPB.js";
6
+ } from "./chunk-GPYQ24DR.js";
7
7
 
8
8
  // src/commands/zero/shared/billing-links.ts
9
9
  init_esm_shims();
@@ -14,4 +14,4 @@ function planUpgradeUrl(platformOrigin) {
14
14
  export {
15
15
  planUpgradeUrl
16
16
  };
17
- //# sourceMappingURL=chunk-W75R7EZF.js.map
17
+ //# sourceMappingURL=chunk-2NW76WYJ.js.map
@@ -6,10 +6,10 @@ import {
6
6
  getActiveToken,
7
7
  getBaseUrl,
8
8
  headersWithCliClientHeaders
9
- } from "./chunk-473RDDIJ.js";
9
+ } from "./chunk-J2QIAUG3.js";
10
10
  import {
11
11
  init_esm_shims
12
- } from "./chunk-3VVCUQPB.js";
12
+ } from "./chunk-GPYQ24DR.js";
13
13
 
14
14
  // src/lib/api/domains/web.ts
15
15
  init_esm_shims();
@@ -648,4 +648,4 @@ export {
648
648
  generateWebVideo,
649
649
  transcribeAudio
650
650
  };
651
- //# sourceMappingURL=chunk-OWS6CFSH.js.map
651
+ //# sourceMappingURL=chunk-5CEKHRJT.js.map
@@ -5,10 +5,10 @@ import {
5
5
  formatIsoTimestamp,
6
6
  isUuid,
7
7
  parseBoundedLogCount
8
- } from "./chunk-B6ELBBRJ.js";
8
+ } from "./chunk-FKYDKKID.js";
9
9
  import {
10
10
  listVideoTemplates
11
- } from "./chunk-PIBXO6CM.js";
11
+ } from "./chunk-SI2P32V7.js";
12
12
  import {
13
13
  authHeadersSchema,
14
14
  connectorCatalogDiagnosticsSchema,
@@ -17,7 +17,7 @@ import {
17
17
  runnerGroupSchema,
18
18
  searchZeroLogs,
19
19
  zeroAgentVisibilitySchema
20
- } from "./chunk-E45KMG2X.js";
20
+ } from "./chunk-QHKN4JX5.js";
21
21
  import {
22
22
  apiErrorSchema,
23
23
  external_exports,
@@ -31,16 +31,16 @@ import {
31
31
  upsertModelProviderRequestSchema,
32
32
  upsertModelProviderResponseSchema,
33
33
  withErrorHandler
34
- } from "./chunk-473RDDIJ.js";
34
+ } from "./chunk-J2QIAUG3.js";
35
35
  import {
36
36
  Command
37
- } from "./chunk-LD4ZVU4O.js";
37
+ } from "./chunk-CCWPKGTB.js";
38
38
  import {
39
39
  __commonJS,
40
40
  __require,
41
41
  __toESM,
42
42
  init_esm_shims
43
- } from "./chunk-3VVCUQPB.js";
43
+ } from "./chunk-GPYQ24DR.js";
44
44
 
45
45
  // ../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/nodes/identity.js
46
46
  var require_identity = __commonJS({
@@ -18088,4 +18088,4 @@ export {
18088
18088
  runLogsSearch,
18089
18089
  searchCommand
18090
18090
  };
18091
- //# sourceMappingURL=chunk-VNURJUYW.js.map
18091
+ //# sourceMappingURL=chunk-7RCVJIZR.js.map
@@ -4,10 +4,10 @@ const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  getZeroAgent,
6
6
  getZeroAgentUserConnectors
7
- } from "./chunk-E45KMG2X.js";
7
+ } from "./chunk-QHKN4JX5.js";
8
8
  import {
9
9
  init_esm_shims
10
- } from "./chunk-3VVCUQPB.js";
10
+ } from "./chunk-GPYQ24DR.js";
11
11
 
12
12
  // src/commands/zero/connector/action-url.ts
13
13
  init_esm_shims();
@@ -347,4 +347,4 @@ export {
347
347
  resolveManualGrantAuthMethod,
348
348
  resolveAgentContext
349
349
  };
350
- //# sourceMappingURL=chunk-EXE3C5JL.js.map
350
+ //# sourceMappingURL=chunk-A23S6W3Y.js.map
@@ -5,7 +5,7 @@ import {
5
5
  __esm,
6
6
  __export,
7
7
  init_esm_shims
8
- } from "./chunk-3VVCUQPB.js";
8
+ } from "./chunk-GPYQ24DR.js";
9
9
 
10
10
  // ../../node_modules/.pnpm/@opentelemetry+api@1.9.1/node_modules/@opentelemetry/api/build/esm/version.js
11
11
  var VERSION;
@@ -1656,4 +1656,4 @@ export {
1656
1656
  esm_exports,
1657
1657
  init_esm
1658
1658
  };
1659
- //# sourceMappingURL=chunk-X4DBCBU4.js.map
1659
+ //# sourceMappingURL=chunk-BUYER4JA.js.map
@@ -6,7 +6,7 @@ import {
6
6
  __require,
7
7
  __toESM,
8
8
  init_esm_shims
9
- } from "./chunk-3VVCUQPB.js";
9
+ } from "./chunk-GPYQ24DR.js";
10
10
 
11
11
  // ../../node_modules/.pnpm/commander@14.0.3/node_modules/commander/lib/error.js
12
12
  var require_error = __commonJS({
@@ -3471,4 +3471,4 @@ export {
3471
3471
  Command,
3472
3472
  Option
3473
3473
  };
3474
- //# sourceMappingURL=chunk-LD4ZVU4O.js.map
3474
+ //# sourceMappingURL=chunk-CCWPKGTB.js.map
@@ -3,16 +3,16 @@ import { createRequire as __createRequire } from "node:module";
3
3
  const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  resolveFirewallMetadataPolicies
6
- } from "./chunk-7B7CI54O.js";
6
+ } from "./chunk-2M75MCZL.js";
7
7
  import {
8
8
  getZeroConnectorCatalogPermissions
9
- } from "./chunk-E45KMG2X.js";
9
+ } from "./chunk-QHKN4JX5.js";
10
10
  import {
11
11
  source_default
12
- } from "./chunk-473RDDIJ.js";
12
+ } from "./chunk-J2QIAUG3.js";
13
13
  import {
14
14
  init_esm_shims
15
- } from "./chunk-3VVCUQPB.js";
15
+ } from "./chunk-GPYQ24DR.js";
16
16
 
17
17
  // src/lib/utils/format-utils.ts
18
18
  init_esm_shims();
@@ -89,4 +89,4 @@ export {
89
89
  policyIcon,
90
90
  loadConnectorPermissionInfos
91
91
  };
92
- //# sourceMappingURL=chunk-W7JXBKQU.js.map
92
+ //# sourceMappingURL=chunk-F75ZGNZT.js.map
@@ -3,7 +3,7 @@ import { createRequire as __createRequire } from "node:module";
3
3
  const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  init_esm_shims
6
- } from "./chunk-3VVCUQPB.js";
6
+ } from "./chunk-GPYQ24DR.js";
7
7
 
8
8
  // src/lib/utils/time-format.ts
9
9
  init_esm_shims();
@@ -80,4 +80,4 @@ export {
80
80
  collectLogItems,
81
81
  isUuid
82
82
  };
83
- //# sourceMappingURL=chunk-B6ELBBRJ.js.map
83
+ //# sourceMappingURL=chunk-FKYDKKID.js.map
@@ -3,10 +3,10 @@ import { createRequire as __createRequire } from "node:module";
3
3
  const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  MODEL_PROVIDER_TYPES
6
- } from "./chunk-473RDDIJ.js";
6
+ } from "./chunk-J2QIAUG3.js";
7
7
  import {
8
8
  init_esm_shims
9
- } from "./chunk-3VVCUQPB.js";
9
+ } from "./chunk-GPYQ24DR.js";
10
10
 
11
11
  // src/lib/domain/model-policy-display.ts
12
12
  init_esm_shims();
@@ -40,4 +40,4 @@ export {
40
40
  formatModelProviderRoute,
41
41
  formatModelPolicyStatus
42
42
  };
43
- //# sourceMappingURL=chunk-BPX62B4R.js.map
43
+ //# sourceMappingURL=chunk-GKIW3TOG.js.map
@@ -3,7 +3,7 @@ import { createRequire as __createRequire } from "node:module";
3
3
  const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  init_esm_shims
6
- } from "./chunk-3VVCUQPB.js";
6
+ } from "./chunk-GPYQ24DR.js";
7
7
 
8
8
  // ../../node_modules/.pnpm/@opentelemetry+resources@2.7.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/execAsync.js
9
9
  init_esm_shims();
@@ -14,4 +14,4 @@ var execAsync = util.promisify(child_process.exec);
14
14
  export {
15
15
  execAsync
16
16
  };
17
- //# sourceMappingURL=chunk-GPF7NSX7.js.map
17
+ //# sourceMappingURL=chunk-GPLHJ5JM.js.map
@@ -50,12 +50,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
50
50
  ));
51
51
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
52
52
 
53
- // ../../node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.22_tsx@4.21.0_typescript@6.0.3_yaml@2.8.3/node_modules/tsup/assets/esm_shims.js
53
+ // ../../node_modules/.pnpm/tsup@8.5.1_@swc+core@1.15.46_@swc+helpers@0.5.21__jiti@2.7.0_postcss@8.5.22_tsx@4.21.0_typescript@6.0.3_yaml@2.8.3/node_modules/tsup/assets/esm_shims.js
54
54
  import path from "path";
55
55
  import { fileURLToPath } from "url";
56
56
  var getFilename, __filename;
57
57
  var init_esm_shims = __esm({
58
- "../../node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.22_tsx@4.21.0_typescript@6.0.3_yaml@2.8.3/node_modules/tsup/assets/esm_shims.js"() {
58
+ "../../node_modules/.pnpm/tsup@8.5.1_@swc+core@1.15.46_@swc+helpers@0.5.21__jiti@2.7.0_postcss@8.5.22_tsx@4.21.0_typescript@6.0.3_yaml@2.8.3/node_modules/tsup/assets/esm_shims.js"() {
59
59
  "use strict";
60
60
  getFilename = () => fileURLToPath(import.meta.url);
61
61
  __filename = /* @__PURE__ */ getFilename();
@@ -72,4 +72,4 @@ export {
72
72
  __filename,
73
73
  init_esm_shims
74
74
  };
75
- //# sourceMappingURL=chunk-3VVCUQPB.js.map
75
+ //# sourceMappingURL=chunk-GPYQ24DR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/tsup@8.5.1_@swc+core@1.15.46_@swc+helpers@0.5.21__jiti@2.7.0_postcss@8.5.22_tsx@4.21.0_typescript@6.0.3_yaml@2.8.3/node_modules/tsup/assets/esm_shims.js"],"sourcesContent":["// Shim globals in esm bundle\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nconst getFilename = () => fileURLToPath(import.meta.url)\nconst getDirname = () => path.dirname(getFilename())\n\nexport const __dirname = /* @__PURE__ */ getDirname()\nexport const __filename = /* @__PURE__ */ getFilename()\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,UAAU;AACjB,SAAS,qBAAqB;AAF9B,IAIM,aAIO;AARb;AAAA;AAAA;AAIA,IAAM,cAAc,MAAM,cAAc,YAAY,GAAG;AAIhD,IAAM,aAA6B,4BAAY;AAAA;AAAA;","names":[]}