@vm0/cli 9.265.0 → 9.266.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 (101) hide show
  1. package/{agent-Z2FIHSGT.js → agent-WJBV6XSO.js} +6 -6
  2. package/{banking-LGUZ5VNG.js → banking-MZPWKMV2.js} +4 -4
  3. package/{browser-YLIWZZ6D.js → browser-F4J54ATA.js} +13 -33
  4. package/browser-F4J54ATA.js.map +1 -0
  5. package/{chat-EI7BN74G.js → chat-OTLB5LYG.js} +5 -5
  6. package/{chunk-TK3OYU57.js → chunk-4TODUWC7.js} +2 -2
  7. package/{chunk-IW4TR3DM.js → chunk-GHMW55CQ.js} +2 -2
  8. package/{chunk-7ZIFGPRL.js → chunk-HHVHHEJ2.js} +2 -2
  9. package/{chunk-VK5XI46M.js → chunk-JQDFMS4A.js} +2 -2
  10. package/{chunk-YL2ISI5E.js → chunk-M75EI7GB.js} +4 -4
  11. package/{chunk-HYSVCVEH.js → chunk-MIZEZBG6.js} +2 -2
  12. package/{chunk-HCF2BKID.js → chunk-SP2S4QWX.js} +2 -2
  13. package/{chunk-SZUNGLD5.js → chunk-UP5UOL6Z.js} +8 -15
  14. package/chunk-UP5UOL6Z.js.map +1 -0
  15. package/{chunk-K36BESR5.js → chunk-WTB4K3Z6.js} +104 -34
  16. package/chunk-WTB4K3Z6.js.map +1 -0
  17. package/{computer-use-MEF72YRU.js → computer-use-GMGAYWFF.js} +4 -4
  18. package/{connector-ADZC3UUD.js → connector-SPL5EGNH.js} +7 -7
  19. package/{credit-XP5O4KDG.js → credit-ANE66MN5.js} +5 -5
  20. package/{developer-support-EEYI4ZIM.js → developer-support-WNWRPWM5.js} +4 -4
  21. package/{doctor-6IKUKRIN.js → doctor-YEBTJKXS.js} +5 -5
  22. package/{feishu-TMG2N5KK.js → feishu-X6HV3Z75.js} +4 -4
  23. package/{finance-O5MHGWTZ.js → finance-3SLPN5ZX.js} +4 -4
  24. package/{generate-AUPFFQLI.js → generate-VK57QZTH.js} +5 -5
  25. package/{github-CRHENPJV.js → github-KHQGH7UJ.js} +4 -4
  26. package/{goal-MUYVQVAB.js → goal-NP7LA4H5.js} +4 -4
  27. package/{host-V7DG7VT2.js → host-JSCRRZ3J.js} +4 -4
  28. package/{logs-U5AKPOEH.js → logs-AEIWXRS6.js} +5 -5
  29. package/{mail-DBQGZ5QR.js → mail-CMOTFJRW.js} +6 -6
  30. package/{maps-AWH5HB4Y.js → maps-WAWCF444.js} +4 -4
  31. package/{model-D55WMDT2.js → model-O3H5L3R4.js} +5 -5
  32. package/{model-provider-ZGDNIWDF.js → model-provider-NWOG4WDP.js} +5 -5
  33. package/{org-EQUTXVUP.js → org-H2KYZZHL.js} +4 -4
  34. package/package.json +1 -1
  35. package/{people-search-YAEDYHCN.js → people-search-OYHCUQQ5.js} +4 -4
  36. package/{phone-HCJIFH4N.js → phone-XDTMDNGG.js} +4 -4
  37. package/{preference-RNU6XCSS.js → preference-JJG4RC3V.js} +4 -4
  38. package/{resource-OPBBCIDG.js → resource-QCPLW3RQ.js} +4 -4
  39. package/{scrape-5NOKI766.js → scrape-NX44VHU6.js} +4 -4
  40. package/{search-OJF44IQ7.js → search-XMML4Q6A.js} +5 -5
  41. package/{secret-Q6N2AQ7A.js → secret-RYOMS4YU.js} +4 -4
  42. package/{slack-KHAA7PN5.js → slack-WQ7G3WH7.js} +4 -4
  43. package/{teams-C2JNGM46.js → teams-XL2GYS3H.js} +4 -4
  44. package/{telegram-NGPTNBBI.js → telegram-E3ILARSU.js} +4 -4
  45. package/{upgrade-75V657YJ.js → upgrade-B2QEWNOR.js} +3 -3
  46. package/{variable-3DW76KDG.js → variable-I5TBQURO.js} +4 -4
  47. package/{video-V2EXAJCM.js → video-B644TGB2.js} +3 -3
  48. package/{weather-KBKC4WV7.js → weather-ZFYVIQQC.js} +4 -4
  49. package/{web-HRDFN5K6.js → web-6YP4UZZS.js} +4 -4
  50. package/{web-search-OWKG5UTV.js → web-search-3ZBOMLOF.js} +4 -4
  51. package/{whoami-WDMQPK2D.js → whoami-RCMC3HFF.js} +6 -6
  52. package/{workflow-3I3UWWQE.js → workflow-GZ66ZARR.js} +4 -4
  53. package/zero.js +42 -42
  54. package/browser-YLIWZZ6D.js.map +0 -1
  55. package/chunk-K36BESR5.js.map +0 -1
  56. package/chunk-SZUNGLD5.js.map +0 -1
  57. /package/{agent-Z2FIHSGT.js.map → agent-WJBV6XSO.js.map} +0 -0
  58. /package/{banking-LGUZ5VNG.js.map → banking-MZPWKMV2.js.map} +0 -0
  59. /package/{chat-EI7BN74G.js.map → chat-OTLB5LYG.js.map} +0 -0
  60. /package/{chunk-TK3OYU57.js.map → chunk-4TODUWC7.js.map} +0 -0
  61. /package/{chunk-IW4TR3DM.js.map → chunk-GHMW55CQ.js.map} +0 -0
  62. /package/{chunk-7ZIFGPRL.js.map → chunk-HHVHHEJ2.js.map} +0 -0
  63. /package/{chunk-VK5XI46M.js.map → chunk-JQDFMS4A.js.map} +0 -0
  64. /package/{chunk-YL2ISI5E.js.map → chunk-M75EI7GB.js.map} +0 -0
  65. /package/{chunk-HYSVCVEH.js.map → chunk-MIZEZBG6.js.map} +0 -0
  66. /package/{chunk-HCF2BKID.js.map → chunk-SP2S4QWX.js.map} +0 -0
  67. /package/{computer-use-MEF72YRU.js.map → computer-use-GMGAYWFF.js.map} +0 -0
  68. /package/{connector-ADZC3UUD.js.map → connector-SPL5EGNH.js.map} +0 -0
  69. /package/{credit-XP5O4KDG.js.map → credit-ANE66MN5.js.map} +0 -0
  70. /package/{developer-support-EEYI4ZIM.js.map → developer-support-WNWRPWM5.js.map} +0 -0
  71. /package/{doctor-6IKUKRIN.js.map → doctor-YEBTJKXS.js.map} +0 -0
  72. /package/{feishu-TMG2N5KK.js.map → feishu-X6HV3Z75.js.map} +0 -0
  73. /package/{finance-O5MHGWTZ.js.map → finance-3SLPN5ZX.js.map} +0 -0
  74. /package/{generate-AUPFFQLI.js.map → generate-VK57QZTH.js.map} +0 -0
  75. /package/{github-CRHENPJV.js.map → github-KHQGH7UJ.js.map} +0 -0
  76. /package/{goal-MUYVQVAB.js.map → goal-NP7LA4H5.js.map} +0 -0
  77. /package/{host-V7DG7VT2.js.map → host-JSCRRZ3J.js.map} +0 -0
  78. /package/{logs-U5AKPOEH.js.map → logs-AEIWXRS6.js.map} +0 -0
  79. /package/{mail-DBQGZ5QR.js.map → mail-CMOTFJRW.js.map} +0 -0
  80. /package/{maps-AWH5HB4Y.js.map → maps-WAWCF444.js.map} +0 -0
  81. /package/{model-D55WMDT2.js.map → model-O3H5L3R4.js.map} +0 -0
  82. /package/{model-provider-ZGDNIWDF.js.map → model-provider-NWOG4WDP.js.map} +0 -0
  83. /package/{org-EQUTXVUP.js.map → org-H2KYZZHL.js.map} +0 -0
  84. /package/{people-search-YAEDYHCN.js.map → people-search-OYHCUQQ5.js.map} +0 -0
  85. /package/{phone-HCJIFH4N.js.map → phone-XDTMDNGG.js.map} +0 -0
  86. /package/{preference-RNU6XCSS.js.map → preference-JJG4RC3V.js.map} +0 -0
  87. /package/{resource-OPBBCIDG.js.map → resource-QCPLW3RQ.js.map} +0 -0
  88. /package/{scrape-5NOKI766.js.map → scrape-NX44VHU6.js.map} +0 -0
  89. /package/{search-OJF44IQ7.js.map → search-XMML4Q6A.js.map} +0 -0
  90. /package/{secret-Q6N2AQ7A.js.map → secret-RYOMS4YU.js.map} +0 -0
  91. /package/{slack-KHAA7PN5.js.map → slack-WQ7G3WH7.js.map} +0 -0
  92. /package/{teams-C2JNGM46.js.map → teams-XL2GYS3H.js.map} +0 -0
  93. /package/{telegram-NGPTNBBI.js.map → telegram-E3ILARSU.js.map} +0 -0
  94. /package/{upgrade-75V657YJ.js.map → upgrade-B2QEWNOR.js.map} +0 -0
  95. /package/{variable-3DW76KDG.js.map → variable-I5TBQURO.js.map} +0 -0
  96. /package/{video-V2EXAJCM.js.map → video-B644TGB2.js.map} +0 -0
  97. /package/{weather-KBKC4WV7.js.map → weather-ZFYVIQQC.js.map} +0 -0
  98. /package/{web-HRDFN5K6.js.map → web-6YP4UZZS.js.map} +0 -0
  99. /package/{web-search-OWKG5UTV.js.map → web-search-3ZBOMLOF.js.map} +0 -0
  100. /package/{whoami-WDMQPK2D.js.map → whoami-RCMC3HFF.js.map} +0 -0
  101. /package/{workflow-3I3UWWQE.js.map → workflow-GZ66ZARR.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-YL2ISI5E.js";
7
+ } from "./chunk-M75EI7GB.js";
8
8
  import {
9
9
  isInteractive,
10
10
  promptConfirm
11
11
  } from "./chunk-NU6ECB2E.js";
