@vm0/cli 9.271.5 → 9.272.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 (100) hide show
  1. package/{agent-PPLFC6K2.js → agent-SC5WRMDF.js} +6 -6
  2. package/{banking-FGL27GVX.js → banking-NTBIWU7K.js} +4 -4
  3. package/{browser-X5BOTMIW.js → browser-ZIV5X4NH.js} +11 -27
  4. package/browser-ZIV5X4NH.js.map +1 -0
  5. package/{chat-UOTXIH73.js → chat-IPGMNYCD.js} +5 -5
  6. package/{chunk-ZXNHTXZW.js → chunk-4XEQ2MTO.js} +2 -2
  7. package/{chunk-EE7B2Z5Q.js → chunk-JSGXVJIB.js} +2 -2
  8. package/{chunk-GKGZNZMM.js → chunk-LX7H7CXM.js} +2 -2
  9. package/{chunk-DQWK3UL3.js → chunk-OVJLWRTT.js} +58 -70
  10. package/chunk-OVJLWRTT.js.map +1 -0
  11. package/{chunk-N3SHEZH3.js → chunk-OZKGV3Z6.js} +2 -2
  12. package/{chunk-WTQS24CC.js → chunk-SIJ3FX55.js} +2 -2
  13. package/{chunk-2YHBPFSK.js → chunk-SUDPVSJO.js} +2 -2
  14. package/{chunk-XFOOLGQ6.js → chunk-UVEDAHOL.js} +2 -2
  15. package/{chunk-ZWZQC6ZJ.js → chunk-VNNVQ63L.js} +15 -33
  16. package/{chunk-ZWZQC6ZJ.js.map → chunk-VNNVQ63L.js.map} +1 -1
  17. package/{computer-use-7TR4T5NO.js → computer-use-X4BEMP2M.js} +4 -4
  18. package/{connector-EJC5TQTW.js → connector-VZDGCOEM.js} +7 -7
  19. package/{credit-CDDX5I6M.js → credit-UYNTLDT2.js} +5 -5
  20. package/{developer-support-5IZTHNJO.js → developer-support-LSCEQUBT.js} +4 -4
  21. package/{doctor-ESVENUCP.js → doctor-DDDRWZQ7.js} +5 -5
  22. package/{feishu-GSTSYFE4.js → feishu-66BH2OBG.js} +4 -4
  23. package/{finance-H3PLQJRT.js → finance-CSGEBU6O.js} +4 -4
  24. package/{generate-ZOFYTPJG.js → generate-5SKZSEKT.js} +5 -5
  25. package/{github-YSN3EOJ6.js → github-XNEUPXZZ.js} +4 -4
  26. package/{goal-FGS3THJN.js → goal-62FMM3VU.js} +4 -4
  27. package/{host-EM4ZLN7D.js → host-2CJB6RBR.js} +4 -4
  28. package/{logs-G3OEPOVJ.js → logs-6OESN4NP.js} +5 -5
  29. package/{mail-XNJM2L56.js → mail-7ZUHB4OQ.js} +6 -6
  30. package/{maps-JRJPNGSK.js → maps-DPTOEZT3.js} +4 -4
  31. package/{model-ZOQXJJOU.js → model-6MZMG7DQ.js} +5 -5
  32. package/{model-provider-2EJER7DK.js → model-provider-3YJYRM2H.js} +5 -5
  33. package/{org-NK7IJODB.js → org-JMK6VOFJ.js} +4 -4
  34. package/package.json +1 -1
  35. package/{people-search-UVI4CYDW.js → people-search-RW5P4NXI.js} +4 -4
  36. package/{phone-FUKHZKUF.js → phone-4GZOC3WJ.js} +4 -4
  37. package/{preference-B6MQWB3V.js → preference-BHTIVXCE.js} +4 -4
  38. package/{resource-UU527OUO.js → resource-WCOQUAAZ.js} +4 -4
  39. package/{scrape-WIPWRIVT.js → scrape-XDTLPIQS.js} +4 -4
  40. package/{search-YXQKGBWB.js → search-BKRDMQVF.js} +5 -5
  41. package/{secret-FVCKFAY4.js → secret-JZDCADIX.js} +4 -4
  42. package/{slack-JL7ZB6UC.js → slack-4A2HJ3CS.js} +4 -4
  43. package/{teams-6Q2RH7VB.js → teams-VYH5EHMB.js} +4 -4
  44. package/{telegram-HK2KTESM.js → telegram-XF5TYUCY.js} +4 -4
  45. package/{upgrade-EV2HM7VH.js → upgrade-FETRVCRD.js} +3 -3
  46. package/{variable-SDPC27NW.js → variable-XDI22JNH.js} +4 -4
  47. package/{video-4VJV4BAI.js → video-OHEKUN5O.js} +3 -3
  48. package/{weather-L4EZTJDX.js → weather-2WTKANPA.js} +4 -4
  49. package/{web-UGBODMC7.js → web-SDKFKYWO.js} +4 -4
  50. package/{web-search-BC2VZLQP.js → web-search-VPW7JAN7.js} +4 -4
  51. package/{whoami-XZJTAJ5Y.js → whoami-U65WBAW2.js} +6 -6
  52. package/{workflow-55LDO7CS.js → workflow-KK22LISB.js} +4 -4
  53. package/zero.js +42 -42
  54. package/browser-X5BOTMIW.js.map +0 -1
  55. package/chunk-DQWK3UL3.js.map +0 -1
  56. /package/{agent-PPLFC6K2.js.map → agent-SC5WRMDF.js.map} +0 -0
  57. /package/{banking-FGL27GVX.js.map → banking-NTBIWU7K.js.map} +0 -0
  58. /package/{chat-UOTXIH73.js.map → chat-IPGMNYCD.js.map} +0 -0
  59. /package/{chunk-ZXNHTXZW.js.map → chunk-4XEQ2MTO.js.map} +0 -0
  60. /package/{chunk-EE7B2Z5Q.js.map → chunk-JSGXVJIB.js.map} +0 -0
  61. /package/{chunk-GKGZNZMM.js.map → chunk-LX7H7CXM.js.map} +0 -0
  62. /package/{chunk-N3SHEZH3.js.map → chunk-OZKGV3Z6.js.map} +0 -0
  63. /package/{chunk-WTQS24CC.js.map → chunk-SIJ3FX55.js.map} +0 -0
  64. /package/{chunk-2YHBPFSK.js.map → chunk-SUDPVSJO.js.map} +0 -0
  65. /package/{chunk-XFOOLGQ6.js.map → chunk-UVEDAHOL.js.map} +0 -0
  66. /package/{computer-use-7TR4T5NO.js.map → computer-use-X4BEMP2M.js.map} +0 -0
  67. /package/{connector-EJC5TQTW.js.map → connector-VZDGCOEM.js.map} +0 -0
  68. /package/{credit-CDDX5I6M.js.map → credit-UYNTLDT2.js.map} +0 -0
  69. /package/{developer-support-5IZTHNJO.js.map → developer-support-LSCEQUBT.js.map} +0 -0
  70. /package/{doctor-ESVENUCP.js.map → doctor-DDDRWZQ7.js.map} +0 -0
  71. /package/{feishu-GSTSYFE4.js.map → feishu-66BH2OBG.js.map} +0 -0
  72. /package/{finance-H3PLQJRT.js.map → finance-CSGEBU6O.js.map} +0 -0
  73. /package/{generate-ZOFYTPJG.js.map → generate-5SKZSEKT.js.map} +0 -0
  74. /package/{github-YSN3EOJ6.js.map → github-XNEUPXZZ.js.map} +0 -0
  75. /package/{goal-FGS3THJN.js.map → goal-62FMM3VU.js.map} +0 -0
  76. /package/{host-EM4ZLN7D.js.map → host-2CJB6RBR.js.map} +0 -0
  77. /package/{logs-G3OEPOVJ.js.map → logs-6OESN4NP.js.map} +0 -0
  78. /package/{mail-XNJM2L56.js.map → mail-7ZUHB4OQ.js.map} +0 -0
  79. /package/{maps-JRJPNGSK.js.map → maps-DPTOEZT3.js.map} +0 -0
  80. /package/{model-ZOQXJJOU.js.map → model-6MZMG7DQ.js.map} +0 -0
  81. /package/{model-provider-2EJER7DK.js.map → model-provider-3YJYRM2H.js.map} +0 -0
  82. /package/{org-NK7IJODB.js.map → org-JMK6VOFJ.js.map} +0 -0
  83. /package/{people-search-UVI4CYDW.js.map → people-search-RW5P4NXI.js.map} +0 -0
  84. /package/{phone-FUKHZKUF.js.map → phone-4GZOC3WJ.js.map} +0 -0
  85. /package/{preference-B6MQWB3V.js.map → preference-BHTIVXCE.js.map} +0 -0
  86. /package/{resource-UU527OUO.js.map → resource-WCOQUAAZ.js.map} +0 -0
  87. /package/{scrape-WIPWRIVT.js.map → scrape-XDTLPIQS.js.map} +0 -0
  88. /package/{search-YXQKGBWB.js.map → search-BKRDMQVF.js.map} +0 -0
  89. /package/{secret-FVCKFAY4.js.map → secret-JZDCADIX.js.map} +0 -0
  90. /package/{slack-JL7ZB6UC.js.map → slack-4A2HJ3CS.js.map} +0 -0
  91. /package/{teams-6Q2RH7VB.js.map → teams-VYH5EHMB.js.map} +0 -0
  92. /package/{telegram-HK2KTESM.js.map → telegram-XF5TYUCY.js.map} +0 -0
  93. /package/{upgrade-EV2HM7VH.js.map → upgrade-FETRVCRD.js.map} +0 -0
  94. /package/{variable-SDPC27NW.js.map → variable-XDI22JNH.js.map} +0 -0
  95. /package/{video-4VJV4BAI.js.map → video-OHEKUN5O.js.map} +0 -0
  96. /package/{weather-L4EZTJDX.js.map → weather-2WTKANPA.js.map} +0 -0
  97. /package/{web-UGBODMC7.js.map → web-SDKFKYWO.js.map} +0 -0
  98. /package/{web-search-BC2VZLQP.js.map → web-search-VPW7JAN7.js.map} +0 -0
  99. /package/{whoami-XZJTAJ5Y.js.map → whoami-U65WBAW2.js.map} +0 -0
  100. /package/{workflow-55LDO7CS.js.map → workflow-KK22LISB.js.map} +0 -0
