@spotpatch/shared 1.14.3 → 1.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{annotation-Cz-NNgR4.d.cts → annotation-eo_ltNRm.d.cts} +24 -1
- package/dist/{annotation-Cz-NNgR4.d.ts → annotation-eo_ltNRm.d.ts} +24 -1
- package/dist/{chunk-JTZFOTPT.js → chunk-7777QFBJ.js} +2 -2
- package/dist/{chunk-CLQ6MIJB.js → chunk-D7R32NFF.js} +5 -4
- package/dist/chunk-D7R32NFF.js.map +1 -0
- package/dist/{chunk-R6QJFNT2.js → chunk-FCY5V76A.js} +31 -1
- package/dist/chunk-FCY5V76A.js.map +1 -0
- package/dist/{chunk-EWJTKNL4.js → chunk-RWFGFW4N.js} +3 -2
- package/dist/chunk-RWFGFW4N.js.map +1 -0
- package/dist/{contextual-ask-BpbkpFFf.d.cts → contextual-ask-Dz3Mh9LR.d.cts} +117 -1
- package/dist/{contextual-ask-BpbkpFFf.d.ts → contextual-ask-Dz3Mh9LR.d.ts} +117 -1
- package/dist/contextual-ask-browser.cjs +2 -1
- package/dist/contextual-ask-browser.cjs.map +1 -1
- package/dist/contextual-ask-browser.d.cts +1 -1
- package/dist/contextual-ask-browser.d.ts +1 -1
- package/dist/contextual-ask-browser.js +1 -1
- package/dist/contextual-ask-node.cjs +28 -2
- package/dist/contextual-ask-node.cjs.map +1 -1
- package/dist/contextual-ask-node.d.cts +3 -3
- package/dist/contextual-ask-node.d.ts +3 -3
- package/dist/contextual-ask-node.js +3 -3
- package/dist/external-agent-node.cjs +26 -0
- package/dist/external-agent-node.cjs.map +1 -1
- package/dist/external-agent-node.d.cts +32 -2
- package/dist/external-agent-node.d.ts +32 -2
- package/dist/external-agent-node.js +2 -2
- package/dist/{external-handoff-5zHu-fz2.d.ts → external-handoff-BaPiKnYG.d.ts} +31 -1
- package/dist/{external-handoff-DeiIvR-2.d.cts → external-handoff-ByHmcwWv.d.cts} +31 -1
- package/dist/external-handoff-browser.d.cts +2 -2
- package/dist/external-handoff-browser.d.ts +2 -2
- package/dist/index.cjs +38 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +49 -4
- package/dist/index.d.ts +49 -4
- package/dist/index.js +12 -4
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-CLQ6MIJB.js.map +0 -1
- package/dist/chunk-EWJTKNL4.js.map +0 -1
- package/dist/chunk-R6QJFNT2.js.map +0 -1
- /package/dist/{chunk-JTZFOTPT.js.map → chunk-7777QFBJ.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/external-agent-node.ts","../src/protocol/external-handoff.ts","../src/protocol/requests.ts","../src/model/annotation.ts","../src/model/agent.ts","../src/model/context-schema.ts","../src/protocol/external-handoff-constants.ts","../src/errors/error-code.ts","../src/errors/spotpatch-error.ts"],"sourcesContent":["/// <reference types=\"node\" />\n\nimport { createHash } from \"node:crypto\";\nimport { execFile } from \"node:child_process\";\nimport type { Stats } from \"node:fs\";\nimport { lstat, mkdir, realpath } from \"node:fs/promises\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport { promisify } from \"node:util\";\n\nimport { z } from \"zod\";\n\nimport {\n EXTERNAL_HANDOFF_ACTIVE_ADAPTER_KINDS,\n EXTERNAL_HANDOFF_BROKER_PROTOCOL_VERSION,\n EXTERNAL_HANDOFF_FRAMEWORKS,\n EXTERNAL_HANDOFF_LIMITS,\n activeAdapterSummarySchema,\n dispatchSummarySchema,\n externalHandoffReportableDispatchPhaseSchema,\n externalHandoffSnapshotSchema,\n externalHandoffSummarySchema,\n type ActiveAdapterSummary,\n type DispatchSummary,\n type ExternalHandoffSnapshot,\n} from \"./protocol/external-handoff.js\";\nimport { ERROR_CODES } from \"./errors/error-code.js\";\nimport { SpotPatchError } from \"./errors/spotpatch-error.js\";\n\nexport const SPOTPATCH_BRIDGE_TOKEN_HEADER = \"X-SpotPatch-Bridge-Token\" as const;\nexport const SPOTPATCH_BRIDGE_PATHS = Object.freeze({\n status: \"/bridge/v1/status\",\n current: \"/bridge/v1/handoff/current\",\n wait: \"/bridge/v1/handoff/wait\",\n ack: \"/bridge/v1/handoff/ack\",\n activeClaim: \"/bridge/v1/active/claim\",\n activeHeartbeat: \"/bridge/v1/active/heartbeat\",\n activeReport: \"/bridge/v1/active/report\",\n activeRelease: \"/bridge/v1/active/release\",\n});\nexport const EXTERNAL_HANDOFF_PROJECT_KEY_SALT =\n \"spotpatch-external-agent-project-v1\" as const;\n\nconst execFileAsync = promisify(execFile);\nconst WINDOWS_ACL_COMMAND_TIMEOUT_MS = 30_000;\nconst WINDOWS_ACL_VERIFY_ATTEMPTS = 3;\nconst WINDOWS_ACL_RETRY_DELAY_MS = 25;\nconst WINDOWS_ACL_SCRIPT = String.raw`\n$ErrorActionPreference = 'Stop'\n$target = $env:SPOTPATCH_ACL_TARGET\n$kind = $env:SPOTPATCH_ACL_KIND\n$operation = $env:SPOTPATCH_ACL_OPERATION\n$identity = [System.Security.Principal.WindowsIdentity]::GetCurrent().User\n$allowed = @($identity.Value, 'S-1-5-18', 'S-1-5-32-544')\nif ($kind -eq 'directory') {\n $item = [System.IO.DirectoryInfo]::new($target)\n if ($operation -eq 'initialize') {\n $security = [System.Security.AccessControl.DirectorySecurity]::new()\n $security.SetOwner($identity)\n foreach ($sidValue in $allowed) {\n $sid = [System.Security.Principal.SecurityIdentifier]::new($sidValue)\n $rule = [System.Security.AccessControl.FileSystemAccessRule]::new(\n $sid,\n [System.Security.AccessControl.FileSystemRights]::FullControl,\n [System.Security.AccessControl.InheritanceFlags]'ContainerInherit, ObjectInherit',\n [System.Security.AccessControl.PropagationFlags]::None,\n [System.Security.AccessControl.AccessControlType]::Allow\n )\n [void]$security.AddAccessRule($rule)\n }\n $security.SetAccessRuleProtection($true, $false)\n $item.SetAccessControl($security)\n }\n $acl = $item.GetAccessControl(\n [System.Security.AccessControl.AccessControlSections]'Access, Owner'\n )\n} elseif ($kind -eq 'file') {\n $item = [System.IO.FileInfo]::new($target)\n if ($operation -eq 'initialize') {\n $security = [System.Security.AccessControl.FileSecurity]::new()\n $security.SetOwner($identity)\n foreach ($sidValue in $allowed) {\n $sid = [System.Security.Principal.SecurityIdentifier]::new($sidValue)\n $rule = [System.Security.AccessControl.FileSystemAccessRule]::new(\n $sid,\n [System.Security.AccessControl.FileSystemRights]::FullControl,\n [System.Security.AccessControl.AccessControlType]::Allow\n )\n [void]$security.AddAccessRule($rule)\n }\n $security.SetAccessRuleProtection($true, $false)\n $item.SetAccessControl($security)\n }\n $acl = $item.GetAccessControl(\n [System.Security.AccessControl.AccessControlSections]'Access, Owner'\n )\n} else {\n exit 10\n}\nif ($acl.GetOwner([System.Security.Principal.SecurityIdentifier]).Value -ne $identity.Value) {\n exit 11\n}\nforeach ($rule in $acl.GetAccessRules(\n $true,\n $true,\n [System.Security.Principal.SecurityIdentifier]\n)) {\n if (\n $rule.AccessControlType -eq [System.Security.AccessControl.AccessControlType]::Allow -and\n $allowed -notcontains $rule.IdentityReference.Value\n ) {\n exit 12\n }\n}\n`;\n\nconst opaqueIdSchema = z\n .string()\n .min(22)\n .max(128)\n .regex(/^[A-Za-z0-9_-]+$/u);\nconst projectKeySchema = z\n .string()\n .length(64)\n .regex(/^[a-f0-9]+$/u);\nconst loopbackEndpointSchema = z.url().refine((value) => {\n const match = /^http:\\/\\/127\\.0\\.0\\.1:([1-9][0-9]{0,4})$/u.exec(value);\n\n if (match?.[1] === undefined) {\n return false;\n }\n\n const port = Number(match[1]);\n return Number.isSafeInteger(port) && port <= 65_535;\n});\n\nexport const externalHandoffDescriptorSchema = z.strictObject({\n schemaVersion: z.literal(1),\n brokerProtocolVersion: z.literal(EXTERNAL_HANDOFF_BROKER_PROTOCOL_VERSION),\n projectKey: projectKeySchema,\n sessionId: opaqueIdSchema,\n framework: z.enum(EXTERNAL_HANDOFF_FRAMEWORKS),\n endpoint: loopbackEndpointSchema,\n bridgeToken: z\n .string()\n .min(43)\n .max(128)\n .regex(/^[A-Za-z0-9_-]+$/u),\n pid: z.number().int().positive(),\n createdAt: z.iso.datetime(),\n});\n\nexport const bridgeStatusRequestSchema = z.strictObject({});\nexport const bridgeCurrentRequestSchema = z.strictObject({\n cursor: opaqueIdSchema.optional(),\n});\nexport const bridgeWaitRequestSchema = z.strictObject({\n afterCursor: opaqueIdSchema.optional(),\n timeoutMs: z\n .number()\n .int()\n .positive()\n .max(EXTERNAL_HANDOFF_LIMITS.maximumWaitMs)\n .default(EXTERNAL_HANDOFF_LIMITS.defaultWaitMs),\n});\nexport const bridgeAckRequestSchema = z.strictObject({\n cursor: opaqueIdSchema,\n connectorInstanceId: opaqueIdSchema,\n});\nexport const bridgeActiveClaimRequestSchema = z.strictObject({\n adapterKind: z.enum(EXTERNAL_HANDOFF_ACTIVE_ADAPTER_KINDS),\n connectorInstanceId: opaqueIdSchema,\n});\nexport const bridgeActiveHeartbeatRequestSchema = z.strictObject({\n leaseToken: opaqueIdSchema,\n});\nexport const bridgeActiveReportRequestSchema = z.strictObject({\n leaseToken: opaqueIdSchema,\n cursor: opaqueIdSchema,\n phase: externalHandoffReportableDispatchPhaseSchema,\n});\nexport const bridgeActiveReleaseRequestSchema = z.strictObject({\n leaseToken: opaqueIdSchema,\n});\nexport const bridgeStatusSchema = z.strictObject({\n brokerProtocolVersion: z.literal(EXTERNAL_HANDOFF_BROKER_PROTOCOL_VERSION),\n projectKey: projectKeySchema,\n sessionId: opaqueIdSchema,\n framework: z.enum(EXTERNAL_HANDOFF_FRAMEWORKS),\n current: externalHandoffSummarySchema.nullable(),\n});\nexport const bridgeCurrentResultSchema = z.strictObject({\n outcome: z.literal(\"handoff\"),\n snapshot: externalHandoffSnapshotSchema,\n});\nexport const bridgeWaitResultSchema = z.discriminatedUnion(\"outcome\", [\n bridgeCurrentResultSchema,\n z.strictObject({ outcome: z.literal(\"timeout\") }),\n]);\nexport const bridgeAckResultSchema = z.strictObject({\n summary: externalHandoffSummarySchema,\n});\nexport const bridgeActiveClaimResultSchema = z.strictObject({\n leaseToken: opaqueIdSchema,\n heartbeatIntervalMs: z.literal(EXTERNAL_HANDOFF_LIMITS.activeHeartbeatIntervalMs),\n baselineCursor: opaqueIdSchema.nullable(),\n activeAdapter: activeAdapterSummarySchema,\n});\nexport const bridgeActiveStateResultSchema = z.strictObject({\n activeAdapter: activeAdapterSummarySchema.nullable(),\n dispatch: dispatchSummarySchema.nullable(),\n});\nexport const bridgeActiveHeartbeatResultSchema = bridgeActiveStateResultSchema;\nexport const bridgeActiveReportResultSchema = bridgeActiveStateResultSchema;\nexport const bridgeActiveReleaseResultSchema = bridgeActiveStateResultSchema;\n\nexport type ExternalHandoffDescriptor = z.infer<typeof externalHandoffDescriptorSchema>;\nexport type BridgeStatus = z.infer<typeof bridgeStatusSchema>;\nexport type BridgeWaitResult =\n | Readonly<{ outcome: \"handoff\"; snapshot: ExternalHandoffSnapshot }>\n | Readonly<{ outcome: \"timeout\" }>;\nexport interface BridgeActiveClaimResult {\n readonly leaseToken: string;\n readonly heartbeatIntervalMs: typeof EXTERNAL_HANDOFF_LIMITS.activeHeartbeatIntervalMs;\n readonly baselineCursor: string | null;\n readonly activeAdapter: ActiveAdapterSummary;\n}\nexport interface BridgeActiveStateResult {\n readonly activeAdapter: ActiveAdapterSummary | null;\n readonly dispatch: DispatchSummary | null;\n}\n\nfunction windowsPowerShellExecutable(): string {\n const systemRoot = process.env.SystemRoot ?? process.env.SYSTEMROOT;\n if (systemRoot === undefined || !path.win32.isAbsolute(systemRoot)) {\n throw new SpotPatchError(ERROR_CODES.BRIDGE_UNAUTHORIZED);\n }\n return path.win32.join(\n systemRoot,\n \"System32\",\n \"WindowsPowerShell\",\n \"v1.0\",\n \"powershell.exe\",\n );\n}\n\nasync function verifyWindowsAcl(\n candidate: string,\n kind: \"directory\" | \"file\",\n initialize: boolean,\n): Promise<void> {\n try {\n await execFileAsync(\n windowsPowerShellExecutable(),\n [\"-NoLogo\", \"-NoProfile\", \"-NonInteractive\", \"-Command\", WINDOWS_ACL_SCRIPT],\n {\n encoding: \"utf8\",\n env: {\n ...process.env,\n SPOTPATCH_ACL_KIND: kind,\n SPOTPATCH_ACL_OPERATION: initialize ? \"initialize\" : \"verify\",\n SPOTPATCH_ACL_TARGET: candidate,\n },\n timeout: WINDOWS_ACL_COMMAND_TIMEOUT_MS,\n windowsHide: true,\n },\n );\n } catch (error: unknown) {\n throw new SpotPatchError(ERROR_CODES.BRIDGE_UNAUTHORIZED, undefined, {\n cause: error,\n });\n }\n}\n\nexport async function assertPrivateExternalHandoffPath(\n candidate: string,\n kind: \"directory\" | \"file\",\n): Promise<Stats> {\n const status = await lstat(candidate);\n const correctKind = kind === \"directory\" ? status.isDirectory() : status.isFile();\n\n if (!correctKind || status.isSymbolicLink()) {\n throw new SpotPatchError(ERROR_CODES.BRIDGE_UNAUTHORIZED);\n }\n\n if (process.platform === \"win32\") {\n for (let attempt = 0; attempt < WINDOWS_ACL_VERIFY_ATTEMPTS; attempt += 1) {\n try {\n await verifyWindowsAcl(candidate, kind, false);\n return status;\n } catch (error: unknown) {\n if (attempt === WINDOWS_ACL_VERIFY_ATTEMPTS - 1) throw error;\n let current: Stats;\n try {\n current = await lstat(candidate);\n } catch {\n throw error;\n }\n const sameKind =\n kind === \"directory\" ? current.isDirectory() : current.isFile();\n if (\n !sameKind ||\n current.isSymbolicLink() ||\n current.dev !== status.dev ||\n current.ino !== status.ino\n ) {\n throw error;\n }\n await new Promise<void>((resolve) => {\n setTimeout(resolve, WINDOWS_ACL_RETRY_DELAY_MS * (attempt + 1));\n });\n }\n }\n return status;\n }\n\n const uid = process.getuid?.();\n if (uid === undefined || status.uid !== uid || (status.mode & 0o077) !== 0) {\n throw new SpotPatchError(ERROR_CODES.BRIDGE_UNAUTHORIZED);\n }\n\n return status;\n}\n\nexport async function initializePrivateExternalHandoffFile(\n candidate: string,\n): Promise<void> {\n if (process.platform === \"win32\") {\n await verifyWindowsAcl(candidate, \"file\", true);\n }\n}\n\nasync function initializeWindowsDirectory(directory: string): Promise<void> {\n if (process.platform === \"win32\") {\n await verifyWindowsAcl(directory, \"directory\", true);\n }\n}\n\nasync function ensurePrivateSubdirectory(\n base: string,\n create: boolean,\n): Promise<string> {\n const directory = path.join(base, \"spotpatch\");\n let created = false;\n\n if (create) {\n try {\n await mkdir(directory, { mode: 0o700 });\n created = true;\n } catch (error: unknown) {\n if ((error as NodeJS.ErrnoException).code !== \"EEXIST\") {\n throw error;\n }\n }\n }\n\n if (created) await initializeWindowsDirectory(directory);\n await assertPrivateExternalHandoffPath(directory, \"directory\");\n return realpath(directory);\n}\n\nasync function resolveWindowsRuntimeDirectory(create: boolean): Promise<string> {\n const configuredBase = process.env.LOCALAPPDATA;\n\n if (configuredBase !== undefined && !path.isAbsolute(configuredBase)) {\n throw new SpotPatchError(ERROR_CODES.BRIDGE_UNAUTHORIZED);\n }\n\n const base = configuredBase ?? path.join(os.homedir(), \"AppData\", \"Local\");\n const directory = path.join(base, \"SpotPatch\", \"external-agent-runtime-v1\");\n let created = false;\n\n if (create) {\n created = (await mkdir(directory, { mode: 0o700, recursive: true })) !== undefined;\n }\n\n if (created) await initializeWindowsDirectory(directory);\n await assertPrivateExternalHandoffPath(directory, \"directory\");\n return realpath(directory);\n}\n\nexport async function resolveExternalHandoffRuntimeDirectory(\n create: boolean,\n): Promise<string> {\n const xdgRuntimeDirectory = process.env.XDG_RUNTIME_DIR;\n\n if (xdgRuntimeDirectory !== undefined && !path.isAbsolute(xdgRuntimeDirectory)) {\n throw new SpotPatchError(ERROR_CODES.BRIDGE_UNAUTHORIZED);\n }\n\n if (xdgRuntimeDirectory !== undefined) {\n try {\n if (process.platform !== \"win32\") {\n await assertPrivateExternalHandoffPath(xdgRuntimeDirectory, \"directory\");\n }\n return await ensurePrivateSubdirectory(xdgRuntimeDirectory, create);\n } catch (error: unknown) {\n if (!create && (error as NodeJS.ErrnoException).code === \"ENOENT\") {\n throw new SpotPatchError(ERROR_CODES.SESSION_NOT_FOUND);\n }\n\n throw error;\n }\n }\n\n if (process.platform === \"win32\") {\n try {\n return await resolveWindowsRuntimeDirectory(create);\n } catch (error: unknown) {\n if (!create && (error as NodeJS.ErrnoException).code === \"ENOENT\") {\n throw new SpotPatchError(ERROR_CODES.SESSION_NOT_FOUND);\n }\n\n throw error;\n }\n }\n\n const uid = process.getuid?.();\n if (uid === undefined) {\n throw new SpotPatchError(ERROR_CODES.BRIDGE_UNAUTHORIZED);\n }\n\n const fallback = path.join(os.tmpdir(), `spotpatch-${String(uid)}`);\n\n if (create) {\n try {\n await mkdir(fallback, { mode: 0o700 });\n } catch (error: unknown) {\n if ((error as NodeJS.ErrnoException).code !== \"EEXIST\") {\n throw error;\n }\n }\n }\n\n try {\n await assertPrivateExternalHandoffPath(fallback, \"directory\");\n } catch (error: unknown) {\n if (!create && (error as NodeJS.ErrnoException).code === \"ENOENT\") {\n throw new SpotPatchError(ERROR_CODES.SESSION_NOT_FOUND);\n }\n\n throw error;\n }\n\n return realpath(fallback);\n}\n\nexport async function computeExternalHandoffProjectKey(root: string): Promise<string> {\n const canonicalRoot = await realpath(root);\n return createHash(\"sha256\")\n .update(`${EXTERNAL_HANDOFF_PROJECT_KEY_SALT}\\0${canonicalRoot}`)\n .digest(\"hex\");\n}\n","import { z } from \"zod\";\n\nimport type { SpotAnnotation } from \"../model/annotation.js\";\nimport { spotAnnotationRequestSchema } from \"./requests.js\";\nimport {\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_LIMITS,\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 ExternalHandoffState,\n} from \"./external-handoff-constants.js\";\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_LIMITS,\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 \"./external-handoff-constants.js\";\n\nconst opaqueIdSchema = z\n .string()\n .min(22)\n .max(128)\n .regex(/^[A-Za-z0-9_-]+$/u);\nconst isoTimestampSchema = z.iso.datetime();\nexport const externalHandoffReportableDispatchPhaseSchema = z.enum(\n EXTERNAL_HANDOFF_REPORTABLE_DISPATCH_PHASES,\n);\nconst externalHandoffPageSummarySchema = z.strictObject({\n origin: z.string().min(1).max(2_048),\n pathname: z.string().min(1).max(2_048),\n});\n\nexport const externalHandoffSummarySchema = z.strictObject({\n sessionId: opaqueIdSchema,\n framework: z.enum(EXTERNAL_HANDOFF_FRAMEWORKS),\n revision: z.number().int().positive(),\n cursor: opaqueIdSchema,\n targetCount: z.number().int().positive(),\n page: externalHandoffPageSummarySchema,\n publishedAt: isoTimestampSchema,\n expiresAt: isoTimestampSchema,\n state: z.enum(EXTERNAL_HANDOFF_STATES),\n pickupCount: z\n .number()\n .int()\n .nonnegative()\n .max(EXTERNAL_HANDOFF_LIMITS.maximumConnectorReceipts),\n pickedUpAt: isoTimestampSchema.optional(),\n});\n\nexport const externalHandoffSnapshotSchema = z.strictObject({\n schemaVersion: z.literal(EXTERNAL_HANDOFF_SNAPSHOT_SCHEMA_VERSION),\n cursor: opaqueIdSchema,\n session: z.strictObject({\n id: opaqueIdSchema,\n framework: z.enum(EXTERNAL_HANDOFF_FRAMEWORKS),\n }),\n revision: z.number().int().positive(),\n publishedAt: isoTimestampSchema,\n expiresAt: isoTimestampSchema,\n annotation: spotAnnotationRequestSchema,\n});\n\nexport const activeAdapterSummarySchema = z\n .strictObject({\n kind: z.enum(EXTERNAL_HANDOFF_ACTIVE_ADAPTER_KINDS),\n state: z.enum(EXTERNAL_HANDOFF_ACTIVE_ADAPTER_STATES),\n canDispatch: z.boolean(),\n connectedAt: isoTimestampSchema,\n updatedAt: isoTimestampSchema,\n })\n .superRefine((value, context) => {\n if (value.canDispatch !== (value.state === \"ready\")) {\n context.addIssue({\n code: \"custom\",\n message: \"canDispatch must match the ready state.\",\n path: [\"canDispatch\"],\n });\n }\n });\n\nexport const dispatchSummarySchema = z.strictObject({\n adapterKind: z.enum(EXTERNAL_HANDOFF_ACTIVE_ADAPTER_KINDS),\n revision: z.number().int().positive(),\n phase: z.enum(EXTERNAL_HANDOFF_DISPATCH_PHASES),\n updatedAt: isoTimestampSchema,\n});\n\nexport const externalHandoffCapabilityRequestSchema = z.strictObject({});\nexport const externalHandoffPublishRequestSchema = z.strictObject({\n requestId: opaqueIdSchema,\n annotation: spotAnnotationRequestSchema,\n});\nexport const externalHandoffStatusRequestSchema = z.strictObject({\n cursor: opaqueIdSchema.optional(),\n});\nexport const externalHandoffResolveDeliveryRequestSchema = z.strictObject({\n cursor: opaqueIdSchema,\n confirmation: z.literal(\"workspace-reviewed\"),\n});\nexport const externalHandoffCapabilitySchema = z.strictObject({\n enabled: z.literal(true),\n brokerReady: z.boolean(),\n activeWaitCount: z\n .number()\n .int()\n .nonnegative()\n .max(EXTERNAL_HANDOFF_LIMITS.maximumWaiters),\n snapshotSchemaVersion: z.literal(EXTERNAL_HANDOFF_SNAPSHOT_SCHEMA_VERSION),\n brokerProtocolVersion: z.literal(EXTERNAL_HANDOFF_BROKER_PROTOCOL_VERSION),\n activeAdapter: activeAdapterSummarySchema.nullable(),\n dispatch: dispatchSummarySchema.nullable(),\n});\nexport const externalHandoffPublishDeliverySchema = z.discriminatedUnion(\"mode\", [\n z.strictObject({ mode: z.literal(\"inbox\") }),\n z.strictObject({\n mode: z.literal(\"active\"),\n adapter: activeAdapterSummarySchema,\n dispatch: dispatchSummarySchema,\n }),\n]);\nexport const externalHandoffPublishResultSchema = z.strictObject({\n handoff: externalHandoffSummarySchema,\n delivery: externalHandoffPublishDeliverySchema,\n replayed: z.boolean(),\n});\nexport const externalHandoffStatusResultSchema = z.strictObject({\n handoff: externalHandoffSummarySchema,\n activeAdapter: activeAdapterSummarySchema.nullable(),\n dispatch: dispatchSummarySchema.nullable(),\n});\n\nexport interface ExternalHandoffSummary {\n readonly sessionId: string;\n readonly framework: ExternalHandoffFramework;\n readonly revision: number;\n readonly cursor: string;\n readonly targetCount: number;\n readonly page: Readonly<{ origin: string; pathname: string }>;\n readonly publishedAt: string;\n readonly expiresAt: string;\n readonly state: ExternalHandoffState;\n readonly pickupCount: number;\n readonly pickedUpAt?: string | undefined;\n}\n\nexport interface ExternalHandoffSnapshot {\n readonly schemaVersion: typeof EXTERNAL_HANDOFF_SNAPSHOT_SCHEMA_VERSION;\n readonly cursor: string;\n readonly session: Readonly<{\n id: string;\n framework: ExternalHandoffFramework;\n }>;\n readonly revision: number;\n readonly publishedAt: string;\n readonly expiresAt: string;\n readonly annotation: SpotAnnotation;\n}\n\nexport interface ActiveAdapterSummary {\n readonly kind: ExternalHandoffActiveAdapterKind;\n readonly state: ExternalHandoffActiveAdapterState;\n readonly canDispatch: boolean;\n readonly connectedAt: string;\n readonly updatedAt: string;\n}\n\nexport interface DispatchSummary {\n readonly adapterKind: ExternalHandoffActiveAdapterKind;\n readonly revision: number;\n readonly phase: ExternalHandoffDispatchPhase;\n readonly updatedAt: string;\n}\n\nexport type ExternalHandoffPublishDelivery =\n | Readonly<{ mode: \"inbox\" }>\n | Readonly<{\n mode: \"active\";\n adapter: ActiveAdapterSummary;\n dispatch: DispatchSummary;\n }>;\n\nexport interface ExternalHandoffPublishResult {\n readonly handoff: ExternalHandoffSummary;\n readonly delivery: ExternalHandoffPublishDelivery;\n readonly replayed: boolean;\n}\n\nexport interface ExternalHandoffStatusResult {\n readonly handoff: ExternalHandoffSummary;\n readonly activeAdapter: ActiveAdapterSummary | null;\n readonly dispatch: DispatchSummary | null;\n}\n\nexport interface ExternalHandoffCapability {\n readonly enabled: true;\n readonly brokerReady: boolean;\n readonly activeWaitCount: number;\n readonly snapshotSchemaVersion: typeof EXTERNAL_HANDOFF_SNAPSHOT_SCHEMA_VERSION;\n readonly brokerProtocolVersion: typeof EXTERNAL_HANDOFF_BROKER_PROTOCOL_VERSION;\n readonly activeAdapter: ActiveAdapterSummary | null;\n readonly dispatch: DispatchSummary | null;\n}\n\nexport type ExternalHandoffPublishRequest = z.infer<\n typeof externalHandoffPublishRequestSchema\n>;\nexport type ExternalHandoffStatusRequest = z.infer<\n typeof externalHandoffStatusRequestSchema\n>;\nexport type ExternalHandoffResolveDeliveryRequest = z.infer<\n typeof externalHandoffResolveDeliveryRequestSchema\n>;\n","import { z } from \"zod\";\n\nimport { MAX_ANNOTATION_TARGETS, type SpotAnnotation } from \"../model/annotation.js\";\nimport { AGENT_APPLY_MODES, type AgentApplyMode } from \"../model/agent.js\";\nimport { spotAnnotationSchema } from \"../model/context-schema.js\";\n\nexport {\n pageContextSchema as pageContextRequestSchema,\n spotAnnotationSchema as spotAnnotationRequestSchema,\n spotTargetContextSchema as spotTargetContextRequestSchema,\n} from \"../model/context-schema.js\";\n\nexport const runtimeBootstrapRequestSchema = z.strictObject({});\n\nconst sourceCoordinatesSchema = z.strictObject({\n fileId: z.string().min(1).max(128),\n line: z.number().int().positive(),\n column: z.number().int().positive(),\n});\n\nexport const sourceContextRequestSchema = sourceCoordinatesSchema\n .extend({\n maxLines: z.number().int().positive(),\n })\n .strict();\n\nexport const openEditorRequestSchema = sourceCoordinatesSchema.strict();\n\nconst dataFlowSourceCoordinatesRequestSchema = sourceCoordinatesSchema\n .extend({\n schemaVersion: z.literal(1),\n sourceVersion: z.string().min(1).max(128).optional(),\n })\n .strict();\n\nconst dataFlowComponentIdentityRequestSchema = z.strictObject({\n schemaVersion: z.literal(1),\n componentSourceId: z.string().min(1).max(128),\n sourceVersion: z.string().min(1).max(128),\n});\n\nexport const dataFlowComponentReportRequestSchema = z.union([\n dataFlowSourceCoordinatesRequestSchema,\n dataFlowComponentIdentityRequestSchema,\n]);\n\nexport const dataFlowPageReportRequestSchema = z.strictObject({\n schemaVersion: z.literal(1),\n targets: z\n .array(dataFlowComponentReportRequestSchema)\n .min(1)\n .max(MAX_ANNOTATION_TARGETS),\n});\n\nconst profileIdSchema = z\n .string()\n .min(1)\n .max(64)\n .regex(/^[A-Za-z0-9][A-Za-z0-9._-]*$/);\n\nexport const agentCapabilityRequestSchema = z.strictObject({\n providerProfileId: profileIdSchema,\n modelProfileId: profileIdSchema,\n});\n\nexport const agentWorkspaceHealthRequestSchema = z.strictObject({});\n\nexport const agentJobCreateRequestSchema = z.strictObject({\n annotation: spotAnnotationSchema,\n applyMode: z.enum(AGENT_APPLY_MODES).optional(),\n providerProfileId: profileIdSchema,\n modelProfileId: profileIdSchema,\n providerDataConsent: z.literal(true),\n trustedFastModeConsent: z.literal(true).optional(),\n workingTreeMode: z\n .enum([\"require-clean\", \"include-local-changes\"])\n .default(\"require-clean\"),\n});\n\nexport const agentJobActionRequestSchema = z.strictObject({});\n\nexport type SourceContextRequest = z.infer<typeof sourceContextRequestSchema>;\nexport type RuntimeBootstrapRequest = z.infer<typeof runtimeBootstrapRequestSchema>;\nexport type OpenEditorRequest = z.infer<typeof openEditorRequestSchema>;\nexport type DataFlowComponentReportRequest = z.infer<\n typeof dataFlowComponentReportRequestSchema\n>;\nexport type DataFlowPageReportRequest = z.infer<typeof dataFlowPageReportRequestSchema>;\nexport type AgentCapabilityRequest = z.infer<typeof agentCapabilityRequestSchema>;\nexport interface AgentJobCreateRequest {\n readonly annotation: SpotAnnotation;\n readonly applyMode?: AgentApplyMode;\n readonly providerProfileId: string;\n readonly modelProfileId: string;\n readonly providerDataConsent: true;\n readonly trustedFastModeConsent?: true;\n readonly workingTreeMode: \"require-clean\" | \"include-local-changes\";\n}\n","import type { CodeContext } from \"./code-context.js\";\nimport type { ReactContext, SourceRef } from \"./source-ref.js\";\nimport type { StyleContext } from \"./style-context.js\";\n\nexport interface PageContext {\n readonly url: string;\n readonly pathname: string;\n readonly title: string;\n readonly viewportWidth: number;\n readonly viewportHeight: number;\n readonly devicePixelRatio: number;\n}\n\nexport interface ElementContext {\n readonly tagName: string;\n readonly selector: string;\n readonly sanitizedHtml: string;\n readonly textPreview?: string;\n readonly role?: string;\n readonly rect: Readonly<{\n x: number;\n y: number;\n width: number;\n height: number;\n }>;\n}\n\n/** Protocol hard limit. Runtime configuration may choose a smaller limit. */\nexport const MAX_ANNOTATION_TARGETS = 20;\n\n/** Each target owns its requested change; the UI enforces the same bound. */\nexport const MAX_TARGET_INSTRUCTION_CHARACTERS = 2_000;\n\n/** Keeps the complete, atomic user intent within the prompt and request budgets. */\nexport const MAX_ANNOTATION_INSTRUCTION_CHARACTERS = 4_000;\n\nexport const SPOTPATCH_LOCALES = Object.freeze([\"en-US\", \"zh-CN\"] as const);\nexport type SpotPatchLocale = (typeof SPOTPATCH_LOCALES)[number];\nexport const SPOTPATCH_LOCALE_PREFERENCES = Object.freeze([\n \"auto\",\n ...SPOTPATCH_LOCALES,\n] as const);\nexport type SpotPatchLocalePreference = (typeof SPOTPATCH_LOCALE_PREFERENCES)[number];\n\nexport interface SpotTargetContext {\n readonly instruction: string;\n readonly page?: Readonly<PageContext>;\n readonly source: SourceRef;\n readonly react: ReactContext;\n readonly element: ElementContext;\n readonly styles: StyleContext;\n readonly code?: CodeContext;\n readonly warnings: readonly string[];\n}\n\nexport interface SpotAnnotation {\n readonly schemaVersion: 3;\n readonly id: string;\n readonly locale: SpotPatchLocale;\n readonly page: Readonly<PageContext>;\n readonly targets: readonly SpotTargetContext[];\n readonly createdAt: string;\n}\n","import type { ErrorCode } from \"../errors/error-code.js\";\n\nexport type AiProviderProtocol = \"responses\" | \"chat-completions\";\nexport type AiProviderAuthentication = \"bearer\" | \"x-api-key\";\nexport const AGENT_APPLY_MODES = Object.freeze([\n \"review\",\n \"auto\",\n \"trusted-auto\",\n] as const);\nexport type AgentApplyMode = (typeof AGENT_APPLY_MODES)[number];\nexport type AgentWorkingTreeMode = \"require-clean\" | \"include-local-changes\";\n\nexport interface AiModelProfile {\n readonly label: string;\n readonly model: string;\n}\n\nexport interface OpenAICompatibleProviderOptions {\n readonly type: \"openai-compatible\";\n readonly label: string;\n readonly protocol: AiProviderProtocol;\n readonly authentication?: AiProviderAuthentication;\n readonly baseURL: string;\n readonly apiKeyEnv: string;\n readonly models: Readonly<Record<string, AiModelProfile>>;\n readonly defaultModel: string;\n}\n\nexport interface AgentCheckDefinition {\n readonly label: string;\n readonly command: string;\n readonly args?: readonly string[];\n readonly required?: boolean;\n readonly timeoutMs?: number;\n}\n\nexport interface AgentLimits {\n readonly maxTurns: number;\n readonly maxToolCalls: number;\n readonly maxChangedFiles: number;\n readonly maxDiffBytes: number;\n readonly maxReadBytesPerFile: number;\n readonly maxToolOutputCharacters: number;\n readonly maxProviderResponseBytes: number;\n readonly providerConnectTimeoutMs: number;\n readonly providerFirstByteTimeoutMs: number;\n readonly providerIdleTimeoutMs: number;\n readonly checkTimeoutMs: number;\n readonly jobTimeoutMs: number;\n}\n\nexport const DEFAULT_AGENT_LIMITS = Object.freeze({\n maxTurns: 20,\n maxToolCalls: 80,\n maxChangedFiles: 20,\n maxDiffBytes: 512_000,\n maxReadBytesPerFile: 256_000,\n maxToolOutputCharacters: 40_000,\n maxProviderResponseBytes: 2_000_000,\n providerConnectTimeoutMs: 15_000,\n providerFirstByteTimeoutMs: 30_000,\n providerIdleTimeoutMs: 60_000,\n checkTimeoutMs: 120_000,\n jobTimeoutMs: 600_000,\n} satisfies AgentLimits);\n\nexport interface AiExecutionOptions {\n readonly isolation?: \"git-worktree\";\n readonly applyMode?: AgentApplyMode;\n readonly checks?: Readonly<Record<string, AgentCheckDefinition>>;\n readonly limits?: Partial<AgentLimits>;\n}\n\nexport interface AiOptions {\n readonly providers: Readonly<Record<string, OpenAICompatibleProviderOptions>>;\n readonly defaultProvider: string;\n readonly execution?: AiExecutionOptions;\n}\n\nexport interface ResolvedAiModelProfile extends AiModelProfile {\n readonly id: string;\n}\n\nexport interface ResolvedOpenAICompatibleProviderOptions {\n readonly id: string;\n readonly type: \"openai-compatible\";\n readonly label: string;\n readonly protocol: AiProviderProtocol;\n readonly authentication: AiProviderAuthentication;\n readonly baseURL: string;\n readonly apiKeyEnv: string;\n readonly models: Readonly<Record<string, ResolvedAiModelProfile>>;\n readonly defaultModel: string;\n}\n\nexport interface ResolvedAgentCheckDefinition {\n readonly id: string;\n readonly label: string;\n readonly command: string;\n readonly args: readonly string[];\n readonly required: boolean;\n readonly timeoutMs: number;\n}\n\nexport interface ResolvedAiExecutionOptions {\n readonly isolation: \"git-worktree\";\n readonly applyMode: AgentApplyMode;\n readonly checks: Readonly<Record<string, ResolvedAgentCheckDefinition>>;\n readonly limits: Readonly<AgentLimits>;\n}\n\nexport interface ResolvedAiOptions {\n readonly providers: Readonly<Record<string, ResolvedOpenAICompatibleProviderOptions>>;\n readonly defaultProvider: string;\n readonly execution: ResolvedAiExecutionOptions;\n}\n\nexport interface RuntimeAiModelProfile {\n readonly id: string;\n readonly label: string;\n}\n\nexport interface RuntimeAiProviderProfile {\n readonly id: string;\n readonly label: string;\n readonly protocol: AiProviderProtocol;\n readonly models: readonly RuntimeAiModelProfile[];\n readonly defaultModel: string;\n}\n\nexport type RuntimeAiConfig =\n | Readonly<{ enabled: false }>\n | Readonly<{\n enabled: true;\n providers: readonly RuntimeAiProviderProfile[];\n defaultProvider: string;\n applyMode: AgentApplyMode;\n }>;\n\nexport const AGENT_JOB_STATUSES = Object.freeze([\n \"queued\",\n \"preparing\",\n \"running\",\n \"validating\",\n \"awaiting-review\",\n \"applying\",\n \"applied\",\n \"completed\",\n \"cancelling\",\n \"cancelled\",\n \"reverting\",\n \"reverted\",\n \"failed\",\n] as const);\n\nexport type AgentJobStatus = (typeof AGENT_JOB_STATUSES)[number];\n\nexport const AGENT_CAPABILITY_STATES = Object.freeze([\n \"unknown\",\n \"probing\",\n \"agent-ready\",\n \"prompt-only\",\n \"unavailable\",\n] as const);\n\nexport type AgentCapabilityState = (typeof AGENT_CAPABILITY_STATES)[number];\n\nexport interface AgentCapabilitySnapshot {\n readonly providerProfileId: string;\n readonly providerLabel: string;\n readonly modelProfileId: string;\n readonly modelLabel: string;\n readonly protocol: AiProviderProtocol;\n readonly state: AgentCapabilityState;\n readonly authenticated: boolean;\n readonly modelAvailable: boolean;\n readonly toolCalling: boolean;\n readonly toolResultContinuation: boolean;\n readonly streaming: boolean;\n readonly checkedAt?: string;\n readonly errorCode?: ErrorCode;\n}\n\nexport const AGENT_WORKSPACE_STATES = Object.freeze([\n \"ready\",\n \"consent-required\",\n \"blocked\",\n] as const);\n\nexport const AGENT_WORKSPACE_SNAPSHOT_LIMITS = Object.freeze({\n maxUntrackedFiles: 1_000,\n maxUntrackedBytes: 20 * 1024 * 1024,\n});\n\nexport type AgentWorkspaceState = (typeof AGENT_WORKSPACE_STATES)[number];\n\nexport interface AgentWorkspaceChangeSummary {\n readonly staged: number;\n readonly unstaged: number;\n readonly untracked: number;\n readonly conflicted: number;\n readonly total: number;\n}\n\nexport interface AgentWorkspaceHealthSnapshot {\n readonly state: AgentWorkspaceState;\n readonly checkedAt: string;\n readonly changes: AgentWorkspaceChangeSummary;\n readonly canIncludeLocalChanges: boolean;\n readonly errorCode?: ErrorCode;\n}\n\nexport const AGENT_FILE_CHANGE_KINDS = Object.freeze([\n \"added\",\n \"modified\",\n \"deleted\",\n] as const);\n\nexport type AgentFileChangeKind = (typeof AGENT_FILE_CHANGE_KINDS)[number];\n\nexport const AGENT_CHECK_STATUSES = Object.freeze([\n \"passed\",\n \"failed\",\n \"cancelled\",\n \"timed-out\",\n] as const);\n\nexport type AgentCheckStatus = (typeof AGENT_CHECK_STATUSES)[number];\n\nexport interface AgentChangedFile {\n readonly relativePath: string;\n readonly kind: AgentFileChangeKind;\n readonly additions: number;\n readonly deletions: number;\n}\n\nexport interface AgentCheckResult {\n readonly checkId: string;\n readonly label: string;\n readonly status: AgentCheckStatus;\n readonly durationMs: number;\n readonly exitCode?: number;\n readonly output: string;\n}\n\nexport interface AgentJobSnapshot {\n readonly jobId: string;\n readonly status: AgentJobStatus;\n readonly providerProfileId: string;\n readonly providerLabel: string;\n readonly modelProfileId: string;\n readonly modelLabel: string;\n readonly phaseMessage: string;\n readonly createdAt: string;\n readonly updatedAt: string;\n readonly canCancel: boolean;\n readonly canApply: boolean;\n readonly canRevert: boolean;\n readonly errorCode?: ErrorCode;\n}\n\nexport interface AgentJobResult {\n readonly jobId: string;\n readonly summary: string;\n readonly diff: string;\n readonly files: readonly AgentChangedFile[];\n readonly checks: readonly AgentCheckResult[];\n}\n\nexport interface AgentJobResultResponse {\n readonly snapshot: AgentJobSnapshot;\n readonly result?: AgentJobResult;\n}\n","import { z } from \"zod\";\n\nimport {\n MAX_ANNOTATION_INSTRUCTION_CHARACTERS,\n MAX_ANNOTATION_TARGETS,\n MAX_TARGET_INSTRUCTION_CHARACTERS,\n SPOTPATCH_LOCALES,\n} from \"./annotation.js\";\n\nconst boundedString = (maximum: number): z.ZodString => z.string().max(maximum);\n\nexport const sourceRefSchema = z.strictObject({\n fileId: boundedString(128).optional(),\n relativePath: boundedString(1_024).optional(),\n line: z.number().int().positive().optional(),\n column: z.number().int().positive().optional(),\n origin: z.enum([\"jsx-host\", \"astro-host\", \"react-fiber\", \"dom-ancestor\", \"none\"]),\n confidence: z.enum([\"exact\", \"probable\", \"approximate\", \"unknown\"]),\n});\n\nexport const matchedStyleRuleSchema = z.strictObject({\n selector: boundedString(2_048),\n declarations: boundedString(8_192),\n source: boundedString(1_024).optional(),\n media: boundedString(1_024).optional(),\n});\n\nexport const codeContextSchema = z.strictObject({\n relativePath: boundedString(1_024),\n language: z.enum([\"tsx\", \"jsx\", \"astro\"]),\n startLine: z.number().int().positive(),\n endLine: z.number().int().positive(),\n excerpt: boundedString(16_000),\n boundary: z.enum([\"component\", \"nearby-lines\"]),\n});\n\nexport const pageContextSchema = z.strictObject({\n url: boundedString(2_048),\n pathname: boundedString(2_048),\n title: boundedString(1_024),\n viewportWidth: z.number().nonnegative(),\n viewportHeight: z.number().nonnegative(),\n devicePixelRatio: z.number().positive(),\n});\n\nexport const spotTargetContextSchema = z.strictObject({\n instruction: z.string().trim().min(1).max(MAX_TARGET_INSTRUCTION_CHARACTERS),\n page: pageContextSchema.optional(),\n source: sourceRefSchema,\n react: z.strictObject({\n supported: z.boolean(),\n version: boundedString(64).optional(),\n componentName: boundedString(256).optional(),\n componentSourceId: boundedString(128).optional(),\n sourceVersion: boundedString(128).optional(),\n componentStack: z.array(boundedString(256)).max(64),\n source: sourceRefSchema.optional(),\n }),\n element: z.strictObject({\n tagName: boundedString(128),\n selector: boundedString(2_048),\n sanitizedHtml: boundedString(8_192),\n textPreview: boundedString(2_048).optional(),\n role: boundedString(256).optional(),\n rect: z.strictObject({\n x: z.number(),\n y: z.number(),\n width: z.number().nonnegative(),\n height: z.number().nonnegative(),\n }),\n }),\n styles: z.strictObject({\n classNames: z.array(boundedString(512)).max(256),\n inlineStyle: boundedString(8_192).optional(),\n matchedRules: z.array(matchedStyleRuleSchema).max(256),\n computed: z.record(boundedString(256), boundedString(2_048)),\n warnings: z.array(boundedString(1_024)).max(64),\n }),\n code: codeContextSchema.optional(),\n warnings: z.array(boundedString(1_024)).max(64),\n});\n\nexport const spotAnnotationSchema = z\n .strictObject({\n schemaVersion: z.literal(3),\n id: boundedString(128),\n locale: z.enum(SPOTPATCH_LOCALES),\n page: pageContextSchema,\n targets: z.array(spotTargetContextSchema).min(1).max(MAX_ANNOTATION_TARGETS),\n createdAt: z.iso.datetime(),\n })\n .superRefine((annotation, context) => {\n const total = annotation.targets.reduce(\n (characters, target) => characters + target.instruction.length,\n 0,\n );\n if (total > MAX_ANNOTATION_INSTRUCTION_CHARACTERS) {\n context.addIssue({\n code: \"custom\",\n message: \"Combined target instructions exceed the annotation limit.\",\n path: [\"targets\"],\n });\n }\n });\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 ERROR_CODES = {\n INVALID_REQUEST: \"INVALID_REQUEST\",\n INVALID_TOKEN: \"INVALID_TOKEN\",\n ORIGIN_NOT_ALLOWED: \"ORIGIN_NOT_ALLOWED\",\n SOURCE_NOT_FOUND: \"SOURCE_NOT_FOUND\",\n SOURCE_OUTSIDE_ROOT: \"SOURCE_OUTSIDE_ROOT\",\n SOURCE_TOO_LARGE: \"SOURCE_TOO_LARGE\",\n EDITOR_OPEN_FAILED: \"EDITOR_OPEN_FAILED\",\n DATA_FLOW_DISABLED: \"DATA_FLOW_DISABLED\",\n DATA_FLOW_SOURCE_STALE: \"DATA_FLOW_SOURCE_STALE\",\n DATA_FLOW_ANALYSIS_CANCELLED: \"DATA_FLOW_ANALYSIS_CANCELLED\",\n AI_DISABLED: \"AI_DISABLED\",\n PROVIDER_NOT_CONFIGURED: \"PROVIDER_NOT_CONFIGURED\",\n PROVIDER_AUTH_FAILED: \"PROVIDER_AUTH_FAILED\",\n PROVIDER_PROTOCOL_UNSUPPORTED: \"PROVIDER_PROTOCOL_UNSUPPORTED\",\n MODEL_NOT_ALLOWED: \"MODEL_NOT_ALLOWED\",\n MODEL_TOOL_CALL_UNSUPPORTED: \"MODEL_TOOL_CALL_UNSUPPORTED\",\n PROVIDER_RATE_LIMITED: \"PROVIDER_RATE_LIMITED\",\n AGENT_BUSY: \"AGENT_BUSY\",\n AGENT_LIMIT_EXCEEDED: \"AGENT_LIMIT_EXCEEDED\",\n AGENT_CANCELLED: \"AGENT_CANCELLED\",\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 BRIDGE_UNAUTHORIZED: \"BRIDGE_UNAUTHORIZED\",\n BRIDGE_PROTOCOL_MISMATCH: \"BRIDGE_PROTOCOL_MISMATCH\",\n BRIDGE_BUSY: \"BRIDGE_BUSY\",\n EXTERNAL_AGENT_BUSY: \"EXTERNAL_AGENT_BUSY\",\n ACTIVE_ADAPTER_CONFLICT: \"ACTIVE_ADAPTER_CONFLICT\",\n ACTIVE_ADAPTER_LEASE_INVALID: \"ACTIVE_ADAPTER_LEASE_INVALID\",\n ACTIVE_DISPATCH_INVALID: \"ACTIVE_DISPATCH_INVALID\",\n SESSION_NOT_FOUND: \"SESSION_NOT_FOUND\",\n SESSION_AMBIGUOUS: \"SESSION_AMBIGUOUS\",\n SESSION_CLOSED: \"SESSION_CLOSED\",\n WORKTREE_DIRTY: \"WORKTREE_DIRTY\",\n WORKTREE_NOT_REPOSITORY: \"WORKTREE_NOT_REPOSITORY\",\n WORKTREE_OPERATION_IN_PROGRESS: \"WORKTREE_OPERATION_IN_PROGRESS\",\n WORKTREE_CONFLICTED: \"WORKTREE_CONFLICTED\",\n WORKTREE_LOCAL_CHANGES_TOO_LARGE: \"WORKTREE_LOCAL_CHANGES_TOO_LARGE\",\n WORKTREE_UNTRACKED_UNSUPPORTED: \"WORKTREE_UNTRACKED_UNSUPPORTED\",\n WORKTREE_LOCAL_CHANGES_UNSUPPORTED: \"WORKTREE_LOCAL_CHANGES_UNSUPPORTED\",\n TOOL_DENIED: \"TOOL_DENIED\",\n TOOL_INPUT_INVALID: \"TOOL_INPUT_INVALID\",\n TOOL_ARGUMENTS_INVALID: \"TOOL_ARGUMENTS_INVALID\",\n TOOL_CALL_ID_CONFLICT: \"TOOL_CALL_ID_CONFLICT\",\n TOOL_PATH_DENIED: \"TOOL_PATH_DENIED\",\n PATCH_REJECTED: \"PATCH_REJECTED\",\n VALIDATION_FAILED: \"VALIDATION_FAILED\",\n APPLY_CONFLICT: \"APPLY_CONFLICT\",\n INTERNAL_ERROR: \"INTERNAL_ERROR\",\n} as const;\n\nexport const CONTEXTUAL_ASK_ERROR_CODES = Object.freeze([\n \"ASK_DISABLED\",\n \"ASK_SELECTION_REQUIRED\",\n \"ASK_SELECTION_STALE\",\n \"ASK_QUESTION_INVALID\",\n \"ASK_EXECUTOR_UNAVAILABLE\",\n \"ASK_TIMEOUT\",\n \"ASK_CONSENT_REQUIRED\",\n \"ASK_BUSY\",\n \"ASK_IDEMPOTENCY_CONFLICT\",\n \"ASK_SOURCE_SCOPE_DENIED\",\n \"ASK_LIMIT_EXCEEDED\",\n \"ASK_ANSWER_INVALID\",\n \"ASK_WRITE_ATTEMPTED\",\n \"ASK_CANCELLED\",\n \"ASK_RESULT_EXPIRED\",\n \"ASK_PROTOCOL_INCOMPATIBLE\",\n] as const);\n\nexport type ContextualAskErrorCode = (typeof CONTEXTUAL_ASK_ERROR_CODES)[number];\n\nexport type ErrorCode = (typeof ERROR_CODES)[keyof typeof ERROR_CODES];\n\nexport const ERROR_CODE_VALUES = Object.freeze(Object.values(ERROR_CODES));\n\nexport function isErrorCode(value: unknown): value is ErrorCode {\n return (\n typeof value === \"string\" &&\n (ERROR_CODE_VALUES as readonly string[]).includes(value)\n );\n}\n","import type { ErrorCode } from \"./error-code.js\";\n\nexport class SpotPatchError extends Error {\n readonly code: ErrorCode;\n\n constructor(code: ErrorCode, message = code, options?: ErrorOptions) {\n super(message, options);\n this.name = \"SpotPatchError\";\n this.code = code;\n }\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;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,yBAA2B;AAC3B,gCAAyB;AAEzB,sBAAuC;AACvC,qBAAe;AACf,uBAAiB;AACjB,uBAA0B;AAE1B,IAAAA,cAAkB;;;ACVlB,IAAAC,cAAkB;;;ACAlB,IAAAC,cAAkB;;;AC4BX,IAAM,yBAAyB;AAG/B,IAAM,oCAAoC;AAG1C,IAAM,wCAAwC;AAE9C,IAAM,oBAAoB,OAAO,OAAO,CAAC,SAAS,OAAO,CAAU;AAEnE,IAAM,+BAA+B,OAAO,OAAO;AAAA,EACxD;AAAA,EACA,GAAG;AACL,CAAU;;;ACrCH,IAAM,oBAAoB,OAAO,OAAO;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AACF,CAAU;AA2CH,IAAM,uBAAuB,OAAO,OAAO;AAAA,EAChD,UAAU;AAAA,EACV,cAAc;AAAA,EACd,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd,qBAAqB;AAAA,EACrB,yBAAyB;AAAA,EACzB,0BAA0B;AAAA,EAC1B,0BAA0B;AAAA,EAC1B,4BAA4B;AAAA,EAC5B,uBAAuB;AAAA,EACvB,gBAAgB;AAAA,EAChB,cAAc;AAChB,CAAuB;AA2EhB,IAAM,qBAAqB,OAAO,OAAO;AAAA,EAC9C;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,CAAU;AAIH,IAAM,0BAA0B,OAAO,OAAO;AAAA,EACnD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAU;AAoBH,IAAM,yBAAyB,OAAO,OAAO;AAAA,EAClD;AAAA,EACA;AAAA,EACA;AACF,CAAU;AAEH,IAAM,kCAAkC,OAAO,OAAO;AAAA,EAC3D,mBAAmB;AAAA,EACnB,mBAAmB,KAAK,OAAO;AACjC,CAAC;AAoBM,IAAM,0BAA0B,OAAO,OAAO;AAAA,EACnD;AAAA,EACA;AAAA,EACA;AACF,CAAU;AAIH,IAAM,uBAAuB,OAAO,OAAO;AAAA,EAChD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAU;;;ACjOV,iBAAkB;AASlB,IAAM,gBAAgB,CAAC,YAAiC,aAAE,OAAO,EAAE,IAAI,OAAO;AAEvE,IAAM,kBAAkB,aAAE,aAAa;AAAA,EAC5C,QAAQ,cAAc,GAAG,EAAE,SAAS;AAAA,EACpC,cAAc,cAAc,IAAK,EAAE,SAAS;AAAA,EAC5C,MAAM,aAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;AAAA,EAC3C,QAAQ,aAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;AAAA,EAC7C,QAAQ,aAAE,KAAK,CAAC,YAAY,cAAc,eAAe,gBAAgB,MAAM,CAAC;AAAA,EAChF,YAAY,aAAE,KAAK,CAAC,SAAS,YAAY,eAAe,SAAS,CAAC;AACpE,CAAC;AAEM,IAAM,yBAAyB,aAAE,aAAa;AAAA,EACnD,UAAU,cAAc,IAAK;AAAA,EAC7B,cAAc,cAAc,IAAK;AAAA,EACjC,QAAQ,cAAc,IAAK,EAAE,SAAS;AAAA,EACtC,OAAO,cAAc,IAAK,EAAE,SAAS;AACvC,CAAC;AAEM,IAAM,oBAAoB,aAAE,aAAa;AAAA,EAC9C,cAAc,cAAc,IAAK;AAAA,EACjC,UAAU,aAAE,KAAK,CAAC,OAAO,OAAO,OAAO,CAAC;AAAA,EACxC,WAAW,aAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACrC,SAAS,aAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACnC,SAAS,cAAc,IAAM;AAAA,EAC7B,UAAU,aAAE,KAAK,CAAC,aAAa,cAAc,CAAC;AAChD,CAAC;AAEM,IAAM,oBAAoB,aAAE,aAAa;AAAA,EAC9C,KAAK,cAAc,IAAK;AAAA,EACxB,UAAU,cAAc,IAAK;AAAA,EAC7B,OAAO,cAAc,IAAK;AAAA,EAC1B,eAAe,aAAE,OAAO,EAAE,YAAY;AAAA,EACtC,gBAAgB,aAAE,OAAO,EAAE,YAAY;AAAA,EACvC,kBAAkB,aAAE,OAAO,EAAE,SAAS;AACxC,CAAC;AAEM,IAAM,0BAA0B,aAAE,aAAa;AAAA,EACpD,aAAa,aAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,iCAAiC;AAAA,EAC3E,MAAM,kBAAkB,SAAS;AAAA,EACjC,QAAQ;AAAA,EACR,OAAO,aAAE,aAAa;AAAA,IACpB,WAAW,aAAE,QAAQ;AAAA,IACrB,SAAS,cAAc,EAAE,EAAE,SAAS;AAAA,IACpC,eAAe,cAAc,GAAG,EAAE,SAAS;AAAA,IAC3C,mBAAmB,cAAc,GAAG,EAAE,SAAS;AAAA,IAC/C,eAAe,cAAc,GAAG,EAAE,SAAS;AAAA,IAC3C,gBAAgB,aAAE,MAAM,cAAc,GAAG,CAAC,EAAE,IAAI,EAAE;AAAA,IAClD,QAAQ,gBAAgB,SAAS;AAAA,EACnC,CAAC;AAAA,EACD,SAAS,aAAE,aAAa;AAAA,IACtB,SAAS,cAAc,GAAG;AAAA,IAC1B,UAAU,cAAc,IAAK;AAAA,IAC7B,eAAe,cAAc,IAAK;AAAA,IAClC,aAAa,cAAc,IAAK,EAAE,SAAS;AAAA,IAC3C,MAAM,cAAc,GAAG,EAAE,SAAS;AAAA,IAClC,MAAM,aAAE,aAAa;AAAA,MACnB,GAAG,aAAE,OAAO;AAAA,MACZ,GAAG,aAAE,OAAO;AAAA,MACZ,OAAO,aAAE,OAAO,EAAE,YAAY;AAAA,MAC9B,QAAQ,aAAE,OAAO,EAAE,YAAY;AAAA,IACjC,CAAC;AAAA,EACH,CAAC;AAAA,EACD,QAAQ,aAAE,aAAa;AAAA,IACrB,YAAY,aAAE,MAAM,cAAc,GAAG,CAAC,EAAE,IAAI,GAAG;AAAA,IAC/C,aAAa,cAAc,IAAK,EAAE,SAAS;AAAA,IAC3C,cAAc,aAAE,MAAM,sBAAsB,EAAE,IAAI,GAAG;AAAA,IACrD,UAAU,aAAE,OAAO,cAAc,GAAG,GAAG,cAAc,IAAK,CAAC;AAAA,IAC3D,UAAU,aAAE,MAAM,cAAc,IAAK,CAAC,EAAE,IAAI,EAAE;AAAA,EAChD,CAAC;AAAA,EACD,MAAM,kBAAkB,SAAS;AAAA,EACjC,UAAU,aAAE,MAAM,cAAc,IAAK,CAAC,EAAE,IAAI,EAAE;AAChD,CAAC;AAEM,IAAM,uBAAuB,aACjC,aAAa;AAAA,EACZ,eAAe,aAAE,QAAQ,CAAC;AAAA,EAC1B,IAAI,cAAc,GAAG;AAAA,EACrB,QAAQ,aAAE,KAAK,iBAAiB;AAAA,EAChC,MAAM;AAAA,EACN,SAAS,aAAE,MAAM,uBAAuB,EAAE,IAAI,CAAC,EAAE,IAAI,sBAAsB;AAAA,EAC3E,WAAW,aAAE,IAAI,SAAS;AAC5B,CAAC,EACA,YAAY,CAAC,YAAY,YAAY;AACpC,QAAM,QAAQ,WAAW,QAAQ;AAAA,IAC/B,CAAC,YAAY,WAAW,aAAa,OAAO,YAAY;AAAA,IACxD;AAAA,EACF;AACA,MAAI,QAAQ,uCAAuC;AACjD,YAAQ,SAAS;AAAA,MACf,MAAM;AAAA,MACN,SAAS;AAAA,MACT,MAAM,CAAC,SAAS;AAAA,IAClB,CAAC;AAAA,EACH;AACF,CAAC;;;AH3FI,IAAM,gCAAgC,cAAE,aAAa,CAAC,CAAC;AAE9D,IAAM,0BAA0B,cAAE,aAAa;AAAA,EAC7C,QAAQ,cAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EACjC,MAAM,cAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EAChC,QAAQ,cAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AACpC,CAAC;AAEM,IAAM,6BAA6B,wBACvC,OAAO;AAAA,EACN,UAAU,cAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AACtC,CAAC,EACA,OAAO;AAEH,IAAM,0BAA0B,wBAAwB,OAAO;AAEtE,IAAM,yCAAyC,wBAC5C,OAAO;AAAA,EACN,eAAe,cAAE,QAAQ,CAAC;AAAA,EAC1B,eAAe,cAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;AACrD,CAAC,EACA,OAAO;AAEV,IAAM,yCAAyC,cAAE,aAAa;AAAA,EAC5D,eAAe,cAAE,QAAQ,CAAC;AAAA,EAC1B,mBAAmB,cAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EAC5C,eAAe,cAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAC1C,CAAC;AAEM,IAAM,uCAAuC,cAAE,MAAM;AAAA,EAC1D;AAAA,EACA;AACF,CAAC;AAEM,IAAM,kCAAkC,cAAE,aAAa;AAAA,EAC5D,eAAe,cAAE,QAAQ,CAAC;AAAA,EAC1B,SAAS,cACN,MAAM,oCAAoC,EAC1C,IAAI,CAAC,EACL,IAAI,sBAAsB;AAC/B,CAAC;AAED,IAAM,kBAAkB,cACrB,OAAO,EACP,IAAI,CAAC,EACL,IAAI,EAAE,EACN,MAAM,8BAA8B;AAEhC,IAAM,+BAA+B,cAAE,aAAa;AAAA,EACzD,mBAAmB;AAAA,EACnB,gBAAgB;AAClB,CAAC;AAEM,IAAM,oCAAoC,cAAE,aAAa,CAAC,CAAC;AAE3D,IAAM,8BAA8B,cAAE,aAAa;AAAA,EACxD,YAAY;AAAA,EACZ,WAAW,cAAE,KAAK,iBAAiB,EAAE,SAAS;AAAA,EAC9C,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB,qBAAqB,cAAE,QAAQ,IAAI;AAAA,EACnC,wBAAwB,cAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,EACjD,iBAAiB,cACd,KAAK,CAAC,iBAAiB,uBAAuB,CAAC,EAC/C,QAAQ,eAAe;AAC5B,CAAC;AAEM,IAAM,8BAA8B,cAAE,aAAa,CAAC,CAAC;;;AI/ErD,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;;;AL1BV,IAAM,iBAAiB,cACpB,OAAO,EACP,IAAI,EAAE,EACN,IAAI,GAAG,EACP,MAAM,mBAAmB;AAC5B,IAAM,qBAAqB,cAAE,IAAI,SAAS;AACnC,IAAM,+CAA+C,cAAE;AAAA,EAC5D;AACF;AACA,IAAM,mCAAmC,cAAE,aAAa;AAAA,EACtD,QAAQ,cAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,IAAK;AAAA,EACnC,UAAU,cAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,IAAK;AACvC,CAAC;AAEM,IAAM,+BAA+B,cAAE,aAAa;AAAA,EACzD,WAAW;AAAA,EACX,WAAW,cAAE,KAAK,2BAA2B;AAAA,EAC7C,UAAU,cAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACpC,QAAQ;AAAA,EACR,aAAa,cAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACvC,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW;AAAA,EACX,OAAO,cAAE,KAAK,uBAAuB;AAAA,EACrC,aAAa,cACV,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,IAAI,wBAAwB,wBAAwB;AAAA,EACvD,YAAY,mBAAmB,SAAS;AAC1C,CAAC;AAEM,IAAM,gCAAgC,cAAE,aAAa;AAAA,EAC1D,eAAe,cAAE,QAAQ,wCAAwC;AAAA,EACjE,QAAQ;AAAA,EACR,SAAS,cAAE,aAAa;AAAA,IACtB,IAAI;AAAA,IACJ,WAAW,cAAE,KAAK,2BAA2B;AAAA,EAC/C,CAAC;AAAA,EACD,UAAU,cAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACpC,aAAa;AAAA,EACb,WAAW;AAAA,EACX,YAAY;AACd,CAAC;AAEM,IAAM,6BAA6B,cACvC,aAAa;AAAA,EACZ,MAAM,cAAE,KAAK,qCAAqC;AAAA,EAClD,OAAO,cAAE,KAAK,sCAAsC;AAAA,EACpD,aAAa,cAAE,QAAQ;AAAA,EACvB,aAAa;AAAA,EACb,WAAW;AACb,CAAC,EACA,YAAY,CAAC,OAAO,YAAY;AAC/B,MAAI,MAAM,iBAAiB,MAAM,UAAU,UAAU;AACnD,YAAQ,SAAS;AAAA,MACf,MAAM;AAAA,MACN,SAAS;AAAA,MACT,MAAM,CAAC,aAAa;AAAA,IACtB,CAAC;AAAA,EACH;AACF,CAAC;AAEI,IAAM,wBAAwB,cAAE,aAAa;AAAA,EAClD,aAAa,cAAE,KAAK,qCAAqC;AAAA,EACzD,UAAU,cAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACpC,OAAO,cAAE,KAAK,gCAAgC;AAAA,EAC9C,WAAW;AACb,CAAC;AAEM,IAAM,yCAAyC,cAAE,aAAa,CAAC,CAAC;AAChE,IAAM,sCAAsC,cAAE,aAAa;AAAA,EAChE,WAAW;AAAA,EACX,YAAY;AACd,CAAC;AACM,IAAM,qCAAqC,cAAE,aAAa;AAAA,EAC/D,QAAQ,eAAe,SAAS;AAClC,CAAC;AACM,IAAM,8CAA8C,cAAE,aAAa;AAAA,EACxE,QAAQ;AAAA,EACR,cAAc,cAAE,QAAQ,oBAAoB;AAC9C,CAAC;AACM,IAAM,kCAAkC,cAAE,aAAa;AAAA,EAC5D,SAAS,cAAE,QAAQ,IAAI;AAAA,EACvB,aAAa,cAAE,QAAQ;AAAA,EACvB,iBAAiB,cACd,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,IAAI,wBAAwB,cAAc;AAAA,EAC7C,uBAAuB,cAAE,QAAQ,wCAAwC;AAAA,EACzE,uBAAuB,cAAE,QAAQ,wCAAwC;AAAA,EACzE,eAAe,2BAA2B,SAAS;AAAA,EACnD,UAAU,sBAAsB,SAAS;AAC3C,CAAC;AACM,IAAM,uCAAuC,cAAE,mBAAmB,QAAQ;AAAA,EAC/E,cAAE,aAAa,EAAE,MAAM,cAAE,QAAQ,OAAO,EAAE,CAAC;AAAA,EAC3C,cAAE,aAAa;AAAA,IACb,MAAM,cAAE,QAAQ,QAAQ;AAAA,IACxB,SAAS;AAAA,IACT,UAAU;AAAA,EACZ,CAAC;AACH,CAAC;AACM,IAAM,qCAAqC,cAAE,aAAa;AAAA,EAC/D,SAAS;AAAA,EACT,UAAU;AAAA,EACV,UAAU,cAAE,QAAQ;AACtB,CAAC;AACM,IAAM,oCAAoC,cAAE,aAAa;AAAA,EAC9D,SAAS;AAAA,EACT,eAAe,2BAA2B,SAAS;AAAA,EACnD,UAAU,sBAAsB,SAAS;AAC3C,CAAC;;;AMvJM,IAAM,cAAc;AAAA,EACzB,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,oBAAoB;AAAA,EACpB,kBAAkB;AAAA,EAClB,qBAAqB;AAAA,EACrB,kBAAkB;AAAA,EAClB,oBAAoB;AAAA,EACpB,oBAAoB;AAAA,EACpB,wBAAwB;AAAA,EACxB,8BAA8B;AAAA,EAC9B,aAAa;AAAA,EACb,yBAAyB;AAAA,EACzB,sBAAsB;AAAA,EACtB,+BAA+B;AAAA,EAC/B,mBAAmB;AAAA,EACnB,6BAA6B;AAAA,EAC7B,uBAAuB;AAAA,EACvB,YAAY;AAAA,EACZ,sBAAsB;AAAA,EACtB,iBAAiB;AAAA,EACjB,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,0BAA0B;AAAA,EAC1B,aAAa;AAAA,EACb,qBAAqB;AAAA,EACrB,yBAAyB;AAAA,EACzB,8BAA8B;AAAA,EAC9B,yBAAyB;AAAA,EACzB,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,yBAAyB;AAAA,EACzB,gCAAgC;AAAA,EAChC,qBAAqB;AAAA,EACrB,kCAAkC;AAAA,EAClC,gCAAgC;AAAA,EAChC,oCAAoC;AAAA,EACpC,aAAa;AAAA,EACb,oBAAoB;AAAA,EACpB,wBAAwB;AAAA,EACxB,uBAAuB;AAAA,EACvB,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB,gBAAgB;AAClB;AAEO,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;AACF,CAAU;AAMH,IAAM,oBAAoB,OAAO,OAAO,OAAO,OAAO,WAAW,CAAC;;;AC9ElE,IAAM,iBAAN,cAA6B,MAAM;AAAA,EAC/B;AAAA,EAET,YAAY,MAAiB,UAAU,MAAM,SAAwB;AACnE,UAAM,SAAS,OAAO;AACtB,SAAK,OAAO;AACZ,SAAK,OAAO;AAAA,EACd;AACF;;;ARmBO,IAAM,gCAAgC;AACtC,IAAM,yBAAyB,OAAO,OAAO;AAAA,EAClD,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,MAAM;AAAA,EACN,KAAK;AAAA,EACL,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd,eAAe;AACjB,CAAC;AACM,IAAM,oCACX;AAEF,IAAM,oBAAgB,4BAAU,kCAAQ;AACxC,IAAM,iCAAiC;AACvC,IAAM,8BAA8B;AACpC,IAAM,6BAA6B;AACnC,IAAM,qBAAqB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqElC,IAAMC,kBAAiB,cACpB,OAAO,EACP,IAAI,EAAE,EACN,IAAI,GAAG,EACP,MAAM,mBAAmB;AAC5B,IAAM,mBAAmB,cACtB,OAAO,EACP,OAAO,EAAE,EACT,MAAM,cAAc;AACvB,IAAM,yBAAyB,cAAE,IAAI,EAAE,OAAO,CAAC,UAAU;AACvD,QAAM,QAAQ,6CAA6C,KAAK,KAAK;AAErE,MAAI,QAAQ,CAAC,MAAM,QAAW;AAC5B,WAAO;AAAA,EACT;AAEA,QAAM,OAAO,OAAO,MAAM,CAAC,CAAC;AAC5B,SAAO,OAAO,cAAc,IAAI,KAAK,QAAQ;AAC/C,CAAC;AAEM,IAAM,kCAAkC,cAAE,aAAa;AAAA,EAC5D,eAAe,cAAE,QAAQ,CAAC;AAAA,EAC1B,uBAAuB,cAAE,QAAQ,wCAAwC;AAAA,EACzE,YAAY;AAAA,EACZ,WAAWA;AAAA,EACX,WAAW,cAAE,KAAK,2BAA2B;AAAA,EAC7C,UAAU;AAAA,EACV,aAAa,cACV,OAAO,EACP,IAAI,EAAE,EACN,IAAI,GAAG,EACP,MAAM,mBAAmB;AAAA,EAC5B,KAAK,cAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EAC/B,WAAW,cAAE,IAAI,SAAS;AAC5B,CAAC;AAEM,IAAM,4BAA4B,cAAE,aAAa,CAAC,CAAC;AACnD,IAAM,6BAA6B,cAAE,aAAa;AAAA,EACvD,QAAQA,gBAAe,SAAS;AAClC,CAAC;AACM,IAAM,0BAA0B,cAAE,aAAa;AAAA,EACpD,aAAaA,gBAAe,SAAS;AAAA,EACrC,WAAW,cACR,OAAO,EACP,IAAI,EACJ,SAAS,EACT,IAAI,wBAAwB,aAAa,EACzC,QAAQ,wBAAwB,aAAa;AAClD,CAAC;AACM,IAAM,yBAAyB,cAAE,aAAa;AAAA,EACnD,QAAQA;AAAA,EACR,qBAAqBA;AACvB,CAAC;AACM,IAAM,iCAAiC,cAAE,aAAa;AAAA,EAC3D,aAAa,cAAE,KAAK,qCAAqC;AAAA,EACzD,qBAAqBA;AACvB,CAAC;AACM,IAAM,qCAAqC,cAAE,aAAa;AAAA,EAC/D,YAAYA;AACd,CAAC;AACM,IAAM,kCAAkC,cAAE,aAAa;AAAA,EAC5D,YAAYA;AAAA,EACZ,QAAQA;AAAA,EACR,OAAO;AACT,CAAC;AACM,IAAM,mCAAmC,cAAE,aAAa;AAAA,EAC7D,YAAYA;AACd,CAAC;AACM,IAAM,qBAAqB,cAAE,aAAa;AAAA,EAC/C,uBAAuB,cAAE,QAAQ,wCAAwC;AAAA,EACzE,YAAY;AAAA,EACZ,WAAWA;AAAA,EACX,WAAW,cAAE,KAAK,2BAA2B;AAAA,EAC7C,SAAS,6BAA6B,SAAS;AACjD,CAAC;AACM,IAAM,4BAA4B,cAAE,aAAa;AAAA,EACtD,SAAS,cAAE,QAAQ,SAAS;AAAA,EAC5B,UAAU;AACZ,CAAC;AACM,IAAM,yBAAyB,cAAE,mBAAmB,WAAW;AAAA,EACpE;AAAA,EACA,cAAE,aAAa,EAAE,SAAS,cAAE,QAAQ,SAAS,EAAE,CAAC;AAClD,CAAC;AACM,IAAM,wBAAwB,cAAE,aAAa;AAAA,EAClD,SAAS;AACX,CAAC;AACM,IAAM,gCAAgC,cAAE,aAAa;AAAA,EAC1D,YAAYA;AAAA,EACZ,qBAAqB,cAAE,QAAQ,wBAAwB,yBAAyB;AAAA,EAChF,gBAAgBA,gBAAe,SAAS;AAAA,EACxC,eAAe;AACjB,CAAC;AACM,IAAM,gCAAgC,cAAE,aAAa;AAAA,EAC1D,eAAe,2BAA2B,SAAS;AAAA,EACnD,UAAU,sBAAsB,SAAS;AAC3C,CAAC;AACM,IAAM,oCAAoC;AAC1C,IAAM,iCAAiC;AACvC,IAAM,kCAAkC;AAkB/C,SAAS,8BAAsC;AAC7C,QAAM,aAAa,QAAQ,IAAI,cAAc,QAAQ,IAAI;AACzD,MAAI,eAAe,UAAa,CAAC,iBAAAC,QAAK,MAAM,WAAW,UAAU,GAAG;AAClE,UAAM,IAAI,eAAe,YAAY,mBAAmB;AAAA,EAC1D;AACA,SAAO,iBAAAA,QAAK,MAAM;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,eAAe,iBACb,WACA,MACA,YACe;AACf,MAAI;AACF,UAAM;AAAA,MACJ,4BAA4B;AAAA,MAC5B,CAAC,WAAW,cAAc,mBAAmB,YAAY,kBAAkB;AAAA,MAC3E;AAAA,QACE,UAAU;AAAA,QACV,KAAK;AAAA,UACH,GAAG,QAAQ;AAAA,UACX,oBAAoB;AAAA,UACpB,yBAAyB,aAAa,eAAe;AAAA,UACrD,sBAAsB;AAAA,QACxB;AAAA,QACA,SAAS;AAAA,QACT,aAAa;AAAA,MACf;AAAA,IACF;AAAA,EACF,SAAS,OAAgB;AACvB,UAAM,IAAI,eAAe,YAAY,qBAAqB,QAAW;AAAA,MACnE,OAAO;AAAA,IACT,CAAC;AAAA,EACH;AACF;AAEA,eAAsB,iCACpB,WACA,MACgB;AAChB,QAAM,SAAS,UAAM,uBAAM,SAAS;AACpC,QAAM,cAAc,SAAS,cAAc,OAAO,YAAY,IAAI,OAAO,OAAO;AAEhF,MAAI,CAAC,eAAe,OAAO,eAAe,GAAG;AAC3C,UAAM,IAAI,eAAe,YAAY,mBAAmB;AAAA,EAC1D;AAEA,MAAI,QAAQ,aAAa,SAAS;AAChC,aAAS,UAAU,GAAG,UAAU,6BAA6B,WAAW,GAAG;AACzE,UAAI;AACF,cAAM,iBAAiB,WAAW,MAAM,KAAK;AAC7C,eAAO;AAAA,MACT,SAAS,OAAgB;AACvB,YAAI,YAAY,8BAA8B,EAAG,OAAM;AACvD,YAAI;AACJ,YAAI;AACF,oBAAU,UAAM,uBAAM,SAAS;AAAA,QACjC,QAAQ;AACN,gBAAM;AAAA,QACR;AACA,cAAM,WACJ,SAAS,cAAc,QAAQ,YAAY,IAAI,QAAQ,OAAO;AAChE,YACE,CAAC,YACD,QAAQ,eAAe,KACvB,QAAQ,QAAQ,OAAO,OACvB,QAAQ,QAAQ,OAAO,KACvB;AACA,gBAAM;AAAA,QACR;AACA,cAAM,IAAI,QAAc,CAAC,YAAY;AACnC,qBAAW,SAAS,8BAA8B,UAAU,EAAE;AAAA,QAChE,CAAC;AAAA,MACH;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,QAAM,MAAM,QAAQ,SAAS;AAC7B,MAAI,QAAQ,UAAa,OAAO,QAAQ,QAAQ,OAAO,OAAO,QAAW,GAAG;AAC1E,UAAM,IAAI,eAAe,YAAY,mBAAmB;AAAA,EAC1D;AAEA,SAAO;AACT;AAEA,eAAsB,qCACpB,WACe;AACf,MAAI,QAAQ,aAAa,SAAS;AAChC,UAAM,iBAAiB,WAAW,QAAQ,IAAI;AAAA,EAChD;AACF;AAEA,eAAe,2BAA2B,WAAkC;AAC1E,MAAI,QAAQ,aAAa,SAAS;AAChC,UAAM,iBAAiB,WAAW,aAAa,IAAI;AAAA,EACrD;AACF;AAEA,eAAe,0BACb,MACA,QACiB;AACjB,QAAM,YAAY,iBAAAA,QAAK,KAAK,MAAM,WAAW;AAC7C,MAAI,UAAU;AAEd,MAAI,QAAQ;AACV,QAAI;AACF,gBAAM,uBAAM,WAAW,EAAE,MAAM,IAAM,CAAC;AACtC,gBAAU;AAAA,IACZ,SAAS,OAAgB;AACvB,UAAK,MAAgC,SAAS,UAAU;AACtD,cAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,MAAI,QAAS,OAAM,2BAA2B,SAAS;AACvD,QAAM,iCAAiC,WAAW,WAAW;AAC7D,aAAO,0BAAS,SAAS;AAC3B;AAEA,eAAe,+BAA+B,QAAkC;AAC9E,QAAM,iBAAiB,QAAQ,IAAI;AAEnC,MAAI,mBAAmB,UAAa,CAAC,iBAAAA,QAAK,WAAW,cAAc,GAAG;AACpE,UAAM,IAAI,eAAe,YAAY,mBAAmB;AAAA,EAC1D;AAEA,QAAM,OAAO,kBAAkB,iBAAAA,QAAK,KAAK,eAAAC,QAAG,QAAQ,GAAG,WAAW,OAAO;AACzE,QAAM,YAAY,iBAAAD,QAAK,KAAK,MAAM,aAAa,2BAA2B;AAC1E,MAAI,UAAU;AAEd,MAAI,QAAQ;AACV,cAAW,UAAM,uBAAM,WAAW,EAAE,MAAM,KAAO,WAAW,KAAK,CAAC,MAAO;AAAA,EAC3E;AAEA,MAAI,QAAS,OAAM,2BAA2B,SAAS;AACvD,QAAM,iCAAiC,WAAW,WAAW;AAC7D,aAAO,0BAAS,SAAS;AAC3B;AAEA,eAAsB,uCACpB,QACiB;AACjB,QAAM,sBAAsB,QAAQ,IAAI;AAExC,MAAI,wBAAwB,UAAa,CAAC,iBAAAA,QAAK,WAAW,mBAAmB,GAAG;AAC9E,UAAM,IAAI,eAAe,YAAY,mBAAmB;AAAA,EAC1D;AAEA,MAAI,wBAAwB,QAAW;AACrC,QAAI;AACF,UAAI,QAAQ,aAAa,SAAS;AAChC,cAAM,iCAAiC,qBAAqB,WAAW;AAAA,MACzE;AACA,aAAO,MAAM,0BAA0B,qBAAqB,MAAM;AAAA,IACpE,SAAS,OAAgB;AACvB,UAAI,CAAC,UAAW,MAAgC,SAAS,UAAU;AACjE,cAAM,IAAI,eAAe,YAAY,iBAAiB;AAAA,MACxD;AAEA,YAAM;AAAA,IACR;AAAA,EACF;AAEA,MAAI,QAAQ,aAAa,SAAS;AAChC,QAAI;AACF,aAAO,MAAM,+BAA+B,MAAM;AAAA,IACpD,SAAS,OAAgB;AACvB,UAAI,CAAC,UAAW,MAAgC,SAAS,UAAU;AACjE,cAAM,IAAI,eAAe,YAAY,iBAAiB;AAAA,MACxD;AAEA,YAAM;AAAA,IACR;AAAA,EACF;AAEA,QAAM,MAAM,QAAQ,SAAS;AAC7B,MAAI,QAAQ,QAAW;AACrB,UAAM,IAAI,eAAe,YAAY,mBAAmB;AAAA,EAC1D;AAEA,QAAM,WAAW,iBAAAA,QAAK,KAAK,eAAAC,QAAG,OAAO,GAAG,aAAa,OAAO,GAAG,CAAC,EAAE;AAElE,MAAI,QAAQ;AACV,QAAI;AACF,gBAAM,uBAAM,UAAU,EAAE,MAAM,IAAM,CAAC;AAAA,IACvC,SAAS,OAAgB;AACvB,UAAK,MAAgC,SAAS,UAAU;AACtD,cAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,MAAI;AACF,UAAM,iCAAiC,UAAU,WAAW;AAAA,EAC9D,SAAS,OAAgB;AACvB,QAAI,CAAC,UAAW,MAAgC,SAAS,UAAU;AACjE,YAAM,IAAI,eAAe,YAAY,iBAAiB;AAAA,IACxD;AAEA,UAAM;AAAA,EACR;AAEA,aAAO,0BAAS,QAAQ;AAC1B;AAEA,eAAsB,iCAAiC,MAA+B;AACpF,QAAM,gBAAgB,UAAM,0BAAS,IAAI;AACzC,aAAO,+BAAW,QAAQ,EACvB,OAAO,GAAG,iCAAiC,KAAK,aAAa,EAAE,EAC/D,OAAO,KAAK;AACjB;","names":["import_zod","import_zod","import_zod","opaqueIdSchema","path","os"]}
|
|
1
|
+
{"version":3,"sources":["../src/external-agent-node.ts","../src/protocol/external-handoff.ts","../src/protocol/requests.ts","../src/model/annotation.ts","../src/model/agent.ts","../src/model/context-schema.ts","../src/model/element-instance.ts","../src/protocol/external-handoff-constants.ts","../src/errors/error-code.ts","../src/errors/spotpatch-error.ts"],"sourcesContent":["/// <reference types=\"node\" />\n\nimport { createHash } from \"node:crypto\";\nimport { execFile } from \"node:child_process\";\nimport type { Stats } from \"node:fs\";\nimport { lstat, mkdir, realpath } from \"node:fs/promises\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport { promisify } from \"node:util\";\n\nimport { z } from \"zod\";\n\nimport {\n EXTERNAL_HANDOFF_ACTIVE_ADAPTER_KINDS,\n EXTERNAL_HANDOFF_BROKER_PROTOCOL_VERSION,\n EXTERNAL_HANDOFF_FRAMEWORKS,\n EXTERNAL_HANDOFF_LIMITS,\n activeAdapterSummarySchema,\n dispatchSummarySchema,\n externalHandoffReportableDispatchPhaseSchema,\n externalHandoffSnapshotSchema,\n externalHandoffSummarySchema,\n type ActiveAdapterSummary,\n type DispatchSummary,\n type ExternalHandoffSnapshot,\n} from \"./protocol/external-handoff.js\";\nimport { ERROR_CODES } from \"./errors/error-code.js\";\nimport { SpotPatchError } from \"./errors/spotpatch-error.js\";\n\nexport const SPOTPATCH_BRIDGE_TOKEN_HEADER = \"X-SpotPatch-Bridge-Token\" as const;\nexport const SPOTPATCH_BRIDGE_PATHS = Object.freeze({\n status: \"/bridge/v1/status\",\n current: \"/bridge/v1/handoff/current\",\n wait: \"/bridge/v1/handoff/wait\",\n ack: \"/bridge/v1/handoff/ack\",\n activeClaim: \"/bridge/v1/active/claim\",\n activeHeartbeat: \"/bridge/v1/active/heartbeat\",\n activeReport: \"/bridge/v1/active/report\",\n activeRelease: \"/bridge/v1/active/release\",\n});\nexport const EXTERNAL_HANDOFF_PROJECT_KEY_SALT =\n \"spotpatch-external-agent-project-v1\" as const;\n\nconst execFileAsync = promisify(execFile);\nconst WINDOWS_ACL_COMMAND_TIMEOUT_MS = 30_000;\nconst WINDOWS_ACL_VERIFY_ATTEMPTS = 3;\nconst WINDOWS_ACL_RETRY_DELAY_MS = 25;\nconst WINDOWS_ACL_SCRIPT = String.raw`\n$ErrorActionPreference = 'Stop'\n$target = $env:SPOTPATCH_ACL_TARGET\n$kind = $env:SPOTPATCH_ACL_KIND\n$operation = $env:SPOTPATCH_ACL_OPERATION\n$identity = [System.Security.Principal.WindowsIdentity]::GetCurrent().User\n$allowed = @($identity.Value, 'S-1-5-18', 'S-1-5-32-544')\nif ($kind -eq 'directory') {\n $item = [System.IO.DirectoryInfo]::new($target)\n if ($operation -eq 'initialize') {\n $security = [System.Security.AccessControl.DirectorySecurity]::new()\n $security.SetOwner($identity)\n foreach ($sidValue in $allowed) {\n $sid = [System.Security.Principal.SecurityIdentifier]::new($sidValue)\n $rule = [System.Security.AccessControl.FileSystemAccessRule]::new(\n $sid,\n [System.Security.AccessControl.FileSystemRights]::FullControl,\n [System.Security.AccessControl.InheritanceFlags]'ContainerInherit, ObjectInherit',\n [System.Security.AccessControl.PropagationFlags]::None,\n [System.Security.AccessControl.AccessControlType]::Allow\n )\n [void]$security.AddAccessRule($rule)\n }\n $security.SetAccessRuleProtection($true, $false)\n $item.SetAccessControl($security)\n }\n $acl = $item.GetAccessControl(\n [System.Security.AccessControl.AccessControlSections]'Access, Owner'\n )\n} elseif ($kind -eq 'file') {\n $item = [System.IO.FileInfo]::new($target)\n if ($operation -eq 'initialize') {\n $security = [System.Security.AccessControl.FileSecurity]::new()\n $security.SetOwner($identity)\n foreach ($sidValue in $allowed) {\n $sid = [System.Security.Principal.SecurityIdentifier]::new($sidValue)\n $rule = [System.Security.AccessControl.FileSystemAccessRule]::new(\n $sid,\n [System.Security.AccessControl.FileSystemRights]::FullControl,\n [System.Security.AccessControl.AccessControlType]::Allow\n )\n [void]$security.AddAccessRule($rule)\n }\n $security.SetAccessRuleProtection($true, $false)\n $item.SetAccessControl($security)\n }\n $acl = $item.GetAccessControl(\n [System.Security.AccessControl.AccessControlSections]'Access, Owner'\n )\n} else {\n exit 10\n}\nif ($acl.GetOwner([System.Security.Principal.SecurityIdentifier]).Value -ne $identity.Value) {\n exit 11\n}\nforeach ($rule in $acl.GetAccessRules(\n $true,\n $true,\n [System.Security.Principal.SecurityIdentifier]\n)) {\n if (\n $rule.AccessControlType -eq [System.Security.AccessControl.AccessControlType]::Allow -and\n $allowed -notcontains $rule.IdentityReference.Value\n ) {\n exit 12\n }\n}\n`;\n\nconst opaqueIdSchema = z\n .string()\n .min(22)\n .max(128)\n .regex(/^[A-Za-z0-9_-]+$/u);\nconst projectKeySchema = z\n .string()\n .length(64)\n .regex(/^[a-f0-9]+$/u);\nconst loopbackEndpointSchema = z.url().refine((value) => {\n const match = /^http:\\/\\/127\\.0\\.0\\.1:([1-9][0-9]{0,4})$/u.exec(value);\n\n if (match?.[1] === undefined) {\n return false;\n }\n\n const port = Number(match[1]);\n return Number.isSafeInteger(port) && port <= 65_535;\n});\n\nexport const externalHandoffDescriptorSchema = z.strictObject({\n schemaVersion: z.literal(1),\n brokerProtocolVersion: z.literal(EXTERNAL_HANDOFF_BROKER_PROTOCOL_VERSION),\n projectKey: projectKeySchema,\n sessionId: opaqueIdSchema,\n framework: z.enum(EXTERNAL_HANDOFF_FRAMEWORKS),\n endpoint: loopbackEndpointSchema,\n bridgeToken: z\n .string()\n .min(43)\n .max(128)\n .regex(/^[A-Za-z0-9_-]+$/u),\n pid: z.number().int().positive(),\n createdAt: z.iso.datetime(),\n});\n\nexport const bridgeStatusRequestSchema = z.strictObject({});\nexport const bridgeCurrentRequestSchema = z.strictObject({\n cursor: opaqueIdSchema.optional(),\n});\nexport const bridgeWaitRequestSchema = z.strictObject({\n afterCursor: opaqueIdSchema.optional(),\n timeoutMs: z\n .number()\n .int()\n .positive()\n .max(EXTERNAL_HANDOFF_LIMITS.maximumWaitMs)\n .default(EXTERNAL_HANDOFF_LIMITS.defaultWaitMs),\n});\nexport const bridgeAckRequestSchema = z.strictObject({\n cursor: opaqueIdSchema,\n connectorInstanceId: opaqueIdSchema,\n});\nexport const bridgeActiveClaimRequestSchema = z.strictObject({\n adapterKind: z.enum(EXTERNAL_HANDOFF_ACTIVE_ADAPTER_KINDS),\n connectorInstanceId: opaqueIdSchema,\n});\nexport const bridgeActiveHeartbeatRequestSchema = z.strictObject({\n leaseToken: opaqueIdSchema,\n});\nexport const bridgeActiveReportRequestSchema = z.strictObject({\n leaseToken: opaqueIdSchema,\n cursor: opaqueIdSchema,\n phase: externalHandoffReportableDispatchPhaseSchema,\n});\nexport const bridgeActiveReleaseRequestSchema = z.strictObject({\n leaseToken: opaqueIdSchema,\n});\nexport const bridgeStatusSchema = z.strictObject({\n brokerProtocolVersion: z.literal(EXTERNAL_HANDOFF_BROKER_PROTOCOL_VERSION),\n projectKey: projectKeySchema,\n sessionId: opaqueIdSchema,\n framework: z.enum(EXTERNAL_HANDOFF_FRAMEWORKS),\n current: externalHandoffSummarySchema.nullable(),\n});\nexport const bridgeCurrentResultSchema = z.strictObject({\n outcome: z.literal(\"handoff\"),\n snapshot: externalHandoffSnapshotSchema,\n});\nexport const bridgeWaitResultSchema = z.discriminatedUnion(\"outcome\", [\n bridgeCurrentResultSchema,\n z.strictObject({ outcome: z.literal(\"timeout\") }),\n]);\nexport const bridgeAckResultSchema = z.strictObject({\n summary: externalHandoffSummarySchema,\n});\nexport const bridgeActiveClaimResultSchema = z.strictObject({\n leaseToken: opaqueIdSchema,\n heartbeatIntervalMs: z.literal(EXTERNAL_HANDOFF_LIMITS.activeHeartbeatIntervalMs),\n baselineCursor: opaqueIdSchema.nullable(),\n activeAdapter: activeAdapterSummarySchema,\n});\nexport const bridgeActiveStateResultSchema = z.strictObject({\n activeAdapter: activeAdapterSummarySchema.nullable(),\n dispatch: dispatchSummarySchema.nullable(),\n});\nexport const bridgeActiveHeartbeatResultSchema = bridgeActiveStateResultSchema;\nexport const bridgeActiveReportResultSchema = bridgeActiveStateResultSchema;\nexport const bridgeActiveReleaseResultSchema = bridgeActiveStateResultSchema;\n\nexport type ExternalHandoffDescriptor = z.infer<typeof externalHandoffDescriptorSchema>;\nexport type BridgeStatus = z.infer<typeof bridgeStatusSchema>;\nexport type BridgeWaitResult =\n | Readonly<{ outcome: \"handoff\"; snapshot: ExternalHandoffSnapshot }>\n | Readonly<{ outcome: \"timeout\" }>;\nexport interface BridgeActiveClaimResult {\n readonly leaseToken: string;\n readonly heartbeatIntervalMs: typeof EXTERNAL_HANDOFF_LIMITS.activeHeartbeatIntervalMs;\n readonly baselineCursor: string | null;\n readonly activeAdapter: ActiveAdapterSummary;\n}\nexport interface BridgeActiveStateResult {\n readonly activeAdapter: ActiveAdapterSummary | null;\n readonly dispatch: DispatchSummary | null;\n}\n\nfunction windowsPowerShellExecutable(): string {\n const systemRoot = process.env.SystemRoot ?? process.env.SYSTEMROOT;\n if (systemRoot === undefined || !path.win32.isAbsolute(systemRoot)) {\n throw new SpotPatchError(ERROR_CODES.BRIDGE_UNAUTHORIZED);\n }\n return path.win32.join(\n systemRoot,\n \"System32\",\n \"WindowsPowerShell\",\n \"v1.0\",\n \"powershell.exe\",\n );\n}\n\nasync function verifyWindowsAcl(\n candidate: string,\n kind: \"directory\" | \"file\",\n initialize: boolean,\n): Promise<void> {\n try {\n await execFileAsync(\n windowsPowerShellExecutable(),\n [\"-NoLogo\", \"-NoProfile\", \"-NonInteractive\", \"-Command\", WINDOWS_ACL_SCRIPT],\n {\n encoding: \"utf8\",\n env: {\n ...process.env,\n SPOTPATCH_ACL_KIND: kind,\n SPOTPATCH_ACL_OPERATION: initialize ? \"initialize\" : \"verify\",\n SPOTPATCH_ACL_TARGET: candidate,\n },\n timeout: WINDOWS_ACL_COMMAND_TIMEOUT_MS,\n windowsHide: true,\n },\n );\n } catch (error: unknown) {\n throw new SpotPatchError(ERROR_CODES.BRIDGE_UNAUTHORIZED, undefined, {\n cause: error,\n });\n }\n}\n\nexport async function assertPrivateExternalHandoffPath(\n candidate: string,\n kind: \"directory\" | \"file\",\n): Promise<Stats> {\n const status = await lstat(candidate);\n const correctKind = kind === \"directory\" ? status.isDirectory() : status.isFile();\n\n if (!correctKind || status.isSymbolicLink()) {\n throw new SpotPatchError(ERROR_CODES.BRIDGE_UNAUTHORIZED);\n }\n\n if (process.platform === \"win32\") {\n for (let attempt = 0; attempt < WINDOWS_ACL_VERIFY_ATTEMPTS; attempt += 1) {\n try {\n await verifyWindowsAcl(candidate, kind, false);\n return status;\n } catch (error: unknown) {\n if (attempt === WINDOWS_ACL_VERIFY_ATTEMPTS - 1) throw error;\n let current: Stats;\n try {\n current = await lstat(candidate);\n } catch {\n throw error;\n }\n const sameKind =\n kind === \"directory\" ? current.isDirectory() : current.isFile();\n if (\n !sameKind ||\n current.isSymbolicLink() ||\n current.dev !== status.dev ||\n current.ino !== status.ino\n ) {\n throw error;\n }\n await new Promise<void>((resolve) => {\n setTimeout(resolve, WINDOWS_ACL_RETRY_DELAY_MS * (attempt + 1));\n });\n }\n }\n return status;\n }\n\n const uid = process.getuid?.();\n if (uid === undefined || status.uid !== uid || (status.mode & 0o077) !== 0) {\n throw new SpotPatchError(ERROR_CODES.BRIDGE_UNAUTHORIZED);\n }\n\n return status;\n}\n\nexport async function initializePrivateExternalHandoffFile(\n candidate: string,\n): Promise<void> {\n if (process.platform === \"win32\") {\n await verifyWindowsAcl(candidate, \"file\", true);\n }\n}\n\nasync function initializeWindowsDirectory(directory: string): Promise<void> {\n if (process.platform === \"win32\") {\n await verifyWindowsAcl(directory, \"directory\", true);\n }\n}\n\nasync function ensurePrivateSubdirectory(\n base: string,\n create: boolean,\n): Promise<string> {\n const directory = path.join(base, \"spotpatch\");\n let created = false;\n\n if (create) {\n try {\n await mkdir(directory, { mode: 0o700 });\n created = true;\n } catch (error: unknown) {\n if ((error as NodeJS.ErrnoException).code !== \"EEXIST\") {\n throw error;\n }\n }\n }\n\n if (created) await initializeWindowsDirectory(directory);\n await assertPrivateExternalHandoffPath(directory, \"directory\");\n return realpath(directory);\n}\n\nasync function resolveWindowsRuntimeDirectory(create: boolean): Promise<string> {\n const configuredBase = process.env.LOCALAPPDATA;\n\n if (configuredBase !== undefined && !path.isAbsolute(configuredBase)) {\n throw new SpotPatchError(ERROR_CODES.BRIDGE_UNAUTHORIZED);\n }\n\n const base = configuredBase ?? path.join(os.homedir(), \"AppData\", \"Local\");\n const directory = path.join(base, \"SpotPatch\", \"external-agent-runtime-v1\");\n let created = false;\n\n if (create) {\n created = (await mkdir(directory, { mode: 0o700, recursive: true })) !== undefined;\n }\n\n if (created) await initializeWindowsDirectory(directory);\n await assertPrivateExternalHandoffPath(directory, \"directory\");\n return realpath(directory);\n}\n\nexport async function resolveExternalHandoffRuntimeDirectory(\n create: boolean,\n): Promise<string> {\n const xdgRuntimeDirectory = process.env.XDG_RUNTIME_DIR;\n\n if (xdgRuntimeDirectory !== undefined && !path.isAbsolute(xdgRuntimeDirectory)) {\n throw new SpotPatchError(ERROR_CODES.BRIDGE_UNAUTHORIZED);\n }\n\n if (xdgRuntimeDirectory !== undefined) {\n try {\n if (process.platform !== \"win32\") {\n await assertPrivateExternalHandoffPath(xdgRuntimeDirectory, \"directory\");\n }\n return await ensurePrivateSubdirectory(xdgRuntimeDirectory, create);\n } catch (error: unknown) {\n if (!create && (error as NodeJS.ErrnoException).code === \"ENOENT\") {\n throw new SpotPatchError(ERROR_CODES.SESSION_NOT_FOUND);\n }\n\n throw error;\n }\n }\n\n if (process.platform === \"win32\") {\n try {\n return await resolveWindowsRuntimeDirectory(create);\n } catch (error: unknown) {\n if (!create && (error as NodeJS.ErrnoException).code === \"ENOENT\") {\n throw new SpotPatchError(ERROR_CODES.SESSION_NOT_FOUND);\n }\n\n throw error;\n }\n }\n\n const uid = process.getuid?.();\n if (uid === undefined) {\n throw new SpotPatchError(ERROR_CODES.BRIDGE_UNAUTHORIZED);\n }\n\n const fallback = path.join(os.tmpdir(), `spotpatch-${String(uid)}`);\n\n if (create) {\n try {\n await mkdir(fallback, { mode: 0o700 });\n } catch (error: unknown) {\n if ((error as NodeJS.ErrnoException).code !== \"EEXIST\") {\n throw error;\n }\n }\n }\n\n try {\n await assertPrivateExternalHandoffPath(fallback, \"directory\");\n } catch (error: unknown) {\n if (!create && (error as NodeJS.ErrnoException).code === \"ENOENT\") {\n throw new SpotPatchError(ERROR_CODES.SESSION_NOT_FOUND);\n }\n\n throw error;\n }\n\n return realpath(fallback);\n}\n\nexport async function computeExternalHandoffProjectKey(root: string): Promise<string> {\n const canonicalRoot = await realpath(root);\n return createHash(\"sha256\")\n .update(`${EXTERNAL_HANDOFF_PROJECT_KEY_SALT}\\0${canonicalRoot}`)\n .digest(\"hex\");\n}\n","import { z } from \"zod\";\n\nimport type { SpotAnnotation } from \"../model/annotation.js\";\nimport { spotAnnotationRequestSchema } from \"./requests.js\";\nimport {\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_LIMITS,\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 ExternalHandoffState,\n} from \"./external-handoff-constants.js\";\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_LIMITS,\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 \"./external-handoff-constants.js\";\n\nconst opaqueIdSchema = z\n .string()\n .min(22)\n .max(128)\n .regex(/^[A-Za-z0-9_-]+$/u);\nconst isoTimestampSchema = z.iso.datetime();\nexport const externalHandoffReportableDispatchPhaseSchema = z.enum(\n EXTERNAL_HANDOFF_REPORTABLE_DISPATCH_PHASES,\n);\nconst externalHandoffPageSummarySchema = z.strictObject({\n origin: z.string().min(1).max(2_048),\n pathname: z.string().min(1).max(2_048),\n});\n\nexport const externalHandoffSummarySchema = z.strictObject({\n sessionId: opaqueIdSchema,\n framework: z.enum(EXTERNAL_HANDOFF_FRAMEWORKS),\n revision: z.number().int().positive(),\n cursor: opaqueIdSchema,\n targetCount: z.number().int().positive(),\n page: externalHandoffPageSummarySchema,\n publishedAt: isoTimestampSchema,\n expiresAt: isoTimestampSchema,\n state: z.enum(EXTERNAL_HANDOFF_STATES),\n pickupCount: z\n .number()\n .int()\n .nonnegative()\n .max(EXTERNAL_HANDOFF_LIMITS.maximumConnectorReceipts),\n pickedUpAt: isoTimestampSchema.optional(),\n});\n\nexport const externalHandoffSnapshotSchema = z.strictObject({\n schemaVersion: z.literal(EXTERNAL_HANDOFF_SNAPSHOT_SCHEMA_VERSION),\n cursor: opaqueIdSchema,\n session: z.strictObject({\n id: opaqueIdSchema,\n framework: z.enum(EXTERNAL_HANDOFF_FRAMEWORKS),\n }),\n revision: z.number().int().positive(),\n publishedAt: isoTimestampSchema,\n expiresAt: isoTimestampSchema,\n annotation: spotAnnotationRequestSchema,\n});\n\nexport const activeAdapterSummarySchema = z\n .strictObject({\n kind: z.enum(EXTERNAL_HANDOFF_ACTIVE_ADAPTER_KINDS),\n state: z.enum(EXTERNAL_HANDOFF_ACTIVE_ADAPTER_STATES),\n canDispatch: z.boolean(),\n connectedAt: isoTimestampSchema,\n updatedAt: isoTimestampSchema,\n })\n .superRefine((value, context) => {\n if (value.canDispatch !== (value.state === \"ready\")) {\n context.addIssue({\n code: \"custom\",\n message: \"canDispatch must match the ready state.\",\n path: [\"canDispatch\"],\n });\n }\n });\n\nexport const dispatchSummarySchema = z.strictObject({\n adapterKind: z.enum(EXTERNAL_HANDOFF_ACTIVE_ADAPTER_KINDS),\n revision: z.number().int().positive(),\n phase: z.enum(EXTERNAL_HANDOFF_DISPATCH_PHASES),\n updatedAt: isoTimestampSchema,\n});\n\nexport const externalHandoffCapabilityRequestSchema = z.strictObject({});\nexport const externalHandoffPublishRequestSchema = z.strictObject({\n requestId: opaqueIdSchema,\n annotation: spotAnnotationRequestSchema,\n});\nexport const externalHandoffStatusRequestSchema = z.strictObject({\n cursor: opaqueIdSchema.optional(),\n});\nexport const externalHandoffResolveDeliveryRequestSchema = z.strictObject({\n cursor: opaqueIdSchema,\n confirmation: z.literal(\"workspace-reviewed\"),\n});\nexport const externalHandoffCapabilitySchema = z.strictObject({\n enabled: z.literal(true),\n brokerReady: z.boolean(),\n activeWaitCount: z\n .number()\n .int()\n .nonnegative()\n .max(EXTERNAL_HANDOFF_LIMITS.maximumWaiters),\n snapshotSchemaVersion: z.literal(EXTERNAL_HANDOFF_SNAPSHOT_SCHEMA_VERSION),\n brokerProtocolVersion: z.literal(EXTERNAL_HANDOFF_BROKER_PROTOCOL_VERSION),\n activeAdapter: activeAdapterSummarySchema.nullable(),\n dispatch: dispatchSummarySchema.nullable(),\n});\nexport const externalHandoffPublishDeliverySchema = z.discriminatedUnion(\"mode\", [\n z.strictObject({ mode: z.literal(\"inbox\") }),\n z.strictObject({\n mode: z.literal(\"active\"),\n adapter: activeAdapterSummarySchema,\n dispatch: dispatchSummarySchema,\n }),\n]);\nexport const externalHandoffPublishResultSchema = z.strictObject({\n handoff: externalHandoffSummarySchema,\n delivery: externalHandoffPublishDeliverySchema,\n replayed: z.boolean(),\n});\nexport const externalHandoffStatusResultSchema = z.strictObject({\n handoff: externalHandoffSummarySchema,\n activeAdapter: activeAdapterSummarySchema.nullable(),\n dispatch: dispatchSummarySchema.nullable(),\n});\n\nexport interface ExternalHandoffSummary {\n readonly sessionId: string;\n readonly framework: ExternalHandoffFramework;\n readonly revision: number;\n readonly cursor: string;\n readonly targetCount: number;\n readonly page: Readonly<{ origin: string; pathname: string }>;\n readonly publishedAt: string;\n readonly expiresAt: string;\n readonly state: ExternalHandoffState;\n readonly pickupCount: number;\n readonly pickedUpAt?: string | undefined;\n}\n\nexport interface ExternalHandoffSnapshot {\n readonly schemaVersion: typeof EXTERNAL_HANDOFF_SNAPSHOT_SCHEMA_VERSION;\n readonly cursor: string;\n readonly session: Readonly<{\n id: string;\n framework: ExternalHandoffFramework;\n }>;\n readonly revision: number;\n readonly publishedAt: string;\n readonly expiresAt: string;\n readonly annotation: SpotAnnotation;\n}\n\nexport interface ActiveAdapterSummary {\n readonly kind: ExternalHandoffActiveAdapterKind;\n readonly state: ExternalHandoffActiveAdapterState;\n readonly canDispatch: boolean;\n readonly connectedAt: string;\n readonly updatedAt: string;\n}\n\nexport interface DispatchSummary {\n readonly adapterKind: ExternalHandoffActiveAdapterKind;\n readonly revision: number;\n readonly phase: ExternalHandoffDispatchPhase;\n readonly updatedAt: string;\n}\n\nexport type ExternalHandoffPublishDelivery =\n | Readonly<{ mode: \"inbox\" }>\n | Readonly<{\n mode: \"active\";\n adapter: ActiveAdapterSummary;\n dispatch: DispatchSummary;\n }>;\n\nexport interface ExternalHandoffPublishResult {\n readonly handoff: ExternalHandoffSummary;\n readonly delivery: ExternalHandoffPublishDelivery;\n readonly replayed: boolean;\n}\n\nexport interface ExternalHandoffStatusResult {\n readonly handoff: ExternalHandoffSummary;\n readonly activeAdapter: ActiveAdapterSummary | null;\n readonly dispatch: DispatchSummary | null;\n}\n\nexport interface ExternalHandoffCapability {\n readonly enabled: true;\n readonly brokerReady: boolean;\n readonly activeWaitCount: number;\n readonly snapshotSchemaVersion: typeof EXTERNAL_HANDOFF_SNAPSHOT_SCHEMA_VERSION;\n readonly brokerProtocolVersion: typeof EXTERNAL_HANDOFF_BROKER_PROTOCOL_VERSION;\n readonly activeAdapter: ActiveAdapterSummary | null;\n readonly dispatch: DispatchSummary | null;\n}\n\nexport type ExternalHandoffPublishRequest = z.infer<\n typeof externalHandoffPublishRequestSchema\n>;\nexport type ExternalHandoffStatusRequest = z.infer<\n typeof externalHandoffStatusRequestSchema\n>;\nexport type ExternalHandoffResolveDeliveryRequest = z.infer<\n typeof externalHandoffResolveDeliveryRequestSchema\n>;\n","import { z } from \"zod\";\n\nimport { MAX_ANNOTATION_TARGETS, type SpotAnnotation } from \"../model/annotation.js\";\nimport { AGENT_APPLY_MODES, type AgentApplyMode } from \"../model/agent.js\";\nimport { spotAnnotationSchema } from \"../model/context-schema.js\";\n\nexport {\n pageContextSchema as pageContextRequestSchema,\n spotAnnotationSchema as spotAnnotationRequestSchema,\n spotTargetContextSchema as spotTargetContextRequestSchema,\n} from \"../model/context-schema.js\";\n\nexport const runtimeBootstrapRequestSchema = z.strictObject({});\n\nconst sourceCoordinatesSchema = z.strictObject({\n fileId: z.string().min(1).max(128),\n line: z.number().int().positive(),\n column: z.number().int().positive(),\n});\n\nexport const sourceContextRequestSchema = sourceCoordinatesSchema\n .extend({\n maxLines: z.number().int().positive(),\n })\n .strict();\n\nexport const openEditorRequestSchema = sourceCoordinatesSchema.strict();\n\nconst dataFlowSourceCoordinatesRequestSchema = sourceCoordinatesSchema\n .extend({\n schemaVersion: z.literal(1),\n sourceVersion: z.string().min(1).max(128).optional(),\n })\n .strict();\n\nconst dataFlowComponentIdentityRequestSchema = z.strictObject({\n schemaVersion: z.literal(1),\n componentSourceId: z.string().min(1).max(128),\n sourceVersion: z.string().min(1).max(128),\n});\n\nexport const dataFlowComponentReportRequestSchema = z.union([\n dataFlowSourceCoordinatesRequestSchema,\n dataFlowComponentIdentityRequestSchema,\n]);\n\nexport const dataFlowPageReportRequestSchema = z.strictObject({\n schemaVersion: z.literal(1),\n targets: z\n .array(dataFlowComponentReportRequestSchema)\n .min(1)\n .max(MAX_ANNOTATION_TARGETS),\n});\n\nconst profileIdSchema = z\n .string()\n .min(1)\n .max(64)\n .regex(/^[A-Za-z0-9][A-Za-z0-9._-]*$/);\n\nexport const agentCapabilityRequestSchema = z.strictObject({\n providerProfileId: profileIdSchema,\n modelProfileId: profileIdSchema,\n});\n\nexport const agentWorkspaceHealthRequestSchema = z.strictObject({});\n\nexport const agentJobCreateRequestSchema = z.strictObject({\n annotation: spotAnnotationSchema,\n applyMode: z.enum(AGENT_APPLY_MODES).optional(),\n providerProfileId: profileIdSchema,\n modelProfileId: profileIdSchema,\n providerDataConsent: z.literal(true),\n trustedFastModeConsent: z.literal(true).optional(),\n workingTreeMode: z\n .enum([\"require-clean\", \"include-local-changes\"])\n .default(\"require-clean\"),\n});\n\nexport const agentJobActionRequestSchema = z.strictObject({});\n\nexport type SourceContextRequest = z.infer<typeof sourceContextRequestSchema>;\nexport type RuntimeBootstrapRequest = z.infer<typeof runtimeBootstrapRequestSchema>;\nexport type OpenEditorRequest = z.infer<typeof openEditorRequestSchema>;\nexport type DataFlowComponentReportRequest = z.infer<\n typeof dataFlowComponentReportRequestSchema\n>;\nexport type DataFlowPageReportRequest = z.infer<typeof dataFlowPageReportRequestSchema>;\nexport type AgentCapabilityRequest = z.infer<typeof agentCapabilityRequestSchema>;\nexport interface AgentJobCreateRequest {\n readonly annotation: SpotAnnotation;\n readonly applyMode?: AgentApplyMode;\n readonly providerProfileId: string;\n readonly modelProfileId: string;\n readonly providerDataConsent: true;\n readonly trustedFastModeConsent?: true;\n readonly workingTreeMode: \"require-clean\" | \"include-local-changes\";\n}\n","import type { CodeContext } from \"./code-context.js\";\nimport type { ElementInstanceContext } from \"./element-instance.js\";\nimport type { ReactContext, SourceRef } from \"./source-ref.js\";\nimport type { StyleContext } from \"./style-context.js\";\n\nexport interface PageContext {\n readonly url: string;\n readonly pathname: string;\n readonly title: string;\n readonly viewportWidth: number;\n readonly viewportHeight: number;\n readonly devicePixelRatio: number;\n}\n\nexport interface ElementContext {\n readonly instance?: ElementInstanceContext;\n readonly tagName: string;\n readonly selector: string;\n readonly sanitizedHtml: string;\n readonly textPreview?: string;\n readonly role?: string;\n readonly rect: Readonly<{\n x: number;\n y: number;\n width: number;\n height: number;\n }>;\n}\n\n/** Protocol hard limit. Runtime configuration may choose a smaller limit. */\nexport const MAX_ANNOTATION_TARGETS = 20;\n\n/** Each target owns its requested change; the UI enforces the same bound. */\nexport const MAX_TARGET_INSTRUCTION_CHARACTERS = 2_000;\n\n/** Keeps the complete, atomic user intent within the prompt and request budgets. */\nexport const MAX_ANNOTATION_INSTRUCTION_CHARACTERS = 4_000;\n\nexport const SPOTPATCH_LOCALES = Object.freeze([\"en-US\", \"zh-CN\"] as const);\nexport type SpotPatchLocale = (typeof SPOTPATCH_LOCALES)[number];\nexport const SPOTPATCH_LOCALE_PREFERENCES = Object.freeze([\n \"auto\",\n ...SPOTPATCH_LOCALES,\n] as const);\nexport type SpotPatchLocalePreference = (typeof SPOTPATCH_LOCALE_PREFERENCES)[number];\n\nexport interface SpotTargetContext {\n readonly instruction: string;\n readonly page?: Readonly<PageContext>;\n readonly source: SourceRef;\n readonly react: ReactContext;\n readonly element: ElementContext;\n readonly styles: StyleContext;\n readonly code?: CodeContext;\n readonly warnings: readonly string[];\n}\n\nexport interface SpotAnnotation {\n readonly schemaVersion: 3;\n readonly id: string;\n readonly locale: SpotPatchLocale;\n readonly page: Readonly<PageContext>;\n readonly targets: readonly SpotTargetContext[];\n readonly createdAt: string;\n}\n","import type { ErrorCode } from \"../errors/error-code.js\";\n\nexport type AiProviderProtocol = \"responses\" | \"chat-completions\";\nexport type AiProviderAuthentication = \"bearer\" | \"x-api-key\";\nexport const AGENT_APPLY_MODES = Object.freeze([\n \"review\",\n \"auto\",\n \"trusted-auto\",\n] as const);\nexport type AgentApplyMode = (typeof AGENT_APPLY_MODES)[number];\nexport type AgentWorkingTreeMode = \"require-clean\" | \"include-local-changes\";\n\nexport interface AiModelProfile {\n readonly label: string;\n readonly model: string;\n}\n\nexport interface OpenAICompatibleProviderOptions {\n readonly type: \"openai-compatible\";\n readonly label: string;\n readonly protocol: AiProviderProtocol;\n readonly authentication?: AiProviderAuthentication;\n readonly baseURL: string;\n readonly apiKeyEnv: string;\n readonly models: Readonly<Record<string, AiModelProfile>>;\n readonly defaultModel: string;\n}\n\nexport interface AgentCheckDefinition {\n readonly label: string;\n readonly command: string;\n readonly args?: readonly string[];\n readonly required?: boolean;\n readonly timeoutMs?: number;\n}\n\nexport interface AgentLimits {\n readonly maxTurns: number;\n readonly maxToolCalls: number;\n readonly maxChangedFiles: number;\n readonly maxDiffBytes: number;\n readonly maxReadBytesPerFile: number;\n readonly maxToolOutputCharacters: number;\n readonly maxProviderResponseBytes: number;\n readonly providerConnectTimeoutMs: number;\n readonly providerFirstByteTimeoutMs: number;\n readonly providerIdleTimeoutMs: number;\n readonly checkTimeoutMs: number;\n readonly jobTimeoutMs: number;\n}\n\nexport const DEFAULT_AGENT_LIMITS = Object.freeze({\n maxTurns: 20,\n maxToolCalls: 80,\n maxChangedFiles: 20,\n maxDiffBytes: 512_000,\n maxReadBytesPerFile: 256_000,\n maxToolOutputCharacters: 40_000,\n maxProviderResponseBytes: 2_000_000,\n providerConnectTimeoutMs: 15_000,\n providerFirstByteTimeoutMs: 30_000,\n providerIdleTimeoutMs: 60_000,\n checkTimeoutMs: 120_000,\n jobTimeoutMs: 600_000,\n} satisfies AgentLimits);\n\nexport interface AiExecutionOptions {\n readonly isolation?: \"git-worktree\";\n readonly applyMode?: AgentApplyMode;\n readonly checks?: Readonly<Record<string, AgentCheckDefinition>>;\n readonly limits?: Partial<AgentLimits>;\n}\n\nexport interface AiOptions {\n readonly providers: Readonly<Record<string, OpenAICompatibleProviderOptions>>;\n readonly defaultProvider: string;\n readonly execution?: AiExecutionOptions;\n}\n\nexport interface ResolvedAiModelProfile extends AiModelProfile {\n readonly id: string;\n}\n\nexport interface ResolvedOpenAICompatibleProviderOptions {\n readonly id: string;\n readonly type: \"openai-compatible\";\n readonly label: string;\n readonly protocol: AiProviderProtocol;\n readonly authentication: AiProviderAuthentication;\n readonly baseURL: string;\n readonly apiKeyEnv: string;\n readonly models: Readonly<Record<string, ResolvedAiModelProfile>>;\n readonly defaultModel: string;\n}\n\nexport interface ResolvedAgentCheckDefinition {\n readonly id: string;\n readonly label: string;\n readonly command: string;\n readonly args: readonly string[];\n readonly required: boolean;\n readonly timeoutMs: number;\n}\n\nexport interface ResolvedAiExecutionOptions {\n readonly isolation: \"git-worktree\";\n readonly applyMode: AgentApplyMode;\n readonly checks: Readonly<Record<string, ResolvedAgentCheckDefinition>>;\n readonly limits: Readonly<AgentLimits>;\n}\n\nexport interface ResolvedAiOptions {\n readonly providers: Readonly<Record<string, ResolvedOpenAICompatibleProviderOptions>>;\n readonly defaultProvider: string;\n readonly execution: ResolvedAiExecutionOptions;\n}\n\nexport interface RuntimeAiModelProfile {\n readonly id: string;\n readonly label: string;\n}\n\nexport interface RuntimeAiProviderProfile {\n readonly id: string;\n readonly label: string;\n readonly protocol: AiProviderProtocol;\n readonly models: readonly RuntimeAiModelProfile[];\n readonly defaultModel: string;\n}\n\nexport type RuntimeAiConfig =\n | Readonly<{ enabled: false }>\n | Readonly<{\n enabled: true;\n providers: readonly RuntimeAiProviderProfile[];\n defaultProvider: string;\n applyMode: AgentApplyMode;\n }>;\n\nexport const AGENT_JOB_STATUSES = Object.freeze([\n \"queued\",\n \"preparing\",\n \"running\",\n \"validating\",\n \"awaiting-review\",\n \"applying\",\n \"applied\",\n \"completed\",\n \"cancelling\",\n \"cancelled\",\n \"reverting\",\n \"reverted\",\n \"failed\",\n] as const);\n\nexport type AgentJobStatus = (typeof AGENT_JOB_STATUSES)[number];\n\nexport const AGENT_CAPABILITY_STATES = Object.freeze([\n \"unknown\",\n \"probing\",\n \"agent-ready\",\n \"prompt-only\",\n \"unavailable\",\n] as const);\n\nexport type AgentCapabilityState = (typeof AGENT_CAPABILITY_STATES)[number];\n\nexport interface AgentCapabilitySnapshot {\n readonly providerProfileId: string;\n readonly providerLabel: string;\n readonly modelProfileId: string;\n readonly modelLabel: string;\n readonly protocol: AiProviderProtocol;\n readonly state: AgentCapabilityState;\n readonly authenticated: boolean;\n readonly modelAvailable: boolean;\n readonly toolCalling: boolean;\n readonly toolResultContinuation: boolean;\n readonly streaming: boolean;\n readonly checkedAt?: string;\n readonly errorCode?: ErrorCode;\n}\n\nexport const AGENT_WORKSPACE_STATES = Object.freeze([\n \"ready\",\n \"consent-required\",\n \"blocked\",\n] as const);\n\nexport const AGENT_WORKSPACE_SNAPSHOT_LIMITS = Object.freeze({\n maxUntrackedFiles: 1_000,\n maxUntrackedBytes: 20 * 1024 * 1024,\n});\n\nexport type AgentWorkspaceState = (typeof AGENT_WORKSPACE_STATES)[number];\n\nexport interface AgentWorkspaceChangeSummary {\n readonly staged: number;\n readonly unstaged: number;\n readonly untracked: number;\n readonly conflicted: number;\n readonly total: number;\n}\n\nexport interface AgentWorkspaceHealthSnapshot {\n readonly state: AgentWorkspaceState;\n readonly checkedAt: string;\n readonly changes: AgentWorkspaceChangeSummary;\n readonly canIncludeLocalChanges: boolean;\n readonly errorCode?: ErrorCode;\n}\n\nexport const AGENT_FILE_CHANGE_KINDS = Object.freeze([\n \"added\",\n \"modified\",\n \"deleted\",\n] as const);\n\nexport type AgentFileChangeKind = (typeof AGENT_FILE_CHANGE_KINDS)[number];\n\nexport const AGENT_CHECK_STATUSES = Object.freeze([\n \"passed\",\n \"failed\",\n \"cancelled\",\n \"timed-out\",\n] as const);\n\nexport type AgentCheckStatus = (typeof AGENT_CHECK_STATUSES)[number];\n\nexport interface AgentChangedFile {\n readonly relativePath: string;\n readonly kind: AgentFileChangeKind;\n readonly additions: number;\n readonly deletions: number;\n}\n\nexport interface AgentCheckResult {\n readonly checkId: string;\n readonly label: string;\n readonly status: AgentCheckStatus;\n readonly durationMs: number;\n readonly exitCode?: number;\n readonly output: string;\n}\n\nexport interface AgentJobSnapshot {\n readonly jobId: string;\n readonly status: AgentJobStatus;\n readonly providerProfileId: string;\n readonly providerLabel: string;\n readonly modelProfileId: string;\n readonly modelLabel: string;\n readonly phaseMessage: string;\n readonly createdAt: string;\n readonly updatedAt: string;\n readonly canCancel: boolean;\n readonly canApply: boolean;\n readonly canRevert: boolean;\n readonly errorCode?: ErrorCode;\n}\n\nexport interface AgentJobResult {\n readonly jobId: string;\n readonly summary: string;\n readonly diff: string;\n readonly files: readonly AgentChangedFile[];\n readonly checks: readonly AgentCheckResult[];\n}\n\nexport interface AgentJobResultResponse {\n readonly snapshot: AgentJobSnapshot;\n readonly result?: AgentJobResult;\n}\n","import { z } from \"zod\";\nimport {\n ELEMENT_INSTANCE_LIMITS,\n ELEMENT_INSTANCE_STATES,\n} from \"./element-instance.js\";\n\nimport {\n MAX_ANNOTATION_INSTRUCTION_CHARACTERS,\n MAX_ANNOTATION_TARGETS,\n MAX_TARGET_INSTRUCTION_CHARACTERS,\n SPOTPATCH_LOCALES,\n} from \"./annotation.js\";\n\nconst boundedString = (maximum: number): z.ZodString => z.string().max(maximum);\n\nexport const elementInstanceContextSchema = z.strictObject({\n id: z\n .string()\n .min(1)\n .max(ELEMENT_INSTANCE_LIMITS.idCharacters)\n .regex(/^[A-Za-z0-9_-]+$/u),\n state: z.enum(ELEMENT_INSTANCE_STATES),\n selectorStatus: z.enum([\"unique-at-capture\", \"unavailable\"]),\n label: boundedString(ELEMENT_INSTANCE_LIMITS.labelCharacters),\n context: boundedString(ELEMENT_INSTANCE_LIMITS.contextCharacters),\n});\n\nexport const sourceRefSchema = z.strictObject({\n fileId: boundedString(128).optional(),\n relativePath: boundedString(1_024).optional(),\n line: z.number().int().positive().optional(),\n column: z.number().int().positive().optional(),\n origin: z.enum([\"jsx-host\", \"astro-host\", \"react-fiber\", \"dom-ancestor\", \"none\"]),\n confidence: z.enum([\"exact\", \"probable\", \"approximate\", \"unknown\"]),\n});\n\nexport const matchedStyleRuleSchema = z.strictObject({\n selector: boundedString(2_048),\n declarations: boundedString(8_192),\n source: boundedString(1_024).optional(),\n media: boundedString(1_024).optional(),\n});\n\nexport const codeContextSchema = z.strictObject({\n relativePath: boundedString(1_024),\n language: z.enum([\"tsx\", \"jsx\", \"astro\"]),\n startLine: z.number().int().positive(),\n endLine: z.number().int().positive(),\n excerpt: boundedString(16_000),\n boundary: z.enum([\"component\", \"nearby-lines\"]),\n});\n\nexport const pageContextSchema = z.strictObject({\n url: boundedString(2_048),\n pathname: boundedString(2_048),\n title: boundedString(1_024),\n viewportWidth: z.number().nonnegative(),\n viewportHeight: z.number().nonnegative(),\n devicePixelRatio: z.number().positive(),\n});\n\nexport const spotTargetContextSchema = z.strictObject({\n instruction: z.string().trim().min(1).max(MAX_TARGET_INSTRUCTION_CHARACTERS),\n page: pageContextSchema.optional(),\n source: sourceRefSchema,\n react: z.strictObject({\n supported: z.boolean(),\n version: boundedString(64).optional(),\n componentName: boundedString(256).optional(),\n componentSourceId: boundedString(128).optional(),\n sourceVersion: boundedString(128).optional(),\n componentStack: z.array(boundedString(256)).max(64),\n source: sourceRefSchema.optional(),\n }),\n element: z.strictObject({\n instance: elementInstanceContextSchema.optional(),\n tagName: boundedString(128),\n selector: boundedString(2_048),\n sanitizedHtml: boundedString(8_192),\n textPreview: boundedString(2_048).optional(),\n role: boundedString(256).optional(),\n rect: z.strictObject({\n x: z.number(),\n y: z.number(),\n width: z.number().nonnegative(),\n height: z.number().nonnegative(),\n }),\n }),\n styles: z.strictObject({\n classNames: z.array(boundedString(512)).max(256),\n inlineStyle: boundedString(8_192).optional(),\n matchedRules: z.array(matchedStyleRuleSchema).max(256),\n computed: z.record(boundedString(256), boundedString(2_048)),\n warnings: z.array(boundedString(1_024)).max(64),\n }),\n code: codeContextSchema.optional(),\n warnings: z.array(boundedString(1_024)).max(64),\n});\n\nexport const spotAnnotationSchema = z\n .strictObject({\n schemaVersion: z.literal(3),\n id: boundedString(128),\n locale: z.enum(SPOTPATCH_LOCALES),\n page: pageContextSchema,\n targets: z.array(spotTargetContextSchema).min(1).max(MAX_ANNOTATION_TARGETS),\n createdAt: z.iso.datetime(),\n })\n .superRefine((annotation, context) => {\n const total = annotation.targets.reduce(\n (characters, target) => characters + target.instruction.length,\n 0,\n );\n if (total > MAX_ANNOTATION_INSTRUCTION_CHARACTERS) {\n context.addIssue({\n code: \"custom\",\n message: \"Combined target instructions exceed the annotation limit.\",\n path: [\"targets\"],\n });\n }\n });\n","/** Capture evidence is framework-neutral and never grants source access. */\nexport const ELEMENT_INSTANCE_LIMITS = Object.freeze({\n idCharacters: 128,\n contextCharacters: 1_200,\n labelCharacters: 160,\n selectorCharacters: 2_048,\n ancestorDepth: 8,\n locatorDepth: 32,\n});\n\nexport const ELEMENT_INSTANCE_STATES = [\n \"captured\",\n \"changed\",\n \"detached\",\n \"restored\",\n] as const;\n\nexport const ELEMENT_INSTANCE_HINT_ATTRIBUTE = \"data-spotpatch-instance\";\n\nexport interface ElementInstanceContext {\n /** Opaque capture identity, not a framework key or a business record ID. */\n readonly id: string;\n readonly state: (typeof ELEMENT_INSTANCE_STATES)[number];\n readonly selectorStatus: \"unique-at-capture\" | \"unavailable\";\n readonly label: string;\n /** Sanitized nearby DOM scope; it is not a proven component boundary. */\n readonly context: string;\n}\n\nexport const INSTANCE_SELECTION_INSTRUCTIONS =\n \"Selected targets can be different rendered instances of the same source. Preserve each target and its instruction even when source locations match. Instance IDs identify captures, not business records. Selectors are capture-time evidence, never stable record IDs. Nearby DOM context is not a proven component boundary. Changed, detached, or restored instances are historical snapshots; verify their identity before changing code. Follow the requested scope: a selected instance does not by itself authorize changes to every instance or imply instance-only changes. For an instance-only request, establish the corresponding record/condition and check the shared component's impact; if evidence is insufficient, explain what is missing rather than guessing.\";\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 ERROR_CODES = {\n INVALID_REQUEST: \"INVALID_REQUEST\",\n INVALID_TOKEN: \"INVALID_TOKEN\",\n ORIGIN_NOT_ALLOWED: \"ORIGIN_NOT_ALLOWED\",\n SOURCE_NOT_FOUND: \"SOURCE_NOT_FOUND\",\n SOURCE_OUTSIDE_ROOT: \"SOURCE_OUTSIDE_ROOT\",\n SOURCE_TOO_LARGE: \"SOURCE_TOO_LARGE\",\n EDITOR_OPEN_FAILED: \"EDITOR_OPEN_FAILED\",\n DATA_FLOW_DISABLED: \"DATA_FLOW_DISABLED\",\n DATA_FLOW_SOURCE_STALE: \"DATA_FLOW_SOURCE_STALE\",\n DATA_FLOW_ANALYSIS_CANCELLED: \"DATA_FLOW_ANALYSIS_CANCELLED\",\n AI_DISABLED: \"AI_DISABLED\",\n PROVIDER_NOT_CONFIGURED: \"PROVIDER_NOT_CONFIGURED\",\n PROVIDER_AUTH_FAILED: \"PROVIDER_AUTH_FAILED\",\n PROVIDER_PROTOCOL_UNSUPPORTED: \"PROVIDER_PROTOCOL_UNSUPPORTED\",\n MODEL_NOT_ALLOWED: \"MODEL_NOT_ALLOWED\",\n MODEL_TOOL_CALL_UNSUPPORTED: \"MODEL_TOOL_CALL_UNSUPPORTED\",\n PROVIDER_RATE_LIMITED: \"PROVIDER_RATE_LIMITED\",\n AGENT_BUSY: \"AGENT_BUSY\",\n AGENT_LIMIT_EXCEEDED: \"AGENT_LIMIT_EXCEEDED\",\n AGENT_CANCELLED: \"AGENT_CANCELLED\",\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 BRIDGE_UNAUTHORIZED: \"BRIDGE_UNAUTHORIZED\",\n BRIDGE_PROTOCOL_MISMATCH: \"BRIDGE_PROTOCOL_MISMATCH\",\n BRIDGE_BUSY: \"BRIDGE_BUSY\",\n EXTERNAL_AGENT_BUSY: \"EXTERNAL_AGENT_BUSY\",\n ACTIVE_ADAPTER_CONFLICT: \"ACTIVE_ADAPTER_CONFLICT\",\n ACTIVE_ADAPTER_LEASE_INVALID: \"ACTIVE_ADAPTER_LEASE_INVALID\",\n ACTIVE_DISPATCH_INVALID: \"ACTIVE_DISPATCH_INVALID\",\n SESSION_NOT_FOUND: \"SESSION_NOT_FOUND\",\n SESSION_AMBIGUOUS: \"SESSION_AMBIGUOUS\",\n SESSION_CLOSED: \"SESSION_CLOSED\",\n WORKTREE_DIRTY: \"WORKTREE_DIRTY\",\n WORKTREE_NOT_REPOSITORY: \"WORKTREE_NOT_REPOSITORY\",\n WORKTREE_OPERATION_IN_PROGRESS: \"WORKTREE_OPERATION_IN_PROGRESS\",\n WORKTREE_CONFLICTED: \"WORKTREE_CONFLICTED\",\n WORKTREE_LOCAL_CHANGES_TOO_LARGE: \"WORKTREE_LOCAL_CHANGES_TOO_LARGE\",\n WORKTREE_UNTRACKED_UNSUPPORTED: \"WORKTREE_UNTRACKED_UNSUPPORTED\",\n WORKTREE_LOCAL_CHANGES_UNSUPPORTED: \"WORKTREE_LOCAL_CHANGES_UNSUPPORTED\",\n TOOL_DENIED: \"TOOL_DENIED\",\n TOOL_INPUT_INVALID: \"TOOL_INPUT_INVALID\",\n TOOL_ARGUMENTS_INVALID: \"TOOL_ARGUMENTS_INVALID\",\n TOOL_CALL_ID_CONFLICT: \"TOOL_CALL_ID_CONFLICT\",\n TOOL_PATH_DENIED: \"TOOL_PATH_DENIED\",\n PATCH_REJECTED: \"PATCH_REJECTED\",\n VALIDATION_FAILED: \"VALIDATION_FAILED\",\n APPLY_CONFLICT: \"APPLY_CONFLICT\",\n INTERNAL_ERROR: \"INTERNAL_ERROR\",\n} as const;\n\nexport const CONTEXTUAL_ASK_ERROR_CODES = Object.freeze([\n \"ASK_DISABLED\",\n \"ASK_SELECTION_REQUIRED\",\n \"ASK_SELECTION_STALE\",\n \"ASK_QUESTION_INVALID\",\n \"ASK_EXECUTOR_UNAVAILABLE\",\n \"ASK_TIMEOUT\",\n \"ASK_CONSENT_REQUIRED\",\n \"ASK_BUSY\",\n \"ASK_IDEMPOTENCY_CONFLICT\",\n \"ASK_SOURCE_SCOPE_DENIED\",\n \"ASK_LIMIT_EXCEEDED\",\n \"ASK_ANSWER_INVALID\",\n \"ASK_WRITE_ATTEMPTED\",\n \"ASK_CANCELLED\",\n \"ASK_RESULT_EXPIRED\",\n \"ASK_PROTOCOL_INCOMPATIBLE\",\n] as const);\n\nexport type ContextualAskErrorCode = (typeof CONTEXTUAL_ASK_ERROR_CODES)[number];\n\nexport type ErrorCode = (typeof ERROR_CODES)[keyof typeof ERROR_CODES];\n\nexport const ERROR_CODE_VALUES = Object.freeze(Object.values(ERROR_CODES));\n\nexport function isErrorCode(value: unknown): value is ErrorCode {\n return (\n typeof value === \"string\" &&\n (ERROR_CODE_VALUES as readonly string[]).includes(value)\n );\n}\n","import type { ErrorCode } from \"./error-code.js\";\n\nexport class SpotPatchError extends Error {\n readonly code: ErrorCode;\n\n constructor(code: ErrorCode, message = code, options?: ErrorOptions) {\n super(message, options);\n this.name = \"SpotPatchError\";\n this.code = code;\n }\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;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,yBAA2B;AAC3B,gCAAyB;AAEzB,sBAAuC;AACvC,qBAAe;AACf,uBAAiB;AACjB,uBAA0B;AAE1B,IAAAA,cAAkB;;;ACVlB,IAAAC,cAAkB;;;ACAlB,IAAAC,cAAkB;;;AC8BX,IAAM,yBAAyB;AAG/B,IAAM,oCAAoC;AAG1C,IAAM,wCAAwC;AAE9C,IAAM,oBAAoB,OAAO,OAAO,CAAC,SAAS,OAAO,CAAU;AAEnE,IAAM,+BAA+B,OAAO,OAAO;AAAA,EACxD;AAAA,EACA,GAAG;AACL,CAAU;;;ACvCH,IAAM,oBAAoB,OAAO,OAAO;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AACF,CAAU;AA2CH,IAAM,uBAAuB,OAAO,OAAO;AAAA,EAChD,UAAU;AAAA,EACV,cAAc;AAAA,EACd,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd,qBAAqB;AAAA,EACrB,yBAAyB;AAAA,EACzB,0BAA0B;AAAA,EAC1B,0BAA0B;AAAA,EAC1B,4BAA4B;AAAA,EAC5B,uBAAuB;AAAA,EACvB,gBAAgB;AAAA,EAChB,cAAc;AAChB,CAAuB;AA2EhB,IAAM,qBAAqB,OAAO,OAAO;AAAA,EAC9C;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,CAAU;AAIH,IAAM,0BAA0B,OAAO,OAAO;AAAA,EACnD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAU;AAoBH,IAAM,yBAAyB,OAAO,OAAO;AAAA,EAClD;AAAA,EACA;AAAA,EACA;AACF,CAAU;AAEH,IAAM,kCAAkC,OAAO,OAAO;AAAA,EAC3D,mBAAmB;AAAA,EACnB,mBAAmB,KAAK,OAAO;AACjC,CAAC;AAoBM,IAAM,0BAA0B,OAAO,OAAO;AAAA,EACnD;AAAA,EACA;AAAA,EACA;AACF,CAAU;AAIH,IAAM,uBAAuB,OAAO,OAAO;AAAA,EAChD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAU;;;ACjOV,iBAAkB;;;ACCX,IAAM,0BAA0B,OAAO,OAAO;AAAA,EACnD,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,oBAAoB;AAAA,EACpB,eAAe;AAAA,EACf,cAAc;AAChB,CAAC;AAEM,IAAM,0BAA0B;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;ADFA,IAAM,gBAAgB,CAAC,YAAiC,aAAE,OAAO,EAAE,IAAI,OAAO;AAEvE,IAAM,+BAA+B,aAAE,aAAa;AAAA,EACzD,IAAI,aACD,OAAO,EACP,IAAI,CAAC,EACL,IAAI,wBAAwB,YAAY,EACxC,MAAM,mBAAmB;AAAA,EAC5B,OAAO,aAAE,KAAK,uBAAuB;AAAA,EACrC,gBAAgB,aAAE,KAAK,CAAC,qBAAqB,aAAa,CAAC;AAAA,EAC3D,OAAO,cAAc,wBAAwB,eAAe;AAAA,EAC5D,SAAS,cAAc,wBAAwB,iBAAiB;AAClE,CAAC;AAEM,IAAM,kBAAkB,aAAE,aAAa;AAAA,EAC5C,QAAQ,cAAc,GAAG,EAAE,SAAS;AAAA,EACpC,cAAc,cAAc,IAAK,EAAE,SAAS;AAAA,EAC5C,MAAM,aAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;AAAA,EAC3C,QAAQ,aAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;AAAA,EAC7C,QAAQ,aAAE,KAAK,CAAC,YAAY,cAAc,eAAe,gBAAgB,MAAM,CAAC;AAAA,EAChF,YAAY,aAAE,KAAK,CAAC,SAAS,YAAY,eAAe,SAAS,CAAC;AACpE,CAAC;AAEM,IAAM,yBAAyB,aAAE,aAAa;AAAA,EACnD,UAAU,cAAc,IAAK;AAAA,EAC7B,cAAc,cAAc,IAAK;AAAA,EACjC,QAAQ,cAAc,IAAK,EAAE,SAAS;AAAA,EACtC,OAAO,cAAc,IAAK,EAAE,SAAS;AACvC,CAAC;AAEM,IAAM,oBAAoB,aAAE,aAAa;AAAA,EAC9C,cAAc,cAAc,IAAK;AAAA,EACjC,UAAU,aAAE,KAAK,CAAC,OAAO,OAAO,OAAO,CAAC;AAAA,EACxC,WAAW,aAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACrC,SAAS,aAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACnC,SAAS,cAAc,IAAM;AAAA,EAC7B,UAAU,aAAE,KAAK,CAAC,aAAa,cAAc,CAAC;AAChD,CAAC;AAEM,IAAM,oBAAoB,aAAE,aAAa;AAAA,EAC9C,KAAK,cAAc,IAAK;AAAA,EACxB,UAAU,cAAc,IAAK;AAAA,EAC7B,OAAO,cAAc,IAAK;AAAA,EAC1B,eAAe,aAAE,OAAO,EAAE,YAAY;AAAA,EACtC,gBAAgB,aAAE,OAAO,EAAE,YAAY;AAAA,EACvC,kBAAkB,aAAE,OAAO,EAAE,SAAS;AACxC,CAAC;AAEM,IAAM,0BAA0B,aAAE,aAAa;AAAA,EACpD,aAAa,aAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,iCAAiC;AAAA,EAC3E,MAAM,kBAAkB,SAAS;AAAA,EACjC,QAAQ;AAAA,EACR,OAAO,aAAE,aAAa;AAAA,IACpB,WAAW,aAAE,QAAQ;AAAA,IACrB,SAAS,cAAc,EAAE,EAAE,SAAS;AAAA,IACpC,eAAe,cAAc,GAAG,EAAE,SAAS;AAAA,IAC3C,mBAAmB,cAAc,GAAG,EAAE,SAAS;AAAA,IAC/C,eAAe,cAAc,GAAG,EAAE,SAAS;AAAA,IAC3C,gBAAgB,aAAE,MAAM,cAAc,GAAG,CAAC,EAAE,IAAI,EAAE;AAAA,IAClD,QAAQ,gBAAgB,SAAS;AAAA,EACnC,CAAC;AAAA,EACD,SAAS,aAAE,aAAa;AAAA,IACtB,UAAU,6BAA6B,SAAS;AAAA,IAChD,SAAS,cAAc,GAAG;AAAA,IAC1B,UAAU,cAAc,IAAK;AAAA,IAC7B,eAAe,cAAc,IAAK;AAAA,IAClC,aAAa,cAAc,IAAK,EAAE,SAAS;AAAA,IAC3C,MAAM,cAAc,GAAG,EAAE,SAAS;AAAA,IAClC,MAAM,aAAE,aAAa;AAAA,MACnB,GAAG,aAAE,OAAO;AAAA,MACZ,GAAG,aAAE,OAAO;AAAA,MACZ,OAAO,aAAE,OAAO,EAAE,YAAY;AAAA,MAC9B,QAAQ,aAAE,OAAO,EAAE,YAAY;AAAA,IACjC,CAAC;AAAA,EACH,CAAC;AAAA,EACD,QAAQ,aAAE,aAAa;AAAA,IACrB,YAAY,aAAE,MAAM,cAAc,GAAG,CAAC,EAAE,IAAI,GAAG;AAAA,IAC/C,aAAa,cAAc,IAAK,EAAE,SAAS;AAAA,IAC3C,cAAc,aAAE,MAAM,sBAAsB,EAAE,IAAI,GAAG;AAAA,IACrD,UAAU,aAAE,OAAO,cAAc,GAAG,GAAG,cAAc,IAAK,CAAC;AAAA,IAC3D,UAAU,aAAE,MAAM,cAAc,IAAK,CAAC,EAAE,IAAI,EAAE;AAAA,EAChD,CAAC;AAAA,EACD,MAAM,kBAAkB,SAAS;AAAA,EACjC,UAAU,aAAE,MAAM,cAAc,IAAK,CAAC,EAAE,IAAI,EAAE;AAChD,CAAC;AAEM,IAAM,uBAAuB,aACjC,aAAa;AAAA,EACZ,eAAe,aAAE,QAAQ,CAAC;AAAA,EAC1B,IAAI,cAAc,GAAG;AAAA,EACrB,QAAQ,aAAE,KAAK,iBAAiB;AAAA,EAChC,MAAM;AAAA,EACN,SAAS,aAAE,MAAM,uBAAuB,EAAE,IAAI,CAAC,EAAE,IAAI,sBAAsB;AAAA,EAC3E,WAAW,aAAE,IAAI,SAAS;AAC5B,CAAC,EACA,YAAY,CAAC,YAAY,YAAY;AACpC,QAAM,QAAQ,WAAW,QAAQ;AAAA,IAC/B,CAAC,YAAY,WAAW,aAAa,OAAO,YAAY;AAAA,IACxD;AAAA,EACF;AACA,MAAI,QAAQ,uCAAuC;AACjD,YAAQ,SAAS;AAAA,MACf,MAAM;AAAA,MACN,SAAS;AAAA,MACT,MAAM,CAAC,SAAS;AAAA,IAClB,CAAC;AAAA,EACH;AACF,CAAC;;;AH5GI,IAAM,gCAAgC,cAAE,aAAa,CAAC,CAAC;AAE9D,IAAM,0BAA0B,cAAE,aAAa;AAAA,EAC7C,QAAQ,cAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EACjC,MAAM,cAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EAChC,QAAQ,cAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AACpC,CAAC;AAEM,IAAM,6BAA6B,wBACvC,OAAO;AAAA,EACN,UAAU,cAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AACtC,CAAC,EACA,OAAO;AAEH,IAAM,0BAA0B,wBAAwB,OAAO;AAEtE,IAAM,yCAAyC,wBAC5C,OAAO;AAAA,EACN,eAAe,cAAE,QAAQ,CAAC;AAAA,EAC1B,eAAe,cAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;AACrD,CAAC,EACA,OAAO;AAEV,IAAM,yCAAyC,cAAE,aAAa;AAAA,EAC5D,eAAe,cAAE,QAAQ,CAAC;AAAA,EAC1B,mBAAmB,cAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EAC5C,eAAe,cAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAC1C,CAAC;AAEM,IAAM,uCAAuC,cAAE,MAAM;AAAA,EAC1D;AAAA,EACA;AACF,CAAC;AAEM,IAAM,kCAAkC,cAAE,aAAa;AAAA,EAC5D,eAAe,cAAE,QAAQ,CAAC;AAAA,EAC1B,SAAS,cACN,MAAM,oCAAoC,EAC1C,IAAI,CAAC,EACL,IAAI,sBAAsB;AAC/B,CAAC;AAED,IAAM,kBAAkB,cACrB,OAAO,EACP,IAAI,CAAC,EACL,IAAI,EAAE,EACN,MAAM,8BAA8B;AAEhC,IAAM,+BAA+B,cAAE,aAAa;AAAA,EACzD,mBAAmB;AAAA,EACnB,gBAAgB;AAClB,CAAC;AAEM,IAAM,oCAAoC,cAAE,aAAa,CAAC,CAAC;AAE3D,IAAM,8BAA8B,cAAE,aAAa;AAAA,EACxD,YAAY;AAAA,EACZ,WAAW,cAAE,KAAK,iBAAiB,EAAE,SAAS;AAAA,EAC9C,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB,qBAAqB,cAAE,QAAQ,IAAI;AAAA,EACnC,wBAAwB,cAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,EACjD,iBAAiB,cACd,KAAK,CAAC,iBAAiB,uBAAuB,CAAC,EAC/C,QAAQ,eAAe;AAC5B,CAAC;AAEM,IAAM,8BAA8B,cAAE,aAAa,CAAC,CAAC;;;AK/ErD,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;;;AN1BV,IAAM,iBAAiB,cACpB,OAAO,EACP,IAAI,EAAE,EACN,IAAI,GAAG,EACP,MAAM,mBAAmB;AAC5B,IAAM,qBAAqB,cAAE,IAAI,SAAS;AACnC,IAAM,+CAA+C,cAAE;AAAA,EAC5D;AACF;AACA,IAAM,mCAAmC,cAAE,aAAa;AAAA,EACtD,QAAQ,cAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,IAAK;AAAA,EACnC,UAAU,cAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,IAAK;AACvC,CAAC;AAEM,IAAM,+BAA+B,cAAE,aAAa;AAAA,EACzD,WAAW;AAAA,EACX,WAAW,cAAE,KAAK,2BAA2B;AAAA,EAC7C,UAAU,cAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACpC,QAAQ;AAAA,EACR,aAAa,cAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACvC,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW;AAAA,EACX,OAAO,cAAE,KAAK,uBAAuB;AAAA,EACrC,aAAa,cACV,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,IAAI,wBAAwB,wBAAwB;AAAA,EACvD,YAAY,mBAAmB,SAAS;AAC1C,CAAC;AAEM,IAAM,gCAAgC,cAAE,aAAa;AAAA,EAC1D,eAAe,cAAE,QAAQ,wCAAwC;AAAA,EACjE,QAAQ;AAAA,EACR,SAAS,cAAE,aAAa;AAAA,IACtB,IAAI;AAAA,IACJ,WAAW,cAAE,KAAK,2BAA2B;AAAA,EAC/C,CAAC;AAAA,EACD,UAAU,cAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACpC,aAAa;AAAA,EACb,WAAW;AAAA,EACX,YAAY;AACd,CAAC;AAEM,IAAM,6BAA6B,cACvC,aAAa;AAAA,EACZ,MAAM,cAAE,KAAK,qCAAqC;AAAA,EAClD,OAAO,cAAE,KAAK,sCAAsC;AAAA,EACpD,aAAa,cAAE,QAAQ;AAAA,EACvB,aAAa;AAAA,EACb,WAAW;AACb,CAAC,EACA,YAAY,CAAC,OAAO,YAAY;AAC/B,MAAI,MAAM,iBAAiB,MAAM,UAAU,UAAU;AACnD,YAAQ,SAAS;AAAA,MACf,MAAM;AAAA,MACN,SAAS;AAAA,MACT,MAAM,CAAC,aAAa;AAAA,IACtB,CAAC;AAAA,EACH;AACF,CAAC;AAEI,IAAM,wBAAwB,cAAE,aAAa;AAAA,EAClD,aAAa,cAAE,KAAK,qCAAqC;AAAA,EACzD,UAAU,cAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACpC,OAAO,cAAE,KAAK,gCAAgC;AAAA,EAC9C,WAAW;AACb,CAAC;AAEM,IAAM,yCAAyC,cAAE,aAAa,CAAC,CAAC;AAChE,IAAM,sCAAsC,cAAE,aAAa;AAAA,EAChE,WAAW;AAAA,EACX,YAAY;AACd,CAAC;AACM,IAAM,qCAAqC,cAAE,aAAa;AAAA,EAC/D,QAAQ,eAAe,SAAS;AAClC,CAAC;AACM,IAAM,8CAA8C,cAAE,aAAa;AAAA,EACxE,QAAQ;AAAA,EACR,cAAc,cAAE,QAAQ,oBAAoB;AAC9C,CAAC;AACM,IAAM,kCAAkC,cAAE,aAAa;AAAA,EAC5D,SAAS,cAAE,QAAQ,IAAI;AAAA,EACvB,aAAa,cAAE,QAAQ;AAAA,EACvB,iBAAiB,cACd,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,IAAI,wBAAwB,cAAc;AAAA,EAC7C,uBAAuB,cAAE,QAAQ,wCAAwC;AAAA,EACzE,uBAAuB,cAAE,QAAQ,wCAAwC;AAAA,EACzE,eAAe,2BAA2B,SAAS;AAAA,EACnD,UAAU,sBAAsB,SAAS;AAC3C,CAAC;AACM,IAAM,uCAAuC,cAAE,mBAAmB,QAAQ;AAAA,EAC/E,cAAE,aAAa,EAAE,MAAM,cAAE,QAAQ,OAAO,EAAE,CAAC;AAAA,EAC3C,cAAE,aAAa;AAAA,IACb,MAAM,cAAE,QAAQ,QAAQ;AAAA,IACxB,SAAS;AAAA,IACT,UAAU;AAAA,EACZ,CAAC;AACH,CAAC;AACM,IAAM,qCAAqC,cAAE,aAAa;AAAA,EAC/D,SAAS;AAAA,EACT,UAAU;AAAA,EACV,UAAU,cAAE,QAAQ;AACtB,CAAC;AACM,IAAM,oCAAoC,cAAE,aAAa;AAAA,EAC9D,SAAS;AAAA,EACT,eAAe,2BAA2B,SAAS;AAAA,EACnD,UAAU,sBAAsB,SAAS;AAC3C,CAAC;;;AOvJM,IAAM,cAAc;AAAA,EACzB,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,oBAAoB;AAAA,EACpB,kBAAkB;AAAA,EAClB,qBAAqB;AAAA,EACrB,kBAAkB;AAAA,EAClB,oBAAoB;AAAA,EACpB,oBAAoB;AAAA,EACpB,wBAAwB;AAAA,EACxB,8BAA8B;AAAA,EAC9B,aAAa;AAAA,EACb,yBAAyB;AAAA,EACzB,sBAAsB;AAAA,EACtB,+BAA+B;AAAA,EAC/B,mBAAmB;AAAA,EACnB,6BAA6B;AAAA,EAC7B,uBAAuB;AAAA,EACvB,YAAY;AAAA,EACZ,sBAAsB;AAAA,EACtB,iBAAiB;AAAA,EACjB,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,0BAA0B;AAAA,EAC1B,aAAa;AAAA,EACb,qBAAqB;AAAA,EACrB,yBAAyB;AAAA,EACzB,8BAA8B;AAAA,EAC9B,yBAAyB;AAAA,EACzB,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,yBAAyB;AAAA,EACzB,gCAAgC;AAAA,EAChC,qBAAqB;AAAA,EACrB,kCAAkC;AAAA,EAClC,gCAAgC;AAAA,EAChC,oCAAoC;AAAA,EACpC,aAAa;AAAA,EACb,oBAAoB;AAAA,EACpB,wBAAwB;AAAA,EACxB,uBAAuB;AAAA,EACvB,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB,gBAAgB;AAClB;AAEO,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;AACF,CAAU;AAMH,IAAM,oBAAoB,OAAO,OAAO,OAAO,OAAO,WAAW,CAAC;;;AC9ElE,IAAM,iBAAN,cAA6B,MAAM;AAAA,EAC/B;AAAA,EAET,YAAY,MAAiB,UAAU,MAAM,SAAwB;AACnE,UAAM,SAAS,OAAO;AACtB,SAAK,OAAO;AACZ,SAAK,OAAO;AAAA,EACd;AACF;;;ATmBO,IAAM,gCAAgC;AACtC,IAAM,yBAAyB,OAAO,OAAO;AAAA,EAClD,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,MAAM;AAAA,EACN,KAAK;AAAA,EACL,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd,eAAe;AACjB,CAAC;AACM,IAAM,oCACX;AAEF,IAAM,oBAAgB,4BAAU,kCAAQ;AACxC,IAAM,iCAAiC;AACvC,IAAM,8BAA8B;AACpC,IAAM,6BAA6B;AACnC,IAAM,qBAAqB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqElC,IAAMC,kBAAiB,cACpB,OAAO,EACP,IAAI,EAAE,EACN,IAAI,GAAG,EACP,MAAM,mBAAmB;AAC5B,IAAM,mBAAmB,cACtB,OAAO,EACP,OAAO,EAAE,EACT,MAAM,cAAc;AACvB,IAAM,yBAAyB,cAAE,IAAI,EAAE,OAAO,CAAC,UAAU;AACvD,QAAM,QAAQ,6CAA6C,KAAK,KAAK;AAErE,MAAI,QAAQ,CAAC,MAAM,QAAW;AAC5B,WAAO;AAAA,EACT;AAEA,QAAM,OAAO,OAAO,MAAM,CAAC,CAAC;AAC5B,SAAO,OAAO,cAAc,IAAI,KAAK,QAAQ;AAC/C,CAAC;AAEM,IAAM,kCAAkC,cAAE,aAAa;AAAA,EAC5D,eAAe,cAAE,QAAQ,CAAC;AAAA,EAC1B,uBAAuB,cAAE,QAAQ,wCAAwC;AAAA,EACzE,YAAY;AAAA,EACZ,WAAWA;AAAA,EACX,WAAW,cAAE,KAAK,2BAA2B;AAAA,EAC7C,UAAU;AAAA,EACV,aAAa,cACV,OAAO,EACP,IAAI,EAAE,EACN,IAAI,GAAG,EACP,MAAM,mBAAmB;AAAA,EAC5B,KAAK,cAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EAC/B,WAAW,cAAE,IAAI,SAAS;AAC5B,CAAC;AAEM,IAAM,4BAA4B,cAAE,aAAa,CAAC,CAAC;AACnD,IAAM,6BAA6B,cAAE,aAAa;AAAA,EACvD,QAAQA,gBAAe,SAAS;AAClC,CAAC;AACM,IAAM,0BAA0B,cAAE,aAAa;AAAA,EACpD,aAAaA,gBAAe,SAAS;AAAA,EACrC,WAAW,cACR,OAAO,EACP,IAAI,EACJ,SAAS,EACT,IAAI,wBAAwB,aAAa,EACzC,QAAQ,wBAAwB,aAAa;AAClD,CAAC;AACM,IAAM,yBAAyB,cAAE,aAAa;AAAA,EACnD,QAAQA;AAAA,EACR,qBAAqBA;AACvB,CAAC;AACM,IAAM,iCAAiC,cAAE,aAAa;AAAA,EAC3D,aAAa,cAAE,KAAK,qCAAqC;AAAA,EACzD,qBAAqBA;AACvB,CAAC;AACM,IAAM,qCAAqC,cAAE,aAAa;AAAA,EAC/D,YAAYA;AACd,CAAC;AACM,IAAM,kCAAkC,cAAE,aAAa;AAAA,EAC5D,YAAYA;AAAA,EACZ,QAAQA;AAAA,EACR,OAAO;AACT,CAAC;AACM,IAAM,mCAAmC,cAAE,aAAa;AAAA,EAC7D,YAAYA;AACd,CAAC;AACM,IAAM,qBAAqB,cAAE,aAAa;AAAA,EAC/C,uBAAuB,cAAE,QAAQ,wCAAwC;AAAA,EACzE,YAAY;AAAA,EACZ,WAAWA;AAAA,EACX,WAAW,cAAE,KAAK,2BAA2B;AAAA,EAC7C,SAAS,6BAA6B,SAAS;AACjD,CAAC;AACM,IAAM,4BAA4B,cAAE,aAAa;AAAA,EACtD,SAAS,cAAE,QAAQ,SAAS;AAAA,EAC5B,UAAU;AACZ,CAAC;AACM,IAAM,yBAAyB,cAAE,mBAAmB,WAAW;AAAA,EACpE;AAAA,EACA,cAAE,aAAa,EAAE,SAAS,cAAE,QAAQ,SAAS,EAAE,CAAC;AAClD,CAAC;AACM,IAAM,wBAAwB,cAAE,aAAa;AAAA,EAClD,SAAS;AACX,CAAC;AACM,IAAM,gCAAgC,cAAE,aAAa;AAAA,EAC1D,YAAYA;AAAA,EACZ,qBAAqB,cAAE,QAAQ,wBAAwB,yBAAyB;AAAA,EAChF,gBAAgBA,gBAAe,SAAS;AAAA,EACxC,eAAe;AACjB,CAAC;AACM,IAAM,gCAAgC,cAAE,aAAa;AAAA,EAC1D,eAAe,2BAA2B,SAAS;AAAA,EACnD,UAAU,sBAAsB,SAAS;AAC3C,CAAC;AACM,IAAM,oCAAoC;AAC1C,IAAM,iCAAiC;AACvC,IAAM,kCAAkC;AAkB/C,SAAS,8BAAsC;AAC7C,QAAM,aAAa,QAAQ,IAAI,cAAc,QAAQ,IAAI;AACzD,MAAI,eAAe,UAAa,CAAC,iBAAAC,QAAK,MAAM,WAAW,UAAU,GAAG;AAClE,UAAM,IAAI,eAAe,YAAY,mBAAmB;AAAA,EAC1D;AACA,SAAO,iBAAAA,QAAK,MAAM;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,eAAe,iBACb,WACA,MACA,YACe;AACf,MAAI;AACF,UAAM;AAAA,MACJ,4BAA4B;AAAA,MAC5B,CAAC,WAAW,cAAc,mBAAmB,YAAY,kBAAkB;AAAA,MAC3E;AAAA,QACE,UAAU;AAAA,QACV,KAAK;AAAA,UACH,GAAG,QAAQ;AAAA,UACX,oBAAoB;AAAA,UACpB,yBAAyB,aAAa,eAAe;AAAA,UACrD,sBAAsB;AAAA,QACxB;AAAA,QACA,SAAS;AAAA,QACT,aAAa;AAAA,MACf;AAAA,IACF;AAAA,EACF,SAAS,OAAgB;AACvB,UAAM,IAAI,eAAe,YAAY,qBAAqB,QAAW;AAAA,MACnE,OAAO;AAAA,IACT,CAAC;AAAA,EACH;AACF;AAEA,eAAsB,iCACpB,WACA,MACgB;AAChB,QAAM,SAAS,UAAM,uBAAM,SAAS;AACpC,QAAM,cAAc,SAAS,cAAc,OAAO,YAAY,IAAI,OAAO,OAAO;AAEhF,MAAI,CAAC,eAAe,OAAO,eAAe,GAAG;AAC3C,UAAM,IAAI,eAAe,YAAY,mBAAmB;AAAA,EAC1D;AAEA,MAAI,QAAQ,aAAa,SAAS;AAChC,aAAS,UAAU,GAAG,UAAU,6BAA6B,WAAW,GAAG;AACzE,UAAI;AACF,cAAM,iBAAiB,WAAW,MAAM,KAAK;AAC7C,eAAO;AAAA,MACT,SAAS,OAAgB;AACvB,YAAI,YAAY,8BAA8B,EAAG,OAAM;AACvD,YAAI;AACJ,YAAI;AACF,oBAAU,UAAM,uBAAM,SAAS;AAAA,QACjC,QAAQ;AACN,gBAAM;AAAA,QACR;AACA,cAAM,WACJ,SAAS,cAAc,QAAQ,YAAY,IAAI,QAAQ,OAAO;AAChE,YACE,CAAC,YACD,QAAQ,eAAe,KACvB,QAAQ,QAAQ,OAAO,OACvB,QAAQ,QAAQ,OAAO,KACvB;AACA,gBAAM;AAAA,QACR;AACA,cAAM,IAAI,QAAc,CAAC,YAAY;AACnC,qBAAW,SAAS,8BAA8B,UAAU,EAAE;AAAA,QAChE,CAAC;AAAA,MACH;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,QAAM,MAAM,QAAQ,SAAS;AAC7B,MAAI,QAAQ,UAAa,OAAO,QAAQ,QAAQ,OAAO,OAAO,QAAW,GAAG;AAC1E,UAAM,IAAI,eAAe,YAAY,mBAAmB;AAAA,EAC1D;AAEA,SAAO;AACT;AAEA,eAAsB,qCACpB,WACe;AACf,MAAI,QAAQ,aAAa,SAAS;AAChC,UAAM,iBAAiB,WAAW,QAAQ,IAAI;AAAA,EAChD;AACF;AAEA,eAAe,2BAA2B,WAAkC;AAC1E,MAAI,QAAQ,aAAa,SAAS;AAChC,UAAM,iBAAiB,WAAW,aAAa,IAAI;AAAA,EACrD;AACF;AAEA,eAAe,0BACb,MACA,QACiB;AACjB,QAAM,YAAY,iBAAAA,QAAK,KAAK,MAAM,WAAW;AAC7C,MAAI,UAAU;AAEd,MAAI,QAAQ;AACV,QAAI;AACF,gBAAM,uBAAM,WAAW,EAAE,MAAM,IAAM,CAAC;AACtC,gBAAU;AAAA,IACZ,SAAS,OAAgB;AACvB,UAAK,MAAgC,SAAS,UAAU;AACtD,cAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,MAAI,QAAS,OAAM,2BAA2B,SAAS;AACvD,QAAM,iCAAiC,WAAW,WAAW;AAC7D,aAAO,0BAAS,SAAS;AAC3B;AAEA,eAAe,+BAA+B,QAAkC;AAC9E,QAAM,iBAAiB,QAAQ,IAAI;AAEnC,MAAI,mBAAmB,UAAa,CAAC,iBAAAA,QAAK,WAAW,cAAc,GAAG;AACpE,UAAM,IAAI,eAAe,YAAY,mBAAmB;AAAA,EAC1D;AAEA,QAAM,OAAO,kBAAkB,iBAAAA,QAAK,KAAK,eAAAC,QAAG,QAAQ,GAAG,WAAW,OAAO;AACzE,QAAM,YAAY,iBAAAD,QAAK,KAAK,MAAM,aAAa,2BAA2B;AAC1E,MAAI,UAAU;AAEd,MAAI,QAAQ;AACV,cAAW,UAAM,uBAAM,WAAW,EAAE,MAAM,KAAO,WAAW,KAAK,CAAC,MAAO;AAAA,EAC3E;AAEA,MAAI,QAAS,OAAM,2BAA2B,SAAS;AACvD,QAAM,iCAAiC,WAAW,WAAW;AAC7D,aAAO,0BAAS,SAAS;AAC3B;AAEA,eAAsB,uCACpB,QACiB;AACjB,QAAM,sBAAsB,QAAQ,IAAI;AAExC,MAAI,wBAAwB,UAAa,CAAC,iBAAAA,QAAK,WAAW,mBAAmB,GAAG;AAC9E,UAAM,IAAI,eAAe,YAAY,mBAAmB;AAAA,EAC1D;AAEA,MAAI,wBAAwB,QAAW;AACrC,QAAI;AACF,UAAI,QAAQ,aAAa,SAAS;AAChC,cAAM,iCAAiC,qBAAqB,WAAW;AAAA,MACzE;AACA,aAAO,MAAM,0BAA0B,qBAAqB,MAAM;AAAA,IACpE,SAAS,OAAgB;AACvB,UAAI,CAAC,UAAW,MAAgC,SAAS,UAAU;AACjE,cAAM,IAAI,eAAe,YAAY,iBAAiB;AAAA,MACxD;AAEA,YAAM;AAAA,IACR;AAAA,EACF;AAEA,MAAI,QAAQ,aAAa,SAAS;AAChC,QAAI;AACF,aAAO,MAAM,+BAA+B,MAAM;AAAA,IACpD,SAAS,OAAgB;AACvB,UAAI,CAAC,UAAW,MAAgC,SAAS,UAAU;AACjE,cAAM,IAAI,eAAe,YAAY,iBAAiB;AAAA,MACxD;AAEA,YAAM;AAAA,IACR;AAAA,EACF;AAEA,QAAM,MAAM,QAAQ,SAAS;AAC7B,MAAI,QAAQ,QAAW;AACrB,UAAM,IAAI,eAAe,YAAY,mBAAmB;AAAA,EAC1D;AAEA,QAAM,WAAW,iBAAAA,QAAK,KAAK,eAAAC,QAAG,OAAO,GAAG,aAAa,OAAO,GAAG,CAAC,EAAE;AAElE,MAAI,QAAQ;AACV,QAAI;AACF,gBAAM,uBAAM,UAAU,EAAE,MAAM,IAAM,CAAC;AAAA,IACvC,SAAS,OAAgB;AACvB,UAAK,MAAgC,SAAS,UAAU;AACtD,cAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,MAAI;AACF,UAAM,iCAAiC,UAAU,WAAW;AAAA,EAC9D,SAAS,OAAgB;AACvB,QAAI,CAAC,UAAW,MAAgC,SAAS,UAAU;AACjE,YAAM,IAAI,eAAe,YAAY,iBAAiB;AAAA,IACxD;AAEA,UAAM;AAAA,EACR;AAEA,aAAO,0BAAS,QAAQ;AAC1B;AAEA,eAAsB,iCAAiC,MAA+B;AACpF,QAAM,gBAAgB,UAAM,0BAAS,IAAI;AACzC,aAAO,+BAAW,QAAQ,EACvB,OAAO,GAAG,iCAAiC,KAAK,aAAa,EAAE,EAC/D,OAAO,KAAK;AACjB;","names":["import_zod","import_zod","import_zod","opaqueIdSchema","path","os"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Stats } from 'node:fs';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
import { E as EXTERNAL_HANDOFF_LIMITS, A as ActiveAdapterSummary, D as DispatchSummary, a as ExternalHandoffSnapshot } from './external-handoff-
|
|
4
|
-
import './annotation-
|
|
3
|
+
import { E as EXTERNAL_HANDOFF_LIMITS, A as ActiveAdapterSummary, D as DispatchSummary, a as ExternalHandoffSnapshot } from './external-handoff-ByHmcwWv.cjs';
|
|
4
|
+
import './annotation-eo_ltNRm.cjs';
|
|
5
5
|
|
|
6
6
|
declare const SPOTPATCH_BRIDGE_TOKEN_HEADER: "X-SpotPatch-Bridge-Token";
|
|
7
7
|
declare const SPOTPATCH_BRIDGE_PATHS: Readonly<{
|
|
@@ -189,6 +189,21 @@ declare const bridgeCurrentResultSchema: z.ZodObject<{
|
|
|
189
189
|
}, z.core.$strict>>;
|
|
190
190
|
}, z.core.$strict>;
|
|
191
191
|
element: z.ZodObject<{
|
|
192
|
+
instance: z.ZodOptional<z.ZodObject<{
|
|
193
|
+
id: z.ZodString;
|
|
194
|
+
state: z.ZodEnum<{
|
|
195
|
+
captured: "captured";
|
|
196
|
+
changed: "changed";
|
|
197
|
+
detached: "detached";
|
|
198
|
+
restored: "restored";
|
|
199
|
+
}>;
|
|
200
|
+
selectorStatus: z.ZodEnum<{
|
|
201
|
+
"unique-at-capture": "unique-at-capture";
|
|
202
|
+
unavailable: "unavailable";
|
|
203
|
+
}>;
|
|
204
|
+
label: z.ZodString;
|
|
205
|
+
context: z.ZodString;
|
|
206
|
+
}, z.core.$strict>>;
|
|
192
207
|
tagName: z.ZodString;
|
|
193
208
|
selector: z.ZodString;
|
|
194
209
|
sanitizedHtml: z.ZodString;
|
|
@@ -322,6 +337,21 @@ declare const bridgeWaitResultSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
322
337
|
}, z.core.$strict>>;
|
|
323
338
|
}, z.core.$strict>;
|
|
324
339
|
element: z.ZodObject<{
|
|
340
|
+
instance: z.ZodOptional<z.ZodObject<{
|
|
341
|
+
id: z.ZodString;
|
|
342
|
+
state: z.ZodEnum<{
|
|
343
|
+
captured: "captured";
|
|
344
|
+
changed: "changed";
|
|
345
|
+
detached: "detached";
|
|
346
|
+
restored: "restored";
|
|
347
|
+
}>;
|
|
348
|
+
selectorStatus: z.ZodEnum<{
|
|
349
|
+
"unique-at-capture": "unique-at-capture";
|
|
350
|
+
unavailable: "unavailable";
|
|
351
|
+
}>;
|
|
352
|
+
label: z.ZodString;
|
|
353
|
+
context: z.ZodString;
|
|
354
|
+
}, z.core.$strict>>;
|
|
325
355
|
tagName: z.ZodString;
|
|
326
356
|
selector: z.ZodString;
|
|
327
357
|
sanitizedHtml: z.ZodString;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Stats } from 'node:fs';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
import { E as EXTERNAL_HANDOFF_LIMITS, A as ActiveAdapterSummary, D as DispatchSummary, a as ExternalHandoffSnapshot } from './external-handoff-
|
|
4
|
-
import './annotation-
|
|
3
|
+
import { E as EXTERNAL_HANDOFF_LIMITS, A as ActiveAdapterSummary, D as DispatchSummary, a as ExternalHandoffSnapshot } from './external-handoff-BaPiKnYG.js';
|
|
4
|
+
import './annotation-eo_ltNRm.js';
|
|
5
5
|
|
|
6
6
|
declare const SPOTPATCH_BRIDGE_TOKEN_HEADER: "X-SpotPatch-Bridge-Token";
|
|
7
7
|
declare const SPOTPATCH_BRIDGE_PATHS: Readonly<{
|
|
@@ -189,6 +189,21 @@ declare const bridgeCurrentResultSchema: z.ZodObject<{
|
|
|
189
189
|
}, z.core.$strict>>;
|
|
190
190
|
}, z.core.$strict>;
|
|
191
191
|
element: z.ZodObject<{
|
|
192
|
+
instance: z.ZodOptional<z.ZodObject<{
|
|
193
|
+
id: z.ZodString;
|
|
194
|
+
state: z.ZodEnum<{
|
|
195
|
+
captured: "captured";
|
|
196
|
+
changed: "changed";
|
|
197
|
+
detached: "detached";
|
|
198
|
+
restored: "restored";
|
|
199
|
+
}>;
|
|
200
|
+
selectorStatus: z.ZodEnum<{
|
|
201
|
+
"unique-at-capture": "unique-at-capture";
|
|
202
|
+
unavailable: "unavailable";
|
|
203
|
+
}>;
|
|
204
|
+
label: z.ZodString;
|
|
205
|
+
context: z.ZodString;
|
|
206
|
+
}, z.core.$strict>>;
|
|
192
207
|
tagName: z.ZodString;
|
|
193
208
|
selector: z.ZodString;
|
|
194
209
|
sanitizedHtml: z.ZodString;
|
|
@@ -322,6 +337,21 @@ declare const bridgeWaitResultSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
322
337
|
}, z.core.$strict>>;
|
|
323
338
|
}, z.core.$strict>;
|
|
324
339
|
element: z.ZodObject<{
|
|
340
|
+
instance: z.ZodOptional<z.ZodObject<{
|
|
341
|
+
id: z.ZodString;
|
|
342
|
+
state: z.ZodEnum<{
|
|
343
|
+
captured: "captured";
|
|
344
|
+
changed: "changed";
|
|
345
|
+
detached: "detached";
|
|
346
|
+
restored: "restored";
|
|
347
|
+
}>;
|
|
348
|
+
selectorStatus: z.ZodEnum<{
|
|
349
|
+
"unique-at-capture": "unique-at-capture";
|
|
350
|
+
unavailable: "unavailable";
|
|
351
|
+
}>;
|
|
352
|
+
label: z.ZodString;
|
|
353
|
+
context: z.ZodString;
|
|
354
|
+
}, z.core.$strict>>;
|
|
325
355
|
tagName: z.ZodString;
|
|
326
356
|
selector: z.ZodString;
|
|
327
357
|
sanitizedHtml: z.ZodString;
|
|
@@ -5,10 +5,10 @@ import {
|
|
|
5
5
|
externalHandoffReportableDispatchPhaseSchema,
|
|
6
6
|
externalHandoffSnapshotSchema,
|
|
7
7
|
externalHandoffSummarySchema
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-7777QFBJ.js";
|
|
9
9
|
import {
|
|
10
10
|
ERROR_CODES
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-FCY5V76A.js";
|
|
12
12
|
import {
|
|
13
13
|
EXTERNAL_HANDOFF_ACTIVE_ADAPTER_KINDS,
|
|
14
14
|
EXTERNAL_HANDOFF_BROKER_PROTOCOL_VERSION,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { S as SpotAnnotation } from './annotation-
|
|
2
|
+
import { S as SpotAnnotation } from './annotation-eo_ltNRm.js';
|
|
3
3
|
|
|
4
4
|
declare const EXTERNAL_HANDOFF_SNAPSHOT_SCHEMA_VERSION: 1;
|
|
5
5
|
declare const EXTERNAL_HANDOFF_BROKER_PROTOCOL_VERSION: 2;
|
|
@@ -161,6 +161,21 @@ declare const externalHandoffSnapshotSchema: z.ZodObject<{
|
|
|
161
161
|
}, z.core.$strict>>;
|
|
162
162
|
}, z.core.$strict>;
|
|
163
163
|
element: z.ZodObject<{
|
|
164
|
+
instance: z.ZodOptional<z.ZodObject<{
|
|
165
|
+
id: z.ZodString;
|
|
166
|
+
state: z.ZodEnum<{
|
|
167
|
+
captured: "captured";
|
|
168
|
+
changed: "changed";
|
|
169
|
+
detached: "detached";
|
|
170
|
+
restored: "restored";
|
|
171
|
+
}>;
|
|
172
|
+
selectorStatus: z.ZodEnum<{
|
|
173
|
+
"unique-at-capture": "unique-at-capture";
|
|
174
|
+
unavailable: "unavailable";
|
|
175
|
+
}>;
|
|
176
|
+
label: z.ZodString;
|
|
177
|
+
context: z.ZodString;
|
|
178
|
+
}, z.core.$strict>>;
|
|
164
179
|
tagName: z.ZodString;
|
|
165
180
|
selector: z.ZodString;
|
|
166
181
|
sanitizedHtml: z.ZodString;
|
|
@@ -311,6 +326,21 @@ declare const externalHandoffPublishRequestSchema: z.ZodObject<{
|
|
|
311
326
|
}, z.core.$strict>>;
|
|
312
327
|
}, z.core.$strict>;
|
|
313
328
|
element: z.ZodObject<{
|
|
329
|
+
instance: z.ZodOptional<z.ZodObject<{
|
|
330
|
+
id: z.ZodString;
|
|
331
|
+
state: z.ZodEnum<{
|
|
332
|
+
captured: "captured";
|
|
333
|
+
changed: "changed";
|
|
334
|
+
detached: "detached";
|
|
335
|
+
restored: "restored";
|
|
336
|
+
}>;
|
|
337
|
+
selectorStatus: z.ZodEnum<{
|
|
338
|
+
"unique-at-capture": "unique-at-capture";
|
|
339
|
+
unavailable: "unavailable";
|
|
340
|
+
}>;
|
|
341
|
+
label: z.ZodString;
|
|
342
|
+
context: z.ZodString;
|
|
343
|
+
}, z.core.$strict>>;
|
|
314
344
|
tagName: z.ZodString;
|
|
315
345
|
selector: z.ZodString;
|
|
316
346
|
sanitizedHtml: z.ZodString;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { S as SpotAnnotation } from './annotation-
|
|
2
|
+
import { S as SpotAnnotation } from './annotation-eo_ltNRm.cjs';
|
|
3
3
|
|
|
4
4
|
declare const EXTERNAL_HANDOFF_SNAPSHOT_SCHEMA_VERSION: 1;
|
|
5
5
|
declare const EXTERNAL_HANDOFF_BROKER_PROTOCOL_VERSION: 2;
|
|
@@ -161,6 +161,21 @@ declare const externalHandoffSnapshotSchema: z.ZodObject<{
|
|
|
161
161
|
}, z.core.$strict>>;
|
|
162
162
|
}, z.core.$strict>;
|
|
163
163
|
element: z.ZodObject<{
|
|
164
|
+
instance: z.ZodOptional<z.ZodObject<{
|
|
165
|
+
id: z.ZodString;
|
|
166
|
+
state: z.ZodEnum<{
|
|
167
|
+
captured: "captured";
|
|
168
|
+
changed: "changed";
|
|
169
|
+
detached: "detached";
|
|
170
|
+
restored: "restored";
|
|
171
|
+
}>;
|
|
172
|
+
selectorStatus: z.ZodEnum<{
|
|
173
|
+
"unique-at-capture": "unique-at-capture";
|
|
174
|
+
unavailable: "unavailable";
|
|
175
|
+
}>;
|
|
176
|
+
label: z.ZodString;
|
|
177
|
+
context: z.ZodString;
|
|
178
|
+
}, z.core.$strict>>;
|
|
164
179
|
tagName: z.ZodString;
|
|
165
180
|
selector: z.ZodString;
|
|
166
181
|
sanitizedHtml: z.ZodString;
|
|
@@ -311,6 +326,21 @@ declare const externalHandoffPublishRequestSchema: z.ZodObject<{
|
|
|
311
326
|
}, z.core.$strict>>;
|
|
312
327
|
}, z.core.$strict>;
|
|
313
328
|
element: z.ZodObject<{
|
|
329
|
+
instance: z.ZodOptional<z.ZodObject<{
|
|
330
|
+
id: z.ZodString;
|
|
331
|
+
state: z.ZodEnum<{
|
|
332
|
+
captured: "captured";
|
|
333
|
+
changed: "changed";
|
|
334
|
+
detached: "detached";
|
|
335
|
+
restored: "restored";
|
|
336
|
+
}>;
|
|
337
|
+
selectorStatus: z.ZodEnum<{
|
|
338
|
+
"unique-at-capture": "unique-at-capture";
|
|
339
|
+
unavailable: "unavailable";
|
|
340
|
+
}>;
|
|
341
|
+
label: z.ZodString;
|
|
342
|
+
context: z.ZodString;
|
|
343
|
+
}, z.core.$strict>>;
|
|
314
344
|
tagName: z.ZodString;
|
|
315
345
|
selector: z.ZodString;
|
|
316
346
|
sanitizedHtml: z.ZodString;
|
|
@@ -1,7 +1,7 @@
|
|
|
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-
|
|
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-ByHmcwWv.cjs';
|
|
2
2
|
export { S as SPOTPATCH_ENDPOINTS, a as SPOTPATCH_TOKEN_HEADER } from './endpoints-O3ohYyAo.cjs';
|
|
3
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
|
-
export { S as SpotAnnotation, a as SpotPatchLocale } from './annotation-
|
|
4
|
+
export { S as SpotAnnotation, a as SpotPatchLocale } from './annotation-eo_ltNRm.cjs';
|
|
5
5
|
import 'zod';
|
|
6
6
|
|
|
7
7
|
/** Browser-reachable errors only; keeps unrelated Agent/worktree codes out of the lazy UI. */
|
|
@@ -1,7 +1,7 @@
|
|
|
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-
|
|
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-BaPiKnYG.js';
|
|
2
2
|
export { S as SPOTPATCH_ENDPOINTS, a as SPOTPATCH_TOKEN_HEADER } from './endpoints-O3ohYyAo.js';
|
|
3
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
|
-
export { S as SpotAnnotation, a as SpotPatchLocale } from './annotation-
|
|
4
|
+
export { S as SpotAnnotation, a as SpotPatchLocale } from './annotation-eo_ltNRm.js';
|
|
5
5
|
import 'zod';
|
|
6
6
|
|
|
7
7
|
/** Browser-reachable errors only; keeps unrelated Agent/worktree codes out of the lazy UI. */
|