@vm0/cli 9.259.0 → 9.260.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 (106) hide show
  1. package/{agent-JQQRVMD7.js → agent-CVBI2U7K.js} +7 -7
  2. package/{banking-KC4W73VE.js → banking-ZFXLS34X.js} +5 -5
  3. package/{browser-LR3DADKC.js → browser-AXMVZEXD.js} +5 -5
  4. package/{chat-VIGRWHPY.js → chat-WY4VMGHJ.js} +11 -8
  5. package/chat-WY4VMGHJ.js.map +1 -0
  6. package/{chunk-TMDC4SKZ.js → chunk-2KSQ243U.js} +2 -2
  7. package/{chunk-O6FQT7NZ.js → chunk-6AE53QDK.js} +163 -7
  8. package/chunk-6AE53QDK.js.map +1 -0
  9. package/{chunk-GNZ2MIAC.js → chunk-6GBUMHRL.js} +4 -6
  10. package/chunk-6GBUMHRL.js.map +1 -0
  11. package/{chunk-OI4YMCJU.js → chunk-ATTDFHLS.js} +2 -2
  12. package/{chunk-TZEKMC6N.js → chunk-BY7YDOHH.js} +2 -2
  13. package/{chunk-YXYURWWD.js → chunk-CVQKOA2N.js} +2 -2
  14. package/{chunk-5MEPMQ7A.js → chunk-FEHGYJGF.js} +18 -3
  15. package/{chunk-5MEPMQ7A.js.map → chunk-FEHGYJGF.js.map} +1 -1
  16. package/{chunk-SKMQRNID.js → chunk-GXTHF4DD.js} +2 -2
  17. package/{chunk-H5KBW6P3.js → chunk-PU2AEGBG.js} +4 -4
  18. package/{chunk-LHM5WPCO.js → chunk-Q2CWPFH2.js} +3 -3
  19. package/{chunk-EJLAGPIJ.js → chunk-QHOV3CNA.js} +2 -2
  20. package/{computer-use-JV3O5BCX.js → computer-use-MCREZICH.js} +5 -5
  21. package/{connector-VVOW4MSD.js → connector-2RUHAPEE.js} +73 -8
  22. package/connector-2RUHAPEE.js.map +1 -0
  23. package/{credit-3JBUIS3Z.js → credit-FPR2NEB3.js} +7 -7
  24. package/{developer-support-TLA5FL4Y.js → developer-support-EFOM6KEK.js} +5 -5
  25. package/{doctor-X6E3PSMM.js → doctor-HD2RWNKF.js} +7 -7
  26. package/{feishu-3JGPSMPR.js → feishu-I4GHDZSV.js} +5 -5
  27. package/{finance-7IUZQQU7.js → finance-ROLQNDWR.js} +5 -5
  28. package/{generate-VAWWFPAY.js → generate-IHAISPWK.js} +7 -7
  29. package/{github-MUZGDKIN.js → github-INCPLLLD.js} +5 -5
  30. package/{goal-WMCNENJA.js → goal-OIUF5OU6.js} +5 -5
  31. package/{host-Z2HQBNVA.js → host-ACRWIKMU.js} +5 -5
  32. package/{logs-WEALPJFB.js → logs-V55QDVRJ.js} +6 -6
  33. package/{mail-J7J3DQON.js → mail-WIQI2V2P.js} +7 -7
  34. package/{maps-H3P2EJE5.js → maps-OJXQAQJQ.js} +5 -5
  35. package/{model-A4NWK32Y.js → model-TRG2R6CJ.js} +6 -6
  36. package/{model-provider-7VHEZL5H.js → model-provider-P7HOAOQE.js} +6 -6
  37. package/{org-2YK6BT7B.js → org-BJLSSFI3.js} +5 -5
  38. package/package.json +1 -1
  39. package/{people-search-HEGGKU6A.js → people-search-YZXTOACF.js} +5 -5
  40. package/{phone-QU2L7CWL.js → phone-5R5HAAPC.js} +5 -5
  41. package/{preference-GWOW6GFK.js → preference-VM3LUPGB.js} +5 -5
  42. package/{resource-GVGDKYH4.js → resource-TEJLALGA.js} +5 -5
  43. package/{scrape-ISQTTO7V.js → scrape-QJCYFJ6O.js} +5 -5
  44. package/{search-U4AJDSSZ.js → search-AN3BTQHS.js} +6 -6
  45. package/{secret-CJLCUARN.js → secret-CSQKYWNT.js} +5 -5
  46. package/{slack-CM5JGA32.js → slack-REQK25VI.js} +5 -5
  47. package/{teams-EV3GC4F7.js → teams-BY7GNQCM.js} +5 -5
  48. package/{telegram-JHGCORZ2.js → telegram-XDNTH57U.js} +5 -5
  49. package/{upgrade-PWJB2KKS.js → upgrade-MTLB67AH.js} +4 -4
  50. package/{variable-Z53I5LCW.js → variable-SAXYXBYY.js} +5 -5
  51. package/{video-Y23O465D.js → video-QFZADY5X.js} +4 -4
  52. package/{weather-HSLWWOVB.js → weather-IWLSOMUW.js} +5 -5
  53. package/{web-G3GL5JAY.js → web-HTHISWVB.js} +5 -5
  54. package/{web-search-5ZBSTZLR.js → web-search-RPWD3LYT.js} +5 -5
  55. package/{whoami-KFSGXKML.js → whoami-HSB4GG2H.js} +7 -7
  56. package/{workflow-WDHCAEJ6.js → workflow-QW2MUFXN.js} +5 -5
  57. package/zero.js +43 -43
  58. package/chat-VIGRWHPY.js.map +0 -1
  59. package/chunk-GNZ2MIAC.js.map +0 -1
  60. package/chunk-O6FQT7NZ.js.map +0 -1
  61. package/connector-VVOW4MSD.js.map +0 -1
  62. /package/{agent-JQQRVMD7.js.map → agent-CVBI2U7K.js.map} +0 -0
  63. /package/{banking-KC4W73VE.js.map → banking-ZFXLS34X.js.map} +0 -0
  64. /package/{browser-LR3DADKC.js.map → browser-AXMVZEXD.js.map} +0 -0
  65. /package/{chunk-TMDC4SKZ.js.map → chunk-2KSQ243U.js.map} +0 -0
  66. /package/{chunk-OI4YMCJU.js.map → chunk-ATTDFHLS.js.map} +0 -0
  67. /package/{chunk-TZEKMC6N.js.map → chunk-BY7YDOHH.js.map} +0 -0
  68. /package/{chunk-YXYURWWD.js.map → chunk-CVQKOA2N.js.map} +0 -0
  69. /package/{chunk-SKMQRNID.js.map → chunk-GXTHF4DD.js.map} +0 -0
  70. /package/{chunk-H5KBW6P3.js.map → chunk-PU2AEGBG.js.map} +0 -0
  71. /package/{chunk-LHM5WPCO.js.map → chunk-Q2CWPFH2.js.map} +0 -0
  72. /package/{chunk-EJLAGPIJ.js.map → chunk-QHOV3CNA.js.map} +0 -0
  73. /package/{computer-use-JV3O5BCX.js.map → computer-use-MCREZICH.js.map} +0 -0
  74. /package/{credit-3JBUIS3Z.js.map → credit-FPR2NEB3.js.map} +0 -0
  75. /package/{developer-support-TLA5FL4Y.js.map → developer-support-EFOM6KEK.js.map} +0 -0
  76. /package/{doctor-X6E3PSMM.js.map → doctor-HD2RWNKF.js.map} +0 -0
  77. /package/{feishu-3JGPSMPR.js.map → feishu-I4GHDZSV.js.map} +0 -0
  78. /package/{finance-7IUZQQU7.js.map → finance-ROLQNDWR.js.map} +0 -0
  79. /package/{generate-VAWWFPAY.js.map → generate-IHAISPWK.js.map} +0 -0
  80. /package/{github-MUZGDKIN.js.map → github-INCPLLLD.js.map} +0 -0
  81. /package/{goal-WMCNENJA.js.map → goal-OIUF5OU6.js.map} +0 -0
  82. /package/{host-Z2HQBNVA.js.map → host-ACRWIKMU.js.map} +0 -0
  83. /package/{logs-WEALPJFB.js.map → logs-V55QDVRJ.js.map} +0 -0
  84. /package/{mail-J7J3DQON.js.map → mail-WIQI2V2P.js.map} +0 -0
  85. /package/{maps-H3P2EJE5.js.map → maps-OJXQAQJQ.js.map} +0 -0
  86. /package/{model-A4NWK32Y.js.map → model-TRG2R6CJ.js.map} +0 -0
  87. /package/{model-provider-7VHEZL5H.js.map → model-provider-P7HOAOQE.js.map} +0 -0
  88. /package/{org-2YK6BT7B.js.map → org-BJLSSFI3.js.map} +0 -0
  89. /package/{people-search-HEGGKU6A.js.map → people-search-YZXTOACF.js.map} +0 -0
  90. /package/{phone-QU2L7CWL.js.map → phone-5R5HAAPC.js.map} +0 -0
  91. /package/{preference-GWOW6GFK.js.map → preference-VM3LUPGB.js.map} +0 -0
  92. /package/{resource-GVGDKYH4.js.map → resource-TEJLALGA.js.map} +0 -0
  93. /package/{scrape-ISQTTO7V.js.map → scrape-QJCYFJ6O.js.map} +0 -0
  94. /package/{search-U4AJDSSZ.js.map → search-AN3BTQHS.js.map} +0 -0
  95. /package/{secret-CJLCUARN.js.map → secret-CSQKYWNT.js.map} +0 -0
  96. /package/{slack-CM5JGA32.js.map → slack-REQK25VI.js.map} +0 -0
  97. /package/{teams-EV3GC4F7.js.map → teams-BY7GNQCM.js.map} +0 -0
  98. /package/{telegram-JHGCORZ2.js.map → telegram-XDNTH57U.js.map} +0 -0
  99. /package/{upgrade-PWJB2KKS.js.map → upgrade-MTLB67AH.js.map} +0 -0
  100. /package/{variable-Z53I5LCW.js.map → variable-SAXYXBYY.js.map} +0 -0
  101. /package/{video-Y23O465D.js.map → video-QFZADY5X.js.map} +0 -0
  102. /package/{weather-HSLWWOVB.js.map → weather-IWLSOMUW.js.map} +0 -0
  103. /package/{web-G3GL5JAY.js.map → web-HTHISWVB.js.map} +0 -0
  104. /package/{web-search-5ZBSTZLR.js.map → web-search-RPWD3LYT.js.map} +0 -0
  105. /package/{whoami-KFSGXKML.js.map → whoami-HSB4GG2H.js.map} +0 -0
  106. /package/{workflow-WDHCAEJ6.js.map → workflow-QW2MUFXN.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-H5KBW6P3.js";
7
+ } from "./chunk-PU2AEGBG.js";
8
8
  import {
9
9
  isInteractive,
10
10
  promptConfirm
11
11
  } from "./chunk-X2545RBX.js";