@@ -3,7 +3,7 @@ import { createRequire as __createRequire } from "node:module";
3
3
  const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  policyIcon
6
- } from "./chunk-GKGZNZMM.js";
6
+ } from "./chunk-LX7H7CXM.js";
7
7
  import {
8
8
  isInteractive,
9
9
  promptConfirm
@@ -11,7 +11,7 @@ import {
11
11
  import {
12
12
  connectorPermissionGrantsToFirewallPolicies,
13
13
  loadConnectorPermissionInfos
14
- } from "./chunk-EE7B2Z5Q.js";
14
+ } from "./chunk-JSGXVJIB.js";
15
15
  import {
16
16
  createZeroAgent,
17
17
  deleteZeroAgent,
@@ -23,13 +23,13 @@ import {
23
23
  listZeroUserPermissionGrants,
24
24
  updateZeroAgent,
25
25
  updateZeroAgentInstructions
26
- } from "./chunk-DQWK3UL3.js";
27
- import "./chunk-N3SHEZH3.js";
26
+ } from "./chunk-OVJLWRTT.js";
27
+ import "./chunk-OZKGV3Z6.js";
28
28
  import "./chunk-MA22KQYU.js";
29
29
  import {
30
30
  source_default,
31
31
  withErrorHandler
32
- } from "./chunk-XFOOLGQ6.js";
32
+ } from "./chunk-UVEDAHOL.js";
33
33
  import "./chunk-MD3YWUKO.js";