12
12
  import {
13
13
  permissionGrantsToFirewallPolicies
14
- } from "./chunk-HCF2BKID.js";
14
+ } from "./chunk-SP2S4QWX.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-K36BESR5.js";
27
- import "./chunk-7ZIFGPRL.js";
26
+ } from "./chunk-WTB4K3Z6.js";
27
+ import "./chunk-HHVHHEJ2.js";
28
28
  import "./chunk-MA22KQYU.js";
29
29
  import {
30
30
  source_default,
31
31
  withErrorHandler
32
- } from "./chunk-HYSVCVEH.js";
32
+ } from "./chunk-MIZEZBG6.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-Z2FIHSGT.js.map
602
+ //# sourceMappingURL=agent-WJBV6XSO.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-K36BESR5.js";
7
- import "./chunk-7ZIFGPRL.js";
6
+ } from "./chunk-WTB4K3Z6.js";
7
+ import "./chunk-HHVHHEJ2.js";
8
8
  import "./chunk-MA22KQYU.js";
9
9
  import {
10
10
  source_default,
11
11
  withErrorHandler
12
- } from "./chunk-HYSVCVEH.js";
12
+ } from "./chunk-MIZEZBG6.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-LGUZ5VNG.js.map
117
+ //# sourceMappingURL=banking-MZPWKMV2.js.map
@@ -2,21 +2,19 @@
2
2
  import { createRequire as __createRequire } from "node:module";