12
12
  import {
13
13
  permissionGrantsToFirewallPolicies
14
- } from "./chunk-EJLAGPIJ.js";
14
+ } from "./chunk-QHOV3CNA.js";
15
15
  import {
16
16
  createZeroAgent,
17
17
  deleteZeroAgent,
@@ -23,14 +23,14 @@ import {
23
23
  listZeroUserPermissionGrants,
24
24
  updateZeroAgent,
25
25
  updateZeroAgentInstructions
26
- } from "./chunk-O6FQT7NZ.js";
27
- import "./chunk-SKMQRNID.js";
26
+ } from "./chunk-6AE53QDK.js";
27
+ import "./chunk-GXTHF4DD.js";
28
28
  import "./chunk-SB7EZ2ZO.js";
29
29
  import {
30
30
  source_default,
31
31
  withErrorHandler
32
- } from "./chunk-LHM5WPCO.js";
33
- import "./chunk-GNZ2MIAC.js";
32
+ } from "./chunk-Q2CWPFH2.js";
33
+ import "./chunk-6GBUMHRL.js";
34
34
  import {
35
35
  Command
36
36
  } from "./chunk-LD4ZVU4O.js";
@@ -594,4 +594,4 @@ Notes:
594
594
  export {
595
595
  zeroAgentCommand
596
596
  };
