@spotpatch/shared 1.14.0 → 1.14.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.
@@ -16,6 +16,8 @@ declare const EXTERNAL_AGENT_ERROR_CODES: readonly ["AGENT_BINARY_NOT_FOUND", "A
16
16
  declare const EXTERNAL_AGENT_ACTIONS: readonly ["install-agent", "use-supported-version", "sign-in", "choose-available-model", "use-inbox", "confirm-managed-access", "review-candidate-diff", "review-workspace-conflict", "retry", "inspect-cleanup-warning"];
17
17
  declare const EXTERNAL_AGENT_MANAGED_PROFILE: "managed-apply-v1";
18
18
  declare const EXTERNAL_AGENT_CONTROL_LIMITS: Readonly<{
19
+ readonly maximumModels: 128;
20
+ readonly maximumModelCharacters: 128;
19
21
  readonly maximumEventSubscribers: 4;
20
22
  readonly eventHeartbeatMs: 15000;
21
23
  readonly eventReconnectMinimumMs: 500;
@@ -201,6 +203,7 @@ declare const externalAgentControlStatusSchema: z.ZodObject<{
201
203
  }>;
202
204
  requestedModel: z.ZodOptional<z.ZodString>;
203
205
  effectiveModel: z.ZodOptional<z.ZodString>;
206
+ models: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodString>>>;
204
207
  task: z.ZodOptional<z.ZodObject<{
205
208
  revision: z.ZodNumber;
206
209
  deliveryStatus: z.ZodEnum<{
@@ -320,6 +323,7 @@ declare const externalAgentControlConnectRequestSchema: z.ZodObject<{
320
323
  requestId: z.ZodString;
321
324
  adapterKind: z.ZodLiteral<"codex">;
322
325
  profile: z.ZodLiteral<"managed-apply-v1">;
326
+ model: z.ZodOptional<z.ZodString>;
323
327
  }, z.core.$strict>;
324
328
  declare const externalAgentControlDisconnectRequestSchema: z.ZodObject<{
325
329
  requestId: z.ZodString;
@@ -376,6 +380,7 @@ declare const externalAgentEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
376
380
  }>;
377
381
  requestedModel: z.ZodOptional<z.ZodString>;
378
382
  effectiveModel: z.ZodOptional<z.ZodString>;
383
+ models: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodString>>>;
379
384
  task: z.ZodOptional<z.ZodObject<{
380
385
  revision: z.ZodNumber;
381
386
  deliveryStatus: z.ZodEnum<{
@@ -16,6 +16,8 @@ declare const EXTERNAL_AGENT_ERROR_CODES: readonly ["AGENT_BINARY_NOT_FOUND", "A
16
16
  declare const EXTERNAL_AGENT_ACTIONS: readonly ["install-agent", "use-supported-version", "sign-in", "choose-available-model", "use-inbox", "confirm-managed-access", "review-candidate-diff", "review-workspace-conflict", "retry", "inspect-cleanup-warning"];
17
17
  declare const EXTERNAL_AGENT_MANAGED_PROFILE: "managed-apply-v1";
18
18
  declare const EXTERNAL_AGENT_CONTROL_LIMITS: Readonly<{
19
+ readonly maximumModels: 128;
20
+ readonly maximumModelCharacters: 128;
19
21
  readonly maximumEventSubscribers: 4;
20
22
  readonly eventHeartbeatMs: 15000;
21
23
  readonly eventReconnectMinimumMs: 500;
@@ -201,6 +203,7 @@ declare const externalAgentControlStatusSchema: z.ZodObject<{
201
203
  }>;
202
204
  requestedModel: z.ZodOptional<z.ZodString>;
203
205
  effectiveModel: z.ZodOptional<z.ZodString>;
206
+ models: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodString>>>;
204
207
  task: z.ZodOptional<z.ZodObject<{
205
208
  revision: z.ZodNumber;
206
209
  deliveryStatus: z.ZodEnum<{
@@ -320,6 +323,7 @@ declare const externalAgentControlConnectRequestSchema: z.ZodObject<{
320
323
  requestId: z.ZodString;
321
324
  adapterKind: z.ZodLiteral<"codex">;
322
325
  profile: z.ZodLiteral<"managed-apply-v1">;
326
+ model: z.ZodOptional<z.ZodString>;
323
327
  }, z.core.$strict>;
324
328
  declare const externalAgentControlDisconnectRequestSchema: z.ZodObject<{
325
329
  requestId: z.ZodString;
@@ -376,6 +380,7 @@ declare const externalAgentEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
376
380
  }>;
377
381
  requestedModel: z.ZodOptional<z.ZodString>;
378
382
  effectiveModel: z.ZodOptional<z.ZodString>;
383
+ models: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodString>>>;
379
384
  task: z.ZodOptional<z.ZodObject<{
380
385
  revision: z.ZodNumber;
381
386
  deliveryStatus: z.ZodEnum<{
@@ -172,6 +172,8 @@ var EXTERNAL_HANDOFF_LIMITS2 = Object.freeze({
172
172
  activeStatusPollMs: 1e3
173
173
  });
174
174
  var EXTERNAL_AGENT_CONTROL_LIMITS = Object.freeze({
175
+ maximumModels: 128,
176
+ maximumModelCharacters: 128,
175
177
  maximumEventSubscribers: 4,
176
178
  eventHeartbeatMs: 15e3,
177
179
  eventReconnectMinimumMs: 500,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/external-handoff-browser.ts","../src/protocol/external-handoff-constants.ts","../src/protocol/endpoints.ts"],"sourcesContent":["import type { ERROR_CODES as GLOBAL_ERROR_CODES } from \"./errors/error-code.js\";\nimport type {\n EXTERNAL_AGENT_ACTIONS as GLOBAL_EXTERNAL_AGENT_ACTIONS,\n EXTERNAL_AGENT_AUTH_READINESS as GLOBAL_EXTERNAL_AGENT_AUTH_READINESS,\n EXTERNAL_AGENT_CHECK_OUTCOMES as GLOBAL_EXTERNAL_AGENT_CHECK_OUTCOMES,\n EXTERNAL_AGENT_CONNECTION_STATES as GLOBAL_EXTERNAL_AGENT_CONNECTION_STATES,\n EXTERNAL_AGENT_CONTROL_LIMITS as GLOBAL_EXTERNAL_AGENT_CONTROL_LIMITS,\n EXTERNAL_AGENT_DELIVERY_STATUSES as GLOBAL_EXTERNAL_AGENT_DELIVERY_STATUSES,\n EXTERNAL_AGENT_ERROR_CODES as GLOBAL_EXTERNAL_AGENT_ERROR_CODES,\n EXTERNAL_AGENT_ERROR_RECOVERABILITY as GLOBAL_EXTERNAL_AGENT_ERROR_RECOVERABILITY,\n EXTERNAL_AGENT_ERROR_STAGES as GLOBAL_EXTERNAL_AGENT_ERROR_STAGES,\n EXTERNAL_AGENT_EXECUTION_STATUSES as GLOBAL_EXTERNAL_AGENT_EXECUTION_STATUSES,\n EXTERNAL_AGENT_GRANT_STATES as GLOBAL_EXTERNAL_AGENT_GRANT_STATES,\n EXTERNAL_AGENT_MANAGED_PROFILE as GLOBAL_EXTERNAL_AGENT_MANAGED_PROFILE,\n EXTERNAL_AGENT_MANAGED_PHASES as GLOBAL_EXTERNAL_AGENT_MANAGED_PHASES,\n EXTERNAL_AGENT_MODES as GLOBAL_EXTERNAL_AGENT_MODES,\n EXTERNAL_AGENT_VALIDATION_OUTCOMES as GLOBAL_EXTERNAL_AGENT_VALIDATION_OUTCOMES,\n} from \"./protocol/external-agent-control.js\";\nimport type { EXTERNAL_HANDOFF_LIMITS as GLOBAL_EXTERNAL_HANDOFF_LIMITS } from \"./protocol/external-handoff-constants.js\";\n\n/** Browser-reachable errors only; keeps unrelated Agent/worktree codes out of the lazy UI. */\nexport const ERROR_CODES = Object.freeze({\n INVALID_REQUEST: \"INVALID_REQUEST\",\n INVALID_TOKEN: \"INVALID_TOKEN\",\n ORIGIN_NOT_ALLOWED: \"ORIGIN_NOT_ALLOWED\",\n EXTERNAL_HANDOFF_DISABLED: \"EXTERNAL_HANDOFF_DISABLED\",\n EXTERNAL_HANDOFF_UNAVAILABLE: \"EXTERNAL_HANDOFF_UNAVAILABLE\",\n HANDOFF_VALIDATION_FAILED: \"HANDOFF_VALIDATION_FAILED\",\n HANDOFF_SOURCE_STALE: \"HANDOFF_SOURCE_STALE\",\n HANDOFF_NOT_FOUND: \"HANDOFF_NOT_FOUND\",\n HANDOFF_EXPIRED: \"HANDOFF_EXPIRED\",\n HANDOFF_CURSOR_INVALID: \"HANDOFF_CURSOR_INVALID\",\n HANDOFF_RESPONSE_TOO_LARGE: \"HANDOFF_RESPONSE_TOO_LARGE\",\n EXTERNAL_AGENT_BUSY: \"EXTERNAL_AGENT_BUSY\",\n ACTIVE_DISPATCH_INVALID: \"ACTIVE_DISPATCH_INVALID\",\n SESSION_CLOSED: \"SESSION_CLOSED\",\n INTERNAL_ERROR: \"INTERNAL_ERROR\",\n} as const satisfies Pick<\n typeof GLOBAL_ERROR_CODES,\n | \"ACTIVE_DISPATCH_INVALID\"\n | \"EXTERNAL_AGENT_BUSY\"\n | \"EXTERNAL_HANDOFF_DISABLED\"\n | \"EXTERNAL_HANDOFF_UNAVAILABLE\"\n | \"HANDOFF_CURSOR_INVALID\"\n | \"HANDOFF_EXPIRED\"\n | \"HANDOFF_NOT_FOUND\"\n | \"HANDOFF_RESPONSE_TOO_LARGE\"\n | \"HANDOFF_SOURCE_STALE\"\n | \"HANDOFF_VALIDATION_FAILED\"\n | \"INTERNAL_ERROR\"\n | \"INVALID_REQUEST\"\n | \"INVALID_TOKEN\"\n | \"ORIGIN_NOT_ALLOWED\"\n | \"SESSION_CLOSED\"\n>);\nexport type ErrorCode = (typeof ERROR_CODES)[keyof typeof ERROR_CODES];\nconst ERROR_CODE_VALUES: readonly string[] = Object.values(ERROR_CODES);\n\nexport function isErrorCode(value: unknown): value is ErrorCode {\n return typeof value === \"string\" && ERROR_CODE_VALUES.includes(value);\n}\n\n/** Browser-consumed limits only; literal types make drift from the canonical limits fail. */\nexport const EXTERNAL_HANDOFF_LIMITS = Object.freeze({\n maximumConnectorReceipts: 64,\n maximumWaiters: 8,\n activeStatusPollMs: 1_000,\n} as const satisfies Pick<\n typeof GLOBAL_EXTERNAL_HANDOFF_LIMITS,\n \"activeStatusPollMs\" | \"maximumConnectorReceipts\" | \"maximumWaiters\"\n>);\n\nexport const EXTERNAL_AGENT_CONTROL_LIMITS = Object.freeze({\n maximumEventSubscribers: 4,\n eventHeartbeatMs: 15_000,\n eventReconnectMinimumMs: 500,\n eventReconnectMaximumMs: 10_000,\n maximumChangedFiles: 20,\n maximumChecks: 64,\n maximumEventLineBytes: 64 * 1_024,\n maximumResultDiffBytes: 512_000,\n} as const satisfies typeof GLOBAL_EXTERNAL_AGENT_CONTROL_LIMITS);\nexport const EXTERNAL_AGENT_MANAGED_PROFILE =\n \"managed-apply-v1\" as const satisfies typeof GLOBAL_EXTERNAL_AGENT_MANAGED_PROFILE;\n\n/** Browser-safe literal projections; type-only checks prevent protocol drift without Zod. */\nexport const EXTERNAL_AGENT_MODES = Object.freeze([\n \"inbox\",\n \"managed\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_MODES);\nexport const EXTERNAL_AGENT_CONNECTION_STATES = Object.freeze([\n \"disconnected\",\n \"diagnosing\",\n \"awaiting-consent\",\n \"connecting\",\n \"ready\",\n \"busy\",\n \"degraded\",\n \"error\",\n \"disconnecting\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_CONNECTION_STATES);\nexport const EXTERNAL_AGENT_AUTH_READINESS = Object.freeze([\n \"authenticated\",\n \"auth-not-required\",\n \"signed-out\",\n \"unknown\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_AUTH_READINESS);\nexport const EXTERNAL_AGENT_GRANT_STATES = Object.freeze([\n \"missing\",\n \"valid\",\n \"invalid\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_GRANT_STATES);\nexport const EXTERNAL_AGENT_DELIVERY_STATUSES = Object.freeze([\n \"queued\",\n \"dispatching\",\n \"accepted\",\n \"unknown\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_DELIVERY_STATUSES);\nexport const EXTERNAL_AGENT_EXECUTION_STATUSES = Object.freeze([\n \"not-observable\",\n \"started\",\n \"terminal-succeeded\",\n \"terminal-failed\",\n \"interrupted\",\n \"unknown\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_EXECUTION_STATUSES);\nexport const EXTERNAL_AGENT_MANAGED_PHASES = Object.freeze([\n \"preparing\",\n \"running\",\n \"auditing\",\n \"validating\",\n \"applying\",\n \"completed\",\n \"review-required\",\n \"failed\",\n \"cancelled\",\n \"cleanup-warning\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_MANAGED_PHASES);\nexport const EXTERNAL_AGENT_VALIDATION_OUTCOMES = Object.freeze([\n \"passed\",\n \"failed\",\n \"not-configured\",\n \"unavailable\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_VALIDATION_OUTCOMES);\nexport const EXTERNAL_AGENT_CHECK_OUTCOMES = Object.freeze([\n \"passed\",\n \"failed\",\n \"unavailable\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_CHECK_OUTCOMES);\nexport const EXTERNAL_AGENT_ERROR_CODES = Object.freeze([\n \"AGENT_BINARY_NOT_FOUND\",\n \"AGENT_BINARY_UNTRUSTED\",\n \"AGENT_VERSION_UNSUPPORTED\",\n \"APP_SERVER_HANDSHAKE_FAILED\",\n \"AGENT_AUTH_REQUIRED\",\n \"AGENT_MODEL_UNAVAILABLE\",\n \"AGENT_PROTOCOL_INCOMPATIBLE\",\n \"CODEX_CONFIG_ISOLATION_UNSUPPORTED\",\n \"MANAGED_GRANT_INVALID\",\n \"MANAGED_PLATFORM_UNSUPPORTED\",\n \"MANAGED_GIT_REQUIRED\",\n \"MANAGED_SNAPSHOT_FAILED\",\n \"MANAGED_SCOPE_VIOLATION\",\n \"MANAGED_CHANGE_LIMIT_EXCEEDED\",\n \"MANAGED_VALIDATION_FAILED\",\n \"MANAGED_WORKSPACE_CONFLICT\",\n \"MANAGED_APPLY_FAILED\",\n \"MANAGED_CLEANUP_INCOMPLETE\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_ERROR_CODES);\nexport const EXTERNAL_AGENT_ERROR_STAGES = Object.freeze([\n \"integration\",\n \"binary\",\n \"handshake\",\n \"auth\",\n \"model\",\n \"protocol\",\n \"snapshot\",\n \"audit\",\n \"validation\",\n \"apply\",\n \"cleanup\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_ERROR_STAGES);\nexport const EXTERNAL_AGENT_ERROR_RECOVERABILITY = Object.freeze([\n \"retry\",\n \"user-action\",\n \"reconfigure\",\n \"none\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_ERROR_RECOVERABILITY);\nexport const EXTERNAL_AGENT_ACTIONS = Object.freeze([\n \"install-agent\",\n \"use-supported-version\",\n \"sign-in\",\n \"choose-available-model\",\n \"use-inbox\",\n \"confirm-managed-access\",\n \"review-candidate-diff\",\n \"review-workspace-conflict\",\n \"retry\",\n \"inspect-cleanup-warning\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_ACTIONS);\n\nexport {\n EXTERNAL_HANDOFF_ACTIVE_ADAPTER_KINDS,\n EXTERNAL_HANDOFF_ACTIVE_ADAPTER_STATES,\n EXTERNAL_HANDOFF_BROKER_PROTOCOL_VERSION,\n EXTERNAL_HANDOFF_DISPATCH_PHASES,\n EXTERNAL_HANDOFF_FRAMEWORKS,\n EXTERNAL_HANDOFF_REPORTABLE_DISPATCH_PHASES,\n EXTERNAL_HANDOFF_SNAPSHOT_SCHEMA_VERSION,\n EXTERNAL_HANDOFF_STATES,\n type ExternalHandoffActiveAdapterKind,\n type ExternalHandoffActiveAdapterState,\n type ExternalHandoffDispatchPhase,\n type ExternalHandoffFramework,\n type ExternalHandoffReportableDispatchPhase,\n type ExternalHandoffState,\n} from \"./protocol/external-handoff-constants.js\";\nexport { SPOTPATCH_ENDPOINTS, SPOTPATCH_TOKEN_HEADER } from \"./protocol/endpoints.js\";\nexport type {\n ExternalAgentAction,\n ExternalAgentConnectionState,\n ExternalAgentControlCancelRequest,\n ExternalAgentControlConnectRequest,\n ExternalAgentControlDisconnectRequest,\n ExternalAgentControlStatus,\n ExternalAgentErrorCode,\n ExternalAgentEvent,\n ExternalAgentEventsRequest,\n ExternalAgentManagedResult,\n ExternalAgentResultRequest,\n} from \"./protocol/external-agent-control.js\";\nexport type {\n ActiveAdapterSummary,\n DispatchSummary,\n ExternalHandoffCapability,\n ExternalHandoffPublishDelivery,\n ExternalHandoffPublishRequest,\n ExternalHandoffPublishResult,\n ExternalHandoffResolveDeliveryRequest,\n ExternalHandoffSnapshot,\n ExternalHandoffStatusRequest,\n ExternalHandoffStatusResult,\n ExternalHandoffSummary,\n} from \"./protocol/external-handoff.js\";\nexport type { SpotAnnotation, SpotPatchLocale } from \"./model/annotation.js\";\n","export const EXTERNAL_HANDOFF_SNAPSHOT_SCHEMA_VERSION = 1 as const;\nexport const EXTERNAL_HANDOFF_BROKER_PROTOCOL_VERSION = 2 as const;\nexport const EXTERNAL_HANDOFF_STATES = Object.freeze([\n \"available\",\n \"expired\",\n \"superseded\",\n] as const);\nexport const EXTERNAL_HANDOFF_FRAMEWORKS = Object.freeze([\n \"vite\",\n \"next\",\n \"astro\",\n] as const);\nexport const EXTERNAL_HANDOFF_ACTIVE_ADAPTER_KINDS = Object.freeze([\n \"claude-channel\",\n \"codex-app-server\",\n] as const);\nexport const EXTERNAL_HANDOFF_ACTIVE_ADAPTER_STATES = Object.freeze([\n \"ready\",\n \"busy\",\n \"blocked\",\n] as const);\nexport const EXTERNAL_HANDOFF_DISPATCH_PHASES = Object.freeze([\n \"queued\",\n \"dispatching\",\n \"dispatched\",\n \"working\",\n \"completed\",\n \"failed\",\n \"delivery-unknown\",\n] as const);\nexport const EXTERNAL_HANDOFF_REPORTABLE_DISPATCH_PHASES = Object.freeze([\n \"dispatching\",\n \"dispatched\",\n \"working\",\n \"completed\",\n \"failed\",\n \"delivery-unknown\",\n] as const);\n\nexport const EXTERNAL_HANDOFF_LIMITS = Object.freeze({\n maximumSnapshotBytes: 256 * 1024,\n maximumPublishBodyBytes: 256 * 1024,\n maximumBrokerRequestBytes: 8 * 1024,\n maximumDescriptorBytes: 8 * 1024,\n maximumHistorySummaries: 8,\n maximumConnectorReceipts: 64,\n handoffTtlMs: 15 * 60 * 1_000,\n defaultWaitMs: 20_000,\n maximumWaitMs: 25_000,\n maximumWaiters: 8,\n maximumDescriptorsPerScan: 32,\n maximumProjectAncestors: 64,\n maximumBrokerHeaderBytes: 8 * 1024,\n maximumBrokerSockets: 32,\n brokerDiscoveryTimeoutMs: 750,\n brokerRequestTimeoutMs: 2_000,\n brokerWaitGraceMs: 2_000,\n maximumSetupConfigBytes: 1_024 * 1_024,\n maximumRequestIdRecords: 16,\n requestIdTtlMs: 15 * 60 * 1_000,\n activeHeartbeatIntervalMs: 3_000,\n activeLeaseDurationMs: 10_000,\n activeTransportWriteTimeoutMs: 5_000,\n activeDispatchTimeoutMs: 30 * 60 * 1_000,\n activeStatusPollMs: 1_000,\n} as const);\n\nexport type ExternalHandoffState = (typeof EXTERNAL_HANDOFF_STATES)[number];\nexport type ExternalHandoffFramework = (typeof EXTERNAL_HANDOFF_FRAMEWORKS)[number];\nexport type ExternalHandoffActiveAdapterKind =\n (typeof EXTERNAL_HANDOFF_ACTIVE_ADAPTER_KINDS)[number];\nexport type ExternalHandoffActiveAdapterState =\n (typeof EXTERNAL_HANDOFF_ACTIVE_ADAPTER_STATES)[number];\nexport type ExternalHandoffDispatchPhase =\n (typeof EXTERNAL_HANDOFF_DISPATCH_PHASES)[number];\nexport type ExternalHandoffReportableDispatchPhase =\n (typeof EXTERNAL_HANDOFF_REPORTABLE_DISPATCH_PHASES)[number];\n","export const SPOTPATCH_API_BASE = \"/__spotpatch/v1\" as const;\nexport const SPOTPATCH_TOKEN_HEADER = \"X-SpotPatch-Token\" as const;\n\nexport const SPOTPATCH_ENDPOINTS = Object.freeze({\n bootstrap: `${SPOTPATCH_API_BASE}/bootstrap`,\n sourceContext: `${SPOTPATCH_API_BASE}/source-context`,\n openEditor: `${SPOTPATCH_API_BASE}/open-editor`,\n dataFlowComponentReport: `${SPOTPATCH_API_BASE}/data-flow/component-report`,\n dataFlowPageReport: `${SPOTPATCH_API_BASE}/data-flow/page-report`,\n agentCapability: `${SPOTPATCH_API_BASE}/agent/capability`,\n agentWorkspaceHealth: `${SPOTPATCH_API_BASE}/agent/workspace-health`,\n agentJobs: `${SPOTPATCH_API_BASE}/agent/jobs`,\n askCapability: `${SPOTPATCH_API_BASE}/ask/capability`,\n askJobs: `${SPOTPATCH_API_BASE}/ask/jobs`,\n externalHandoffCapability: `${SPOTPATCH_API_BASE}/external-handoff/capability`,\n externalHandoffPublish: `${SPOTPATCH_API_BASE}/external-handoff/publish`,\n externalHandoffStatus: `${SPOTPATCH_API_BASE}/external-handoff/status`,\n externalHandoffResolveDelivery: `${SPOTPATCH_API_BASE}/external-handoff/resolve-delivery`,\n externalAgentControlStatus: `${SPOTPATCH_API_BASE}/external-agent/control/status`,\n externalAgentControlConnect: `${SPOTPATCH_API_BASE}/external-agent/control/connect`,\n externalAgentControlDisconnect: `${SPOTPATCH_API_BASE}/external-agent/control/disconnect`,\n externalAgentControlCancel: `${SPOTPATCH_API_BASE}/external-agent/control/cancel`,\n externalAgentEvents: `${SPOTPATCH_API_BASE}/external-agent/events`,\n externalAgentResult: `${SPOTPATCH_API_BASE}/external-agent/result`,\n});\n\nexport type AgentJobAction = \"events\" | \"result\" | \"cancel\" | \"apply\" | \"revert\";\nexport type AskJobAction = \"events\" | \"result\" | \"cancel\";\n\nexport function getAgentJobEndpoint(jobId: string, action: AgentJobAction): string {\n return `${SPOTPATCH_ENDPOINTS.agentJobs}/${encodeURIComponent(jobId)}/${action}`;\n}\n\nexport function getAskJobEndpoint(\n jobId: string,\n action: AskJobAction,\n options: Readonly<{ afterSequence?: number }> = {},\n): string {\n const endpoint = `${SPOTPATCH_ENDPOINTS.askJobs}/${encodeURIComponent(jobId)}/${action}`;\n if (action !== \"events\" && options.afterSequence !== undefined) {\n throw new RangeError(\"afterSequence is only valid for the events endpoint.\");\n }\n if (options.afterSequence === undefined) return endpoint;\n if (!Number.isSafeInteger(options.afterSequence) || options.afterSequence < 0) {\n throw new RangeError(\"afterSequence must be a non-negative safe integer.\");\n }\n return `${endpoint}?afterSequence=${String(options.afterSequence)}`;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iCAAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAO,IAAM,2CAA2C;AACjD,IAAM,2CAA2C;AACjD,IAAM,0BAA0B,OAAO,OAAO;AAAA,EACnD;AAAA,EACA;AAAA,EACA;AACF,CAAU;AACH,IAAM,8BAA8B,OAAO,OAAO;AAAA,EACvD;AAAA,EACA;AAAA,EACA;AACF,CAAU;AACH,IAAM,wCAAwC,OAAO,OAAO;AAAA,EACjE;AAAA,EACA;AACF,CAAU;AACH,IAAM,yCAAyC,OAAO,OAAO;AAAA,EAClE;AAAA,EACA;AAAA,EACA;AACF,CAAU;AACH,IAAM,mCAAmC,OAAO,OAAO;AAAA,EAC5D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAU;AACH,IAAM,8CAA8C,OAAO,OAAO;AAAA,EACvE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAU;AAEH,IAAM,0BAA0B,OAAO,OAAO;AAAA,EACnD,sBAAsB,MAAM;AAAA,EAC5B,yBAAyB,MAAM;AAAA,EAC/B,2BAA2B,IAAI;AAAA,EAC/B,wBAAwB,IAAI;AAAA,EAC5B,yBAAyB;AAAA,EACzB,0BAA0B;AAAA,EAC1B,cAAc,KAAK,KAAK;AAAA,EACxB,eAAe;AAAA,EACf,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,2BAA2B;AAAA,EAC3B,yBAAyB;AAAA,EACzB,0BAA0B,IAAI;AAAA,EAC9B,sBAAsB;AAAA,EACtB,0BAA0B;AAAA,EAC1B,wBAAwB;AAAA,EACxB,mBAAmB;AAAA,EACnB,yBAAyB,OAAQ;AAAA,EACjC,yBAAyB;AAAA,EACzB,gBAAgB,KAAK,KAAK;AAAA,EAC1B,2BAA2B;AAAA,EAC3B,uBAAuB;AAAA,EACvB,+BAA+B;AAAA,EAC/B,yBAAyB,KAAK,KAAK;AAAA,EACnC,oBAAoB;AACtB,CAAU;;;ACjEH,IAAM,qBAAqB;AAC3B,IAAM,yBAAyB;AAE/B,IAAM,sBAAsB,OAAO,OAAO;AAAA,EAC/C,WAAW,GAAG,kBAAkB;AAAA,EAChC,eAAe,GAAG,kBAAkB;AAAA,EACpC,YAAY,GAAG,kBAAkB;AAAA,EACjC,yBAAyB,GAAG,kBAAkB;AAAA,EAC9C,oBAAoB,GAAG,kBAAkB;AAAA,EACzC,iBAAiB,GAAG,kBAAkB;AAAA,EACtC,sBAAsB,GAAG,kBAAkB;AAAA,EAC3C,WAAW,GAAG,kBAAkB;AAAA,EAChC,eAAe,GAAG,kBAAkB;AAAA,EACpC,SAAS,GAAG,kBAAkB;AAAA,EAC9B,2BAA2B,GAAG,kBAAkB;AAAA,EAChD,wBAAwB,GAAG,kBAAkB;AAAA,EAC7C,uBAAuB,GAAG,kBAAkB;AAAA,EAC5C,gCAAgC,GAAG,kBAAkB;AAAA,EACrD,4BAA4B,GAAG,kBAAkB;AAAA,EACjD,6BAA6B,GAAG,kBAAkB;AAAA,EAClD,gCAAgC,GAAG,kBAAkB;AAAA,EACrD,4BAA4B,GAAG,kBAAkB;AAAA,EACjD,qBAAqB,GAAG,kBAAkB;AAAA,EAC1C,qBAAqB,GAAG,kBAAkB;AAC5C,CAAC;;;AFHM,IAAM,cAAc,OAAO,OAAO;AAAA,EACvC,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,oBAAoB;AAAA,EACpB,2BAA2B;AAAA,EAC3B,8BAA8B;AAAA,EAC9B,2BAA2B;AAAA,EAC3B,sBAAsB;AAAA,EACtB,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,wBAAwB;AAAA,EACxB,4BAA4B;AAAA,EAC5B,qBAAqB;AAAA,EACrB,yBAAyB;AAAA,EACzB,gBAAgB;AAAA,EAChB,gBAAgB;AAClB,CAiBC;AAED,IAAM,oBAAuC,OAAO,OAAO,WAAW;AAE/D,SAAS,YAAY,OAAoC;AAC9D,SAAO,OAAO,UAAU,YAAY,kBAAkB,SAAS,KAAK;AACtE;AAGO,IAAMC,2BAA0B,OAAO,OAAO;AAAA,EACnD,0BAA0B;AAAA,EAC1B,gBAAgB;AAAA,EAChB,oBAAoB;AACtB,CAGC;AAEM,IAAM,gCAAgC,OAAO,OAAO;AAAA,EACzD,yBAAyB;AAAA,EACzB,kBAAkB;AAAA,EAClB,yBAAyB;AAAA,EACzB,yBAAyB;AAAA,EACzB,qBAAqB;AAAA,EACrB,eAAe;AAAA,EACf,uBAAuB,KAAK;AAAA,EAC5B,wBAAwB;AAC1B,CAAgE;AACzD,IAAM,iCACX;AAGK,IAAM,uBAAuB,OAAO,OAAO;AAAA,EAChD;AAAA,EACA;AACF,CAAuD;AAChD,IAAM,mCAAmC,OAAO,OAAO;AAAA,EAC5D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAmE;AAC5D,IAAM,gCAAgC,OAAO,OAAO;AAAA,EACzD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAgE;AACzD,IAAM,8BAA8B,OAAO,OAAO;AAAA,EACvD;AAAA,EACA;AAAA,EACA;AACF,CAA8D;AACvD,IAAM,mCAAmC,OAAO,OAAO;AAAA,EAC5D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAmE;AAC5D,IAAM,oCAAoC,OAAO,OAAO;AAAA,EAC7D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAoE;AAC7D,IAAM,gCAAgC,OAAO,OAAO;AAAA,EACzD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAgE;AACzD,IAAM,qCAAqC,OAAO,OAAO;AAAA,EAC9D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAqE;AAC9D,IAAM,gCAAgC,OAAO,OAAO;AAAA,EACzD;AAAA,EACA;AAAA,EACA;AACF,CAAgE;AACzD,IAAM,6BAA6B,OAAO,OAAO;AAAA,EACtD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAA6D;AACtD,IAAM,8BAA8B,OAAO,OAAO;AAAA,EACvD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAA8D;AACvD,IAAM,sCAAsC,OAAO,OAAO;AAAA,EAC/D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAsE;AAC/D,IAAM,yBAAyB,OAAO,OAAO;AAAA,EAClD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAyD;","names":["EXTERNAL_HANDOFF_LIMITS","EXTERNAL_HANDOFF_LIMITS"]}
1
+ {"version":3,"sources":["../src/external-handoff-browser.ts","../src/protocol/external-handoff-constants.ts","../src/protocol/endpoints.ts"],"sourcesContent":["import type { ERROR_CODES as GLOBAL_ERROR_CODES } from \"./errors/error-code.js\";\nimport type {\n EXTERNAL_AGENT_ACTIONS as GLOBAL_EXTERNAL_AGENT_ACTIONS,\n EXTERNAL_AGENT_AUTH_READINESS as GLOBAL_EXTERNAL_AGENT_AUTH_READINESS,\n EXTERNAL_AGENT_CHECK_OUTCOMES as GLOBAL_EXTERNAL_AGENT_CHECK_OUTCOMES,\n EXTERNAL_AGENT_CONNECTION_STATES as GLOBAL_EXTERNAL_AGENT_CONNECTION_STATES,\n EXTERNAL_AGENT_CONTROL_LIMITS as GLOBAL_EXTERNAL_AGENT_CONTROL_LIMITS,\n EXTERNAL_AGENT_DELIVERY_STATUSES as GLOBAL_EXTERNAL_AGENT_DELIVERY_STATUSES,\n EXTERNAL_AGENT_ERROR_CODES as GLOBAL_EXTERNAL_AGENT_ERROR_CODES,\n EXTERNAL_AGENT_ERROR_RECOVERABILITY as GLOBAL_EXTERNAL_AGENT_ERROR_RECOVERABILITY,\n EXTERNAL_AGENT_ERROR_STAGES as GLOBAL_EXTERNAL_AGENT_ERROR_STAGES,\n EXTERNAL_AGENT_EXECUTION_STATUSES as GLOBAL_EXTERNAL_AGENT_EXECUTION_STATUSES,\n EXTERNAL_AGENT_GRANT_STATES as GLOBAL_EXTERNAL_AGENT_GRANT_STATES,\n EXTERNAL_AGENT_MANAGED_PROFILE as GLOBAL_EXTERNAL_AGENT_MANAGED_PROFILE,\n EXTERNAL_AGENT_MANAGED_PHASES as GLOBAL_EXTERNAL_AGENT_MANAGED_PHASES,\n EXTERNAL_AGENT_MODES as GLOBAL_EXTERNAL_AGENT_MODES,\n EXTERNAL_AGENT_VALIDATION_OUTCOMES as GLOBAL_EXTERNAL_AGENT_VALIDATION_OUTCOMES,\n} from \"./protocol/external-agent-control.js\";\nimport type { EXTERNAL_HANDOFF_LIMITS as GLOBAL_EXTERNAL_HANDOFF_LIMITS } from \"./protocol/external-handoff-constants.js\";\n\n/** Browser-reachable errors only; keeps unrelated Agent/worktree codes out of the lazy UI. */\nexport const ERROR_CODES = Object.freeze({\n INVALID_REQUEST: \"INVALID_REQUEST\",\n INVALID_TOKEN: \"INVALID_TOKEN\",\n ORIGIN_NOT_ALLOWED: \"ORIGIN_NOT_ALLOWED\",\n EXTERNAL_HANDOFF_DISABLED: \"EXTERNAL_HANDOFF_DISABLED\",\n EXTERNAL_HANDOFF_UNAVAILABLE: \"EXTERNAL_HANDOFF_UNAVAILABLE\",\n HANDOFF_VALIDATION_FAILED: \"HANDOFF_VALIDATION_FAILED\",\n HANDOFF_SOURCE_STALE: \"HANDOFF_SOURCE_STALE\",\n HANDOFF_NOT_FOUND: \"HANDOFF_NOT_FOUND\",\n HANDOFF_EXPIRED: \"HANDOFF_EXPIRED\",\n HANDOFF_CURSOR_INVALID: \"HANDOFF_CURSOR_INVALID\",\n HANDOFF_RESPONSE_TOO_LARGE: \"HANDOFF_RESPONSE_TOO_LARGE\",\n EXTERNAL_AGENT_BUSY: \"EXTERNAL_AGENT_BUSY\",\n ACTIVE_DISPATCH_INVALID: \"ACTIVE_DISPATCH_INVALID\",\n SESSION_CLOSED: \"SESSION_CLOSED\",\n INTERNAL_ERROR: \"INTERNAL_ERROR\",\n} as const satisfies Pick<\n typeof GLOBAL_ERROR_CODES,\n | \"ACTIVE_DISPATCH_INVALID\"\n | \"EXTERNAL_AGENT_BUSY\"\n | \"EXTERNAL_HANDOFF_DISABLED\"\n | \"EXTERNAL_HANDOFF_UNAVAILABLE\"\n | \"HANDOFF_CURSOR_INVALID\"\n | \"HANDOFF_EXPIRED\"\n | \"HANDOFF_NOT_FOUND\"\n | \"HANDOFF_RESPONSE_TOO_LARGE\"\n | \"HANDOFF_SOURCE_STALE\"\n | \"HANDOFF_VALIDATION_FAILED\"\n | \"INTERNAL_ERROR\"\n | \"INVALID_REQUEST\"\n | \"INVALID_TOKEN\"\n | \"ORIGIN_NOT_ALLOWED\"\n | \"SESSION_CLOSED\"\n>);\nexport type ErrorCode = (typeof ERROR_CODES)[keyof typeof ERROR_CODES];\nconst ERROR_CODE_VALUES: readonly string[] = Object.values(ERROR_CODES);\n\nexport function isErrorCode(value: unknown): value is ErrorCode {\n return typeof value === \"string\" && ERROR_CODE_VALUES.includes(value);\n}\n\n/** Browser-consumed limits only; literal types make drift from the canonical limits fail. */\nexport const EXTERNAL_HANDOFF_LIMITS = Object.freeze({\n maximumConnectorReceipts: 64,\n maximumWaiters: 8,\n activeStatusPollMs: 1_000,\n} as const satisfies Pick<\n typeof GLOBAL_EXTERNAL_HANDOFF_LIMITS,\n \"activeStatusPollMs\" | \"maximumConnectorReceipts\" | \"maximumWaiters\"\n>);\n\nexport const EXTERNAL_AGENT_CONTROL_LIMITS = Object.freeze({\n maximumModels: 128,\n maximumModelCharacters: 128,\n maximumEventSubscribers: 4,\n eventHeartbeatMs: 15_000,\n eventReconnectMinimumMs: 500,\n eventReconnectMaximumMs: 10_000,\n maximumChangedFiles: 20,\n maximumChecks: 64,\n maximumEventLineBytes: 64 * 1_024,\n maximumResultDiffBytes: 512_000,\n} as const satisfies typeof GLOBAL_EXTERNAL_AGENT_CONTROL_LIMITS);\nexport const EXTERNAL_AGENT_MANAGED_PROFILE =\n \"managed-apply-v1\" as const satisfies typeof GLOBAL_EXTERNAL_AGENT_MANAGED_PROFILE;\n\n/** Browser-safe literal projections; type-only checks prevent protocol drift without Zod. */\nexport const EXTERNAL_AGENT_MODES = Object.freeze([\n \"inbox\",\n \"managed\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_MODES);\nexport const EXTERNAL_AGENT_CONNECTION_STATES = Object.freeze([\n \"disconnected\",\n \"diagnosing\",\n \"awaiting-consent\",\n \"connecting\",\n \"ready\",\n \"busy\",\n \"degraded\",\n \"error\",\n \"disconnecting\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_CONNECTION_STATES);\nexport const EXTERNAL_AGENT_AUTH_READINESS = Object.freeze([\n \"authenticated\",\n \"auth-not-required\",\n \"signed-out\",\n \"unknown\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_AUTH_READINESS);\nexport const EXTERNAL_AGENT_GRANT_STATES = Object.freeze([\n \"missing\",\n \"valid\",\n \"invalid\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_GRANT_STATES);\nexport const EXTERNAL_AGENT_DELIVERY_STATUSES = Object.freeze([\n \"queued\",\n \"dispatching\",\n \"accepted\",\n \"unknown\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_DELIVERY_STATUSES);\nexport const EXTERNAL_AGENT_EXECUTION_STATUSES = Object.freeze([\n \"not-observable\",\n \"started\",\n \"terminal-succeeded\",\n \"terminal-failed\",\n \"interrupted\",\n \"unknown\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_EXECUTION_STATUSES);\nexport const EXTERNAL_AGENT_MANAGED_PHASES = Object.freeze([\n \"preparing\",\n \"running\",\n \"auditing\",\n \"validating\",\n \"applying\",\n \"completed\",\n \"review-required\",\n \"failed\",\n \"cancelled\",\n \"cleanup-warning\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_MANAGED_PHASES);\nexport const EXTERNAL_AGENT_VALIDATION_OUTCOMES = Object.freeze([\n \"passed\",\n \"failed\",\n \"not-configured\",\n \"unavailable\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_VALIDATION_OUTCOMES);\nexport const EXTERNAL_AGENT_CHECK_OUTCOMES = Object.freeze([\n \"passed\",\n \"failed\",\n \"unavailable\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_CHECK_OUTCOMES);\nexport const EXTERNAL_AGENT_ERROR_CODES = Object.freeze([\n \"AGENT_BINARY_NOT_FOUND\",\n \"AGENT_BINARY_UNTRUSTED\",\n \"AGENT_VERSION_UNSUPPORTED\",\n \"APP_SERVER_HANDSHAKE_FAILED\",\n \"AGENT_AUTH_REQUIRED\",\n \"AGENT_MODEL_UNAVAILABLE\",\n \"AGENT_PROTOCOL_INCOMPATIBLE\",\n \"CODEX_CONFIG_ISOLATION_UNSUPPORTED\",\n \"MANAGED_GRANT_INVALID\",\n \"MANAGED_PLATFORM_UNSUPPORTED\",\n \"MANAGED_GIT_REQUIRED\",\n \"MANAGED_SNAPSHOT_FAILED\",\n \"MANAGED_SCOPE_VIOLATION\",\n \"MANAGED_CHANGE_LIMIT_EXCEEDED\",\n \"MANAGED_VALIDATION_FAILED\",\n \"MANAGED_WORKSPACE_CONFLICT\",\n \"MANAGED_APPLY_FAILED\",\n \"MANAGED_CLEANUP_INCOMPLETE\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_ERROR_CODES);\nexport const EXTERNAL_AGENT_ERROR_STAGES = Object.freeze([\n \"integration\",\n \"binary\",\n \"handshake\",\n \"auth\",\n \"model\",\n \"protocol\",\n \"snapshot\",\n \"audit\",\n \"validation\",\n \"apply\",\n \"cleanup\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_ERROR_STAGES);\nexport const EXTERNAL_AGENT_ERROR_RECOVERABILITY = Object.freeze([\n \"retry\",\n \"user-action\",\n \"reconfigure\",\n \"none\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_ERROR_RECOVERABILITY);\nexport const EXTERNAL_AGENT_ACTIONS = Object.freeze([\n \"install-agent\",\n \"use-supported-version\",\n \"sign-in\",\n \"choose-available-model\",\n \"use-inbox\",\n \"confirm-managed-access\",\n \"review-candidate-diff\",\n \"review-workspace-conflict\",\n \"retry\",\n \"inspect-cleanup-warning\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_ACTIONS);\n\nexport {\n EXTERNAL_HANDOFF_ACTIVE_ADAPTER_KINDS,\n EXTERNAL_HANDOFF_ACTIVE_ADAPTER_STATES,\n EXTERNAL_HANDOFF_BROKER_PROTOCOL_VERSION,\n EXTERNAL_HANDOFF_DISPATCH_PHASES,\n EXTERNAL_HANDOFF_FRAMEWORKS,\n EXTERNAL_HANDOFF_REPORTABLE_DISPATCH_PHASES,\n EXTERNAL_HANDOFF_SNAPSHOT_SCHEMA_VERSION,\n EXTERNAL_HANDOFF_STATES,\n type ExternalHandoffActiveAdapterKind,\n type ExternalHandoffActiveAdapterState,\n type ExternalHandoffDispatchPhase,\n type ExternalHandoffFramework,\n type ExternalHandoffReportableDispatchPhase,\n type ExternalHandoffState,\n} from \"./protocol/external-handoff-constants.js\";\nexport { SPOTPATCH_ENDPOINTS, SPOTPATCH_TOKEN_HEADER } from \"./protocol/endpoints.js\";\nexport type {\n ExternalAgentAction,\n ExternalAgentConnectionState,\n ExternalAgentControlCancelRequest,\n ExternalAgentControlConnectRequest,\n ExternalAgentControlDisconnectRequest,\n ExternalAgentControlStatus,\n ExternalAgentErrorCode,\n ExternalAgentEvent,\n ExternalAgentEventsRequest,\n ExternalAgentManagedResult,\n ExternalAgentResultRequest,\n} from \"./protocol/external-agent-control.js\";\nexport type {\n ActiveAdapterSummary,\n DispatchSummary,\n ExternalHandoffCapability,\n ExternalHandoffPublishDelivery,\n ExternalHandoffPublishRequest,\n ExternalHandoffPublishResult,\n ExternalHandoffResolveDeliveryRequest,\n ExternalHandoffSnapshot,\n ExternalHandoffStatusRequest,\n ExternalHandoffStatusResult,\n ExternalHandoffSummary,\n} from \"./protocol/external-handoff.js\";\nexport type { SpotAnnotation, SpotPatchLocale } from \"./model/annotation.js\";\n","export const EXTERNAL_HANDOFF_SNAPSHOT_SCHEMA_VERSION = 1 as const;\nexport const EXTERNAL_HANDOFF_BROKER_PROTOCOL_VERSION = 2 as const;\nexport const EXTERNAL_HANDOFF_STATES = Object.freeze([\n \"available\",\n \"expired\",\n \"superseded\",\n] as const);\nexport const EXTERNAL_HANDOFF_FRAMEWORKS = Object.freeze([\n \"vite\",\n \"next\",\n \"astro\",\n] as const);\nexport const EXTERNAL_HANDOFF_ACTIVE_ADAPTER_KINDS = Object.freeze([\n \"claude-channel\",\n \"codex-app-server\",\n] as const);\nexport const EXTERNAL_HANDOFF_ACTIVE_ADAPTER_STATES = Object.freeze([\n \"ready\",\n \"busy\",\n \"blocked\",\n] as const);\nexport const EXTERNAL_HANDOFF_DISPATCH_PHASES = Object.freeze([\n \"queued\",\n \"dispatching\",\n \"dispatched\",\n \"working\",\n \"completed\",\n \"failed\",\n \"delivery-unknown\",\n] as const);\nexport const EXTERNAL_HANDOFF_REPORTABLE_DISPATCH_PHASES = Object.freeze([\n \"dispatching\",\n \"dispatched\",\n \"working\",\n \"completed\",\n \"failed\",\n \"delivery-unknown\",\n] as const);\n\nexport const EXTERNAL_HANDOFF_LIMITS = Object.freeze({\n maximumSnapshotBytes: 256 * 1024,\n maximumPublishBodyBytes: 256 * 1024,\n maximumBrokerRequestBytes: 8 * 1024,\n maximumDescriptorBytes: 8 * 1024,\n maximumHistorySummaries: 8,\n maximumConnectorReceipts: 64,\n handoffTtlMs: 15 * 60 * 1_000,\n defaultWaitMs: 20_000,\n maximumWaitMs: 25_000,\n maximumWaiters: 8,\n maximumDescriptorsPerScan: 32,\n maximumProjectAncestors: 64,\n maximumBrokerHeaderBytes: 8 * 1024,\n maximumBrokerSockets: 32,\n brokerDiscoveryTimeoutMs: 750,\n brokerRequestTimeoutMs: 2_000,\n brokerWaitGraceMs: 2_000,\n maximumSetupConfigBytes: 1_024 * 1_024,\n maximumRequestIdRecords: 16,\n requestIdTtlMs: 15 * 60 * 1_000,\n activeHeartbeatIntervalMs: 3_000,\n activeLeaseDurationMs: 10_000,\n activeTransportWriteTimeoutMs: 5_000,\n activeDispatchTimeoutMs: 30 * 60 * 1_000,\n activeStatusPollMs: 1_000,\n} as const);\n\nexport type ExternalHandoffState = (typeof EXTERNAL_HANDOFF_STATES)[number];\nexport type ExternalHandoffFramework = (typeof EXTERNAL_HANDOFF_FRAMEWORKS)[number];\nexport type ExternalHandoffActiveAdapterKind =\n (typeof EXTERNAL_HANDOFF_ACTIVE_ADAPTER_KINDS)[number];\nexport type ExternalHandoffActiveAdapterState =\n (typeof EXTERNAL_HANDOFF_ACTIVE_ADAPTER_STATES)[number];\nexport type ExternalHandoffDispatchPhase =\n (typeof EXTERNAL_HANDOFF_DISPATCH_PHASES)[number];\nexport type ExternalHandoffReportableDispatchPhase =\n (typeof EXTERNAL_HANDOFF_REPORTABLE_DISPATCH_PHASES)[number];\n","export const SPOTPATCH_API_BASE = \"/__spotpatch/v1\" as const;\nexport const SPOTPATCH_TOKEN_HEADER = \"X-SpotPatch-Token\" as const;\n\nexport const SPOTPATCH_ENDPOINTS = Object.freeze({\n bootstrap: `${SPOTPATCH_API_BASE}/bootstrap`,\n sourceContext: `${SPOTPATCH_API_BASE}/source-context`,\n openEditor: `${SPOTPATCH_API_BASE}/open-editor`,\n dataFlowComponentReport: `${SPOTPATCH_API_BASE}/data-flow/component-report`,\n dataFlowPageReport: `${SPOTPATCH_API_BASE}/data-flow/page-report`,\n agentCapability: `${SPOTPATCH_API_BASE}/agent/capability`,\n agentWorkspaceHealth: `${SPOTPATCH_API_BASE}/agent/workspace-health`,\n agentJobs: `${SPOTPATCH_API_BASE}/agent/jobs`,\n askCapability: `${SPOTPATCH_API_BASE}/ask/capability`,\n askJobs: `${SPOTPATCH_API_BASE}/ask/jobs`,\n externalHandoffCapability: `${SPOTPATCH_API_BASE}/external-handoff/capability`,\n externalHandoffPublish: `${SPOTPATCH_API_BASE}/external-handoff/publish`,\n externalHandoffStatus: `${SPOTPATCH_API_BASE}/external-handoff/status`,\n externalHandoffResolveDelivery: `${SPOTPATCH_API_BASE}/external-handoff/resolve-delivery`,\n externalAgentControlStatus: `${SPOTPATCH_API_BASE}/external-agent/control/status`,\n externalAgentControlConnect: `${SPOTPATCH_API_BASE}/external-agent/control/connect`,\n externalAgentControlDisconnect: `${SPOTPATCH_API_BASE}/external-agent/control/disconnect`,\n externalAgentControlCancel: `${SPOTPATCH_API_BASE}/external-agent/control/cancel`,\n externalAgentEvents: `${SPOTPATCH_API_BASE}/external-agent/events`,\n externalAgentResult: `${SPOTPATCH_API_BASE}/external-agent/result`,\n});\n\nexport type AgentJobAction = \"events\" | \"result\" | \"cancel\" | \"apply\" | \"revert\";\nexport type AskJobAction = \"events\" | \"result\" | \"cancel\";\n\nexport function getAgentJobEndpoint(jobId: string, action: AgentJobAction): string {\n return `${SPOTPATCH_ENDPOINTS.agentJobs}/${encodeURIComponent(jobId)}/${action}`;\n}\n\nexport function getAskJobEndpoint(\n jobId: string,\n action: AskJobAction,\n options: Readonly<{ afterSequence?: number }> = {},\n): string {\n const endpoint = `${SPOTPATCH_ENDPOINTS.askJobs}/${encodeURIComponent(jobId)}/${action}`;\n if (action !== \"events\" && options.afterSequence !== undefined) {\n throw new RangeError(\"afterSequence is only valid for the events endpoint.\");\n }\n if (options.afterSequence === undefined) return endpoint;\n if (!Number.isSafeInteger(options.afterSequence) || options.afterSequence < 0) {\n throw new RangeError(\"afterSequence must be a non-negative safe integer.\");\n }\n return `${endpoint}?afterSequence=${String(options.afterSequence)}`;\n}\n"],"mappings":"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","names":["EXTERNAL_HANDOFF_LIMITS","EXTERNAL_HANDOFF_LIMITS"]}
@@ -1,6 +1,6 @@
1
1
  export { A as ActiveAdapterSummary, D as DispatchSummary, b as EXTERNAL_HANDOFF_ACTIVE_ADAPTER_KINDS, c as EXTERNAL_HANDOFF_ACTIVE_ADAPTER_STATES, d as EXTERNAL_HANDOFF_BROKER_PROTOCOL_VERSION, e as EXTERNAL_HANDOFF_DISPATCH_PHASES, f as EXTERNAL_HANDOFF_FRAMEWORKS, g as EXTERNAL_HANDOFF_REPORTABLE_DISPATCH_PHASES, h as EXTERNAL_HANDOFF_SNAPSHOT_SCHEMA_VERSION, i as EXTERNAL_HANDOFF_STATES, j as ExternalHandoffActiveAdapterKind, k as ExternalHandoffActiveAdapterState, l as ExternalHandoffCapability, m as ExternalHandoffDispatchPhase, n as ExternalHandoffFramework, o as ExternalHandoffPublishDelivery, p as ExternalHandoffPublishRequest, q as ExternalHandoffPublishResult, r as ExternalHandoffReportableDispatchPhase, s as ExternalHandoffResolveDeliveryRequest, a as ExternalHandoffSnapshot, t as ExternalHandoffState, u as ExternalHandoffStatusRequest, v as ExternalHandoffStatusResult, w as ExternalHandoffSummary } from './external-handoff-DeiIvR-2.cjs';
2
2
  export { S as SPOTPATCH_ENDPOINTS, a as SPOTPATCH_TOKEN_HEADER } from './endpoints-O3ohYyAo.cjs';
3
- export { E as ExternalAgentAction, a as ExternalAgentConnectionState, b as ExternalAgentControlCancelRequest, c as ExternalAgentControlConnectRequest, d as ExternalAgentControlDisconnectRequest, e as ExternalAgentControlStatus, f as ExternalAgentErrorCode, g as ExternalAgentEvent, h as ExternalAgentEventsRequest, i as ExternalAgentManagedResult, j as ExternalAgentResultRequest } from './external-agent-control-C79Nl85y.cjs';
3
+ export { E as ExternalAgentAction, a as ExternalAgentConnectionState, b as ExternalAgentControlCancelRequest, c as ExternalAgentControlConnectRequest, d as ExternalAgentControlDisconnectRequest, e as ExternalAgentControlStatus, f as ExternalAgentErrorCode, g as ExternalAgentEvent, h as ExternalAgentEventsRequest, i as ExternalAgentManagedResult, j as ExternalAgentResultRequest } from './external-agent-control-DKxQACUv.cjs';
4
4
  export { S as SpotAnnotation, a as SpotPatchLocale } from './annotation-Cz-NNgR4.cjs';
5
5
  import 'zod';
6
6
 
@@ -31,6 +31,8 @@ declare const EXTERNAL_HANDOFF_LIMITS: Readonly<{
31
31
  readonly activeStatusPollMs: 1000;
32
32
  }>;
33
33
  declare const EXTERNAL_AGENT_CONTROL_LIMITS: Readonly<{
34
+ readonly maximumModels: 128;
35
+ readonly maximumModelCharacters: 128;
34
36
  readonly maximumEventSubscribers: 4;
35
37
  readonly eventHeartbeatMs: 15000;
36
38
  readonly eventReconnectMinimumMs: 500;
@@ -1,6 +1,6 @@
1
1
  export { A as ActiveAdapterSummary, D as DispatchSummary, b as EXTERNAL_HANDOFF_ACTIVE_ADAPTER_KINDS, c as EXTERNAL_HANDOFF_ACTIVE_ADAPTER_STATES, d as EXTERNAL_HANDOFF_BROKER_PROTOCOL_VERSION, e as EXTERNAL_HANDOFF_DISPATCH_PHASES, f as EXTERNAL_HANDOFF_FRAMEWORKS, g as EXTERNAL_HANDOFF_REPORTABLE_DISPATCH_PHASES, h as EXTERNAL_HANDOFF_SNAPSHOT_SCHEMA_VERSION, i as EXTERNAL_HANDOFF_STATES, j as ExternalHandoffActiveAdapterKind, k as ExternalHandoffActiveAdapterState, l as ExternalHandoffCapability, m as ExternalHandoffDispatchPhase, n as ExternalHandoffFramework, o as ExternalHandoffPublishDelivery, p as ExternalHandoffPublishRequest, q as ExternalHandoffPublishResult, r as ExternalHandoffReportableDispatchPhase, s as ExternalHandoffResolveDeliveryRequest, a as ExternalHandoffSnapshot, t as ExternalHandoffState, u as ExternalHandoffStatusRequest, v as ExternalHandoffStatusResult, w as ExternalHandoffSummary } from './external-handoff-5zHu-fz2.js';
2
2
  export { S as SPOTPATCH_ENDPOINTS, a as SPOTPATCH_TOKEN_HEADER } from './endpoints-O3ohYyAo.js';
3
- export { E as ExternalAgentAction, a as ExternalAgentConnectionState, b as ExternalAgentControlCancelRequest, c as ExternalAgentControlConnectRequest, d as ExternalAgentControlDisconnectRequest, e as ExternalAgentControlStatus, f as ExternalAgentErrorCode, g as ExternalAgentEvent, h as ExternalAgentEventsRequest, i as ExternalAgentManagedResult, j as ExternalAgentResultRequest } from './external-agent-control-C79Nl85y.js';
3
+ export { E as ExternalAgentAction, a as ExternalAgentConnectionState, b as ExternalAgentControlCancelRequest, c as ExternalAgentControlConnectRequest, d as ExternalAgentControlDisconnectRequest, e as ExternalAgentControlStatus, f as ExternalAgentErrorCode, g as ExternalAgentEvent, h as ExternalAgentEventsRequest, i as ExternalAgentManagedResult, j as ExternalAgentResultRequest } from './external-agent-control-DKxQACUv.js';
4
4
  export { S as SpotAnnotation, a as SpotPatchLocale } from './annotation-Cz-NNgR4.js';
5
5
  import 'zod';
6
6
 
@@ -31,6 +31,8 @@ declare const EXTERNAL_HANDOFF_LIMITS: Readonly<{
31
31
  readonly activeStatusPollMs: 1000;
32
32
  }>;
33
33
  declare const EXTERNAL_AGENT_CONTROL_LIMITS: Readonly<{
34
+ readonly maximumModels: 128;
35
+ readonly maximumModelCharacters: 128;
34
36
  readonly maximumEventSubscribers: 4;
35
37
  readonly eventHeartbeatMs: 15000;
36
38
  readonly eventReconnectMinimumMs: 500;
@@ -41,6 +41,8 @@ var EXTERNAL_HANDOFF_LIMITS = Object.freeze({
41
41
  activeStatusPollMs: 1e3
42
42
  });
43
43
  var EXTERNAL_AGENT_CONTROL_LIMITS = Object.freeze({
44
+ maximumModels: 128,
45
+ maximumModelCharacters: 128,
44
46
  maximumEventSubscribers: 4,
45
47
  eventHeartbeatMs: 15e3,
46
48
  eventReconnectMinimumMs: 500,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/external-handoff-browser.ts"],"sourcesContent":["import type { ERROR_CODES as GLOBAL_ERROR_CODES } from \"./errors/error-code.js\";\nimport type {\n EXTERNAL_AGENT_ACTIONS as GLOBAL_EXTERNAL_AGENT_ACTIONS,\n EXTERNAL_AGENT_AUTH_READINESS as GLOBAL_EXTERNAL_AGENT_AUTH_READINESS,\n EXTERNAL_AGENT_CHECK_OUTCOMES as GLOBAL_EXTERNAL_AGENT_CHECK_OUTCOMES,\n EXTERNAL_AGENT_CONNECTION_STATES as GLOBAL_EXTERNAL_AGENT_CONNECTION_STATES,\n EXTERNAL_AGENT_CONTROL_LIMITS as GLOBAL_EXTERNAL_AGENT_CONTROL_LIMITS,\n EXTERNAL_AGENT_DELIVERY_STATUSES as GLOBAL_EXTERNAL_AGENT_DELIVERY_STATUSES,\n EXTERNAL_AGENT_ERROR_CODES as GLOBAL_EXTERNAL_AGENT_ERROR_CODES,\n EXTERNAL_AGENT_ERROR_RECOVERABILITY as GLOBAL_EXTERNAL_AGENT_ERROR_RECOVERABILITY,\n EXTERNAL_AGENT_ERROR_STAGES as GLOBAL_EXTERNAL_AGENT_ERROR_STAGES,\n EXTERNAL_AGENT_EXECUTION_STATUSES as GLOBAL_EXTERNAL_AGENT_EXECUTION_STATUSES,\n EXTERNAL_AGENT_GRANT_STATES as GLOBAL_EXTERNAL_AGENT_GRANT_STATES,\n EXTERNAL_AGENT_MANAGED_PROFILE as GLOBAL_EXTERNAL_AGENT_MANAGED_PROFILE,\n EXTERNAL_AGENT_MANAGED_PHASES as GLOBAL_EXTERNAL_AGENT_MANAGED_PHASES,\n EXTERNAL_AGENT_MODES as GLOBAL_EXTERNAL_AGENT_MODES,\n EXTERNAL_AGENT_VALIDATION_OUTCOMES as GLOBAL_EXTERNAL_AGENT_VALIDATION_OUTCOMES,\n} from \"./protocol/external-agent-control.js\";\nimport type { EXTERNAL_HANDOFF_LIMITS as GLOBAL_EXTERNAL_HANDOFF_LIMITS } from \"./protocol/external-handoff-constants.js\";\n\n/** Browser-reachable errors only; keeps unrelated Agent/worktree codes out of the lazy UI. */\nexport const ERROR_CODES = Object.freeze({\n INVALID_REQUEST: \"INVALID_REQUEST\",\n INVALID_TOKEN: \"INVALID_TOKEN\",\n ORIGIN_NOT_ALLOWED: \"ORIGIN_NOT_ALLOWED\",\n EXTERNAL_HANDOFF_DISABLED: \"EXTERNAL_HANDOFF_DISABLED\",\n EXTERNAL_HANDOFF_UNAVAILABLE: \"EXTERNAL_HANDOFF_UNAVAILABLE\",\n HANDOFF_VALIDATION_FAILED: \"HANDOFF_VALIDATION_FAILED\",\n HANDOFF_SOURCE_STALE: \"HANDOFF_SOURCE_STALE\",\n HANDOFF_NOT_FOUND: \"HANDOFF_NOT_FOUND\",\n HANDOFF_EXPIRED: \"HANDOFF_EXPIRED\",\n HANDOFF_CURSOR_INVALID: \"HANDOFF_CURSOR_INVALID\",\n HANDOFF_RESPONSE_TOO_LARGE: \"HANDOFF_RESPONSE_TOO_LARGE\",\n EXTERNAL_AGENT_BUSY: \"EXTERNAL_AGENT_BUSY\",\n ACTIVE_DISPATCH_INVALID: \"ACTIVE_DISPATCH_INVALID\",\n SESSION_CLOSED: \"SESSION_CLOSED\",\n INTERNAL_ERROR: \"INTERNAL_ERROR\",\n} as const satisfies Pick<\n typeof GLOBAL_ERROR_CODES,\n | \"ACTIVE_DISPATCH_INVALID\"\n | \"EXTERNAL_AGENT_BUSY\"\n | \"EXTERNAL_HANDOFF_DISABLED\"\n | \"EXTERNAL_HANDOFF_UNAVAILABLE\"\n | \"HANDOFF_CURSOR_INVALID\"\n | \"HANDOFF_EXPIRED\"\n | \"HANDOFF_NOT_FOUND\"\n | \"HANDOFF_RESPONSE_TOO_LARGE\"\n | \"HANDOFF_SOURCE_STALE\"\n | \"HANDOFF_VALIDATION_FAILED\"\n | \"INTERNAL_ERROR\"\n | \"INVALID_REQUEST\"\n | \"INVALID_TOKEN\"\n | \"ORIGIN_NOT_ALLOWED\"\n | \"SESSION_CLOSED\"\n>);\nexport type ErrorCode = (typeof ERROR_CODES)[keyof typeof ERROR_CODES];\nconst ERROR_CODE_VALUES: readonly string[] = Object.values(ERROR_CODES);\n\nexport function isErrorCode(value: unknown): value is ErrorCode {\n return typeof value === \"string\" && ERROR_CODE_VALUES.includes(value);\n}\n\n/** Browser-consumed limits only; literal types make drift from the canonical limits fail. */\nexport const EXTERNAL_HANDOFF_LIMITS = Object.freeze({\n maximumConnectorReceipts: 64,\n maximumWaiters: 8,\n activeStatusPollMs: 1_000,\n} as const satisfies Pick<\n typeof GLOBAL_EXTERNAL_HANDOFF_LIMITS,\n \"activeStatusPollMs\" | \"maximumConnectorReceipts\" | \"maximumWaiters\"\n>);\n\nexport const EXTERNAL_AGENT_CONTROL_LIMITS = Object.freeze({\n maximumEventSubscribers: 4,\n eventHeartbeatMs: 15_000,\n eventReconnectMinimumMs: 500,\n eventReconnectMaximumMs: 10_000,\n maximumChangedFiles: 20,\n maximumChecks: 64,\n maximumEventLineBytes: 64 * 1_024,\n maximumResultDiffBytes: 512_000,\n} as const satisfies typeof GLOBAL_EXTERNAL_AGENT_CONTROL_LIMITS);\nexport const EXTERNAL_AGENT_MANAGED_PROFILE =\n \"managed-apply-v1\" as const satisfies typeof GLOBAL_EXTERNAL_AGENT_MANAGED_PROFILE;\n\n/** Browser-safe literal projections; type-only checks prevent protocol drift without Zod. */\nexport const EXTERNAL_AGENT_MODES = Object.freeze([\n \"inbox\",\n \"managed\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_MODES);\nexport const EXTERNAL_AGENT_CONNECTION_STATES = Object.freeze([\n \"disconnected\",\n \"diagnosing\",\n \"awaiting-consent\",\n \"connecting\",\n \"ready\",\n \"busy\",\n \"degraded\",\n \"error\",\n \"disconnecting\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_CONNECTION_STATES);\nexport const EXTERNAL_AGENT_AUTH_READINESS = Object.freeze([\n \"authenticated\",\n \"auth-not-required\",\n \"signed-out\",\n \"unknown\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_AUTH_READINESS);\nexport const EXTERNAL_AGENT_GRANT_STATES = Object.freeze([\n \"missing\",\n \"valid\",\n \"invalid\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_GRANT_STATES);\nexport const EXTERNAL_AGENT_DELIVERY_STATUSES = Object.freeze([\n \"queued\",\n \"dispatching\",\n \"accepted\",\n \"unknown\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_DELIVERY_STATUSES);\nexport const EXTERNAL_AGENT_EXECUTION_STATUSES = Object.freeze([\n \"not-observable\",\n \"started\",\n \"terminal-succeeded\",\n \"terminal-failed\",\n \"interrupted\",\n \"unknown\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_EXECUTION_STATUSES);\nexport const EXTERNAL_AGENT_MANAGED_PHASES = Object.freeze([\n \"preparing\",\n \"running\",\n \"auditing\",\n \"validating\",\n \"applying\",\n \"completed\",\n \"review-required\",\n \"failed\",\n \"cancelled\",\n \"cleanup-warning\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_MANAGED_PHASES);\nexport const EXTERNAL_AGENT_VALIDATION_OUTCOMES = Object.freeze([\n \"passed\",\n \"failed\",\n \"not-configured\",\n \"unavailable\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_VALIDATION_OUTCOMES);\nexport const EXTERNAL_AGENT_CHECK_OUTCOMES = Object.freeze([\n \"passed\",\n \"failed\",\n \"unavailable\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_CHECK_OUTCOMES);\nexport const EXTERNAL_AGENT_ERROR_CODES = Object.freeze([\n \"AGENT_BINARY_NOT_FOUND\",\n \"AGENT_BINARY_UNTRUSTED\",\n \"AGENT_VERSION_UNSUPPORTED\",\n \"APP_SERVER_HANDSHAKE_FAILED\",\n \"AGENT_AUTH_REQUIRED\",\n \"AGENT_MODEL_UNAVAILABLE\",\n \"AGENT_PROTOCOL_INCOMPATIBLE\",\n \"CODEX_CONFIG_ISOLATION_UNSUPPORTED\",\n \"MANAGED_GRANT_INVALID\",\n \"MANAGED_PLATFORM_UNSUPPORTED\",\n \"MANAGED_GIT_REQUIRED\",\n \"MANAGED_SNAPSHOT_FAILED\",\n \"MANAGED_SCOPE_VIOLATION\",\n \"MANAGED_CHANGE_LIMIT_EXCEEDED\",\n \"MANAGED_VALIDATION_FAILED\",\n \"MANAGED_WORKSPACE_CONFLICT\",\n \"MANAGED_APPLY_FAILED\",\n \"MANAGED_CLEANUP_INCOMPLETE\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_ERROR_CODES);\nexport const EXTERNAL_AGENT_ERROR_STAGES = Object.freeze([\n \"integration\",\n \"binary\",\n \"handshake\",\n \"auth\",\n \"model\",\n \"protocol\",\n \"snapshot\",\n \"audit\",\n \"validation\",\n \"apply\",\n \"cleanup\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_ERROR_STAGES);\nexport const EXTERNAL_AGENT_ERROR_RECOVERABILITY = Object.freeze([\n \"retry\",\n \"user-action\",\n \"reconfigure\",\n \"none\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_ERROR_RECOVERABILITY);\nexport const EXTERNAL_AGENT_ACTIONS = Object.freeze([\n \"install-agent\",\n \"use-supported-version\",\n \"sign-in\",\n \"choose-available-model\",\n \"use-inbox\",\n \"confirm-managed-access\",\n \"review-candidate-diff\",\n \"review-workspace-conflict\",\n \"retry\",\n \"inspect-cleanup-warning\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_ACTIONS);\n\nexport {\n EXTERNAL_HANDOFF_ACTIVE_ADAPTER_KINDS,\n EXTERNAL_HANDOFF_ACTIVE_ADAPTER_STATES,\n EXTERNAL_HANDOFF_BROKER_PROTOCOL_VERSION,\n EXTERNAL_HANDOFF_DISPATCH_PHASES,\n EXTERNAL_HANDOFF_FRAMEWORKS,\n EXTERNAL_HANDOFF_REPORTABLE_DISPATCH_PHASES,\n EXTERNAL_HANDOFF_SNAPSHOT_SCHEMA_VERSION,\n EXTERNAL_HANDOFF_STATES,\n type ExternalHandoffActiveAdapterKind,\n type ExternalHandoffActiveAdapterState,\n type ExternalHandoffDispatchPhase,\n type ExternalHandoffFramework,\n type ExternalHandoffReportableDispatchPhase,\n type ExternalHandoffState,\n} from \"./protocol/external-handoff-constants.js\";\nexport { SPOTPATCH_ENDPOINTS, SPOTPATCH_TOKEN_HEADER } from \"./protocol/endpoints.js\";\nexport type {\n ExternalAgentAction,\n ExternalAgentConnectionState,\n ExternalAgentControlCancelRequest,\n ExternalAgentControlConnectRequest,\n ExternalAgentControlDisconnectRequest,\n ExternalAgentControlStatus,\n ExternalAgentErrorCode,\n ExternalAgentEvent,\n ExternalAgentEventsRequest,\n ExternalAgentManagedResult,\n ExternalAgentResultRequest,\n} from \"./protocol/external-agent-control.js\";\nexport type {\n ActiveAdapterSummary,\n DispatchSummary,\n ExternalHandoffCapability,\n ExternalHandoffPublishDelivery,\n ExternalHandoffPublishRequest,\n ExternalHandoffPublishResult,\n ExternalHandoffResolveDeliveryRequest,\n ExternalHandoffSnapshot,\n ExternalHandoffStatusRequest,\n ExternalHandoffStatusResult,\n ExternalHandoffSummary,\n} from \"./protocol/external-handoff.js\";\nexport type { SpotAnnotation, SpotPatchLocale } from \"./model/annotation.js\";\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/external-handoff-browser.ts"],"sourcesContent":["import type { ERROR_CODES as GLOBAL_ERROR_CODES } from \"./errors/error-code.js\";\nimport type {\n EXTERNAL_AGENT_ACTIONS as GLOBAL_EXTERNAL_AGENT_ACTIONS,\n EXTERNAL_AGENT_AUTH_READINESS as GLOBAL_EXTERNAL_AGENT_AUTH_READINESS,\n EXTERNAL_AGENT_CHECK_OUTCOMES as GLOBAL_EXTERNAL_AGENT_CHECK_OUTCOMES,\n EXTERNAL_AGENT_CONNECTION_STATES as GLOBAL_EXTERNAL_AGENT_CONNECTION_STATES,\n EXTERNAL_AGENT_CONTROL_LIMITS as GLOBAL_EXTERNAL_AGENT_CONTROL_LIMITS,\n EXTERNAL_AGENT_DELIVERY_STATUSES as GLOBAL_EXTERNAL_AGENT_DELIVERY_STATUSES,\n EXTERNAL_AGENT_ERROR_CODES as GLOBAL_EXTERNAL_AGENT_ERROR_CODES,\n EXTERNAL_AGENT_ERROR_RECOVERABILITY as GLOBAL_EXTERNAL_AGENT_ERROR_RECOVERABILITY,\n EXTERNAL_AGENT_ERROR_STAGES as GLOBAL_EXTERNAL_AGENT_ERROR_STAGES,\n EXTERNAL_AGENT_EXECUTION_STATUSES as GLOBAL_EXTERNAL_AGENT_EXECUTION_STATUSES,\n EXTERNAL_AGENT_GRANT_STATES as GLOBAL_EXTERNAL_AGENT_GRANT_STATES,\n EXTERNAL_AGENT_MANAGED_PROFILE as GLOBAL_EXTERNAL_AGENT_MANAGED_PROFILE,\n EXTERNAL_AGENT_MANAGED_PHASES as GLOBAL_EXTERNAL_AGENT_MANAGED_PHASES,\n EXTERNAL_AGENT_MODES as GLOBAL_EXTERNAL_AGENT_MODES,\n EXTERNAL_AGENT_VALIDATION_OUTCOMES as GLOBAL_EXTERNAL_AGENT_VALIDATION_OUTCOMES,\n} from \"./protocol/external-agent-control.js\";\nimport type { EXTERNAL_HANDOFF_LIMITS as GLOBAL_EXTERNAL_HANDOFF_LIMITS } from \"./protocol/external-handoff-constants.js\";\n\n/** Browser-reachable errors only; keeps unrelated Agent/worktree codes out of the lazy UI. */\nexport const ERROR_CODES = Object.freeze({\n INVALID_REQUEST: \"INVALID_REQUEST\",\n INVALID_TOKEN: \"INVALID_TOKEN\",\n ORIGIN_NOT_ALLOWED: \"ORIGIN_NOT_ALLOWED\",\n EXTERNAL_HANDOFF_DISABLED: \"EXTERNAL_HANDOFF_DISABLED\",\n EXTERNAL_HANDOFF_UNAVAILABLE: \"EXTERNAL_HANDOFF_UNAVAILABLE\",\n HANDOFF_VALIDATION_FAILED: \"HANDOFF_VALIDATION_FAILED\",\n HANDOFF_SOURCE_STALE: \"HANDOFF_SOURCE_STALE\",\n HANDOFF_NOT_FOUND: \"HANDOFF_NOT_FOUND\",\n HANDOFF_EXPIRED: \"HANDOFF_EXPIRED\",\n HANDOFF_CURSOR_INVALID: \"HANDOFF_CURSOR_INVALID\",\n HANDOFF_RESPONSE_TOO_LARGE: \"HANDOFF_RESPONSE_TOO_LARGE\",\n EXTERNAL_AGENT_BUSY: \"EXTERNAL_AGENT_BUSY\",\n ACTIVE_DISPATCH_INVALID: \"ACTIVE_DISPATCH_INVALID\",\n SESSION_CLOSED: \"SESSION_CLOSED\",\n INTERNAL_ERROR: \"INTERNAL_ERROR\",\n} as const satisfies Pick<\n typeof GLOBAL_ERROR_CODES,\n | \"ACTIVE_DISPATCH_INVALID\"\n | \"EXTERNAL_AGENT_BUSY\"\n | \"EXTERNAL_HANDOFF_DISABLED\"\n | \"EXTERNAL_HANDOFF_UNAVAILABLE\"\n | \"HANDOFF_CURSOR_INVALID\"\n | \"HANDOFF_EXPIRED\"\n | \"HANDOFF_NOT_FOUND\"\n | \"HANDOFF_RESPONSE_TOO_LARGE\"\n | \"HANDOFF_SOURCE_STALE\"\n | \"HANDOFF_VALIDATION_FAILED\"\n | \"INTERNAL_ERROR\"\n | \"INVALID_REQUEST\"\n | \"INVALID_TOKEN\"\n | \"ORIGIN_NOT_ALLOWED\"\n | \"SESSION_CLOSED\"\n>);\nexport type ErrorCode = (typeof ERROR_CODES)[keyof typeof ERROR_CODES];\nconst ERROR_CODE_VALUES: readonly string[] = Object.values(ERROR_CODES);\n\nexport function isErrorCode(value: unknown): value is ErrorCode {\n return typeof value === \"string\" && ERROR_CODE_VALUES.includes(value);\n}\n\n/** Browser-consumed limits only; literal types make drift from the canonical limits fail. */\nexport const EXTERNAL_HANDOFF_LIMITS = Object.freeze({\n maximumConnectorReceipts: 64,\n maximumWaiters: 8,\n activeStatusPollMs: 1_000,\n} as const satisfies Pick<\n typeof GLOBAL_EXTERNAL_HANDOFF_LIMITS,\n \"activeStatusPollMs\" | \"maximumConnectorReceipts\" | \"maximumWaiters\"\n>);\n\nexport const EXTERNAL_AGENT_CONTROL_LIMITS = Object.freeze({\n maximumModels: 128,\n maximumModelCharacters: 128,\n maximumEventSubscribers: 4,\n eventHeartbeatMs: 15_000,\n eventReconnectMinimumMs: 500,\n eventReconnectMaximumMs: 10_000,\n maximumChangedFiles: 20,\n maximumChecks: 64,\n maximumEventLineBytes: 64 * 1_024,\n maximumResultDiffBytes: 512_000,\n} as const satisfies typeof GLOBAL_EXTERNAL_AGENT_CONTROL_LIMITS);\nexport const EXTERNAL_AGENT_MANAGED_PROFILE =\n \"managed-apply-v1\" as const satisfies typeof GLOBAL_EXTERNAL_AGENT_MANAGED_PROFILE;\n\n/** Browser-safe literal projections; type-only checks prevent protocol drift without Zod. */\nexport const EXTERNAL_AGENT_MODES = Object.freeze([\n \"inbox\",\n \"managed\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_MODES);\nexport const EXTERNAL_AGENT_CONNECTION_STATES = Object.freeze([\n \"disconnected\",\n \"diagnosing\",\n \"awaiting-consent\",\n \"connecting\",\n \"ready\",\n \"busy\",\n \"degraded\",\n \"error\",\n \"disconnecting\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_CONNECTION_STATES);\nexport const EXTERNAL_AGENT_AUTH_READINESS = Object.freeze([\n \"authenticated\",\n \"auth-not-required\",\n \"signed-out\",\n \"unknown\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_AUTH_READINESS);\nexport const EXTERNAL_AGENT_GRANT_STATES = Object.freeze([\n \"missing\",\n \"valid\",\n \"invalid\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_GRANT_STATES);\nexport const EXTERNAL_AGENT_DELIVERY_STATUSES = Object.freeze([\n \"queued\",\n \"dispatching\",\n \"accepted\",\n \"unknown\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_DELIVERY_STATUSES);\nexport const EXTERNAL_AGENT_EXECUTION_STATUSES = Object.freeze([\n \"not-observable\",\n \"started\",\n \"terminal-succeeded\",\n \"terminal-failed\",\n \"interrupted\",\n \"unknown\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_EXECUTION_STATUSES);\nexport const EXTERNAL_AGENT_MANAGED_PHASES = Object.freeze([\n \"preparing\",\n \"running\",\n \"auditing\",\n \"validating\",\n \"applying\",\n \"completed\",\n \"review-required\",\n \"failed\",\n \"cancelled\",\n \"cleanup-warning\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_MANAGED_PHASES);\nexport const EXTERNAL_AGENT_VALIDATION_OUTCOMES = Object.freeze([\n \"passed\",\n \"failed\",\n \"not-configured\",\n \"unavailable\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_VALIDATION_OUTCOMES);\nexport const EXTERNAL_AGENT_CHECK_OUTCOMES = Object.freeze([\n \"passed\",\n \"failed\",\n \"unavailable\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_CHECK_OUTCOMES);\nexport const EXTERNAL_AGENT_ERROR_CODES = Object.freeze([\n \"AGENT_BINARY_NOT_FOUND\",\n \"AGENT_BINARY_UNTRUSTED\",\n \"AGENT_VERSION_UNSUPPORTED\",\n \"APP_SERVER_HANDSHAKE_FAILED\",\n \"AGENT_AUTH_REQUIRED\",\n \"AGENT_MODEL_UNAVAILABLE\",\n \"AGENT_PROTOCOL_INCOMPATIBLE\",\n \"CODEX_CONFIG_ISOLATION_UNSUPPORTED\",\n \"MANAGED_GRANT_INVALID\",\n \"MANAGED_PLATFORM_UNSUPPORTED\",\n \"MANAGED_GIT_REQUIRED\",\n \"MANAGED_SNAPSHOT_FAILED\",\n \"MANAGED_SCOPE_VIOLATION\",\n \"MANAGED_CHANGE_LIMIT_EXCEEDED\",\n \"MANAGED_VALIDATION_FAILED\",\n \"MANAGED_WORKSPACE_CONFLICT\",\n \"MANAGED_APPLY_FAILED\",\n \"MANAGED_CLEANUP_INCOMPLETE\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_ERROR_CODES);\nexport const EXTERNAL_AGENT_ERROR_STAGES = Object.freeze([\n \"integration\",\n \"binary\",\n \"handshake\",\n \"auth\",\n \"model\",\n \"protocol\",\n \"snapshot\",\n \"audit\",\n \"validation\",\n \"apply\",\n \"cleanup\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_ERROR_STAGES);\nexport const EXTERNAL_AGENT_ERROR_RECOVERABILITY = Object.freeze([\n \"retry\",\n \"user-action\",\n \"reconfigure\",\n \"none\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_ERROR_RECOVERABILITY);\nexport const EXTERNAL_AGENT_ACTIONS = Object.freeze([\n \"install-agent\",\n \"use-supported-version\",\n \"sign-in\",\n \"choose-available-model\",\n \"use-inbox\",\n \"confirm-managed-access\",\n \"review-candidate-diff\",\n \"review-workspace-conflict\",\n \"retry\",\n \"inspect-cleanup-warning\",\n] as const satisfies typeof GLOBAL_EXTERNAL_AGENT_ACTIONS);\n\nexport {\n EXTERNAL_HANDOFF_ACTIVE_ADAPTER_KINDS,\n EXTERNAL_HANDOFF_ACTIVE_ADAPTER_STATES,\n EXTERNAL_HANDOFF_BROKER_PROTOCOL_VERSION,\n EXTERNAL_HANDOFF_DISPATCH_PHASES,\n EXTERNAL_HANDOFF_FRAMEWORKS,\n EXTERNAL_HANDOFF_REPORTABLE_DISPATCH_PHASES,\n EXTERNAL_HANDOFF_SNAPSHOT_SCHEMA_VERSION,\n EXTERNAL_HANDOFF_STATES,\n type ExternalHandoffActiveAdapterKind,\n type ExternalHandoffActiveAdapterState,\n type ExternalHandoffDispatchPhase,\n type ExternalHandoffFramework,\n type ExternalHandoffReportableDispatchPhase,\n type ExternalHandoffState,\n} from \"./protocol/external-handoff-constants.js\";\nexport { SPOTPATCH_ENDPOINTS, SPOTPATCH_TOKEN_HEADER } from \"./protocol/endpoints.js\";\nexport type {\n ExternalAgentAction,\n ExternalAgentConnectionState,\n ExternalAgentControlCancelRequest,\n ExternalAgentControlConnectRequest,\n ExternalAgentControlDisconnectRequest,\n ExternalAgentControlStatus,\n ExternalAgentErrorCode,\n ExternalAgentEvent,\n ExternalAgentEventsRequest,\n ExternalAgentManagedResult,\n ExternalAgentResultRequest,\n} from \"./protocol/external-agent-control.js\";\nexport type {\n ActiveAdapterSummary,\n DispatchSummary,\n ExternalHandoffCapability,\n ExternalHandoffPublishDelivery,\n ExternalHandoffPublishRequest,\n ExternalHandoffPublishResult,\n ExternalHandoffResolveDeliveryRequest,\n ExternalHandoffSnapshot,\n ExternalHandoffStatusRequest,\n ExternalHandoffStatusResult,\n ExternalHandoffSummary,\n} from \"./protocol/external-handoff.js\";\nexport type { SpotAnnotation, SpotPatchLocale } from \"./model/annotation.js\";\n"],"mappings":"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","names":[]}
package/dist/index.cjs CHANGED
@@ -1698,6 +1698,8 @@ var EXTERNAL_AGENT_ACTIONS = Object.freeze([
1698
1698
  ]);
1699
1699
  var EXTERNAL_AGENT_MANAGED_PROFILE = "managed-apply-v1";
1700
1700
  var EXTERNAL_AGENT_CONTROL_LIMITS = Object.freeze({
1701
+ maximumModels: 128,
1702
+ maximumModelCharacters: 128,
1701
1703
  maximumEventSubscribers: 4,
1702
1704
  eventHeartbeatMs: 15e3,
1703
1705
  eventReconnectMinimumMs: 500,
@@ -1708,6 +1710,7 @@ var EXTERNAL_AGENT_CONTROL_LIMITS = Object.freeze({
1708
1710
  maximumResultDiffBytes: DEFAULT_AGENT_LIMITS.maxDiffBytes
1709
1711
  });
1710
1712
  var isoTimestampSchema = import_zod5.z.iso.datetime();
1713
+ var modelSchema = import_zod5.z.string().min(1).max(EXTERNAL_AGENT_CONTROL_LIMITS.maximumModelCharacters).refine((value) => value.trim() === value);
1711
1714
  var requestIdSchema = import_zod5.z.string().min(22).max(128).regex(/^[A-Za-z0-9_-]+$/u);
1712
1715
  var safeRelativePathSchema = import_zod5.z.string().min(1).max(4096).superRefine((value, context) => {
1713
1716
  const segments = value.split("/");
@@ -1765,8 +1768,9 @@ var externalAgentControlStatusSchema = import_zod5.z.strictObject({
1765
1768
  connectionState: import_zod5.z.enum(EXTERNAL_AGENT_CONNECTION_STATES),
1766
1769
  authReadiness: import_zod5.z.enum(EXTERNAL_AGENT_AUTH_READINESS),
1767
1770
  grantState: import_zod5.z.enum(EXTERNAL_AGENT_GRANT_STATES),
1768
- requestedModel: import_zod5.z.string().min(1).max(128).optional(),
1769
- effectiveModel: import_zod5.z.string().min(1).max(128).optional(),
1771
+ requestedModel: modelSchema.optional(),
1772
+ effectiveModel: modelSchema.optional(),
1773
+ models: import_zod5.z.array(modelSchema).min(1).max(EXTERNAL_AGENT_CONTROL_LIMITS.maximumModels).refine((values) => new Set(values).size === values.length).readonly().optional(),
1770
1774
  task: managedTaskStatusSchema.optional(),
1771
1775
  error: externalAgentErrorSchema.optional(),
1772
1776
  updatedAt: isoTimestampSchema
@@ -1775,7 +1779,8 @@ var externalAgentControlStatusRequestSchema = import_zod5.z.strictObject({});
1775
1779
  var externalAgentControlConnectRequestSchema = import_zod5.z.strictObject({
1776
1780
  requestId: requestIdSchema,
1777
1781
  adapterKind: import_zod5.z.literal("codex"),
1778
- profile: import_zod5.z.literal(EXTERNAL_AGENT_MANAGED_PROFILE)
1782
+ profile: import_zod5.z.literal(EXTERNAL_AGENT_MANAGED_PROFILE),
1783
+ model: modelSchema.optional()
1779
1784
  });
1780
1785
  var externalAgentControlDisconnectRequestSchema = import_zod5.z.strictObject({
1781
1786
  requestId: requestIdSchema,