3
3
  const require = __createRequire(import.meta.url);
4
4
  import {
5
- ZERO_BROWSER_DEFAULT_MAX_CREDITS,
6
5
  ZERO_BROWSER_IDLE_LEASE_MINUTES,
7
- ZERO_BROWSER_MAX_CREDITS,
8
6
  createZeroBrowser,
9
7
  getCurrentZeroBrowser,
10
8
  leaseZeroBrowser,
11
9
  useZeroBrowser,
12
10
  zeroBrowserCreateRequestSchema
13
- } from "./chunk-K36BESR5.js";
14
- import "./chunk-7ZIFGPRL.js";
11
+ } from "./chunk-WTB4K3Z6.js";
12
+ import "./chunk-HHVHHEJ2.js";
15
13
  import "./chunk-MA22KQYU.js";
16
14
  import {
17
15
  source_default,
18
16
  withErrorHandler
19
- } from "./chunk-HYSVCVEH.js";
17
+ } from "./chunk-MIZEZBG6.js";
20
18
  import "./chunk-MD3YWUKO.js";
21
19
  import {
22
20
  Command,
@@ -31,22 +29,6 @@ import {
31
29
  init_esm_shims();
32
30
  import { spawnSync } from "child_process";
33
31
  var DEFAULT_AGENT_BROWSER_SESSION = "zero-browser";
34
- function positiveInteger(label, maximum) {
35
- return (value) => {
36
- if (!/^\d+$/u.test(value)) {
37
- throw new InvalidArgumentError(
38
- `${label} must be an integer from 1 to ${maximum}`
39
- );
40
- }
41
- const parsed = Number(value);
42
- if (parsed < 1 || parsed > maximum) {
43
- throw new InvalidArgumentError(
44
- `${label} must be an integer from 1 to ${maximum}`
45
- );
46
- }
47
- return parsed;
48
- };
49
- }
50
32
  function parseCountry(value) {
51
33
  const normalized = value.trim().toLowerCase();
52
34
  if (!/^[a-z]{2}$/u.test(normalized)) {
@@ -63,7 +45,13 @@ function parseAgentSession(value) {
63
45
  return value;
64
46
  }
65
47
  function browserJson(browser) {
66
- const { liveUrl: _liveUrl, ...safeBrowser } = browser;
48
+ const {
49
+ creditsCharged: _creditsCharged,
50
+ grossCredits: _grossCredits,
51
+ liveUrl: _liveUrl,
52
+ maxCredits: _maxCredits,
53
+ ...safeBrowser
54
+ } = browser;
67
55
  return safeBrowser;
68
56
  }
69
57
  function connectAgentBrowser(cdpUrl, sessionName) {
@@ -89,11 +77,6 @@ function reclaimNotice(browser) {
89
77
  function renderBrowser(browser) {
90
78
  console.log(`${browser.name} \xB7 ${browser.status}`);
91
79
  console.log(source_default.dim(` ID: ${browser.id}`));
92
- console.log(
93
- source_default.dim(
94
- ` Credits: ${browser.creditsCharged} charged / ${browser.maxCredits} budget`
95
- )
96
- );
97
80
  console.log(source_default.dim(` ${reclaimNotice(browser)}`));
98
81
  console.log(` ${browser.viewerUrl}`);
99
82
  }
@@ -156,8 +139,6 @@ var newCommand = new Command().name("new").description(
156
139
  "--country <code>",
157
140
  "Residential proxy country; omitted uses lower-cost proxyless egress"
158
141
  ).argParser(parseCountry)
159
- ).addOption(
160
- new Option("--max-credits <credits>", "Logical browser credit budget").default(ZERO_BROWSER_DEFAULT_MAX_CREDITS).argParser(positiveInteger("max-credits", ZERO_BROWSER_MAX_CREDITS))
161
142
  ).addOption(
162
143
  new Option(
163
144
  "--agent-session <name>",
@@ -167,8 +148,7 @@ var newCommand = new Command().name("new").description(
167
148
  withErrorHandler(async (options) => {
168
149
  const request = zeroBrowserCreateRequestSchema.parse({
169
150
  name: options.name,
170
- proxyCountryCode: options.country ?? null,
171
- maxCredits: options.maxCredits
151
+ proxyCountryCode: options.country ?? null
172
152
  });
173
153
  await connectResponse(await createZeroBrowser(request), options);
174
154
  })
@@ -200,7 +180,7 @@ Examples:
200
180
 
201
181
  Notes:
202
182
  - The browser outlives this run; the user can keep working in it from the viewer link
203
- - Zero reclaims it after ${ZERO_BROWSER_IDLE_LEASE_MINUTES} idle minutes and settles its cost then
183
+ - Zero reclaims it after ${ZERO_BROWSER_IDLE_LEASE_MINUTES} idle minutes
204
184
  - \`zero browser use\` restores a reclaimed browser's login profile, not its old tabs
205
185
  - Browser Use credentials and connection URLs are never printed
206
186
  - Threads for the same user and organization share one login profile
@@ -209,4 +189,4 @@ Notes:
209
189
  export {
210
190
  zeroBrowserCommand
211
191
  };
212
- //# sourceMappingURL=browser-YLIWZZ6D.js.map
192
+ //# sourceMappingURL=browser-F4J54ATA.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<\n ZeroBrowserSession,\n \"creditsCharged\" | \"grossCredits\" | \"liveUrl\" | \"maxCredits\"\n> {\n const {\n creditsCharged: _creditsCharged,\n grossCredits: _grossCredits,\n liveUrl: _liveUrl,\n maxCredits: _maxCredits,\n ...safeBrowser\n } = 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(` ID: ${browser.id}`));\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 resumeCommand = new Command()\n .name(\"resume\")\n .description(\"Deprecated alias of use\")\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 the shared user 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(resumeCommand)\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, not its old tabs\n - Browser Use credentials and connection URLs are never printed\n - Threads for the same user and organization share one login profile\n - Threads can use the shared profile 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-IW4TR3DM.js";
14
+ } from "./chunk-GHMW55CQ.js";
15
15
  import {
16
16
  chatThreadEventSchema,
17
17
  chatThreadSnapshotProjectionSchema,
@@ -25,14 +25,14 @@ import {
25
25
  renameZeroChatThread,
26
26
  sendZeroChatEvent,
27
27
  updateZeroChatThreadModelSelection
28
- } from "./chunk-K36BESR5.js";
29
- import "./chunk-7ZIFGPRL.js";
28
+ } from "./chunk-WTB4K3Z6.js";
29
+ import "./chunk-HHVHHEJ2.js";
30
30
  import "./chunk-MA22KQYU.js";
31
31
  import {
32
32
  getApiUrl,
33
33
  source_default,
34
34
  withErrorHandler
35
- } from "./chunk-HYSVCVEH.js";
35
+ } from "./chunk-MIZEZBG6.js";
36
36
  import {
37
37
  decodeZeroTokenPayload
38
38
  } from "./chunk-MD3YWUKO.js";
@@ -987,4 +987,4 @@ Examples:
987
987
  export {
988
988
  zeroChatCommand
989
989
  };
990
- //# sourceMappingURL=chat-EI7BN74G.js.map
990
+ //# sourceMappingURL=chat-OTLB5LYG.js.map
@@ -4,7 +4,7 @@ const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  getZeroAgent,
6
6
  getZeroAgentUserConnectors
7
- } from "./chunk-K36BESR5.js";
7
+ } from "./chunk-WTB4K3Z6.js";
8
8
  import {
9
9
  init_esm_shims
10
10
  } from "./chunk-GPYQ24DR.js";
@@ -347,4 +347,4 @@ export {
347
347
  resolveManualGrantAuthMethod,
348
348
  resolveAgentContext
349
349
  };
350
- //# sourceMappingURL=chunk-TK3OYU57.js.map
350
+ //# sourceMappingURL=chunk-4TODUWC7.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
  MODEL_PROVIDER_TYPES
6
- } from "./chunk-HYSVCVEH.js";
6
+ } from "./chunk-MIZEZBG6.js";
7
7
  import {
8
8
  init_esm_shims
9
9
  } from "./chunk-GPYQ24DR.js";
@@ -40,4 +40,4 @@ export {
40
40
  formatModelProviderRoute,
41
41
  formatModelPolicyStatus
42
42
  };
43
- //# sourceMappingURL=chunk-IW4TR3DM.js.map
43
+ //# sourceMappingURL=chunk-GHMW55CQ.js.map
@@ -6,7 +6,7 @@ import {
6
6
  getActiveToken,
7
7
  getBaseUrl,
8
8
  headersWithCliClientHeaders
9
- } from "./chunk-HYSVCVEH.js";
9
+ } from "./chunk-MIZEZBG6.js";
10
10
  import {
11
11
  init_esm_shims
12
12
  } from "./chunk-GPYQ24DR.js";
@@ -648,4 +648,4 @@ export {
648
648
  generateWebVideo,
649
649
  transcribeAudio
650
650
  };
651
- //# sourceMappingURL=chunk-7ZIFGPRL.js.map
651
+ //# sourceMappingURL=chunk-HHVHHEJ2.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
  getApiUrl
6
- } from "./chunk-HYSVCVEH.js";
6
+ } from "./chunk-MIZEZBG6.js";
7
7
  import {
8
8
  init_esm_shims
9
9
  } from "./chunk-GPYQ24DR.js";
@@ -42,4 +42,4 @@ export {
42
42
  toPlatformUrl,
43
43
  getPlatformOrigin
44
44
  };
45
- //# sourceMappingURL=chunk-VK5XI46M.js.map
45
+ //# sourceMappingURL=chunk-JQDFMS4A.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
  resolveFirewallMetadataPolicies
6
- } from "./chunk-HCF2BKID.js";
6
+ } from "./chunk-SP2S4QWX.js";
7
7
  import {
8
8
  getZeroConnectorCatalogPermissions
9
- } from "./chunk-K36BESR5.js";
9
+ } from "./chunk-WTB4K3Z6.js";
10
10
  import {
11
11
  source_default
12
- } from "./chunk-HYSVCVEH.js";
12
+ } from "./chunk-MIZEZBG6.js";
13
13
  import {
14
14
  init_esm_shims
15
15
  } from "./chunk-GPYQ24DR.js";
@@ -94,4 +94,4 @@ export {
94
94
  policyIcon,
95
95
  loadConnectorPermissionInfos
96
96
  };
97
- //# sourceMappingURL=chunk-YL2ISI5E.js.map
97
+ //# sourceMappingURL=chunk-M75EI7GB.js.map
@@ -15385,7 +15385,7 @@ function createCliClientHeaderInjector(options) {
15385
15385
  };
15386
15386
  }
15387
15387
  var addDefaultCliClientHeaders = createCliClientHeaderInjector({
15388
- clientVersion: "9.265.0"
15388
+ clientVersion: "9.266.0"
15389
15389
  });
15390
15390
  function addCliClientHeaders(headers) {
15391
15391
  addDefaultCliClientHeaders(headers);
@@ -16776,4 +16776,4 @@ export {
16776
16776
  apiErrorSchema,
16777
16777
  withErrorHandler
16778
16778
  };
16779
- //# sourceMappingURL=chunk-HYSVCVEH.js.map
16779
+ //# sourceMappingURL=chunk-MIZEZBG6.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
  UNKNOWN_PERMISSION_GRANT
6
- } from "./chunk-K36BESR5.js";
6
+ } from "./chunk-WTB4K3Z6.js";
7
7
  import {
8
8
  init_esm_shims
9
9
  } from "./chunk-GPYQ24DR.js";
@@ -130,4 +130,4 @@ export {
130
130
  resolveFirewallMetadataPolicies,
131
131
  permissionGrantsToFirewallPolicies
132
132
  };
133
- //# sourceMappingURL=chunk-HCF2BKID.js.map
133
+ //# sourceMappingURL=chunk-SP2S4QWX.js.map
@@ -17,7 +17,7 @@ import {
17
17
  runnerGroupSchema,
18
18
  searchZeroLogs,
19
19
  zeroAgentVisibilitySchema
20
- } from "./chunk-K36BESR5.js";
20
+ } from "./chunk-WTB4K3Z6.js";
21
21
  import {
22
22
  apiErrorSchema,
23
23
  external_exports,
@@ -31,7 +31,7 @@ import {
31
31
  upsertModelProviderRequestSchema,
32
32
  upsertModelProviderResponseSchema,
33
33
  withErrorHandler
34
- } from "./chunk-HYSVCVEH.js";
34
+ } from "./chunk-MIZEZBG6.js";
35
35
  import {
36
36
  Command
37
37
  } from "./chunk-CCWPKGTB.js";
@@ -11532,6 +11532,10 @@ var testRuntimeStateActionBodySchema = external_exports.discriminatedUnion("acti
11532
11532
  browser_id: external_exports.uuid(),
11533
11533
  user_id: external_exports.string(),
11534
11534
  org_id: external_exports.string()
11535
+ }),
11536
+ external_exports.object({
11537
+ action: external_exports.literal("set-browser-instance-as-previous-api"),
11538
+ browser_id: external_exports.uuid()
11535
11539
  })
11536
11540
  ]);
11537
11541
  var testRuntimeStateActionResponseSchema = external_exports.object({
@@ -11751,15 +11755,6 @@ var testUsageInsightStateActionBodySchema = external_exports.discriminatedUnion(
11751
11755
  processed_at: nullableDateStringSchema.optional(),
11752
11756
  count: external_exports.number().int().positive().optional()
11753
11757
  }),
11754
- external_exports.object({
11755
- action: external_exports.literal("set-browser-usage-hold"),
11756
- org_id: external_exports.string(),
11757
- user_id: external_exports.string(),
11758
- run_id: external_exports.string(),
11759
- chat_thread_id: external_exports.string(),
11760
- idempotency_key: external_exports.string(),
11761
- settled: external_exports.boolean()
11762
- }),
11763
11758
  external_exports.object({
11764
11759
  action: external_exports.literal("attach-usage-allowance"),
11765
11760
  org_id: external_exports.string(),
@@ -12805,7 +12800,6 @@ var cronCompactUsageEventsResponseSchema = external_exports.object({
12805
12800
  seededRawRows: external_exports.number().int().nonnegative(),
12806
12801
  selectedGrains: external_exports.number().int().nonnegative(),
12807
12802
  probedRawRows: external_exports.number().int().nonnegative(),
12808
- browserHeldRows: external_exports.number().int().nonnegative(),
12809
12803
  billingErrorHeldRows: external_exports.number().int().nonnegative(),
12810
12804
  rawRowsCompacted: external_exports.number().int().nonnegative(),
12811
12805
  hourlyRowsDeleted: external_exports.number().int().nonnegative(),
@@ -12840,7 +12834,6 @@ var cronComputerUseScreenshotCleanupResponseSchema = external_exports.object({
12840
12834
  var cronBrowserReconcileResponseSchema = external_exports.object({
12841
12835
  checked: external_exports.number().int().nonnegative(),
12842
12836
  stopped: external_exports.number().int().nonnegative(),
12843
- settled: external_exports.number().int().nonnegative(),
12844
12837
  errors: external_exports.number().int().nonnegative(),
12845
12838
  healthy: external_exports.number().int().nonnegative()
12846
12839
  });
@@ -13035,7 +13028,7 @@ var cronBrowserReconcileContract = c35.router({
13035
13028
  200: cronBrowserReconcileResponseSchema,
13036
13029
  401: apiErrorSchema
13037
13030
  },
13038
- summary: "Reconcile terminal managed browsers and final billing"
13031
+ summary: "Reconcile managed browser idle leases and provider state"
13039
13032
  }
13040
13033
  });
13041
13034
  var cronDrainEmailOutboxContract = c35.router({
@@ -18168,4 +18161,4 @@ export {
18168
18161
  runLogsSearch,
18169
18162
  searchCommand
18170
18163
  };
18171
- //# sourceMappingURL=chunk-SZUNGLD5.js.map
18164
+ //# sourceMappingURL=chunk-UP5UOL6Z.js.map