597
- //# sourceMappingURL=agent-JQQRVMD7.js.map
597
+ //# sourceMappingURL=agent-CVBI2U7K.js.map
@@ -3,14 +3,14 @@ import { createRequire as __createRequire } from "node:module";
3
3
  const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  callZeroBanking
6
- } from "./chunk-O6FQT7NZ.js";
7
- import "./chunk-SKMQRNID.js";
6
+ } from "./chunk-6AE53QDK.js";
7
+ import "./chunk-GXTHF4DD.js";
8
8
  import "./chunk-SB7EZ2ZO.js";
9
9
  import {
10
10
  source_default,
11
11
  withErrorHandler
12
- } from "./chunk-LHM5WPCO.js";
13
- import "./chunk-GNZ2MIAC.js";
12
+ } from "./chunk-Q2CWPFH2.js";
13
+ import "./chunk-6GBUMHRL.js";
14
14
  import {
15
15
  Command,
16
16
  InvalidArgumentError
@@ -114,4 +114,4 @@ Notes:
114
114
  export {
115
115
  zeroBankingCommand
116
116
  };
117
- //# sourceMappingURL=banking-KC4W73VE.js.map
117
+ //# sourceMappingURL=banking-ZFXLS34X.js.map
@@ -10,14 +10,14 @@ import {
10
10
  leaseZeroBrowser,
11
11
  useZeroBrowser,
12
12
  zeroBrowserCreateRequestSchema
13
- } from "./chunk-O6FQT7NZ.js";
14
- import "./chunk-SKMQRNID.js";
13
+ } from "./chunk-6AE53QDK.js";
14
+ import "./chunk-GXTHF4DD.js";
15
15
  import "./chunk-SB7EZ2ZO.js";
