@vm0/cli 9.264.8 → 9.265.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 (105) hide show
  1. package/{agent-4MCHGF7N.js → agent-Z2FIHSGT.js} +6 -6
  2. package/{banking-GXQ7POKU.js → banking-LGUZ5VNG.js} +4 -4
  3. package/{browser-KSZXTUQA.js → browser-YLIWZZ6D.js} +4 -4
  4. package/{chat-5WGKZHMB.js → chat-EI7BN74G.js} +326 -8
  5. package/chat-EI7BN74G.js.map +1 -0
  6. package/{chunk-TCZ2FX3X.js → chunk-7ZIFGPRL.js} +2 -2
  7. package/{chunk-7WMNSSBC.js → chunk-HCF2BKID.js} +2 -2
  8. package/{chunk-2KEUNCZT.js → chunk-HYSVCVEH.js} +2 -2
  9. package/{chunk-XAVHX57D.js → chunk-IW4TR3DM.js} +2 -2
  10. package/{chunk-KCVBW7AC.js → chunk-K36BESR5.js} +371 -142
  11. package/chunk-K36BESR5.js.map +1 -0
  12. package/{chunk-YV3LWRZZ.js → chunk-SZUNGLD5.js} +210 -253
  13. package/chunk-SZUNGLD5.js.map +1 -0
  14. package/{chunk-WUJWUDPD.js → chunk-TK3OYU57.js} +2 -2
  15. package/{chunk-AOHVC7EW.js → chunk-TNDBFUFP.js} +13 -1
  16. package/chunk-TNDBFUFP.js.map +1 -0
  17. package/{chunk-IYS3T6IA.js → chunk-VK5XI46M.js} +2 -2
  18. package/{chunk-B5VQCVCY.js → chunk-YL2ISI5E.js} +4 -4
  19. package/{computer-use-7IYJ2JNT.js → computer-use-MEF72YRU.js} +4 -4
  20. package/{connector-RUCYHNTI.js → connector-ADZC3UUD.js} +7 -7
  21. package/{credit-SWBRMGXY.js → credit-XP5O4KDG.js} +5 -5
  22. package/{developer-support-FTYPJJ6Q.js → developer-support-EEYI4ZIM.js} +4 -4
  23. package/{doctor-6AOKR5UU.js → doctor-6IKUKRIN.js} +5 -5
  24. package/{feishu-VHY2XR6D.js → feishu-TMG2N5KK.js} +4 -4
  25. package/{finance-4ZD3LPNN.js → finance-O5MHGWTZ.js} +4 -4
  26. package/{generate-ULUL52MM.js → generate-AUPFFQLI.js} +5 -5
  27. package/{github-A3C3OGLD.js → github-CRHENPJV.js} +4 -4
  28. package/{goal-EB5VK2GK.js → goal-MUYVQVAB.js} +4 -4
  29. package/{host-BYHZZN2I.js → host-V7DG7VT2.js} +4 -4
  30. package/{logs-IFUUWA54.js → logs-U5AKPOEH.js} +6 -6
  31. package/{mail-YI5KA3CI.js → mail-DBQGZ5QR.js} +6 -6
  32. package/{maps-KTC5S7FA.js → maps-AWH5HB4Y.js} +4 -4
  33. package/{model-AYKQFU7E.js → model-D55WMDT2.js} +5 -5
  34. package/{model-provider-4MKVAZCR.js → model-provider-ZGDNIWDF.js} +5 -5
  35. package/{org-IZAWNWIE.js → org-EQUTXVUP.js} +4 -4
  36. package/package.json +1 -1
  37. package/{people-search-J45HXJB3.js → people-search-YAEDYHCN.js} +4 -4
  38. package/{phone-YSGX6TYA.js → phone-HCJIFH4N.js} +4 -4
  39. package/{preference-O6URTHMQ.js → preference-RNU6XCSS.js} +4 -4
  40. package/{resource-FKEP5R3M.js → resource-OPBBCIDG.js} +4 -4
  41. package/{scrape-TO3EO4NH.js → scrape-5NOKI766.js} +4 -4
  42. package/{search-PUZI5HRX.js → search-OJF44IQ7.js} +6 -6
  43. package/{secret-6PYNLRMC.js → secret-Q6N2AQ7A.js} +4 -4
  44. package/{slack-6TBB72IQ.js → slack-KHAA7PN5.js} +4 -4
  45. package/{teams-TCTUKRSH.js → teams-C2JNGM46.js} +4 -4
  46. package/{telegram-PD2GOYYR.js → telegram-NGPTNBBI.js} +4 -4
  47. package/{upgrade-GOWPZRKS.js → upgrade-75V657YJ.js} +3 -3
  48. package/{variable-RNHRIK7S.js → variable-3DW76KDG.js} +4 -4
  49. package/{video-HWANWKDT.js → video-V2EXAJCM.js} +3 -3
  50. package/{weather-IWQDSXJG.js → weather-KBKC4WV7.js} +4 -4
  51. package/{web-5RDGLDVJ.js → web-HRDFN5K6.js} +4 -4
  52. package/{web-search-7SV3KXHO.js → web-search-OWKG5UTV.js} +4 -4
  53. package/{whoami-CUHEGGL2.js → whoami-WDMQPK2D.js} +6 -6
  54. package/{workflow-UGDNPUJG.js → workflow-3I3UWWQE.js} +5 -5
  55. package/zero.js +49 -44
  56. package/zero.js.map +1 -1
  57. package/chat-5WGKZHMB.js.map +0 -1
  58. package/chunk-AOHVC7EW.js.map +0 -1
  59. package/chunk-KCVBW7AC.js.map +0 -1
  60. package/chunk-YV3LWRZZ.js.map +0 -1
  61. /package/{agent-4MCHGF7N.js.map → agent-Z2FIHSGT.js.map} +0 -0
  62. /package/{banking-GXQ7POKU.js.map → banking-LGUZ5VNG.js.map} +0 -0
  63. /package/{browser-KSZXTUQA.js.map → browser-YLIWZZ6D.js.map} +0 -0
  64. /package/{chunk-TCZ2FX3X.js.map → chunk-7ZIFGPRL.js.map} +0 -0
  65. /package/{chunk-7WMNSSBC.js.map → chunk-HCF2BKID.js.map} +0 -0
  66. /package/{chunk-2KEUNCZT.js.map → chunk-HYSVCVEH.js.map} +0 -0
  67. /package/{chunk-XAVHX57D.js.map → chunk-IW4TR3DM.js.map} +0 -0
  68. /package/{chunk-WUJWUDPD.js.map → chunk-TK3OYU57.js.map} +0 -0
  69. /package/{chunk-IYS3T6IA.js.map → chunk-VK5XI46M.js.map} +0 -0
  70. /package/{chunk-B5VQCVCY.js.map → chunk-YL2ISI5E.js.map} +0 -0
  71. /package/{computer-use-7IYJ2JNT.js.map → computer-use-MEF72YRU.js.map} +0 -0
  72. /package/{connector-RUCYHNTI.js.map → connector-ADZC3UUD.js.map} +0 -0
  73. /package/{credit-SWBRMGXY.js.map → credit-XP5O4KDG.js.map} +0 -0
  74. /package/{developer-support-FTYPJJ6Q.js.map → developer-support-EEYI4ZIM.js.map} +0 -0
  75. /package/{doctor-6AOKR5UU.js.map → doctor-6IKUKRIN.js.map} +0 -0
  76. /package/{feishu-VHY2XR6D.js.map → feishu-TMG2N5KK.js.map} +0 -0
  77. /package/{finance-4ZD3LPNN.js.map → finance-O5MHGWTZ.js.map} +0 -0
  78. /package/{generate-ULUL52MM.js.map → generate-AUPFFQLI.js.map} +0 -0
  79. /package/{github-A3C3OGLD.js.map → github-CRHENPJV.js.map} +0 -0
  80. /package/{goal-EB5VK2GK.js.map → goal-MUYVQVAB.js.map} +0 -0
  81. /package/{host-BYHZZN2I.js.map → host-V7DG7VT2.js.map} +0 -0
  82. /package/{logs-IFUUWA54.js.map → logs-U5AKPOEH.js.map} +0 -0
  83. /package/{mail-YI5KA3CI.js.map → mail-DBQGZ5QR.js.map} +0 -0
  84. /package/{maps-KTC5S7FA.js.map → maps-AWH5HB4Y.js.map} +0 -0
  85. /package/{model-AYKQFU7E.js.map → model-D55WMDT2.js.map} +0 -0
  86. /package/{model-provider-4MKVAZCR.js.map → model-provider-ZGDNIWDF.js.map} +0 -0
  87. /package/{org-IZAWNWIE.js.map → org-EQUTXVUP.js.map} +0 -0
  88. /package/{people-search-J45HXJB3.js.map → people-search-YAEDYHCN.js.map} +0 -0
  89. /package/{phone-YSGX6TYA.js.map → phone-HCJIFH4N.js.map} +0 -0
  90. /package/{preference-O6URTHMQ.js.map → preference-RNU6XCSS.js.map} +0 -0
  91. /package/{resource-FKEP5R3M.js.map → resource-OPBBCIDG.js.map} +0 -0
  92. /package/{scrape-TO3EO4NH.js.map → scrape-5NOKI766.js.map} +0 -0
  93. /package/{search-PUZI5HRX.js.map → search-OJF44IQ7.js.map} +0 -0
  94. /package/{secret-6PYNLRMC.js.map → secret-Q6N2AQ7A.js.map} +0 -0
  95. /package/{slack-6TBB72IQ.js.map → slack-KHAA7PN5.js.map} +0 -0
  96. /package/{teams-TCTUKRSH.js.map → teams-C2JNGM46.js.map} +0 -0
  97. /package/{telegram-PD2GOYYR.js.map → telegram-NGPTNBBI.js.map} +0 -0
  98. /package/{upgrade-GOWPZRKS.js.map → upgrade-75V657YJ.js.map} +0 -0
  99. /package/{variable-RNHRIK7S.js.map → variable-3DW76KDG.js.map} +0 -0
  100. /package/{video-HWANWKDT.js.map → video-V2EXAJCM.js.map} +0 -0
  101. /package/{weather-IWQDSXJG.js.map → weather-KBKC4WV7.js.map} +0 -0
  102. /package/{web-5RDGLDVJ.js.map → web-HRDFN5K6.js.map} +0 -0
  103. /package/{web-search-7SV3KXHO.js.map → web-search-OWKG5UTV.js.map} +0 -0
  104. /package/{whoami-CUHEGGL2.js.map → whoami-WDMQPK2D.js.map} +0 -0
  105. /package/{workflow-UGDNPUJG.js.map → workflow-3I3UWWQE.js.map} +0 -0
