@vm0/cli 9.254.1 → 9.255.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.
- package/{agent-CDMQ3BO4.js → agent-YXVPOZDT.js} +7 -7
- package/{banking-M5CIVLRH.js → banking-K734DGW4.js} +5 -5
- package/browser-GMLGBTV7.js +186 -0
- package/browser-GMLGBTV7.js.map +1 -0
- package/{chat-TRK5KDSP.js → chat-I2URW23Z.js} +6 -6
- package/{chunk-BL37FBZF.js → chunk-24QJ7H5R.js} +2 -2
- package/{chunk-7NYMO54N.js → chunk-45FQJCB2.js} +2 -2
- package/{chunk-JLEBJUMI.js → chunk-7PFY5Y77.js} +84 -219
- package/chunk-7PFY5Y77.js.map +1 -0
- package/{chunk-UUKFGXX5.js → chunk-BKR7J5QP.js} +2 -2
- package/{chunk-BXVXXD3E.js → chunk-BYD553JQ.js} +4 -4
- package/{chunk-5QLT6M5N.js → chunk-DQB537B5.js} +3 -3
- package/{chunk-D4OTAABD.js → chunk-H4LRAOOF.js} +6 -1
- package/chunk-H4LRAOOF.js.map +1 -0
- package/{chunk-R23NULE7.js → chunk-MDKQRZ7S.js} +656 -495
- package/chunk-MDKQRZ7S.js.map +1 -0
- package/{chunk-TBBXBBFT.js → chunk-RKXDWJW5.js} +2 -2
- package/{chunk-JXYKIW37.js → chunk-UKQRMBLJ.js} +2 -2
- package/{chunk-XBX4JTXR.js → chunk-ZLP3TODB.js} +84 -2
- package/chunk-ZLP3TODB.js.map +1 -0
- package/{computer-use-K7ULCJNC.js → computer-use-OVYDVFLM.js} +5 -5
- package/{connector-JFE4GTW4.js → connector-ZJ4GNXOR.js} +15 -83
- package/connector-ZJ4GNXOR.js.map +1 -0
- package/{credit-QVY2XIPE.js → credit-5F56FMHI.js} +7 -7
- package/{developer-support-EJOQWXKB.js → developer-support-DMN7JGPX.js} +5 -5
- package/{doctor-7YEA3BYV.js → doctor-Y724BLON.js} +7 -7
- package/{feishu-KCN4UME3.js → feishu-T5ZIWV53.js} +5 -5
- package/{finance-TOKK5DCK.js → finance-4ZRCXMFS.js} +5 -5
- package/{generate-6E23MDCE.js → generate-JFRB6NBZ.js} +7 -7
- package/{github-LJMT5D7D.js → github-ZXWGL5Q6.js} +5 -5
- package/{goal-OJ4J7OCD.js → goal-22N3CH3F.js} +5 -5
- package/{host-KX5G666N.js → host-I7S5PYUY.js} +5 -5
- package/{logs-IDABHTFA.js → logs-4HV44EMA.js} +6 -6
- package/{mail-U6JQDKN3.js → mail-U5LPAC7X.js} +67 -17
- package/mail-U5LPAC7X.js.map +1 -0
- package/{maps-Y7PIXKLP.js → maps-PF5WHYEC.js} +5 -5
- package/{model-PXWGKXUA.js → model-JMQSUUFJ.js} +6 -6
- package/{model-provider-LNVO4LHA.js → model-provider-AJCWCCNB.js} +6 -6
- package/{org-G46VCLIF.js → org-7Q3J66NB.js} +5 -5
- package/package.json +1 -1
- package/{people-search-TZBJNLYY.js → people-search-GUIJICYT.js} +5 -5
- package/{phone-KEHX5BEJ.js → phone-6U27VFNC.js} +5 -5
- package/{preference-5KLKA6DR.js → preference-BFLHPME6.js} +5 -5
- package/{resource-W2PYM3GG.js → resource-C3PAGM7Y.js} +5 -5
- package/{scrape-27OBJPNR.js → scrape-5XL47HZY.js} +5 -5
- package/{search-23XNHEE5.js → search-B2V6NTUP.js} +6 -6
- package/{secret-IRLST7ZX.js → secret-QORKNSMC.js} +5 -5
- package/{slack-U3YX4HK7.js → slack-MD6HYUDE.js} +5 -5
- package/{teams-2BPJ3VT4.js → teams-LO3PPNA2.js} +5 -5
- package/{telegram-B7JBB6M2.js → telegram-BZUBR4QS.js} +5 -5
- package/{upgrade-SFFQF2QF.js → upgrade-63B4TM4E.js} +4 -4
- package/{variable-ZZ7OX5PU.js → variable-FW7F63SB.js} +5 -5
- package/{video-PEACIVNU.js → video-RWCQZ4XP.js} +4 -4
- package/{weather-4SC7E3OZ.js → weather-ST6CIHV4.js} +5 -5
- package/{web-2O6V5RRP.js → web-GBSYVVYF.js} +5 -5
- package/{web-search-KOU476ZM.js → web-search-AZXILILB.js} +5 -5
- package/{whoami-VGNKLROW.js → whoami-UI67766P.js} +7 -7
- package/{workflow-3GXAC4BP.js → workflow-CXWRSWUP.js} +5 -5
- package/zero.js +54 -44
- package/zero.js.map +1 -1
- package/chunk-D4OTAABD.js.map +0 -1
- package/chunk-JLEBJUMI.js.map +0 -1
- package/chunk-R23NULE7.js.map +0 -1
- package/chunk-XBX4JTXR.js.map +0 -1
- package/connector-JFE4GTW4.js.map +0 -1
- package/mail-U6JQDKN3.js.map +0 -1
- /package/{agent-CDMQ3BO4.js.map → agent-YXVPOZDT.js.map} +0 -0
- /package/{banking-M5CIVLRH.js.map → banking-K734DGW4.js.map} +0 -0
- /package/{chat-TRK5KDSP.js.map → chat-I2URW23Z.js.map} +0 -0
- /package/{chunk-BL37FBZF.js.map → chunk-24QJ7H5R.js.map} +0 -0
- /package/{chunk-7NYMO54N.js.map → chunk-45FQJCB2.js.map} +0 -0
- /package/{chunk-UUKFGXX5.js.map → chunk-BKR7J5QP.js.map} +0 -0
- /package/{chunk-BXVXXD3E.js.map → chunk-BYD553JQ.js.map} +0 -0
- /package/{chunk-5QLT6M5N.js.map → chunk-DQB537B5.js.map} +0 -0
- /package/{chunk-TBBXBBFT.js.map → chunk-RKXDWJW5.js.map} +0 -0
- /package/{chunk-JXYKIW37.js.map → chunk-UKQRMBLJ.js.map} +0 -0
- /package/{computer-use-K7ULCJNC.js.map → computer-use-OVYDVFLM.js.map} +0 -0
- /package/{credit-QVY2XIPE.js.map → credit-5F56FMHI.js.map} +0 -0
- /package/{developer-support-EJOQWXKB.js.map → developer-support-DMN7JGPX.js.map} +0 -0
- /package/{doctor-7YEA3BYV.js.map → doctor-Y724BLON.js.map} +0 -0
- /package/{feishu-KCN4UME3.js.map → feishu-T5ZIWV53.js.map} +0 -0
- /package/{finance-TOKK5DCK.js.map → finance-4ZRCXMFS.js.map} +0 -0
- /package/{generate-6E23MDCE.js.map → generate-JFRB6NBZ.js.map} +0 -0
- /package/{github-LJMT5D7D.js.map → github-ZXWGL5Q6.js.map} +0 -0
- /package/{goal-OJ4J7OCD.js.map → goal-22N3CH3F.js.map} +0 -0
- /package/{host-KX5G666N.js.map → host-I7S5PYUY.js.map} +0 -0
- /package/{logs-IDABHTFA.js.map → logs-4HV44EMA.js.map} +0 -0
- /package/{maps-Y7PIXKLP.js.map → maps-PF5WHYEC.js.map} +0 -0
- /package/{model-PXWGKXUA.js.map → model-JMQSUUFJ.js.map} +0 -0
- /package/{model-provider-LNVO4LHA.js.map → model-provider-AJCWCCNB.js.map} +0 -0
- /package/{org-G46VCLIF.js.map → org-7Q3J66NB.js.map} +0 -0
- /package/{people-search-TZBJNLYY.js.map → people-search-GUIJICYT.js.map} +0 -0
- /package/{phone-KEHX5BEJ.js.map → phone-6U27VFNC.js.map} +0 -0
- /package/{preference-5KLKA6DR.js.map → preference-BFLHPME6.js.map} +0 -0
- /package/{resource-W2PYM3GG.js.map → resource-C3PAGM7Y.js.map} +0 -0
- /package/{scrape-27OBJPNR.js.map → scrape-5XL47HZY.js.map} +0 -0
- /package/{search-23XNHEE5.js.map → search-B2V6NTUP.js.map} +0 -0
- /package/{secret-IRLST7ZX.js.map → secret-QORKNSMC.js.map} +0 -0
- /package/{slack-U3YX4HK7.js.map → slack-MD6HYUDE.js.map} +0 -0
- /package/{teams-2BPJ3VT4.js.map → teams-LO3PPNA2.js.map} +0 -0
- /package/{telegram-B7JBB6M2.js.map → telegram-BZUBR4QS.js.map} +0 -0
- /package/{upgrade-SFFQF2QF.js.map → upgrade-63B4TM4E.js.map} +0 -0
- /package/{variable-ZZ7OX5PU.js.map → variable-FW7F63SB.js.map} +0 -0
- /package/{video-PEACIVNU.js.map → video-RWCQZ4XP.js.map} +0 -0
- /package/{weather-4SC7E3OZ.js.map → weather-ST6CIHV4.js.map} +0 -0
- /package/{web-2O6V5RRP.js.map → web-GBSYVVYF.js.map} +0 -0
- /package/{web-search-KOU476ZM.js.map → web-search-AZXILILB.js.map} +0 -0
- /package/{whoami-VGNKLROW.js.map → whoami-UI67766P.js.map} +0 -0
- /package/{workflow-3GXAC4BP.js.map → workflow-CXWRSWUP.js.map} +0 -0
package/zero.js
CHANGED
|
@@ -4,7 +4,7 @@ const require = __createRequire(import.meta.url);
|
|
|
4
4
|
import {
|
|
5
5
|
decodeZeroTokenPayload,
|
|
6
6
|
isFeatureEnabled
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-H4LRAOOF.js";
|
|
8
8
|
import {
|
|
9
9
|
Command
|
|
10
10
|
} from "./chunk-LD4ZVU4O.js";
|
|
@@ -60,7 +60,7 @@ if (DSN) {
|
|
|
60
60
|
Sentry.init({
|
|
61
61
|
dsn: DSN,
|
|
62
62
|
environment: process.env.SENTRY_ENVIRONMENT ?? "production",
|
|
63
|
-
release: "9.
|
|
63
|
+
release: "9.255.0",
|
|
64
64
|
sendDefaultPii: false,
|
|
65
65
|
tracesSampleRate: 0,
|
|
66
66
|
shutdownTimeout: 500,
|
|
@@ -79,7 +79,7 @@ if (DSN) {
|
|
|
79
79
|
}
|
|
80
80
|
});
|
|
81
81
|
Sentry.setContext("cli", {
|
|
82
|
-
version: "9.
|
|
82
|
+
version: "9.255.0",
|
|
83
83
|
command: process.argv.slice(2).join(" ")
|
|
84
84
|
});
|
|
85
85
|
Sentry.setContext("runtime", {
|
|
@@ -178,6 +178,7 @@ var COMMAND_CAPABILITY_MAP = {
|
|
|
178
178
|
whoami: null,
|
|
179
179
|
"developer-support": null,
|
|
180
180
|
"computer-use": "computer-use:write",
|
|
181
|
+
browser: ["browser:read", "browser:write"],
|
|
181
182
|
intro: null,
|
|
182
183
|
generate: null,
|
|
183
184
|
web: null,
|
|
@@ -192,168 +193,169 @@ var COMMAND_CAPABILITY_MAP = {
|
|
|
192
193
|
banking: "banking:read"
|
|
193
194
|
};
|
|
194
195
|
var COMMAND_FEATURE_SWITCH_MAP = {
|
|
195
|
-
upgrade: "planUpgradeGuidance" /* PlanUpgradeGuidance
|
|
196
|
+
upgrade: "planUpgradeGuidance" /* PlanUpgradeGuidance */,
|
|
197
|
+
browser: "zeroBrowser" /* ZeroBrowser */
|
|
196
198
|
};
|
|
197
199
|
var ZERO_COMMAND_DEFINITIONS = [
|
|
198
200
|
{
|
|
199
201
|
name: "org",
|
|
200
202
|
description: "Manage organization settings, members, and providers",
|
|
201
203
|
load: async () => {
|
|
202
|
-
return (await import("./org-
|
|
204
|
+
return (await import("./org-7Q3J66NB.js")).zeroOrgCommand;
|
|
203
205
|
}
|
|
204
206
|
},
|
|
205
207
|
{
|
|
206
208
|
name: "model",
|
|
207
209
|
description: "List available models and model-switching guidance",
|
|
208
210
|
load: async () => {
|
|
209
|
-
return (await import("./model-
|
|
211
|
+
return (await import("./model-JMQSUUFJ.js")).zeroModelCommand;
|
|
210
212
|
}
|
|
211
213
|
},
|
|
212
214
|
{
|
|
213
215
|
name: "model-provider",
|
|
214
216
|
description: "Inspect model provider routing",
|
|
215
217
|
load: async () => {
|
|
216
|
-
return (await import("./model-provider-
|
|
218
|
+
return (await import("./model-provider-AJCWCCNB.js")).zeroModelProviderCommand;
|
|
217
219
|
}
|
|
218
220
|
},
|
|
219
221
|
{
|
|
220
222
|
name: "agent",
|
|
221
223
|
description: "View or manage zero agents",
|
|
222
224
|
load: async () => {
|
|
223
|
-
return (await import("./agent-
|
|
225
|
+
return (await import("./agent-YXVPOZDT.js")).zeroAgentCommand;
|
|
224
226
|
}
|
|
225
227
|
},
|
|
226
228
|
{
|
|
227
229
|
name: "connector",
|
|
228
230
|
description: "Check third-party service connections (GitHub, Slack, etc.)",
|
|
229
231
|
load: async () => {
|
|
230
|
-
return (await import("./connector-
|
|
232
|
+
return (await import("./connector-ZJ4GNXOR.js")).zeroConnectorCommand;
|
|
231
233
|
}
|
|
232
234
|
},
|
|
233
235
|
{
|
|
234
236
|
name: "mail",
|
|
235
237
|
description: "Review and send mail through Gmail or Outlook Mail",
|
|
236
238
|
load: async () => {
|
|
237
|
-
return (await import("./mail-
|
|
239
|
+
return (await import("./mail-U5LPAC7X.js")).zeroMailCommand;
|
|
238
240
|
}
|
|
239
241
|
},
|
|
240
242
|
{
|
|
241
243
|
name: "credit",
|
|
242
244
|
description: "View or buy credits",
|
|
243
245
|
load: async () => {
|
|
244
|
-
return (await import("./credit-
|
|
246
|
+
return (await import("./credit-5F56FMHI.js")).zeroCreditCommand;
|
|
245
247
|
}
|
|
246
248
|
},
|
|
247
249
|
{
|
|
248
250
|
name: "upgrade",
|
|
249
251
|
description: "Create a workspace plan upgrade link",
|
|
250
252
|
load: async () => {
|
|
251
|
-
return (await import("./upgrade-
|
|
253
|
+
return (await import("./upgrade-63B4TM4E.js")).zeroUpgradeCommand;
|
|
252
254
|
}
|
|
253
255
|
},
|
|
254
256
|
{
|
|
255
257
|
name: "doctor",
|
|
256
258
|
description: "Diagnose runtime issues (connector health, permission denials)",
|
|
257
259
|
load: async () => {
|
|
258
|
-
return (await import("./doctor-
|
|
260
|
+
return (await import("./doctor-Y724BLON.js")).zeroDoctorCommand;
|
|
259
261
|
}
|
|
260
262
|
},
|
|
261
263
|
{
|
|
262
264
|
name: "preference",
|
|
263
265
|
description: "View or update user preferences (timezone, notifications)",
|
|
264
266
|
load: async () => {
|
|
265
|
-
return (await import("./preference-
|
|
267
|
+
return (await import("./preference-BFLHPME6.js")).zeroPreferenceCommand;
|
|
266
268
|
}
|
|
267
269
|
},
|
|
268
270
|
{
|
|
269
271
|
name: "secret",
|
|
270
272
|
description: "Read or write secrets (API keys, tokens)",
|
|
271
273
|
load: async () => {
|
|
272
|
-
return (await import("./secret-
|
|
274
|
+
return (await import("./secret-QORKNSMC.js")).zeroSecretCommand;
|
|
273
275
|
}
|
|
274
276
|
},
|
|
275
277
|
{
|
|
276
278
|
name: "github",
|
|
277
279
|
description: "Upload and download GitHub files",
|
|
278
280
|
load: async () => {
|
|
279
|
-
return (await import("./github-
|
|
281
|
+
return (await import("./github-ZXWGL5Q6.js")).zeroGithubCommand;
|
|
280
282
|
}
|
|
281
283
|
},
|
|
282
284
|
{
|
|
283
285
|
name: "slack",
|
|
284
286
|
description: "Send messages, upload files, and download files from Slack as the bot",
|
|
285
287
|
load: async () => {
|
|
286
|
-
return (await import("./slack-
|
|
288
|
+
return (await import("./slack-MD6HYUDE.js")).zeroSlackCommand;
|
|
287
289
|
}
|
|
288
290
|
},
|
|
289
291
|
{
|
|
290
292
|
name: "feishu",
|
|
291
293
|
description: "Send messages to Feishu as an organization bot",
|
|
292
294
|
load: async () => {
|
|
293
|
-
return (await import("./feishu-
|
|
295
|
+
return (await import("./feishu-T5ZIWV53.js")).zeroFeishuCommand;
|
|
294
296
|
}
|
|
295
297
|
},
|
|
296
298
|
{
|
|
297
299
|
name: "teams",
|
|
298
300
|
description: "Send Microsoft Teams messages, upload files, and download files",
|
|
299
301
|
load: async () => {
|
|
300
|
-
return (await import("./teams-
|
|
302
|
+
return (await import("./teams-LO3PPNA2.js")).zeroTeamsCommand;
|
|
301
303
|
}
|
|
302
304
|
},
|
|
303
305
|
{
|
|
304
306
|
name: "telegram",
|
|
305
307
|
description: "Inspect bots, send messages, upload files, and download files from Telegram",
|
|
306
308
|
load: async () => {
|
|
307
|
-
return (await import("./telegram-
|
|
309
|
+
return (await import("./telegram-BZUBR4QS.js")).zeroTelegramCommand;
|
|
308
310
|
}
|
|
309
311
|
},
|
|
310
312
|
{
|
|
311
313
|
name: "phone",
|
|
312
314
|
description: "Send AgentPhone messages, upload files, and download media",
|
|
313
315
|
load: async () => {
|
|
314
|
-
return (await import("./phone-
|
|
316
|
+
return (await import("./phone-6U27VFNC.js")).zeroPhoneCommand;
|
|
315
317
|
}
|
|
316
318
|
},
|
|
317
319
|
{
|
|
318
320
|
name: "variable",
|
|
319
321
|
description: "Read or write non-sensitive configuration values",
|
|
320
322
|
load: async () => {
|
|
321
|
-
return (await import("./variable-
|
|
323
|
+
return (await import("./variable-FW7F63SB.js")).zeroVariableCommand;
|
|
322
324
|
}
|
|
323
325
|
},
|
|
324
326
|
{
|
|
325
327
|
name: "logs",
|
|
326
328
|
description: "View and search agent run logs",
|
|
327
329
|
load: async () => {
|
|
328
|
-
return (await import("./logs-
|
|
330
|
+
return (await import("./logs-4HV44EMA.js")).zeroLogsCommand;
|
|
329
331
|
}
|
|
330
332
|
},
|
|
331
333
|
{
|
|
332
334
|
name: "search",
|
|
333
335
|
description: "Search logs, chat, or get a recipe for external sources",
|
|
334
336
|
load: async () => {
|
|
335
|
-
return (await import("./search-
|
|
337
|
+
return (await import("./search-B2V6NTUP.js")).zeroSearchCommand;
|
|
336
338
|
}
|
|
337
339
|
},
|
|
338
340
|
{
|
|
339
341
|
name: "chat",
|
|
340
342
|
description: "Manage the current web chat thread",
|
|
341
343
|
load: async () => {
|
|
342
|
-
return (await import("./chat-
|
|
344
|
+
return (await import("./chat-I2URW23Z.js")).zeroChatCommand;
|
|
343
345
|
}
|
|
344
346
|
},
|
|
345
347
|
{
|
|
346
348
|
name: "resource",
|
|
347
349
|
description: "Pull registry resources from private R2-backed archives",
|
|
348
350
|
load: async () => {
|
|
349
|
-
return (await import("./resource-
|
|
351
|
+
return (await import("./resource-C3PAGM7Y.js")).zeroResourceCommand;
|
|
350
352
|
}
|
|
351
353
|
},
|
|
352
354
|
{
|
|
353
355
|
name: "whoami",
|
|
354
356
|
description: "Show agent identity, run ID, and capabilities",
|
|
355
357
|
load: async () => {
|
|
356
|
-
return (await import("./whoami-
|
|
358
|
+
return (await import("./whoami-UI67766P.js")).zeroWhoamiCommand;
|
|
357
359
|
}
|
|
358
360
|
},
|
|
359
361
|
{
|
|
@@ -367,105 +369,112 @@ var ZERO_COMMAND_DEFINITIONS = [
|
|
|
367
369
|
name: "workflow",
|
|
368
370
|
description: "Manage workflows",
|
|
369
371
|
load: async () => {
|
|
370
|
-
return (await import("./workflow-
|
|
372
|
+
return (await import("./workflow-CXWRSWUP.js")).zeroWorkflowCommand;
|
|
371
373
|
}
|
|
372
374
|
},
|
|
373
375
|
{
|
|
374
376
|
name: "goal",
|
|
375
377
|
description: "Manage the current thread goal",
|
|
376
378
|
load: async () => {
|
|
377
|
-
return (await import("./goal-
|
|
379
|
+
return (await import("./goal-22N3CH3F.js")).zeroGoalCommand;
|
|
378
380
|
}
|
|
379
381
|
},
|
|
380
382
|
{
|
|
381
383
|
name: "developer-support",
|
|
382
384
|
description: "Submit a diagnostic report to the dev team",
|
|
383
385
|
load: async () => {
|
|
384
|
-
return (await import("./developer-support-
|
|
386
|
+
return (await import("./developer-support-DMN7JGPX.js")).zeroDeveloperSupportCommand;
|
|
385
387
|
}
|
|
386
388
|
},
|
|
387
389
|
{
|
|
388
390
|
name: "computer-use",
|
|
389
391
|
description: "Desktop app computer use through Zero CLI",
|
|
390
392
|
load: async () => {
|
|
391
|
-
return (await import("./computer-use-
|
|
393
|
+
return (await import("./computer-use-OVYDVFLM.js")).zeroComputerUseCommand;
|
|
394
|
+
}
|
|
395
|
+
},
|
|
396
|
+
{
|
|
397
|
+
name: "browser",
|
|
398
|
+
description: "Managed remote browser sessions for agent-browser",
|
|
399
|
+
load: async () => {
|
|
400
|
+
return (await import("./browser-GMLGBTV7.js")).zeroBrowserCommand;
|
|
392
401
|
}
|
|
393
402
|
},
|
|
394
403
|
{
|
|
395
404
|
name: "generate",
|
|
396
405
|
description: "Generate assets via vm0's built-in pipelines or get connector skill-invocation guidance",
|
|
397
406
|
load: async () => {
|
|
398
|
-
return (await import("./generate-
|
|
407
|
+
return (await import("./generate-JFRB6NBZ.js")).generateCommand;
|
|
399
408
|
}
|
|
400
409
|
},
|
|
401
410
|
{
|
|
402
411
|
name: "web",
|
|
403
412
|
description: "Upload and download files via the web chat endpoint",
|
|
404
413
|
load: async () => {
|
|
405
|
-
return (await import("./web-
|
|
414
|
+
return (await import("./web-GBSYVVYF.js")).zeroWebCommand;
|
|
406
415
|
}
|
|
407
416
|
},
|
|
408
417
|
{
|
|
409
418
|
name: "video",
|
|
410
419
|
description: "Video processing utilities",
|
|
411
420
|
load: async () => {
|
|
412
|
-
return (await import("./video-
|
|
421
|
+
return (await import("./video-RWCQZ4XP.js")).zeroVideoCommand;
|
|
413
422
|
}
|
|
414
423
|
},
|
|
415
424
|
{
|
|
416
425
|
name: "host",
|
|
417
426
|
description: "Publish static sites and clone owned hosted site files",
|
|
418
427
|
load: async () => {
|
|
419
|
-
return (await import("./host-
|
|
428
|
+
return (await import("./host-I7S5PYUY.js")).zeroHostCommand;
|
|
420
429
|
}
|
|
421
430
|
},
|
|
422
431
|
{
|
|
423
432
|
name: "maps",
|
|
424
433
|
description: "Use managed zero maps services",
|
|
425
434
|
load: async () => {
|
|
426
|
-
return (await import("./maps-
|
|
435
|
+
return (await import("./maps-PF5WHYEC.js")).zeroMapsCommand;
|
|
427
436
|
}
|
|
428
437
|
},
|
|
429
438
|
{
|
|
430
439
|
name: "weather",
|
|
431
440
|
description: "Use managed Zero weather services",
|
|
432
441
|
load: async () => {
|
|
433
|
-
return (await import("./weather-
|
|
442
|
+
return (await import("./weather-ST6CIHV4.js")).zeroWeatherCommand;
|
|
434
443
|
}
|
|
435
444
|
},
|
|
436
445
|
{
|
|
437
446
|
name: "scrape",
|
|
438
447
|
description: "Scrape public web pages through managed zero scrape",
|
|
439
448
|
load: async () => {
|
|
440
|
-
return (await import("./scrape-
|
|
449
|
+
return (await import("./scrape-5XL47HZY.js")).zeroScrapeCommand;
|
|
441
450
|
}
|
|
442
451
|
},
|
|
443
452
|
{
|
|
444
453
|
name: "people-search",
|
|
445
454
|
description: "Find professionals through managed zero people search",
|
|
446
455
|
load: async () => {
|
|
447
|
-
return (await import("./people-search-
|
|
456
|
+
return (await import("./people-search-GUIJICYT.js")).zeroPeopleSearchCommand;
|
|
448
457
|
}
|
|
449
458
|
},
|
|
450
459
|
{
|
|
451
460
|
name: "web-search",
|
|
452
461
|
description: "Search the public web through managed zero web search",
|
|
453
462
|
load: async () => {
|
|
454
|
-
return (await import("./web-search-
|
|
463
|
+
return (await import("./web-search-AZXILILB.js")).zeroWebSearchCommand;
|
|
455
464
|
}
|
|
456
465
|
},
|
|
457
466
|
{
|
|
458
467
|
name: "finance",
|
|
459
468
|
description: "Query financial instruments through managed zero finance",
|
|
460
469
|
load: async () => {
|
|
461
|
-
return (await import("./finance-
|
|
470
|
+
return (await import("./finance-4ZRCXMFS.js")).zeroFinanceCommand;
|
|
462
471
|
}
|
|
463
472
|
},
|
|
464
473
|
{
|
|
465
474
|
name: "banking",
|
|
466
475
|
description: "Use managed zero banking services",
|
|
467
476
|
load: async () => {
|
|
468
|
-
return (await import("./banking-
|
|
477
|
+
return (await import("./banking-K734DGW4.js")).zeroBankingCommand;
|
|
469
478
|
}
|
|
470
479
|
}
|
|
471
480
|
];
|
|
@@ -497,10 +506,11 @@ function shouldHideCommand(name, payload, featureSwitchOverrides) {
|
|
|
497
506
|
}
|
|
498
507
|
function isCommandFeatureEnabled(name, payload, featureSwitchOverrides) {
|
|
499
508
|
const featureSwitch = COMMAND_FEATURE_SWITCH_MAP[name];
|
|
509
|
+
const overrides = featureSwitchOverrides ?? payload?.featureSwitchOverrides;
|
|
500
510
|
return !featureSwitch || isFeatureEnabled(featureSwitch, {
|
|
501
511
|
userId: payload?.userId,
|
|
502
512
|
orgId: payload?.orgId,
|
|
503
|
-
overrides
|
|
513
|
+
overrides
|
|
504
514
|
});
|
|
505
515
|
}
|
|
506
516
|
function addZeroCommand(prog, cmd, payload, featureSwitchOverrides) {
|
|
@@ -655,7 +665,7 @@ function registerZeroCommands(prog, commands, featureSwitchOverrides) {
|
|
|
655
665
|
var program = new Command();
|
|
656
666
|
program.name("zero").description(
|
|
657
667
|
"Zero CLI \u2014 interact with the zero platform from inside the sandbox"
|
|
658
|
-
).version("9.
|
|
668
|
+
).version("9.255.0").addHelpText("after", () => {
|
|
659
669
|
return buildZeroHelpText();
|
|
660
670
|
});
|
|
661
671
|
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/connectors/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 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 upgrade: FeatureSwitchKey.PlanUpgradeGuidance,\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: \"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 return (\n !featureSwitch ||\n isFeatureEnabled(featureSwitch, {\n userId: payload?.userId,\n orgId: payload?.orgId,\n overrides: featureSwitchOverrides,\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/connectors/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 upgrade: FeatureSwitchKey.PlanUpgradeGuidance,\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":[]}
|