16
16
  import {
17
17
  source_default,
18
18
  withErrorHandler
19
- } from "./chunk-LHM5WPCO.js";
20
- import "./chunk-GNZ2MIAC.js";
19
+ } from "./chunk-Q2CWPFH2.js";
20
+ import "./chunk-6GBUMHRL.js";
21
21
  import {
22
22
  Command,
23
23
  InvalidArgumentError,
@@ -209,4 +209,4 @@ Notes:
209
209
  export {
210
210
  zeroBrowserCommand
211
211
  };
212
- //# sourceMappingURL=browser-LR3DADKC.js.map
212
+ //# sourceMappingURL=browser-AXMVZEXD.js.map
@@ -8,7 +8,7 @@ import {
8
8
  } from "./chunk-B6ELBBRJ.js";
9
9
  import {
10
10
  formatModelProviderRoute
11
- } from "./chunk-TMDC4SKZ.js";
11
+ } from "./chunk-2KSQ243U.js";
12
12
  import {
13
13
  chatThreadEventSchema,
14
14
  chatThreadSnapshotProjectionSchema,
@@ -18,17 +18,17 @@ import {
18
18
  listZeroModelPolicies,
19
19
  renameZeroChatThread,
20
20
  updateZeroChatThreadModelSelection
21
- } from "./chunk-O6FQT7NZ.js";
22
- import "./chunk-SKMQRNID.js";
21
+ } from "./chunk-6AE53QDK.js";
22
+ import "./chunk-GXTHF4DD.js";
23
23
  import "./chunk-SB7EZ2ZO.js";
24
24
  import {
25
25
  getApiUrl,
26
26
  source_default,
27
27
  withErrorHandler
28
- } from "./chunk-LHM5WPCO.js";
28
+ } from "./chunk-Q2CWPFH2.js";
29
29
  import {
30
30
  decodeZeroTokenPayload
31
- } from "./chunk-GNZ2MIAC.js";
31
+ } from "./chunk-6GBUMHRL.js";
32
32
  import {
33
33
  Command
34
34
  } from "./chunk-LD4ZVU4O.js";
@@ -119,7 +119,8 @@ function applyEvent(threads, event, pendingThreadUpdates) {
119
119
  renamedAt: null,
120
120
  selectedModel: event.selectedModel,
121
121
  serviceTier: event.serviceTier,
122
- computerUseHostId: event.computerUseHostId
122
+ computerUseHostId: event.computerUseHostId,
123
+ cloudBrowserEnabled: event.cloudBrowserEnabled ?? false
123
124
  });
124
125
  const pendingUpdates = pendingThreadUpdates.get(event.chatThreadId) ?? [];
125
126
  pendingThreadUpdates.delete(event.chatThreadId);
@@ -187,6 +188,7 @@ function applyEvent(threads, event, pendingThreadUpdates) {
187
188
  threads.set(event.chatThreadId, {
188
189
  ...thread,
189
190
  computerUseHostId: event.computerUseHostId,
191
+ cloudBrowserEnabled: event.cloudBrowserEnabled ?? false,
190
192
  updatedAt: event.createdAt
191
193
  });
192
194
  return;
@@ -203,7 +205,8 @@ function replayChatThreadEvents(snapshot, events) {
203
205
  ...thread,
204
206
  selectedModel: thread.selectedModel ?? null,
205
207
  serviceTier: thread.serviceTier ?? null,
206
- computerUseHostId: thread.computerUseHostId ?? null
208
+ computerUseHostId: thread.computerUseHostId ?? null,
209
+ cloudBrowserEnabled: thread.cloudBrowserEnabled ?? false
207
210
  });
208
211
  }
209
212
  const pendingThreadUpdates = /* @__PURE__ */ new Map();
@@ -619,4 +622,4 @@ Examples:
619
622
  export {
620
623
  zeroChatCommand
621
624
  };
