@vm0/cli 9.143.0 → 9.144.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.
@@ -74083,7 +74083,7 @@ if (DSN) {
74083
74083
  init2({
74084
74084
  dsn: DSN,
74085
74085
  environment: process.env.SENTRY_ENVIRONMENT ?? "production",
74086
- release: "9.143.0",
74086
+ release: "9.144.1",
74087
74087
  sendDefaultPii: false,
74088
74088
  tracesSampleRate: 0,
74089
74089
  shutdownTimeout: 500,
@@ -74102,7 +74102,7 @@ if (DSN) {
74102
74102
  }
74103
74103
  });
74104
74104
  setContext("cli", {
74105
- version: "9.143.0",
74105
+ version: "9.144.1",
74106
74106
  command: process.argv.slice(2).join(" ")
74107
74107
  });
74108
74108
  setContext("runtime", {
@@ -99599,27 +99599,6 @@ var msg9 = {
99599
99599
  }
99600
99600
  };
99601
99601
 
99602
- // ../../packages/connectors/src/connectors/nano-banana.ts
99603
- init_esm_shims();
99604
- var nanoBanana = {
99605
- "nano-banana": {
99606
- label: "Nano Banana",
99607
- category: "ai-image-video",
99608
- generation: ["image"],
99609
- environmentMapping: {},
99610
- helpText: "Google Gemini image generation, billed to your org credits",
99611
- featureFlag: "platformConnectors" /* PlatformConnectors */,
99612
- authMethods: {
99613
- platform: {
99614
- label: "Enable",
99615
- helpText: "Image generations are billed to your organization's credits. By enabling, you agree that prompts and reference images are sent to the Google Gemini API.",
99616
- secrets: {}
99617
- }
99618
- },
99619
- defaultAuthMethod: "platform"
99620
- }
99621
- };
99622
-
99623
99602
  // ../../packages/connectors/src/connectors/amplitude.ts
99624
99603
  init_esm_shims();
99625
99604
  var amplitude = {
@@ -100344,7 +100323,6 @@ var CONNECTOR_TYPES_DEF = {
100344
100323
  ...db9,
100345
100324
  ...drive9,
100346
100325
  ...msg9,
100347
- ...nanoBanana,
100348
100326
  ...amplitude,
100349
100327
  ...attio,
100350
100328
  ...buffer,
@@ -102559,23 +102537,31 @@ var MODEL_PROVIDER_TYPES = {
102559
102537
  // layer at egress) — keeping them non-serverOnly preserves the
102560
102538
  // placeholder injection path. CHATGPT_REFRESH_TOKEN and
102561
102539
  // CHATGPT_ID_TOKEN stay serverOnly per the #7365 invariant.
102540
+ //
102541
+ // All four are `derived: true` — the server-side parser populates
102542
+ // them from the user-pasted CODEX_AUTH_JSON. The UI MUST NOT render
102543
+ // them as input fields (per #12024).
102562
102544
  CHATGPT_ACCESS_TOKEN: {
102563
102545
  label: "CHATGPT_ACCESS_TOKEN",
102564
- required: true
102546
+ required: true,
102547
+ derived: true
102565
102548
  },
102566
102549
  CHATGPT_REFRESH_TOKEN: {
102567
102550
  label: "CHATGPT_REFRESH_TOKEN",
102568
102551
  required: true,
102569
- serverOnly: true
102552
+ serverOnly: true,
102553
+ derived: true
102570
102554
  },
102571
102555
  CHATGPT_ACCOUNT_ID: {
102572
102556
  label: "CHATGPT_ACCOUNT_ID",
102573
- required: true
102557
+ required: true,
102558
+ derived: true
102574
102559
  },
102575
102560
  CHATGPT_ID_TOKEN: {
102576
102561
  label: "CHATGPT_ID_TOKEN",
102577
102562
  required: true,
102578
- serverOnly: true
102563
+ serverOnly: true,
102564
+ derived: true
102579
102565
  }
102580
102566
  }
102581
102567
  }
@@ -103010,11 +102996,24 @@ var pendingMessageSchema = external_exports.object({
103010
102996
  content: external_exports.string().nullable(),
103011
102997
  attachments: external_exports.array(persistedAttachmentSchema).nullable(),
103012
102998
  createdAt: external_exports.string(),
103013
- updatedAt: external_exports.string()
102999
+ updatedAt: external_exports.string(),
103000
+ /**
103001
+ * Client-generated UUID. The auto-send path uses this as the new
103002
+ * `chat_messages.id` so the optimistic queued bubble reconciles with the
103003
+ * real row by matching id once the server dispatches the queued message.
103004
+ * Nullable for back-compat with rows queued before this field landed.
103005
+ */
103006
+ clientMessageId: external_exports.string().uuid().nullable()
103014
103007
  });
103015
103008
  var appendPendingMessageBodySchema = external_exports.object({
103016
103009
  content: external_exports.string().min(1).optional(),
103017
- attachments: external_exports.array(persistedAttachmentSchema).min(1).optional()
103010
+ attachments: external_exports.array(persistedAttachmentSchema).min(1).optional(),
103011
+ /**
103012
+ * Pre-generated UUID the client uses for its optimistic queued-message
103013
+ * bubble. Persisted on the thread and reused as `chat_messages.id`
103014
+ * when the auto-send path dispatches the queued message.
103015
+ */
103016
+ clientMessageId: external_exports.string().uuid().optional()
103018
103017
  }).refine(
103019
103018
  (body) => {
103020
103019
  return body.content !== void 0 || body.attachments !== void 0;
@@ -105588,6 +105587,43 @@ async function generateWebVoice(options) {
105588
105587
  }
105589
105588
  return await response.json();
105590
105589
  }
105590
+ async function generateWebImage(options) {
105591
+ const baseUrl = await getBaseUrl();
105592
+ const token = await getActiveToken();
105593
+ if (!token) {
105594
+ throw new ApiRequestError("Not authenticated", "UNAUTHORIZED", 401);
105595
+ }
105596
+ const headers = {
105597
+ Authorization: `Bearer ${token}`,
105598
+ "Content-Type": "application/json"
105599
+ };
105600
+ const bypassSecret = process.env.VERCEL_AUTOMATION_BYPASS_SECRET;
105601
+ if (bypassSecret) {
105602
+ headers["x-vercel-protection-bypass"] = bypassSecret;
105603
+ }
105604
+ const response = await fetch(
105605
+ new URL("/api/zero/image-io/generate", baseUrl),
105606
+ {
105607
+ method: "POST",
105608
+ headers,
105609
+ body: JSON.stringify({
105610
+ prompt: options.prompt,
105611
+ ...options.size ? { size: options.size } : {},
105612
+ ...options.quality ? { quality: options.quality } : {},
105613
+ ...options.background ? { background: options.background } : {},
105614
+ ...options.outputFormat ? { outputFormat: options.outputFormat } : {}
105615
+ })
105616
+ }
105617
+ );
105618
+ if (!response.ok) {
105619
+ const { message, code } = await parseErrorBody(
105620
+ response,
105621
+ "Failed to generate image"
105622
+ );
105623
+ throw new ApiRequestError(message, code, response.status);
105624
+ }
105625
+ return await response.json();
105626
+ }
105591
105627
 
105592
105628
  // src/lib/utils/prompt-utils.ts
105593
105629
  init_esm_shims();
@@ -113524,45 +113560,6 @@ var n8nFirewall = {
113524
113560
  ]
113525
113561
  };
113526
113562
 
113527
- // ../../packages/connectors/src/firewalls/nano-banana.generated.ts
113528
- init_esm_shims();
113529
- var nanoBananaFirewall = {
113530
- name: "nano-banana",
113531
- description: "Google Gemini image generation (Nano Banana)",
113532
- placeholders: {
113533
- NANO_BANANA_TOKEN: "CoffeeSafeLocalCoffeeSafeLocalCoffeeSafeLocalCoffeeSaf"
113534
- },
113535
- apis: [
113536
- {
113537
- base: "https://generativelanguage.googleapis.com/v1beta/models/gemini-3-pro-image-preview:generateContent",
113538
- auth: {
113539
- headers: {
113540
- "x-goog-api-key": "${{ secrets.NANO_BANANA_TOKEN }}"
113541
- }
113542
- },
113543
- permissions: []
113544
- },
113545
- {
113546
- base: "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.1-flash-image-preview:generateContent",
113547
- auth: {
113548
- headers: {
113549
- "x-goog-api-key": "${{ secrets.NANO_BANANA_TOKEN }}"
113550
- }
113551
- },
113552
- permissions: []
113553
- },
113554
- {
113555
- base: "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-image:generateContent",
113556
- auth: {
113557
- headers: {
113558
- "x-goog-api-key": "${{ secrets.NANO_BANANA_TOKEN }}"
113559
- }
113560
- },
113561
- permissions: []
113562
- }
113563
- ]
113564
- };
113565
-
113566
113563
  // ../../packages/connectors/src/firewalls/neon.generated.ts
113567
113564
  init_esm_shims();
113568
113565
  var neonFirewall = {
@@ -117520,7 +117517,6 @@ var CONNECTOR_FIREWALLS = {
117520
117517
  monday: mondayFirewall,
117521
117518
  msg9: msg9Firewall,
117522
117519
  n8n: n8nFirewall,
117523
- "nano-banana": nanoBananaFirewall,
117524
117520
  neon: neonFirewall,
117525
117521
  notion: notionFirewall,
117526
117522
  onyx: onyxFirewall,
@@ -120430,7 +120426,8 @@ var FEATURE_SWITCHES = {
120430
120426
  ["apiBackend" /* ApiBackend */]: {
120431
120427
  maintainer: "ethan@vm0.ai",
120432
120428
  description: "Route platform API traffic to the api backend host instead of the www backend host. Unported endpoints continue through the api backend's web fallback proxy.",
120433
- enabled: false
120429
+ enabled: false,
120430
+ enabledOrgIdHashes: STAFF_ORG_ID_HASHES
120434
120431
  },
120435
120432
  ["connectorCategories" /* ConnectorCategories */]: {
120436
120433
  maintainer: "ethan@vm0.ai",
@@ -121804,6 +121801,7 @@ export {
121804
121801
  downloadWebFile,
121805
121802
  uploadWebFile,
121806
121803
  generateWebVoice,
121804
+ generateWebImage,
121807
121805
  getInstructionsStorageName,
121808
121806
  parseGitHubUrl,
121809
121807
  getInstructionsFilename,
@@ -121850,4 +121848,4 @@ undici/lib/web/fetch/body.js:
121850
121848
  undici/lib/web/websocket/frame.js:
121851
121849
  (*! ws. MIT License. Einar Otto Stangvik <einaros@gmail.com> *)
121852
121850
  */
121853
- //# sourceMappingURL=chunk-FEQSPUBX.js.map
121851
+ //# sourceMappingURL=chunk-CFIYV4PA.js.map