@vm0/cli 9.110.2 → 9.111.1

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.
@@ -34652,7 +34652,7 @@ if (DSN) {
34652
34652
  Sentry.init({
34653
34653
  dsn: DSN,
34654
34654
  environment: process.env.SENTRY_ENVIRONMENT ?? "production",
34655
- release: "9.110.2",
34655
+ release: "9.111.1",
34656
34656
  sendDefaultPii: false,
34657
34657
  tracesSampleRate: 0,
34658
34658
  shutdownTimeout: 500,
@@ -34671,7 +34671,7 @@ if (DSN) {
34671
34671
  }
34672
34672
  });
34673
34673
  Sentry.setContext("cli", {
34674
- version: "9.110.2",
34674
+ version: "9.111.1",
34675
34675
  command: process.argv.slice(2).join(" ")
34676
34676
  });
34677
34677
  Sentry.setContext("runtime", {
@@ -55148,9 +55148,9 @@ var axiomFirewall = {
55148
55148
  {
55149
55149
  name: "query|read",
55150
55150
  rules: [
55151
- "POST /v1/datasets/_apl?format=tabular",
55151
+ "POST /v1/datasets/_apl",
55152
55152
  "POST /v1/datasets/{dataset_name}/query",
55153
- "POST /v1/query/_apl?format=tabular",
55153
+ "POST /v1/query/_apl",
55154
55154
  "POST /v1/query/_mpl",
55155
55155
  "POST /v1/query/batch",
55156
55156
  "GET /v1/query/metrics/info/datasets/{dataset}/metrics",
@@ -57725,6 +57725,7 @@ var googleDriveFirewall = {
57725
57725
  "POST /v2/drives/{driveId}/unhide",
57726
57726
  "GET /v2/files",
57727
57727
  "POST /v2/files",
57728
+ "GET /v2/files/generateCseToken",
57728
57729
  "GET /v2/files/generateIds",
57729
57730
  "DELETE /v2/files/trash",
57730
57731
  "GET /v2/files/{fileId}",
@@ -57797,6 +57798,7 @@ var googleDriveFirewall = {
57797
57798
  "POST /v3/drives/{driveId}/unhide",
57798
57799
  "GET /v3/files",
57799
57800
  "POST /v3/files",
57801
+ "GET /v3/files/generateCseToken",
57800
57802
  "GET /v3/files/generateIds",
57801
57803
  "DELETE /v3/files/trash",
57802
57804
  "GET /v3/files/{fileId}",
@@ -63631,14 +63633,13 @@ var DEFAULT_ALLOWED = {
63631
63633
  };
63632
63634
  function getDefaultFirewallPolicies(type) {
63633
63635
  const allowed = DEFAULT_ALLOWED[type];
63634
- if (!allowed) return null;
63635
- const allowSet = new Set(allowed);
63636
+ const allowSet = allowed ? new Set(allowed) : null;
63636
63637
  const config2 = getConnectorFirewall(type);
63637
63638
  const result = {};
63638
63639
  for (const api of config2.apis) {
63639
63640
  if (api.permissions) {
63640
63641
  for (const p of api.permissions) {
63641
- result[p.name] = allowSet.has(p.name) ? "allow" : "deny";
63642
+ result[p.name] = !allowSet || allowSet.has(p.name) ? "allow" : "deny";
63642
63643
  }
63643
63644
  }
63644
63645
  }
@@ -63648,10 +63649,11 @@ function resolveFirewallPolicies(stored, connectors) {
63648
63649
  let resolved = stored;
63649
63650
  for (const connector of connectors) {
63650
63651
  if (!isFirewallConnectorType(connector)) continue;
63651
- if (resolved?.[connector]) continue;
63652
63652
  const defaults = getDefaultFirewallPolicies(connector);
63653
- if (!defaults) continue;
63654
- resolved = { ...resolved, [connector]: defaults };
63653
+ resolved = {
63654
+ ...resolved,
63655
+ [connector]: { ...defaults, ...resolved?.[connector] }
63656
+ };
63655
63657
  }
63656
63658
  return resolved;
63657
63659
  }
@@ -68210,6 +68212,14 @@ var firewallPoliciesSchema = external_exports.record(
68210
68212
  external_exports.string(),
68211
68213
  external_exports.record(external_exports.string(), firewallPolicyValueSchema)
68212
68214
  );
68215
+ var grantedPermissionSchema = external_exports.object({
68216
+ allow: external_exports.array(external_exports.string()),
68217
+ allowUnknown: external_exports.boolean()
68218
+ });
68219
+ var grantedPermissionsSchema = external_exports.record(
68220
+ external_exports.string(),
68221
+ grantedPermissionSchema
68222
+ );
68213
68223
  var BASE_URL_VARS_PATTERN = /\$\{\{\s*vars\.([a-zA-Z_][a-zA-Z0-9_]*)\s*\}\}/;
68214
68224
  var BASE_URL_VARS_PATTERN_G = new RegExp(BASE_URL_VARS_PATTERN.source, "g");
68215
68225
 
@@ -70348,7 +70358,10 @@ var chatMessagesContract = c10.router({
70348
70358
  agentId: external_exports.string().min(1),
70349
70359
  prompt: external_exports.string().min(1),
70350
70360
  threadId: external_exports.string().optional(),
70351
- modelProvider: external_exports.string().optional()
70361
+ modelProvider: external_exports.string().optional(),
70362
+ // Optional for backward compatibility: older clients that omit this field
70363
+ // still trigger title generation (server guards with !== false, not === true).
70364
+ hasTextContent: external_exports.boolean().optional()
70352
70365
  }),
70353
70366
  responses: {
70354
70367
  201: external_exports.object({
@@ -70551,8 +70564,10 @@ var storedExecutionContextSchema = external_exports.object({
70551
70564
  userTimezone: external_exports.string().optional(),
70552
70565
  // Memory storage name (for first-run when manifest.memory is null)
70553
70566
  memoryName: external_exports.string().optional(),
70554
- // Firewall for proxy-side token replacement
70567
+ // Firewall for proxy-side token replacement (complete config, all permissions)
70555
70568
  firewalls: firewallsSchema.optional(),
70569
+ // Per-firewall grant config: which permissions are granted + allowUnknown flag
70570
+ grantedPermissions: grantedPermissionsSchema.optional(),
70556
70571
  // Tools to disable in Claude CLI (passed as --disallowed-tools)
70557
70572
  disallowedTools: external_exports.array(external_exports.string()).optional(),
70558
70573
  // Tools to make available in Claude CLI (passed as --tools)
@@ -70591,8 +70606,10 @@ var executionContextSchema = external_exports.object({
70591
70606
  userTimezone: external_exports.string().optional(),
70592
70607
  // Memory storage name (for first-run when manifest.memory is null)
70593
70608
  memoryName: external_exports.string().optional(),
70594
- // Firewall for proxy-side token replacement
70609
+ // Firewall for proxy-side token replacement (complete config, all permissions)
70595
70610
  firewalls: firewallsSchema.optional(),
70611
+ // Per-firewall grant config: which permissions are granted + allowUnknown flag
70612
+ grantedPermissions: grantedPermissionsSchema.optional(),
70596
70613
  // Tools to disable in Claude CLI (passed as --disallowed-tools)
70597
70614
  disallowedTools: external_exports.array(external_exports.string()).optional(),
70598
70615
  // Tools to make available in Claude CLI (passed as --tools)
@@ -71033,6 +71050,7 @@ var zeroAgentResponseSchema = external_exports.object({
71033
71050
  sound: external_exports.string().nullable(),
71034
71051
  avatarUrl: external_exports.string().nullable(),
71035
71052
  permissionPolicies: firewallPoliciesSchema.nullable(),
71053
+ allowUnknownEndpoints: external_exports.record(external_exports.string(), external_exports.boolean()).nullable(),
71036
71054
  customSkills: external_exports.array(external_exports.string()).default([])
71037
71055
  });
71038
71056
  var zeroAgentRequestSchema = external_exports.object({
@@ -71144,7 +71162,8 @@ var zeroAgentsByIdContract = c17.router({
71144
71162
  });
71145
71163
  var zeroAgentPermissionPoliciesRequestSchema = external_exports.object({
71146
71164
  agentId: external_exports.string().uuid(),
71147
- policies: firewallPoliciesSchema
71165
+ policies: firewallPoliciesSchema,
71166
+ allowUnknownEndpoints: external_exports.record(external_exports.string(), external_exports.boolean()).optional()
71148
71167
  });
71149
71168
  var zeroAgentPermissionPoliciesContract = c17.router({
71150
71169
  update: {
@@ -72058,6 +72077,7 @@ var runContextResponseSchema = external_exports.object({
72058
72077
  vars: external_exports.record(external_exports.string(), external_exports.string()).nullable(),
72059
72078
  environment: external_exports.record(external_exports.string(), external_exports.string()),
72060
72079
  firewalls: external_exports.array(runContextFirewallSchema),
72080
+ grantedPermissions: grantedPermissionsSchema.nullable().optional(),
72061
72081
  volumes: external_exports.array(runContextVolumeSchema),
72062
72082
  artifact: runContextArtifactSchema.nullable(),
72063
72083
  memory: runContextArtifactSchema.nullable()
@@ -73001,94 +73021,60 @@ var zeroMemberCreditCapContract = c38.router({
73001
73021
  }
73002
73022
  });
73003
73023
 
73004
- // ../../packages/core/src/contracts/zero-ask-user.ts
73024
+ // ../../packages/core/src/contracts/zero-developer-support.ts
73005
73025
  init_esm_shims();
73006
73026
  var c39 = initContract();
73007
- var askUserQuestionItemSchema = external_exports.object({
73008
- question: external_exports.string().min(1),
73009
- header: external_exports.string().max(12).optional(),
73010
- options: external_exports.array(
73011
- external_exports.object({
73012
- label: external_exports.string(),
73013
- description: external_exports.string().optional()
73014
- })
73015
- ).min(1),
73016
- multiSelect: external_exports.boolean().optional()
73017
- });
73018
- var askUserQuestionBodySchema = external_exports.object({
73019
- questions: external_exports.array(askUserQuestionItemSchema).min(1)
73027
+ var developerSupportBodySchema = external_exports.object({
73028
+ title: external_exports.string().min(1, "Title is required"),
73029
+ description: external_exports.string().min(1, "Description is required"),
73030
+ consentCode: external_exports.string().optional()
73020
73031
  });
73021
- var askUserQuestionResponseSchema = external_exports.object({
73022
- pendingId: external_exports.string().uuid()
73032
+ var consentCodeResponseSchema = external_exports.object({
73033
+ consentCode: external_exports.string()
73023
73034
  });
73024
- var askUserAnswerStatusSchema = external_exports.enum([
73025
- "pending",
73026
- "answered",
73027
- "expired"
73028
- ]);
73029
- var askUserAnswerResponseSchema = external_exports.object({
73030
- status: askUserAnswerStatusSchema,
73031
- answer: external_exports.string().optional()
73035
+ var submitResponseSchema = external_exports.object({
73036
+ reference: external_exports.string()
73032
73037
  });
73033
- var zeroAskUserQuestionContract = c39.router({
73034
- postQuestion: {
73038
+ var zeroDeveloperSupportContract = c39.router({
73039
+ submit: {
73035
73040
  method: "POST",
73036
- path: "/api/zero/ask-user/question",
73041
+ path: "/api/zero/developer-support",
73037
73042
  headers: authHeadersSchema,
73038
- body: askUserQuestionBodySchema,
73043
+ body: developerSupportBodySchema,
73039
73044
  responses: {
73040
- 200: askUserQuestionResponseSchema,
73045
+ 200: external_exports.union([consentCodeResponseSchema, submitResponseSchema]),
73041
73046
  400: apiErrorSchema,
73042
- 401: apiErrorSchema
73043
- },
73044
- summary: "Submit a question for the user and receive a pending ID for polling"
73045
- }
73046
- });
73047
- var zeroAskUserAnswerContract = c39.router({
73048
- getAnswer: {
73049
- method: "GET",
73050
- path: "/api/zero/ask-user/answer",
73051
- headers: authHeadersSchema,
73052
- query: external_exports.object({
73053
- pendingId: external_exports.string().uuid()
73054
- }),
73055
- responses: {
73056
- 200: askUserAnswerResponseSchema,
73057
73047
  401: apiErrorSchema,
73058
- 403: apiErrorSchema,
73059
- 404: apiErrorSchema
73048
+ 403: apiErrorSchema
73060
73049
  },
73061
- summary: "Poll for the user's answer to a pending question"
73050
+ summary: "Developer support: consent code generation or diagnostic submission"
73062
73051
  }
73063
73052
  });
73064
73053
 
73065
- // ../../packages/core/src/contracts/zero-developer-support.ts
73054
+ // ../../packages/core/src/contracts/zero-report-error.ts
73066
73055
  init_esm_shims();
73067
73056
  var c40 = initContract();
73068
- var developerSupportBodySchema = external_exports.object({
73057
+ var reportErrorBodySchema = external_exports.object({
73058
+ runId: external_exports.string().min(1, "Run ID is required"),
73069
73059
  title: external_exports.string().min(1, "Title is required"),
73070
- description: external_exports.string().min(1, "Description is required"),
73071
- consentCode: external_exports.string().optional()
73072
- });
73073
- var consentCodeResponseSchema = external_exports.object({
73074
- consentCode: external_exports.string()
73060
+ description: external_exports.string().optional()
73075
73061
  });
73076
- var submitResponseSchema = external_exports.object({
73062
+ var reportErrorResponseSchema = external_exports.object({
73077
73063
  reference: external_exports.string()
73078
73064
  });
73079
- var zeroDeveloperSupportContract = c40.router({
73065
+ var zeroReportErrorContract = c40.router({
73080
73066
  submit: {
73081
73067
  method: "POST",
73082
- path: "/api/zero/developer-support",
73068
+ path: "/api/zero/report-error",
73083
73069
  headers: authHeadersSchema,
73084
- body: developerSupportBodySchema,
73070
+ body: reportErrorBodySchema,
73085
73071
  responses: {
73086
- 200: external_exports.union([consentCodeResponseSchema, submitResponseSchema]),
73072
+ 200: reportErrorResponseSchema,
73087
73073
  400: apiErrorSchema,
73088
73074
  401: apiErrorSchema,
73089
73075
  403: apiErrorSchema
73090
73076
  },
73091
- summary: "Developer support: consent code generation or diagnostic submission"
73077
+ summary: "Submit error report for a failed run"
73092
73078
  }
73093
73079
  });
73094
73080
 
@@ -74701,26 +74687,6 @@ async function searchZeroLogs(options) {
74701
74687
  handleError(result, "Failed to search zero logs");
74702
74688
  }
74703
74689
 
74704
- // src/lib/api/domains/zero-ask-user.ts
74705
- init_esm_shims();
74706
- async function postAskUserQuestion(body) {
74707
- const config2 = await getClientConfig();
74708
- const client = initClient(zeroAskUserQuestionContract, config2);
74709
- const result = await client.postQuestion({ body, headers: {} });
74710
- if (result.status === 200) return result.body;
74711
- handleError(result, "Failed to post question");
74712
- }
74713
- async function getAskUserAnswer(pendingId) {
74714
- const config2 = await getClientConfig();
74715
- const client = initClient(zeroAskUserAnswerContract, config2);
74716
- const result = await client.getAnswer({
74717
- query: { pendingId },
74718
- headers: {}
74719
- });
74720
- if (result.status === 200) return result.body;
74721
- handleError(result, "Failed to get answer");
74722
- }
74723
-
74724
74690
  // src/lib/api/domains/zero-computer-use.ts
74725
74691
  init_esm_shims();
74726
74692
  async function registerComputerUseHost() {
@@ -75359,7 +75325,15 @@ var EventRenderer = class _EventRenderer {
75359
75325
  static renderRunFailed(error48, runId) {
75360
75326
  console.error("");
75361
75327
  console.error(source_default.red("\u2717 Run failed"));
75362
- console.error(` Error: ${source_default.red(error48 || "Unknown error")}`);
75328
+ const errorText = error48 || "Unknown error";
75329
+ const linkMatch = errorText.match(/\[([^\]]+)\]\(([^)]+)\)/);
75330
+ if (linkMatch) {
75331
+ const messageWithoutLink = errorText.replace(linkMatch[0], "").replace(/\s+$/, "");
75332
+ console.error(` Error: ${source_default.red(messageWithoutLink)}`);
75333
+ console.error(` ${linkMatch[1]}: ${source_default.cyan(linkMatch[2])}`);
75334
+ } else {
75335
+ console.error(` Error: ${source_default.red(errorText)}`);
75336
+ }
75363
75337
  console.error(
75364
75338
  source_default.dim(` (use "vm0 logs ${runId} --system" to view system logs)`)
75365
75339
  );
@@ -75911,8 +75885,6 @@ export {
75911
75885
  getAgentEvents,
75912
75886
  getNetworkLogs,
75913
75887
  searchLogs,
75914
- postAskUserQuestion,
75915
- getAskUserAnswer,
75916
75888
  requestDeveloperSupportConsent,
75917
75889
  submitDeveloperSupport,
75918
75890
  registerComputerUseHost,
@@ -75954,4 +75926,4 @@ undici/lib/web/fetch/body.js:
75954
75926
  undici/lib/web/websocket/frame.js:
75955
75927
  (*! ws. MIT License. Einar Otto Stangvik <einaros@gmail.com> *)
75956
75928
  */
75957
- //# sourceMappingURL=chunk-W353Y7DH.js.map
75929
+ //# sourceMappingURL=chunk-H56HRDOU.js.map