622
- //# sourceMappingURL=chat-VIGRWHPY.js.map
625
+ //# sourceMappingURL=chat-WY4VMGHJ.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 type ChatThreadEvent,\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 ZeroChatThreadSnapshot,\n} from \"../../../lib/api\";\nimport { decodeZeroTokenPayload, getApiUrl } from \"../../../lib/api/config\";\n\nconst CACHE_VERSION = 1;\nconst MAX_EVENT_PAGES_PER_SYNC = 20;\n\ninterface ChatThreadCache {\n readonly version: typeof CACHE_VERSION;\n readonly snapshot: ZeroChatThreadSnapshot;\n readonly events: readonly ChatThreadEvent[];\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 = chatThreadEventSchema.array().safeParse(value.events);\n const latestEventId = value.snapshot.latestEventId;\n if (\n !chatThreads.success ||\n !events.success ||\n (latestEventId !== null && typeof latestEventId !== \"string\")\n ) {\n return null;\n }\n\n return {\n version: CACHE_VERSION,\n snapshot: {\n chatThreads: chatThreads.data,\n latestEventId,\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 ChatThreadEvent[],\n incoming: readonly ChatThreadEvent[],\n): ChatThreadEvent[] {\n const byId = new Map<string, ChatThreadEvent>();\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 return [...byId.values()].sort((left, right) => {\n const timeCompare = left.createdAt.localeCompare(right.createdAt);\n return timeCompare !== 0 ? timeCompare : left.id.localeCompare(right.id);\n });\n}\n\nasync function freshCache(): Promise<ChatThreadCache> {\n return {\n version: CACHE_VERSION,\n snapshot: await getZeroChatThreadSnapshot(),\n events: [],\n };\n}\n\nfunction latestEventId(cache: ChatThreadCache): string | undefined {\n return cache.events.at(-1)?.id ?? cache.snapshot.latestEventId ?? undefined;\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 = latestEventId(cache);\n\n for (let page = 0; page < MAX_EVENT_PAGES_PER_SYNC; page++) {\n const result = await listZeroChatThreadEvents({\n sinceEventId: cursor,\n });\n if (result.kind === \"expired\") {\n cache = await freshCache();\n cursor = latestEventId(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 = lastEvent.id;\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 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: ChatThreadEvent,\n pendingThreadUpdates: Map<string, ChatThreadEvent[]>,\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 ChatThreadEvent[],\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, ChatThreadEvent[]>();\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":["latestEventId","printUsageError","getCurrentChatThreadId","printUsageError","getCurrentChatThreadId","printUsageError"]}
@@ -3,7 +3,7 @@ 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-LHM5WPCO.js";
6
+ } from "./chunk-Q2CWPFH2.js";
7
7
  import {
8
8
  init_esm_shims
9
9
  } from "./chunk-3VVCUQPB.js";
@@ -40,4 +40,4 @@ export {
40
40
  formatModelProviderRoute,
41
41
  formatModelPolicyStatus
42
42
  };