34
34
  import {
35
35
  Command
@@ -599,4 +599,4 @@ Notes:
599
599
  export {
600
600
  zeroAgentCommand
601
601
  };
602
- //# sourceMappingURL=agent-PPLFC6K2.js.map
602
+ //# sourceMappingURL=agent-SC5WRMDF.js.map
@@ -3,13 +3,13 @@ import { createRequire as __createRequire } from "node:module";
3
3
  const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  callZeroBanking
6
- } from "./chunk-DQWK3UL3.js";
7
- import "./chunk-N3SHEZH3.js";
6
+ } from "./chunk-OVJLWRTT.js";
7
+ import "./chunk-OZKGV3Z6.js";
8
8
  import "./chunk-MA22KQYU.js";
9
9
  import {
10
10
  source_default,
11
11
  withErrorHandler
12
- } from "./chunk-XFOOLGQ6.js";
12
+ } from "./chunk-UVEDAHOL.js";
13
13
  import "./chunk-MD3YWUKO.js";
14
14
  import {
15
15
  Command,
@@ -114,4 +114,4 @@ Notes:
114
114
  export {
115
115
  zeroBankingCommand
116
116
  };
117
- //# sourceMappingURL=banking-FGL27GVX.js.map
117
+ //# sourceMappingURL=banking-NTBIWU7K.js.map
@@ -8,13 +8,13 @@ import {
8
8
  leaseZeroBrowser,
9
9
  useZeroBrowser,
10
10
  zeroBrowserCreateRequestSchema
11
- } from "./chunk-DQWK3UL3.js";
12
- import "./chunk-N3SHEZH3.js";
11
+ } from "./chunk-OVJLWRTT.js";
12
+ import "./chunk-OZKGV3Z6.js";
13
13
  import "./chunk-MA22KQYU.js";
14
14
  import {
15
15
  source_default,
16
16
  withErrorHandler
17
- } from "./chunk-XFOOLGQ6.js";
17
+ } from "./chunk-UVEDAHOL.js";
18
18
  import "./chunk-MD3YWUKO.js";
19
19
  import {
20
20
  Command,
@@ -45,13 +45,7 @@ function parseAgentSession(value) {
45
45
  return value;
46
46
  }
47
47
  function browserJson(browser) {
48
- const {
49
- creditsCharged: _creditsCharged,
50
- grossCredits: _grossCredits,
51
- liveUrl: _liveUrl,
52
- maxCredits: _maxCredits,
53
- ...safeBrowser
54
- } = browser;
48
+ const { liveUrl: _liveUrl, ...safeBrowser } = browser;
55
49
  return safeBrowser;
56
50
  }
57
51
  function connectAgentBrowser(cdpUrl, sessionName) {
@@ -76,7 +70,7 @@ function reclaimNotice(browser) {
76
70
  }
77
71
  function renderBrowser(browser) {
78
72
  console.log(`${browser.name} \xB7 ${browser.status}`);
79
- console.log(source_default.dim(` ID: ${browser.id}`));
73
+ console.log(source_default.dim(` Thread ID: ${browser.threadId}`));
80
74
  console.log(source_default.dim(` ${reclaimNotice(browser)}`));
81
75
  console.log(` ${browser.viewerUrl}`);
82
76
  }
@@ -109,16 +103,6 @@ var useCommand = new Command().name("use").description(
109
103
  await connectResponse(await useZeroBrowser(), options);
110
104
  })
111
105
  );
112
- var resumeCommand = new Command().name("resume").description("Deprecated alias of use").addOption(
113
- new Option(
114
- "--agent-session <name>",
115
- "Named agent-browser session"
116
- ).argParser(parseAgentSession)
117
- ).option("--json", "Print machine-readable output without connection secrets").action(
118
- withErrorHandler(async (options) => {
119
- await connectResponse(await useZeroBrowser(), options);
120
- })
121
- );
122
106
  var leaseCommand = new Command().name("lease").description(
123
107
  `Keep this thread's live browser for another ${ZERO_BROWSER_IDLE_LEASE_MINUTES} minutes`
124
108
  ).option("--json", "Print machine-readable output").action(
@@ -133,7 +117,7 @@ var leaseCommand = new Command().name("lease").description(
133
117
  })
134
118
  );
135
119
  var newCommand = new Command().name("new").description(
136
- "Create another thread browser with the shared user profile and attach it to agent-browser"
120
+ "Create another thread browser with an isolated profile and attach it to agent-browser"
137
121
  ).addOption(new Option("--name <name>", "Browser name").default("browser")).addOption(
138
122
  new Option(
139
123
  "--country <code>",
@@ -168,7 +152,7 @@ var viewCommand = new Command().name("view").description("Print the current thre
168
152
  console.log((await getCurrentZeroBrowser()).viewerUrl);
169
153
  })
170
154
  );