package/zero.js CHANGED
@@ -3,7 +3,7 @@ import { createRequire as __createRequire } from "node:module";
3
3
  const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  isFeatureEnabled
6
- } from "./chunk-AOHVC7EW.js";
6
+ } from "./chunk-TNDBFUFP.js";
7
7
  import {
8
8
  decodeZeroTokenPayload
9
9
  } from "./chunk-MD3YWUKO.js";
@@ -62,7 +62,7 @@ if (DSN) {
62
62
  Sentry.init({
63
63
  dsn: DSN,
64
64
  environment: process.env.SENTRY_ENVIRONMENT ?? "production",
65
- release: "9.264.8",
65
+ release: "9.265.0",
66
66
  sendDefaultPii: false,
67
67
  tracesSampleRate: 0,
68
68
  shutdownTimeout: 500,
@@ -81,7 +81,7 @@ if (DSN) {
81
81
  }
82
82
  });
83
83
  Sentry.setContext("cli", {
84
- version: "9.264.8",
84
+ version: "9.265.0",
85
85
  command: process.argv.slice(2).join(" ")
86
86
  });
87
87
  Sentry.setContext("runtime", {
@@ -169,7 +169,12 @@ var COMMAND_CAPABILITY_MAP = {
169
169
  "model-provider": null,
170
170
  logs: "agent-run:read",
171
171
  search: "chat-message:read",
172
- chat: ["chat-thread:read", "chat-thread:write"],
172
+ chat: [
173
+ "chat-message:read",
174
+ "chat-message:write",
175
+ "chat-thread:read",
176
+ "chat-thread:write"
177
+ ],
173
178
  resource: null,
174
179
  github: ["github:read", "github:write"],
175
180
  slack: "slack:write",
@@ -202,161 +207,161 @@ var ZERO_COMMAND_DEFINITIONS = [
202
207
  name: "org",
203
208
  description: "Manage organization settings, members, and providers",
204
209
  load: async () => {
205
- return (await import("./org-IZAWNWIE.js")).zeroOrgCommand;
210
+ return (await import("./org-EQUTXVUP.js")).zeroOrgCommand;
206
211
  }
207
212
  },
208
213
  {
209
214
  name: "model",
210
215
  description: "List available models and model-switching guidance",
211
216
  load: async () => {
212
- return (await import("./model-AYKQFU7E.js")).zeroModelCommand;
217
+ return (await import("./model-D55WMDT2.js")).zeroModelCommand;
213
218
  }
214
219
  },
215
220
  {
216
221
  name: "model-provider",
217
222
  description: "Inspect model provider routing",
218
223
  load: async () => {
219
- return (await import("./model-provider-4MKVAZCR.js")).zeroModelProviderCommand;
224
+ return (await import("./model-provider-ZGDNIWDF.js")).zeroModelProviderCommand;
220
225
  }
221
226
  },
222
227
  {
223
228
  name: "agent",
224
229
  description: "View or manage zero agents",
225
230
  load: async () => {
226
- return (await import("./agent-4MCHGF7N.js")).zeroAgentCommand;
231
+ return (await import("./agent-Z2FIHSGT.js")).zeroAgentCommand;
227
232
  }
228
233
  },
229
234
  {
230
235
  name: "connector",
231
236
  description: "Check third-party service connections (GitHub, Slack, etc.)",
232
237
  load: async () => {
233
- return (await import("./connector-RUCYHNTI.js")).zeroConnectorCommand;
238
+ return (await import("./connector-ADZC3UUD.js")).zeroConnectorCommand;
234
239
  }
235
240
  },
236
241
  {
237
242
  name: "mail",
238
243
  description: "Review and send mail through Gmail or Outlook Mail",
239
244
  load: async () => {
240
- return (await import("./mail-YI5KA3CI.js")).zeroMailCommand;
245
+ return (await import("./mail-DBQGZ5QR.js")).zeroMailCommand;
241
246
  }
242
247
  },
243
248
  {
244
249
  name: "credit",
245
250
  description: "View or buy credits",
246
251
  load: async () => {
247
- return (await import("./credit-SWBRMGXY.js")).zeroCreditCommand;
252
+ return (await import("./credit-XP5O4KDG.js")).zeroCreditCommand;
248
253
  }
249
254
  },
250
255
  {
251
256
  name: "upgrade",
252
257
  description: "Create a workspace plan upgrade link",
253
258
  load: async () => {
254
- return (await import("./upgrade-GOWPZRKS.js")).zeroUpgradeCommand;
259
+ return (await import("./upgrade-75V657YJ.js")).zeroUpgradeCommand;
255
260
  }
256
261
  },
257
262
  {
258
263
  name: "doctor",
259
264
  description: "Diagnose runtime issues (connector health, permission denials)",
260
265
  load: async () => {
261
- return (await import("./doctor-6AOKR5UU.js")).zeroDoctorCommand;
266
+ return (await import("./doctor-6IKUKRIN.js")).zeroDoctorCommand;
262
267
  }
263
268
  },
264
269
  {
265
270
  name: "preference",
266
271
  description: "View or update user preferences (timezone, notifications)",
267
272
  load: async () => {
268
- return (await import("./preference-O6URTHMQ.js")).zeroPreferenceCommand;
273
+ return (await import("./preference-RNU6XCSS.js")).zeroPreferenceCommand;
269
274
  }
270
275
  },
271
276
  {
272
277
  name: "secret",
273
278
  description: "Read or write secrets (API keys, tokens)",
274
279
  load: async () => {
275
- return (await import("./secret-6PYNLRMC.js")).zeroSecretCommand;
280
+ return (await import("./secret-Q6N2AQ7A.js")).zeroSecretCommand;
276
281
  }
277
282
  },
278
283
  {
279
284
  name: "github",
280
285
  description: "Upload and download GitHub files",
281
286
  load: async () => {
282
- return (await import("./github-A3C3OGLD.js")).zeroGithubCommand;
287
+ return (await import("./github-CRHENPJV.js")).zeroGithubCommand;
283
288
  }
284
289
  },
285
290
  {
286
291
  name: "slack",
287
292
  description: "Send messages, upload files, and download files from Slack as the bot",
288
293
  load: async () => {
289
- return (await import("./slack-6TBB72IQ.js")).zeroSlackCommand;
294
+ return (await import("./slack-KHAA7PN5.js")).zeroSlackCommand;
290
295
  }
291
296
  },
292
297
  {
293
298
  name: "feishu",
294
299
  description: "Send messages to Feishu as an organization bot",
295
300
  load: async () => {
296
- return (await import("./feishu-VHY2XR6D.js")).zeroFeishuCommand;
301
+ return (await import("./feishu-TMG2N5KK.js")).zeroFeishuCommand;
297
302
  }
298
303
  },
299
304
  {
300
305
  name: "teams",
301
306
  description: "Send Microsoft Teams messages, upload files, and download files",
302
307
  load: async () => {
303
- return (await import("./teams-TCTUKRSH.js")).zeroTeamsCommand;
308
+ return (await import("./teams-C2JNGM46.js")).zeroTeamsCommand;
304
309
  }
305
310
  },
306
311
  {
307
312
  name: "telegram",
308
313
  description: "Inspect bots, send messages, upload files, and download files from Telegram",
309
314
  load: async () => {
310
- return (await import("./telegram-PD2GOYYR.js")).zeroTelegramCommand;
315
+ return (await import("./telegram-NGPTNBBI.js")).zeroTelegramCommand;
311
316
  }
312
317
  },
313
318
  {
314
319
  name: "phone",
315
320
  description: "Send AgentPhone messages, upload files, and download media",
316
321
  load: async () => {
317
- return (await import("./phone-YSGX6TYA.js")).zeroPhoneCommand;
322
+ return (await import("./phone-HCJIFH4N.js")).zeroPhoneCommand;
318
323
  }
319
324
  },
320
325
  {
321
326
  name: "variable",
322
327
  description: "Read or write non-sensitive configuration values",
323
328
  load: async () => {
324
- return (await import("./variable-RNHRIK7S.js")).zeroVariableCommand;
329
+ return (await import("./variable-3DW76KDG.js")).zeroVariableCommand;
325
330
  }
326
331
  },
327
332
  {
328
333
  name: "logs",
329
334
  description: "View and search agent run logs",
330
335
  load: async () => {
331
- return (await import("./logs-IFUUWA54.js")).zeroLogsCommand;
336
+ return (await import("./logs-U5AKPOEH.js")).zeroLogsCommand;
332
337
  }
333
338
  },
334
339
  {
335
340
  name: "search",
336
341
  description: "Search logs, chat, or get a recipe for external sources",
337
342
  load: async () => {
338
- return (await import("./search-PUZI5HRX.js")).zeroSearchCommand;
343
+ return (await import("./search-OJF44IQ7.js")).zeroSearchCommand;
339
344
  }
340
345
  },
341
346
  {
342
347
  name: "chat",
343
348
  description: "Manage the current web chat thread",
344
349
  load: async () => {
345
- return (await import("./chat-5WGKZHMB.js")).zeroChatCommand;
350
+ return (await import("./chat-EI7BN74G.js")).zeroChatCommand;
346
351
  }
347
352
  },
348
353
  {
349
354
  name: "resource",
350
355
  description: "Pull registry resources from private R2-backed archives",
351
356
  load: async () => {
352
- return (await import("./resource-FKEP5R3M.js")).zeroResourceCommand;
357
+ return (await import("./resource-OPBBCIDG.js")).zeroResourceCommand;
353
358
  }
354
359
  },
355
360
  {
356
361
  name: "whoami",
357
362
  description: "Show agent identity, run ID, and capabilities",
358
363
  load: async () => {
359
- return (await import("./whoami-CUHEGGL2.js")).zeroWhoamiCommand;
364
+ return (await import("./whoami-WDMQPK2D.js")).zeroWhoamiCommand;
360
365
  }
361
366
  },
362
367
  {
@@ -370,112 +375,112 @@ var ZERO_COMMAND_DEFINITIONS = [
370
375
  name: "workflow",
371
376
  description: "Manage workflows",
372
377
  load: async () => {
373
- return (await import("./workflow-UGDNPUJG.js")).zeroWorkflowCommand;
378
+ return (await import("./workflow-3I3UWWQE.js")).zeroWorkflowCommand;
374
379
  }
375
380
  },
376
381
  {
377
382
  name: "goal",
378
383
  description: "Manage the current thread goal",
379
384
  load: async () => {
380
- return (await import("./goal-EB5VK2GK.js")).zeroGoalCommand;
385
+ return (await import("./goal-MUYVQVAB.js")).zeroGoalCommand;
381
386
  }
382
387
  },
383
388
  {
384
389
  name: "developer-support",
385
390
  description: "Submit a diagnostic report to the dev team",
386
391
  load: async () => {
387
- return (await import("./developer-support-FTYPJJ6Q.js")).zeroDeveloperSupportCommand;
392
+ return (await import("./developer-support-EEYI4ZIM.js")).zeroDeveloperSupportCommand;
388
393
  }
389
394
  },
390
395
  {
391
396
  name: "computer-use",
392
397
  description: "Desktop app computer use through Zero CLI",
393
398
  load: async () => {
394
- return (await import("./computer-use-7IYJ2JNT.js")).zeroComputerUseCommand;
399
+ return (await import("./computer-use-MEF72YRU.js")).zeroComputerUseCommand;
395
400
  }
396
401
  },
397
402
  {
398
403
  name: "browser",
399
404
  description: "Managed remote browser sessions for agent-browser",
400
405
  load: async () => {
401
- return (await import("./browser-KSZXTUQA.js")).zeroBrowserCommand;
406
+ return (await import("./browser-YLIWZZ6D.js")).zeroBrowserCommand;
402
407
  }
403
408
  },
404
409
  {
405
410
  name: "generate",
406
411
  description: "Generate assets via vm0's built-in pipelines or get connector skill-invocation guidance",
407
412
  load: async () => {
408
- return (await import("./generate-ULUL52MM.js")).generateCommand;
413
+ return (await import("./generate-AUPFFQLI.js")).generateCommand;
409
414
  }
410
415
  },
411
416
  {
412
417
  name: "web",
413
418
  description: "Upload and download files via the web chat endpoint",
414
419
  load: async () => {
415
- return (await import("./web-5RDGLDVJ.js")).zeroWebCommand;
420
+ return (await import("./web-HRDFN5K6.js")).zeroWebCommand;
416
421
  }
417
422
  },
418
423
  {
419
424
  name: "video",
420
425
  description: "Video processing utilities",
421
426
  load: async () => {
422
- return (await import("./video-HWANWKDT.js")).zeroVideoCommand;
427
+ return (await import("./video-V2EXAJCM.js")).zeroVideoCommand;
423
428
  }
424
429
  },
425
430
  {
426
431
  name: "host",
427
432
  description: "Publish static sites and clone owned hosted site files",
428
433
  load: async () => {
429
- return (await import("./host-BYHZZN2I.js")).zeroHostCommand;
434
+ return (await import("./host-V7DG7VT2.js")).zeroHostCommand;
430
435
  }
431
436
  },
432
437
  {
433
438
  name: "maps",
434
439
  description: "Use managed zero maps services",
435
440
  load: async () => {
436
- return (await import("./maps-KTC5S7FA.js")).zeroMapsCommand;
441
+ return (await import("./maps-AWH5HB4Y.js")).zeroMapsCommand;
437
442
  }
438
443
  },
439
444
  {
440
445
  name: "weather",
441
446
  description: "Use managed Zero weather services",
442
447
  load: async () => {
443
- return (await import("./weather-IWQDSXJG.js")).zeroWeatherCommand;
448
+ return (await import("./weather-KBKC4WV7.js")).zeroWeatherCommand;
444
449
  }
445
450
  },
446
451
  {
447
452
  name: "scrape",
448
453
  description: "Scrape public web pages through managed zero scrape",
449
454
  load: async () => {
450
- return (await import("./scrape-TO3EO4NH.js")).zeroScrapeCommand;
455
+ return (await import("./scrape-5NOKI766.js")).zeroScrapeCommand;
451
456
  }
452
457
  },
453
458
  {
454
459
  name: "people-search",
455
460
  description: "Find professionals through managed zero people search",
456
461
  load: async () => {
457
- return (await import("./people-search-J45HXJB3.js")).zeroPeopleSearchCommand;
462
+ return (await import("./people-search-YAEDYHCN.js")).zeroPeopleSearchCommand;
458
463
  }
459
464
  },
460
465
  {
461
466
  name: "web-search",
462
467
  description: "Search the public web through managed zero web search",
463
468
  load: async () => {
464
- return (await import("./web-search-7SV3KXHO.js")).zeroWebSearchCommand;
469
+ return (await import("./web-search-OWKG5UTV.js")).zeroWebSearchCommand;
465
470
  }
466
471
  },
467
472
  {
468
473
  name: "finance",
469
474
  description: "Query financial instruments through managed zero finance",
470
475
  load: async () => {
471
- return (await import("./finance-4ZD3LPNN.js")).zeroFinanceCommand;
476
+ return (await import("./finance-O5MHGWTZ.js")).zeroFinanceCommand;
472
477
  }
473
478
  },
474
479
  {
475
480
  name: "banking",
476
481
  description: "Use managed zero banking services",
477
482
  load: async () => {
478
- return (await import("./banking-GXQ7POKU.js")).zeroBankingCommand;
483
+ return (await import("./banking-LGUZ5VNG.js")).zeroBankingCommand;
479
484
  }
480
485
  }
481
486
  ];
@@ -666,7 +671,7 @@ function registerZeroCommands(prog, commands, featureSwitchOverrides) {
666
671
  var program = new Command();
667
672
  program.name("zero").description(
668
673
  "Zero CLI \u2014 interact with the zero platform from inside the sandbox"
669
- ).version("9.264.8").addHelpText("after", () => {
674
+ ).version("9.265.0").addHelpText("after", () => {
670
675
  return buildZeroHelpText();
671
676
  });
672
677
  if (process.argv[1]?.endsWith("zero.js") || process.argv[1]?.endsWith("zero.ts") || process.argv[1]?.endsWith("zero")) {
package/zero.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/zero.ts","../src/instrument.ts","../src/lib/network/proxy.ts"],"sourcesContent":["// Zero CLI entry point - standalone binary for zero platform commands\n// Sentry must be initialized before any other imports\nimport \"./instrument.js\";\nimport { Command } from \"commander\";\nimport { FeatureSwitchKey } from \"@vm0/core/feature-switch-key\";\nimport { isFeatureEnabled } from \"@vm0/core/feature-switch\";\nimport { configureGlobalProxyFromEnv } from \"./lib/network/proxy.js\";\nimport {\n decodeZeroTokenPayload,\n type ZeroTokenPayload,\n} from \"./lib/api/zero-token.js\";\n\ninterface ZeroCommandDefinition {\n name: string;\n description: string;\n load: () => Promise<Command>;\n}\n\n/**\n * Map of command names to the capability required to see them.\n * Commands not in this map are hidden when ZERO_TOKEN is active.\n * Use an array when a top-level command has subcommands with different\n * capability gates and any one of them should make the command visible.\n * Use `null` for commands that should always be visible in sandbox.\n */\nconst COMMAND_CAPABILITY_MAP: Record<\n string,\n string | readonly string[] | null\n> = {\n agent: \"agent:read\",\n workflow: \"agent:read\",\n goal: [\"goal:read\", \"goal:agent-result:write\", \"goal:user-control:write\"],\n connector: \"connector:read\",\n mail: \"connector:read\",\n doctor: null,\n credit: [\"billing:read\", \"billing:write\"],\n upgrade: null,\n model: null,\n \"model-provider\": null,\n logs: \"agent-run:read\",\n search: \"chat-message:read\",\n chat: [\"chat-thread:read\", \"chat-thread:write\"],\n resource: null,\n github: [\"github:read\", \"github:write\"],\n slack: \"slack:write\",\n feishu: \"feishu:write\",\n teams: \"teams:write\",\n telegram: [\"telegram:read\", \"telegram:write\"],\n phone: [\"phone:read\", \"phone:write\"],\n whoami: null,\n \"developer-support\": null,\n \"computer-use\": \"computer-use:write\",\n browser: [\"browser:read\", \"browser:write\"],\n intro: null,\n generate: null,\n web: null,\n video: null,\n host: [\"host:read\", \"host:write\"],\n maps: \"maps:read\",\n weather: \"weather:read\",\n scrape: \"scrape:read\",\n \"people-search\": \"people-search:read\",\n \"web-search\": \"web-search:read\",\n finance: \"finance:read\",\n banking: \"banking:read\",\n};\n\nconst COMMAND_FEATURE_SWITCH_MAP: Readonly<\n Partial<Record<string, FeatureSwitchKey>>\n> = {\n browser: FeatureSwitchKey.ZeroBrowser,\n};\n\ntype FeatureSwitchOverrides = Partial<Record<FeatureSwitchKey, boolean>>;\n\nconst ZERO_COMMAND_DEFINITIONS: readonly ZeroCommandDefinition[] = [\n {\n name: \"org\",\n description: \"Manage organization settings, members, and providers\",\n load: async () => {\n return (await import(\"./commands/zero/org\")).zeroOrgCommand;\n },\n },\n {\n name: \"model\",\n description: \"List available models and model-switching guidance\",\n load: async () => {\n return (await import(\"./commands/zero/model\")).zeroModelCommand;\n },\n },\n {\n name: \"model-provider\",\n description: \"Inspect model provider routing\",\n load: async () => {\n return (await import(\"./commands/zero/model-provider\"))\n .zeroModelProviderCommand;\n },\n },\n {\n name: \"agent\",\n description: \"View or manage zero agents\",\n load: async () => {\n return (await import(\"./commands/zero/agent\")).zeroAgentCommand;\n },\n },\n {\n name: \"connector\",\n description: \"Check third-party service connections (GitHub, Slack, etc.)\",\n load: async () => {\n return (await import(\"./commands/zero/connector\")).zeroConnectorCommand;\n },\n },\n {\n name: \"mail\",\n description: \"Review and send mail through Gmail or Outlook Mail\",\n load: async () => {\n return (await import(\"./commands/zero/mail\")).zeroMailCommand;\n },\n },\n {\n name: \"credit\",\n description: \"View or buy credits\",\n load: async () => {\n return (await import(\"./commands/zero/credit\")).zeroCreditCommand;\n },\n },\n {\n name: \"upgrade\",\n description: \"Create a workspace plan upgrade link\",\n load: async () => {\n return (await import(\"./commands/zero/upgrade\")).zeroUpgradeCommand;\n },\n },\n {\n name: \"doctor\",\n description:\n \"Diagnose runtime issues (connector health, permission denials)\",\n load: async () => {\n return (await import(\"./commands/zero/doctor\")).zeroDoctorCommand;\n },\n },\n {\n name: \"preference\",\n description: \"View or update user preferences (timezone, notifications)\",\n load: async () => {\n return (await import(\"./commands/zero/preference\")).zeroPreferenceCommand;\n },\n },\n {\n name: \"secret\",\n description: \"Read or write secrets (API keys, tokens)\",\n load: async () => {\n return (await import(\"./commands/zero/secret\")).zeroSecretCommand;\n },\n },\n {\n name: \"github\",\n description: \"Upload and download GitHub files\",\n load: async () => {\n return (await import(\"./commands/zero/github\")).zeroGithubCommand;\n },\n },\n {\n name: \"slack\",\n description:\n \"Send messages, upload files, and download files from Slack as the bot\",\n load: async () => {\n return (await import(\"./commands/zero/slack\")).zeroSlackCommand;\n },\n },\n {\n name: \"feishu\",\n description: \"Send messages to Feishu as an organization bot\",\n load: async () => {\n return (await import(\"./commands/zero/feishu\")).zeroFeishuCommand;\n },\n },\n {\n name: \"teams\",\n description:\n \"Send Microsoft Teams messages, upload files, and download files\",\n load: async () => {\n return (await import(\"./commands/zero/teams\")).zeroTeamsCommand;\n },\n },\n {\n name: \"telegram\",\n description:\n \"Inspect bots, send messages, upload files, and download files from Telegram\",\n load: async () => {\n return (await import(\"./commands/zero/telegram\")).zeroTelegramCommand;\n },\n },\n {\n name: \"phone\",\n description: \"Send AgentPhone messages, upload files, and download media\",\n load: async () => {\n return (await import(\"./commands/zero/phone\")).zeroPhoneCommand;\n },\n },\n {\n name: \"variable\",\n description: \"Read or write non-sensitive configuration values\",\n load: async () => {\n return (await import(\"./commands/zero/variable\")).zeroVariableCommand;\n },\n },\n {\n name: \"logs\",\n description: \"View and search agent run logs\",\n load: async () => {\n return (await import(\"./commands/zero/logs\")).zeroLogsCommand;\n },\n },\n {\n name: \"search\",\n description: \"Search logs, chat, or get a recipe for external sources\",\n load: async () => {\n return (await import(\"./commands/zero/search\")).zeroSearchCommand;\n },\n },\n {\n name: \"chat\",\n description: \"Manage the current web chat thread\",\n load: async () => {\n return (await import(\"./commands/zero/chat\")).zeroChatCommand;\n },\n },\n {\n name: \"resource\",\n description: \"Pull registry resources from private R2-backed archives\",\n load: async () => {\n return (await import(\"./commands/zero/resource\")).zeroResourceCommand;\n },\n },\n {\n name: \"whoami\",\n description: \"Show agent identity, run ID, and capabilities\",\n load: async () => {\n return (await import(\"./commands/zero/whoami\")).zeroWhoamiCommand;\n },\n },\n {\n name: \"intro\",\n description: \"Print Zero's self-introduction and capability guide\",\n load: async () => {\n return (await import(\"./commands/zero/intro\")).zeroIntroCommand;\n },\n },\n {\n name: \"workflow\",\n description: \"Manage workflows\",\n load: async () => {\n return (await import(\"./commands/zero/workflow\")).zeroWorkflowCommand;\n },\n },\n {\n name: \"goal\",\n description: \"Manage the current thread goal\",\n load: async () => {\n return (await import(\"./commands/zero/goal\")).zeroGoalCommand;\n },\n },\n {\n name: \"developer-support\",\n description: \"Submit a diagnostic report to the dev team\",\n load: async () => {\n return (await import(\"./commands/zero/developer-support\"))\n .zeroDeveloperSupportCommand;\n },\n },\n {\n name: \"computer-use\",\n description: \"Desktop app computer use through Zero CLI\",\n load: async () => {\n return (await import(\"./commands/zero/computer-use\"))\n .zeroComputerUseCommand;\n },\n },\n {\n name: \"browser\",\n description: \"Managed remote browser sessions for agent-browser\",\n load: async () => {\n return (await import(\"./commands/zero/browser\")).zeroBrowserCommand;\n },\n },\n {\n name: \"generate\",\n description:\n \"Generate assets via vm0's built-in pipelines or get connector skill-invocation guidance\",\n load: async () => {\n return (await import(\"./commands/zero/generate\")).generateCommand;\n },\n },\n {\n name: \"web\",\n description: \"Upload and download files via the web chat endpoint\",\n load: async () => {\n return (await import(\"./commands/zero/web\")).zeroWebCommand;\n },\n },\n {\n name: \"video\",\n description: \"Video processing utilities\",\n load: async () => {\n return (await import(\"./commands/zero/video\")).zeroVideoCommand;\n },\n },\n {\n name: \"host\",\n description: \"Publish static sites and clone owned hosted site files\",\n load: async () => {\n return (await import(\"./commands/zero/host\")).zeroHostCommand;\n },\n },\n {\n name: \"maps\",\n description: \"Use managed zero maps services\",\n load: async () => {\n return (await import(\"./commands/zero/maps\")).zeroMapsCommand;\n },\n },\n {\n name: \"weather\",\n description: \"Use managed Zero weather services\",\n load: async () => {\n return (await import(\"./commands/zero/weather\")).zeroWeatherCommand;\n },\n },\n {\n name: \"scrape\",\n description: \"Scrape public web pages through managed zero scrape\",\n load: async () => {\n return (await import(\"./commands/zero/scrape\")).zeroScrapeCommand;\n },\n },\n {\n name: \"people-search\",\n description: \"Find professionals through managed zero people search\",\n load: async () => {\n return (await import(\"./commands/zero/people-search\"))\n .zeroPeopleSearchCommand;\n },\n },\n {\n name: \"web-search\",\n description: \"Search the public web through managed zero web search\",\n load: async () => {\n return (await import(\"./commands/zero/web-search\")).zeroWebSearchCommand;\n },\n },\n {\n name: \"finance\",\n description: \"Query financial instruments through managed zero finance\",\n load: async () => {\n return (await import(\"./commands/zero/finance\")).zeroFinanceCommand;\n },\n },\n {\n name: \"banking\",\n description: \"Use managed zero banking services\",\n load: async () => {\n return (await import(\"./commands/zero/banking\")).zeroBankingCommand;\n },\n },\n];\n\nconst ZERO_COMMAND_DEFINITION_BY_NAME = new Map(\n ZERO_COMMAND_DEFINITIONS.map((definition) => {\n return [definition.name, definition];\n }),\n);\n\nfunction createZeroCommandStub(definition: ZeroCommandDefinition): Command {\n return new Command(definition.name).description(definition.description);\n}\n\nfunction buildDefaultCommands(): Command[] {\n return ZERO_COMMAND_DEFINITIONS.map(createZeroCommandStub);\n}\n\nfunction shouldHideCommand(\n name: string,\n payload: ZeroTokenPayload | undefined,\n featureSwitchOverrides?: FeatureSwitchOverrides,\n): boolean {\n if (!isCommandFeatureEnabled(name, payload, featureSwitchOverrides)) {\n return true;\n }\n if (!payload) return false;\n const requiredCap = COMMAND_CAPABILITY_MAP[name];\n if (requiredCap === undefined) return true;\n if (requiredCap === null) return false;\n if (typeof requiredCap !== \"string\") {\n return !requiredCap.some((capability) => {\n return payload.capabilities.includes(capability);\n });\n }\n return !payload.capabilities.includes(requiredCap);\n}\n\nfunction isCommandFeatureEnabled(\n name: string,\n payload: ZeroTokenPayload | undefined,\n featureSwitchOverrides?: FeatureSwitchOverrides,\n): boolean {\n const featureSwitch = COMMAND_FEATURE_SWITCH_MAP[name];\n const overrides = featureSwitchOverrides ?? payload?.featureSwitchOverrides;\n return (\n !featureSwitch ||\n isFeatureEnabled(featureSwitch, {\n userId: payload?.userId,\n orgId: payload?.orgId,\n overrides,\n })\n );\n}\n\nfunction addZeroCommand(\n prog: Command,\n cmd: Command,\n payload: ZeroTokenPayload | undefined,\n featureSwitchOverrides?: FeatureSwitchOverrides,\n): void {\n const hidden = shouldHideCommand(cmd.name(), payload, featureSwitchOverrides);\n prog.addCommand(cmd, hidden ? { hidden: true } : {});\n}\n\nfunction getNonOptionArgs(argv: string[]): string[] {\n const args: string[] = [];\n\n for (const arg of argv.slice(2)) {\n if (arg === \"--\") {\n break;\n }\n if (arg.startsWith(\"-\")) {\n continue;\n }\n args.push(arg);\n }\n\n return args;\n}\n\nfunction getRequestedZeroCommandName(argv = process.argv): string | undefined {\n const [firstArg, secondArg] = getNonOptionArgs(argv);\n\n if (!firstArg) {\n return undefined;\n }\n\n if (firstArg === \"help\") {\n return secondArg;\n }\n\n return firstArg;\n}\n\nasync function loadZeroCommand(\n name: string | undefined,\n): Promise<Command | undefined> {\n if (!name) {\n return undefined;\n }\n\n return ZERO_COMMAND_DEFINITION_BY_NAME.get(name)?.load();\n}\n\nfunction commandExampleIfVisible(\n name: string,\n example: string,\n payload: ZeroTokenPayload | undefined,\n featureSwitchOverrides?: FeatureSwitchOverrides,\n): string[] {\n return shouldHideCommand(name, payload, featureSwitchOverrides)\n ? []\n : [example];\n}\n\nexport function buildZeroHelpText(\n payload: ZeroTokenPayload | undefined = decodeZeroTokenPayload(),\n featureSwitchOverrides?: FeatureSwitchOverrides,\n): string {\n const canReadHost = !payload || payload.capabilities.includes(\"host:read\");\n const canWriteHost = !payload || payload.capabilities.includes(\"host:write\");\n const examples = [\n \" Check a connector? zero connector check --env-name <ENV_NAME>\",\n ...(payload && !payload.capabilities.includes(\"billing:read\")\n ? []\n : [\" Check credits? zero credit\"]),\n ...(payload && !payload.capabilities.includes(\"billing:write\")\n ? []\n : [\" Buy credits? zero credit 20000\"]),\n ...commandExampleIfVisible(\n \"upgrade\",\n \" Upgrade plan? zero upgrade pro\",\n payload,\n featureSwitchOverrides,\n ),\n \" Send a Slack message? zero slack message send --help\",\n ...commandExampleIfVisible(\n \"feishu\",\n \" Send Feishu? zero feishu message send --help\",\n payload,\n featureSwitchOverrides,\n ),\n ...commandExampleIfVisible(\n \"mail\",\n \" Link Gmail draft? zero mail link --help\",\n payload,\n featureSwitchOverrides,\n ),\n \" Send Teams? zero teams message send --help\",\n \" Upload Teams? zero teams upload-file --help\",\n \" Download Teams? zero teams download-file --help\",\n \" Upload GitHub? zero github upload-file --help\",\n \" Download GitHub? zero github download-file --help\",\n \" List Telegram bots? zero telegram bot list\",\n \" Send Telegram? zero telegram message send --help\",\n \" Upload Telegram? zero telegram upload-file --help\",\n \" Download Telegram? zero telegram download-file --help\",\n \" Send AgentPhone? zero phone message --help\",\n \" Upload AgentPhone? zero phone upload-file --help\",\n \" Download AgentPhone? zero phone download-file --help\",\n \" List models? zero model ls\",\n \" Model routing? zero model-provider ls\",\n \" Update yourself? zero agent --help\",\n \" Manage workflows? zero workflow --help\",\n ...commandExampleIfVisible(\n \"chat\",\n ' Rename this chat? zero chat rename \"New title\"',\n payload,\n featureSwitchOverrides,\n ),\n \" Introduce Zero? zero intro\",\n \" List generators? zero generate --help\",\n ' Generate image? zero generate image --raw-prompt \"...\"',\n ' Generate website? zero generate website --prompt \"...\"',\n ' Generate voice? zero generate voice --prompt \"...\"',\n ...(canWriteHost\n ? [\" Host a static site? zero host ./dist --site my-site --spa\"]\n : []),\n ...(canReadHost\n ? [\" Clone hosted site? zero host clone <public-slug>\"]\n : []),\n ...commandExampleIfVisible(\n \"maps\",\n ' Get directions? zero maps directions --origin \"SFO\" --destination \"Mountain View\" --json',\n payload,\n featureSwitchOverrides,\n ),\n ...commandExampleIfVisible(\n \"weather\",\n \" Check weather? zero weather current --lat 39.9042 --lng 116.4074 --json\",\n payload,\n featureSwitchOverrides,\n ),\n ...commandExampleIfVisible(\n \"scrape\",\n \" Scrape a web page? zero scrape https://example.com --json\",\n payload,\n featureSwitchOverrides,\n ),\n ...commandExampleIfVisible(\n \"web-search\",\n ' Search the public web? zero web-search \"latest news\" --json',\n payload,\n featureSwitchOverrides,\n ),\n ...commandExampleIfVisible(\n \"finance\",\n \" Get a market quote? zero finance quote AAPL --json\",\n payload,\n featureSwitchOverrides,\n ),\n ...commandExampleIfVisible(\n \"people-search\",\n ' Find a professional? zero people-search \"platform engineering leaders\" --json',\n payload,\n featureSwitchOverrides,\n ),\n ...commandExampleIfVisible(\n \"banking\",\n \" Read bank data? zero banking accounts --json\",\n payload,\n featureSwitchOverrides,\n ),\n \" Check your identity? zero whoami\",\n ];\n\n return `\\nExamples:\\n${examples.join(\"\\n\")}`;\n}\n\n/**\n * Register commands with visibility based on ZERO_TOKEN capabilities.\n * Commands not granted by the token are registered as hidden via\n * Commander's public `addCommand(cmd, { hidden: true })` API.\n * When no ZERO_TOKEN is present, all commands remain visible.\n *\n * @param commands - override default commands (used in tests)\n */\nexport function registerZeroCommands(\n prog: Command,\n commands?: Command[],\n featureSwitchOverrides?: FeatureSwitchOverrides,\n): void {\n const token = process.env.ZERO_TOKEN;\n const payload = token ? decodeZeroTokenPayload(token) : undefined;\n\n for (const cmd of commands ?? buildDefaultCommands()) {\n if (!isCommandFeatureEnabled(cmd.name(), payload, featureSwitchOverrides)) {\n continue;\n }\n addZeroCommand(prog, cmd, payload, featureSwitchOverrides);\n }\n}\n\nconst program = new Command();\n\ndeclare const __CLI_VERSION__: string;\n\nprogram\n .name(\"zero\")\n .description(\n \"Zero CLI — interact with the zero platform from inside the sandbox\",\n )\n .version(__CLI_VERSION__)\n .addHelpText(\"after\", () => {\n return buildZeroHelpText();\n });\n\nexport { program };\n\nif (\n process.argv[1]?.endsWith(\"zero.js\") ||\n process.argv[1]?.endsWith(\"zero.ts\") ||\n process.argv[1]?.endsWith(\"zero\")\n) {\n await configureGlobalProxyFromEnv();\n const requestedCommand = await loadZeroCommand(getRequestedZeroCommandName());\n registerZeroCommands(\n program,\n requestedCommand ? [requestedCommand] : undefined,\n );\n program.parse();\n}\n","declare const __CLI_VERSION__: string;\ndeclare const __DEFAULT_SENTRY_DSN__: string;\n\nconst DSN = process.env.SENTRY_DSN ?? __DEFAULT_SENTRY_DSN__;\n\nconst OPERATIONAL_ERROR_PATTERNS = [\n /not authenticated/i,\n /not found/i,\n /agent not found/i,\n /version not found/i,\n /checkpoint not found/i,\n /session not found/i,\n /file not found/i,\n /environment file not found/i,\n /invalid format/i,\n /invalid.*config/i,\n /rate limit/i,\n /concurrent run limit/i,\n /insufficient.*credit/i,\n /no model provider/i,\n /network error/i,\n /network issue/i,\n /fetch failed/i,\n /connection refused/i,\n /timeout/i,\n /ECONNREFUSED/i,\n /ETIMEDOUT/i,\n /forbidden/i,\n /access denied/i,\n];\n\nfunction isOperationalError(error: unknown): boolean {\n if (!(error instanceof Error)) {\n return false;\n }\n\n const message = error.message;\n return OPERATIONAL_ERROR_PATTERNS.some((pattern) => {\n return pattern.test(message);\n });\n}\n\nif (DSN) {\n const [Sentry, os] = await Promise.all([\n import(\"@sentry/node\"),\n import(\"node:os\"),\n ]);\n\n Sentry.init({\n dsn: DSN,\n environment: process.env.SENTRY_ENVIRONMENT ?? \"production\",\n release: __CLI_VERSION__,\n sendDefaultPii: false,\n tracesSampleRate: 0,\n shutdownTimeout: 500,\n initialScope: {\n tags: {\n app: \"cli\",\n },\n },\n // Filter out operational errors - only send programmer errors (bugs)\n beforeSend(event, hint) {\n const error = hint.originalException;\n if (isOperationalError(error)) {\n return null; // Drop operational errors\n }\n return event;\n },\n });\n\n Sentry.setContext(\"cli\", {\n version: __CLI_VERSION__,\n command: process.argv.slice(2).join(\" \"),\n });\n\n Sentry.setContext(\"runtime\", {\n node_version: process.version,\n os_platform: os.platform(),\n os_release: os.release(),\n });\n}\n\nfunction handleEpipe(err: NodeJS.ErrnoException) {\n if (err.code === \"EPIPE\") {\n process.exit(0);\n }\n throw err;\n}\n\nprocess.stdout.on(\"error\", handleEpipe);\nprocess.stderr.on(\"error\", handleEpipe);\n","interface ProxyConfig {\n httpProxy?: string;\n httpsProxy?: string;\n noProxy?: string;\n}\n\nlet configured = false;\n\nfunction getEnvValue(\n lowercaseKey: string,\n uppercaseKey: string,\n): string | null {\n const lowercaseValue = process.env[lowercaseKey]?.trim();\n if (lowercaseValue) {\n return lowercaseValue;\n }\n\n const uppercaseValue = process.env[uppercaseKey]?.trim();\n if (uppercaseValue) {\n return uppercaseValue;\n }\n\n return null;\n}\n\nfunction getProxyConfigFromEnv(): ProxyConfig | null {\n const httpProxy = getEnvValue(\"http_proxy\", \"HTTP_PROXY\");\n const httpsProxy = getEnvValue(\"https_proxy\", \"HTTPS_PROXY\");\n\n if (!httpProxy && !httpsProxy) {\n return null;\n }\n\n const noProxy = getEnvValue(\"no_proxy\", \"NO_PROXY\");\n const config: ProxyConfig = {};\n\n if (httpProxy) {\n config.httpProxy = httpProxy;\n }\n\n if (httpsProxy) {\n config.httpsProxy = httpsProxy;\n }\n\n if (noProxy) {\n config.noProxy = noProxy;\n }\n\n return config;\n}\n\nexport async function configureGlobalProxyFromEnv(): Promise<void> {\n if (configured) {\n return;\n }\n\n const config = getProxyConfigFromEnv();\n if (!config) {\n return;\n }\n\n try {\n const { EnvHttpProxyAgent, setGlobalDispatcher } = await import(\"undici\");\n const dispatcher = new EnvHttpProxyAgent(config);\n setGlobalDispatcher(dispatcher);\n configured = true;\n } catch (error) {\n throw new Error(\n \"Invalid proxy configuration. Check HTTP_PROXY/HTTPS_PROXY/NO_PROXY values.\",\n {\n cause: error instanceof Error ? error : undefined,\n },\n );\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/zero.ts","../src/instrument.ts","../src/lib/network/proxy.ts"],"sourcesContent":["// Zero CLI entry point - standalone binary for zero platform commands\n// Sentry must be initialized before any other imports\nimport \"./instrument.js\";\nimport { Command } from \"commander\";\nimport { FeatureSwitchKey } from \"@vm0/core/feature-switch-key\";\nimport { isFeatureEnabled } from \"@vm0/core/feature-switch\";\nimport { configureGlobalProxyFromEnv } from \"./lib/network/proxy.js\";\nimport {\n decodeZeroTokenPayload,\n type ZeroTokenPayload,\n} from \"./lib/api/zero-token.js\";\n\ninterface ZeroCommandDefinition {\n name: string;\n description: string;\n load: () => Promise<Command>;\n}\n\n/**\n * Map of command names to the capability required to see them.\n * Commands not in this map are hidden when ZERO_TOKEN is active.\n * Use an array when a top-level command has subcommands with different\n * capability gates and any one of them should make the command visible.\n * Use `null` for commands that should always be visible in sandbox.\n */\nconst COMMAND_CAPABILITY_MAP: Record<\n string,\n string | readonly string[] | null\n> = {\n agent: \"agent:read\",\n workflow: \"agent:read\",\n goal: [\"goal:read\", \"goal:agent-result:write\", \"goal:user-control:write\"],\n connector: \"connector:read\",\n mail: \"connector:read\",\n doctor: null,\n credit: [\"billing:read\", \"billing:write\"],\n upgrade: null,\n model: null,\n \"model-provider\": null,\n logs: \"agent-run:read\",\n search: \"chat-message:read\",\n chat: [\n \"chat-message:read\",\n \"chat-message:write\",\n \"chat-thread:read\",\n \"chat-thread:write\",\n ],\n resource: null,\n github: [\"github:read\", \"github:write\"],\n slack: \"slack:write\",\n feishu: \"feishu:write\",\n teams: \"teams:write\",\n telegram: [\"telegram:read\", \"telegram:write\"],\n phone: [\"phone:read\", \"phone:write\"],\n whoami: null,\n \"developer-support\": null,\n \"computer-use\": \"computer-use:write\",\n browser: [\"browser:read\", \"browser:write\"],\n intro: null,\n generate: null,\n web: null,\n video: null,\n host: [\"host:read\", \"host:write\"],\n maps: \"maps:read\",\n weather: \"weather:read\",\n scrape: \"scrape:read\",\n \"people-search\": \"people-search:read\",\n \"web-search\": \"web-search:read\",\n finance: \"finance:read\",\n banking: \"banking:read\",\n};\n\nconst COMMAND_FEATURE_SWITCH_MAP: Readonly<\n Partial<Record<string, FeatureSwitchKey>>\n> = {\n browser: FeatureSwitchKey.ZeroBrowser,\n};\n\ntype FeatureSwitchOverrides = Partial<Record<FeatureSwitchKey, boolean>>;\n\nconst ZERO_COMMAND_DEFINITIONS: readonly ZeroCommandDefinition[] = [\n {\n name: \"org\",\n description: \"Manage organization settings, members, and providers\",\n load: async () => {\n return (await import(\"./commands/zero/org\")).zeroOrgCommand;\n },\n },\n {\n name: \"model\",\n description: \"List available models and model-switching guidance\",\n load: async () => {\n return (await import(\"./commands/zero/model\")).zeroModelCommand;\n },\n },\n {\n name: \"model-provider\",\n description: \"Inspect model provider routing\",\n load: async () => {\n return (await import(\"./commands/zero/model-provider\"))\n .zeroModelProviderCommand;\n },\n },\n {\n name: \"agent\",\n description: \"View or manage zero agents\",\n load: async () => {\n return (await import(\"./commands/zero/agent\")).zeroAgentCommand;\n },\n },\n {\n name: \"connector\",\n description: \"Check third-party service connections (GitHub, Slack, etc.)\",\n load: async () => {\n return (await import(\"./commands/zero/connector\")).zeroConnectorCommand;\n },\n },\n {\n name: \"mail\",\n description: \"Review and send mail through Gmail or Outlook Mail\",\n load: async () => {\n return (await import(\"./commands/zero/mail\")).zeroMailCommand;\n },\n },\n {\n name: \"credit\",\n description: \"View or buy credits\",\n load: async () => {\n return (await import(\"./commands/zero/credit\")).zeroCreditCommand;\n },\n },\n {\n name: \"upgrade\",\n description: \"Create a workspace plan upgrade link\",\n load: async () => {\n return (await import(\"./commands/zero/upgrade\")).zeroUpgradeCommand;\n },\n },\n {\n name: \"doctor\",\n description:\n \"Diagnose runtime issues (connector health, permission denials)\",\n load: async () => {\n return (await import(\"./commands/zero/doctor\")).zeroDoctorCommand;\n },\n },\n {\n name: \"preference\",\n description: \"View or update user preferences (timezone, notifications)\",\n load: async () => {\n return (await import(\"./commands/zero/preference\")).zeroPreferenceCommand;\n },\n },\n {\n name: \"secret\",\n description: \"Read or write secrets (API keys, tokens)\",\n load: async () => {\n return (await import(\"./commands/zero/secret\")).zeroSecretCommand;\n },\n },\n {\n name: \"github\",\n description: \"Upload and download GitHub files\",\n load: async () => {\n return (await import(\"./commands/zero/github\")).zeroGithubCommand;\n },\n },\n {\n name: \"slack\",\n description:\n \"Send messages, upload files, and download files from Slack as the bot\",\n load: async () => {\n return (await import(\"./commands/zero/slack\")).zeroSlackCommand;\n },\n },\n {\n name: \"feishu\",\n description: \"Send messages to Feishu as an organization bot\",\n load: async () => {\n return (await import(\"./commands/zero/feishu\")).zeroFeishuCommand;\n },\n },\n {\n name: \"teams\",\n description:\n \"Send Microsoft Teams messages, upload files, and download files\",\n load: async () => {\n return (await import(\"./commands/zero/teams\")).zeroTeamsCommand;\n },\n },\n {\n name: \"telegram\",\n description:\n \"Inspect bots, send messages, upload files, and download files from Telegram\",\n load: async () => {\n return (await import(\"./commands/zero/telegram\")).zeroTelegramCommand;\n },\n },\n {\n name: \"phone\",\n description: \"Send AgentPhone messages, upload files, and download media\",\n load: async () => {\n return (await import(\"./commands/zero/phone\")).zeroPhoneCommand;\n },\n },\n {\n name: \"variable\",\n description: \"Read or write non-sensitive configuration values\",\n load: async () => {\n return (await import(\"./commands/zero/variable\")).zeroVariableCommand;\n },\n },\n {\n name: \"logs\",\n description: \"View and search agent run logs\",\n load: async () => {\n return (await import(\"./commands/zero/logs\")).zeroLogsCommand;\n },\n },\n {\n name: \"search\",\n description: \"Search logs, chat, or get a recipe for external sources\",\n load: async () => {\n return (await import(\"./commands/zero/search\")).zeroSearchCommand;\n },\n },\n {\n name: \"chat\",\n description: \"Manage the current web chat thread\",\n load: async () => {\n return (await import(\"./commands/zero/chat\")).zeroChatCommand;\n },\n },\n {\n name: \"resource\",\n description: \"Pull registry resources from private R2-backed archives\",\n load: async () => {\n return (await import(\"./commands/zero/resource\")).zeroResourceCommand;\n },\n },\n {\n name: \"whoami\",\n description: \"Show agent identity, run ID, and capabilities\",\n load: async () => {\n return (await import(\"./commands/zero/whoami\")).zeroWhoamiCommand;\n },\n },\n {\n name: \"intro\",\n description: \"Print Zero's self-introduction and capability guide\",\n load: async () => {\n return (await import(\"./commands/zero/intro\")).zeroIntroCommand;\n },\n },\n {\n name: \"workflow\",\n description: \"Manage workflows\",\n load: async () => {\n return (await import(\"./commands/zero/workflow\")).zeroWorkflowCommand;\n },\n },\n {\n name: \"goal\",\n description: \"Manage the current thread goal\",\n load: async () => {\n return (await import(\"./commands/zero/goal\")).zeroGoalCommand;\n },\n },\n {\n name: \"developer-support\",\n description: \"Submit a diagnostic report to the dev team\",\n load: async () => {\n return (await import(\"./commands/zero/developer-support\"))\n .zeroDeveloperSupportCommand;\n },\n },\n {\n name: \"computer-use\",\n description: \"Desktop app computer use through Zero CLI\",\n load: async () => {\n return (await import(\"./commands/zero/computer-use\"))\n .zeroComputerUseCommand;\n },\n },\n {\n name: \"browser\",\n description: \"Managed remote browser sessions for agent-browser\",\n load: async () => {\n return (await import(\"./commands/zero/browser\")).zeroBrowserCommand;\n },\n },\n {\n name: \"generate\",\n description:\n \"Generate assets via vm0's built-in pipelines or get connector skill-invocation guidance\",\n load: async () => {\n return (await import(\"./commands/zero/generate\")).generateCommand;\n },\n },\n {\n name: \"web\",\n description: \"Upload and download files via the web chat endpoint\",\n load: async () => {\n return (await import(\"./commands/zero/web\")).zeroWebCommand;\n },\n },\n {\n name: \"video\",\n description: \"Video processing utilities\",\n load: async () => {\n return (await import(\"./commands/zero/video\")).zeroVideoCommand;\n },\n },\n {\n name: \"host\",\n description: \"Publish static sites and clone owned hosted site files\",\n load: async () => {\n return (await import(\"./commands/zero/host\")).zeroHostCommand;\n },\n },\n {\n name: \"maps\",\n description: \"Use managed zero maps services\",\n load: async () => {\n return (await import(\"./commands/zero/maps\")).zeroMapsCommand;\n },\n },\n {\n name: \"weather\",\n description: \"Use managed Zero weather services\",\n load: async () => {\n return (await import(\"./commands/zero/weather\")).zeroWeatherCommand;\n },\n },\n {\n name: \"scrape\",\n description: \"Scrape public web pages through managed zero scrape\",\n load: async () => {\n return (await import(\"./commands/zero/scrape\")).zeroScrapeCommand;\n },\n },\n {\n name: \"people-search\",\n description: \"Find professionals through managed zero people search\",\n load: async () => {\n return (await import(\"./commands/zero/people-search\"))\n .zeroPeopleSearchCommand;\n },\n },\n {\n name: \"web-search\",\n description: \"Search the public web through managed zero web search\",\n load: async () => {\n return (await import(\"./commands/zero/web-search\")).zeroWebSearchCommand;\n },\n },\n {\n name: \"finance\",\n description: \"Query financial instruments through managed zero finance\",\n load: async () => {\n return (await import(\"./commands/zero/finance\")).zeroFinanceCommand;\n },\n },\n {\n name: \"banking\",\n description: \"Use managed zero banking services\",\n load: async () => {\n return (await import(\"./commands/zero/banking\")).zeroBankingCommand;\n },\n },\n];\n\nconst ZERO_COMMAND_DEFINITION_BY_NAME = new Map(\n ZERO_COMMAND_DEFINITIONS.map((definition) => {\n return [definition.name, definition];\n }),\n);\n\nfunction createZeroCommandStub(definition: ZeroCommandDefinition): Command {\n return new Command(definition.name).description(definition.description);\n}\n\nfunction buildDefaultCommands(): Command[] {\n return ZERO_COMMAND_DEFINITIONS.map(createZeroCommandStub);\n}\n\nfunction shouldHideCommand(\n name: string,\n payload: ZeroTokenPayload | undefined,\n featureSwitchOverrides?: FeatureSwitchOverrides,\n): boolean {\n if (!isCommandFeatureEnabled(name, payload, featureSwitchOverrides)) {\n return true;\n }\n if (!payload) return false;\n const requiredCap = COMMAND_CAPABILITY_MAP[name];\n if (requiredCap === undefined) return true;\n if (requiredCap === null) return false;\n if (typeof requiredCap !== \"string\") {\n return !requiredCap.some((capability) => {\n return payload.capabilities.includes(capability);\n });\n }\n return !payload.capabilities.includes(requiredCap);\n}\n\nfunction isCommandFeatureEnabled(\n name: string,\n payload: ZeroTokenPayload | undefined,\n featureSwitchOverrides?: FeatureSwitchOverrides,\n): boolean {\n const featureSwitch = COMMAND_FEATURE_SWITCH_MAP[name];\n const overrides = featureSwitchOverrides ?? payload?.featureSwitchOverrides;\n return (\n !featureSwitch ||\n isFeatureEnabled(featureSwitch, {\n userId: payload?.userId,\n orgId: payload?.orgId,\n overrides,\n })\n );\n}\n\nfunction addZeroCommand(\n prog: Command,\n cmd: Command,\n payload: ZeroTokenPayload | undefined,\n featureSwitchOverrides?: FeatureSwitchOverrides,\n): void {\n const hidden = shouldHideCommand(cmd.name(), payload, featureSwitchOverrides);\n prog.addCommand(cmd, hidden ? { hidden: true } : {});\n}\n\nfunction getNonOptionArgs(argv: string[]): string[] {\n const args: string[] = [];\n\n for (const arg of argv.slice(2)) {\n if (arg === \"--\") {\n break;\n }\n if (arg.startsWith(\"-\")) {\n continue;\n }\n args.push(arg);\n }\n\n return args;\n}\n\nfunction getRequestedZeroCommandName(argv = process.argv): string | undefined {\n const [firstArg, secondArg] = getNonOptionArgs(argv);\n\n if (!firstArg) {\n return undefined;\n }\n\n if (firstArg === \"help\") {\n return secondArg;\n }\n\n return firstArg;\n}\n\nasync function loadZeroCommand(\n name: string | undefined,\n): Promise<Command | undefined> {\n if (!name) {\n return undefined;\n }\n\n return ZERO_COMMAND_DEFINITION_BY_NAME.get(name)?.load();\n}\n\nfunction commandExampleIfVisible(\n name: string,\n example: string,\n payload: ZeroTokenPayload | undefined,\n featureSwitchOverrides?: FeatureSwitchOverrides,\n): string[] {\n return shouldHideCommand(name, payload, featureSwitchOverrides)\n ? []\n : [example];\n}\n\nexport function buildZeroHelpText(\n payload: ZeroTokenPayload | undefined = decodeZeroTokenPayload(),\n featureSwitchOverrides?: FeatureSwitchOverrides,\n): string {\n const canReadHost = !payload || payload.capabilities.includes(\"host:read\");\n const canWriteHost = !payload || payload.capabilities.includes(\"host:write\");\n const examples = [\n \" Check a connector? zero connector check --env-name <ENV_NAME>\",\n ...(payload && !payload.capabilities.includes(\"billing:read\")\n ? []\n : [\" Check credits? zero credit\"]),\n ...(payload && !payload.capabilities.includes(\"billing:write\")\n ? []\n : [\" Buy credits? zero credit 20000\"]),\n ...commandExampleIfVisible(\n \"upgrade\",\n \" Upgrade plan? zero upgrade pro\",\n payload,\n featureSwitchOverrides,\n ),\n \" Send a Slack message? zero slack message send --help\",\n ...commandExampleIfVisible(\n \"feishu\",\n \" Send Feishu? zero feishu message send --help\",\n payload,\n featureSwitchOverrides,\n ),\n ...commandExampleIfVisible(\n \"mail\",\n \" Link Gmail draft? zero mail link --help\",\n payload,\n featureSwitchOverrides,\n ),\n \" Send Teams? zero teams message send --help\",\n \" Upload Teams? zero teams upload-file --help\",\n \" Download Teams? zero teams download-file --help\",\n \" Upload GitHub? zero github upload-file --help\",\n \" Download GitHub? zero github download-file --help\",\n \" List Telegram bots? zero telegram bot list\",\n \" Send Telegram? zero telegram message send --help\",\n \" Upload Telegram? zero telegram upload-file --help\",\n \" Download Telegram? zero telegram download-file --help\",\n \" Send AgentPhone? zero phone message --help\",\n \" Upload AgentPhone? zero phone upload-file --help\",\n \" Download AgentPhone? zero phone download-file --help\",\n \" List models? zero model ls\",\n \" Model routing? zero model-provider ls\",\n \" Update yourself? zero agent --help\",\n \" Manage workflows? zero workflow --help\",\n ...commandExampleIfVisible(\n \"chat\",\n ' Rename this chat? zero chat rename \"New title\"',\n payload,\n featureSwitchOverrides,\n ),\n \" Introduce Zero? zero intro\",\n \" List generators? zero generate --help\",\n ' Generate image? zero generate image --raw-prompt \"...\"',\n ' Generate website? zero generate website --prompt \"...\"',\n ' Generate voice? zero generate voice --prompt \"...\"',\n ...(canWriteHost\n ? [\" Host a static site? zero host ./dist --site my-site --spa\"]\n : []),\n ...(canReadHost\n ? [\" Clone hosted site? zero host clone <public-slug>\"]\n : []),\n ...commandExampleIfVisible(\n \"maps\",\n ' Get directions? zero maps directions --origin \"SFO\" --destination \"Mountain View\" --json',\n payload,\n featureSwitchOverrides,\n ),\n ...commandExampleIfVisible(\n \"weather\",\n \" Check weather? zero weather current --lat 39.9042 --lng 116.4074 --json\",\n payload,\n featureSwitchOverrides,\n ),\n ...commandExampleIfVisible(\n \"scrape\",\n \" Scrape a web page? zero scrape https://example.com --json\",\n payload,\n featureSwitchOverrides,\n ),\n ...commandExampleIfVisible(\n \"web-search\",\n ' Search the public web? zero web-search \"latest news\" --json',\n payload,\n featureSwitchOverrides,\n ),\n ...commandExampleIfVisible(\n \"finance\",\n \" Get a market quote? zero finance quote AAPL --json\",\n payload,\n featureSwitchOverrides,\n ),\n ...commandExampleIfVisible(\n \"people-search\",\n ' Find a professional? zero people-search \"platform engineering leaders\" --json',\n payload,\n featureSwitchOverrides,\n ),\n ...commandExampleIfVisible(\n \"banking\",\n \" Read bank data? zero banking accounts --json\",\n payload,\n featureSwitchOverrides,\n ),\n \" Check your identity? zero whoami\",\n ];\n\n return `\\nExamples:\\n${examples.join(\"\\n\")}`;\n}\n\n/**\n * Register commands with visibility based on ZERO_TOKEN capabilities.\n * Commands not granted by the token are registered as hidden via\n * Commander's public `addCommand(cmd, { hidden: true })` API.\n * When no ZERO_TOKEN is present, all commands remain visible.\n *\n * @param commands - override default commands (used in tests)\n */\nexport function registerZeroCommands(\n prog: Command,\n commands?: Command[],\n featureSwitchOverrides?: FeatureSwitchOverrides,\n): void {\n const token = process.env.ZERO_TOKEN;\n const payload = token ? decodeZeroTokenPayload(token) : undefined;\n\n for (const cmd of commands ?? buildDefaultCommands()) {\n if (!isCommandFeatureEnabled(cmd.name(), payload, featureSwitchOverrides)) {\n continue;\n }\n addZeroCommand(prog, cmd, payload, featureSwitchOverrides);\n }\n}\n\nconst program = new Command();\n\ndeclare const __CLI_VERSION__: string;\n\nprogram\n .name(\"zero\")\n .description(\n \"Zero CLI — interact with the zero platform from inside the sandbox\",\n )\n .version(__CLI_VERSION__)\n .addHelpText(\"after\", () => {\n return buildZeroHelpText();\n });\n\nexport { program };\n\nif (\n process.argv[1]?.endsWith(\"zero.js\") ||\n process.argv[1]?.endsWith(\"zero.ts\") ||\n process.argv[1]?.endsWith(\"zero\")\n) {\n await configureGlobalProxyFromEnv();\n const requestedCommand = await loadZeroCommand(getRequestedZeroCommandName());\n registerZeroCommands(\n program,\n requestedCommand ? [requestedCommand] : undefined,\n );\n program.parse();\n}\n","declare const __CLI_VERSION__: string;\ndeclare const __DEFAULT_SENTRY_DSN__: string;\n\nconst DSN = process.env.SENTRY_DSN ?? __DEFAULT_SENTRY_DSN__;\n\nconst OPERATIONAL_ERROR_PATTERNS = [\n /not authenticated/i,\n /not found/i,\n /agent not found/i,\n /version not found/i,\n /checkpoint not found/i,\n /session not found/i,\n /file not found/i,\n /environment file not found/i,\n /invalid format/i,\n /invalid.*config/i,\n /rate limit/i,\n /concurrent run limit/i,\n /insufficient.*credit/i,\n /no model provider/i,\n /network error/i,\n /network issue/i,\n /fetch failed/i,\n /connection refused/i,\n /timeout/i,\n /ECONNREFUSED/i,\n /ETIMEDOUT/i,\n /forbidden/i,\n /access denied/i,\n];\n\nfunction isOperationalError(error: unknown): boolean {\n if (!(error instanceof Error)) {\n return false;\n }\n\n const message = error.message;\n return OPERATIONAL_ERROR_PATTERNS.some((pattern) => {\n return pattern.test(message);\n });\n}\n\nif (DSN) {\n const [Sentry, os] = await Promise.all([\n import(\"@sentry/node\"),\n import(\"node:os\"),\n ]);\n\n Sentry.init({\n dsn: DSN,\n environment: process.env.SENTRY_ENVIRONMENT ?? \"production\",\n release: __CLI_VERSION__,\n sendDefaultPii: false,\n tracesSampleRate: 0,\n shutdownTimeout: 500,\n initialScope: {\n tags: {\n app: \"cli\",\n },\n },\n // Filter out operational errors - only send programmer errors (bugs)\n beforeSend(event, hint) {\n const error = hint.originalException;\n if (isOperationalError(error)) {\n return null; // Drop operational errors\n }\n return event;\n },\n });\n\n Sentry.setContext(\"cli\", {\n version: __CLI_VERSION__,\n command: process.argv.slice(2).join(\" \"),\n });\n\n Sentry.setContext(\"runtime\", {\n node_version: process.version,\n os_platform: os.platform(),\n os_release: os.release(),\n });\n}\n\nfunction handleEpipe(err: NodeJS.ErrnoException) {\n if (err.code === \"EPIPE\") {\n process.exit(0);\n }\n throw err;\n}\n\nprocess.stdout.on(\"error\", handleEpipe);\nprocess.stderr.on(\"error\", handleEpipe);\n","interface ProxyConfig {\n httpProxy?: string;\n httpsProxy?: string;\n noProxy?: string;\n}\n\nlet configured = false;\n\nfunction getEnvValue(\n lowercaseKey: string,\n uppercaseKey: string,\n): string | null {\n const lowercaseValue = process.env[lowercaseKey]?.trim();\n if (lowercaseValue) {\n return lowercaseValue;\n }\n\n const uppercaseValue = process.env[uppercaseKey]?.trim();\n if (uppercaseValue) {\n return uppercaseValue;\n }\n\n return null;\n}\n\nfunction getProxyConfigFromEnv(): ProxyConfig | null {\n const httpProxy = getEnvValue(\"http_proxy\", \"HTTP_PROXY\");\n const httpsProxy = getEnvValue(\"https_proxy\", \"HTTPS_PROXY\");\n\n if (!httpProxy && !httpsProxy) {\n return null;\n }\n\n const noProxy = getEnvValue(\"no_proxy\", \"NO_PROXY\");\n const config: ProxyConfig = {};\n\n if (httpProxy) {\n config.httpProxy = httpProxy;\n }\n\n if (httpsProxy) {\n config.httpsProxy = httpsProxy;\n }\n\n if (noProxy) {\n config.noProxy = noProxy;\n }\n\n return config;\n}\n\nexport async function configureGlobalProxyFromEnv(): Promise<void> {\n if (configured) {\n return;\n }\n\n const config = getProxyConfigFromEnv();\n if (!config) {\n return;\n }\n\n try {\n const { EnvHttpProxyAgent, setGlobalDispatcher } = await import(\"undici\");\n const dispatcher = new EnvHttpProxyAgent(config);\n setGlobalDispatcher(dispatcher);\n configured = true;\n } catch (error) {\n throw new Error(\n \"Invalid proxy configuration. Check HTTP_PROXY/HTTPS_PROXY/NO_PROXY values.\",\n {\n cause: error instanceof Error ? error : undefined,\n },\n );\n }\n}\n"],"mappings":"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","names":[]}