43
- //# sourceMappingURL=chunk-TMDC4SKZ.js.map
43
+ //# sourceMappingURL=chunk-2KSQ243U.js.map
@@ -21,7 +21,7 @@ import {
21
21
  updateOrgModelPoliciesRequestSchema,
22
22
  upsertModelProviderRequestSchema,
23
23
  upsertModelProviderResponseSchema
24
- } from "./chunk-LHM5WPCO.js";
24
+ } from "./chunk-Q2CWPFH2.js";
25
25
  import {
26
26
  __commonJS,
27
27
  __esm,
@@ -2878,6 +2878,47 @@ var agentEventsResponseSchema = external_exports.object({
2878
2878
  framework: external_exports.string()
2879
2879
  });
2880
2880
  var networkLogActionSchema = external_exports.enum(["ALLOW", "DENY", "BLOCK"]);
2881
+ var modelCatalogCacheStatusSchema = external_exports.enum([
2882
+ "model_catalog_bypass",
2883
+ "model_catalog_fresh_hit",
2884
+ "model_catalog_cold_stored",
2885
+ "model_catalog_cold_not_stored",
2886
+ "model_catalog_revalidated_304",
2887
+ "model_catalog_revalidated_200_same",
2888
+ "model_catalog_revalidated_200_changed",
2889
+ "model_catalog_revalidation_not_stored",
2890
+ "model_catalog_etag_confirmed",
2891
+ "model_catalog_etag_invalidated"
2892
+ ]);
2893
+ var modelCatalogCacheBypassReasonSchema = external_exports.enum([
2894
+ "request_url",
2895
+ "request_method",
2896
+ "request_framing",
2897
+ "request_body",
2898
+ "request_streaming",
2899
+ "request_conditions",
2900
+ "request_cache_control",
2901
+ "request_encoding",
2902
+ "request_identity",
2903
+ "request_capacity",
2904
+ "response_status",
2905
+ "response_encoding",
2906
+ "response_content_type",
2907
+ "response_cache_control",
2908
+ "response_vary",
2909
+ "response_etag",
2910
+ "response_size",
2911
+ "response_stream",
2912
+ "response_body",
2913
+ "response_json",
2914
+ "response_shape",
2915
+ "response_missing",
2916
+ "concurrent_change",
2917
+ "transport_error"
2918
+ ]);
2919
+ var modelCatalogCacheUpstreamEncodingSchema = external_exports.enum(["identity", "br"]);
2920
+ var modelCatalogCacheMillisecondsSchema = external_exports.number().int().min(0).max(2147483647);
2921
+ var modelCatalogCacheEvictionCountSchema = external_exports.number().int().min(0).max(32);
2881
2922
  var networkLogEntrySchema = external_exports.object({
2882
2923
  timestamp: external_exports.string(),
2883
2924
  type: external_exports.string().optional(),
@@ -2891,6 +2932,12 @@ var networkLogEntrySchema = external_exports.object({
2891
2932
  request_size: external_exports.number().optional(),
2892
2933
  response_size: external_exports.number().optional(),
2893
2934
  browser_user_agent: external_exports.boolean().optional(),
2935
+ model_catalog_cache_status: modelCatalogCacheStatusSchema.optional(),
2936
+ model_catalog_cache_upstream_encoding: modelCatalogCacheUpstreamEncodingSchema.optional(),
2937
+ model_catalog_cache_bypass_reason: modelCatalogCacheBypassReasonSchema.optional(),
2938
+ model_catalog_cache_entry_age_ms: modelCatalogCacheMillisecondsSchema.optional(),
2939
+ model_catalog_cache_validation_latency_ms: modelCatalogCacheMillisecondsSchema.optional(),
2940
+ model_catalog_cache_eviction_count: modelCatalogCacheEvictionCountSchema.optional(),
2894
2941
  dns_event: external_exports.string().optional(),
2895
2942
  dns_query_type: external_exports.string().optional(),
2896
2943
  dns_result: external_exports.string().optional(),
@@ -3376,7 +3423,8 @@ var chatThreadSnapshotProjectionSchema = external_exports.object({
3376
3423
  renamedAt: external_exports.string().nullable(),
3377
3424
  selectedModel: external_exports.string().nullable().default(null),
3378
3425
  serviceTier: chatThreadServiceTierSchema.nullable().default(null),
3379
- computerUseHostId: external_exports.string().uuid().nullable().default(null)
3426
+ computerUseHostId: external_exports.string().uuid().nullable().default(null),
3427
+ cloudBrowserEnabled: external_exports.boolean().optional()
3380
3428
  });
3381
3429
  var chatThreadEventSchema = external_exports.object({
3382
3430
  id: chatThreadEventIdSchema,
@@ -3397,6 +3445,7 @@ var chatThreadEventSchema = external_exports.object({
3397
3445
  selectedModel: external_exports.string().nullable().default(null),
3398
3446
  serviceTier: chatThreadServiceTierSchema.nullable().default(null),
3399
3447
  computerUseHostId: external_exports.string().uuid().nullable().default(null),
3448
+ cloudBrowserEnabled: external_exports.boolean().optional(),
3400
3449
  createdAt: external_exports.string()
3401
3450
  });
3402
3451
  var chatMessageUsageProviderBreakdownSchema = external_exports.object({
@@ -3835,6 +3884,7 @@ var chatNormalSendBodyShape = {
3835
3884
  structuredPrompt: userMessageDocumentSchema.optional(),
3836
3885
  generationTemplate: generationTemplateRequestSchema.optional(),
3837
3886
  computerUseHostId: external_exports.string().uuid().nullable().optional(),
3887
+ cloudBrowserEnabled: external_exports.boolean().optional(),
3838
3888
  // Optional for backward compatibility: older clients that omit this field
3839
3889
  // still trigger title generation (server guards with !== false, not === true).
3840
3890
  hasTextContent: external_exports.boolean().optional(),
@@ -3850,10 +3900,20 @@ var chatMessageNormalSendBodySchema = external_exports.preprocess(
3850
3900
  external_exports.object({
3851
3901
  ...chatNormalSendBodyShape,
3852
3902
  // Client-generated UUID used as the user message's primary key.
3903
+ // Lets the client render an optimistic row and reconcile with the
3904
+ // server row by id — no temp-id swap, no React remount.
3853
3905
  clientMessageId: external_exports.string().uuid().optional(),
3854
3906
  revokesMessageId: external_exports.string().min(1).optional(),
3855
3907
  interruptsRunId: external_exports.undefined().optional()
3856
- })
3908
+ }).refine(
3909
+ (body) => {
3910
+ return !(body.cloudBrowserEnabled && body.computerUseHostId);
3911
+ },
3912
+ {
3913
+ message: "Cloud browser and Computer Use cannot both be enabled",
3914
+ path: ["cloudBrowserEnabled"]
3915
+ }
3916
+ )
3857
3917
  );
3858
3918
  var chatEventNormalSendBodySchema = external_exports.preprocess(
3859
3919
  (value) => {
@@ -3865,7 +3925,15 @@ var chatEventNormalSendBodySchema = external_exports.preprocess(
3865
3925
  clientEventId: external_exports.string().uuid().optional(),
3866
3926
  revokesEventId: external_exports.string().min(1).optional(),
3867
3927
  interruptsRunId: external_exports.undefined().optional()
3868
- })
3928
+ }).refine(
3929
+ (body) => {
3930
+ return !(body.cloudBrowserEnabled && body.computerUseHostId);
3931
+ },
3932
+ {
3933
+ message: "Cloud browser and Computer Use cannot both be enabled",
3934
+ path: ["cloudBrowserEnabled"]
3935
+ }
3936
+ )
3869
3937
  );
3870
3938
  var chatThreadsContract = c13.router({
3871
3939
  snapshot: {
@@ -4186,8 +4254,17 @@ var chatThreadComputerUseHostContract = c13.router({
4186
4254
  pathParams: chatThreadIdPathParamsSchema,
4187
4255
  body: external_exports.object({
4188
4256
  computerUseHostId: external_exports.string().uuid().nullable(),
4257
+ cloudBrowserEnabled: external_exports.boolean().optional(),
4189
4258
  eventId: chatThreadEventIdSchema.optional()
4190
- }),
4259
+ }).refine(
4260
+ (body) => {
4261
+ return !(body.cloudBrowserEnabled && body.computerUseHostId);
4262
+ },
4263
+ {
4264
+ message: "Cloud browser and Computer Use cannot both be enabled",
4265
+ path: ["cloudBrowserEnabled"]
4266
+ }
4267
+ ),
4191
4268
  responses: {
4192
4269
  204: c13.noBody(),
4193
4270
  400: apiErrorSchema,
@@ -4219,6 +4296,7 @@ var chatMessagesContract = c13.router({
4219
4296
  structuredPrompt: external_exports.undefined().optional(),
4220
4297
  generationTemplate: external_exports.undefined().optional(),
4221
4298
  computerUseHostId: external_exports.undefined().optional(),
4299
+ cloudBrowserEnabled: external_exports.undefined().optional(),
4222
4300
  hasTextContent: external_exports.undefined().optional(),
4223
4301
  attachFiles: external_exports.undefined().optional(),
4224
4302
  realAgentInPreview: external_exports.undefined().optional(),
@@ -4238,6 +4316,7 @@ var chatMessagesContract = c13.router({
4238
4316
  structuredPrompt: external_exports.undefined().optional(),
4239
4317
  generationTemplate: external_exports.undefined().optional(),
4240
4318
  computerUseHostId: external_exports.undefined().optional(),
4319
+ cloudBrowserEnabled: external_exports.undefined().optional(),
4241
4320
  hasTextContent: external_exports.undefined().optional(),
4242
4321
  attachFiles: external_exports.undefined().optional(),
4243
4322
  realAgentInPreview: external_exports.undefined().optional(),
@@ -8886,6 +8965,22 @@ var browserGetQuerySchema = external_exports.object({
8886
8965
  var browserResponseSchema = external_exports.object({
8887
8966
  browser: zeroBrowserSessionSchema
8888
8967
  });
8968
+ var browserAuthorizationRequestTokenPathParamsSchema = external_exports.object({
8969
+ requestToken: external_exports.string().min(1)
8970
+ });
8971
+ var browserAuthorizationRequestCreateResponseSchema = external_exports.object({
8972
+ authorizationUrl: external_exports.url(),
8973
+ expiresAt: external_exports.iso.datetime()
8974
+ });
8975
+ var browserAuthorizationRequestResponseSchema = external_exports.object({
8976
+ expiresAt: external_exports.iso.datetime(),
8977
+ completedAt: external_exports.iso.datetime().nullable(),
8978
+ cloudBrowserEnabled: external_exports.boolean()
8979
+ });
8980
+ var browserAuthorizationRequestApplyResponseSchema = external_exports.object({
8981
+ ok: external_exports.literal(true),
8982
+ cloudBrowserEnabled: external_exports.literal(true)
8983
+ });
8889
8984
  var browserConnectionResponseSchema = browserResponseSchema.extend({
8890
8985
  cdpUrl: external_exports.url()
8891
8986
  });
@@ -8909,7 +9004,7 @@ var zeroBrowserContract = c27.router({
8909
9004
  201: browserConnectionResponseSchema,
8910
9005
  ...commonErrorResponses
8911
9006
  },
8912
- summary: "Create a new managed browser for the current chat thread using the user's shared profile"
9007
+ summary: "Create a new managed browser for the current chat thread using its isolated profile"
8913
9008
  },
8914
9009
  use: {
8915
9010
  method: "POST",
@@ -8991,12 +9086,72 @@ var zeroBrowserContract = c27.router({
8991
9086
  summary: "Get a managed browser by universal-link ID"
8992
9087
  }
8993
9088
  });
9089
+ var zeroBrowserAuthorizationRequestsContract = c27.router({
9090
+ create: {
9091
+ method: "POST",
9092
+ path: "/api/zero/browser/authorization-requests",
9093
+ headers: authHeadersSchema,
9094
+ body: external_exports.object({}),
9095
+ responses: {
9096
+ 200: browserAuthorizationRequestCreateResponseSchema,
9097
+ 400: apiErrorSchema,
9098
+ 401: apiErrorSchema,
9099
+ 403: apiErrorSchema,
9100
+ 404: apiErrorSchema,
9101
+ 409: apiErrorSchema
9102
+ },
9103
+ summary: "Create a short-lived cloud browser authorization request for the current run"
9104
+ },
9105
+ get: {
9106
+ method: "GET",
9107
+ path: "/api/zero/browser/authorization-requests/:requestToken",
9108
+ headers: authHeadersSchema,
9109
+ pathParams: browserAuthorizationRequestTokenPathParamsSchema,
9110
+ responses: {
9111
+ 200: browserAuthorizationRequestResponseSchema,
9112
+ 401: apiErrorSchema,
9113
+ 403: apiErrorSchema,
9114
+ 404: apiErrorSchema,
9115
+ 410: apiErrorSchema
9116
+ },
9117
+ summary: "Read a cloud browser authorization request"
9118
+ },
9119
+ apply: {
9120
+ method: "POST",
9121
+ path: "/api/zero/browser/authorization-requests/:requestToken/apply",
9122
+ headers: authHeadersSchema,
9123
+ pathParams: browserAuthorizationRequestTokenPathParamsSchema,
9124
+ body: external_exports.object({}),
9125
+ responses: {
9126
+ 200: browserAuthorizationRequestApplyResponseSchema,
9127
+ 400: apiErrorSchema,
9128
+ 401: apiErrorSchema,
9129
+ 403: apiErrorSchema,
9130
+ 404: apiErrorSchema,
9131
+ 410: apiErrorSchema
9132
+ },
9133
+ summary: "Enable the cloud browser for a delegated authorization request"
9134
+ }
9135
+ });
8994
9136
 
8995
9137
  // src/lib/api/domains/zero-browser.ts
8996
9138
  init_esm_shims();
8997
9139
  async function client() {
8998
9140
  return initClient(zeroBrowserContract, await getClientConfig());
8999
9141
  }
9142
+ async function authorizationClient() {
9143
+ return initClient(
9144
+ zeroBrowserAuthorizationRequestsContract,
9145
+ await getClientConfig()
9146
+ );
9147
+ }
9148
+ async function createBrowserAuthorizationRequest() {
9149
+ const result = await (await authorizationClient()).create({ headers: {}, body: {} });
9150
+ if (result.status === 200) {
9151
+ return result.body;
9152
+ }
9153
+ handleError(result, "Failed to create cloud browser authorization request");
9154
+ }
9000
9155
  async function createZeroBrowser(body) {
9001
9156
  const result = await (await client()).create({ headers: {}, body });
9002
9157
  if (result.status === 201) {
@@ -12935,6 +13090,7 @@ export {
12935
13090
  ZERO_BROWSER_DEFAULT_MAX_CREDITS,
12936
13091
  ZERO_BROWSER_MAX_CREDITS,
12937
13092
  zeroBrowserCreateRequestSchema,
13093
+ createBrowserAuthorizationRequest,
12938
13094
  createZeroBrowser,
12939
13095
  useZeroBrowser,
12940
13096
  leaseZeroBrowser,
@@ -12973,4 +13129,4 @@ export {
12973
13129
  getHostedSiteFiles,
12974
13130
  getHostedSiteDeployments
12975
13131
  };
12976
- //# sourceMappingURL=chunk-O6FQT7NZ.js.map
13132
+ //# sourceMappingURL=chunk-6AE53QDK.js.map