171
- var zeroBrowserCommand = new Command().name("browser").description("Use a managed remote browser through agent-browser").addCommand(useCommand).addCommand(leaseCommand).addCommand(resumeCommand).addCommand(newCommand).addCommand(statusCommand).addCommand(viewCommand).addHelpText(
155
+ var zeroBrowserCommand = new Command().name("browser").description("Use a managed remote browser through agent-browser").addCommand(useCommand).addCommand(leaseCommand).addCommand(newCommand).addCommand(statusCommand).addCommand(viewCommand).addHelpText(
172
156
  "after",
173
157
  `
174
158
  Examples:
@@ -181,12 +165,12 @@ Examples:
181
165
  Notes:
182
166
  - The browser outlives this run; the user can keep working in it from the viewer link
183
167
  - Zero reclaims it after ${ZERO_BROWSER_IDLE_LEASE_MINUTES} idle minutes
184
- - \`zero browser use\` restores a reclaimed browser's login profile, not its old tabs
168
+ - \`zero browser use\` restores a reclaimed browser's login profile and reopens saved tab URLs when possible
185
169
  - Browser Use credentials and connection URLs are never printed
186
- - Threads for the same user and organization share one login profile
187
- - Threads can use the shared profile in parallel`
170
+ - Each thread keeps an isolated login profile
171
+ - Threads can run their browsers in parallel`
188
172
  );
189
173
  export {
190
174
  zeroBrowserCommand
191
175
  };
192
- //# sourceMappingURL=browser-X5BOTMIW.js.map
176
+ //# sourceMappingURL=browser-ZIV5X4NH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/zero/browser/index.ts"],"sourcesContent":["import { spawnSync } from \"node:child_process\";\n\nimport chalk from \"chalk\";\nimport { Command, InvalidArgumentError, Option } from \"commander\";\nimport {\n ZERO_BROWSER_IDLE_LEASE_MINUTES,\n zeroBrowserCreateRequestSchema,\n type ZeroBrowserSession,\n} from \"@vm0/api-contracts/contracts/zero-browser\";\n\nimport {\n createZeroBrowser,\n getCurrentZeroBrowser,\n leaseZeroBrowser,\n useZeroBrowser,\n} from \"../../../lib/api\";\nimport { withErrorHandler } from \"../../../lib/command\";\n\nconst DEFAULT_AGENT_BROWSER_SESSION = \"zero-browser\";\n\ninterface NewOptions {\n readonly name: string;\n readonly country?: string;\n readonly agentSession?: string;\n readonly json?: boolean;\n}\n\ninterface ConnectionOptions {\n readonly agentSession?: string;\n readonly json?: boolean;\n}\n\ninterface OutputOptions {\n readonly json?: boolean;\n}\n\nfunction parseCountry(value: string): string {\n const normalized = value.trim().toLowerCase();\n if (!/^[a-z]{2}$/u.test(normalized)) {\n throw new InvalidArgumentError(\"country must be a two-letter country code\");\n }\n return normalized;\n}\n\nfunction parseAgentSession(value: string): string {\n if (!/^[a-zA-Z0-9_-]{1,64}$/u.test(value)) {\n throw new InvalidArgumentError(\n \"agent-session must contain only letters, numbers, underscores, or hyphens\",\n );\n }\n return value;\n}\n\nfunction browserJson(\n browser: ZeroBrowserSession,\n): Omit<ZeroBrowserSession, \"liveUrl\"> {\n const { liveUrl: _liveUrl, ...safeBrowser } = browser;\n return safeBrowser;\n}\n\nfunction connectAgentBrowser(cdpUrl: string, sessionName: string): void {\n const result = spawnSync(\n \"agent-browser\",\n [\"--session\", sessionName, \"connect\", cdpUrl],\n { stdio: \"ignore\" },\n );\n if (result.error) {\n throw new Error(\"Could not start agent-browser\", {\n cause: result.error,\n });\n }\n if (result.status !== 0) {\n throw new Error(\n `agent-browser connect exited with status ${result.status ?? \"unknown\"}`,\n );\n }\n}\n\nfunction reclaimNotice(browser: ZeroBrowserSession): string {\n return browser.idleExpiresAt\n ? `Zero reclaims this browser at ${browser.idleExpiresAt} unless it is used or leased again`\n : \"This browser has no live window to reclaim\";\n}\n\nfunction renderBrowser(browser: ZeroBrowserSession): void {\n console.log(`${browser.name} · ${browser.status}`);\n console.log(chalk.dim(` Thread ID: ${browser.threadId}`));\n console.log(chalk.dim(` ${reclaimNotice(browser)}`));\n console.log(` ${browser.viewerUrl}`);\n}\n\nasync function connectResponse(\n response: {\n readonly browser: ZeroBrowserSession;\n readonly cdpUrl: string;\n },\n options: ConnectionOptions,\n): Promise<void> {\n const sessionName = options.agentSession ?? DEFAULT_AGENT_BROWSER_SESSION;\n connectAgentBrowser(response.cdpUrl, sessionName);\n if (options.json) {\n console.log(\n JSON.stringify({\n browser: browserJson(response.browser),\n agentBrowserSession: sessionName,\n }),\n );\n return;\n }\n console.log(chalk.green(\"✓ Managed browser ready\"));\n console.log(chalk.dim(` agent-browser session: ${sessionName}`));\n console.log(chalk.dim(` ${reclaimNotice(response.browser)}`));\n console.log(`[Open live browser](${response.browser.viewerUrl})`);\n}\n\nconst useCommand = new Command()\n .name(\"use\")\n .description(\n \"Create, reuse, or resume this thread's browser, attach it to agent-browser, and extend its lease\",\n )\n .addOption(\n new Option(\n \"--agent-session <name>\",\n \"Named agent-browser session\",\n ).argParser(parseAgentSession),\n )\n .option(\"--json\", \"Print machine-readable output without connection secrets\")\n .action(\n withErrorHandler(async (options: ConnectionOptions) => {\n await connectResponse(await useZeroBrowser(), options);\n }),\n );\n\nconst leaseCommand = new Command()\n .name(\"lease\")\n .description(\n `Keep this thread's live browser for another ${ZERO_BROWSER_IDLE_LEASE_MINUTES} minutes`,\n )\n .option(\"--json\", \"Print machine-readable output\")\n .action(\n withErrorHandler(async (options: OutputOptions) => {\n const browser = await leaseZeroBrowser();\n if (options.json) {\n console.log(JSON.stringify({ browser: browserJson(browser) }));\n return;\n }\n console.log(chalk.green(\"✓ Managed browser lease extended\"));\n console.log(chalk.dim(` ${reclaimNotice(browser)}`));\n }),\n );\n\nconst newCommand = new Command()\n .name(\"new\")\n .description(\n \"Create another thread browser with an isolated profile and attach it to agent-browser\",\n )\n .addOption(new Option(\"--name <name>\", \"Browser name\").default(\"browser\"))\n .addOption(\n new Option(\n \"--country <code>\",\n \"Residential proxy country; omitted uses lower-cost proxyless egress\",\n ).argParser(parseCountry),\n )\n .addOption(\n new Option(\n \"--agent-session <name>\",\n \"Named agent-browser session\",\n ).argParser(parseAgentSession),\n )\n .option(\"--json\", \"Print machine-readable output without connection secrets\")\n .action(\n withErrorHandler(async (options: NewOptions) => {\n const request = zeroBrowserCreateRequestSchema.parse({\n name: options.name,\n proxyCountryCode: options.country ?? null,\n });\n await connectResponse(await createZeroBrowser(request), options);\n }),\n );\n\nconst statusCommand = new Command()\n .name(\"status\")\n .description(\"Show the current thread browser status\")\n .option(\"--json\", \"Print machine-readable output\")\n .action(\n withErrorHandler(async (options: OutputOptions) => {\n const browser = await getCurrentZeroBrowser();\n if (options.json) {\n console.log(JSON.stringify({ browser: browserJson(browser) }));\n return;\n }\n renderBrowser(browser);\n }),\n );\n\nconst viewCommand = new Command()\n .name(\"view\")\n .description(\"Print the current thread browser's authenticated viewer link\")\n .action(\n withErrorHandler(async () => {\n console.log((await getCurrentZeroBrowser()).viewerUrl);\n }),\n );\n\nexport const zeroBrowserCommand = new Command()\n .name(\"browser\")\n .description(\"Use a managed remote browser through agent-browser\")\n .addCommand(useCommand)\n .addCommand(leaseCommand)\n .addCommand(newCommand)\n .addCommand(statusCommand)\n .addCommand(viewCommand)\n .addHelpText(\n \"after\",\n `\nExamples:\n Open this thread's browser: zero browser use\n Keep it alive: zero browser lease\n Create another browser: zero browser new --name booking --country us\n Use the browser: agent-browser --session zero-browser open https://example.com\n Share live view: zero browser view\n\nNotes:\n - The browser outlives this run; the user can keep working in it from the viewer link\n - Zero reclaims it after ${ZERO_BROWSER_IDLE_LEASE_MINUTES} idle minutes\n - \\`zero browser use\\` restores a reclaimed browser's login profile and reopens saved tab URLs when possible\n - Browser Use credentials and connection URLs are never printed\n - Each thread keeps an isolated login profile\n - Threads can run their browsers in parallel`,\n );\n"],"mappings":"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","names":[]}
@@ -11,7 +11,7 @@ import {
11
11
  } from "./chunk-LN2ATWKS.js";
12
12
  import {
13
13
  formatModelProviderRoute
14
- } from "./chunk-WTQS24CC.js";
14
+ } from "./chunk-SIJ3FX55.js";
15
15
  import {
16
16
  chatThreadEventSchema,
17
17
  chatThreadSnapshotProjectionSchema,
@@ -27,14 +27,14 @@ import {
27
27
  sendZeroChatEvent,
28
28
  updateZeroChatThreadModelSelection,
29
29
  userMessageDocumentSchema
30
- } from "./chunk-DQWK3UL3.js";
31
- import "./chunk-N3SHEZH3.js";
30
+ } from "./chunk-OVJLWRTT.js";
31
+ import "./chunk-OZKGV3Z6.js";
32
32
  import "./chunk-MA22KQYU.js";
