@vm0/cli 9.150.5 → 9.150.6

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.150.5",
74086
+ release: "9.150.6",
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.150.5",
74105
+ version: "9.150.6",
74106
74106
  command: process.argv.slice(2).join(" ")
74107
74107
  });
74108
74108
  setContext("runtime", {
@@ -95787,6 +95787,7 @@ var MODEL_PROVIDER_TYPES = {
95787
95787
  CLAUDE_CODE_SUBAGENT_MODEL: "$model"
95788
95788
  },
95789
95789
  models: [
95790
+ "anthropic/claude-opus-4.7",
95790
95791
  "anthropic/claude-opus-4.6",
95791
95792
  "anthropic/claude-opus-4.5",
95792
95793
  "anthropic/claude-sonnet-4.6",
@@ -95799,6 +95800,53 @@ var MODEL_PROVIDER_TYPES = {
95799
95800
  ],
95800
95801
  defaultModel: "anthropic/claude-sonnet-4.6"
95801
95802
  },
95803
+ // Codex-framework twin of openrouter-api-key. Same upstream gateway (OpenRouter)
95804
+ // and same API key (shared secretName), but routes through OpenRouter's
95805
+ // OpenAI-compatible endpoint surface for GPT models that codex CLI requires.
95806
+ // Pairing rule: the claude-code entry serves Anthropic Messages API
95807
+ // (/v1/messages); this codex entry serves OpenAI Chat Completions / Responses
95808
+ // (/v1/chat/completions, /v1/responses) under the same /api/v1 prefix.
95809
+ "openrouter-codex": {
95810
+ framework: "codex",
95811
+ secretName: "OPENROUTER_API_KEY",
95812
+ label: "OpenRouter (Codex)",
95813
+ secretLabel: "API key",
95814
+ helpText: "Get your API key at: https://openrouter.ai/settings/keys",
95815
+ environmentMapping: {
95816
+ OPENAI_API_KEY: "$secret",
95817
+ OPENAI_BASE_URL: "https://openrouter.ai/api/v1",
95818
+ OPENAI_MODEL: "$model"
95819
+ },
95820
+ models: [
95821
+ "openai/gpt-5.5",
95822
+ "openai/gpt-5.4",
95823
+ "openai/gpt-5.4-mini"
95824
+ ],
95825
+ defaultModel: "openai/gpt-5.5"
95826
+ },
95827
+ // Codex-framework twin of vercel-ai-gateway. Vercel exposes both
95828
+ // Anthropic Messages and OpenAI Chat Completions / Responses on the same
95829
+ // base URL, distinguished by path. The claude-code entry uses /v1/messages;
95830
+ // this codex entry uses /v1/chat/completions or /v1/responses (codex CLI
95831
+ // picks the path it needs).
95832
+ "vercel-ai-gateway-codex": {
95833
+ framework: "codex",
95834
+ secretName: "VERCEL_AI_GATEWAY_API_KEY",
95835
+ label: "Vercel AI Gateway (Codex)",
95836
+ secretLabel: "API key",
95837
+ helpText: "Get your API key from the Vercel AI Gateway dashboard",
95838
+ environmentMapping: {
95839
+ OPENAI_API_KEY: "$secret",
95840
+ OPENAI_BASE_URL: "https://ai-gateway.vercel.sh/v1",
95841
+ OPENAI_MODEL: "$model"
95842
+ },
95843
+ models: [
95844
+ "openai/gpt-5.5",
95845
+ "openai/gpt-5.4",
95846
+ "openai/gpt-5.4-mini"
95847
+ ],
95848
+ defaultModel: "openai/gpt-5.5"
95849
+ },
95802
95850
  "openai-api-key": {
95803
95851
  framework: "codex",
95804
95852
  secretName: "OPENAI_API_KEY",
@@ -96029,6 +96077,10 @@ function getFirewallBaseUrl(type) {
96029
96077
  return "https://chatgpt.com/backend-api/codex";
96030
96078
  }
96031
96079
  if (getFrameworkForType(type) === "codex") {
96080
+ const overrideBase = getEnvironmentMapping(type)?.OPENAI_BASE_URL;
96081
+ if (overrideBase) {
96082
+ return overrideBase.replace(/\/+$/, "");
96083
+ }
96032
96084
  return "https://api.openai.com/v1/responses";
96033
96085
  }
96034
96086
  const base = (getEnvironmentMapping(type)?.ANTHROPIC_BASE_URL ?? ANTHROPIC_API_BASE).replace(/\/+$/, "");
@@ -96114,6 +96166,25 @@ var MODEL_PROVIDER_FIREWALL_CONFIGS = {
96114
96166
  { name: "Authorization", valuePrefix: "Bearer" },
96115
96167
  "sk-CoffeeSafeLocalCoffeeSafeLocalCo"
96116
96168
  ),
96169
+ // Codex-framework twin of openrouter-api-key. Same key shape as the
96170
+ // claude-code entry; the difference is the firewall base URL — codex
96171
+ // SDK hits OpenAI-compatible paths (/chat/completions, /responses)
96172
+ // under https://openrouter.ai/api/v1, derived from the OPENAI_BASE_URL
96173
+ // mapping by getFirewallBaseUrl.
96174
+ "openrouter-codex": mpFirewall(
96175
+ "openrouter-codex",
96176
+ { name: "Authorization", valuePrefix: "Bearer" },
96177
+ "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"
96178
+ ),
96179
+ // Codex-framework twin of vercel-ai-gateway. Same placeholder format
96180
+ // (Vercel gateway proxies upstream); base URL scoped to /v1 prefix by
96181
+ // getFirewallBaseUrl so codex can use either /chat/completions or
96182
+ // /responses paths the gateway exposes.
96183
+ "vercel-ai-gateway-codex": mpFirewall(
96184
+ "vercel-ai-gateway-codex",
96185
+ { name: "Authorization", valuePrefix: "Bearer" },
96186
+ "sk-CoffeeSafeLocalCoffeeSafeLocalCo"
96187
+ ),
96117
96188
  // Placeholder: sk-proj-{156 chars}T3BlbkFJ{156 chars} (typical project key shape)
96118
96189
  // Source: matches turbo/packages/connectors/src/firewalls/openai.generated.ts
96119
96190
  "openai-api-key": mpFirewall(
@@ -96190,6 +96261,8 @@ var modelProviderTypeSchema = external_exports.enum([
96190
96261
  "deepseek-api-key",
96191
96262
  "zai-api-key",
96192
96263
  "vercel-ai-gateway",
96264
+ "openrouter-codex",
96265
+ "vercel-ai-gateway-codex",
96193
96266
  "openai-api-key",
96194
96267
  "codex-oauth-token",
96195
96268
  "azure-foundry",
@@ -104403,17 +104476,229 @@ init_esm_shims();
104403
104476
 
104404
104477
  // ../../packages/api-contracts/src/contracts/webhooks.ts
104405
104478
  init_esm_shims();
104479
+
104480
+ // ../../packages/api-contracts/src/contracts/runners.ts
104481
+ init_esm_shims();
104406
104482
  var c19 = initContract();
104483
+ var runnerGroupSchema = external_exports.string().regex(
104484
+ /^[a-z0-9-]+\/[a-z0-9-]+$/,
104485
+ "Runner group must be in vm0/<name> format (e.g., vm0/production)"
104486
+ );
104487
+ var jobSchema = external_exports.object({
104488
+ runId: external_exports.uuid(),
104489
+ prompt: external_exports.string(),
104490
+ appendSystemPrompt: external_exports.string().nullable(),
104491
+ agentComposeVersionId: external_exports.string().nullable(),
104492
+ vars: external_exports.record(external_exports.string(), external_exports.string()).nullable(),
104493
+ checkpointId: external_exports.uuid().nullable(),
104494
+ experimentalProfile: external_exports.string().optional()
104495
+ });
104496
+ var runnersPollContract = c19.router({
104497
+ poll: {
104498
+ method: "POST",
104499
+ path: "/api/runners/poll",
104500
+ headers: authHeadersSchema,
104501
+ body: external_exports.object({
104502
+ group: runnerGroupSchema,
104503
+ profiles: external_exports.array(external_exports.string()).optional(),
104504
+ heldSessions: external_exports.array(external_exports.string()).max(100).optional()
104505
+ }),
104506
+ responses: {
104507
+ 200: external_exports.object({
104508
+ job: jobSchema.nullable()
104509
+ }),
104510
+ 400: apiErrorSchema,
104511
+ 401: apiErrorSchema,
104512
+ 500: apiErrorSchema
104513
+ },
104514
+ summary: "Poll for pending jobs (long-polling with 30s timeout)"
104515
+ }
104516
+ });
104517
+ var storageEntrySchema = external_exports.object({
104518
+ name: external_exports.string(),
104519
+ mountPath: external_exports.string(),
104520
+ vasStorageName: external_exports.string(),
104521
+ vasVersionId: external_exports.string(),
104522
+ instructionsTargetFilename: external_exports.string().optional(),
104523
+ archiveUrl: external_exports.string()
104524
+ });
104525
+ var artifactEntrySchema = external_exports.object({
104526
+ mountPath: external_exports.string(),
104527
+ vasStorageName: external_exports.string(),
104528
+ vasStorageId: external_exports.string(),
104529
+ vasVersionId: external_exports.string(),
104530
+ archiveUrl: external_exports.string(),
104531
+ manifestUrl: external_exports.string().optional()
104532
+ });
104533
+ var storageManifestSchema = external_exports.object({
104534
+ storages: external_exports.array(storageEntrySchema),
104535
+ artifacts: external_exports.array(artifactEntrySchema)
104536
+ });
104537
+ var resumeSessionSchema = external_exports.object({
104538
+ sessionId: external_exports.string(),
104539
+ sessionHistory: external_exports.string()
104540
+ });
104541
+ var secretConnectorMetadataSchema = external_exports.object({
104542
+ sourceType: external_exports.enum(["connector", "model-provider"]),
104543
+ sourceUserId: external_exports.string().optional(),
104544
+ metadataKey: external_exports.string().optional()
104545
+ });
104546
+ var secretConnectorMetadataMapSchema = external_exports.record(
104547
+ external_exports.string(),
104548
+ secretConnectorMetadataSchema
104549
+ );
104550
+ var storedExecutionContextSchema = external_exports.object({
104551
+ workingDir: external_exports.string(),
104552
+ storageManifest: storageManifestSchema.nullable(),
104553
+ environment: external_exports.record(external_exports.string(), external_exports.string()).nullable(),
104554
+ resumeSession: resumeSessionSchema.nullable(),
104555
+ encryptedSecrets: external_exports.string().nullable(),
104556
+ // AES-256-GCM encrypted Record<string, string> (secret name → value)
104557
+ // Maps secret names to OAuth connector types for runtime token refresh (e.g. { "GMAIL_ACCESS_TOKEN": "gmail" })
104558
+ secretConnectorMap: external_exports.record(external_exports.string(), external_exports.string()).nullable().optional(),
104559
+ // Per-secret refresh metadata, used when a handler needs owner-specific storage (e.g. personal model providers)
104560
+ secretConnectorMetadataMap: secretConnectorMetadataMapSchema.nullable().optional(),
104561
+ cliAgentType: external_exports.string(),
104562
+ // Debug flag to force real Claude in mock environments (internal use only)
104563
+ debugNoMockClaude: external_exports.boolean().optional(),
104564
+ // Debug flag to force real Codex in mock environments (internal use only)
104565
+ debugNoMockCodex: external_exports.boolean().optional(),
104566
+ // Capture HTTP request headers, request bodies, and response bodies in network logs
104567
+ captureNetworkBodies: external_exports.boolean().optional(),
104568
+ // Dispatch timestamp for E2E timing metrics
104569
+ apiStartTime: external_exports.number().optional(),
104570
+ // User's timezone preference (IANA format, e.g., "Asia/Shanghai")
104571
+ userTimezone: external_exports.string().optional(),
104572
+ // Firewall for proxy-side token replacement (complete config, all permissions)
104573
+ firewalls: firewallsSchema.optional(),
104574
+ // Per-firewall network policies: which permissions are granted + unknownPolicy
104575
+ networkPolicies: networkPoliciesSchema.optional(),
104576
+ // Tools to disable in Claude CLI (passed as --disallowed-tools)
104577
+ disallowedTools: external_exports.array(external_exports.string()).optional(),
104578
+ // Tools to make available in Claude CLI (passed as --tools)
104579
+ tools: external_exports.array(external_exports.string()).optional(),
104580
+ // Settings JSON to pass to Claude CLI (passed as --settings)
104581
+ settings: external_exports.string().optional(),
104582
+ // VM profile for resource allocation (e.g., "vm0/default")
104583
+ experimentalProfile: external_exports.string().optional(),
104584
+ // Feature flags evaluated at job creation time (all switch states for user/org)
104585
+ featureFlags: external_exports.record(external_exports.string(), external_exports.boolean()).optional(),
104586
+ billableFirewalls: external_exports.array(external_exports.string()).optional(),
104587
+ modelUsageProvider: external_exports.string().optional()
104588
+ });
104589
+ var executionContextSchema = external_exports.object({
104590
+ runId: external_exports.uuid(),
104591
+ prompt: external_exports.string(),
104592
+ appendSystemPrompt: external_exports.string().nullable(),
104593
+ agentComposeVersionId: external_exports.string().nullable(),
104594
+ vars: external_exports.record(external_exports.string(), external_exports.string()).nullable(),
104595
+ checkpointId: external_exports.uuid().nullable(),
104596
+ sandboxToken: external_exports.string(),
104597
+ // New fields for E2B parity:
104598
+ workingDir: external_exports.string(),
104599
+ storageManifest: storageManifestSchema.nullable(),
104600
+ environment: external_exports.record(external_exports.string(), external_exports.string()).nullable(),
104601
+ resumeSession: resumeSessionSchema.nullable(),
104602
+ secretValues: external_exports.array(external_exports.string()).nullable(),
104603
+ // AES-256-GCM encrypted Record<string, string> — passed through to mitm-addon for auth resolution
104604
+ encryptedSecrets: external_exports.string().nullable(),
104605
+ // Maps secret names to OAuth connector types for runtime token refresh
104606
+ secretConnectorMap: external_exports.record(external_exports.string(), external_exports.string()).nullable().optional(),
104607
+ // Per-secret refresh metadata, used when a handler needs owner-specific storage (e.g. personal model providers)
104608
+ secretConnectorMetadataMap: secretConnectorMetadataMapSchema.nullable().optional(),
104609
+ cliAgentType: external_exports.string(),
104610
+ // Debug flag to force real Claude in mock environments (internal use only)
104611
+ debugNoMockClaude: external_exports.boolean().optional(),
104612
+ // Debug flag to force real Codex in mock environments (internal use only)
104613
+ debugNoMockCodex: external_exports.boolean().optional(),
104614
+ // Capture HTTP request headers, request bodies, and response bodies in network logs
104615
+ captureNetworkBodies: external_exports.boolean().optional(),
104616
+ // Dispatch timestamp for E2E timing metrics
104617
+ apiStartTime: external_exports.number().optional(),
104618
+ // User's timezone preference (IANA format, e.g., "Asia/Shanghai")
104619
+ userTimezone: external_exports.string().optional(),
104620
+ // Firewall for proxy-side token replacement (complete config, all permissions)
104621
+ firewalls: firewallsSchema.optional(),
104622
+ // Per-firewall network policies: which permissions are granted + unknownPolicy
104623
+ networkPolicies: networkPoliciesSchema.optional(),
104624
+ // Tools to disable in Claude CLI (passed as --disallowed-tools)
104625
+ disallowedTools: external_exports.array(external_exports.string()).optional(),
104626
+ // Tools to make available in Claude CLI (passed as --tools)
104627
+ tools: external_exports.array(external_exports.string()).optional(),
104628
+ // Settings JSON to pass to Claude CLI (passed as --settings)
104629
+ settings: external_exports.string().optional(),
104630
+ // VM profile for resource allocation (e.g., "vm0/default")
104631
+ experimentalProfile: external_exports.string().optional(),
104632
+ // Feature flags evaluated at job creation time (all switch states for user/org)
104633
+ featureFlags: external_exports.record(external_exports.string(), external_exports.boolean()).optional(),
104634
+ billableFirewalls: external_exports.array(external_exports.string()).optional(),
104635
+ modelUsageProvider: external_exports.string().optional()
104636
+ });
104637
+ var runnersJobClaimContract = c19.router({
104638
+ claim: {
104639
+ method: "POST",
104640
+ path: "/api/runners/jobs/:id/claim",
104641
+ headers: authHeadersSchema,
104642
+ pathParams: external_exports.object({
104643
+ id: external_exports.uuid()
104644
+ }),
104645
+ body: external_exports.object({}),
104646
+ responses: {
104647
+ 200: executionContextSchema,
104648
+ 400: apiErrorSchema,
104649
+ 401: apiErrorSchema,
104650
+ 403: apiErrorSchema,
104651
+ // Job does not belong to user
104652
+ 404: apiErrorSchema,
104653
+ 409: apiErrorSchema,
104654
+ // Already claimed
104655
+ 500: apiErrorSchema
104656
+ },
104657
+ summary: "Claim a pending job for execution"
104658
+ }
104659
+ });
104660
+ var heartbeatBodySchema = external_exports.object({
104661
+ runnerId: external_exports.uuid(),
104662
+ runnerName: external_exports.string(),
104663
+ group: runnerGroupSchema,
104664
+ profiles: external_exports.array(external_exports.string()),
104665
+ totalVcpu: external_exports.number().int().nonnegative(),
104666
+ totalMemoryMb: external_exports.number().int().nonnegative(),
104667
+ maxConcurrent: external_exports.number().int().nonnegative(),
104668
+ allocatedVcpu: external_exports.number().int().nonnegative(),
104669
+ allocatedMemoryMb: external_exports.number().int().nonnegative(),
104670
+ runningCount: external_exports.number().int().nonnegative(),
104671
+ heldSessions: external_exports.array(external_exports.string()),
104672
+ mode: external_exports.enum(["running", "draining", "stopping"])
104673
+ });
104674
+ var runnersHeartbeatContract = c19.router({
104675
+ heartbeat: {
104676
+ method: "POST",
104677
+ path: "/api/runners/heartbeat",
104678
+ headers: authHeadersSchema,
104679
+ body: heartbeatBodySchema,
104680
+ responses: {
104681
+ 200: external_exports.object({ ok: external_exports.literal(true) }),
104682
+ 400: apiErrorSchema,
104683
+ 401: apiErrorSchema,
104684
+ 500: apiErrorSchema
104685
+ },
104686
+ summary: "Report runner heartbeat with capacity and state"
104687
+ }
104688
+ });
104689
+
104690
+ // ../../packages/api-contracts/src/contracts/webhooks.ts
104691
+ var c20 = initContract();
104407
104692
  var thirdPartyWebhookErrorSchema = external_exports.object({ error: external_exports.string() });
104408
104693
  var thirdPartyWebhookOkSchema = external_exports.union([
104409
104694
  external_exports.string(),
104410
104695
  external_exports.object({ message: external_exports.literal("pong") })
104411
104696
  ]);
104412
- var webhookClerkContract = c19.router({
104697
+ var webhookClerkContract = c20.router({
104413
104698
  post: {
104414
104699
  method: "POST",
104415
104700
  path: "/api/webhooks/clerk",
104416
- body: c19.type(),
104701
+ body: c20.type(),
104417
104702
  responses: {
104418
104703
  200: thirdPartyWebhookOkSchema,
104419
104704
  401: thirdPartyWebhookErrorSchema
@@ -104421,11 +104706,11 @@ var webhookClerkContract = c19.router({
104421
104706
  summary: "Handle Clerk organization and user webhooks"
104422
104707
  }
104423
104708
  });
104424
- var webhookGithubContract = c19.router({
104709
+ var webhookGithubContract = c20.router({
104425
104710
  post: {
104426
104711
  method: "POST",
104427
104712
  path: "/api/webhooks/github",
104428
- body: c19.type(),
104713
+ body: c20.type(),
104429
104714
  responses: {
104430
104715
  200: thirdPartyWebhookOkSchema,
104431
104716
  400: thirdPartyWebhookErrorSchema,
@@ -104435,11 +104720,11 @@ var webhookGithubContract = c19.router({
104435
104720
  summary: "Handle GitHub App webhooks"
104436
104721
  }
104437
104722
  });
104438
- var webhookStripeContract = c19.router({
104723
+ var webhookStripeContract = c20.router({
104439
104724
  post: {
104440
104725
  method: "POST",
104441
104726
  path: "/api/webhooks/stripe",
104442
- body: c19.type(),
104727
+ body: c20.type(),
104443
104728
  responses: {
104444
104729
  200: thirdPartyWebhookOkSchema,
104445
104730
  401: thirdPartyWebhookErrorSchema,
@@ -104470,7 +104755,54 @@ var artifactSnapshotsSchema2 = external_exports.array(
104470
104755
  var volumeVersionsSnapshotSchema2 = external_exports.object({
104471
104756
  versions: external_exports.record(external_exports.string(), external_exports.string())
104472
104757
  });
104473
- var webhookEventsContract = c19.router({
104758
+ var firewallAuthErrorSchema = external_exports.object({
104759
+ error: external_exports.object({
104760
+ message: external_exports.string(),
104761
+ code: external_exports.string(),
104762
+ connectors: external_exports.array(external_exports.string()).optional()
104763
+ })
104764
+ });
104765
+ var firewallAuthResponseSchema = external_exports.object({
104766
+ headers: external_exports.record(external_exports.string(), external_exports.string()),
104767
+ base: external_exports.string().optional(),
104768
+ query: external_exports.record(external_exports.string(), external_exports.string()).optional(),
104769
+ expiresAt: external_exports.number().nullable(),
104770
+ resolvedSecrets: external_exports.array(external_exports.string()),
104771
+ refreshedConnectors: external_exports.array(external_exports.string()),
104772
+ refreshedSecrets: external_exports.array(external_exports.string())
104773
+ });
104774
+ var webhookFirewallAuthContract = c20.router({
104775
+ /**
104776
+ * POST /api/webhooks/agent/firewall/auth
104777
+ * Resolve firewall auth templates and refresh OAuth tokens on demand.
104778
+ */
104779
+ resolve: {
104780
+ method: "POST",
104781
+ path: "/api/webhooks/agent/firewall/auth",
104782
+ headers: authHeadersSchema,
104783
+ body: external_exports.object({
104784
+ encryptedSecrets: external_exports.string().min(1),
104785
+ authHeaders: external_exports.record(external_exports.string(), external_exports.string()),
104786
+ authBase: external_exports.string().optional(),
104787
+ authQuery: external_exports.record(external_exports.string(), external_exports.string()).optional(),
104788
+ secretConnectorMap: external_exports.record(external_exports.string(), external_exports.string()).optional(),
104789
+ secretConnectorMetadataMap: secretConnectorMetadataMapSchema.optional(),
104790
+ vars: external_exports.record(external_exports.string(), external_exports.string()).optional(),
104791
+ forceRefresh: external_exports.boolean().optional()
104792
+ }),
104793
+ responses: {
104794
+ 200: firewallAuthResponseSchema,
104795
+ 400: apiErrorSchema,
104796
+ 401: apiErrorSchema,
104797
+ 403: apiErrorSchema,
104798
+ 424: firewallAuthErrorSchema,
104799
+ 502: firewallAuthErrorSchema,
104800
+ 500: apiErrorSchema
104801
+ },
104802
+ summary: "Resolve firewall auth templates"
104803
+ }
104804
+ });
104805
+ var webhookEventsContract = c20.router({
104474
104806
  /**
104475
104807
  * POST /api/webhooks/agent/events
104476
104808
  * Receive agent events from sandbox
@@ -104497,7 +104829,7 @@ var webhookEventsContract = c19.router({
104497
104829
  summary: "Receive agent events from sandbox"
104498
104830
  }
104499
104831
  });
104500
- var webhookCompleteContract = c19.router({
104832
+ var webhookCompleteContract = c20.router({
104501
104833
  /**
104502
104834
  * POST /api/webhooks/agent/complete
104503
104835
  * Handle agent run completion (success or failure)
@@ -104534,7 +104866,7 @@ var webhookCompleteContract = c19.router({
104534
104866
  summary: "Handle agent run completion"
104535
104867
  }
104536
104868
  });
104537
- var webhookCheckpointsContract = c19.router({
104869
+ var webhookCheckpointsContract = c20.router({
104538
104870
  /**
104539
104871
  * POST /api/webhooks/agent/checkpoints
104540
104872
  * Create a recoverable checkpoint for an agent run.
@@ -104573,7 +104905,7 @@ var webhookCheckpointsContract = c19.router({
104573
104905
  summary: "Create checkpoint for agent run"
104574
104906
  }
104575
104907
  });
104576
- var webhookCheckpointsPrepareHistoryContract = c19.router({
104908
+ var webhookCheckpointsPrepareHistoryContract = c20.router({
104577
104909
  prepare: {
104578
104910
  method: "POST",
104579
104911
  path: "/api/webhooks/agent/checkpoints/prepare-history",
@@ -104596,7 +104928,7 @@ var webhookCheckpointsPrepareHistoryContract = c19.router({
104596
104928
  summary: "Get presigned URL for uploading session history to S3"
104597
104929
  }
104598
104930
  });
104599
- var webhookHeartbeatContract = c19.router({
104931
+ var webhookHeartbeatContract = c20.router({
104600
104932
  /**
104601
104933
  * POST /api/webhooks/agent/heartbeat
104602
104934
  * Receive heartbeat signals from sandbox
@@ -104620,7 +104952,7 @@ var webhookHeartbeatContract = c19.router({
104620
104952
  summary: "Receive heartbeat from sandbox"
104621
104953
  }
104622
104954
  });
104623
- var webhookStoragesContract = c19.router({
104955
+ var webhookStoragesContract = c20.router({
104624
104956
  /**
104625
104957
  * POST /api/webhooks/agent/storages
104626
104958
  * Create a new version of a storage from sandbox
@@ -104636,7 +104968,7 @@ var webhookStoragesContract = c19.router({
104636
104968
  path: "/api/webhooks/agent/storages",
104637
104969
  headers: authHeadersSchema,
104638
104970
  contentType: "multipart/form-data",
104639
- body: c19.type(),
104971
+ body: c20.type(),
104640
104972
  responses: {
104641
104973
  200: external_exports.object({
104642
104974
  versionId: external_exports.string(),
@@ -104652,7 +104984,7 @@ var webhookStoragesContract = c19.router({
104652
104984
  summary: "Upload storage version from sandbox"
104653
104985
  }
104654
104986
  });
104655
- var webhookStoragesIncrementalContract = c19.router({
104987
+ var webhookStoragesIncrementalContract = c20.router({
104656
104988
  /**
104657
104989
  * POST /api/webhooks/agent/storages/incremental
104658
104990
  * Create a new version using incremental upload
@@ -104670,7 +105002,7 @@ var webhookStoragesIncrementalContract = c19.router({
104670
105002
  path: "/api/webhooks/agent/storages/incremental",
104671
105003
  headers: authHeadersSchema,
104672
105004
  contentType: "multipart/form-data",
104673
- body: c19.type(),
105005
+ body: c20.type(),
104674
105006
  responses: {
104675
105007
  200: external_exports.object({
104676
105008
  versionId: external_exports.string(),
@@ -104708,7 +105040,7 @@ var sandboxOperationSchema = external_exports.object({
104708
105040
  success: external_exports.boolean(),
104709
105041
  error: external_exports.string().optional()
104710
105042
  });
104711
- var webhookTelemetryContract = c19.router({
105043
+ var webhookTelemetryContract = c20.router({
104712
105044
  /**
104713
105045
  * POST /api/webhooks/agent/telemetry
104714
105046
  * Receive telemetry data (system log, metrics, network logs, and sandbox operations) from sandbox
@@ -104737,7 +105069,7 @@ var webhookTelemetryContract = c19.router({
104737
105069
  summary: "Receive telemetry data from sandbox"
104738
105070
  }
104739
105071
  });
104740
- var webhookStoragesPrepareContract = c19.router({
105072
+ var webhookStoragesPrepareContract = c20.router({
104741
105073
  prepare: {
104742
105074
  method: "POST",
104743
105075
  path: "/api/webhooks/agent/storages/prepare",
@@ -104771,7 +105103,7 @@ var webhookStoragesPrepareContract = c19.router({
104771
105103
  summary: "Prepare for direct S3 upload from sandbox"
104772
105104
  }
104773
105105
  });
104774
- var webhookStoragesCommitContract = c19.router({
105106
+ var webhookStoragesCommitContract = c20.router({
104775
105107
  commit: {
104776
105108
  method: "POST",
104777
105109
  path: "/api/webhooks/agent/storages/commit",
@@ -104813,7 +105145,7 @@ var webhookUsageEventItemSchema = external_exports.object({
104813
105145
  category: external_exports.string().min(1).max(100),
104814
105146
  quantity: external_exports.number().int().min(0)
104815
105147
  }).strict();
104816
- var webhookUsageEventContract = c19.router({
105148
+ var webhookUsageEventContract = c20.router({
104817
105149
  send: {
104818
105150
  method: "POST",
104819
105151
  path: "/api/webhooks/agent/usage-event",
@@ -104849,8 +105181,8 @@ var zeroRunRequestSchema = unifiedRunRequestSchema.omit({
104849
105181
  agentId: external_exports.string().optional(),
104850
105182
  modelProvider: external_exports.string().optional()
104851
105183
  });
104852
- var c20 = initContract();
104853
- var zeroRunsMainContract = c20.router({
105184
+ var c21 = initContract();
105185
+ var zeroRunsMainContract = c21.router({
104854
105186
  create: {
104855
105187
  method: "POST",
104856
105188
  path: "/api/zero/runs",
@@ -104869,7 +105201,7 @@ var zeroRunsMainContract = c20.router({
104869
105201
  summary: "Create and execute agent run (zero proxy)"
104870
105202
  }
104871
105203
  });
104872
- var zeroRunsByIdContract = c20.router({
105204
+ var zeroRunsByIdContract = c21.router({
104873
105205
  getById: {
104874
105206
  method: "GET",
104875
105207
  path: "/api/zero/runs/:id",
@@ -104887,7 +105219,7 @@ var zeroRunsByIdContract = c20.router({
104887
105219
  summary: "Get agent run by ID (zero proxy)"
104888
105220
  }
104889
105221
  });
104890
- var zeroRunsCancelContract = c20.router({
105222
+ var zeroRunsCancelContract = c21.router({
104891
105223
  cancel: {
104892
105224
  method: "POST",
104893
105225
  path: "/api/zero/runs/:id/cancel",
@@ -104906,7 +105238,7 @@ var zeroRunsCancelContract = c20.router({
104906
105238
  summary: "Cancel a pending or running run (zero proxy)"
104907
105239
  }
104908
105240
  });
104909
- var zeroRunsQueueContract = c20.router({
105241
+ var zeroRunsQueueContract = c21.router({
104910
105242
  getQueue: {
104911
105243
  method: "GET",
104912
105244
  path: "/api/zero/runs/queue",
@@ -104919,7 +105251,7 @@ var zeroRunsQueueContract = c20.router({
104919
105251
  summary: "Get org run queue status (zero proxy)"
104920
105252
  }
104921
105253
  });
104922
- var zeroRunAgentEventsContract = c20.router({
105254
+ var zeroRunAgentEventsContract = c21.router({
104923
105255
  getAgentEvents: {
104924
105256
  method: "GET",
104925
105257
  path: "/api/zero/runs/:id/telemetry/agent",
@@ -104981,7 +105313,7 @@ var runContextResponseSchema = external_exports.object({
104981
105313
  artifact: runContextArtifactSchema.nullable(),
104982
105314
  featureFlags: external_exports.record(external_exports.string(), external_exports.boolean()).nullable()
104983
105315
  });
104984
- var zeroRunContextContract = c20.router({
105316
+ var zeroRunContextContract = c21.router({
104985
105317
  getContext: {
104986
105318
  method: "GET",
104987
105319
  path: "/api/zero/runs/:id/context",
@@ -104999,7 +105331,7 @@ var zeroRunContextContract = c20.router({
104999
105331
  summary: "Get run execution context snapshot for debugging"
105000
105332
  }
105001
105333
  });
105002
- var zeroRunNetworkLogsContract = c20.router({
105334
+ var zeroRunNetworkLogsContract = c21.router({
105003
105335
  getNetworkLogs: {
105004
105336
  method: "GET",
105005
105337
  path: "/api/zero/runs/:id/network",
@@ -105025,7 +105357,7 @@ var zeroRunNetworkLogsContract = c20.router({
105025
105357
  var runRunnerResponseSchema = external_exports.object({
105026
105358
  sandboxReuseResult: sandboxReuseResultSchema.nullable()
105027
105359
  });
105028
- var zeroRunRunnerContract = c20.router({
105360
+ var zeroRunRunnerContract = c21.router({
105029
105361
  getRunner: {
105030
105362
  method: "GET",
105031
105363
  path: "/api/zero/runs/:id/runner",
@@ -105043,7 +105375,7 @@ var zeroRunRunnerContract = c20.router({
105043
105375
  summary: "Get runner-level metadata for a run"
105044
105376
  }
105045
105377
  });
105046
- var zeroLogsSearchContract = c20.router({
105378
+ var zeroLogsSearchContract = c21.router({
105047
105379
  searchLogs: {
105048
105380
  method: "GET",
105049
105381
  path: "/api/zero/logs/search",
@@ -105143,7 +105475,7 @@ init_esm_shims();
105143
105475
 
105144
105476
  // ../../packages/api-contracts/src/contracts/chat-threads.ts
105145
105477
  init_esm_shims();
105146
- var c21 = initContract();
105478
+ var c22 = initContract();
105147
105479
  var attachFileSchema = external_exports.object({
105148
105480
  id: external_exports.string(),
105149
105481
  filename: external_exports.string(),
@@ -105328,7 +105660,7 @@ var modelSelectionRequestSchema = external_exports.object({
105328
105660
  modelProviderId: external_exports.string().uuid(),
105329
105661
  selectedModel: external_exports.string().min(1)
105330
105662
  });
105331
- var chatThreadsContract = c21.router({
105663
+ var chatThreadsContract = c22.router({
105332
105664
  create: {
105333
105665
  method: "POST",
105334
105666
  path: "/api/zero/chat-threads",
@@ -105364,7 +105696,7 @@ var chatThreadsContract = c21.router({
105364
105696
  summary: "List chat threads. When agentId is omitted, returns every thread the caller owns scoped by orgId."
105365
105697
  }
105366
105698
  });
105367
- var chatThreadByIdContract = c21.router({
105699
+ var chatThreadByIdContract = c22.router({
105368
105700
  get: {
105369
105701
  method: "GET",
105370
105702
  path: "/api/zero/chat-threads/:id",
@@ -105387,7 +105719,7 @@ var chatThreadByIdContract = c21.router({
105387
105719
  draftAttachments: external_exports.array(persistedAttachmentSchema).nullable().optional()
105388
105720
  }),
105389
105721
  responses: {
105390
- 204: c21.noBody(),
105722
+ 204: c22.noBody(),
105391
105723
  401: apiErrorSchema,
105392
105724
  404: apiErrorSchema
105393
105725
  },
@@ -105399,21 +105731,21 @@ var chatThreadByIdContract = c21.router({
105399
105731
  headers: authHeadersSchema,
105400
105732
  pathParams: external_exports.object({ id: external_exports.string() }),
105401
105733
  responses: {
105402
- 204: c21.noBody(),
105734
+ 204: c22.noBody(),
105403
105735
  401: apiErrorSchema,
105404
105736
  404: apiErrorSchema
105405
105737
  },
105406
105738
  summary: "Delete a chat thread",
105407
- body: c21.noBody()
105739
+ body: c22.noBody()
105408
105740
  }
105409
105741
  });
105410
- var chatThreadMarkReadContract = c21.router({
105742
+ var chatThreadMarkReadContract = c22.router({
105411
105743
  markRead: {
105412
105744
  method: "POST",
105413
105745
  path: "/api/zero/chat-threads/:id/mark-read",
105414
105746
  headers: authHeadersSchema,
105415
105747
  pathParams: external_exports.object({ id: external_exports.string() }),
105416
- body: c21.noBody(),
105748
+ body: c22.noBody(),
105417
105749
  responses: {
105418
105750
  200: external_exports.object({
105419
105751
  lastReadMessageId: external_exports.string().nullable(),
@@ -105425,37 +105757,37 @@ var chatThreadMarkReadContract = c21.router({
105425
105757
  summary: "Mark a chat thread as read up to the latest message"
105426
105758
  }
105427
105759
  });
105428
- var chatThreadPinContract = c21.router({
105760
+ var chatThreadPinContract = c22.router({
105429
105761
  pin: {
105430
105762
  method: "POST",
105431
105763
  path: "/api/zero/chat-threads/:id/pin",
105432
105764
  headers: authHeadersSchema,
105433
105765
  pathParams: external_exports.object({ id: external_exports.string() }),
105434
- body: c21.noBody(),
105766
+ body: c22.noBody(),
105435
105767
  responses: {
105436
- 204: c21.noBody(),
105768
+ 204: c22.noBody(),
105437
105769
  401: apiErrorSchema,
105438
105770
  404: apiErrorSchema
105439
105771
  },
105440
105772
  summary: "Pin a chat thread to the top of the sidebar"
105441
105773
  }
105442
105774
  });
105443
- var chatThreadUnpinContract = c21.router({
105775
+ var chatThreadUnpinContract = c22.router({
105444
105776
  unpin: {
105445
105777
  method: "POST",
105446
105778
  path: "/api/zero/chat-threads/:id/unpin",
105447
105779
  headers: authHeadersSchema,
105448
105780
  pathParams: external_exports.object({ id: external_exports.string() }),
105449
- body: c21.noBody(),
105781
+ body: c22.noBody(),
105450
105782
  responses: {
105451
- 204: c21.noBody(),
105783
+ 204: c22.noBody(),
105452
105784
  401: apiErrorSchema,
105453
105785
  404: apiErrorSchema
105454
105786
  },
105455
105787
  summary: "Remove the pin from a chat thread"
105456
105788
  }
105457
105789
  });
105458
- var chatThreadRenameContract = c21.router({
105790
+ var chatThreadRenameContract = c22.router({
105459
105791
  rename: {
105460
105792
  method: "POST",
105461
105793
  path: "/api/zero/chat-threads/:id/rename",
@@ -105463,14 +105795,14 @@ var chatThreadRenameContract = c21.router({
105463
105795
  pathParams: external_exports.object({ id: external_exports.string() }),
105464
105796
  body: external_exports.object({ title: external_exports.string().min(1) }),
105465
105797
  responses: {
105466
- 204: c21.noBody(),
105798
+ 204: c22.noBody(),
105467
105799
  401: apiErrorSchema,
105468
105800
  404: apiErrorSchema
105469
105801
  },
105470
105802
  summary: "Rename a chat thread (suppresses automated title generation)"
105471
105803
  }
105472
105804
  });
105473
- var chatMessagesContract = c21.router({
105805
+ var chatMessagesContract = c22.router({
105474
105806
  send: {
105475
105807
  method: "POST",
105476
105808
  path: "/api/zero/chat/messages",
@@ -105599,7 +105931,7 @@ var chatSearchResponseSchema = external_exports.object({
105599
105931
  results: external_exports.array(chatSearchResultSchema),
105600
105932
  hasMore: external_exports.boolean()
105601
105933
  });
105602
- var chatSearchContract = c21.router({
105934
+ var chatSearchContract = c22.router({
105603
105935
  search: {
105604
105936
  method: "GET",
105605
105937
  path: "/api/zero/chat/search",
@@ -105621,7 +105953,7 @@ var chatSearchContract = c21.router({
105621
105953
  summary: "Search chat messages within caller's org (zero proxy)"
105622
105954
  }
105623
105955
  });
105624
- var chatThreadMessagesContract = c21.router({
105956
+ var chatThreadMessagesContract = c22.router({
105625
105957
  list: {
105626
105958
  method: "GET",
105627
105959
  path: "/api/zero/chat-threads/:threadId/messages",
@@ -105643,7 +105975,7 @@ var chatThreadMessagesContract = c21.router({
105643
105975
  summary: "Get paginated chat messages for a thread"
105644
105976
  }
105645
105977
  });
105646
- var chatThreadArtifactsContract = c21.router({
105978
+ var chatThreadArtifactsContract = c22.router({
105647
105979
  list: {
105648
105980
  method: "GET",
105649
105981
  path: "/api/zero/chat-threads/:threadId/artifacts",
@@ -105793,7 +106125,7 @@ init_esm_shims();
105793
106125
 
105794
106126
  // ../../packages/api-contracts/src/contracts/zero-developer-support.ts
105795
106127
  init_esm_shims();
105796
- var c22 = initContract();
106128
+ var c23 = initContract();
105797
106129
  var developerSupportBodySchema = external_exports.object({
105798
106130
  title: external_exports.string().min(1, "Title is required"),
105799
106131
  description: external_exports.string().min(1, "Description is required"),
@@ -105805,7 +106137,7 @@ var consentCodeResponseSchema = external_exports.object({
105805
106137
  var submitResponseSchema = external_exports.object({
105806
106138
  reference: external_exports.string()
105807
106139
  });
105808
- var zeroDeveloperSupportContract = c22.router({
106140
+ var zeroDeveloperSupportContract = c23.router({
105809
106141
  submit: {
105810
106142
  method: "POST",
105811
106143
  path: "/api/zero/developer-support",
@@ -105842,7 +106174,7 @@ init_esm_shims();
105842
106174
 
105843
106175
  // ../../packages/api-contracts/src/contracts/zero-computer-use.ts
105844
106176
  init_esm_shims();
105845
- var c23 = initContract();
106177
+ var c24 = initContract();
105846
106178
  var registerResponseSchema = external_exports.object({
105847
106179
  id: external_exports.string(),
105848
106180
  domain: external_exports.string(),
@@ -105854,12 +106186,12 @@ var hostResponseSchema = external_exports.object({
105854
106186
  domain: external_exports.string(),
105855
106187
  token: external_exports.string()
105856
106188
  });
105857
- var zeroComputerUseRegisterContract = c23.router({
106189
+ var zeroComputerUseRegisterContract = c24.router({
105858
106190
  register: {
105859
106191
  method: "POST",
105860
106192
  path: "/api/zero/computer-use/register",
105861
106193
  headers: authHeadersSchema,
105862
- body: c23.noBody(),
106194
+ body: c24.noBody(),
105863
106195
  responses: {
105864
106196
  200: registerResponseSchema,
105865
106197
  401: apiErrorSchema,
@@ -105869,14 +106201,14 @@ var zeroComputerUseRegisterContract = c23.router({
105869
106201
  summary: "Register a computer-use host"
105870
106202
  }
105871
106203
  });
105872
- var zeroComputerUseUnregisterContract = c23.router({
106204
+ var zeroComputerUseUnregisterContract = c24.router({
105873
106205
  unregister: {
105874
106206
  method: "DELETE",
105875
106207
  path: "/api/zero/computer-use/unregister",
105876
106208
  headers: authHeadersSchema,
105877
- body: c23.noBody(),
106209
+ body: c24.noBody(),
105878
106210
  responses: {
105879
- 204: c23.noBody(),
106211
+ 204: c24.noBody(),
105880
106212
  401: apiErrorSchema,
105881
106213
  403: apiErrorSchema,
105882
106214
  404: apiErrorSchema
@@ -105884,7 +106216,7 @@ var zeroComputerUseUnregisterContract = c23.router({
105884
106216
  summary: "Unregister a computer-use host"
105885
106217
  }
105886
106218
  });
105887
- var zeroComputerUseHostContract = c23.router({
106219
+ var zeroComputerUseHostContract = c24.router({
105888
106220
  getHost: {
105889
106221
  method: "GET",
105890
106222
  path: "/api/zero/computer-use/host",
@@ -105939,218 +106271,6 @@ init_esm_shims();
105939
106271
 
105940
106272
  // ../../packages/api-contracts/src/contracts/realtime.ts
105941
106273
  init_esm_shims();
105942
-
105943
- // ../../packages/api-contracts/src/contracts/runners.ts
105944
- init_esm_shims();
105945
- var c24 = initContract();
105946
- var runnerGroupSchema = external_exports.string().regex(
105947
- /^[a-z0-9-]+\/[a-z0-9-]+$/,
105948
- "Runner group must be in vm0/<name> format (e.g., vm0/production)"
105949
- );
105950
- var jobSchema = external_exports.object({
105951
- runId: external_exports.uuid(),
105952
- prompt: external_exports.string(),
105953
- appendSystemPrompt: external_exports.string().nullable(),
105954
- agentComposeVersionId: external_exports.string().nullable(),
105955
- vars: external_exports.record(external_exports.string(), external_exports.string()).nullable(),
105956
- checkpointId: external_exports.uuid().nullable(),
105957
- experimentalProfile: external_exports.string().optional()
105958
- });
105959
- var runnersPollContract = c24.router({
105960
- poll: {
105961
- method: "POST",
105962
- path: "/api/runners/poll",
105963
- headers: authHeadersSchema,
105964
- body: external_exports.object({
105965
- group: runnerGroupSchema,
105966
- profiles: external_exports.array(external_exports.string()).optional(),
105967
- heldSessions: external_exports.array(external_exports.string()).max(100).optional()
105968
- }),
105969
- responses: {
105970
- 200: external_exports.object({
105971
- job: jobSchema.nullable()
105972
- }),
105973
- 400: apiErrorSchema,
105974
- 401: apiErrorSchema,
105975
- 500: apiErrorSchema
105976
- },
105977
- summary: "Poll for pending jobs (long-polling with 30s timeout)"
105978
- }
105979
- });
105980
- var storageEntrySchema = external_exports.object({
105981
- name: external_exports.string(),
105982
- mountPath: external_exports.string(),
105983
- vasStorageName: external_exports.string(),
105984
- vasVersionId: external_exports.string(),
105985
- instructionsTargetFilename: external_exports.string().optional(),
105986
- archiveUrl: external_exports.string()
105987
- });
105988
- var artifactEntrySchema = external_exports.object({
105989
- mountPath: external_exports.string(),
105990
- vasStorageName: external_exports.string(),
105991
- vasStorageId: external_exports.string(),
105992
- vasVersionId: external_exports.string(),
105993
- archiveUrl: external_exports.string(),
105994
- manifestUrl: external_exports.string().optional()
105995
- });
105996
- var storageManifestSchema = external_exports.object({
105997
- storages: external_exports.array(storageEntrySchema),
105998
- artifacts: external_exports.array(artifactEntrySchema)
105999
- });
106000
- var resumeSessionSchema = external_exports.object({
106001
- sessionId: external_exports.string(),
106002
- sessionHistory: external_exports.string()
106003
- });
106004
- var secretConnectorMetadataSchema = external_exports.object({
106005
- sourceType: external_exports.enum(["connector", "model-provider"]),
106006
- sourceUserId: external_exports.string().optional(),
106007
- metadataKey: external_exports.string().optional()
106008
- });
106009
- var secretConnectorMetadataMapSchema = external_exports.record(
106010
- external_exports.string(),
106011
- secretConnectorMetadataSchema
106012
- );
106013
- var storedExecutionContextSchema = external_exports.object({
106014
- workingDir: external_exports.string(),
106015
- storageManifest: storageManifestSchema.nullable(),
106016
- environment: external_exports.record(external_exports.string(), external_exports.string()).nullable(),
106017
- resumeSession: resumeSessionSchema.nullable(),
106018
- encryptedSecrets: external_exports.string().nullable(),
106019
- // AES-256-GCM encrypted Record<string, string> (secret name → value)
106020
- // Maps secret names to OAuth connector types for runtime token refresh (e.g. { "GMAIL_ACCESS_TOKEN": "gmail" })
106021
- secretConnectorMap: external_exports.record(external_exports.string(), external_exports.string()).nullable().optional(),
106022
- // Per-secret refresh metadata, used when a handler needs owner-specific storage (e.g. personal model providers)
106023
- secretConnectorMetadataMap: secretConnectorMetadataMapSchema.nullable().optional(),
106024
- cliAgentType: external_exports.string(),
106025
- // Debug flag to force real Claude in mock environments (internal use only)
106026
- debugNoMockClaude: external_exports.boolean().optional(),
106027
- // Debug flag to force real Codex in mock environments (internal use only)
106028
- debugNoMockCodex: external_exports.boolean().optional(),
106029
- // Capture HTTP request headers, request bodies, and response bodies in network logs
106030
- captureNetworkBodies: external_exports.boolean().optional(),
106031
- // Dispatch timestamp for E2E timing metrics
106032
- apiStartTime: external_exports.number().optional(),
106033
- // User's timezone preference (IANA format, e.g., "Asia/Shanghai")
106034
- userTimezone: external_exports.string().optional(),
106035
- // Firewall for proxy-side token replacement (complete config, all permissions)
106036
- firewalls: firewallsSchema.optional(),
106037
- // Per-firewall network policies: which permissions are granted + unknownPolicy
106038
- networkPolicies: networkPoliciesSchema.optional(),
106039
- // Tools to disable in Claude CLI (passed as --disallowed-tools)
106040
- disallowedTools: external_exports.array(external_exports.string()).optional(),
106041
- // Tools to make available in Claude CLI (passed as --tools)
106042
- tools: external_exports.array(external_exports.string()).optional(),
106043
- // Settings JSON to pass to Claude CLI (passed as --settings)
106044
- settings: external_exports.string().optional(),
106045
- // VM profile for resource allocation (e.g., "vm0/default")
106046
- experimentalProfile: external_exports.string().optional(),
106047
- // Feature flags evaluated at job creation time (all switch states for user/org)
106048
- featureFlags: external_exports.record(external_exports.string(), external_exports.boolean()).optional(),
106049
- billableFirewalls: external_exports.array(external_exports.string()).optional(),
106050
- modelUsageProvider: external_exports.string().optional()
106051
- });
106052
- var executionContextSchema = external_exports.object({
106053
- runId: external_exports.uuid(),
106054
- prompt: external_exports.string(),
106055
- appendSystemPrompt: external_exports.string().nullable(),
106056
- agentComposeVersionId: external_exports.string().nullable(),
106057
- vars: external_exports.record(external_exports.string(), external_exports.string()).nullable(),
106058
- checkpointId: external_exports.uuid().nullable(),
106059
- sandboxToken: external_exports.string(),
106060
- // New fields for E2B parity:
106061
- workingDir: external_exports.string(),
106062
- storageManifest: storageManifestSchema.nullable(),
106063
- environment: external_exports.record(external_exports.string(), external_exports.string()).nullable(),
106064
- resumeSession: resumeSessionSchema.nullable(),
106065
- secretValues: external_exports.array(external_exports.string()).nullable(),
106066
- // AES-256-GCM encrypted Record<string, string> — passed through to mitm-addon for auth resolution
106067
- encryptedSecrets: external_exports.string().nullable(),
106068
- // Maps secret names to OAuth connector types for runtime token refresh
106069
- secretConnectorMap: external_exports.record(external_exports.string(), external_exports.string()).nullable().optional(),
106070
- // Per-secret refresh metadata, used when a handler needs owner-specific storage (e.g. personal model providers)
106071
- secretConnectorMetadataMap: secretConnectorMetadataMapSchema.nullable().optional(),
106072
- cliAgentType: external_exports.string(),
106073
- // Debug flag to force real Claude in mock environments (internal use only)
106074
- debugNoMockClaude: external_exports.boolean().optional(),
106075
- // Debug flag to force real Codex in mock environments (internal use only)
106076
- debugNoMockCodex: external_exports.boolean().optional(),
106077
- // Capture HTTP request headers, request bodies, and response bodies in network logs
106078
- captureNetworkBodies: external_exports.boolean().optional(),
106079
- // Dispatch timestamp for E2E timing metrics
106080
- apiStartTime: external_exports.number().optional(),
106081
- // User's timezone preference (IANA format, e.g., "Asia/Shanghai")
106082
- userTimezone: external_exports.string().optional(),
106083
- // Firewall for proxy-side token replacement (complete config, all permissions)
106084
- firewalls: firewallsSchema.optional(),
106085
- // Per-firewall network policies: which permissions are granted + unknownPolicy
106086
- networkPolicies: networkPoliciesSchema.optional(),
106087
- // Tools to disable in Claude CLI (passed as --disallowed-tools)
106088
- disallowedTools: external_exports.array(external_exports.string()).optional(),
106089
- // Tools to make available in Claude CLI (passed as --tools)
106090
- tools: external_exports.array(external_exports.string()).optional(),
106091
- // Settings JSON to pass to Claude CLI (passed as --settings)
106092
- settings: external_exports.string().optional(),
106093
- // VM profile for resource allocation (e.g., "vm0/default")
106094
- experimentalProfile: external_exports.string().optional(),
106095
- // Feature flags evaluated at job creation time (all switch states for user/org)
106096
- featureFlags: external_exports.record(external_exports.string(), external_exports.boolean()).optional(),
106097
- billableFirewalls: external_exports.array(external_exports.string()).optional(),
106098
- modelUsageProvider: external_exports.string().optional()
106099
- });
106100
- var runnersJobClaimContract = c24.router({
106101
- claim: {
106102
- method: "POST",
106103
- path: "/api/runners/jobs/:id/claim",
106104
- headers: authHeadersSchema,
106105
- pathParams: external_exports.object({
106106
- id: external_exports.uuid()
106107
- }),
106108
- body: external_exports.object({}),
106109
- responses: {
106110
- 200: executionContextSchema,
106111
- 400: apiErrorSchema,
106112
- 401: apiErrorSchema,
106113
- 403: apiErrorSchema,
106114
- // Job does not belong to user
106115
- 404: apiErrorSchema,
106116
- 409: apiErrorSchema,
106117
- // Already claimed
106118
- 500: apiErrorSchema
106119
- },
106120
- summary: "Claim a pending job for execution"
106121
- }
106122
- });
106123
- var heartbeatBodySchema = external_exports.object({
106124
- runnerId: external_exports.uuid(),
106125
- runnerName: external_exports.string(),
106126
- group: runnerGroupSchema,
106127
- profiles: external_exports.array(external_exports.string()),
106128
- totalVcpu: external_exports.number().int().nonnegative(),
106129
- totalMemoryMb: external_exports.number().int().nonnegative(),
106130
- maxConcurrent: external_exports.number().int().nonnegative(),
106131
- allocatedVcpu: external_exports.number().int().nonnegative(),
106132
- allocatedMemoryMb: external_exports.number().int().nonnegative(),
106133
- runningCount: external_exports.number().int().nonnegative(),
106134
- heldSessions: external_exports.array(external_exports.string()),
106135
- mode: external_exports.enum(["running", "draining", "stopping"])
106136
- });
106137
- var runnersHeartbeatContract = c24.router({
106138
- heartbeat: {
106139
- method: "POST",
106140
- path: "/api/runners/heartbeat",
106141
- headers: authHeadersSchema,
106142
- body: heartbeatBodySchema,
106143
- responses: {
106144
- 200: external_exports.object({ ok: external_exports.literal(true) }),
106145
- 400: apiErrorSchema,
106146
- 401: apiErrorSchema,
106147
- 500: apiErrorSchema
106148
- },
106149
- summary: "Report runner heartbeat with capacity and state"
106150
- }
106151
- });
106152
-
106153
- // ../../packages/api-contracts/src/contracts/realtime.ts
106154
106274
  var c25 = initContract();
106155
106275
  var ablyTokenRequestSchema = external_exports.object({
106156
106276
  keyName: external_exports.string(),
@@ -121817,6 +121937,15 @@ var cronReconcileBillingEntitlementsResponseSchema = external_exports.object({
121817
121937
  var cronTelegramCleanupResponseSchema = external_exports.object({
121818
121938
  deleted: external_exports.number()
121819
121939
  });
121940
+ var cronVoiceChatCleanupResponseSchema = external_exports.object({
121941
+ success: external_exports.literal(true),
121942
+ reasonerReset: external_exports.number()
121943
+ });
121944
+ var cronDrainEmailOutboxResponseSchema = external_exports.object({
121945
+ success: external_exports.literal(true),
121946
+ drained: external_exports.number(),
121947
+ cleaned: external_exports.number()
121948
+ });
121820
121949
  var cronAggregateInsightsSkippedResponseSchema = external_exports.object({
121821
121950
  users: external_exports.number(),
121822
121951
  skipped: external_exports.literal(true)
@@ -121878,6 +122007,30 @@ var cronTelegramCleanupContract = c51.router({
121878
122007
  summary: "Delete expired Telegram messages"
121879
122008
  }
121880
122009
  });
122010
+ var cronVoiceChatCleanupContract = c51.router({
122011
+ cleanup: {
122012
+ method: "GET",
122013
+ path: "/api/cron/voice-chat-cleanup",
122014
+ headers: authHeadersSchema,
122015
+ responses: {
122016
+ 200: cronVoiceChatCleanupResponseSchema,
122017
+ 401: apiErrorSchema
122018
+ },
122019
+ summary: "Reset stuck voice-chat reasoners"
122020
+ }
122021
+ });
122022
+ var cronDrainEmailOutboxContract = c51.router({
122023
+ drain: {
122024
+ method: "GET",
122025
+ path: "/api/cron/drain-email-outbox",
122026
+ headers: authHeadersSchema,
122027
+ responses: {
122028
+ 200: cronDrainEmailOutboxResponseSchema,
122029
+ 401: apiErrorSchema
122030
+ },
122031
+ summary: "Drain pending email outbox messages"
122032
+ }
122033
+ });
121881
122034
  var cronAggregateInsightsContract = c51.router({
121882
122035
  aggregate: {
121883
122036
  method: "GET",
@@ -126787,4 +126940,4 @@ undici/lib/web/fetch/body.js:
126787
126940
  undici/lib/web/websocket/frame.js:
126788
126941
  (*! ws. MIT License. Einar Otto Stangvik <einaros@gmail.com> *)
126789
126942
  */
126790
- //# sourceMappingURL=chunk-USVVSPWL.js.map
126943
+ //# sourceMappingURL=chunk-R2ZGUBEJ.js.map