33
33
  import {
34
34
  getApiUrl,
35
35
  source_default,
36
36
  withErrorHandler
37
- } from "./chunk-XFOOLGQ6.js";
37
+ } from "./chunk-UVEDAHOL.js";
38
38
  import {
39
39
  decodeZeroTokenPayload
40
40
  } from "./chunk-MD3YWUKO.js";
@@ -1168,4 +1168,4 @@ Examples:
1168
1168
  export {
1169
1169
  zeroChatCommand
1170
1170
  };
1171
- //# sourceMappingURL=chat-UOTXIH73.js.map
1171
+ //# sourceMappingURL=chat-IPGMNYCD.js.map
@@ -5,7 +5,7 @@ import {
5
5
  getZeroAgent,
6
6
  getZeroAgentCustomConnectors,
7
7
  getZeroAgentUserConnectors
8
- } from "./chunk-DQWK3UL3.js";
8
+ } from "./chunk-OVJLWRTT.js";
9
9
  import {
10
10
  init_esm_shims
11
11
  } from "./chunk-GPYQ24DR.js";
@@ -355,4 +355,4 @@ export {
355
355
  resolveAgentContext,
356
356
  resolveConnectorDiscoveryAgentContext
357
357
  };
358
- //# sourceMappingURL=chunk-ZXNHTXZW.js.map
358
+ //# sourceMappingURL=chunk-4XEQ2MTO.js.map
@@ -4,7 +4,7 @@ const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  UNKNOWN_PERMISSION_GRANT,
6
6
  getZeroConnectorCatalogPermissions
7
- } from "./chunk-DQWK3UL3.js";
7
+ } from "./chunk-OVJLWRTT.js";
8
8
  import {
9
9
  init_esm_shims
10
10
  } from "./chunk-GPYQ24DR.js";
@@ -216,4 +216,4 @@ export {
216
216
  connectorPermissionGrantsToFirewallPolicies,
217
217
  hasConnectorFirewallMetadataPermission
218
218
  };
219
- //# sourceMappingURL=chunk-EE7B2Z5Q.js.map
219
+ //# sourceMappingURL=chunk-JSGXVJIB.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
  source_default
6
- } from "./chunk-XFOOLGQ6.js";
6
+ } from "./chunk-UVEDAHOL.js";
7
7
  import {
8
8
  init_esm_shims
9
9
  } from "./chunk-GPYQ24DR.js";
@@ -19,4 +19,4 @@ function policyIcon(policy) {
19
19
  export {
20
20
  policyIcon
21
21
  };
22
- //# sourceMappingURL=chunk-GKGZNZMM.js.map
22
+ //# sourceMappingURL=chunk-LX7H7CXM.js.map
@@ -21,7 +21,7 @@ import {
21
21
  updateOrgModelPoliciesRequestSchema,
22
22
  upsertModelProviderRequestSchema,
23
23
  upsertModelProviderResponseSchema
24
- } from "./chunk-XFOOLGQ6.js";
24
+ } from "./chunk-UVEDAHOL.js";
25
25
  import {
26
26
  __commonJS,
27
27
  __esm,
@@ -2020,6 +2020,8 @@ var CHAT_EVENT_TYPES = [
2020
2020
  "run.cancelled",
2021
2021
  "control.interrupt",
2022
2022
  "control.revoke",
2023
+ "browser.started",
2024
+ "browser.stopped",
2023
2025
  "goal.changed",
2024
2026
  "usage.recorded"
2025
2027
  ];
@@ -2414,7 +2416,6 @@ var triggerSourceSchema = external_exports.enum([
2414
2416
  "telegram",
2415
2417
  "agentphone",
2416
2418
  "github",
2417
- "cli",
2418
2419
  "test",
2419
2420
  "agent",
2420
2421
  "webhook",
@@ -2592,7 +2593,7 @@ var unifiedRunRequestSchema = external_exports.object({
2592
2593
  tools: external_exports.array(claudeToolEntrySchema).optional(),
2593
2594
  // Settings JSON to pass to Claude CLI (passed as --settings)
2594
2595
  settings: external_exports.string().optional(),
2595
- // How the run was triggered (defaults to "cli" on the server if not provided)
2596
+ // How the run was triggered (defaults to "web" on the server if not provided)
2596
2597
  triggerSource: triggerSourceSchema.optional(),
2597
2598
  // Per-permission policies (e.g., { "github": { "actions:read": "allow" } })
2598
2599
  permissionPolicies: firewallPoliciesSchema.optional(),
@@ -2903,7 +2904,7 @@ var modelCatalogPrefetchRoleSchema = external_exports.enum([
2903
2904
  ]);
2904
2905
  var modelCatalogCacheMillisecondsSchema = external_exports.number().int().min(0).max(2147483647);
2905
2906
  var modelCatalogCacheEvictionCountSchema = external_exports.number().int().min(0).max(32);
2906
- var networkLogEntryInputSchema = external_exports.object({
2907
+ var networkLogEntrySchema = external_exports.object({
2907
2908
  timestamp: external_exports.string(),
2908
2909
  type: external_exports.string().optional(),
2909
2910
  action: networkLogActionSchema.optional(),
@@ -2954,8 +2955,6 @@ var networkLogEntryInputSchema = external_exports.object({
2954
2955
  upstream_binding_client_binding_endpoint_match: external_exports.boolean().optional(),
2955
2956
  upstream_binding_client_binding_hosts: external_exports.string().optional(),
2956
2957
  connector_diagnostic_slug: external_exports.string().optional(),
2957
- // TODO(#23838): Remove after the diagnostic compatibility window.
2958
- connector_diagnostic_type: external_exports.string().optional(),
2959
2958
  connector_diagnostic_reason: external_exports.string().optional(),
2960
2959
  connector_diagnostic_env_names: external_exports.array(external_exports.string()).optional(),
2961
2960
  connector_diagnostic_base: external_exports.string().optional(),
@@ -2977,25 +2976,6 @@ var networkLogEntryInputSchema = external_exports.object({
2977
2976
  response_body_encoding: external_exports.enum(["utf-8", "base64", "binary"]).optional(),
2978
2977
  response_body_truncated: external_exports.boolean().optional()
2979
2978
  });
2980
- var networkLogEntrySchema = networkLogEntryInputSchema.superRefine((entry, context) => {
2981
- if (entry.connector_diagnostic_slug !== void 0 && entry.connector_diagnostic_type !== void 0 && entry.connector_diagnostic_slug !== entry.connector_diagnostic_type) {
2982
- context.addIssue({
2983
- code: "custom",
2984
- path: ["connector_diagnostic_slug"],
2985
- message: "connector_diagnostic_slug and connector_diagnostic_type must match"
2986
- });
2987
- }
2988
- }).overwrite((entry) => {
2989
- const connectorDiagnosticSlug = entry.connector_diagnostic_slug ?? entry.connector_diagnostic_type;
2990
- if (connectorDiagnosticSlug === void 0) {
2991
- return entry;
2992
- }
2993
- return {
2994
- ...entry,
2995
- connector_diagnostic_slug: connectorDiagnosticSlug,
2996
- connector_diagnostic_type: connectorDiagnosticSlug
2997
- };
2998
- });
2999
2979
  var networkLogsResponseSchema = external_exports.object({
3000
2980
  networkLogs: external_exports.array(networkLogEntrySchema),
3001
2981
  hasMore: external_exports.boolean(),
@@ -3687,6 +3667,14 @@ var controlRevokeEventSchema = chatEventBaseSchema.extend({
3687
3667
  content: external_exports.null(),
3688
3668
  revokesEventId: external_exports.string()
3689
3669
  }).strict();
3670
+ var browserStartedEventSchema = chatEventBaseSchema.extend({
3671
+ eventType: external_exports.literal("browser.started"),
3672
+ content: external_exports.null()
3673
+ }).strict();
3674
+ var browserStoppedEventSchema = chatEventBaseSchema.extend({
3675
+ eventType: external_exports.literal("browser.stopped"),
3676
+ content: external_exports.null()
3677
+ }).strict();
3690
3678
  var goalChangedEventSchema = chatEventBaseSchema.extend({
3691
3679
  eventType: external_exports.literal("goal.changed"),
3692
3680
  content: external_exports.null(),
@@ -3714,6 +3702,8 @@ var chatEventSchema = external_exports.discriminatedUnion("eventType", [
3714
3702
  runCancelledEventSchema,
3715
3703
  controlInterruptEventSchema,
3716
3704
  controlRevokeEventSchema,
3705
+ browserStartedEventSchema,
3706
+ browserStoppedEventSchema,
3717
3707
  goalChangedEventSchema,
3718
3708
  usageRecordedEventSchema
3719
3709
  ]);
@@ -9090,7 +9080,8 @@ var zeroBrowserSuspensionReasonSchema = external_exports.enum([
9090
9080
  // Historical reason kept for rows written before browser billing was removed.
9091
9081
  "budget",
9092
9082
  "provider",
9093
- "reconcile"
9083
+ "reconcile",
9084
+ "user"
9094
9085
  ]);
9095
9086
  var zeroBrowserScreenSchema = external_exports.object({
9096
9087
  width: external_exports.literal(ZERO_BROWSER_SCREEN_WIDTH),
@@ -9098,21 +9089,14 @@ var zeroBrowserScreenSchema = external_exports.object({
9098
9089
  resizable: external_exports.boolean()
9099
9090
  });
9100
9091
  var zeroBrowserSessionSchema = external_exports.object({
9101
- id: external_exports.uuid(),
9092
+ threadId: external_exports.uuid(),
9102
9093
  name: external_exports.string().min(1).max(64),
9103
9094
  status: zeroBrowserStatusSchema,
9104
9095
  viewerUrl: external_exports.url(),
9105
9096
  liveUrl: external_exports.url().nullable(),
9106
9097
  proxyCountryCode: external_exports.string().length(2).nullable(),
9107
9098
  timeoutMinutes: external_exports.number().int().positive(),
9108
- // Deprecated compatibility fields for clients deployed before browser
9109
- // billing moved to organization concurrency. Remove after that client
9110
- // version has drained.
9111
- maxCredits: external_exports.number().int().positive(),
9112
- grossCredits: external_exports.number().int().nonnegative(),
9113
- creditsCharged: external_exports.number().int().nonnegative(),
9114
- // Optional so a newly deployed frontend remains compatible with the
9115
- // previous API during rollout. New APIs include it for live instances.
9099
+ // Only live provider instances have persisted window dimensions.
9116
9100
  screen: zeroBrowserScreenSchema.optional(),
9117
9101
  // When Zero reclaims the live provider instance unless somebody leases it
9118
9102
  // again. Null once no provider instance is running.
@@ -9121,22 +9105,25 @@ var zeroBrowserSessionSchema = external_exports.object({
9121
9105
  suspensionReason: zeroBrowserSuspensionReasonSchema.nullable(),
9122
9106
  createdAt: external_exports.iso.datetime(),
9123
9107
  updatedAt: external_exports.iso.datetime()
9124
- });
9108
+ }).strict();
9125
9109
  var zeroBrowserCreateRequestSchema = external_exports.object({
9126
9110
  name: external_exports.string().trim().min(1).max(64).default("browser"),
9127
9111
  proxyCountryCode: external_exports.string().trim().length(2).transform((value) => {
9128
9112
  return value.toLowerCase();
9129
9113
  }).nullable().default(null)
9130
- });
9131
- var browserIdParamsSchema = external_exports.object({
9132
- browserId: external_exports.uuid()
9133
- });
9134
- var browserGetQuerySchema = external_exports.object({
9135
- chatThreadId: external_exports.uuid().optional()
9114
+ }).strict();
9115
+ var browserThreadParamsSchema = external_exports.object({
9116
+ threadId: external_exports.uuid()
9136
9117
  });
9137
9118
  var browserResponseSchema = external_exports.object({
9138
9119
  browser: zeroBrowserSessionSchema
9139
9120
  });
9121
+ var browserLifecycleRequestSchema = external_exports.object({
9122
+ eventId: external_exports.uuid()
9123
+ });
9124
+ var browserMutationResponseSchema = browserResponseSchema.extend({
9125
+ lifecycleEventId: external_exports.uuid().nullable()
9126
+ });
9140
9127
  var browserResizeRequestSchema = external_exports.object({
9141
9128
  aspectRatio: external_exports.number().positive().finite()
9142
9129
  });
@@ -9157,7 +9144,8 @@ var browserAuthorizationRequestApplyResponseSchema = external_exports.object({
9157
9144
  cloudBrowserEnabled: external_exports.literal(true)
9158
9145
  });
9159
9146
  var browserConnectionResponseSchema = browserResponseSchema.extend({
9160
- cdpUrl: external_exports.url()
9147
+ cdpUrl: external_exports.url(),
9148
+ lifecycleEventId: external_exports.uuid().nullable()
9161
9149
  });
9162
9150
  var commonErrorResponses = {
9163
9151
  400: apiErrorSchema,
@@ -9191,57 +9179,58 @@ var zeroBrowserContract = c27.router({
9191
9179
  },
9192
9180
  summary: "Create, reuse, or resume the current chat thread's managed browser and extend its idle lease"
9193
9181
  },
9194
- resume: {
9182
+ lease: {
9195
9183
  method: "POST",
9196
- path: "/api/zero/browsers/resume",
9184
+ path: "/api/zero/browsers/lease",
9197
9185
  headers: authHeadersSchema,
9198
9186
  body: external_exports.object({}),
9199
9187
  responses: {
9200
- 200: browserConnectionResponseSchema,
9188
+ 200: browserResponseSchema,
9201
9189
  ...commonErrorResponses
9202
9190
  },
9203
- summary: "Compatibility alias of use for CLI versions that predate zero browser use"
9191
+ summary: "Extend the idle lease of the current chat thread's live browser"
9204
9192
  },
9205
- lease: {
9193
+ leaseByThread: {
9206
9194
  method: "POST",
9207
- path: "/api/zero/browsers/lease",
9195
+ path: "/api/zero/chat-threads/:threadId/browser/lease",
9208
9196
  headers: authHeadersSchema,
9197
+ pathParams: browserThreadParamsSchema,
9209
9198
  body: external_exports.object({}),
9210
9199
  responses: {
9211
9200
  200: browserResponseSchema,
9212
9201
  ...commonErrorResponses
9213
9202
  },
9214
- summary: "Extend the idle lease of the current chat thread's live browser"
9203
+ summary: "Extend the idle lease of a live browser from its viewer"
9215
9204
  },
9216
- leaseById: {
9205
+ start: {
9217
9206
  method: "POST",
9218
- path: "/api/zero/browsers/:browserId/lease",
9207
+ path: "/api/zero/chat-threads/:threadId/browser/start",
9219
9208
  headers: authHeadersSchema,
9220
- pathParams: browserIdParamsSchema,
9221
- body: external_exports.object({}),
9209
+ pathParams: browserThreadParamsSchema,
9210
+ body: browserLifecycleRequestSchema,
9222
9211
  responses: {
9223
- 200: browserResponseSchema,
9212
+ 200: browserMutationResponseSchema,
9224
9213
  ...commonErrorResponses
9225
9214
  },
9226
- summary: "Extend the idle lease of a live browser from its viewer"
9215
+ summary: "Create, reuse, or resume a chat thread's managed browser"
9227
9216
  },
9228
- resumeById: {
9217
+ stop: {
9229
9218
  method: "POST",
9230
- path: "/api/zero/browsers/:browserId/resume",
9219
+ path: "/api/zero/chat-threads/:threadId/browser/stop",
9231
9220
  headers: authHeadersSchema,
9232
- pathParams: browserIdParamsSchema,
9233
- body: external_exports.object({}),
9221
+ pathParams: browserThreadParamsSchema,
9222
+ body: browserLifecycleRequestSchema,
9234
9223
  responses: {
9235
- 200: browserResponseSchema,
9224
+ 200: browserMutationResponseSchema,
9236
9225
  ...commonErrorResponses
9237
9226
  },
9238
- summary: "Resume a suspended browser from its viewer"
9227
+ summary: "Stop a chat thread's live managed browser"
9239
9228
  },
9240
- resizeById: {
9229
+ resizeByThread: {
9241
9230
  method: "POST",
9242
- path: "/api/zero/browsers/:browserId/resize",
9231
+ path: "/api/zero/chat-threads/:threadId/browser/resize",
9243
9232
  headers: authHeadersSchema,
9244
- pathParams: browserIdParamsSchema,
9233
+ pathParams: browserThreadParamsSchema,
9245
9234
  body: browserResizeRequestSchema,
9246
9235
  responses: {
9247
9236
  200: browserResponseSchema,
@@ -9261,15 +9250,14 @@ var zeroBrowserContract = c27.router({
9261
9250
  },
9262
9251
  get: {
9263
9252
  method: "GET",
9264
- path: "/api/zero/browsers/:browserId",
9253
+ path: "/api/zero/chat-threads/:threadId/browser",
9265
9254
  headers: authHeadersSchema,
9266
- pathParams: browserIdParamsSchema,
9267
- query: browserGetQuerySchema,
9255
+ pathParams: browserThreadParamsSchema,
9268
9256
  responses: {
9269
9257
  200: browserResponseSchema,
9270
9258
  ...commonErrorResponses
9271
9259
  },
9272
- summary: "Get a managed browser by universal-link ID"
9260
+ summary: "Get a chat thread's managed browser"
9273
9261
  }
9274
9262
  });
9275
9263
  var zeroBrowserAuthorizationRequestsContract = c27.router({
@@ -13452,4 +13440,4 @@ export {
13452
13440
  getHostedSiteFiles,
13453
13441
  getHostedSiteDeployments
13454
13442
  };
13455
- //# sourceMappingURL=chunk-DQWK3UL3.js.map
13443
+ //# sourceMappingURL=chunk-OVJLWRTT.js.map