@agimon-ai/po-core 0.0.0-alpha.110 → 0.0.0-alpha.111
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/apiContracts.cjs.map +1 -1
- package/dist/apiContracts.d.mts.map +1 -1
- package/dist/apiContracts.mjs.map +1 -1
- package/dist/clientDevices.cjs +4 -0
- package/dist/clientDevices.d.mts +3 -0
- package/dist/clientDevices.mjs +1 -0
- package/dist/clientMetadata.cjs +13 -0
- package/dist/clientMetadata.d.mts +4 -0
- package/dist/clientMetadata.mjs +3 -0
- package/dist/headlessHub.cjs +11 -8
- package/dist/headlessHub.cjs.map +1 -1
- package/dist/headlessHub.d.mts +5 -3
- package/dist/headlessHub.d.mts.map +1 -1
- package/dist/headlessHub.mjs +11 -8
- package/dist/headlessHub.mjs.map +1 -1
- package/dist/headlessProtocol.cjs +36 -2
- package/dist/headlessProtocol.cjs.map +1 -1
- package/dist/headlessProtocol.d.mts +3 -0
- package/dist/headlessProtocol.d.mts.map +1 -1
- package/dist/headlessProtocol.mjs +36 -2
- package/dist/headlessProtocol.mjs.map +1 -1
- package/dist/headlessServer.cjs +43 -8
- package/dist/headlessServer.cjs.map +1 -1
- package/dist/headlessServer.d.mts +4 -1
- package/dist/headlessServer.d.mts.map +1 -1
- package/dist/headlessServer.mjs +43 -8
- package/dist/headlessServer.mjs.map +1 -1
- package/dist/native.cjs +16 -0
- package/dist/native.d.mts +4 -1
- package/dist/native.mjs +3 -1
- package/dist/packageApiServer.cjs +1 -0
- package/dist/packageApiServer.cjs.map +1 -1
- package/dist/packageApiServer.d.mts +1 -0
- package/dist/packageApiServer.d.mts.map +1 -1
- package/dist/packageApiServer.mjs +1 -0
- package/dist/packageApiServer.mjs.map +1 -1
- package/dist/remoteRuntime.cjs +47 -11
- package/dist/remoteRuntime.cjs.map +1 -1
- package/dist/remoteRuntime.d.mts +2 -1
- package/dist/remoteRuntime.d.mts.map +1 -1
- package/dist/remoteRuntime.mjs +47 -11
- package/dist/remoteRuntime.mjs.map +1 -1
- package/dist/src/pi/piSessionRuntime.cjs +4 -4
- package/dist/src/pi/piSessionRuntime.cjs.map +1 -1
- package/dist/src/pi/piSessionRuntime.d.mts +6 -1
- package/dist/src/pi/piSessionRuntime.d.mts.map +1 -1
- package/dist/src/pi/piSessionRuntime.mjs +4 -4
- package/dist/src/pi/piSessionRuntime.mjs.map +1 -1
- package/dist/src/schemas/clientDevices.d.mts +25 -0
- package/dist/src/schemas/clientDevices.d.mts.map +1 -0
- package/dist/src/schemas/clientMetadata.d.mts +27 -0
- package/dist/src/schemas/clientMetadata.d.mts.map +1 -0
- package/dist/src/schemas/headless.cjs.map +1 -1
- package/dist/src/schemas/headless.d.mts +3 -0
- package/dist/src/schemas/headless.d.mts.map +1 -1
- package/dist/src/schemas/headless.mjs.map +1 -1
- package/dist/src/schemas/hubChannel.cjs.map +1 -1
- package/dist/src/schemas/hubChannel.d.mts +7 -2
- package/dist/src/schemas/hubChannel.d.mts.map +1 -1
- package/dist/src/schemas/hubChannel.mjs.map +1 -1
- package/dist/src/schemas/packageApi.cjs.map +1 -1
- package/dist/src/schemas/packageApi.d.mts +7 -4
- package/dist/src/schemas/packageApi.d.mts.map +1 -1
- package/dist/src/schemas/packageApi.mjs.map +1 -1
- package/dist/src/schemas/pluginProtocol.cjs.map +1 -1
- package/dist/src/schemas/pluginProtocol.d.mts +3 -0
- package/dist/src/schemas/pluginProtocol.d.mts.map +1 -1
- package/dist/src/schemas/pluginProtocol.mjs.map +1 -1
- package/dist/src/server/directHarnessRuntime.cjs +5 -4
- package/dist/src/server/directHarnessRuntime.cjs.map +1 -1
- package/dist/src/server/directHarnessRuntime.d.mts.map +1 -1
- package/dist/src/server/directHarnessRuntime.mjs +5 -4
- package/dist/src/server/directHarnessRuntime.mjs.map +1 -1
- package/dist/src/services/clientDevices/index.cjs +75 -0
- package/dist/src/services/clientDevices/index.cjs.map +1 -0
- package/dist/src/services/clientDevices/index.d.mts +7 -0
- package/dist/src/services/clientDevices/index.d.mts.map +1 -0
- package/dist/src/services/clientDevices/index.mjs +74 -0
- package/dist/src/services/clientDevices/index.mjs.map +1 -0
- package/dist/src/services/clientMetadata/_lib/codec.cjs +96 -0
- package/dist/src/services/clientMetadata/_lib/codec.cjs.map +1 -0
- package/dist/src/services/clientMetadata/_lib/codec.d.mts +16 -0
- package/dist/src/services/clientMetadata/_lib/codec.d.mts.map +1 -0
- package/dist/src/services/clientMetadata/_lib/codec.mjs +89 -0
- package/dist/src/services/clientMetadata/_lib/codec.mjs.map +1 -0
- package/dist/src/services/clientMetadata/_lib/deviceLabel.cjs +63 -0
- package/dist/src/services/clientMetadata/_lib/deviceLabel.cjs.map +1 -0
- package/dist/src/services/clientMetadata/_lib/deviceLabel.d.mts +10 -0
- package/dist/src/services/clientMetadata/_lib/deviceLabel.d.mts.map +1 -0
- package/dist/src/services/clientMetadata/_lib/deviceLabel.mjs +62 -0
- package/dist/src/services/clientMetadata/_lib/deviceLabel.mjs.map +1 -0
- package/dist/src/services/deviceAuth/index.cjs +2 -1
- package/dist/src/services/deviceAuth/index.cjs.map +1 -1
- package/dist/src/services/deviceAuth/index.mjs +2 -1
- package/dist/src/services/deviceAuth/index.mjs.map +1 -1
- package/dist/src/services/deviceSessions/index.cjs +2 -52
- package/dist/src/services/deviceSessions/index.cjs.map +1 -1
- package/dist/src/services/deviceSessions/index.d.mts +1 -0
- package/dist/src/services/deviceSessions/index.d.mts.map +1 -1
- package/dist/src/services/deviceSessions/index.mjs +1 -51
- package/dist/src/services/deviceSessions/index.mjs.map +1 -1
- package/dist/src/systems/main/adapters/headlessHost.cjs +5 -2
- package/dist/src/systems/main/adapters/headlessHost.cjs.map +1 -1
- package/dist/src/systems/main/adapters/headlessHost.d.mts +2 -1
- package/dist/src/systems/main/adapters/headlessHost.d.mts.map +1 -1
- package/dist/src/systems/main/adapters/headlessHost.mjs +5 -2
- package/dist/src/systems/main/adapters/headlessHost.mjs.map +1 -1
- package/dist/src/systems/main/adapters/headlessSessionHost.cjs +2 -2
- package/dist/src/systems/main/adapters/headlessSessionHost.cjs.map +1 -1
- package/dist/src/systems/main/adapters/headlessSessionHost.mjs +2 -2
- package/dist/src/systems/main/adapters/headlessSessionHost.mjs.map +1 -1
- package/dist/src/types/server/directHarnessRuntime.d.mts +8 -4
- package/dist/src/types/server/directHarnessRuntime.d.mts.map +1 -1
- package/package.json +14 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiContracts.cjs","names":["Type","Check","Text","Type","Optional","Strings","Flag","NumberValue","Json","Text","Type","NumberValue","Optional","Flag","method","Json","Type","remote","hostNamed","Type","Text","Type","Json","remote","hostNamed","Type","remote","hostNamed","Type","Json","Type"],"sources":["../src/schemas/apiContracts.ts","../src/services/apiContracts/index.ts","../src/constants/contextApi.ts","../src/schemas/httpApiContracts.ts","../src/schemas/remoteApiContracts.ts","../src/schemas/protocolContracts.ts","../src/schemas/protocolChannelsContract.ts","../src/schemas/pluginProtocol.ts","../src/schemas/protocolHubContract.ts","../src/schemas/protocolThreadContract.ts","../src/schemas/sessionApiContracts.ts","../src/schemas/transportApiContracts.ts","../src/schemas/builtinApiContracts.ts"],"sourcesContent":["import { type Static, Type } from 'typebox';\nimport { Check } from 'typebox/value';\n\nimport type { PoApiScope } from './packageApi';\nimport type { PoServerBundleOwner } from './serverBundle';\n\nexport const PO_API_CONTRACT_VERSION = 1;\nexport const PO_API_CONTRACT_FILE = 'contracts.json';\nconst Schema = Type.Unsafe<object | boolean>(Type.Union([Type.Boolean(), Type.Record(Type.String(), Type.Unknown())]));\nconst Scope = Type.Union([Type.Literal('global'), Type.Literal('workspace'), Type.Literal('session')]);\nconst Named = Type.String({ minLength: 1 });\nconst ResponseSchema = Type.Object({\n description: Named,\n contentType: Type.Optional(Named),\n schema: Type.Optional(Schema),\n events: Type.Optional(Type.Record(Named, Schema)),\n});\n\n/** Data-only package entry. Schemas use JSON Schema draft-07, including TypeBox output; OpenAPI export translates tuple keywords. */\nexport const PoApiContractSchema = Type.Object({\n version: Type.Literal(PO_API_CONTRACT_VERSION),\n protocols: Type.Optional(Type.Record(Named, Named)),\n schemas: Type.Optional(Type.Record(Named, Schema)),\n http: Type.Array(\n Type.Object({\n id: Named,\n scope: Scope,\n /** Omit for host-owned absolute routes. */\n basePath: Type.Optional(Type.String({ pattern: '^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$' })),\n path: Type.String({ pattern: '^/' }),\n method: Type.Union([\n Type.Literal('GET'),\n Type.Literal('POST'),\n Type.Literal('PUT'),\n Type.Literal('PATCH'),\n Type.Literal('DELETE'),\n Type.Literal('HEAD'),\n Type.Literal('OPTIONS'),\n ]),\n description: Named,\n availability: Type.Optional(Named),\n authentication: Type.Union([Type.Literal('none'), Type.Literal('owner'), Type.Literal('device')]),\n parameters: Type.Optional(\n Type.Array(\n Type.Object({\n name: Named,\n in: Type.Union([Type.Literal('path'), Type.Literal('query'), Type.Literal('header')]),\n required: Type.Boolean(),\n schema: Schema,\n }),\n ),\n ),\n body: Type.Optional(\n Type.Object({\n contentType: Named,\n contentTypes: Type.Optional(Type.Array(Named, { minItems: 1 })),\n required: Type.Boolean(),\n schema: Schema,\n }),\n ),\n responses: Type.Record(Type.String({ pattern: '^(?:[1-5][0-9]{2}|default)$' }), ResponseSchema, {\n minProperties: 1,\n }),\n }),\n ),\n sockets: Type.Array(\n Type.Object({\n id: Named,\n scope: Scope,\n description: Named,\n availability: Type.Optional(Named),\n service: Named,\n member: Named,\n direction: Type.Union([Type.Literal('client-to-server'), Type.Literal('server-to-client')]),\n kind: Type.Union([Type.Literal('method'), Type.Literal('state'), Type.Literal('channel')]),\n input: Schema,\n output: Type.Optional(Schema),\n errors: Type.Optional(Schema),\n }),\n ),\n /** Explicitly enumerate dynamic values whose shape is supplied at runtime. */\n dynamic: Type.Array(Type.String({ minLength: 1 })),\n gaps: Type.Optional(Type.Array(Named)),\n});\n\nexport type PoApiContract = Static<typeof PoApiContractSchema>;\nexport type PoHttpContract = PoApiContract['http'][number];\nexport type PoSocketContract = PoApiContract['sockets'][number];\n\nexport function defineApiContract(contract: PoApiContract): PoApiContract {\n return contract;\n}\n\nexport function parseApiContract(value: unknown): PoApiContract {\n if (!Check(PoApiContractSchema, value)) throw new Error('Invalid Po API contract');\n const contract = value as PoApiContract;\n const ids = new Set<string>();\n for (const entry of [...contract.http, ...contract.sockets]) {\n const key = `${entry.scope}:${entry.id}`;\n if (ids.has(key)) throw new Error(`Duplicate API contract operation: ${key}`);\n ids.add(key);\n }\n // Reject non-JSON data rather than silently losing it during export.\n const visit = (item: unknown, ancestors: Set<object>): void => {\n if (item === null || typeof item === 'string' || typeof item === 'boolean') return;\n if (typeof item === 'number' && Number.isFinite(item)) return;\n if (typeof item !== 'object' || ancestors.has(item)) throw new Error('API contracts must contain finite JSON data');\n ancestors.add(item);\n for (const child of Object.values(item)) visit(child, ancestors);\n ancestors.delete(item);\n };\n visit(contract, new Set());\n return contract;\n}\n\nexport interface PoPackageContract {\n packageName: string;\n packageVersion: string;\n scopes: readonly PoApiScope[];\n owners: readonly PoServerBundleOwner[];\n contract?: PoApiContract;\n problem?: string;\n /** Generation-relative compiler output, never imported by the export command. */\n module?: string;\n}\n\nexport interface PoCompiledContracts {\n version: typeof PO_API_CONTRACT_VERSION;\n generation: string;\n fingerprint: string;\n packages: PoPackageContract[];\n}\n\nexport function parseCompiledContracts(value: unknown): PoCompiledContracts {\n const PackageSchema = Type.Object({\n packageName: Named,\n packageVersion: Named,\n scopes: Type.Array(Scope, { uniqueItems: true }),\n owners: Type.Array(Type.Object({ majorMode: Named, layer: Named }), { minItems: 1 }),\n contract: Type.Optional(PoApiContractSchema),\n problem: Type.Optional(Named),\n module: Type.Optional(Type.String({ pattern: '^\\\\./[^\\\\\\\\%?#]+$' })),\n });\n const CompiledSchema = Type.Object({\n version: Type.Literal(PO_API_CONTRACT_VERSION),\n generation: Named,\n fingerprint: Type.String({ pattern: '^[a-f0-9]{64}$' }),\n packages: Type.Array(PackageSchema),\n });\n if (!Check(CompiledSchema, value)) throw new Error('Invalid compiled API contracts');\n const data = value as PoCompiledContracts;\n const names = new Set<string>();\n for (const entry of data.packages) {\n if (names.has(entry.packageName) || entry.module?.split('/').includes('..'))\n throw new Error('Invalid compiled package contract');\n names.add(entry.packageName);\n if (entry.contract !== undefined) parseApiContract(entry.contract);\n }\n return data;\n}\n","import { parseApiContract, type PoCompiledContracts } from '../../schemas/apiContracts';\nimport type { PoApiScope } from '../../schemas/packageApi';\n\nexport interface ApiContractSelection {\n scope: PoApiScope;\n majorMode: string;\n activeLayers: readonly string[];\n compiled: PoCompiledContracts;\n}\n\nexport interface ApiDocuments {\n openapi: Record<string, unknown>;\n asyncapi: Record<string, unknown>;\n manifest: {\n version: 1;\n complete: boolean;\n protocols: Record<string, string>;\n selections: {\n scope: PoApiScope;\n majorMode: string;\n activeLayers: string[];\n generation: string;\n fingerprint: string;\n }[];\n packages: { name: string; version: string; scope: PoApiScope }[];\n gaps: { packageName: string; scope: PoApiScope; reason: string }[];\n dynamic: string[];\n };\n}\n\n/** Stable bytes for diffs and hashes, independent of object insertion order. */\nexport function canonicalContractJson(value: unknown): string {\n const ordered = (item: unknown): unknown => {\n if (Array.isArray(item)) return item.map(ordered);\n if (item !== null && typeof item === 'object')\n return Object.fromEntries(\n Object.entries(item)\n .sort(([a], [b]) => a.localeCompare(b, 'en'))\n .map(([key, child]) => [key, ordered(child)]),\n );\n return item;\n };\n return `${JSON.stringify(ordered(value), null, 2)}\\n`;\n}\n\nconst componentName = (value: string): string =>\n value.replace(/[^a-zA-Z0-9.-]/gu, (character) => `_${character.codePointAt(0)!.toString(16)}_`);\nconst pluginPrefix = (scope: PoApiScope): string =>\n scope === 'global'\n ? '/api/plugins'\n : scope === 'workspace'\n ? '/api/workspaces/{workspaceId}/plugins'\n : '/api/workspaces/{workspaceId}/sessions/{sessionId}/plugins';\n\n/** Compose declarations only. No handlers, lifecycle hooks, or platform resources are loaded. */\nexport function createApiDocuments(selections: readonly ApiContractSelection[]): ApiDocuments {\n const paths: Record<string, Record<string, unknown>> = {};\n const schemas: Record<string, unknown> = {};\n const messages: Record<string, unknown> = {};\n const operations: Record<string, unknown> = {};\n const channelMessages: Record<string, Record<string, unknown>> = { global: {}, workspace: {}, session: {} };\n const manifest: ApiDocuments['manifest'] = {\n version: 1,\n complete: true,\n protocols: {},\n selections: [],\n packages: [],\n gaps: [],\n dynamic: [],\n };\n const socketAddresses = new Set<string>();\n const schema = (id: string, value: unknown): { $ref: string } => {\n const name = componentName(id);\n if (schemas[name] !== undefined) throw new Error(`Conflicting schema: ${id}`);\n // Local $defs references must remain local after moving into components.\n const relocate = (child: unknown): unknown => {\n if (Array.isArray(child)) return child.map(relocate);\n if (child === null || typeof child !== 'object') return child;\n return Object.fromEntries(\n Object.entries(child).map(([key, entry]) => {\n if (key === '$id') throw new Error(`Schema ${id} must use local references, not $id`);\n if (key === '$ref' && typeof entry === 'string') {\n if (!entry.startsWith('#/')) throw new Error(`Unresolved schema reference in ${id}: ${entry}`);\n return [key, `#/components/schemas/${name}${entry.slice(1)}`];\n }\n return [key, relocate(entry)];\n }),\n );\n };\n schemas[name] = relocate(value);\n return { $ref: `#/components/schemas/${name}` };\n };\n for (const selected of [...selections].sort((a, b) => a.scope.localeCompare(b.scope))) {\n manifest.selections.push({\n scope: selected.scope,\n majorMode: selected.majorMode,\n activeLayers: [...selected.activeLayers].sort(),\n generation: selected.compiled.generation,\n fingerprint: selected.compiled.fingerprint,\n });\n for (const entry of [...selected.compiled.packages].sort((a, b) => a.packageName.localeCompare(b.packageName))) {\n if (\n !entry.scopes.includes(selected.scope) ||\n !entry.owners.some(\n (owner) =>\n owner.majorMode === selected.majorMode &&\n (owner.layer === 'default' || selected.activeLayers.includes(owner.layer)),\n )\n )\n continue;\n manifest.packages.push({ name: entry.packageName, version: entry.packageVersion, scope: selected.scope });\n if (!entry.contract || entry.problem) {\n manifest.gaps.push({\n packageName: entry.packageName,\n scope: selected.scope,\n reason: entry.problem ?? 'No contract declaration',\n });\n continue;\n }\n const contract = parseApiContract(entry.contract);\n for (const [name, value] of Object.entries(contract.schemas ?? {}))\n schema(`${entry.packageName}.${selected.scope}.${name}`, value);\n for (const [name, version] of Object.entries(contract.protocols ?? {})) {\n if (manifest.protocols[name] !== undefined && manifest.protocols[name] !== version)\n throw new Error(`Conflicting ${name} protocol versions`);\n manifest.protocols[name] = version;\n }\n manifest.gaps.push(\n ...(contract.gaps ?? []).map((reason) => ({ packageName: entry.packageName, scope: selected.scope, reason })),\n );\n manifest.dynamic.push(...contract.dynamic.map((value) => `${entry.packageName}: ${value}`));\n for (const route of contract.http.filter((route) => route.scope === selected.scope)) {\n const id = `${entry.packageName}.${route.scope}.${route.id}`;\n const mount =\n route.basePath === undefined\n ? ''\n : route.basePath === 'settings'\n ? `${route.scope === 'global' ? '/api' : '/api/workspaces/{workspaceId}'}/settings`\n : `${pluginPrefix(route.scope)}/${route.basePath}`;\n const pathname = `${mount}${route.path === '/' ? '' : route.path}`;\n const method = route.method.toLowerCase();\n const path = (paths[pathname] ??= {});\n if (path[method]) throw new Error(`Conflicting HTTP contract: ${route.method} ${pathname}`);\n const parameters = (route.parameters ?? []).map((parameter) => ({\n ...parameter,\n schema: schema(`${id}.${parameter.in}.${parameter.name}`, parameter.schema),\n }));\n for (const match of pathname.matchAll(/\\{([^}]+)\\}/gu)) {\n if (!parameters.some((parameter) => parameter.in === 'path' && parameter.name === match[1]))\n parameters.push({\n name: match[1],\n in: 'path',\n required: true,\n schema: schema(`${id}.path.${match[1]}`, { type: 'string', minLength: 1 }),\n });\n }\n path[method] = {\n operationId: componentName(id),\n description: route.description,\n parameters,\n security: route.authentication === 'none' ? [] : [{ [route.authentication]: [] }],\n 'x-po': {\n packageName: entry.packageName,\n scope: route.scope,\n ...(route.availability ? { availability: route.availability } : {}),\n },\n ...(route.body\n ? {\n requestBody: {\n required: route.body.required,\n content: Object.fromEntries(\n (route.body.contentTypes ?? [route.body.contentType]).map((mediaType) => [\n mediaType,\n { schema: schema(`${id}.body.${mediaType}`, route.body!.schema) },\n ]),\n ),\n },\n }\n : {}),\n responses: Object.fromEntries(\n Object.entries(route.responses).map(([status, response]) => [\n status,\n {\n description: response.description,\n ...(response.events\n ? {\n 'x-sse-events': Object.fromEntries(\n Object.entries(response.events).map(([name, payload]) => [\n name,\n schema(`${id}.event.${name}`, payload),\n ]),\n ),\n }\n : {}),\n ...(response.schema === undefined\n ? {}\n : {\n content: {\n [response.contentType ?? 'application/json']: {\n schema: schema(`${id}.response.${status}`, response.schema),\n },\n },\n }),\n },\n ]),\n ),\n };\n }\n for (const socket of contract.sockets.filter((socket) => socket.scope === selected.scope)) {\n const address = `${socket.scope}:${socket.direction}:${socket.kind}:${socket.service}:${socket.member}`;\n if (socketAddresses.has(address)) throw new Error(`Conflicting socket contract: ${address}`);\n socketAddresses.add(address);\n for (const channel of socket.scope === 'global' ? ['global'] : [socket.scope, 'global']) {\n const id = componentName(\n `${entry.packageName}.${socket.scope}.${socket.id}${channel === socket.scope ? '' : '.aggregate'}`,\n );\n const addMessage = (suffix: string, payload: unknown): string => {\n const name = `${id}.${suffix}`;\n messages[name] = { name, payload: schema(name, payload) };\n channelMessages[channel][name] = { $ref: `#/components/messages/${name}` };\n return `#/channels/${channel}/messages/${name}`;\n };\n const request = addMessage('input', socket.input);\n const replies = socket.output === undefined ? [] : [{ $ref: addMessage('output', socket.output) }];\n if (socket.errors !== undefined) replies.push({ $ref: addMessage('error', socket.errors) });\n operations[id] = {\n action: socket.direction === 'client-to-server' ? 'receive' : 'send',\n channel: { $ref: `#/channels/${channel}` },\n messages: [{ $ref: request }],\n description: socket.description,\n ...(replies.length ? { reply: { channel: { $ref: `#/channels/${channel}` }, messages: replies } } : {}),\n 'x-po': {\n service: socket.service,\n member: socket.member,\n scope: socket.scope,\n kind: socket.kind,\n transportScope: channel,\n ...(socket.availability ? { availability: socket.availability } : {}),\n },\n };\n }\n }\n }\n }\n manifest.complete = manifest.gaps.length === 0;\n manifest.dynamic = [...new Set(manifest.dynamic)].sort();\n const info = { title: 'Po compiled client API', version: '1' };\n const openapi = {\n openapi: '3.1.1',\n info,\n paths,\n components: {\n schemas: openApiSchemas(schemas),\n securitySchemes: {\n owner: { type: 'apiKey', in: 'header', name: 'x-po-token' },\n device: {\n type: 'apiKey',\n in: 'cookie',\n name: '__Host-po_device',\n description:\n 'Admitted device credentials and purpose-bound sealed channel; see remote authentication operations.',\n },\n },\n },\n };\n const asyncapi = {\n asyncapi: '3.0.0',\n info,\n channels: Object.fromEntries(\n Object.entries(channelMessages).map(([scope, messages]) => [\n scope,\n {\n address:\n scope === 'global'\n ? '/api/ws'\n : scope === 'workspace'\n ? '/api/workspaces/{workspaceId}/ws'\n : '/api/workspaces/{workspaceId}/sessions/{sessionId}/ws',\n ...(scope === 'global'\n ? {}\n : {\n parameters: {\n workspaceId: { description: 'Admitted workspace identity.' },\n ...(scope === 'session' ? { sessionId: { description: 'Session owned by this workspace.' } } : {}),\n },\n }),\n messages,\n description:\n 'Decoded Pi/Chord values over framed CBOR. The global hub socket aggregates all scopes; workspace and session sockets restrict session access and package calls to their addressed scope. Remote paired-device sockets seal the same bytes.',\n },\n ]),\n ),\n operations,\n components: { schemas: asyncApiSchemas(schemas), messages },\n };\n // References must resolve in each portable document before either is published.\n for (const document of [openapi, asyncapi]) {\n const visit = (value: unknown): void => {\n if (value === null || typeof value !== 'object') return;\n for (const [key, child] of Object.entries(value)) {\n if (key === '$ref' && typeof child === 'string') {\n let target: unknown = document;\n for (const segment of child.slice(2).split('/')) {\n if (target === null || typeof target !== 'object') throw new Error(`Unresolved API reference: ${child}`);\n target = Reflect.get(target, segment.replace(/~1/gu, '/').replace(/~0/gu, '~'));\n }\n if (target === undefined) throw new Error(`Unresolved API reference: ${child}`);\n } else visit(child);\n }\n };\n visit(document);\n }\n return { openapi, asyncapi, manifest };\n}\n\n/** TypeBox uses draft-07 tuple keywords; OpenAPI 3.1 evaluates the 2020-12 vocabulary. */\nfunction openApiSchemas(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(openApiSchemas);\n if (value === null || typeof value !== 'object') return value;\n const source = value as Record<string, unknown>;\n const result: Record<string, unknown> = {};\n for (const [key, child] of Object.entries(source)) {\n if (key === 'items' && Array.isArray(child)) {\n if (child.length) result.prefixItems = child.map(openApiSchemas);\n else {\n result.items = false;\n result.maxItems = 0;\n }\n } else if (key === 'additionalItems' && Array.isArray(source.items)) result.items = openApiSchemas(child);\n else if (key === 'dependencies' && child !== null && typeof child === 'object') {\n const required: Record<string, unknown> = {};\n const schemas: Record<string, unknown> = {};\n for (const [name, dependency] of Object.entries(child)) {\n if (Array.isArray(dependency)) required[name] = dependency;\n else schemas[name] = openApiSchemas(dependency);\n }\n if (Object.keys(required).length) result.dependentRequired = required;\n if (Object.keys(schemas).length) result.dependentSchemas = schemas;\n } else if (key === '$schema') result.$schema = 'https://json-schema.org/draft/2020-12/schema';\n else result[key] = openApiSchemas(child);\n }\n return result;\n}\n\nfunction asyncApiSchemas(schemas: Record<string, unknown>): Record<string, unknown> {\n const convert = (value: unknown): unknown => {\n if (Array.isArray(value)) return value.map(convert);\n if (value === null || typeof value !== 'object') return value;\n const result: Record<string, unknown> = {};\n for (const [key, child] of Object.entries(value)) {\n if (key === '$ref' && typeof child === 'string') {\n result[key] = child.replace(/^(#\\/components\\/schemas\\/[^/]+)(.*)$/u, '$1/schema$2');\n } else if (key === 'items' && Array.isArray(child) && child.length === 0) {\n result.items = false;\n result.maxItems = 0;\n } else result[key] = convert(child);\n }\n return result;\n };\n return Object.fromEntries(\n Object.entries(schemas).map(([name, schema]) => [\n name,\n {\n schemaFormat: 'application/schema+json;version=draft-07',\n schema: convert(schema),\n },\n ]),\n );\n}\n","/**\n * What one entry in the composition actually is, for a reader who clicked it.\n *\n * The projection prices the composition and stops there: names, owners, and\n * integer counts, small enough to republish whenever the composition changes.\n * The prose and the schema behind a figure are an order of magnitude larger and\n * are wanted one row at a time, so they travel on request instead. This module\n * is the contract both ends of that request share, and it is deliberately free\n * of Node imports so a browser can hold it too.\n */\n\n/** Where a host mounts this package's API; the segment after /api/plugins/. */\nexport const API_BASE_PATH = 'context';\n\n/** The session a proxied request belongs to; the hub strips it before forwarding. */\nexport const SESSION_QUERY_PARAM = 'session';\n\nexport const ITEM_ROUTE = '/item';\n\nexport const CURRENT_ROUTE = '/current';\n\nexport const NAME_QUERY_PARAM = 'name';\n\nexport const KIND_QUERY_PARAM = 'kind';\n\nexport const CONTEXT_DETAIL_VERSION = 1;\n\n/** Plugin-agnostic status payload: a JSON map keyed by registered tool name. */\nexport const CONTEXT_TOOL_WARNINGS_STATUS_KEY = 'po-context-tool-warnings';\n","import { Type, type TSchema } from 'typebox';\n\nimport { API_BASE_PATH, CURRENT_ROUTE, ITEM_ROUTE } from '../constants/contextApi';\nimport type { PoHttpContract } from './apiContracts';\n\nconst Text = Type.String();\nconst Optional = Type.Optional;\nconst Strings = Type.Array(Text);\nconst Flag = Type.Boolean();\nconst NumberValue = Type.Number();\nexport const ApiErrorSchema = Type.Object({ error: Text, hash: Optional(Text) });\nexport const ApiOkSchema = Type.Object({ ok: Type.Literal(true) });\nconst Json = Type.Unknown({ description: 'Value whose schema is supplied by the selected runtime contribution.' });\n\n/** Common JSON response construction; status and payload remain explicit at the declaration. */\nexport function jsonApiResponses(schema: object | boolean, status = 200): PoHttpContract['responses'] {\n return {\n [status]: { description: 'Successful response', contentType: 'application/json', schema },\n '400': { description: 'Invalid request', schema: ApiErrorSchema },\n '401': { description: 'Authentication required', schema: ApiErrorSchema },\n '403': { description: 'Request is not authorized', schema: ApiErrorSchema },\n '404': { description: 'Resource or capability unavailable', schema: ApiErrorSchema },\n '409': { description: 'Conflicting state', schema: ApiErrorSchema },\n '422': { description: 'Invalid operation', schema: ApiErrorSchema },\n '500': { description: 'Host operation failed', schema: ApiErrorSchema },\n '502': { description: 'Provider failed', schema: ApiErrorSchema },\n '503': { description: 'Service unavailable', schema: ApiErrorSchema },\n };\n}\nexport const WebCompositionSchema = Type.Object({\n id: Text,\n scope: Type.Union([Type.Literal('global'), Type.Literal('workspace'), Type.Literal('session')]),\n revision: NumberValue,\n manifestUrl: Text,\n rawAssetBaseUrl: Text,\n verifiedAssetBaseUrl: Text,\n pluginEntries: Type.Array(Type.Tuple([Text, Text])),\n assetPaths: Strings,\n stylePaths: Strings,\n channels: Strings,\n});\nexport const NativeCompositionSchema = Type.Object({\n id: Text,\n scope: Type.Union([Type.Literal('global'), Type.Literal('workspace'), Type.Literal('session')]),\n revision: NumberValue,\n manifestUrl: Text,\n rawAssetBaseUrl: Text,\n pluginEntries: Type.Array(Type.Tuple([Text, Text])),\n uiEntry: Optional(Text),\n channels: Strings,\n plugins: Strings,\n});\n/** A configured template id and the mount whose compositions offer it. */\nconst TemplateDecisionSchema = Type.Object({\n id: Optional(Text),\n mount: Type.Union([\n Type.Object({ scope: Type.Literal('global') }),\n Type.Object({ scope: Type.Literal('workspace'), workspaceId: Text }),\n ]),\n});\nexport const SessionSummarySchema = Type.Object({\n id: Text,\n workspaceId: Optional(Text),\n webComposition: Optional(WebCompositionSchema),\n nativeComposition: Optional(NativeCompositionSchema),\n name: Text,\n cwd: Text,\n createdAt: Text,\n updatedAt: Text,\n phase: Type.Union([Type.Literal('idle'), Type.Literal('turn'), Type.Literal('compaction'), Type.Literal('retry')]),\n phaseSince: Text,\n attach: Type.Literal('attached'),\n pendingMessageCount: NumberValue,\n everPrompted: Flag,\n awaitingInput: Flag,\n lastSettledAt: Optional(Text),\n git: Optional(Type.Object({ branch: Text, dirty: Flag })),\n profile: Optional(Type.Object({ name: Text, displayName: Optional(Text), iconVersion: Optional(Text) })),\n parentSessionId: Optional(Text),\n sessionProvenance: Optional(Text),\n interaction: Optional(Type.Union([Type.Literal('interactive'), Type.Literal('unattended')])),\n /** The line the session's extension published about background work it runs. */\n activity: Optional(Type.Object({ label: Text, attention: Optional(Flag), since: Optional(Text) })),\n /** Tool calls waiting for the person's approval. */\n pendingApprovalCount: Optional(Type.Integer({ minimum: 1 })),\n pendingSetups: Optional(\n Type.Array(\n Type.Object({\n id: Text,\n name: Text,\n createdAt: Text,\n cwd: Optional(Text),\n setupKind: Optional(Type.Union([Type.Literal('managed-worktree'), Type.Literal('existing-directory')])),\n status: Optional(\n Type.Union([Type.Literal('provisioning'), Type.Literal('failed'), Type.Literal('interrupted')]),\n ),\n errorCode: Optional(\n Type.Union([Type.Literal('SESSION_WORKTREE_PROVISION_FAILED'), Type.Literal('SESSION_UNAVAILABLE')]),\n ),\n }),\n ),\n ),\n groups: Optional(Strings),\n backgroundWorkActive: Optional(Flag),\n /** Present and true for a recorded session the server has not reopened yet. */\n dormant: Optional(Flag),\n});\nexport const WorkspaceSchema = Type.Object({\n kind: Optional(Type.Literal('session')),\n instructions: Optional(Text),\n id: Text,\n root: Text,\n name: Optional(Text),\n available: Optional(Flag),\n sandbox: Optional(Text),\n /**\n * The sandbox's state, live: `starting` while it starts or sessions move in, `running` once the host is linked,\n * `stopping` while it is switched off, `failed` when a start or a switch failed, `unavailable` when its provider\n * cannot run it. On a workspace without `sandbox`, `unavailable` means the sandbox provider cannot run it now, so\n * it cannot be switched on; absent means nothing stands in the way.\n */\n sandboxState: Optional(\n Type.Union([\n Type.Literal('starting'),\n Type.Literal('running'),\n Type.Literal('stopping'),\n Type.Literal('unavailable'),\n Type.Literal('failed'),\n ]),\n ),\n /** A plain sentence for `failed` or `unavailable`, such as 'Docker is not running.'. */\n sandboxReason: Optional(Text),\n});\nconst SavedSession = Type.Object({\n id: Text,\n name: Optional(Text),\n firstMessage: Text,\n createdAt: Text,\n updatedAt: Text,\n});\nconst query = (\n name: string,\n schema: TSchema = Text,\n required = false,\n): NonNullable<PoHttpContract['parameters']>[number] => ({ name, in: 'query', required, schema });\nconst body = (schema: TSchema): NonNullable<PoHttpContract['body']> => ({\n contentType: 'application/json',\n required: true,\n schema,\n});\nconst host = (\n id: string,\n path: string,\n method: PoHttpContract['method'],\n result: TSchema,\n extra: Partial<PoHttpContract> = {},\n): PoHttpContract => ({\n id,\n path,\n method,\n scope: 'global',\n authentication: 'owner',\n description: id,\n responses: jsonApiResponses(result),\n ...extra,\n});\nconst Principal = Type.Object({ issuer: Text, subject: Text });\nconst ProviderGrant = Type.Object({\n tag: Type.Literal('po/grant/v1'),\n signature: Text,\n payload: Type.Object({\n issuer: Text,\n subject: Text,\n grantId: Text,\n deviceKeyId: Text,\n networkId: Text,\n workspaceId: Text,\n callingHostId: Text,\n targetHostId: Text,\n operations: Strings,\n constraints: Type.Record(Text, Type.Union([Text, NumberValue, Flag, Type.Null()])),\n issuedAt: NumberValue,\n notBefore: NumberValue,\n expiresAt: NumberValue,\n redelegable: Type.Literal(false),\n revocationEpoch: Optional(NumberValue),\n }),\n});\nconst ProviderConsent = Type.Object({\n workspaceId: Text,\n providerHostId: Text,\n packageName: Text,\n owner: Principal,\n grants: Type.Array(ProviderGrant, { minItems: 2, maxItems: 2 }),\n createdAt: NumberValue,\n expiresAt: NumberValue,\n});\nconst ConsentCandidate = Type.Object({\n hostId: Text,\n packageName: Text,\n version: Text,\n operations: Strings,\n manifestExpiresAt: NumberValue,\n});\nconst ConsentWorkspaceParameter = { name: 'workspaceId', in: 'path' as const, required: true, schema: Text };\nconst Binary = Type.String({ contentEncoding: 'binary' });\nexport const headlessHttpContracts: PoHttpContract[] = [\n host(\n 'health',\n '/api/health',\n 'GET',\n Type.Object({\n ok: Type.Literal(true),\n role: Type.Literal('hub'),\n protocol: Type.Literal(1),\n sessions: NumberValue,\n }),\n { authentication: 'none' },\n ),\n host('telemetry.browser', '/api/telemetry/browser', 'POST', ApiOkSchema, {\n body: body(\n Type.Object({\n v: Type.Literal(1),\n events: Type.Array(\n Type.Object({\n name: Type.String({ pattern: '^web\\\\.browser\\\\.[a-z_]{1,40}$' }),\n duration_ms: Optional(NumberValue),\n count: Optional(NumberValue),\n level: Optional(Type.Literal('warn')),\n attributes: Optional(\n Type.Record(\n Type.String({ pattern: '^[a-z_]{1,32}$' }),\n Type.Union([Type.String({ maxLength: 256 }), NumberValue]),\n { maxProperties: 12 },\n ),\n ),\n }),\n { maxItems: 10 },\n ),\n }),\n ),\n }),\n host(\n 'compositions',\n '/api/compositions',\n 'GET',\n Type.Object({\n network: Optional(Type.Object({ hostId: Text, networkId: Text, enrollmentGeneration: Optional(NumberValue) })),\n /** The computer's own name, which phones show instead of a tunnel address. */\n displayName: Optional(Text),\n global: Optional(WebCompositionSchema),\n nativeGlobal: Optional(NativeCompositionSchema),\n publicKey: Optional(Text),\n shell: Optional(Type.Object({ publicKey: Text, revision: NumberValue })),\n template: Optional(TemplateDecisionSchema),\n /** The phone app's `native.template` choice, resolved the same way. */\n nativeTemplate: Optional(TemplateDecisionSchema),\n workspaces: Type.Array(\n Type.Object({\n id: Text,\n root: Text,\n /** `null` for a sandboxed workspace: its plugins run in its sandbox, the host has none for it. */\n webComposition: Optional(Type.Union([WebCompositionSchema, Type.Null()])),\n nativeComposition: Optional(Type.Union([NativeCompositionSchema, Type.Null()])),\n providers: Optional(\n Type.Array(\n Type.Object({\n hostId: Text,\n packageName: Text,\n version: Text,\n operations: Type.Array(\n Type.Object({\n scope: Type.Union([Type.Literal('global'), Type.Literal('workspace'), Type.Literal('session')]),\n names: Strings,\n }),\n ),\n provenance: Type.Union([Type.Literal('local'), Type.Literal('own'), Type.Literal('consented')]),\n status: Type.Union([Type.Literal('available'), Type.Literal('unavailable')]),\n reason: Optional(\n Type.Union([\n Type.Literal('manifest-missing'),\n Type.Literal('manifest-expired'),\n Type.Literal('roster-stale'),\n Type.Literal('host-removed'),\n Type.Literal('consent-expired'),\n ]),\n ),\n expiresAt: Optional(NumberValue),\n }),\n ),\n ),\n }),\n ),\n }),\n ),\n host('network.voters.propose', '/api/network/voters', 'POST', Json, {\n body: body(\n Type.Object({\n change: Type.Union([\n Type.Object({ network: Text, epoch: NumberValue, kind: Type.Literal('add'), added: Text, addedKey: Text }),\n Type.Object({ network: Text, epoch: NumberValue, kind: Type.Literal('evict'), removed: Text }),\n ]),\n authorization: Text,\n }),\n ),\n }),\n host(\n 'network.consents.list',\n '/api/network/workspaces/{workspaceId}/consents',\n 'GET',\n Type.Object({ consents: Type.Array(ProviderConsent), candidates: Type.Array(ConsentCandidate) }),\n { parameters: [ConsentWorkspaceParameter] },\n ),\n host('network.consents.approve', '/api/network/workspaces/{workspaceId}/consents', 'POST', ProviderConsent, {\n parameters: [ConsentWorkspaceParameter],\n body: body(\n Type.Object({\n providerHostId: Text,\n packageName: Text,\n grants: Type.Array(ProviderGrant, { minItems: 2, maxItems: 2 }),\n }),\n ),\n responses: jsonApiResponses(ProviderConsent, 201),\n }),\n host(\n 'network.consents.revoke',\n '/api/network/workspaces/{workspaceId}/consents/{providerHostId}/{packageName}',\n 'DELETE',\n Type.Null(),\n {\n parameters: [\n ConsentWorkspaceParameter,\n { name: 'providerHostId', in: 'path', required: true, schema: Text },\n { name: 'packageName', in: 'path', required: true, schema: Text },\n ],\n responses: { '204': { description: 'Provider consent revoked' } },\n },\n ),\n host('directories', '/api/directories', 'GET', Type.Object({ directories: Strings }), { parameters: [query('q')] }),\n host(\n 'directories.children',\n '/api/directories/children',\n 'GET',\n Type.Object({ path: Text, parent: Optional(Text), directories: Strings }),\n { parameters: [query('path')] },\n ),\n host(\n 'directories.workspaces',\n '/api/directories/workspaces',\n 'GET',\n Type.Object({\n root: Text,\n declarations: Type.Array(Type.Object({ name: Text, instructions: Optional(Text), workspaceId: Optional(Text) })),\n }),\n { parameters: [query('path')], availability: 'Host provides declaredWorkspaces' },\n ),\n host('directories.po', '/api/directories/po', 'GET', Type.Object({ directories: Strings })),\n host(\n 'sessions.list',\n '/api/workspaces/{workspaceId}/sessions',\n 'GET',\n Type.Object({ sessions: Type.Array(SessionSummarySchema) }),\n ),\n host('sessions.create', '/api/workspaces/{workspaceId}/sessions', 'POST', Type.Object({ sessionId: Text }), {\n body: body(Type.Object({ name: Optional(Text) })),\n responses: jsonApiResponses(Type.Object({ sessionId: Text }), 201),\n }),\n host(\n 'sessions.createGeneral',\n '/api/sessions',\n 'POST',\n Type.Object({ sessionId: Text, workspace: Optional(WorkspaceSchema), session: Optional(SessionSummarySchema) }),\n {\n body: body(Type.Object({ name: Optional(Text), cwd: Optional(Type.String({ minLength: 1 })) })),\n availability:\n 'Host provides createGeneralSession when cwd is omitted; explicit cwd remains supported for compatibility',\n responses: jsonApiResponses(\n Type.Object({ sessionId: Text, workspace: Optional(WorkspaceSchema), session: Optional(SessionSummarySchema) }),\n 201,\n ),\n },\n ),\n host(\n 'coordinators.home',\n '/api/coordinators/home',\n 'POST',\n Type.Object({ sessionId: Text, created: Type.Boolean() }),\n {\n body: body(\n Type.Object(\n {\n profile: Type.String({ minLength: 1 }),\n model: Optional(Type.String({ minLength: 1 })),\n name: Type.String({ minLength: 1 }),\n },\n { additionalProperties: false },\n ),\n ),\n availability: 'Host provides ensureHomeCoordinator; otherwise 501',\n },\n ),\n host('sessions.get', '/api/workspaces/{workspaceId}/sessions/{sessionId}', 'GET', SessionSummarySchema),\n host('sessions.delete', '/api/workspaces/{workspaceId}/sessions/{sessionId}', 'DELETE', ApiOkSchema),\n host(\n 'sessions.history',\n '/api/workspaces/{workspaceId}/sessions/{sessionId}/history',\n 'GET',\n Type.Object({ sessions: Type.Array(SavedSession) }),\n { availability: 'Host provides sessionHistory' },\n ),\n host('sessions.restart', '/api/workspaces/{workspaceId}/sessions/{sessionId}/restart', 'POST', ApiOkSchema, {\n availability: 'Host provides restartSession',\n }),\n host('sessions.revive', '/api/workspaces/{workspaceId}/sessions/{sessionId}/revive', 'POST', ApiOkSchema, {\n availability: 'Host provides reviveSession',\n }),\n host(\n 'sessions.resume',\n '/api/workspaces/{workspaceId}/sessions/{sessionId}/resume',\n 'POST',\n Type.Object({ sessionId: Text }),\n {\n availability: 'Host provides resumeSession',\n body: body(Type.Object({ targetSessionId: Type.String({ pattern: '^[A-Za-z0-9_-]+$' }) })),\n },\n ),\n host('sessions.file', '/api/workspaces/{workspaceId}/sessions/{sessionId}/file', 'GET', Binary, {\n parameters: [query('path', Text, true)],\n responses: {\n ...jsonApiResponses(Binary),\n '200': { description: 'File bytes, MIME type follows the file extension', contentType: '*/*', schema: Binary },\n },\n }),\n host('workspaces.list', '/api/workspaces', 'GET', Type.Object({ workspaces: Type.Array(WorkspaceSchema) })),\n host('workspaces.admit', '/api/workspaces', 'POST', Type.Object({ workspace: WorkspaceSchema }), {\n body: body(\n Type.Object({\n root: Optional(Text),\n name: Optional(Text),\n declaration: Optional(Text),\n instructions: Optional(Text),\n }),\n ),\n responses: jsonApiResponses(Type.Object({ workspace: WorkspaceSchema }), 201),\n }),\n host('workspaces.get', '/api/workspaces/{workspaceId}', 'GET', Type.Object({ workspace: WorkspaceSchema })),\n host(\n 'workspaces.history',\n '/api/workspaces/{workspaceId}/history',\n 'GET',\n Type.Object({ sessions: Type.Array(SavedSession) }),\n {\n availability: 'Host provides workspaceHistory',\n },\n ),\n host('workspaces.resume', '/api/workspaces/{workspaceId}/resume', 'POST', Type.Object({ sessionId: Text }), {\n availability: 'Host provides resumeWorkspaceSession',\n body: body(Type.Object({ targetSessionId: Type.String({ pattern: '^[A-Za-z0-9_-]+$' }) })),\n }),\n host(\n 'workspaces.removed',\n '/api/workspaces/{workspaceId}/removed',\n 'GET',\n Type.Object({\n sessions: Type.Array(Type.Intersect([SavedSession, Type.Object({ removedAt: Text, purgeAt: Text })])),\n }),\n { availability: 'Host provides removedSessions' },\n ),\n host('workspaces.restoreRemoved', '/api/workspaces/{workspaceId}/removed/{sessionId}/restore', 'POST', ApiOkSchema, {\n availability: 'Host provides restoreRemovedSession',\n }),\n host('workspaces.setSandbox', '/api/workspaces/{workspaceId}', 'PATCH', Type.Object({ workspace: WorkspaceSchema }), {\n availability: 'Host provides setWorkspaceSandbox or setWorkspaceInstructions',\n body: body(\n Type.Union([\n Type.Object({ sandbox: Type.Union([Text, Type.Null()]) }, { additionalProperties: false }),\n Type.Object({ instructions: Text }, { additionalProperties: false }),\n ]),\n ),\n }),\n host('workspaces.remove', '/api/workspaces/{workspaceId}', 'DELETE', ApiOkSchema),\n];\nconst AuthType = Type.Union([Type.Literal('api_key'), Type.Literal('oauth')]);\nconst Provider = Type.Object({\n id: Text,\n name: Text,\n methods: Type.Array(Type.Object({ type: AuthType, label: Text })),\n authenticated: Optional(Type.Object({ type: AuthType, source: Optional(Text) })),\n});\nconst LoginEvent = Type.Union([\n Type.Object({\n type: Type.Literal('info'),\n message: Text,\n links: Optional(Type.Array(Type.Object({ url: Text, label: Optional(Text) }))),\n }),\n Type.Object({ type: Type.Literal('auth_url'), url: Text, instructions: Optional(Text) }),\n Type.Object({\n type: Type.Literal('device_code'),\n userCode: Text,\n verificationUri: Text,\n intervalSeconds: Optional(NumberValue),\n expiresInSeconds: Optional(NumberValue),\n }),\n Type.Object({ type: Type.Literal('progress'), message: Text }),\n]);\nexport const LoginFlowSchema = Type.Object({\n id: Text,\n providerId: Text,\n providerName: Text,\n type: AuthType,\n status: Type.Union([\n Type.Literal('running'),\n Type.Literal('succeeded'),\n Type.Literal('failed'),\n Type.Literal('cancelled'),\n ]),\n events: Type.Array(LoginEvent),\n prompt: Optional(\n Type.Object({\n id: Text,\n type: Type.Union([\n Type.Literal('text'),\n Type.Literal('secret'),\n Type.Literal('select'),\n Type.Literal('manual_code'),\n ]),\n message: Text,\n placeholder: Optional(Text),\n options: Optional(Type.Array(Type.Object({ id: Text, label: Text, description: Optional(Text) }))),\n }),\n ),\n remote: Optional(Flag),\n error: Optional(Text),\n});\nconst Flow = Type.Object({ flow: LoginFlowSchema });\nexport const machineHttpContracts: PoHttpContract[] = [\n host('providers.list', '/providers', 'GET', Type.Object({ providers: Type.Array(Provider) })),\n host(\n 'models.list',\n '/models',\n 'GET',\n Type.Object({ models: Type.Array(Type.Object({ value: Text, label: Text, group: Text })) }),\n ),\n host('providers.logout', '/providers/{providerId}', 'DELETE', ApiOkSchema),\n host('logins.create', '/logins', 'POST', Flow, {\n body: body(Type.Object({ providerId: Text, type: AuthType })),\n responses: jsonApiResponses(Flow, 201),\n }),\n host('logins.get', '/logins/{flowId}', 'GET', Flow),\n host('logins.cancel', '/logins/{flowId}', 'DELETE', Flow),\n host('logins.answer', '/logins/{flowId}/answer', 'POST', Flow, {\n body: body(Type.Object({ promptId: Text, value: Text })),\n }),\n].map((route) => ({ ...route, basePath: 'po' }));\nconst Source = Type.Union([\n Type.Literal('extension'),\n Type.Literal('mcp'),\n Type.Literal('plugin'),\n Type.Literal('core'),\n]);\nconst Detail = Type.Union([\n Type.Object({\n itemKind: Type.Literal('tool'),\n name: Text,\n owner: Text,\n source: Source,\n active: Flag,\n tokens: Type.Object({ schemaTokens: NumberValue, promptTokens: NumberValue, totalTokens: NumberValue }),\n description: Optional(Text),\n promptSnippet: Optional(Text),\n promptGuidelines: Optional(Strings),\n parameters: Optional(Json),\n }),\n Type.Object({\n itemKind: Type.Literal('skill'),\n name: Text,\n owner: Text,\n source: Source,\n active: Type.Literal(true),\n tokens: NumberValue,\n description: Text,\n filePath: Optional(Text),\n modelInvocable: Flag,\n }),\n Type.Object({\n itemKind: Type.Literal('prompt'),\n name: Type.Literal('system'),\n tokens: NumberValue,\n stage: Type.Union([Type.Literal('base'), Type.Literal('effective')]),\n text: Text,\n }),\n]);\nconst ContextProjection = Type.Object({\n version: Type.Literal(1),\n revision: NumberValue,\n selection: Type.Object({ majorMode: Text, domains: Strings, profile: Optional(Text) }),\n groups: Type.Array(\n Type.Object({\n id: Text,\n label: Text,\n kind: Type.Union([\n Type.Literal('major'),\n Type.Literal('minor'),\n Type.Literal('domain'),\n Type.Literal('shared'),\n Type.Literal('core'),\n ]),\n items: Type.Array(\n Type.Object({\n name: Text,\n itemKind: Type.Union([Type.Literal('tool'), Type.Literal('skill')]),\n source: Source,\n owner: Text,\n tokens: NumberValue,\n active: Flag,\n }),\n ),\n tokens: NumberValue,\n inactiveTokens: NumberValue,\n }),\n ),\n totalTokens: NumberValue,\n inactiveTokens: NumberValue,\n systemPrompt: Optional(\n Type.Object({\n tokens: NumberValue,\n stage: Type.Union([Type.Literal('base'), Type.Literal('effective')]),\n }),\n ),\n estimator: Type.Literal('gpt-tokenizer'),\n});\nexport const sessionHttpContracts: PoHttpContract[] = [\n {\n ...host('context.current', CURRENT_ROUTE, 'GET', ContextProjection),\n scope: 'session',\n basePath: API_BASE_PATH,\n },\n {\n ...host('context.item', ITEM_ROUTE, 'GET', Type.Object({ revision: NumberValue, item: Detail }), {\n parameters: [\n query('kind', Type.Union([Type.Literal('tool'), Type.Literal('skill'), Type.Literal('prompt')]), true),\n query('name', Text, true),\n ],\n }),\n scope: 'session',\n basePath: API_BASE_PATH,\n },\n {\n ...host('files.complete', '/', 'GET', Type.Object({ files: Strings }), {\n parameters: [query('q', Type.String({ maxLength: 256 }))],\n }),\n scope: 'session',\n basePath: 'files',\n },\n];\n","import { Type, type TSchema } from 'typebox';\n\nimport type { PoHttpContract } from './apiContracts';\nimport { ApiErrorSchema, ApiOkSchema, jsonApiResponses } from './httpApiContracts';\n\nconst Text = Type.String();\nconst NumberValue = Type.Number();\nconst Optional = Type.Optional;\nconst Flag = Type.Boolean();\nconst JsonObject = Type.Record(\n Text,\n Type.Unknown({\n description: 'WebAuthn ceremony fields supplied and verified by the installed WebAuthn implementation.',\n }),\n);\nconst Tunnel = Type.Union([\n Type.Object({ kind: Type.Literal('quick') }),\n Type.Object({\n kind: Type.Literal('named'),\n hostname: Text,\n name: Optional(Text),\n tokenFile: Optional(Text),\n configFile: Optional(Text),\n }),\n]);\nconst Settings = Type.Object({\n autoCloseEnabled: Flag,\n autoCloseMinutes: NumberValue,\n sessionExpiryEnabled: Flag,\n idleMinutes: NumberValue,\n absoluteHours: NumberValue,\n tunnel: Tunnel,\n});\nconst State = Type.Object({\n status: Type.Union([Type.Literal('off'), Type.Literal('starting'), Type.Literal('on'), Type.Literal('failed')]),\n publicUrl: Optional(Text),\n startedAt: Optional(Text),\n closesAt: Optional(Text),\n error: Optional(Text),\n devices: Type.Array(\n Type.Object({ id: Text, label: Text, userAgent: Text, createdAt: Text, lastSeenAt: Text, self: Flag }),\n ),\n pending: Type.Array(Type.Object({ id: Text, userAgent: Text, edgeIp: Text, createdAt: Text, expiresAt: Text })),\n trustedDevices: Type.Array(\n Type.Object({\n id: Text,\n label: Text,\n platform: Type.Union([Type.Literal('ios'), Type.Literal('android')]),\n createdAt: Text,\n lastSeenAt: Text,\n self: Flag,\n }),\n ),\n settings: Settings,\n});\nconst StateResponse = Type.Object({ state: State });\nconst Trust = Type.Object({ publicKey: Text, fingerprint: Text, revision: NumberValue });\nconst Begun = Type.Object({ ceremonyId: Text, options: JsonObject });\nconst DeviceKeyBegun = Type.Object({ ceremonyId: Text, challenge: Text, kind: Type.Literal('device-key') });\nconst ChannelKeys = Type.Object({ session: Text, protocol: Text, http: Text });\nconst Finish = Type.Object({ ceremonyId: Text, response: JsonObject });\nexport const SealedEnvelopeSchema = Type.Object({ v: Type.Literal(1), n: Text, c: Text });\nexport const SealedHttpRequestSchema = Type.Object({\n v: Type.Literal(1),\n method: Text,\n target: Text,\n headers: Type.Array(Type.Tuple([Text, Text])),\n body: Optional(Text),\n});\nexport const SealedHttpResponseSchema = Type.Object({\n v: Type.Literal(1),\n status: NumberValue,\n headers: Type.Array(Type.Tuple([Text, Text])),\n body: Text,\n});\nconst route = (\n id: string,\n path: string,\n method: PoHttpContract['method'],\n result: TSchema,\n input?: TSchema,\n extra: Partial<PoHttpContract> = {},\n): PoHttpContract => ({\n id: `remote.${id}`,\n path: `/api/remote${path}`,\n method,\n scope: 'global',\n authentication: 'owner',\n description: `Remote Control ${id}.`,\n availability:\n 'Global host provides Remote Control. Tunnel routes additionally enforce device, origin and step-up policy.',\n responses: { ...jsonApiResponses(result), '429': { description: 'Rate limit exceeded', schema: ApiErrorSchema } },\n ...(input ? { body: { contentType: 'application/json', required: true, schema: input } } : {}),\n ...extra,\n});\nconst direct: PoHttpContract[] = [\n route('state', '', 'GET', StateResponse),\n route('enable', '/enable', 'POST', StateResponse),\n route('disable', '/disable', 'POST', StateResponse, undefined, {\n responses: {\n ...jsonApiResponses(StateResponse),\n '202': { description: 'Tunnel closing', schema: Type.Object({ status: Type.Literal('closing') }) },\n },\n }),\n route(\n 'codes',\n '/codes',\n 'POST',\n Type.Object({ ...Trust.properties, code: Text, manualCode: Text, pairUrl: Text, expiresAt: Text }),\n undefined,\n {\n responses: jsonApiResponses(\n Type.Object({ ...Trust.properties, code: Text, manualCode: Text, pairUrl: Text, expiresAt: Text }),\n 201,\n ),\n },\n ),\n route('approve', '/pairing/{id}/approve', 'POST', StateResponse),\n route('deny', '/pairing/{id}/deny', 'POST', StateResponse),\n route('revoke', '/devices/{id}', 'DELETE', StateResponse),\n route('settings', '/settings', 'PUT', Type.Object({ settings: Settings }), Type.Partial(Settings)),\n route(\n 'passkeys',\n '/passkeys',\n 'GET',\n Type.Object({\n support: Type.Union([\n Type.Object({ supported: Type.Literal(true), rpId: Text }),\n Type.Object({ supported: Type.Literal(false), reason: Text }),\n ]),\n credentials: Type.Array(Type.Object({ id: Text, label: Text, createdAt: Text, lastUsedAt: Text })),\n }),\n ),\n route('passkeys.remove', '/passkeys/{id}', 'DELETE', ApiOkSchema),\n route('register.begin', '/passkeys/register/begin', 'POST', Begun, undefined, { authentication: 'device' }),\n route('register.finish', '/passkeys/register/finish', 'POST', Type.Object({ id: Text }), Finish, {\n authentication: 'device',\n }),\n route('authenticate.begin', '/passkeys/authenticate/begin', 'POST', Begun, undefined, { authentication: 'none' }),\n route(\n 'authenticate.finish',\n '/passkeys/authenticate/finish',\n 'POST',\n Type.Object({ ok: Type.Literal(true), hostPublicKey: Text }),\n Finish,\n { authentication: 'none' },\n ),\n route('challenge', '/challenge', 'POST', Type.Union([Begun, DeviceKeyBegun]), Type.Object({ action: Text }), {\n authentication: 'device',\n }),\n route(\n 'trusted-devices.register',\n '/trusted-devices',\n 'POST',\n Type.Object({ trustedDeviceId: Text }),\n Type.Object({\n identityPublicKey: Text,\n stepUpPublicKey: Text,\n label: Text,\n platform: Type.Union([Type.Literal('ios'), Type.Literal('android')]),\n identityProof: Text,\n stepUpProof: Text,\n }),\n {\n authentication: 'device',\n description: 'Registers a native device from a sealed, QR-approved pairing session.',\n responses: jsonApiResponses(Type.Object({ trustedDeviceId: Text }), 201),\n },\n ),\n route('trusted-devices.revoke', '/trusted-devices/{id}', 'DELETE', StateResponse, undefined, {\n description: 'Revokes a trusted native device. Local callers, or sealed callers with verified step-up.',\n }),\n route(\n 'device-auth.challenge',\n '/device-auth/challenge',\n 'POST',\n Type.Object({ challengeId: Text, challenge: Text, hostPublicKey: Text, attestation: Text }),\n Type.Object({ trustedDeviceId: Text, nonce: Text }),\n { authentication: 'none' },\n ),\n route(\n 'device-auth.authenticate',\n '/device-auth/authenticate',\n 'POST',\n Type.Object({ ok: Type.Literal(true) }),\n Type.Object({ challengeId: Text, trustedDeviceId: Text, signature: Text, channels: ChannelKeys }),\n { authentication: 'none' },\n ),\n route(\n 'channel',\n '/channel',\n 'POST',\n ApiOkSchema,\n Type.Object({\n clientPublicKey: Text,\n scope: Type.Union([Type.Literal('session'), Type.Literal('protocol'), Type.Literal('http')]),\n }),\n { authentication: 'device' },\n ),\n route('request', '/request', 'POST', SealedEnvelopeSchema, SealedEnvelopeSchema, {\n authentication: 'device',\n description:\n 'Sealed HTTP gateway. Decrypted requests/responses use the SealedHttpRequest and SealedHttpResponse envelopes.',\n }),\n route(\n 'pair',\n '/pair',\n 'POST',\n Type.Object({ requestId: Text, status: Type.Literal('pending') }),\n Type.Object({ code: Type.String({ minLength: 1 }) }),\n {\n authentication: 'none',\n responses: {\n ...jsonApiResponses(Type.Object({ requestId: Text, status: Type.Literal('pending') }), 202),\n '410': { description: 'Pairing code is no longer valid', schema: ApiErrorSchema },\n },\n },\n ),\n route(\n 'pair.status',\n '/pair/status',\n 'GET',\n Type.Object({\n status: Type.Union([\n Type.Literal('pending'),\n Type.Literal('approved'),\n Type.Literal('denied'),\n Type.Literal('expired'),\n Type.Literal('consumed'),\n ]),\n bundleTrust: Optional(Trust),\n hostPublicKey: Optional(Text),\n }),\n undefined,\n { authentication: 'none', parameters: [{ name: 'request', in: 'query', required: true, schema: Text }] },\n ),\n];\nexport const remoteHttpContracts: PoHttpContract[] = [\n route('frontend', '/frontend', 'POST', ApiOkSchema, Type.Object({ origin: Text }), {\n authentication: 'owner',\n availability: 'Internal loopback frontend registration; blocked by the browser proxy.',\n parameters: [{ name: 'x-po-web-registration', in: 'header', required: true, schema: Text }],\n }),\n ...direct,\n ...direct.map((operation) => ({\n ...operation,\n id: `${operation.id}.plugin`,\n basePath: 'remote',\n path: operation.path.slice('/api/remote'.length) || '/',\n authentication: 'owner' as const,\n availability: 'Global Remote Control plugin mount, reached through the authenticated headless listener.',\n })),\n {\n id: 'remote.pair.page',\n scope: 'global',\n path: '/pair',\n method: 'GET',\n authentication: 'none',\n availability: 'Remote listener only',\n description: 'Pairing and passkey bootstrap page.',\n responses: { '200': { description: 'Pairing page', contentType: 'text/html', schema: Text } },\n },\n];\nconst Asset = Type.Object({\n path: Text,\n sha256: Type.String({ pattern: '^[a-f0-9]{64}$' }),\n byteLength: Type.Integer({ minimum: 0 }),\n contentType: Text,\n});\nconst Signed = Type.Object({\n manifest: Type.Object({\n version: Type.Literal(2),\n revision: Type.Integer({ minimum: 1 }),\n builtAt: NumberValue,\n assets: Type.Array(Asset),\n }),\n signature: Text,\n publicKey: Text,\n});\nexport const bundleHttpContracts: PoHttpContract[] = [\n ...['/bundle-manifest.json', '/api/web-plugins/{id}/{revision}/manifest'].flatMap((path) =>\n (['GET', 'HEAD'] as const).map((method): PoHttpContract => ({\n id: `bundle.${path}.${method}`,\n scope: 'global',\n path,\n method,\n authentication: 'owner',\n availability: 'Host publishes a web bundle',\n description: 'Read an immutable signed browser bundle manifest.',\n responses:\n method === 'HEAD'\n ? { '200': { description: 'Manifest response headers' }, '404': { description: 'Bundle not published' } }\n : jsonApiResponses(Signed),\n })),\n ),\n ...['/bundle-assets/{revision}/{assetPath}', '/api/web-plugins/{id}/{revision}/assets/{assetPath}'].flatMap((path) =>\n (['GET', 'HEAD'] as const).map((method): PoHttpContract => ({\n id: `asset.${path}.${method}`,\n scope: 'global',\n path,\n method,\n authentication: 'owner',\n availability: 'Host publishes a web bundle',\n description: 'Read an asset from the signed manifest. assetPath may contain multiple path segments.',\n responses: {\n '200': {\n description: 'Manifest-listed asset, original MIME type',\n ...(method === 'GET' ? { contentType: '*/*', schema: Type.String({ contentEncoding: 'binary' }) } : {}),\n },\n '404': { description: 'Asset not published' },\n },\n })),\n ),\n];\n","import { ChordError, createHost, isChordError, method, type Frame, type Host, type Link } from '@earendil-works/chord';\nimport type { Schema } from '@earendil-works/pi-schema';\nimport type { Static, TSchema } from 'typebox';\n\n/** Name of the Po server host; every Po contract places its objects on it. */\nexport const PO_SERVER_HOST = 'server';\n\n/** One method's argument and result schemas; a missing one means no arguments or a void result. */\nexport interface PoMethodSchemas {\n readonly args?: TSchema;\n readonly result?: TSchema;\n}\n\n/**\n * Gives a TypeBox schema the pi-schema type Chord reads. A TypeBox schema is JSON Schema, so Chord validates it\n * unchanged and contract fingerprints stay the same; only its static type moves.\n */\nexport function chordSchema<S extends TSchema>(schema: S): Schema<Static<S>> {\n return schema as unknown as Schema<Static<S>>;\n}\n\n/** `chordSchema` over a variant's state table. */\nexport function chordStates<T extends Record<string, TSchema>>(schemas: T): { [K in keyof T]: Schema<Static<T[K]>> } {\n return schemas as unknown as { [K in keyof T]: Schema<Static<T[K]>> };\n}\n\n/**\n * What Chord's `method(args, result)` returns. Chord keeps `MethodSpec` private, so declaration\n * emit cannot name an inferred `method()` result; this alias can.\n */\nexport type ChordMethod<A extends Schema | undefined, R extends Schema | undefined> = Omit<\n ReturnType<typeof method<Schema, Schema>>,\n 'args' | 'result'\n> & { readonly args: A; readonly result: R };\n\nexport type ChordMethods<T extends Record<string, PoMethodSchemas>> = {\n [K in keyof T]: ChordMethod<\n T[K] extends { readonly args: infer A extends TSchema } ? Schema<Static<A>> : undefined,\n T[K] extends { readonly result: infer R extends TSchema } ? Schema<Static<R>> : undefined\n >;\n};\n\n/** Chord method specs for a schema table, typed so contracts built from them stay nameable. */\nexport function chordMethods<T extends Record<string, PoMethodSchemas>>(schemas: T): ChordMethods<T> {\n return Object.fromEntries(\n Object.entries<PoMethodSchemas>(schemas).map(([name, { args, result }]) => [\n name,\n result !== undefined\n ? method(args && chordSchema(args), chordSchema(result))\n : args !== undefined\n ? method(chordSchema(args))\n : method(),\n ]),\n ) as ChordMethods<T>;\n}\n\n/** A transport that carries text messages in order; `send` may be asynchronous (sealing). */\nexport interface TextPort {\n send(text: string): void;\n close(): void;\n}\n\n/**\n * A Chord link over any ordered text transport. Feed received text to `deliver` and the\n * transport's end to `ended`.\n */\nexport function createTextLink(port: TextPort): {\n link: Link;\n deliver(text: string): void;\n ended(reason: string): void;\n} {\n let handler: ((frame: Frame) => void) | undefined;\n let queue: Frame[] = [];\n const closeHandlers = new Set<(reason: string) => void>();\n let closed = false;\n const ended = (reason: string): void => {\n if (closed) return;\n closed = true;\n queue = [];\n try {\n port.close();\n } finally {\n for (const close of closeHandlers) close(reason);\n closeHandlers.clear();\n }\n };\n const link: Link = {\n get closed() {\n return closed;\n },\n send(frame) {\n if (closed) return undefined;\n const text = JSON.stringify(frame);\n port.send(text);\n // Reported like Chord's WebSocket link, so this link joins its flow control.\n return text.length;\n },\n receive(next) {\n handler = next;\n for (const frame of queue.splice(0)) next(frame);\n },\n onClose(close) {\n if (closed) close('closed');\n else closeHandlers.add(close);\n },\n close(reason = 'closed') {\n if (closed) return;\n try {\n port.send(JSON.stringify({ t: 'bye', reason }));\n } catch {\n // The transport may already be gone.\n }\n ended(reason);\n },\n };\n return {\n link,\n deliver(text) {\n if (closed) return;\n let frame: Frame;\n try {\n frame = JSON.parse(text) as Frame;\n if (frame === null || typeof frame !== 'object' || typeof (frame as { t?: unknown }).t !== 'string')\n throw new TypeError('not a frame');\n } catch {\n link.close('protocol error');\n return;\n }\n if ((frame as { t: string }).t === 'bye') {\n ended((frame as { reason?: string }).reason ?? 'peer closed');\n return;\n }\n if (handler === undefined) queue.push(frame);\n else handler(frame);\n },\n ended,\n };\n}\n\n/**\n * Whether `error` means this client's code is older than the server's. Chord refuses a changed contract with\n * `contract_mismatch`, which it reports to a client as `upgrade_required`; another protocol version is reported the\n * same way by `createProtocolClient`. Retrying cannot help, only new client code can.\n */\nexport function isUpdateRequired(error: unknown): boolean {\n return isChordError(error, 'contract_mismatch') || isChordError(error, 'upgrade_required');\n}\n\n/** `update_required` is heard once, before the closing link's `disconnected`; the client never connects again. */\nexport type ProtocolConnectionState = 'connected' | 'disconnected' | 'update_required';\n\n/** A browser or native Chord client host with one reconnectable link to the Po server. */\nexport interface ProtocolClient {\n readonly host: Host;\n readonly connected: boolean;\n /** The server needs newer client code; `connect` rejects from now on. */\n readonly updateRequired: boolean;\n connect(): Promise<void>;\n /** Closes the current link; listeners hear `disconnected`. */\n disconnect(): void;\n /** Hands over the error a held reference ended with; an update-required error stops the client for good. */\n reportError(error: unknown): void;\n dispose(): void;\n onConnectionStateChange(listener: (change: { state: ProtocolConnectionState }) => void): () => void;\n}\n\nexport function createProtocolClient(options: { name?: string; openLink: () => Promise<Link> }): ProtocolClient {\n const host = createHost({ name: options.name ?? 'client', kind: 'client', self: { host: true } });\n const listeners = new Set<(change: { state: ProtocolConnectionState }) => void>();\n let current: Link | undefined;\n let connecting: Promise<void> | undefined;\n let disposed = false;\n let updateError: unknown;\n const emit = (state: ProtocolConnectionState) => {\n for (const listener of Array.from(listeners)) listener({ state });\n };\n const reportError = (error: unknown): void => {\n if (disposed || updateError !== undefined || !isUpdateRequired(error)) return;\n updateError = error;\n emit('update_required');\n current?.close();\n };\n return {\n host,\n get connected() {\n return current !== undefined && !current.closed;\n },\n get updateRequired() {\n return updateError !== undefined;\n },\n connect() {\n if (disposed) return Promise.reject(new Error('The protocol client is disposed.'));\n if (updateError !== undefined) return Promise.reject(updateError);\n if (current !== undefined && !current.closed) return Promise.resolve();\n connecting ??= (async () => {\n try {\n const link = await options.openLink();\n if (disposed) {\n link.close();\n throw new Error('The protocol client is disposed.');\n }\n current = link;\n link.onClose(() => {\n if (current !== link) return;\n current = undefined;\n emit('disconnected');\n });\n host.connect(link, {\n principal: { host: PO_SERVER_HOST },\n onProtocolMismatch: ({ local, peer }) =>\n reportError(\n new ChordError(\n 'upgrade_required',\n `The Po server speaks Chord protocol ${peer}, this client speaks ${local}.`,\n ),\n ),\n });\n if (!link.closed) emit('connected');\n } finally {\n connecting = undefined;\n }\n })();\n return connecting;\n },\n disconnect() {\n current?.close();\n },\n reportError,\n dispose() {\n if (disposed) return;\n disposed = true;\n current?.close();\n listeners.clear();\n void host.close().catch(() => undefined);\n },\n onConnectionStateChange(listener) {\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n };\n}\n","import { hostNamed, remote, type Ref } from '@earendil-works/chord';\nimport { Type } from 'typebox';\n\nimport { chordMethods, chordSchema, chordStates, PO_SERVER_HOST } from './protocolContracts';\nimport type { JsonValue } from './sessionProtocol';\n\nconst Json = Type.Unsafe<JsonValue>({});\n\nexport const ChannelFrameSchema = Type.Object({ type: Type.String({ minLength: 1 }), payload: Json });\n/** Latest payload per extension channel frame type. */\nexport const PoChannelsStateSchema = Type.Record(Type.String(), Json);\n\n/** A session's extension channels as seen by one connection. */\nexport const PoChannelsContract = remote('po.channels', {\n version: 1,\n host: hostNamed(PO_SERVER_HOST),\n input: chordSchema(Type.Object({ sessionId: Type.String({ minLength: 1 }) })),\n variants: {\n default: {\n state: chordStates({ latest: PoChannelsStateSchema }),\n methods: chordMethods({ receive: { args: ChannelFrameSchema } }),\n },\n },\n});\n\nexport type ChannelsRef = Ref<typeof PoChannelsContract>;\n","import type { JsonValue } from '@earendil-works/chord';\nimport type { Context } from '@earendil-works/chord/context';\nimport { type Static, type TSchema, Type } from 'typebox';\nimport { Check } from 'typebox/value';\n\nimport type { PoApiMount, PoApiScope } from './packageApi';\n\n/** The address is always exact. A workspace call never resolves to a global service. */\nexport const PoPluginMountSchema = Type.Union([\n Type.Object({ scope: Type.Literal('global') }, { additionalProperties: false }),\n Type.Object(\n { scope: Type.Literal('workspace'), workspaceId: Type.String({ minLength: 1 }) },\n { additionalProperties: false },\n ),\n Type.Object(\n { scope: Type.Literal('session'), sessionId: Type.String({ minLength: 1 }) },\n { additionalProperties: false },\n ),\n]);\n\nexport const PoPluginCallSchema = Type.Object(\n {\n mount: PoPluginMountSchema,\n service: Type.String({ minLength: 1 }),\n method: Type.String({ minLength: 1 }),\n input: Type.Unknown(),\n },\n { additionalProperties: false },\n);\n\nexport type PoPluginCall = Static<typeof PoPluginCallSchema>;\nexport type PoPluginDirection = 'client-to-server' | 'server-to-client';\nexport interface PoPluginCaller {\n /** Authenticated connection that owns client capabilities and leases. */\n connectionId?: string;\n /** Aborted when the authenticated browser connection closes. Never supplied over the wire. */\n signal?: AbortSignal;\n}\n\n/** Chord method shared by all authenticated Po clients. */\nexport interface PoPluginService {\n invoke(\n call: {\n mount: PoApiMount;\n service: string;\n method: string;\n input: JsonValue;\n },\n context: Context,\n ): Promise<JsonValue>;\n}\n\nexport interface PoPluginMethod<TInput extends TSchema, TOutput extends TSchema> {\n readonly service: string;\n readonly method: string;\n readonly scope: PoApiScope;\n readonly direction: PoPluginDirection;\n readonly input: TInput;\n readonly output: TOutput;\n}\n\nexport function definePoPluginMethod<TInput extends TSchema, TOutput extends TSchema>(\n definition: PoPluginMethod<TInput, TOutput>,\n): PoPluginMethod<TInput, TOutput> {\n if (!definition.service || !definition.method) throw new Error('Plugin service and method must be named.');\n return definition;\n}\n\nexport function poPluginMountKey(mount: PoApiMount): string {\n if (!Check(PoPluginMountSchema, mount)) throw new Error('Invalid plugin mount.');\n switch (mount.scope) {\n case 'global':\n return 'global';\n case 'workspace':\n return `workspace:${mount.workspaceId}`;\n case 'session':\n return `session:${mount.sessionId}`;\n }\n}\n\nexport class PoPluginCallError extends Error {\n constructor(\n readonly code: 'INVALID_CALL' | 'METHOD_NOT_FOUND' | 'INVALID_INPUT' | 'INVALID_OUTPUT',\n message: string,\n ) {\n super(message);\n this.name = 'PoPluginCallError';\n }\n}\n\nexport interface PoPluginRegistry {\n register<TInput extends TSchema, TOutput extends TSchema>(\n mount: PoApiMount,\n definition: PoPluginMethod<TInput, TOutput>,\n handler: (input: Static<TInput>, caller: PoPluginCaller) => Static<TOutput> | Promise<Static<TOutput>>,\n ): () => void;\n invoke(call: unknown, direction: PoPluginDirection, caller?: PoPluginCaller): Promise<unknown>;\n dispose(): void;\n}\n\n/** Transport-neutral dispatch, shared by Chord server services and client capability hosts. */\nexport function createPoPluginRegistry(): PoPluginRegistry {\n const handlers = new Map<\n string,\n {\n definition: PoPluginMethod<TSchema, TSchema>;\n handler: (input: never, caller: PoPluginCaller) => unknown;\n }\n >();\n let disposed = false;\n const keyOf = (mount: PoApiMount, service: string, method: string, direction: PoPluginDirection): string =>\n `${poPluginMountKey(mount)}\\0${direction}\\0${service}\\0${method}`;\n return {\n register(mount, definition, handler) {\n if (disposed) throw new Error('Plugin registry is disposed.');\n if (mount.scope !== definition.scope)\n throw new Error(`Method '${definition.service}.${definition.method}' requires ${definition.scope} scope.`);\n const key = keyOf(mount, definition.service, definition.method, definition.direction);\n if (handlers.has(key))\n throw new Error(`Plugin method '${definition.service}.${definition.method}' is already mounted.`);\n const entry = { definition, handler } as typeof handlers extends Map<string, infer TValue> ? TValue : never;\n handlers.set(key, entry);\n return () => {\n if (handlers.get(key) === entry) handlers.delete(key);\n };\n },\n async invoke(value, direction, caller = {}) {\n if (disposed) throw new Error('Plugin registry is disposed.');\n if (!Check(PoPluginCallSchema, value)) throw new PoPluginCallError('INVALID_CALL', 'Invalid plugin call.');\n const call = value as PoPluginCall;\n const entry = handlers.get(keyOf(call.mount, call.service, call.method, direction));\n if (!entry)\n throw new PoPluginCallError(\n 'METHOD_NOT_FOUND',\n `Plugin method '${call.service}.${call.method}' is not mounted at this scope.`,\n );\n if (!Check(entry.definition.input, call.input))\n throw new PoPluginCallError('INVALID_INPUT', `Invalid input for '${call.service}.${call.method}'.`);\n const output = await entry.handler(call.input as never, caller);\n if (!Check(entry.definition.output, output))\n throw new PoPluginCallError('INVALID_OUTPUT', `Invalid output from '${call.service}.${call.method}'.`);\n return output;\n },\n dispose() {\n disposed = true;\n handlers.clear();\n },\n };\n}\n\nexport async function invokePoPluginMethod<TInput extends TSchema, TOutput extends TSchema>(\n transport: (call: PoPluginCall) => Promise<unknown>,\n mount: PoApiMount,\n definition: PoPluginMethod<TInput, TOutput>,\n input: Static<TInput>,\n): Promise<Static<TOutput>> {\n if (mount.scope !== definition.scope)\n throw new Error(`Method '${definition.service}.${definition.method}' requires ${definition.scope} scope.`);\n if (!Check(definition.input, input))\n throw new PoPluginCallError('INVALID_INPUT', `Invalid input for '${definition.service}.${definition.method}'.`);\n const output = await transport({ mount, service: definition.service, method: definition.method, input });\n if (!Check(definition.output, output))\n throw new PoPluginCallError('INVALID_OUTPUT', `Invalid output from '${definition.service}.${definition.method}'.`);\n return output;\n}\n","import { hostNamed, remote, type Ref } from '@earendil-works/chord';\nimport { Type, type Static } from 'typebox';\n\nimport type { HomeSnapshot } from './home';\nimport { NativeCompositionSchema, SessionSummarySchema, WorkspaceSchema } from './httpApiContracts';\nimport { PoPluginCallSchema } from './pluginProtocol';\nimport { chordMethods, chordSchema, chordStates, PO_SERVER_HOST } from './protocolContracts';\nimport type { JsonValue } from './sessionProtocol';\n\nconst Text = Type.String();\nconst Json = Type.Unsafe<JsonValue>({});\n\n/** A live session frame every hub client needs (notification entries and agent dialogs) until it is acknowledged. */\nexport const HubNoticeSchema = Type.Object({ id: Text, sessionId: Text, frame: Type.Record(Text, Json) });\nexport type HubNotice = Static<typeof HubNoticeSchema>;\n/** Native UI delivery metadata is HTTP-only; adding it must not refuse existing po.hub@1 clients. */\nexport const HubSessionSchema = Type.Object({\n ...SessionSummarySchema.properties,\n nativeComposition: Type.Optional(Type.Omit(NativeCompositionSchema, ['uiEntry'])),\n});\nexport type HubSessionView = Static<typeof HubSessionSchema>;\n/** Instructions are HTTP-only so existing po.hub@1 clients keep the same wire contract. */\nexport const HubWorkspaceSchema = Type.Omit(WorkspaceSchema, ['instructions']);\nexport type HubWorkspaceView = Static<typeof HubWorkspaceSchema>;\n\n/** Per shared mount (`global`, `workspace:<id>`), a counter that rises when its plugin composition changes. */\nexport const HubCompositionsSchema = Type.Record(Text, Type.Integer({ minimum: 0 }));\n\nconst HubState = {\n sessions: Type.Record(Text, HubSessionSchema),\n workspaces: Type.Record(Text, HubWorkspaceSchema),\n pending: Type.Array(HubNoticeSchema),\n compositions: HubCompositionsSchema,\n};\nexport const PoHubStateSchema = Type.Object(HubState);\n\n/** What one connection may see: its sessions, its workspaces, and the notices it has not acknowledged. */\nexport const PoHubContract = remote('po.hub', {\n version: 1,\n host: hostNamed(PO_SERVER_HOST),\n input: chordSchema(Type.Object({})),\n variants: {\n default: {\n state: chordStates(HubState),\n methods: chordMethods({\n readHome: {\n args: Type.Object({\n offset: Type.Optional(Type.Integer({ minimum: 0 })),\n limit: Type.Optional(Type.Integer({ minimum: 1 })),\n source: Type.Optional(Text),\n workspaceId: Type.Optional(Text),\n }),\n result: Type.Unsafe<HomeSnapshot>({}),\n },\n invoke: { args: PoPluginCallSchema, result: Json },\n ackNotice: { args: Type.Object({ id: Text }) },\n }),\n },\n },\n});\n\nexport type HubRef = Ref<typeof PoHubContract>;\n\n/**\n * Per topic (`global:<name>`, `workspace:<id>:<name>`), a counter the host raises when that data changes, so a\n * client fetches it again instead of polling. A separate contract: a host without it leaves clients on\n * fetch-on-open rather than refusing the whole hub as out of date.\n */\nexport const HubRevisionsSchema = Type.Record(Text, Type.Integer({ minimum: 0 }));\n\nexport const PoHubRevisionsContract = remote('po.hub.revisions', {\n version: 1,\n host: hostNamed(PO_SERVER_HOST),\n input: chordSchema(Type.Object({})),\n variants: { default: { state: chordStates({ revisions: HubRevisionsSchema }), methods: chordMethods({}) } },\n});\n\nexport type HubRevisionsRef = Ref<typeof PoHubRevisionsContract>;\n","import { hostNamed, remote, type Ref } from '@earendil-works/chord';\nimport { Type } from 'typebox';\n\nimport { chordSchema, chordStates, PO_SERVER_HOST } from './protocolContracts';\nimport type { JsonValue } from './sessionProtocol';\n\n/** The thread's latest frame: `transcript_state` while its child runs, `transcript_ready` once it has finished. */\nexport const PoThreadFrameSchema = Type.Union([\n Type.Null(),\n Type.Intersect([Type.Object({ type: Type.String() }), Type.Record(Type.String(), Type.Unsafe<JsonValue>({}))]),\n]);\n\n/** One child thread of a session, followed only while someone holds it. */\nexport const PoThreadContract = remote('po.thread', {\n version: 1,\n host: hostNamed(PO_SERVER_HOST),\n input: chordSchema(\n Type.Object({ sessionId: Type.String({ minLength: 1 }), threadId: Type.String({ minLength: 1 }) }),\n ),\n variants: {\n default: { state: chordStates({ frame: PoThreadFrameSchema }) },\n },\n});\n\nexport type ThreadRef = Ref<typeof PoThreadContract>;\n","import { Type, type TSchema } from 'typebox';\n\nimport type { PoSocketContract } from './apiContracts';\nimport { ChannelFrameSchema, PoChannelsStateSchema } from './protocolChannelsContract';\nimport { chordMethods, type PoMethodSchemas } from './protocolContracts';\nimport { PoHubStateSchema } from './protocolHubContract';\nimport { PoThreadFrameSchema } from './protocolThreadContract';\nimport type { JsonValue } from './sessionProtocol';\n\nconst Text = Type.String();\nconst NumberValue = Type.Number();\nconst Flag = Type.Boolean();\nconst Json = Type.Unsafe<JsonValue>(\n Type.Unknown({\n description:\n 'Strict JSON application value supplied by the active tool, journal entry, or extension; validated by the Pi codec.',\n }),\n);\nconst Optional = Type.Optional;\nconst Strings = Type.Array(Text);\nconst Model = Type.Object({ provider: Text, id: Text });\nconst Thinking = Type.Union([\n Type.Literal('off'),\n Type.Literal('minimal'),\n Type.Literal('low'),\n Type.Literal('medium'),\n Type.Literal('high'),\n Type.Literal('max'),\n Type.Literal('xhigh'),\n]);\nconst Phase = Type.Union([\n Type.Literal('idle'),\n Type.Literal('turn'),\n Type.Literal('compaction'),\n Type.Literal('retry'),\n]);\nconst Image = Type.Object({ type: Type.Literal('image'), data: Text, mimeType: Text });\nconst TextPart = Type.Object({ type: Type.Literal('text'), text: Text });\nconst ThinkingPart = Type.Object({\n type: Type.Literal('thinking'),\n thinking: Text,\n redacted: Optional(Type.Literal(true)),\n});\nconst Content = Type.Union([Image, TextPart]);\nconst Usage = Type.Object({\n input: NumberValue,\n output: NumberValue,\n cacheRead: NumberValue,\n cacheWrite: NumberValue,\n total: NumberValue,\n});\n/** `timeZone` is the sender's device IANA zone; additive and optional so older clients and hosts still agree. */\nconst Message = Type.Object({ text: Text, images: Optional(Type.Array(Image)), timeZone: Optional(Text) });\nconst Lifecycle = Type.Object({\n revision: NumberValue,\n operation: Type.Union([\n Type.Null(),\n Type.Object({\n id: Text,\n kind: Type.Union([Type.Literal('run'), Type.Literal('compaction'), Type.Literal('navigation')]),\n status: Type.Union([Type.Literal('open'), Type.Literal('aborting')]),\n }),\n ]),\n paused: Flag,\n queue: Type.Array(\n Type.Object({\n id: Text,\n text: Text,\n images: Optional(Type.Array(Image)),\n delivery: Type.Union([Type.Literal('steer'), Type.Literal('followUp'), Type.Literal('nextRun')]),\n scheduling: Type.Union([Type.Literal('automatic'), Type.Literal('held')]),\n disposition: Type.Union([Type.Literal('pending'), Type.Literal('handoff')]),\n }),\n ),\n});\nconst Frame = Type.Intersect([Type.Object({ type: Text }), Type.Record(Text, Json)], {\n description: 'Discriminated extension presentation frame; selected channel schemas describe package payloads.',\n});\nconst ProtocolEvent = Type.Object({ sequence: NumberValue, frame: Frame });\nexport const SessionServiceStateSchema = Type.Object({\n snapshot: Type.Object({\n fastMode: Flag,\n locked: Flag,\n lifecycle: Optional(Lifecycle),\n }),\n presentation: Optional(\n Type.Object({\n revision: NumberValue,\n dropped: NumberValue,\n resetRevision: Optional(NumberValue),\n events: Type.Array(ProtocolEvent),\n projections: Type.Array(ProtocolEvent),\n }),\n ),\n live: Optional(\n Type.Object({\n phase: Phase,\n message: Optional(\n Type.Object({\n role: Type.Literal('assistant'),\n content: Type.Array(Type.Union([TextPart, ThinkingPart])),\n model: Text,\n timestamp: NumberValue,\n }),\n ),\n tools: Type.Record(\n Text,\n Type.Object({\n toolCallId: Text,\n toolName: Text,\n args: Json,\n partialResult: Optional(Type.Object({ content: Type.Array(Content), details: Optional(Json) })),\n }),\n ),\n }),\n ),\n});\n/** Argument and result schemas of the `po.session` methods; the Chord contract and the API docs both read them. */\nexport const SessionMethodSchemas = {\n readTranscriptPage: {\n args: Type.Object({\n cursor: Optional(Text),\n direction: Optional(Type.Union([Type.Literal('older'), Type.Literal('newer')])),\n limit: Optional(NumberValue),\n threadId: Optional(Text),\n entryId: Optional(Text),\n }),\n result: Type.Object({\n entries: Type.Array(Json),\n startCursor: Type.Union([Text, Type.Null()]),\n endCursor: Type.Union([Text, Type.Null()]),\n olderCursor: Type.Union([Text, Type.Null()]),\n newerCursor: Type.Union([Text, Type.Null()]),\n generation: NumberValue,\n revision: NumberValue,\n context: Type.Array(Json),\n }),\n },\n prompt: {\n args: Type.Union([\n Text,\n Type.Object({\n ...Message.properties,\n waitFor: Optional(Type.Union([Type.Literal('accepted'), Type.Literal('settled')])),\n }),\n ]),\n },\n steer: { args: Type.Union([Text, Message]) },\n abort: {},\n abortOperation: { args: Type.Object({ operationId: Text }) },\n setModel: { args: Model },\n setThinking: { args: Thinking },\n setFastMode: { args: Flag },\n setAgentLock: { args: Flag },\n followUp: { args: Message },\n enqueueAutomatic: { args: Message, result: Type.Object({ id: Text }) },\n removeQueued: {\n args: Type.Object({ id: Text }),\n result: Type.Union([\n Type.Literal('removed'),\n Type.Literal('in_flight'),\n Type.Literal('already_consumed'),\n Type.Literal('not_found'),\n ]),\n },\n promoteQueued: {\n args: Type.Object({ id: Text, operationId: Optional(Text) }),\n result: Type.Union([\n Type.Literal('promoted'),\n Type.Literal('in_flight'),\n Type.Literal('target_changed'),\n Type.Literal('not_found'),\n ]),\n },\n resumeQueue: {},\n clearQueue: { result: Type.Object({ steering: Strings, followUp: Strings }) },\n rewind: {\n args: Type.Object({\n itemId: Text,\n summarize: Optional(Flag),\n customInstructions: Optional(Text),\n replaceInstructions: Optional(Flag),\n label: Optional(Text),\n }),\n result: Type.Object({\n editorText: Optional(Text),\n cancelled: Flag,\n aborted: Optional(Flag),\n summaryEntry: Optional(\n Type.Object({\n id: Text,\n parentId: Type.Union([Text, Type.Null()]),\n timestamp: Text,\n fromId: Text,\n summary: Text,\n details: Optional(Json),\n usage: Optional(Usage),\n fromHook: Optional(Flag),\n }),\n ),\n }),\n },\n extensionUiResponse: {\n args: Type.Union([\n Type.Object({ id: Text, value: Text }),\n Type.Object({ id: Text, confirmed: Flag }),\n Type.Object({ id: Text, cancelled: Type.Literal(true) }),\n ]),\n },\n getState: {\n result: Type.Object({\n model: Optional(Model),\n thinkingLevel: Thinking,\n fastMode: Flag,\n agentLocked: Optional(Flag),\n isStreaming: Flag,\n isCompacting: Flag,\n steeringMode: Type.Union([Type.Literal('all'), Type.Literal('one-at-a-time')]),\n followUpMode: Type.Union([Type.Literal('all'), Type.Literal('one-at-a-time')]),\n sessionId: Text,\n sessionName: Optional(Text),\n autoCompactionEnabled: Flag,\n messageCount: NumberValue,\n pendingMessageCount: NumberValue,\n operationId: Optional(Text),\n executionStatus: Optional(Type.Union([Type.Literal('open'), Type.Literal('aborting')])),\n queuePaused: Optional(Flag),\n queueRevision: Optional(NumberValue),\n }),\n },\n getSessionStats: {\n result: Type.Object({\n sessionId: Text,\n totalMessages: NumberValue,\n tokens: Usage,\n cost: NumberValue,\n contextUsage: Optional(\n Type.Object({\n tokens: Type.Union([NumberValue, Type.Null()]),\n contextWindow: NumberValue,\n percent: Type.Union([NumberValue, Type.Null()]),\n }),\n ),\n }),\n },\n getCommands: {\n result: Type.Array(\n Type.Object({\n name: Text,\n description: Optional(Text),\n source: Type.Union([Type.Literal('extension'), Type.Literal('prompt'), Type.Literal('skill')]),\n sourceInfo: Optional(\n Type.Object({\n path: Text,\n source: Text,\n scope: Type.Union([Type.Literal('user'), Type.Literal('project'), Type.Literal('temporary')]),\n origin: Type.Union([Type.Literal('package'), Type.Literal('top-level')]),\n baseDir: Optional(Text),\n }),\n ),\n }),\n ),\n },\n getAvailableModels: { result: Type.Array(Model) },\n getAvailableThinkingLevels: { result: Type.Array(Thinking) },\n compact: { args: Type.Object({ customInstructions: Optional(Text) }), result: Json },\n setName: { args: Text },\n setGroups: { args: Type.Array(Text) },\n};\n/** The `po.session` methods as Chord specs. */\nexport const SessionMethods = chordMethods(SessionMethodSchemas);\n\nconst ErrorSchema = Type.Object({ code: Text, message: Text });\nconst documented = (\n id: string,\n service: string,\n member: string,\n direction: PoSocketContract['direction'],\n input: TSchema,\n description: string,\n): PoSocketContract => ({\n id,\n scope: service === 'po.hub' ? 'global' : 'session',\n service,\n member,\n direction,\n kind: direction === 'server-to-client' ? 'state' : 'method',\n input,\n ...(direction === 'server-to-client' ? {} : { errors: ErrorSchema }),\n description,\n});\nexport const sessionSocketContracts: PoSocketContract[] = [\n ...Object.entries<PoMethodSchemas>(SessionMethodSchemas).map(([member, { args, result }]): PoSocketContract => ({\n id: `session.${member}`,\n scope: 'session',\n service: 'po.session',\n member,\n direction: 'client-to-server',\n kind: 'method',\n description: `Session ${member}. The Chord call carries the argument; a void result is null.`,\n input: Type.Tuple(args === undefined ? [] : ([args] as TSchema[])),\n ...(result === undefined ? {} : { output: result }),\n errors: ErrorSchema,\n })),\n documented(\n 'session.state',\n 'po.session',\n 'state',\n 'server-to-client',\n SessionServiceStateSchema,\n 'The `state` member of `po.session`, reconstructed from Chord snapshot and delta frames.',\n ),\n documented(\n 'hub.state',\n 'po.hub',\n 'state',\n 'server-to-client',\n PoHubStateSchema,\n 'Sessions and workspaces this connection may see, and notices it has not acknowledged.',\n ),\n documented(\n 'thread.frame',\n 'po.thread',\n 'frame',\n 'server-to-client',\n PoThreadFrameSchema,\n 'The latest frame of one child thread: transcript_state while it runs, transcript_ready once finished.',\n ),\n documented(\n 'channels.latest',\n 'po.channels',\n 'latest',\n 'server-to-client',\n PoChannelsStateSchema,\n 'The latest payload of each extension channel frame type for one session.',\n ),\n documented(\n 'channels.receive',\n 'po.channels',\n 'receive',\n 'client-to-server',\n Type.Tuple([ChannelFrameSchema]),\n 'Send one extension channel frame to the session.',\n ),\n];\n","import { Type, type TSchema } from 'typebox';\n\nimport type { PoSocketContract } from './apiContracts';\nimport { PoPluginCallSchema } from './pluginProtocol';\n\n/** The Chord release whose link frames this file describes (link protocol 4). */\nexport const CHORD_WIRE_VERSION = '1.3.0';\n\nconst S = Type.String({ minLength: 1 });\nconst Json = Type.Unknown({\n description: 'JSON value; its application shape is defined by the addressed contract member.',\n});\nconst Id = Type.Integer({ minimum: 1 });\nconst ErrorCode = Type.Union(\n [\n 'aborted',\n 'contract_mismatch',\n 'forbidden',\n 'gone',\n 'invalid',\n 'not_in_variant',\n 'not_ready',\n 'released',\n 'superseded',\n 'unavailable',\n 'upgrade_conflict',\n 'upgrade_required',\n ].map((code) => Type.Literal(code)),\n);\nconst WireError = Type.Object({ code: ErrorCode, message: Type.String(), reason: Type.Optional(Type.String()) });\nconst Segment = Type.Union([Type.String(), Type.Integer({ minimum: 0 })]);\nconst Path = Type.Array(Segment);\nconst PathRef = Type.Union([Path, Type.Integer({ minimum: 0 })]);\nconst NonemptyPathRef = Type.Union([Type.Array(Segment, { minItems: 1 }), Type.Integer({ minimum: 0 })]);\nconst Index = Type.Integer({ minimum: 0 });\nexport const ChordWireOpSchema = Type.Union(\n [\n Type.Tuple([Type.Literal('r'), Json]),\n Type.Tuple([Type.Literal('s'), NonemptyPathRef, Json]),\n Type.Tuple([Type.Literal('s'), Json]),\n Type.Tuple([Type.Literal('d'), NonemptyPathRef]),\n Type.Tuple([Type.Literal('d')]),\n Type.Tuple([Type.Literal('a'), NonemptyPathRef, Type.String()]),\n Type.Tuple([Type.Literal('a'), Type.String()]),\n Type.Tuple([Type.Literal('t'), NonemptyPathRef, Index]),\n Type.Tuple([Type.Literal('t'), Index]),\n Type.Tuple([Type.Literal('p'), PathRef, Index, Index, Type.Array(Json)]),\n Type.Tuple([Type.Literal('p'), Index, Index, Type.Array(Json)]),\n Type.Tuple([Type.Literal('m'), PathRef, Type.Array(Index)]),\n Type.Tuple([Type.Literal('m'), Type.Array(Index)]),\n Type.Tuple([Type.Literal('#'), Index, Path]),\n ],\n {\n description:\n 'Chord delta tuples. Path dictionary references and omitted paths depend on earlier operations in this subscription; decode with the Chord delta decoder.',\n },\n);\nconst Hello = (kind: TSchema) =>\n Type.Object({\n t: Type.Literal('hello'),\n protocol: Type.Optional(Type.Integer({ minimum: 1 })),\n name: Type.String(),\n kind,\n codeVersion: Type.Integer({ minimum: 0 }),\n acks: Type.Optional(Type.Boolean()),\n });\nconst Ack = Type.Object({ t: Type.Literal('ack'), n: Type.Integer({ minimum: 1 }) });\nconst Ping = Type.Object({ t: Type.Literal('ping'), n: Type.Integer() });\nconst Pong = Type.Object({ t: Type.Literal('pong'), n: Type.Integer() });\nconst Bye = Type.Object({ t: Type.Literal('bye'), reason: Type.Optional(Type.String()) });\n\n/** Frames a client (browser or native app) sends on its link. */\nexport const ChordClientFrameSchema = Type.Union([\n Hello(Type.Literal('client')),\n Ack,\n Type.Object({\n t: Type.Literal('hold'),\n id: Id,\n at: Type.String(),\n token: Json,\n input: Json,\n state: Type.Optional(Type.Literal(false)),\n again: Type.Optional(Type.Literal(true)),\n }),\n Type.Object({ t: Type.Literal('release'), id: Id }),\n Type.Object({ t: Type.Literal('call'), id: Id, hold: Id, member: S, args: Type.Optional(Json) }),\n Type.Object({ t: Type.Literal('cancel'), id: Id }),\n Type.Object({ t: Type.Literal('sub'), hold: Id }),\n Type.Object({ t: Type.Literal('unsub'), hold: Id }),\n Type.Object({ t: Type.Literal('root_end'), rootId: Type.String() }),\n Ping,\n Pong,\n Bye,\n]);\n\n/** Frames the Po server sends to a client link. */\nexport const ChordServerFrameSchema = Type.Union([\n Hello(Type.String()),\n Ack,\n Type.Object({\n t: Type.Literal('shape'),\n id: Id,\n variant: Type.Optional(Type.String()),\n members: Type.Array(Type.String()),\n contract: Type.String(),\n state: Type.Array(S),\n }),\n Type.Object({ t: Type.Literal('gone'), id: Id, error: WireError }),\n Type.Object({ t: Type.Literal('result'), id: Id, value: Type.Optional(Json), error: Type.Optional(WireError) }),\n Type.Object({\n t: Type.Literal('state'),\n hold: Id,\n m: S,\n as: Type.Union([Type.Literal('snap'), Type.Literal('reset'), Type.Literal('ops'), Type.Literal('error')]),\n value: Type.Optional(Json),\n ops: Type.Optional(Type.Array(ChordWireOpSchema)),\n error: Type.Optional(WireError),\n }),\n Ping,\n Pong,\n Bye,\n]);\n\nexport const transportSocketContracts: PoSocketContract[] = [\n {\n id: 'chord.client',\n scope: 'global',\n service: '$chord',\n member: 'client',\n direction: 'client-to-server',\n kind: 'channel',\n input: ChordClientFrameSchema,\n description: `Chord ${CHORD_WIRE_VERSION} link frame, one JSON text message each, sealed for remote delivery. Hold \\`po.hub\\` ({}) and \\`po.session\\` ({ sessionId }) at host \\`server\\`.`,\n },\n {\n id: 'chord.server',\n scope: 'global',\n service: '$chord',\n member: 'server',\n direction: 'server-to-client',\n kind: 'channel',\n input: ChordServerFrameSchema,\n description: 'Chord link frame. Results correlate by call id; state frames by hold id and member.',\n },\n {\n id: 'plugin.invoke',\n scope: 'global',\n service: 'po.hub',\n member: 'invoke',\n direction: 'client-to-server',\n kind: 'method',\n input: PoPluginCallSchema,\n output: Json,\n errors: WireError,\n description: 'Invoke the selected scoped plugin method. Its declaration supplies input and output shapes.',\n },\n];\n","import { defineApiContract } from './apiContracts';\nimport { headlessHttpContracts, machineHttpContracts, sessionHttpContracts } from './httpApiContracts';\nimport {\n SealedEnvelopeSchema,\n SealedHttpRequestSchema,\n SealedHttpResponseSchema,\n remoteHttpContracts,\n bundleHttpContracts,\n} from './remoteApiContracts';\nimport { sessionSocketContracts } from './sessionApiContracts';\nimport { CHORD_WIRE_VERSION, transportSocketContracts } from './transportApiContracts';\n\nexport const builtinApiContract = defineApiContract({\n version: 1,\n schemas: {\n SealedEnvelope: SealedEnvelopeSchema,\n SealedHttpRequest: SealedHttpRequestSchema,\n SealedHttpResponse: SealedHttpResponseSchema,\n },\n protocols: { chord: CHORD_WIRE_VERSION, sealed: '1' },\n http: [\n ...headlessHttpContracts,\n ...machineHttpContracts,\n ...sessionHttpContracts,\n ...remoteHttpContracts,\n ...bundleHttpContracts,\n ],\n sockets: [...sessionSocketContracts, ...transportSocketContracts],\n dynamic: [\n 'WebAuthn options and credential responses follow the installed WebAuthn implementation.',\n 'Tool inputs/results and journal entries contain runtime-defined JSON.',\n 'Selected channel and presentation payload schemas are contributed by their owning package.',\n ],\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"apiContracts.cjs","names":["Type","Check","Text","Type","Optional","Strings","Flag","NumberValue","Json","Text","Type","NumberValue","Optional","Flag","method","Json","Type","remote","hostNamed","Type","Text","Type","Json","remote","hostNamed","Type","remote","hostNamed","Type","Json","Type"],"sources":["../src/schemas/apiContracts.ts","../src/services/apiContracts/index.ts","../src/constants/contextApi.ts","../src/schemas/httpApiContracts.ts","../src/schemas/remoteApiContracts.ts","../src/schemas/protocolContracts.ts","../src/schemas/protocolChannelsContract.ts","../src/schemas/pluginProtocol.ts","../src/schemas/protocolHubContract.ts","../src/schemas/protocolThreadContract.ts","../src/schemas/sessionApiContracts.ts","../src/schemas/transportApiContracts.ts","../src/schemas/builtinApiContracts.ts"],"sourcesContent":["import { type Static, Type } from 'typebox';\nimport { Check } from 'typebox/value';\n\nimport type { PoApiScope } from './packageApi';\nimport type { PoServerBundleOwner } from './serverBundle';\n\nexport const PO_API_CONTRACT_VERSION = 1;\nexport const PO_API_CONTRACT_FILE = 'contracts.json';\nconst Schema = Type.Unsafe<object | boolean>(Type.Union([Type.Boolean(), Type.Record(Type.String(), Type.Unknown())]));\nconst Scope = Type.Union([Type.Literal('global'), Type.Literal('workspace'), Type.Literal('session')]);\nconst Named = Type.String({ minLength: 1 });\nconst ResponseSchema = Type.Object({\n description: Named,\n contentType: Type.Optional(Named),\n schema: Type.Optional(Schema),\n events: Type.Optional(Type.Record(Named, Schema)),\n});\n\n/** Data-only package entry. Schemas use JSON Schema draft-07, including TypeBox output; OpenAPI export translates tuple keywords. */\nexport const PoApiContractSchema = Type.Object({\n version: Type.Literal(PO_API_CONTRACT_VERSION),\n protocols: Type.Optional(Type.Record(Named, Named)),\n schemas: Type.Optional(Type.Record(Named, Schema)),\n http: Type.Array(\n Type.Object({\n id: Named,\n scope: Scope,\n /** Omit for host-owned absolute routes. */\n basePath: Type.Optional(Type.String({ pattern: '^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$' })),\n path: Type.String({ pattern: '^/' }),\n method: Type.Union([\n Type.Literal('GET'),\n Type.Literal('POST'),\n Type.Literal('PUT'),\n Type.Literal('PATCH'),\n Type.Literal('DELETE'),\n Type.Literal('HEAD'),\n Type.Literal('OPTIONS'),\n ]),\n description: Named,\n availability: Type.Optional(Named),\n authentication: Type.Union([Type.Literal('none'), Type.Literal('owner'), Type.Literal('device')]),\n parameters: Type.Optional(\n Type.Array(\n Type.Object({\n name: Named,\n in: Type.Union([Type.Literal('path'), Type.Literal('query'), Type.Literal('header')]),\n required: Type.Boolean(),\n schema: Schema,\n }),\n ),\n ),\n body: Type.Optional(\n Type.Object({\n contentType: Named,\n contentTypes: Type.Optional(Type.Array(Named, { minItems: 1 })),\n required: Type.Boolean(),\n schema: Schema,\n }),\n ),\n responses: Type.Record(Type.String({ pattern: '^(?:[1-5][0-9]{2}|default)$' }), ResponseSchema, {\n minProperties: 1,\n }),\n }),\n ),\n sockets: Type.Array(\n Type.Object({\n id: Named,\n scope: Scope,\n description: Named,\n availability: Type.Optional(Named),\n service: Named,\n member: Named,\n direction: Type.Union([Type.Literal('client-to-server'), Type.Literal('server-to-client')]),\n kind: Type.Union([Type.Literal('method'), Type.Literal('state'), Type.Literal('channel')]),\n input: Schema,\n output: Type.Optional(Schema),\n errors: Type.Optional(Schema),\n }),\n ),\n /** Explicitly enumerate dynamic values whose shape is supplied at runtime. */\n dynamic: Type.Array(Type.String({ minLength: 1 })),\n gaps: Type.Optional(Type.Array(Named)),\n});\n\nexport type PoApiContract = Static<typeof PoApiContractSchema>;\nexport type PoHttpContract = PoApiContract['http'][number];\nexport type PoSocketContract = PoApiContract['sockets'][number];\n\nexport function defineApiContract(contract: PoApiContract): PoApiContract {\n return contract;\n}\n\nexport function parseApiContract(value: unknown): PoApiContract {\n if (!Check(PoApiContractSchema, value)) throw new Error('Invalid Po API contract');\n const contract = value as PoApiContract;\n const ids = new Set<string>();\n for (const entry of [...contract.http, ...contract.sockets]) {\n const key = `${entry.scope}:${entry.id}`;\n if (ids.has(key)) throw new Error(`Duplicate API contract operation: ${key}`);\n ids.add(key);\n }\n // Reject non-JSON data rather than silently losing it during export.\n const visit = (item: unknown, ancestors: Set<object>): void => {\n if (item === null || typeof item === 'string' || typeof item === 'boolean') return;\n if (typeof item === 'number' && Number.isFinite(item)) return;\n if (typeof item !== 'object' || ancestors.has(item)) throw new Error('API contracts must contain finite JSON data');\n ancestors.add(item);\n for (const child of Object.values(item)) visit(child, ancestors);\n ancestors.delete(item);\n };\n visit(contract, new Set());\n return contract;\n}\n\nexport interface PoPackageContract {\n packageName: string;\n packageVersion: string;\n scopes: readonly PoApiScope[];\n owners: readonly PoServerBundleOwner[];\n contract?: PoApiContract;\n problem?: string;\n /** Generation-relative compiler output, never imported by the export command. */\n module?: string;\n}\n\nexport interface PoCompiledContracts {\n version: typeof PO_API_CONTRACT_VERSION;\n generation: string;\n fingerprint: string;\n packages: PoPackageContract[];\n}\n\nexport function parseCompiledContracts(value: unknown): PoCompiledContracts {\n const PackageSchema = Type.Object({\n packageName: Named,\n packageVersion: Named,\n scopes: Type.Array(Scope, { uniqueItems: true }),\n owners: Type.Array(Type.Object({ majorMode: Named, layer: Named }), { minItems: 1 }),\n contract: Type.Optional(PoApiContractSchema),\n problem: Type.Optional(Named),\n module: Type.Optional(Type.String({ pattern: '^\\\\./[^\\\\\\\\%?#]+$' })),\n });\n const CompiledSchema = Type.Object({\n version: Type.Literal(PO_API_CONTRACT_VERSION),\n generation: Named,\n fingerprint: Type.String({ pattern: '^[a-f0-9]{64}$' }),\n packages: Type.Array(PackageSchema),\n });\n if (!Check(CompiledSchema, value)) throw new Error('Invalid compiled API contracts');\n const data = value as PoCompiledContracts;\n const names = new Set<string>();\n for (const entry of data.packages) {\n if (names.has(entry.packageName) || entry.module?.split('/').includes('..'))\n throw new Error('Invalid compiled package contract');\n names.add(entry.packageName);\n if (entry.contract !== undefined) parseApiContract(entry.contract);\n }\n return data;\n}\n","import { parseApiContract, type PoCompiledContracts } from '../../schemas/apiContracts';\nimport type { PoApiScope } from '../../schemas/packageApi';\n\nexport interface ApiContractSelection {\n scope: PoApiScope;\n majorMode: string;\n activeLayers: readonly string[];\n compiled: PoCompiledContracts;\n}\n\nexport interface ApiDocuments {\n openapi: Record<string, unknown>;\n asyncapi: Record<string, unknown>;\n manifest: {\n version: 1;\n complete: boolean;\n protocols: Record<string, string>;\n selections: {\n scope: PoApiScope;\n majorMode: string;\n activeLayers: string[];\n generation: string;\n fingerprint: string;\n }[];\n packages: { name: string; version: string; scope: PoApiScope }[];\n gaps: { packageName: string; scope: PoApiScope; reason: string }[];\n dynamic: string[];\n };\n}\n\n/** Stable bytes for diffs and hashes, independent of object insertion order. */\nexport function canonicalContractJson(value: unknown): string {\n const ordered = (item: unknown): unknown => {\n if (Array.isArray(item)) return item.map(ordered);\n if (item !== null && typeof item === 'object')\n return Object.fromEntries(\n Object.entries(item)\n .sort(([a], [b]) => a.localeCompare(b, 'en'))\n .map(([key, child]) => [key, ordered(child)]),\n );\n return item;\n };\n return `${JSON.stringify(ordered(value), null, 2)}\\n`;\n}\n\nconst componentName = (value: string): string =>\n value.replace(/[^a-zA-Z0-9.-]/gu, (character) => `_${character.codePointAt(0)!.toString(16)}_`);\nconst pluginPrefix = (scope: PoApiScope): string =>\n scope === 'global'\n ? '/api/plugins'\n : scope === 'workspace'\n ? '/api/workspaces/{workspaceId}/plugins'\n : '/api/workspaces/{workspaceId}/sessions/{sessionId}/plugins';\n\n/** Compose declarations only. No handlers, lifecycle hooks, or platform resources are loaded. */\nexport function createApiDocuments(selections: readonly ApiContractSelection[]): ApiDocuments {\n const paths: Record<string, Record<string, unknown>> = {};\n const schemas: Record<string, unknown> = {};\n const messages: Record<string, unknown> = {};\n const operations: Record<string, unknown> = {};\n const channelMessages: Record<string, Record<string, unknown>> = { global: {}, workspace: {}, session: {} };\n const manifest: ApiDocuments['manifest'] = {\n version: 1,\n complete: true,\n protocols: {},\n selections: [],\n packages: [],\n gaps: [],\n dynamic: [],\n };\n const socketAddresses = new Set<string>();\n const schema = (id: string, value: unknown): { $ref: string } => {\n const name = componentName(id);\n if (schemas[name] !== undefined) throw new Error(`Conflicting schema: ${id}`);\n // Local $defs references must remain local after moving into components.\n const relocate = (child: unknown): unknown => {\n if (Array.isArray(child)) return child.map(relocate);\n if (child === null || typeof child !== 'object') return child;\n return Object.fromEntries(\n Object.entries(child).map(([key, entry]) => {\n if (key === '$id') throw new Error(`Schema ${id} must use local references, not $id`);\n if (key === '$ref' && typeof entry === 'string') {\n if (!entry.startsWith('#/')) throw new Error(`Unresolved schema reference in ${id}: ${entry}`);\n return [key, `#/components/schemas/${name}${entry.slice(1)}`];\n }\n return [key, relocate(entry)];\n }),\n );\n };\n schemas[name] = relocate(value);\n return { $ref: `#/components/schemas/${name}` };\n };\n for (const selected of [...selections].sort((a, b) => a.scope.localeCompare(b.scope))) {\n manifest.selections.push({\n scope: selected.scope,\n majorMode: selected.majorMode,\n activeLayers: [...selected.activeLayers].sort(),\n generation: selected.compiled.generation,\n fingerprint: selected.compiled.fingerprint,\n });\n for (const entry of [...selected.compiled.packages].sort((a, b) => a.packageName.localeCompare(b.packageName))) {\n if (\n !entry.scopes.includes(selected.scope) ||\n !entry.owners.some(\n (owner) =>\n owner.majorMode === selected.majorMode &&\n (owner.layer === 'default' || selected.activeLayers.includes(owner.layer)),\n )\n )\n continue;\n manifest.packages.push({ name: entry.packageName, version: entry.packageVersion, scope: selected.scope });\n if (!entry.contract || entry.problem) {\n manifest.gaps.push({\n packageName: entry.packageName,\n scope: selected.scope,\n reason: entry.problem ?? 'No contract declaration',\n });\n continue;\n }\n const contract = parseApiContract(entry.contract);\n for (const [name, value] of Object.entries(contract.schemas ?? {}))\n schema(`${entry.packageName}.${selected.scope}.${name}`, value);\n for (const [name, version] of Object.entries(contract.protocols ?? {})) {\n if (manifest.protocols[name] !== undefined && manifest.protocols[name] !== version)\n throw new Error(`Conflicting ${name} protocol versions`);\n manifest.protocols[name] = version;\n }\n manifest.gaps.push(\n ...(contract.gaps ?? []).map((reason) => ({ packageName: entry.packageName, scope: selected.scope, reason })),\n );\n manifest.dynamic.push(...contract.dynamic.map((value) => `${entry.packageName}: ${value}`));\n for (const route of contract.http.filter((route) => route.scope === selected.scope)) {\n const id = `${entry.packageName}.${route.scope}.${route.id}`;\n const mount =\n route.basePath === undefined\n ? ''\n : route.basePath === 'settings'\n ? `${route.scope === 'global' ? '/api' : '/api/workspaces/{workspaceId}'}/settings`\n : `${pluginPrefix(route.scope)}/${route.basePath}`;\n const pathname = `${mount}${route.path === '/' ? '' : route.path}`;\n const method = route.method.toLowerCase();\n const path = (paths[pathname] ??= {});\n if (path[method]) throw new Error(`Conflicting HTTP contract: ${route.method} ${pathname}`);\n const parameters = (route.parameters ?? []).map((parameter) => ({\n ...parameter,\n schema: schema(`${id}.${parameter.in}.${parameter.name}`, parameter.schema),\n }));\n for (const match of pathname.matchAll(/\\{([^}]+)\\}/gu)) {\n if (!parameters.some((parameter) => parameter.in === 'path' && parameter.name === match[1]))\n parameters.push({\n name: match[1],\n in: 'path',\n required: true,\n schema: schema(`${id}.path.${match[1]}`, { type: 'string', minLength: 1 }),\n });\n }\n path[method] = {\n operationId: componentName(id),\n description: route.description,\n parameters,\n security: route.authentication === 'none' ? [] : [{ [route.authentication]: [] }],\n 'x-po': {\n packageName: entry.packageName,\n scope: route.scope,\n ...(route.availability ? { availability: route.availability } : {}),\n },\n ...(route.body\n ? {\n requestBody: {\n required: route.body.required,\n content: Object.fromEntries(\n (route.body.contentTypes ?? [route.body.contentType]).map((mediaType) => [\n mediaType,\n { schema: schema(`${id}.body.${mediaType}`, route.body!.schema) },\n ]),\n ),\n },\n }\n : {}),\n responses: Object.fromEntries(\n Object.entries(route.responses).map(([status, response]) => [\n status,\n {\n description: response.description,\n ...(response.events\n ? {\n 'x-sse-events': Object.fromEntries(\n Object.entries(response.events).map(([name, payload]) => [\n name,\n schema(`${id}.event.${name}`, payload),\n ]),\n ),\n }\n : {}),\n ...(response.schema === undefined\n ? {}\n : {\n content: {\n [response.contentType ?? 'application/json']: {\n schema: schema(`${id}.response.${status}`, response.schema),\n },\n },\n }),\n },\n ]),\n ),\n };\n }\n for (const socket of contract.sockets.filter((socket) => socket.scope === selected.scope)) {\n const address = `${socket.scope}:${socket.direction}:${socket.kind}:${socket.service}:${socket.member}`;\n if (socketAddresses.has(address)) throw new Error(`Conflicting socket contract: ${address}`);\n socketAddresses.add(address);\n for (const channel of socket.scope === 'global' ? ['global'] : [socket.scope, 'global']) {\n const id = componentName(\n `${entry.packageName}.${socket.scope}.${socket.id}${channel === socket.scope ? '' : '.aggregate'}`,\n );\n const addMessage = (suffix: string, payload: unknown): string => {\n const name = `${id}.${suffix}`;\n messages[name] = { name, payload: schema(name, payload) };\n channelMessages[channel][name] = { $ref: `#/components/messages/${name}` };\n return `#/channels/${channel}/messages/${name}`;\n };\n const request = addMessage('input', socket.input);\n const replies = socket.output === undefined ? [] : [{ $ref: addMessage('output', socket.output) }];\n if (socket.errors !== undefined) replies.push({ $ref: addMessage('error', socket.errors) });\n operations[id] = {\n action: socket.direction === 'client-to-server' ? 'receive' : 'send',\n channel: { $ref: `#/channels/${channel}` },\n messages: [{ $ref: request }],\n description: socket.description,\n ...(replies.length ? { reply: { channel: { $ref: `#/channels/${channel}` }, messages: replies } } : {}),\n 'x-po': {\n service: socket.service,\n member: socket.member,\n scope: socket.scope,\n kind: socket.kind,\n transportScope: channel,\n ...(socket.availability ? { availability: socket.availability } : {}),\n },\n };\n }\n }\n }\n }\n manifest.complete = manifest.gaps.length === 0;\n manifest.dynamic = [...new Set(manifest.dynamic)].sort();\n const info = { title: 'Po compiled client API', version: '1' };\n const openapi = {\n openapi: '3.1.1',\n info,\n paths,\n components: {\n schemas: openApiSchemas(schemas),\n securitySchemes: {\n owner: { type: 'apiKey', in: 'header', name: 'x-po-token' },\n device: {\n type: 'apiKey',\n in: 'cookie',\n name: '__Host-po_device',\n description:\n 'Admitted device credentials and purpose-bound sealed channel; see remote authentication operations.',\n },\n },\n },\n };\n const asyncapi = {\n asyncapi: '3.0.0',\n info,\n channels: Object.fromEntries(\n Object.entries(channelMessages).map(([scope, messages]) => [\n scope,\n {\n address:\n scope === 'global'\n ? '/api/ws'\n : scope === 'workspace'\n ? '/api/workspaces/{workspaceId}/ws'\n : '/api/workspaces/{workspaceId}/sessions/{sessionId}/ws',\n ...(scope === 'global'\n ? {}\n : {\n parameters: {\n workspaceId: { description: 'Admitted workspace identity.' },\n ...(scope === 'session' ? { sessionId: { description: 'Session owned by this workspace.' } } : {}),\n },\n }),\n messages,\n description:\n 'Decoded Pi/Chord values over framed CBOR. The global hub socket aggregates all scopes; workspace and session sockets restrict session access and package calls to their addressed scope. Remote paired-device sockets seal the same bytes.',\n },\n ]),\n ),\n operations,\n components: { schemas: asyncApiSchemas(schemas), messages },\n };\n // References must resolve in each portable document before either is published.\n for (const document of [openapi, asyncapi]) {\n const visit = (value: unknown): void => {\n if (value === null || typeof value !== 'object') return;\n for (const [key, child] of Object.entries(value)) {\n if (key === '$ref' && typeof child === 'string') {\n let target: unknown = document;\n for (const segment of child.slice(2).split('/')) {\n if (target === null || typeof target !== 'object') throw new Error(`Unresolved API reference: ${child}`);\n target = Reflect.get(target, segment.replace(/~1/gu, '/').replace(/~0/gu, '~'));\n }\n if (target === undefined) throw new Error(`Unresolved API reference: ${child}`);\n } else visit(child);\n }\n };\n visit(document);\n }\n return { openapi, asyncapi, manifest };\n}\n\n/** TypeBox uses draft-07 tuple keywords; OpenAPI 3.1 evaluates the 2020-12 vocabulary. */\nfunction openApiSchemas(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(openApiSchemas);\n if (value === null || typeof value !== 'object') return value;\n const source = value as Record<string, unknown>;\n const result: Record<string, unknown> = {};\n for (const [key, child] of Object.entries(source)) {\n if (key === 'items' && Array.isArray(child)) {\n if (child.length) result.prefixItems = child.map(openApiSchemas);\n else {\n result.items = false;\n result.maxItems = 0;\n }\n } else if (key === 'additionalItems' && Array.isArray(source.items)) result.items = openApiSchemas(child);\n else if (key === 'dependencies' && child !== null && typeof child === 'object') {\n const required: Record<string, unknown> = {};\n const schemas: Record<string, unknown> = {};\n for (const [name, dependency] of Object.entries(child)) {\n if (Array.isArray(dependency)) required[name] = dependency;\n else schemas[name] = openApiSchemas(dependency);\n }\n if (Object.keys(required).length) result.dependentRequired = required;\n if (Object.keys(schemas).length) result.dependentSchemas = schemas;\n } else if (key === '$schema') result.$schema = 'https://json-schema.org/draft/2020-12/schema';\n else result[key] = openApiSchemas(child);\n }\n return result;\n}\n\nfunction asyncApiSchemas(schemas: Record<string, unknown>): Record<string, unknown> {\n const convert = (value: unknown): unknown => {\n if (Array.isArray(value)) return value.map(convert);\n if (value === null || typeof value !== 'object') return value;\n const result: Record<string, unknown> = {};\n for (const [key, child] of Object.entries(value)) {\n if (key === '$ref' && typeof child === 'string') {\n result[key] = child.replace(/^(#\\/components\\/schemas\\/[^/]+)(.*)$/u, '$1/schema$2');\n } else if (key === 'items' && Array.isArray(child) && child.length === 0) {\n result.items = false;\n result.maxItems = 0;\n } else result[key] = convert(child);\n }\n return result;\n };\n return Object.fromEntries(\n Object.entries(schemas).map(([name, schema]) => [\n name,\n {\n schemaFormat: 'application/schema+json;version=draft-07',\n schema: convert(schema),\n },\n ]),\n );\n}\n","/**\n * What one entry in the composition actually is, for a reader who clicked it.\n *\n * The projection prices the composition and stops there: names, owners, and\n * integer counts, small enough to republish whenever the composition changes.\n * The prose and the schema behind a figure are an order of magnitude larger and\n * are wanted one row at a time, so they travel on request instead. This module\n * is the contract both ends of that request share, and it is deliberately free\n * of Node imports so a browser can hold it too.\n */\n\n/** Where a host mounts this package's API; the segment after /api/plugins/. */\nexport const API_BASE_PATH = 'context';\n\n/** The session a proxied request belongs to; the hub strips it before forwarding. */\nexport const SESSION_QUERY_PARAM = 'session';\n\nexport const ITEM_ROUTE = '/item';\n\nexport const CURRENT_ROUTE = '/current';\n\nexport const NAME_QUERY_PARAM = 'name';\n\nexport const KIND_QUERY_PARAM = 'kind';\n\nexport const CONTEXT_DETAIL_VERSION = 1;\n\n/** Plugin-agnostic status payload: a JSON map keyed by registered tool name. */\nexport const CONTEXT_TOOL_WARNINGS_STATUS_KEY = 'po-context-tool-warnings';\n","import { Type, type TSchema } from 'typebox';\n\nimport { API_BASE_PATH, CURRENT_ROUTE, ITEM_ROUTE } from '../constants/contextApi';\nimport type { PoHttpContract } from './apiContracts';\n\nconst Text = Type.String();\nconst Optional = Type.Optional;\nconst Strings = Type.Array(Text);\nconst Flag = Type.Boolean();\nconst NumberValue = Type.Number();\nexport const ApiErrorSchema = Type.Object({ error: Text, hash: Optional(Text) });\nexport const ApiOkSchema = Type.Object({ ok: Type.Literal(true) });\nconst Json = Type.Unknown({ description: 'Value whose schema is supplied by the selected runtime contribution.' });\n\n/** Common JSON response construction; status and payload remain explicit at the declaration. */\nexport function jsonApiResponses(schema: object | boolean, status = 200): PoHttpContract['responses'] {\n return {\n [status]: { description: 'Successful response', contentType: 'application/json', schema },\n '400': { description: 'Invalid request', schema: ApiErrorSchema },\n '401': { description: 'Authentication required', schema: ApiErrorSchema },\n '403': { description: 'Request is not authorized', schema: ApiErrorSchema },\n '404': { description: 'Resource or capability unavailable', schema: ApiErrorSchema },\n '409': { description: 'Conflicting state', schema: ApiErrorSchema },\n '422': { description: 'Invalid operation', schema: ApiErrorSchema },\n '500': { description: 'Host operation failed', schema: ApiErrorSchema },\n '502': { description: 'Provider failed', schema: ApiErrorSchema },\n '503': { description: 'Service unavailable', schema: ApiErrorSchema },\n };\n}\nexport const WebCompositionSchema = Type.Object({\n id: Text,\n scope: Type.Union([Type.Literal('global'), Type.Literal('workspace'), Type.Literal('session')]),\n revision: NumberValue,\n manifestUrl: Text,\n rawAssetBaseUrl: Text,\n verifiedAssetBaseUrl: Text,\n pluginEntries: Type.Array(Type.Tuple([Text, Text])),\n assetPaths: Strings,\n stylePaths: Strings,\n channels: Strings,\n});\nexport const NativeCompositionSchema = Type.Object({\n id: Text,\n scope: Type.Union([Type.Literal('global'), Type.Literal('workspace'), Type.Literal('session')]),\n revision: NumberValue,\n manifestUrl: Text,\n rawAssetBaseUrl: Text,\n pluginEntries: Type.Array(Type.Tuple([Text, Text])),\n uiEntry: Optional(Text),\n channels: Strings,\n plugins: Strings,\n});\n/** A configured template id and the mount whose compositions offer it. */\nconst TemplateDecisionSchema = Type.Object({\n id: Optional(Text),\n mount: Type.Union([\n Type.Object({ scope: Type.Literal('global') }),\n Type.Object({ scope: Type.Literal('workspace'), workspaceId: Text }),\n ]),\n});\nexport const SessionSummarySchema = Type.Object({\n id: Text,\n workspaceId: Optional(Text),\n webComposition: Optional(WebCompositionSchema),\n nativeComposition: Optional(NativeCompositionSchema),\n name: Text,\n cwd: Text,\n createdAt: Text,\n updatedAt: Text,\n phase: Type.Union([Type.Literal('idle'), Type.Literal('turn'), Type.Literal('compaction'), Type.Literal('retry')]),\n phaseSince: Text,\n attach: Type.Literal('attached'),\n pendingMessageCount: NumberValue,\n everPrompted: Flag,\n awaitingInput: Flag,\n lastSettledAt: Optional(Text),\n git: Optional(Type.Object({ branch: Text, dirty: Flag })),\n profile: Optional(Type.Object({ name: Text, displayName: Optional(Text), iconVersion: Optional(Text) })),\n parentSessionId: Optional(Text),\n sessionProvenance: Optional(Text),\n interaction: Optional(Type.Union([Type.Literal('interactive'), Type.Literal('unattended')])),\n /** The line the session's extension published about background work it runs. */\n activity: Optional(Type.Object({ label: Text, attention: Optional(Flag), since: Optional(Text) })),\n /** Tool calls waiting for the person's approval. */\n pendingApprovalCount: Optional(Type.Integer({ minimum: 1 })),\n pendingSetups: Optional(\n Type.Array(\n Type.Object({\n id: Text,\n name: Text,\n createdAt: Text,\n cwd: Optional(Text),\n setupKind: Optional(Type.Union([Type.Literal('managed-worktree'), Type.Literal('existing-directory')])),\n status: Optional(\n Type.Union([Type.Literal('provisioning'), Type.Literal('failed'), Type.Literal('interrupted')]),\n ),\n errorCode: Optional(\n Type.Union([Type.Literal('SESSION_WORKTREE_PROVISION_FAILED'), Type.Literal('SESSION_UNAVAILABLE')]),\n ),\n }),\n ),\n ),\n groups: Optional(Strings),\n backgroundWorkActive: Optional(Flag),\n /** Present and true for a recorded session the server has not reopened yet. */\n dormant: Optional(Flag),\n});\nexport const WorkspaceSchema = Type.Object({\n kind: Optional(Type.Literal('session')),\n instructions: Optional(Text),\n id: Text,\n root: Text,\n name: Optional(Text),\n available: Optional(Flag),\n sandbox: Optional(Text),\n /**\n * The sandbox's state, live: `starting` while it starts or sessions move in, `running` once the host is linked,\n * `stopping` while it is switched off, `failed` when a start or a switch failed, `unavailable` when its provider\n * cannot run it. On a workspace without `sandbox`, `unavailable` means the sandbox provider cannot run it now, so\n * it cannot be switched on; absent means nothing stands in the way.\n */\n sandboxState: Optional(\n Type.Union([\n Type.Literal('starting'),\n Type.Literal('running'),\n Type.Literal('stopping'),\n Type.Literal('unavailable'),\n Type.Literal('failed'),\n ]),\n ),\n /** A plain sentence for `failed` or `unavailable`, such as 'Docker is not running.'. */\n sandboxReason: Optional(Text),\n});\nconst SavedSession = Type.Object({\n id: Text,\n name: Optional(Text),\n firstMessage: Text,\n createdAt: Text,\n updatedAt: Text,\n});\nconst query = (\n name: string,\n schema: TSchema = Text,\n required = false,\n): NonNullable<PoHttpContract['parameters']>[number] => ({ name, in: 'query', required, schema });\nconst body = (schema: TSchema): NonNullable<PoHttpContract['body']> => ({\n contentType: 'application/json',\n required: true,\n schema,\n});\nconst host = (\n id: string,\n path: string,\n method: PoHttpContract['method'],\n result: TSchema,\n extra: Partial<PoHttpContract> = {},\n): PoHttpContract => ({\n id,\n path,\n method,\n scope: 'global',\n authentication: 'owner',\n description: id,\n responses: jsonApiResponses(result),\n ...extra,\n});\nconst Principal = Type.Object({ issuer: Text, subject: Text });\nconst ProviderGrant = Type.Object({\n tag: Type.Literal('po/grant/v1'),\n signature: Text,\n payload: Type.Object({\n issuer: Text,\n subject: Text,\n grantId: Text,\n deviceKeyId: Text,\n networkId: Text,\n workspaceId: Text,\n callingHostId: Text,\n targetHostId: Text,\n operations: Strings,\n constraints: Type.Record(Text, Type.Union([Text, NumberValue, Flag, Type.Null()])),\n issuedAt: NumberValue,\n notBefore: NumberValue,\n expiresAt: NumberValue,\n redelegable: Type.Literal(false),\n revocationEpoch: Optional(NumberValue),\n }),\n});\nconst ProviderConsent = Type.Object({\n workspaceId: Text,\n providerHostId: Text,\n packageName: Text,\n owner: Principal,\n grants: Type.Array(ProviderGrant, { minItems: 2, maxItems: 2 }),\n createdAt: NumberValue,\n expiresAt: NumberValue,\n});\nconst ConsentCandidate = Type.Object({\n hostId: Text,\n packageName: Text,\n version: Text,\n operations: Strings,\n manifestExpiresAt: NumberValue,\n});\nconst ConsentWorkspaceParameter = { name: 'workspaceId', in: 'path' as const, required: true, schema: Text };\nconst Binary = Type.String({ contentEncoding: 'binary' });\nexport const headlessHttpContracts: PoHttpContract[] = [\n host(\n 'health',\n '/api/health',\n 'GET',\n Type.Object({\n ok: Type.Literal(true),\n role: Type.Literal('hub'),\n protocol: Type.Literal(1),\n sessions: NumberValue,\n }),\n { authentication: 'none' },\n ),\n host('telemetry.browser', '/api/telemetry/browser', 'POST', ApiOkSchema, {\n body: body(\n Type.Object({\n v: Type.Literal(1),\n events: Type.Array(\n Type.Object({\n name: Type.String({ pattern: '^web\\\\.browser\\\\.[a-z_]{1,40}$' }),\n duration_ms: Optional(NumberValue),\n count: Optional(NumberValue),\n level: Optional(Type.Literal('warn')),\n attributes: Optional(\n Type.Record(\n Type.String({ pattern: '^[a-z_]{1,32}$' }),\n Type.Union([Type.String({ maxLength: 256 }), NumberValue]),\n { maxProperties: 12 },\n ),\n ),\n }),\n { maxItems: 10 },\n ),\n }),\n ),\n }),\n host(\n 'compositions',\n '/api/compositions',\n 'GET',\n Type.Object({\n network: Optional(Type.Object({ hostId: Text, networkId: Text, enrollmentGeneration: Optional(NumberValue) })),\n /** The computer's own name, which phones show instead of a tunnel address. */\n displayName: Optional(Text),\n global: Optional(WebCompositionSchema),\n nativeGlobal: Optional(NativeCompositionSchema),\n publicKey: Optional(Text),\n shell: Optional(Type.Object({ publicKey: Text, revision: NumberValue })),\n template: Optional(TemplateDecisionSchema),\n /** The phone app's `native.template` choice, resolved the same way. */\n nativeTemplate: Optional(TemplateDecisionSchema),\n workspaces: Type.Array(\n Type.Object({\n id: Text,\n root: Text,\n /** `null` for a sandboxed workspace: its plugins run in its sandbox, the host has none for it. */\n webComposition: Optional(Type.Union([WebCompositionSchema, Type.Null()])),\n nativeComposition: Optional(Type.Union([NativeCompositionSchema, Type.Null()])),\n providers: Optional(\n Type.Array(\n Type.Object({\n hostId: Text,\n packageName: Text,\n version: Text,\n operations: Type.Array(\n Type.Object({\n scope: Type.Union([Type.Literal('global'), Type.Literal('workspace'), Type.Literal('session')]),\n names: Strings,\n }),\n ),\n provenance: Type.Union([Type.Literal('local'), Type.Literal('own'), Type.Literal('consented')]),\n status: Type.Union([Type.Literal('available'), Type.Literal('unavailable')]),\n reason: Optional(\n Type.Union([\n Type.Literal('manifest-missing'),\n Type.Literal('manifest-expired'),\n Type.Literal('roster-stale'),\n Type.Literal('host-removed'),\n Type.Literal('consent-expired'),\n ]),\n ),\n expiresAt: Optional(NumberValue),\n }),\n ),\n ),\n }),\n ),\n }),\n ),\n host('network.voters.propose', '/api/network/voters', 'POST', Json, {\n body: body(\n Type.Object({\n change: Type.Union([\n Type.Object({ network: Text, epoch: NumberValue, kind: Type.Literal('add'), added: Text, addedKey: Text }),\n Type.Object({ network: Text, epoch: NumberValue, kind: Type.Literal('evict'), removed: Text }),\n ]),\n authorization: Text,\n }),\n ),\n }),\n host(\n 'network.consents.list',\n '/api/network/workspaces/{workspaceId}/consents',\n 'GET',\n Type.Object({ consents: Type.Array(ProviderConsent), candidates: Type.Array(ConsentCandidate) }),\n { parameters: [ConsentWorkspaceParameter] },\n ),\n host('network.consents.approve', '/api/network/workspaces/{workspaceId}/consents', 'POST', ProviderConsent, {\n parameters: [ConsentWorkspaceParameter],\n body: body(\n Type.Object({\n providerHostId: Text,\n packageName: Text,\n grants: Type.Array(ProviderGrant, { minItems: 2, maxItems: 2 }),\n }),\n ),\n responses: jsonApiResponses(ProviderConsent, 201),\n }),\n host(\n 'network.consents.revoke',\n '/api/network/workspaces/{workspaceId}/consents/{providerHostId}/{packageName}',\n 'DELETE',\n Type.Null(),\n {\n parameters: [\n ConsentWorkspaceParameter,\n { name: 'providerHostId', in: 'path', required: true, schema: Text },\n { name: 'packageName', in: 'path', required: true, schema: Text },\n ],\n responses: { '204': { description: 'Provider consent revoked' } },\n },\n ),\n host('directories', '/api/directories', 'GET', Type.Object({ directories: Strings }), { parameters: [query('q')] }),\n host(\n 'directories.children',\n '/api/directories/children',\n 'GET',\n Type.Object({ path: Text, parent: Optional(Text), directories: Strings }),\n { parameters: [query('path')] },\n ),\n host(\n 'directories.workspaces',\n '/api/directories/workspaces',\n 'GET',\n Type.Object({\n root: Text,\n declarations: Type.Array(Type.Object({ name: Text, instructions: Optional(Text), workspaceId: Optional(Text) })),\n }),\n { parameters: [query('path')], availability: 'Host provides declaredWorkspaces' },\n ),\n host('directories.po', '/api/directories/po', 'GET', Type.Object({ directories: Strings })),\n host(\n 'sessions.list',\n '/api/workspaces/{workspaceId}/sessions',\n 'GET',\n Type.Object({ sessions: Type.Array(SessionSummarySchema) }),\n ),\n host('sessions.create', '/api/workspaces/{workspaceId}/sessions', 'POST', Type.Object({ sessionId: Text }), {\n body: body(Type.Object({ name: Optional(Text) })),\n responses: jsonApiResponses(Type.Object({ sessionId: Text }), 201),\n }),\n host(\n 'sessions.createGeneral',\n '/api/sessions',\n 'POST',\n Type.Object({ sessionId: Text, workspace: Optional(WorkspaceSchema), session: Optional(SessionSummarySchema) }),\n {\n body: body(Type.Object({ name: Optional(Text), cwd: Optional(Type.String({ minLength: 1 })) })),\n availability:\n 'Host provides createGeneralSession when cwd is omitted; explicit cwd remains supported for compatibility',\n responses: jsonApiResponses(\n Type.Object({ sessionId: Text, workspace: Optional(WorkspaceSchema), session: Optional(SessionSummarySchema) }),\n 201,\n ),\n },\n ),\n host(\n 'coordinators.home',\n '/api/coordinators/home',\n 'POST',\n Type.Object({ sessionId: Text, created: Type.Boolean() }),\n {\n body: body(\n Type.Object(\n {\n profile: Type.String({ minLength: 1 }),\n model: Optional(Type.String({ minLength: 1 })),\n name: Type.String({ minLength: 1 }),\n },\n { additionalProperties: false },\n ),\n ),\n availability: 'Host provides ensureHomeCoordinator; otherwise 501',\n },\n ),\n host('sessions.get', '/api/workspaces/{workspaceId}/sessions/{sessionId}', 'GET', SessionSummarySchema),\n host('sessions.delete', '/api/workspaces/{workspaceId}/sessions/{sessionId}', 'DELETE', ApiOkSchema),\n host(\n 'sessions.history',\n '/api/workspaces/{workspaceId}/sessions/{sessionId}/history',\n 'GET',\n Type.Object({ sessions: Type.Array(SavedSession) }),\n { availability: 'Host provides sessionHistory' },\n ),\n host('sessions.restart', '/api/workspaces/{workspaceId}/sessions/{sessionId}/restart', 'POST', ApiOkSchema, {\n availability: 'Host provides restartSession',\n }),\n host('sessions.revive', '/api/workspaces/{workspaceId}/sessions/{sessionId}/revive', 'POST', ApiOkSchema, {\n availability: 'Host provides reviveSession',\n }),\n host(\n 'sessions.resume',\n '/api/workspaces/{workspaceId}/sessions/{sessionId}/resume',\n 'POST',\n Type.Object({ sessionId: Text }),\n {\n availability: 'Host provides resumeSession',\n body: body(Type.Object({ targetSessionId: Type.String({ pattern: '^[A-Za-z0-9_-]+$' }) })),\n },\n ),\n host('sessions.file', '/api/workspaces/{workspaceId}/sessions/{sessionId}/file', 'GET', Binary, {\n parameters: [query('path', Text, true)],\n responses: {\n ...jsonApiResponses(Binary),\n '200': { description: 'File bytes, MIME type follows the file extension', contentType: '*/*', schema: Binary },\n },\n }),\n host('workspaces.list', '/api/workspaces', 'GET', Type.Object({ workspaces: Type.Array(WorkspaceSchema) })),\n host('workspaces.admit', '/api/workspaces', 'POST', Type.Object({ workspace: WorkspaceSchema }), {\n body: body(\n Type.Object({\n root: Optional(Text),\n name: Optional(Text),\n declaration: Optional(Text),\n instructions: Optional(Text),\n }),\n ),\n responses: jsonApiResponses(Type.Object({ workspace: WorkspaceSchema }), 201),\n }),\n host('workspaces.get', '/api/workspaces/{workspaceId}', 'GET', Type.Object({ workspace: WorkspaceSchema })),\n host(\n 'workspaces.history',\n '/api/workspaces/{workspaceId}/history',\n 'GET',\n Type.Object({ sessions: Type.Array(SavedSession) }),\n {\n availability: 'Host provides workspaceHistory',\n },\n ),\n host('workspaces.resume', '/api/workspaces/{workspaceId}/resume', 'POST', Type.Object({ sessionId: Text }), {\n availability: 'Host provides resumeWorkspaceSession',\n body: body(Type.Object({ targetSessionId: Type.String({ pattern: '^[A-Za-z0-9_-]+$' }) })),\n }),\n host(\n 'workspaces.removed',\n '/api/workspaces/{workspaceId}/removed',\n 'GET',\n Type.Object({\n sessions: Type.Array(Type.Intersect([SavedSession, Type.Object({ removedAt: Text, purgeAt: Text })])),\n }),\n { availability: 'Host provides removedSessions' },\n ),\n host('workspaces.restoreRemoved', '/api/workspaces/{workspaceId}/removed/{sessionId}/restore', 'POST', ApiOkSchema, {\n availability: 'Host provides restoreRemovedSession',\n }),\n host('workspaces.setSandbox', '/api/workspaces/{workspaceId}', 'PATCH', Type.Object({ workspace: WorkspaceSchema }), {\n availability: 'Host provides setWorkspaceSandbox or setWorkspaceInstructions',\n body: body(\n Type.Union([\n Type.Object({ sandbox: Type.Union([Text, Type.Null()]) }, { additionalProperties: false }),\n Type.Object({ instructions: Text }, { additionalProperties: false }),\n ]),\n ),\n }),\n host('workspaces.remove', '/api/workspaces/{workspaceId}', 'DELETE', ApiOkSchema),\n];\nconst AuthType = Type.Union([Type.Literal('api_key'), Type.Literal('oauth')]);\nconst Provider = Type.Object({\n id: Text,\n name: Text,\n methods: Type.Array(Type.Object({ type: AuthType, label: Text })),\n authenticated: Optional(Type.Object({ type: AuthType, source: Optional(Text) })),\n});\nconst LoginEvent = Type.Union([\n Type.Object({\n type: Type.Literal('info'),\n message: Text,\n links: Optional(Type.Array(Type.Object({ url: Text, label: Optional(Text) }))),\n }),\n Type.Object({ type: Type.Literal('auth_url'), url: Text, instructions: Optional(Text) }),\n Type.Object({\n type: Type.Literal('device_code'),\n userCode: Text,\n verificationUri: Text,\n intervalSeconds: Optional(NumberValue),\n expiresInSeconds: Optional(NumberValue),\n }),\n Type.Object({ type: Type.Literal('progress'), message: Text }),\n]);\nexport const LoginFlowSchema = Type.Object({\n id: Text,\n providerId: Text,\n providerName: Text,\n type: AuthType,\n status: Type.Union([\n Type.Literal('running'),\n Type.Literal('succeeded'),\n Type.Literal('failed'),\n Type.Literal('cancelled'),\n ]),\n events: Type.Array(LoginEvent),\n prompt: Optional(\n Type.Object({\n id: Text,\n type: Type.Union([\n Type.Literal('text'),\n Type.Literal('secret'),\n Type.Literal('select'),\n Type.Literal('manual_code'),\n ]),\n message: Text,\n placeholder: Optional(Text),\n options: Optional(Type.Array(Type.Object({ id: Text, label: Text, description: Optional(Text) }))),\n }),\n ),\n remote: Optional(Flag),\n error: Optional(Text),\n});\nconst Flow = Type.Object({ flow: LoginFlowSchema });\nexport const machineHttpContracts: PoHttpContract[] = [\n host('providers.list', '/providers', 'GET', Type.Object({ providers: Type.Array(Provider) })),\n host(\n 'models.list',\n '/models',\n 'GET',\n Type.Object({ models: Type.Array(Type.Object({ value: Text, label: Text, group: Text })) }),\n ),\n host('providers.logout', '/providers/{providerId}', 'DELETE', ApiOkSchema),\n host('logins.create', '/logins', 'POST', Flow, {\n body: body(Type.Object({ providerId: Text, type: AuthType })),\n responses: jsonApiResponses(Flow, 201),\n }),\n host('logins.get', '/logins/{flowId}', 'GET', Flow),\n host('logins.cancel', '/logins/{flowId}', 'DELETE', Flow),\n host('logins.answer', '/logins/{flowId}/answer', 'POST', Flow, {\n body: body(Type.Object({ promptId: Text, value: Text })),\n }),\n].map((route) => ({ ...route, basePath: 'po' }));\nconst Source = Type.Union([\n Type.Literal('extension'),\n Type.Literal('mcp'),\n Type.Literal('plugin'),\n Type.Literal('core'),\n]);\nconst Detail = Type.Union([\n Type.Object({\n itemKind: Type.Literal('tool'),\n name: Text,\n owner: Text,\n source: Source,\n active: Flag,\n tokens: Type.Object({ schemaTokens: NumberValue, promptTokens: NumberValue, totalTokens: NumberValue }),\n description: Optional(Text),\n promptSnippet: Optional(Text),\n promptGuidelines: Optional(Strings),\n parameters: Optional(Json),\n }),\n Type.Object({\n itemKind: Type.Literal('skill'),\n name: Text,\n owner: Text,\n source: Source,\n active: Type.Literal(true),\n tokens: NumberValue,\n description: Text,\n filePath: Optional(Text),\n modelInvocable: Flag,\n }),\n Type.Object({\n itemKind: Type.Literal('prompt'),\n name: Type.Literal('system'),\n tokens: NumberValue,\n stage: Type.Union([Type.Literal('base'), Type.Literal('effective')]),\n text: Text,\n }),\n]);\nconst ContextProjection = Type.Object({\n version: Type.Literal(1),\n revision: NumberValue,\n selection: Type.Object({ majorMode: Text, domains: Strings, profile: Optional(Text) }),\n groups: Type.Array(\n Type.Object({\n id: Text,\n label: Text,\n kind: Type.Union([\n Type.Literal('major'),\n Type.Literal('minor'),\n Type.Literal('domain'),\n Type.Literal('shared'),\n Type.Literal('core'),\n ]),\n items: Type.Array(\n Type.Object({\n name: Text,\n itemKind: Type.Union([Type.Literal('tool'), Type.Literal('skill')]),\n source: Source,\n owner: Text,\n tokens: NumberValue,\n active: Flag,\n }),\n ),\n tokens: NumberValue,\n inactiveTokens: NumberValue,\n }),\n ),\n totalTokens: NumberValue,\n inactiveTokens: NumberValue,\n systemPrompt: Optional(\n Type.Object({\n tokens: NumberValue,\n stage: Type.Union([Type.Literal('base'), Type.Literal('effective')]),\n }),\n ),\n estimator: Type.Literal('gpt-tokenizer'),\n});\nexport const sessionHttpContracts: PoHttpContract[] = [\n {\n ...host('context.current', CURRENT_ROUTE, 'GET', ContextProjection),\n scope: 'session',\n basePath: API_BASE_PATH,\n },\n {\n ...host('context.item', ITEM_ROUTE, 'GET', Type.Object({ revision: NumberValue, item: Detail }), {\n parameters: [\n query('kind', Type.Union([Type.Literal('tool'), Type.Literal('skill'), Type.Literal('prompt')]), true),\n query('name', Text, true),\n ],\n }),\n scope: 'session',\n basePath: API_BASE_PATH,\n },\n {\n ...host('files.complete', '/', 'GET', Type.Object({ files: Strings }), {\n parameters: [query('q', Type.String({ maxLength: 256 }))],\n }),\n scope: 'session',\n basePath: 'files',\n },\n];\n","import { Type, type TSchema } from 'typebox';\n\nimport type { PoHttpContract } from './apiContracts';\nimport { ApiErrorSchema, ApiOkSchema, jsonApiResponses } from './httpApiContracts';\n\nconst Text = Type.String();\nconst NumberValue = Type.Number();\nconst Optional = Type.Optional;\nconst Flag = Type.Boolean();\nconst JsonObject = Type.Record(\n Text,\n Type.Unknown({\n description: 'WebAuthn ceremony fields supplied and verified by the installed WebAuthn implementation.',\n }),\n);\nconst Tunnel = Type.Union([\n Type.Object({ kind: Type.Literal('quick') }),\n Type.Object({\n kind: Type.Literal('named'),\n hostname: Text,\n name: Optional(Text),\n tokenFile: Optional(Text),\n configFile: Optional(Text),\n }),\n]);\nconst Settings = Type.Object({\n autoCloseEnabled: Flag,\n autoCloseMinutes: NumberValue,\n sessionExpiryEnabled: Flag,\n idleMinutes: NumberValue,\n absoluteHours: NumberValue,\n tunnel: Tunnel,\n});\nconst State = Type.Object({\n status: Type.Union([Type.Literal('off'), Type.Literal('starting'), Type.Literal('on'), Type.Literal('failed')]),\n publicUrl: Optional(Text),\n startedAt: Optional(Text),\n closesAt: Optional(Text),\n error: Optional(Text),\n devices: Type.Array(\n Type.Object({ id: Text, label: Text, userAgent: Text, createdAt: Text, lastSeenAt: Text, self: Flag }),\n ),\n pending: Type.Array(Type.Object({ id: Text, userAgent: Text, edgeIp: Text, createdAt: Text, expiresAt: Text })),\n trustedDevices: Type.Array(\n Type.Object({\n id: Text,\n label: Text,\n platform: Type.Union([Type.Literal('ios'), Type.Literal('android')]),\n createdAt: Text,\n lastSeenAt: Text,\n self: Flag,\n }),\n ),\n settings: Settings,\n});\nconst StateResponse = Type.Object({ state: State });\nconst Trust = Type.Object({ publicKey: Text, fingerprint: Text, revision: NumberValue });\nconst Begun = Type.Object({ ceremonyId: Text, options: JsonObject });\nconst DeviceKeyBegun = Type.Object({ ceremonyId: Text, challenge: Text, kind: Type.Literal('device-key') });\nconst ChannelKeys = Type.Object({ session: Text, protocol: Text, http: Text });\nconst Finish = Type.Object({ ceremonyId: Text, response: JsonObject });\nexport const SealedEnvelopeSchema = Type.Object({ v: Type.Literal(1), n: Text, c: Text });\nexport const SealedHttpRequestSchema = Type.Object({\n v: Type.Literal(1),\n method: Text,\n target: Text,\n headers: Type.Array(Type.Tuple([Text, Text])),\n body: Optional(Text),\n});\nexport const SealedHttpResponseSchema = Type.Object({\n v: Type.Literal(1),\n status: NumberValue,\n headers: Type.Array(Type.Tuple([Text, Text])),\n body: Text,\n});\nconst route = (\n id: string,\n path: string,\n method: PoHttpContract['method'],\n result: TSchema,\n input?: TSchema,\n extra: Partial<PoHttpContract> = {},\n): PoHttpContract => ({\n id: `remote.${id}`,\n path: `/api/remote${path}`,\n method,\n scope: 'global',\n authentication: 'owner',\n description: `Remote Control ${id}.`,\n availability:\n 'Global host provides Remote Control. Tunnel routes additionally enforce device, origin and step-up policy.',\n responses: { ...jsonApiResponses(result), '429': { description: 'Rate limit exceeded', schema: ApiErrorSchema } },\n ...(input ? { body: { contentType: 'application/json', required: true, schema: input } } : {}),\n ...extra,\n});\nconst direct: PoHttpContract[] = [\n route('state', '', 'GET', StateResponse),\n route('enable', '/enable', 'POST', StateResponse),\n route('disable', '/disable', 'POST', StateResponse, undefined, {\n responses: {\n ...jsonApiResponses(StateResponse),\n '202': { description: 'Tunnel closing', schema: Type.Object({ status: Type.Literal('closing') }) },\n },\n }),\n route(\n 'codes',\n '/codes',\n 'POST',\n Type.Object({ ...Trust.properties, code: Text, manualCode: Text, pairUrl: Text, expiresAt: Text }),\n undefined,\n {\n responses: jsonApiResponses(\n Type.Object({ ...Trust.properties, code: Text, manualCode: Text, pairUrl: Text, expiresAt: Text }),\n 201,\n ),\n },\n ),\n route('approve', '/pairing/{id}/approve', 'POST', StateResponse),\n route('deny', '/pairing/{id}/deny', 'POST', StateResponse),\n route('revoke', '/devices/{id}', 'DELETE', StateResponse),\n route('settings', '/settings', 'PUT', Type.Object({ settings: Settings }), Type.Partial(Settings)),\n route(\n 'passkeys',\n '/passkeys',\n 'GET',\n Type.Object({\n support: Type.Union([\n Type.Object({ supported: Type.Literal(true), rpId: Text }),\n Type.Object({ supported: Type.Literal(false), reason: Text }),\n ]),\n credentials: Type.Array(Type.Object({ id: Text, label: Text, createdAt: Text, lastUsedAt: Text })),\n }),\n ),\n route('passkeys.remove', '/passkeys/{id}', 'DELETE', ApiOkSchema),\n route('register.begin', '/passkeys/register/begin', 'POST', Begun, undefined, { authentication: 'device' }),\n route('register.finish', '/passkeys/register/finish', 'POST', Type.Object({ id: Text }), Finish, {\n authentication: 'device',\n }),\n route('authenticate.begin', '/passkeys/authenticate/begin', 'POST', Begun, undefined, { authentication: 'none' }),\n route(\n 'authenticate.finish',\n '/passkeys/authenticate/finish',\n 'POST',\n Type.Object({ ok: Type.Literal(true), hostPublicKey: Text }),\n Finish,\n { authentication: 'none' },\n ),\n route('challenge', '/challenge', 'POST', Type.Union([Begun, DeviceKeyBegun]), Type.Object({ action: Text }), {\n authentication: 'device',\n }),\n route(\n 'trusted-devices.register',\n '/trusted-devices',\n 'POST',\n Type.Object({ trustedDeviceId: Text }),\n Type.Object({\n identityPublicKey: Text,\n stepUpPublicKey: Text,\n label: Text,\n platform: Type.Union([Type.Literal('ios'), Type.Literal('android')]),\n identityProof: Text,\n stepUpProof: Text,\n }),\n {\n authentication: 'device',\n description: 'Registers a native device from a sealed, QR-approved pairing session.',\n responses: jsonApiResponses(Type.Object({ trustedDeviceId: Text }), 201),\n },\n ),\n route('trusted-devices.revoke', '/trusted-devices/{id}', 'DELETE', StateResponse, undefined, {\n description: 'Revokes a trusted native device. Local callers, or sealed callers with verified step-up.',\n }),\n route(\n 'device-auth.challenge',\n '/device-auth/challenge',\n 'POST',\n Type.Object({ challengeId: Text, challenge: Text, hostPublicKey: Text, attestation: Text }),\n Type.Object({ trustedDeviceId: Text, nonce: Text }),\n { authentication: 'none' },\n ),\n route(\n 'device-auth.authenticate',\n '/device-auth/authenticate',\n 'POST',\n Type.Object({ ok: Type.Literal(true) }),\n Type.Object({ challengeId: Text, trustedDeviceId: Text, signature: Text, channels: ChannelKeys }),\n { authentication: 'none' },\n ),\n route(\n 'channel',\n '/channel',\n 'POST',\n ApiOkSchema,\n Type.Object({\n clientPublicKey: Text,\n scope: Type.Union([Type.Literal('session'), Type.Literal('protocol'), Type.Literal('http')]),\n }),\n { authentication: 'device' },\n ),\n route('request', '/request', 'POST', SealedEnvelopeSchema, SealedEnvelopeSchema, {\n authentication: 'device',\n description:\n 'Sealed HTTP gateway. Decrypted requests/responses use the SealedHttpRequest and SealedHttpResponse envelopes.',\n }),\n route(\n 'pair',\n '/pair',\n 'POST',\n Type.Object({ requestId: Text, status: Type.Literal('pending') }),\n Type.Object({ code: Type.String({ minLength: 1 }) }),\n {\n authentication: 'none',\n responses: {\n ...jsonApiResponses(Type.Object({ requestId: Text, status: Type.Literal('pending') }), 202),\n '410': { description: 'Pairing code is no longer valid', schema: ApiErrorSchema },\n },\n },\n ),\n route(\n 'pair.status',\n '/pair/status',\n 'GET',\n Type.Object({\n status: Type.Union([\n Type.Literal('pending'),\n Type.Literal('approved'),\n Type.Literal('denied'),\n Type.Literal('expired'),\n Type.Literal('consumed'),\n ]),\n bundleTrust: Optional(Trust),\n hostPublicKey: Optional(Text),\n }),\n undefined,\n { authentication: 'none', parameters: [{ name: 'request', in: 'query', required: true, schema: Text }] },\n ),\n];\nexport const remoteHttpContracts: PoHttpContract[] = [\n route('frontend', '/frontend', 'POST', ApiOkSchema, Type.Object({ origin: Text }), {\n authentication: 'owner',\n availability: 'Internal loopback frontend registration; blocked by the browser proxy.',\n parameters: [{ name: 'x-po-web-registration', in: 'header', required: true, schema: Text }],\n }),\n ...direct,\n ...direct.map((operation) => ({\n ...operation,\n id: `${operation.id}.plugin`,\n basePath: 'remote',\n path: operation.path.slice('/api/remote'.length) || '/',\n authentication: 'owner' as const,\n availability: 'Global Remote Control plugin mount, reached through the authenticated headless listener.',\n })),\n {\n id: 'remote.pair.page',\n scope: 'global',\n path: '/pair',\n method: 'GET',\n authentication: 'none',\n availability: 'Remote listener only',\n description: 'Pairing and passkey bootstrap page.',\n responses: { '200': { description: 'Pairing page', contentType: 'text/html', schema: Text } },\n },\n];\nconst Asset = Type.Object({\n path: Text,\n sha256: Type.String({ pattern: '^[a-f0-9]{64}$' }),\n byteLength: Type.Integer({ minimum: 0 }),\n contentType: Text,\n});\nconst Signed = Type.Object({\n manifest: Type.Object({\n version: Type.Literal(2),\n revision: Type.Integer({ minimum: 1 }),\n builtAt: NumberValue,\n assets: Type.Array(Asset),\n }),\n signature: Text,\n publicKey: Text,\n});\nexport const bundleHttpContracts: PoHttpContract[] = [\n ...['/bundle-manifest.json', '/api/web-plugins/{id}/{revision}/manifest'].flatMap((path) =>\n (['GET', 'HEAD'] as const).map((method): PoHttpContract => ({\n id: `bundle.${path}.${method}`,\n scope: 'global',\n path,\n method,\n authentication: 'owner',\n availability: 'Host publishes a web bundle',\n description: 'Read an immutable signed browser bundle manifest.',\n responses:\n method === 'HEAD'\n ? { '200': { description: 'Manifest response headers' }, '404': { description: 'Bundle not published' } }\n : jsonApiResponses(Signed),\n })),\n ),\n ...['/bundle-assets/{revision}/{assetPath}', '/api/web-plugins/{id}/{revision}/assets/{assetPath}'].flatMap((path) =>\n (['GET', 'HEAD'] as const).map((method): PoHttpContract => ({\n id: `asset.${path}.${method}`,\n scope: 'global',\n path,\n method,\n authentication: 'owner',\n availability: 'Host publishes a web bundle',\n description: 'Read an asset from the signed manifest. assetPath may contain multiple path segments.',\n responses: {\n '200': {\n description: 'Manifest-listed asset, original MIME type',\n ...(method === 'GET' ? { contentType: '*/*', schema: Type.String({ contentEncoding: 'binary' }) } : {}),\n },\n '404': { description: 'Asset not published' },\n },\n })),\n ),\n];\n","import { ChordError, createHost, isChordError, method, type Frame, type Host, type Link } from '@earendil-works/chord';\nimport type { Schema } from '@earendil-works/pi-schema';\nimport type { Static, TSchema } from 'typebox';\n\n/** Name of the Po server host; every Po contract places its objects on it. */\nexport const PO_SERVER_HOST = 'server';\n\n/** One method's argument and result schemas; a missing one means no arguments or a void result. */\nexport interface PoMethodSchemas {\n readonly args?: TSchema;\n readonly result?: TSchema;\n}\n\n/**\n * Gives a TypeBox schema the pi-schema type Chord reads. A TypeBox schema is JSON Schema, so Chord validates it\n * unchanged and contract fingerprints stay the same; only its static type moves.\n */\nexport function chordSchema<S extends TSchema>(schema: S): Schema<Static<S>> {\n return schema as unknown as Schema<Static<S>>;\n}\n\n/** `chordSchema` over a variant's state table. */\nexport function chordStates<T extends Record<string, TSchema>>(schemas: T): { [K in keyof T]: Schema<Static<T[K]>> } {\n return schemas as unknown as { [K in keyof T]: Schema<Static<T[K]>> };\n}\n\n/**\n * What Chord's `method(args, result)` returns. Chord keeps `MethodSpec` private, so declaration\n * emit cannot name an inferred `method()` result; this alias can.\n */\nexport type ChordMethod<A extends Schema | undefined, R extends Schema | undefined> = Omit<\n ReturnType<typeof method<Schema, Schema>>,\n 'args' | 'result'\n> & { readonly args: A; readonly result: R };\n\nexport type ChordMethods<T extends Record<string, PoMethodSchemas>> = {\n [K in keyof T]: ChordMethod<\n T[K] extends { readonly args: infer A extends TSchema } ? Schema<Static<A>> : undefined,\n T[K] extends { readonly result: infer R extends TSchema } ? Schema<Static<R>> : undefined\n >;\n};\n\n/** Chord method specs for a schema table, typed so contracts built from them stay nameable. */\nexport function chordMethods<T extends Record<string, PoMethodSchemas>>(schemas: T): ChordMethods<T> {\n return Object.fromEntries(\n Object.entries<PoMethodSchemas>(schemas).map(([name, { args, result }]) => [\n name,\n result !== undefined\n ? method(args && chordSchema(args), chordSchema(result))\n : args !== undefined\n ? method(chordSchema(args))\n : method(),\n ]),\n ) as ChordMethods<T>;\n}\n\n/** A transport that carries text messages in order; `send` may be asynchronous (sealing). */\nexport interface TextPort {\n send(text: string): void;\n close(): void;\n}\n\n/**\n * A Chord link over any ordered text transport. Feed received text to `deliver` and the\n * transport's end to `ended`.\n */\nexport function createTextLink(port: TextPort): {\n link: Link;\n deliver(text: string): void;\n ended(reason: string): void;\n} {\n let handler: ((frame: Frame) => void) | undefined;\n let queue: Frame[] = [];\n const closeHandlers = new Set<(reason: string) => void>();\n let closed = false;\n const ended = (reason: string): void => {\n if (closed) return;\n closed = true;\n queue = [];\n try {\n port.close();\n } finally {\n for (const close of closeHandlers) close(reason);\n closeHandlers.clear();\n }\n };\n const link: Link = {\n get closed() {\n return closed;\n },\n send(frame) {\n if (closed) return undefined;\n const text = JSON.stringify(frame);\n port.send(text);\n // Reported like Chord's WebSocket link, so this link joins its flow control.\n return text.length;\n },\n receive(next) {\n handler = next;\n for (const frame of queue.splice(0)) next(frame);\n },\n onClose(close) {\n if (closed) close('closed');\n else closeHandlers.add(close);\n },\n close(reason = 'closed') {\n if (closed) return;\n try {\n port.send(JSON.stringify({ t: 'bye', reason }));\n } catch {\n // The transport may already be gone.\n }\n ended(reason);\n },\n };\n return {\n link,\n deliver(text) {\n if (closed) return;\n let frame: Frame;\n try {\n frame = JSON.parse(text) as Frame;\n if (frame === null || typeof frame !== 'object' || typeof (frame as { t?: unknown }).t !== 'string')\n throw new TypeError('not a frame');\n } catch {\n link.close('protocol error');\n return;\n }\n if ((frame as { t: string }).t === 'bye') {\n ended((frame as { reason?: string }).reason ?? 'peer closed');\n return;\n }\n if (handler === undefined) queue.push(frame);\n else handler(frame);\n },\n ended,\n };\n}\n\n/**\n * Whether `error` means this client's code is older than the server's. Chord refuses a changed contract with\n * `contract_mismatch`, which it reports to a client as `upgrade_required`; another protocol version is reported the\n * same way by `createProtocolClient`. Retrying cannot help, only new client code can.\n */\nexport function isUpdateRequired(error: unknown): boolean {\n return isChordError(error, 'contract_mismatch') || isChordError(error, 'upgrade_required');\n}\n\n/** `update_required` is heard once, before the closing link's `disconnected`; the client never connects again. */\nexport type ProtocolConnectionState = 'connected' | 'disconnected' | 'update_required';\n\n/** A browser or native Chord client host with one reconnectable link to the Po server. */\nexport interface ProtocolClient {\n readonly host: Host;\n readonly connected: boolean;\n /** The server needs newer client code; `connect` rejects from now on. */\n readonly updateRequired: boolean;\n connect(): Promise<void>;\n /** Closes the current link; listeners hear `disconnected`. */\n disconnect(): void;\n /** Hands over the error a held reference ended with; an update-required error stops the client for good. */\n reportError(error: unknown): void;\n dispose(): void;\n onConnectionStateChange(listener: (change: { state: ProtocolConnectionState }) => void): () => void;\n}\n\nexport function createProtocolClient(options: { name?: string; openLink: () => Promise<Link> }): ProtocolClient {\n const host = createHost({ name: options.name ?? 'client', kind: 'client', self: { host: true } });\n const listeners = new Set<(change: { state: ProtocolConnectionState }) => void>();\n let current: Link | undefined;\n let connecting: Promise<void> | undefined;\n let disposed = false;\n let updateError: unknown;\n const emit = (state: ProtocolConnectionState) => {\n for (const listener of Array.from(listeners)) listener({ state });\n };\n const reportError = (error: unknown): void => {\n if (disposed || updateError !== undefined || !isUpdateRequired(error)) return;\n updateError = error;\n emit('update_required');\n current?.close();\n };\n return {\n host,\n get connected() {\n return current !== undefined && !current.closed;\n },\n get updateRequired() {\n return updateError !== undefined;\n },\n connect() {\n if (disposed) return Promise.reject(new Error('The protocol client is disposed.'));\n if (updateError !== undefined) return Promise.reject(updateError);\n if (current !== undefined && !current.closed) return Promise.resolve();\n connecting ??= (async () => {\n try {\n const link = await options.openLink();\n if (disposed) {\n link.close();\n throw new Error('The protocol client is disposed.');\n }\n current = link;\n link.onClose(() => {\n if (current !== link) return;\n current = undefined;\n emit('disconnected');\n });\n host.connect(link, {\n principal: { host: PO_SERVER_HOST },\n onProtocolMismatch: ({ local, peer }) =>\n reportError(\n new ChordError(\n 'upgrade_required',\n `The Po server speaks Chord protocol ${peer}, this client speaks ${local}.`,\n ),\n ),\n });\n if (!link.closed) emit('connected');\n } finally {\n connecting = undefined;\n }\n })();\n return connecting;\n },\n disconnect() {\n current?.close();\n },\n reportError,\n dispose() {\n if (disposed) return;\n disposed = true;\n current?.close();\n listeners.clear();\n void host.close().catch(() => undefined);\n },\n onConnectionStateChange(listener) {\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n };\n}\n","import { hostNamed, remote, type Ref } from '@earendil-works/chord';\nimport { Type } from 'typebox';\n\nimport { chordMethods, chordSchema, chordStates, PO_SERVER_HOST } from './protocolContracts';\nimport type { JsonValue } from './sessionProtocol';\n\nconst Json = Type.Unsafe<JsonValue>({});\n\nexport const ChannelFrameSchema = Type.Object({ type: Type.String({ minLength: 1 }), payload: Json });\n/** Latest payload per extension channel frame type. */\nexport const PoChannelsStateSchema = Type.Record(Type.String(), Json);\n\n/** A session's extension channels as seen by one connection. */\nexport const PoChannelsContract = remote('po.channels', {\n version: 1,\n host: hostNamed(PO_SERVER_HOST),\n input: chordSchema(Type.Object({ sessionId: Type.String({ minLength: 1 }) })),\n variants: {\n default: {\n state: chordStates({ latest: PoChannelsStateSchema }),\n methods: chordMethods({ receive: { args: ChannelFrameSchema } }),\n },\n },\n});\n\nexport type ChannelsRef = Ref<typeof PoChannelsContract>;\n","import type { JsonValue } from '@earendil-works/chord';\nimport type { Context } from '@earendil-works/chord/context';\nimport { type Static, type TSchema, Type } from 'typebox';\nimport { Check } from 'typebox/value';\n\nimport type { PoClientMetadata } from './clientMetadata';\nimport type { PoApiMount, PoApiScope } from './packageApi';\n\n/** The address is always exact. A workspace call never resolves to a global service. */\nexport const PoPluginMountSchema = Type.Union([\n Type.Object({ scope: Type.Literal('global') }, { additionalProperties: false }),\n Type.Object(\n { scope: Type.Literal('workspace'), workspaceId: Type.String({ minLength: 1 }) },\n { additionalProperties: false },\n ),\n Type.Object(\n { scope: Type.Literal('session'), sessionId: Type.String({ minLength: 1 }) },\n { additionalProperties: false },\n ),\n]);\n\nexport const PoPluginCallSchema = Type.Object(\n {\n mount: PoPluginMountSchema,\n service: Type.String({ minLength: 1 }),\n method: Type.String({ minLength: 1 }),\n input: Type.Unknown(),\n },\n { additionalProperties: false },\n);\n\nexport type PoPluginCall = Static<typeof PoPluginCallSchema>;\nexport type PoPluginDirection = 'client-to-server' | 'server-to-client';\nexport interface PoPluginCaller {\n /** Self-reported connection metadata, not a trusted pairing identity. */\n client?: PoClientMetadata;\n /** Authenticated connection that owns client capabilities and leases. */\n connectionId?: string;\n /** Aborted when the authenticated browser connection closes. Never supplied over the wire. */\n signal?: AbortSignal;\n}\n\n/** Chord method shared by all authenticated Po clients. */\nexport interface PoPluginService {\n invoke(\n call: {\n mount: PoApiMount;\n service: string;\n method: string;\n input: JsonValue;\n },\n context: Context,\n ): Promise<JsonValue>;\n}\n\nexport interface PoPluginMethod<TInput extends TSchema, TOutput extends TSchema> {\n readonly service: string;\n readonly method: string;\n readonly scope: PoApiScope;\n readonly direction: PoPluginDirection;\n readonly input: TInput;\n readonly output: TOutput;\n}\n\nexport function definePoPluginMethod<TInput extends TSchema, TOutput extends TSchema>(\n definition: PoPluginMethod<TInput, TOutput>,\n): PoPluginMethod<TInput, TOutput> {\n if (!definition.service || !definition.method) throw new Error('Plugin service and method must be named.');\n return definition;\n}\n\nexport function poPluginMountKey(mount: PoApiMount): string {\n if (!Check(PoPluginMountSchema, mount)) throw new Error('Invalid plugin mount.');\n switch (mount.scope) {\n case 'global':\n return 'global';\n case 'workspace':\n return `workspace:${mount.workspaceId}`;\n case 'session':\n return `session:${mount.sessionId}`;\n }\n}\n\nexport class PoPluginCallError extends Error {\n constructor(\n readonly code: 'INVALID_CALL' | 'METHOD_NOT_FOUND' | 'INVALID_INPUT' | 'INVALID_OUTPUT',\n message: string,\n ) {\n super(message);\n this.name = 'PoPluginCallError';\n }\n}\n\nexport interface PoPluginRegistry {\n register<TInput extends TSchema, TOutput extends TSchema>(\n mount: PoApiMount,\n definition: PoPluginMethod<TInput, TOutput>,\n handler: (input: Static<TInput>, caller: PoPluginCaller) => Static<TOutput> | Promise<Static<TOutput>>,\n ): () => void;\n invoke(call: unknown, direction: PoPluginDirection, caller?: PoPluginCaller): Promise<unknown>;\n dispose(): void;\n}\n\n/** Transport-neutral dispatch, shared by Chord server services and client capability hosts. */\nexport function createPoPluginRegistry(): PoPluginRegistry {\n const handlers = new Map<\n string,\n {\n definition: PoPluginMethod<TSchema, TSchema>;\n handler: (input: never, caller: PoPluginCaller) => unknown;\n }\n >();\n let disposed = false;\n const keyOf = (mount: PoApiMount, service: string, method: string, direction: PoPluginDirection): string =>\n `${poPluginMountKey(mount)}\\0${direction}\\0${service}\\0${method}`;\n return {\n register(mount, definition, handler) {\n if (disposed) throw new Error('Plugin registry is disposed.');\n if (mount.scope !== definition.scope)\n throw new Error(`Method '${definition.service}.${definition.method}' requires ${definition.scope} scope.`);\n const key = keyOf(mount, definition.service, definition.method, definition.direction);\n if (handlers.has(key))\n throw new Error(`Plugin method '${definition.service}.${definition.method}' is already mounted.`);\n const entry = { definition, handler } as typeof handlers extends Map<string, infer TValue> ? TValue : never;\n handlers.set(key, entry);\n return () => {\n if (handlers.get(key) === entry) handlers.delete(key);\n };\n },\n async invoke(value, direction, caller = {}) {\n if (disposed) throw new Error('Plugin registry is disposed.');\n if (!Check(PoPluginCallSchema, value)) throw new PoPluginCallError('INVALID_CALL', 'Invalid plugin call.');\n const call = value as PoPluginCall;\n const entry = handlers.get(keyOf(call.mount, call.service, call.method, direction));\n if (!entry)\n throw new PoPluginCallError(\n 'METHOD_NOT_FOUND',\n `Plugin method '${call.service}.${call.method}' is not mounted at this scope.`,\n );\n if (!Check(entry.definition.input, call.input))\n throw new PoPluginCallError('INVALID_INPUT', `Invalid input for '${call.service}.${call.method}'.`);\n const output = await entry.handler(call.input as never, caller);\n if (!Check(entry.definition.output, output))\n throw new PoPluginCallError('INVALID_OUTPUT', `Invalid output from '${call.service}.${call.method}'.`);\n return output;\n },\n dispose() {\n disposed = true;\n handlers.clear();\n },\n };\n}\n\nexport async function invokePoPluginMethod<TInput extends TSchema, TOutput extends TSchema>(\n transport: (call: PoPluginCall) => Promise<unknown>,\n mount: PoApiMount,\n definition: PoPluginMethod<TInput, TOutput>,\n input: Static<TInput>,\n): Promise<Static<TOutput>> {\n if (mount.scope !== definition.scope)\n throw new Error(`Method '${definition.service}.${definition.method}' requires ${definition.scope} scope.`);\n if (!Check(definition.input, input))\n throw new PoPluginCallError('INVALID_INPUT', `Invalid input for '${definition.service}.${definition.method}'.`);\n const output = await transport({ mount, service: definition.service, method: definition.method, input });\n if (!Check(definition.output, output))\n throw new PoPluginCallError('INVALID_OUTPUT', `Invalid output from '${definition.service}.${definition.method}'.`);\n return output;\n}\n","import { hostNamed, remote, type Ref } from '@earendil-works/chord';\nimport { Type, type Static } from 'typebox';\n\nimport type { HomeSnapshot } from './home';\nimport { NativeCompositionSchema, SessionSummarySchema, WorkspaceSchema } from './httpApiContracts';\nimport { PoPluginCallSchema } from './pluginProtocol';\nimport { chordMethods, chordSchema, chordStates, PO_SERVER_HOST } from './protocolContracts';\nimport type { JsonValue } from './sessionProtocol';\n\nconst Text = Type.String();\nconst Json = Type.Unsafe<JsonValue>({});\n\n/** A live session frame every hub client needs (notification entries and agent dialogs) until it is acknowledged. */\nexport const HubNoticeSchema = Type.Object({ id: Text, sessionId: Text, frame: Type.Record(Text, Json) });\nexport type HubNotice = Static<typeof HubNoticeSchema>;\n/** Native UI delivery metadata is HTTP-only; adding it must not refuse existing po.hub@1 clients. */\nexport const HubSessionSchema = Type.Object({\n ...SessionSummarySchema.properties,\n nativeComposition: Type.Optional(Type.Omit(NativeCompositionSchema, ['uiEntry'])),\n});\nexport type HubSessionView = Static<typeof HubSessionSchema>;\n/** Instructions are HTTP-only so existing po.hub@1 clients keep the same wire contract. */\nexport const HubWorkspaceSchema = Type.Omit(WorkspaceSchema, ['instructions']);\nexport type HubWorkspaceView = Static<typeof HubWorkspaceSchema>;\n\n/** Per shared mount (`global`, `workspace:<id>`), a counter that rises when its plugin composition changes. */\nexport const HubCompositionsSchema = Type.Record(Text, Type.Integer({ minimum: 0 }));\n\nconst HubState = {\n sessions: Type.Record(Text, HubSessionSchema),\n workspaces: Type.Record(Text, HubWorkspaceSchema),\n pending: Type.Array(HubNoticeSchema),\n compositions: HubCompositionsSchema,\n};\nexport const PoHubStateSchema = Type.Object(HubState);\n\n/** What one connection may see: its sessions, its workspaces, and the notices it has not acknowledged. */\nexport const PoHubContract = remote('po.hub', {\n version: 1,\n host: hostNamed(PO_SERVER_HOST),\n input: chordSchema(Type.Object({})),\n variants: {\n default: {\n state: chordStates(HubState),\n methods: chordMethods({\n readHome: {\n args: Type.Object({\n offset: Type.Optional(Type.Integer({ minimum: 0 })),\n limit: Type.Optional(Type.Integer({ minimum: 1 })),\n source: Type.Optional(Text),\n workspaceId: Type.Optional(Text),\n }),\n result: Type.Unsafe<HomeSnapshot>({}),\n },\n invoke: { args: PoPluginCallSchema, result: Json },\n ackNotice: { args: Type.Object({ id: Text }) },\n }),\n },\n },\n});\n\nexport type HubRef = Ref<typeof PoHubContract>;\n\n/**\n * Per topic (`global:<name>`, `workspace:<id>:<name>`), a counter the host raises when that data changes, so a\n * client fetches it again instead of polling. A separate contract: a host without it leaves clients on\n * fetch-on-open rather than refusing the whole hub as out of date.\n */\nexport const HubRevisionsSchema = Type.Record(Text, Type.Integer({ minimum: 0 }));\n\nexport const PoHubRevisionsContract = remote('po.hub.revisions', {\n version: 1,\n host: hostNamed(PO_SERVER_HOST),\n input: chordSchema(Type.Object({})),\n variants: { default: { state: chordStates({ revisions: HubRevisionsSchema }), methods: chordMethods({}) } },\n});\n\nexport type HubRevisionsRef = Ref<typeof PoHubRevisionsContract>;\n","import { hostNamed, remote, type Ref } from '@earendil-works/chord';\nimport { Type } from 'typebox';\n\nimport { chordSchema, chordStates, PO_SERVER_HOST } from './protocolContracts';\nimport type { JsonValue } from './sessionProtocol';\n\n/** The thread's latest frame: `transcript_state` while its child runs, `transcript_ready` once it has finished. */\nexport const PoThreadFrameSchema = Type.Union([\n Type.Null(),\n Type.Intersect([Type.Object({ type: Type.String() }), Type.Record(Type.String(), Type.Unsafe<JsonValue>({}))]),\n]);\n\n/** One child thread of a session, followed only while someone holds it. */\nexport const PoThreadContract = remote('po.thread', {\n version: 1,\n host: hostNamed(PO_SERVER_HOST),\n input: chordSchema(\n Type.Object({ sessionId: Type.String({ minLength: 1 }), threadId: Type.String({ minLength: 1 }) }),\n ),\n variants: {\n default: { state: chordStates({ frame: PoThreadFrameSchema }) },\n },\n});\n\nexport type ThreadRef = Ref<typeof PoThreadContract>;\n","import { Type, type TSchema } from 'typebox';\n\nimport type { PoSocketContract } from './apiContracts';\nimport { ChannelFrameSchema, PoChannelsStateSchema } from './protocolChannelsContract';\nimport { chordMethods, type PoMethodSchemas } from './protocolContracts';\nimport { PoHubStateSchema } from './protocolHubContract';\nimport { PoThreadFrameSchema } from './protocolThreadContract';\nimport type { JsonValue } from './sessionProtocol';\n\nconst Text = Type.String();\nconst NumberValue = Type.Number();\nconst Flag = Type.Boolean();\nconst Json = Type.Unsafe<JsonValue>(\n Type.Unknown({\n description:\n 'Strict JSON application value supplied by the active tool, journal entry, or extension; validated by the Pi codec.',\n }),\n);\nconst Optional = Type.Optional;\nconst Strings = Type.Array(Text);\nconst Model = Type.Object({ provider: Text, id: Text });\nconst Thinking = Type.Union([\n Type.Literal('off'),\n Type.Literal('minimal'),\n Type.Literal('low'),\n Type.Literal('medium'),\n Type.Literal('high'),\n Type.Literal('max'),\n Type.Literal('xhigh'),\n]);\nconst Phase = Type.Union([\n Type.Literal('idle'),\n Type.Literal('turn'),\n Type.Literal('compaction'),\n Type.Literal('retry'),\n]);\nconst Image = Type.Object({ type: Type.Literal('image'), data: Text, mimeType: Text });\nconst TextPart = Type.Object({ type: Type.Literal('text'), text: Text });\nconst ThinkingPart = Type.Object({\n type: Type.Literal('thinking'),\n thinking: Text,\n redacted: Optional(Type.Literal(true)),\n});\nconst Content = Type.Union([Image, TextPart]);\nconst Usage = Type.Object({\n input: NumberValue,\n output: NumberValue,\n cacheRead: NumberValue,\n cacheWrite: NumberValue,\n total: NumberValue,\n});\n/** `timeZone` is the sender's device IANA zone; additive and optional so older clients and hosts still agree. */\nconst Message = Type.Object({ text: Text, images: Optional(Type.Array(Image)), timeZone: Optional(Text) });\nconst Lifecycle = Type.Object({\n revision: NumberValue,\n operation: Type.Union([\n Type.Null(),\n Type.Object({\n id: Text,\n kind: Type.Union([Type.Literal('run'), Type.Literal('compaction'), Type.Literal('navigation')]),\n status: Type.Union([Type.Literal('open'), Type.Literal('aborting')]),\n }),\n ]),\n paused: Flag,\n queue: Type.Array(\n Type.Object({\n id: Text,\n text: Text,\n images: Optional(Type.Array(Image)),\n delivery: Type.Union([Type.Literal('steer'), Type.Literal('followUp'), Type.Literal('nextRun')]),\n scheduling: Type.Union([Type.Literal('automatic'), Type.Literal('held')]),\n disposition: Type.Union([Type.Literal('pending'), Type.Literal('handoff')]),\n }),\n ),\n});\nconst Frame = Type.Intersect([Type.Object({ type: Text }), Type.Record(Text, Json)], {\n description: 'Discriminated extension presentation frame; selected channel schemas describe package payloads.',\n});\nconst ProtocolEvent = Type.Object({ sequence: NumberValue, frame: Frame });\nexport const SessionServiceStateSchema = Type.Object({\n snapshot: Type.Object({\n fastMode: Flag,\n locked: Flag,\n lifecycle: Optional(Lifecycle),\n }),\n presentation: Optional(\n Type.Object({\n revision: NumberValue,\n dropped: NumberValue,\n resetRevision: Optional(NumberValue),\n events: Type.Array(ProtocolEvent),\n projections: Type.Array(ProtocolEvent),\n }),\n ),\n live: Optional(\n Type.Object({\n phase: Phase,\n message: Optional(\n Type.Object({\n role: Type.Literal('assistant'),\n content: Type.Array(Type.Union([TextPart, ThinkingPart])),\n model: Text,\n timestamp: NumberValue,\n }),\n ),\n tools: Type.Record(\n Text,\n Type.Object({\n toolCallId: Text,\n toolName: Text,\n args: Json,\n partialResult: Optional(Type.Object({ content: Type.Array(Content), details: Optional(Json) })),\n }),\n ),\n }),\n ),\n});\n/** Argument and result schemas of the `po.session` methods; the Chord contract and the API docs both read them. */\nexport const SessionMethodSchemas = {\n readTranscriptPage: {\n args: Type.Object({\n cursor: Optional(Text),\n direction: Optional(Type.Union([Type.Literal('older'), Type.Literal('newer')])),\n limit: Optional(NumberValue),\n threadId: Optional(Text),\n entryId: Optional(Text),\n }),\n result: Type.Object({\n entries: Type.Array(Json),\n startCursor: Type.Union([Text, Type.Null()]),\n endCursor: Type.Union([Text, Type.Null()]),\n olderCursor: Type.Union([Text, Type.Null()]),\n newerCursor: Type.Union([Text, Type.Null()]),\n generation: NumberValue,\n revision: NumberValue,\n context: Type.Array(Json),\n }),\n },\n prompt: {\n args: Type.Union([\n Text,\n Type.Object({\n ...Message.properties,\n waitFor: Optional(Type.Union([Type.Literal('accepted'), Type.Literal('settled')])),\n }),\n ]),\n },\n steer: { args: Type.Union([Text, Message]) },\n abort: {},\n abortOperation: { args: Type.Object({ operationId: Text }) },\n setModel: { args: Model },\n setThinking: { args: Thinking },\n setFastMode: { args: Flag },\n setAgentLock: { args: Flag },\n followUp: { args: Message },\n enqueueAutomatic: { args: Message, result: Type.Object({ id: Text }) },\n removeQueued: {\n args: Type.Object({ id: Text }),\n result: Type.Union([\n Type.Literal('removed'),\n Type.Literal('in_flight'),\n Type.Literal('already_consumed'),\n Type.Literal('not_found'),\n ]),\n },\n promoteQueued: {\n args: Type.Object({ id: Text, operationId: Optional(Text) }),\n result: Type.Union([\n Type.Literal('promoted'),\n Type.Literal('in_flight'),\n Type.Literal('target_changed'),\n Type.Literal('not_found'),\n ]),\n },\n resumeQueue: {},\n clearQueue: { result: Type.Object({ steering: Strings, followUp: Strings }) },\n rewind: {\n args: Type.Object({\n itemId: Text,\n summarize: Optional(Flag),\n customInstructions: Optional(Text),\n replaceInstructions: Optional(Flag),\n label: Optional(Text),\n }),\n result: Type.Object({\n editorText: Optional(Text),\n cancelled: Flag,\n aborted: Optional(Flag),\n summaryEntry: Optional(\n Type.Object({\n id: Text,\n parentId: Type.Union([Text, Type.Null()]),\n timestamp: Text,\n fromId: Text,\n summary: Text,\n details: Optional(Json),\n usage: Optional(Usage),\n fromHook: Optional(Flag),\n }),\n ),\n }),\n },\n extensionUiResponse: {\n args: Type.Union([\n Type.Object({ id: Text, value: Text }),\n Type.Object({ id: Text, confirmed: Flag }),\n Type.Object({ id: Text, cancelled: Type.Literal(true) }),\n ]),\n },\n getState: {\n result: Type.Object({\n model: Optional(Model),\n thinkingLevel: Thinking,\n fastMode: Flag,\n agentLocked: Optional(Flag),\n isStreaming: Flag,\n isCompacting: Flag,\n steeringMode: Type.Union([Type.Literal('all'), Type.Literal('one-at-a-time')]),\n followUpMode: Type.Union([Type.Literal('all'), Type.Literal('one-at-a-time')]),\n sessionId: Text,\n sessionName: Optional(Text),\n autoCompactionEnabled: Flag,\n messageCount: NumberValue,\n pendingMessageCount: NumberValue,\n operationId: Optional(Text),\n executionStatus: Optional(Type.Union([Type.Literal('open'), Type.Literal('aborting')])),\n queuePaused: Optional(Flag),\n queueRevision: Optional(NumberValue),\n }),\n },\n getSessionStats: {\n result: Type.Object({\n sessionId: Text,\n totalMessages: NumberValue,\n tokens: Usage,\n cost: NumberValue,\n contextUsage: Optional(\n Type.Object({\n tokens: Type.Union([NumberValue, Type.Null()]),\n contextWindow: NumberValue,\n percent: Type.Union([NumberValue, Type.Null()]),\n }),\n ),\n }),\n },\n getCommands: {\n result: Type.Array(\n Type.Object({\n name: Text,\n description: Optional(Text),\n source: Type.Union([Type.Literal('extension'), Type.Literal('prompt'), Type.Literal('skill')]),\n sourceInfo: Optional(\n Type.Object({\n path: Text,\n source: Text,\n scope: Type.Union([Type.Literal('user'), Type.Literal('project'), Type.Literal('temporary')]),\n origin: Type.Union([Type.Literal('package'), Type.Literal('top-level')]),\n baseDir: Optional(Text),\n }),\n ),\n }),\n ),\n },\n getAvailableModels: { result: Type.Array(Model) },\n getAvailableThinkingLevels: { result: Type.Array(Thinking) },\n compact: { args: Type.Object({ customInstructions: Optional(Text) }), result: Json },\n setName: { args: Text },\n setGroups: { args: Type.Array(Text) },\n};\n/** The `po.session` methods as Chord specs. */\nexport const SessionMethods = chordMethods(SessionMethodSchemas);\n\nconst ErrorSchema = Type.Object({ code: Text, message: Text });\nconst documented = (\n id: string,\n service: string,\n member: string,\n direction: PoSocketContract['direction'],\n input: TSchema,\n description: string,\n): PoSocketContract => ({\n id,\n scope: service === 'po.hub' ? 'global' : 'session',\n service,\n member,\n direction,\n kind: direction === 'server-to-client' ? 'state' : 'method',\n input,\n ...(direction === 'server-to-client' ? {} : { errors: ErrorSchema }),\n description,\n});\nexport const sessionSocketContracts: PoSocketContract[] = [\n ...Object.entries<PoMethodSchemas>(SessionMethodSchemas).map(([member, { args, result }]): PoSocketContract => ({\n id: `session.${member}`,\n scope: 'session',\n service: 'po.session',\n member,\n direction: 'client-to-server',\n kind: 'method',\n description: `Session ${member}. The Chord call carries the argument; a void result is null.`,\n input: Type.Tuple(args === undefined ? [] : ([args] as TSchema[])),\n ...(result === undefined ? {} : { output: result }),\n errors: ErrorSchema,\n })),\n documented(\n 'session.state',\n 'po.session',\n 'state',\n 'server-to-client',\n SessionServiceStateSchema,\n 'The `state` member of `po.session`, reconstructed from Chord snapshot and delta frames.',\n ),\n documented(\n 'hub.state',\n 'po.hub',\n 'state',\n 'server-to-client',\n PoHubStateSchema,\n 'Sessions and workspaces this connection may see, and notices it has not acknowledged.',\n ),\n documented(\n 'thread.frame',\n 'po.thread',\n 'frame',\n 'server-to-client',\n PoThreadFrameSchema,\n 'The latest frame of one child thread: transcript_state while it runs, transcript_ready once finished.',\n ),\n documented(\n 'channels.latest',\n 'po.channels',\n 'latest',\n 'server-to-client',\n PoChannelsStateSchema,\n 'The latest payload of each extension channel frame type for one session.',\n ),\n documented(\n 'channels.receive',\n 'po.channels',\n 'receive',\n 'client-to-server',\n Type.Tuple([ChannelFrameSchema]),\n 'Send one extension channel frame to the session.',\n ),\n];\n","import { Type, type TSchema } from 'typebox';\n\nimport type { PoSocketContract } from './apiContracts';\nimport { PoPluginCallSchema } from './pluginProtocol';\n\n/** The Chord release whose link frames this file describes (link protocol 4). */\nexport const CHORD_WIRE_VERSION = '1.3.0';\n\nconst S = Type.String({ minLength: 1 });\nconst Json = Type.Unknown({\n description: 'JSON value; its application shape is defined by the addressed contract member.',\n});\nconst Id = Type.Integer({ minimum: 1 });\nconst ErrorCode = Type.Union(\n [\n 'aborted',\n 'contract_mismatch',\n 'forbidden',\n 'gone',\n 'invalid',\n 'not_in_variant',\n 'not_ready',\n 'released',\n 'superseded',\n 'unavailable',\n 'upgrade_conflict',\n 'upgrade_required',\n ].map((code) => Type.Literal(code)),\n);\nconst WireError = Type.Object({ code: ErrorCode, message: Type.String(), reason: Type.Optional(Type.String()) });\nconst Segment = Type.Union([Type.String(), Type.Integer({ minimum: 0 })]);\nconst Path = Type.Array(Segment);\nconst PathRef = Type.Union([Path, Type.Integer({ minimum: 0 })]);\nconst NonemptyPathRef = Type.Union([Type.Array(Segment, { minItems: 1 }), Type.Integer({ minimum: 0 })]);\nconst Index = Type.Integer({ minimum: 0 });\nexport const ChordWireOpSchema = Type.Union(\n [\n Type.Tuple([Type.Literal('r'), Json]),\n Type.Tuple([Type.Literal('s'), NonemptyPathRef, Json]),\n Type.Tuple([Type.Literal('s'), Json]),\n Type.Tuple([Type.Literal('d'), NonemptyPathRef]),\n Type.Tuple([Type.Literal('d')]),\n Type.Tuple([Type.Literal('a'), NonemptyPathRef, Type.String()]),\n Type.Tuple([Type.Literal('a'), Type.String()]),\n Type.Tuple([Type.Literal('t'), NonemptyPathRef, Index]),\n Type.Tuple([Type.Literal('t'), Index]),\n Type.Tuple([Type.Literal('p'), PathRef, Index, Index, Type.Array(Json)]),\n Type.Tuple([Type.Literal('p'), Index, Index, Type.Array(Json)]),\n Type.Tuple([Type.Literal('m'), PathRef, Type.Array(Index)]),\n Type.Tuple([Type.Literal('m'), Type.Array(Index)]),\n Type.Tuple([Type.Literal('#'), Index, Path]),\n ],\n {\n description:\n 'Chord delta tuples. Path dictionary references and omitted paths depend on earlier operations in this subscription; decode with the Chord delta decoder.',\n },\n);\nconst Hello = (kind: TSchema) =>\n Type.Object({\n t: Type.Literal('hello'),\n protocol: Type.Optional(Type.Integer({ minimum: 1 })),\n name: Type.String(),\n kind,\n codeVersion: Type.Integer({ minimum: 0 }),\n acks: Type.Optional(Type.Boolean()),\n });\nconst Ack = Type.Object({ t: Type.Literal('ack'), n: Type.Integer({ minimum: 1 }) });\nconst Ping = Type.Object({ t: Type.Literal('ping'), n: Type.Integer() });\nconst Pong = Type.Object({ t: Type.Literal('pong'), n: Type.Integer() });\nconst Bye = Type.Object({ t: Type.Literal('bye'), reason: Type.Optional(Type.String()) });\n\n/** Frames a client (browser or native app) sends on its link. */\nexport const ChordClientFrameSchema = Type.Union([\n Hello(Type.Literal('client')),\n Ack,\n Type.Object({\n t: Type.Literal('hold'),\n id: Id,\n at: Type.String(),\n token: Json,\n input: Json,\n state: Type.Optional(Type.Literal(false)),\n again: Type.Optional(Type.Literal(true)),\n }),\n Type.Object({ t: Type.Literal('release'), id: Id }),\n Type.Object({ t: Type.Literal('call'), id: Id, hold: Id, member: S, args: Type.Optional(Json) }),\n Type.Object({ t: Type.Literal('cancel'), id: Id }),\n Type.Object({ t: Type.Literal('sub'), hold: Id }),\n Type.Object({ t: Type.Literal('unsub'), hold: Id }),\n Type.Object({ t: Type.Literal('root_end'), rootId: Type.String() }),\n Ping,\n Pong,\n Bye,\n]);\n\n/** Frames the Po server sends to a client link. */\nexport const ChordServerFrameSchema = Type.Union([\n Hello(Type.String()),\n Ack,\n Type.Object({\n t: Type.Literal('shape'),\n id: Id,\n variant: Type.Optional(Type.String()),\n members: Type.Array(Type.String()),\n contract: Type.String(),\n state: Type.Array(S),\n }),\n Type.Object({ t: Type.Literal('gone'), id: Id, error: WireError }),\n Type.Object({ t: Type.Literal('result'), id: Id, value: Type.Optional(Json), error: Type.Optional(WireError) }),\n Type.Object({\n t: Type.Literal('state'),\n hold: Id,\n m: S,\n as: Type.Union([Type.Literal('snap'), Type.Literal('reset'), Type.Literal('ops'), Type.Literal('error')]),\n value: Type.Optional(Json),\n ops: Type.Optional(Type.Array(ChordWireOpSchema)),\n error: Type.Optional(WireError),\n }),\n Ping,\n Pong,\n Bye,\n]);\n\nexport const transportSocketContracts: PoSocketContract[] = [\n {\n id: 'chord.client',\n scope: 'global',\n service: '$chord',\n member: 'client',\n direction: 'client-to-server',\n kind: 'channel',\n input: ChordClientFrameSchema,\n description: `Chord ${CHORD_WIRE_VERSION} link frame, one JSON text message each, sealed for remote delivery. Hold \\`po.hub\\` ({}) and \\`po.session\\` ({ sessionId }) at host \\`server\\`.`,\n },\n {\n id: 'chord.server',\n scope: 'global',\n service: '$chord',\n member: 'server',\n direction: 'server-to-client',\n kind: 'channel',\n input: ChordServerFrameSchema,\n description: 'Chord link frame. Results correlate by call id; state frames by hold id and member.',\n },\n {\n id: 'plugin.invoke',\n scope: 'global',\n service: 'po.hub',\n member: 'invoke',\n direction: 'client-to-server',\n kind: 'method',\n input: PoPluginCallSchema,\n output: Json,\n errors: WireError,\n description: 'Invoke the selected scoped plugin method. Its declaration supplies input and output shapes.',\n },\n];\n","import { defineApiContract } from './apiContracts';\nimport { headlessHttpContracts, machineHttpContracts, sessionHttpContracts } from './httpApiContracts';\nimport {\n SealedEnvelopeSchema,\n SealedHttpRequestSchema,\n SealedHttpResponseSchema,\n remoteHttpContracts,\n bundleHttpContracts,\n} from './remoteApiContracts';\nimport { sessionSocketContracts } from './sessionApiContracts';\nimport { CHORD_WIRE_VERSION, transportSocketContracts } from './transportApiContracts';\n\nexport const builtinApiContract = defineApiContract({\n version: 1,\n schemas: {\n SealedEnvelope: SealedEnvelopeSchema,\n SealedHttpRequest: SealedHttpRequestSchema,\n SealedHttpResponse: SealedHttpResponseSchema,\n },\n protocols: { chord: CHORD_WIRE_VERSION, sealed: '1' },\n http: [\n ...headlessHttpContracts,\n ...machineHttpContracts,\n ...sessionHttpContracts,\n ...remoteHttpContracts,\n ...bundleHttpContracts,\n ],\n sockets: [...sessionSocketContracts, ...transportSocketContracts],\n dynamic: [\n 'WebAuthn options and credential responses follow the installed WebAuthn implementation.',\n 'Tool inputs/results and journal entries contain runtime-defined JSON.',\n 'Selected channel and presentation payload schemas are contributed by their owning package.',\n ],\n});\n"],"mappings":";;;;;AAMA,MAAa,0BAA0B;AACvC,MAAa,uBAAuB;AACpC,MAAM,SAASA,QAAAA,KAAK,OAAyBA,QAAAA,KAAK,MAAM,CAACA,QAAAA,KAAK,QAAQ,GAAGA,QAAAA,KAAK,OAAOA,QAAAA,KAAK,OAAO,GAAGA,QAAAA,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrH,MAAM,QAAQA,QAAAA,KAAK,MAAM;CAACA,QAAAA,KAAK,QAAQ,QAAQ;CAAGA,QAAAA,KAAK,QAAQ,WAAW;CAAGA,QAAAA,KAAK,QAAQ,SAAS;AAAC,CAAC;AACrG,MAAM,QAAQA,QAAAA,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC;AAC1C,MAAM,iBAAiBA,QAAAA,KAAK,OAAO;CACjC,aAAa;CACb,aAAaA,QAAAA,KAAK,SAAS,KAAK;CAChC,QAAQA,QAAAA,KAAK,SAAS,MAAM;CAC5B,QAAQA,QAAAA,KAAK,SAASA,QAAAA,KAAK,OAAO,OAAO,MAAM,CAAC;AAClD,CAAC;;AAGD,MAAa,sBAAsBA,QAAAA,KAAK,OAAO;CAC7C,SAASA,QAAAA,KAAK,QAAA,CAA+B;CAC7C,WAAWA,QAAAA,KAAK,SAASA,QAAAA,KAAK,OAAO,OAAO,KAAK,CAAC;CAClD,SAASA,QAAAA,KAAK,SAASA,QAAAA,KAAK,OAAO,OAAO,MAAM,CAAC;CACjD,MAAMA,QAAAA,KAAK,MACTA,QAAAA,KAAK,OAAO;EACV,IAAI;EACJ,OAAO;;EAEP,UAAUA,QAAAA,KAAK,SAASA,QAAAA,KAAK,OAAO,EAAE,SAAS,kCAAkC,CAAC,CAAC;EACnF,MAAMA,QAAAA,KAAK,OAAO,EAAE,SAAS,KAAK,CAAC;EACnC,QAAQA,QAAAA,KAAK,MAAM;GACjBA,QAAAA,KAAK,QAAQ,KAAK;GAClBA,QAAAA,KAAK,QAAQ,MAAM;GACnBA,QAAAA,KAAK,QAAQ,KAAK;GAClBA,QAAAA,KAAK,QAAQ,OAAO;GACpBA,QAAAA,KAAK,QAAQ,QAAQ;GACrBA,QAAAA,KAAK,QAAQ,MAAM;GACnBA,QAAAA,KAAK,QAAQ,SAAS;EACxB,CAAC;EACD,aAAa;EACb,cAAcA,QAAAA,KAAK,SAAS,KAAK;EACjC,gBAAgBA,QAAAA,KAAK,MAAM;GAACA,QAAAA,KAAK,QAAQ,MAAM;GAAGA,QAAAA,KAAK,QAAQ,OAAO;GAAGA,QAAAA,KAAK,QAAQ,QAAQ;EAAC,CAAC;EAChG,YAAYA,QAAAA,KAAK,SACfA,QAAAA,KAAK,MACHA,QAAAA,KAAK,OAAO;GACV,MAAM;GACN,IAAIA,QAAAA,KAAK,MAAM;IAACA,QAAAA,KAAK,QAAQ,MAAM;IAAGA,QAAAA,KAAK,QAAQ,OAAO;IAAGA,QAAAA,KAAK,QAAQ,QAAQ;GAAC,CAAC;GACpF,UAAUA,QAAAA,KAAK,QAAQ;GACvB,QAAQ;EACV,CAAC,CACH,CACF;EACA,MAAMA,QAAAA,KAAK,SACTA,QAAAA,KAAK,OAAO;GACV,aAAa;GACb,cAAcA,QAAAA,KAAK,SAASA,QAAAA,KAAK,MAAM,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;GAC9D,UAAUA,QAAAA,KAAK,QAAQ;GACvB,QAAQ;EACV,CAAC,CACH;EACA,WAAWA,QAAAA,KAAK,OAAOA,QAAAA,KAAK,OAAO,EAAE,SAAS,8BAA8B,CAAC,GAAG,gBAAgB,EAC9F,eAAe,EACjB,CAAC;CACH,CAAC,CACH;CACA,SAASA,QAAAA,KAAK,MACZA,QAAAA,KAAK,OAAO;EACV,IAAI;EACJ,OAAO;EACP,aAAa;EACb,cAAcA,QAAAA,KAAK,SAAS,KAAK;EACjC,SAAS;EACT,QAAQ;EACR,WAAWA,QAAAA,KAAK,MAAM,CAACA,QAAAA,KAAK,QAAQ,kBAAkB,GAAGA,QAAAA,KAAK,QAAQ,kBAAkB,CAAC,CAAC;EAC1F,MAAMA,QAAAA,KAAK,MAAM;GAACA,QAAAA,KAAK,QAAQ,QAAQ;GAAGA,QAAAA,KAAK,QAAQ,OAAO;GAAGA,QAAAA,KAAK,QAAQ,SAAS;EAAC,CAAC;EACzF,OAAO;EACP,QAAQA,QAAAA,KAAK,SAAS,MAAM;EAC5B,QAAQA,QAAAA,KAAK,SAAS,MAAM;CAC9B,CAAC,CACH;;CAEA,SAASA,QAAAA,KAAK,MAAMA,QAAAA,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;CACjD,MAAMA,QAAAA,KAAK,SAASA,QAAAA,KAAK,MAAM,KAAK,CAAC;AACvC,CAAC;AAMD,SAAgB,kBAAkB,UAAwC;CACxE,OAAO;AACT;AAEA,SAAgB,iBAAiB,OAA+B;CAC9D,IAAI,EAAA,GAACC,cAAAA,MAAAA,CAAM,qBAAqB,KAAK,GAAG,MAAM,IAAI,MAAM,yBAAyB;CACjF,MAAM,WAAW;CACjB,MAAM,sBAAM,IAAI,IAAY;CAC5B,KAAK,MAAM,SAAS,CAAC,GAAG,SAAS,MAAM,GAAG,SAAS,OAAO,GAAG;EAC3D,MAAM,MAAM,GAAG,MAAM,MAAM,GAAG,MAAM;EACpC,IAAI,IAAI,IAAI,GAAG,GAAG,MAAM,IAAI,MAAM,qCAAqC,KAAK;EAC5E,IAAI,IAAI,GAAG;CACb;CAEA,MAAM,SAAS,MAAe,cAAiC;EAC7D,IAAI,SAAS,QAAQ,OAAO,SAAS,YAAY,OAAO,SAAS,WAAW;EAC5E,IAAI,OAAO,SAAS,YAAY,OAAO,SAAS,IAAI,GAAG;EACvD,IAAI,OAAO,SAAS,YAAY,UAAU,IAAI,IAAI,GAAG,MAAM,IAAI,MAAM,6CAA6C;EAClH,UAAU,IAAI,IAAI;EAClB,KAAK,MAAM,SAAS,OAAO,OAAO,IAAI,GAAG,MAAM,OAAO,SAAS;EAC/D,UAAU,OAAO,IAAI;CACvB;CACA,MAAM,0BAAU,IAAI,IAAI,CAAC;CACzB,OAAO;AACT;AAoBA,SAAgB,uBAAuB,OAAqC;CAC1E,MAAM,gBAAgBD,QAAAA,KAAK,OAAO;EAChC,aAAa;EACb,gBAAgB;EAChB,QAAQA,QAAAA,KAAK,MAAM,OAAO,EAAE,aAAa,KAAK,CAAC;EAC/C,QAAQA,QAAAA,KAAK,MAAMA,QAAAA,KAAK,OAAO;GAAE,WAAW;GAAO,OAAO;EAAM,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC;EACnF,UAAUA,QAAAA,KAAK,SAAS,mBAAmB;EAC3C,SAASA,QAAAA,KAAK,SAAS,KAAK;EAC5B,QAAQA,QAAAA,KAAK,SAASA,QAAAA,KAAK,OAAO,EAAE,SAAS,oBAAoB,CAAC,CAAC;CACrE,CAAC;CACD,MAAM,iBAAiBA,QAAAA,KAAK,OAAO;EACjC,SAASA,QAAAA,KAAK,QAAA,CAA+B;EAC7C,YAAY;EACZ,aAAaA,QAAAA,KAAK,OAAO,EAAE,SAAS,iBAAiB,CAAC;EACtD,UAAUA,QAAAA,KAAK,MAAM,aAAa;CACpC,CAAC;CACD,IAAI,EAAA,GAACC,cAAAA,MAAAA,CAAM,gBAAgB,KAAK,GAAG,MAAM,IAAI,MAAM,gCAAgC;CACnF,MAAM,OAAO;CACb,MAAM,wBAAQ,IAAI,IAAY;CAC9B,KAAK,MAAM,SAAS,KAAK,UAAU;EACjC,IAAI,MAAM,IAAI,MAAM,WAAW,KAAK,MAAM,QAAQ,MAAM,GAAG,CAAC,CAAC,SAAS,IAAI,GACxE,MAAM,IAAI,MAAM,mCAAmC;EACrD,MAAM,IAAI,MAAM,WAAW;EAC3B,IAAI,MAAM,aAAa,KAAA,GAAW,iBAAiB,MAAM,QAAQ;CACnE;CACA,OAAO;AACT;;;;AChIA,SAAgB,sBAAsB,OAAwB;CAC5D,MAAM,WAAW,SAA2B;EAC1C,IAAI,MAAM,QAAQ,IAAI,GAAG,OAAO,KAAK,IAAI,OAAO;EAChD,IAAI,SAAS,QAAQ,OAAO,SAAS,UACnC,OAAO,OAAO,YACZ,OAAO,QAAQ,IAAI,CAAC,CACjB,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC,CAAC,CAC5C,KAAK,CAAC,KAAK,WAAW,CAAC,KAAK,QAAQ,KAAK,CAAC,CAAC,CAChD;EACF,OAAO;CACT;CACA,OAAO,GAAG,KAAK,UAAU,QAAQ,KAAK,GAAG,MAAM,CAAC,EAAE;AACpD;AAEA,MAAM,iBAAiB,UACrB,MAAM,QAAQ,qBAAqB,cAAc,IAAI,UAAU,YAAY,CAAC,CAAC,CAAE,SAAS,EAAE,EAAE,EAAE;AAChG,MAAM,gBAAgB,UACpB,UAAU,WACN,iBACA,UAAU,cACR,0CACA;;AAGR,SAAgB,mBAAmB,YAA2D;CAC5F,MAAM,QAAiD,CAAC;CACxD,MAAM,UAAmC,CAAC;CAC1C,MAAM,WAAoC,CAAC;CAC3C,MAAM,aAAsC,CAAC;CAC7C,MAAM,kBAA2D;EAAE,QAAQ,CAAC;EAAG,WAAW,CAAC;EAAG,SAAS,CAAC;CAAE;CAC1G,MAAM,WAAqC;EACzC,SAAS;EACT,UAAU;EACV,WAAW,CAAC;EACZ,YAAY,CAAC;EACb,UAAU,CAAC;EACX,MAAM,CAAC;EACP,SAAS,CAAC;CACZ;CACA,MAAM,kCAAkB,IAAI,IAAY;CACxC,MAAM,UAAU,IAAY,UAAqC;EAC/D,MAAM,OAAO,cAAc,EAAE;EAC7B,IAAI,QAAQ,UAAU,KAAA,GAAW,MAAM,IAAI,MAAM,uBAAuB,IAAI;EAE5E,MAAM,YAAY,UAA4B;GAC5C,IAAI,MAAM,QAAQ,KAAK,GAAG,OAAO,MAAM,IAAI,QAAQ;GACnD,IAAI,UAAU,QAAQ,OAAO,UAAU,UAAU,OAAO;GACxD,OAAO,OAAO,YACZ,OAAO,QAAQ,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,WAAW;IAC1C,IAAI,QAAQ,OAAO,MAAM,IAAI,MAAM,UAAU,GAAG,oCAAoC;IACpF,IAAI,QAAQ,UAAU,OAAO,UAAU,UAAU;KAC/C,IAAI,CAAC,MAAM,WAAW,IAAI,GAAG,MAAM,IAAI,MAAM,kCAAkC,GAAG,IAAI,OAAO;KAC7F,OAAO,CAAC,KAAK,wBAAwB,OAAO,MAAM,MAAM,CAAC,GAAG;IAC9D;IACA,OAAO,CAAC,KAAK,SAAS,KAAK,CAAC;GAC9B,CAAC,CACH;EACF;EACA,QAAQ,QAAQ,SAAS,KAAK;EAC9B,OAAO,EAAE,MAAM,wBAAwB,OAAO;CAChD;CACA,KAAK,MAAM,YAAY,CAAC,GAAG,UAAU,CAAC,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,cAAc,EAAE,KAAK,CAAC,GAAG;EACrF,SAAS,WAAW,KAAK;GACvB,OAAO,SAAS;GAChB,WAAW,SAAS;GACpB,cAAc,CAAC,GAAG,SAAS,YAAY,CAAC,CAAC,KAAK;GAC9C,YAAY,SAAS,SAAS;GAC9B,aAAa,SAAS,SAAS;EACjC,CAAC;EACD,KAAK,MAAM,SAAS,CAAC,GAAG,SAAS,SAAS,QAAQ,CAAC,CAAC,MAAM,GAAG,MAAM,EAAE,YAAY,cAAc,EAAE,WAAW,CAAC,GAAG;GAC9G,IACE,CAAC,MAAM,OAAO,SAAS,SAAS,KAAK,KACrC,CAAC,MAAM,OAAO,MACX,UACC,MAAM,cAAc,SAAS,cAC5B,MAAM,UAAU,aAAa,SAAS,aAAa,SAAS,MAAM,KAAK,EAC5E,GAEA;GACF,SAAS,SAAS,KAAK;IAAE,MAAM,MAAM;IAAa,SAAS,MAAM;IAAgB,OAAO,SAAS;GAAM,CAAC;GACxG,IAAI,CAAC,MAAM,YAAY,MAAM,SAAS;IACpC,SAAS,KAAK,KAAK;KACjB,aAAa,MAAM;KACnB,OAAO,SAAS;KAChB,QAAQ,MAAM,WAAW;IAC3B,CAAC;IACD;GACF;GACA,MAAM,WAAW,iBAAiB,MAAM,QAAQ;GAChD,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAQ,SAAS,WAAW,CAAC,CAAC,GAC/D,OAAO,GAAG,MAAM,YAAY,GAAG,SAAS,MAAM,GAAG,QAAQ,KAAK;GAChE,KAAK,MAAM,CAAC,MAAM,YAAY,OAAO,QAAQ,SAAS,aAAa,CAAC,CAAC,GAAG;IACtE,IAAI,SAAS,UAAU,UAAU,KAAA,KAAa,SAAS,UAAU,UAAU,SACzE,MAAM,IAAI,MAAM,eAAe,KAAK,mBAAmB;IACzD,SAAS,UAAU,QAAQ;GAC7B;GACA,SAAS,KAAK,KACZ,IAAI,SAAS,QAAQ,CAAC,EAAA,CAAG,KAAK,YAAY;IAAE,aAAa,MAAM;IAAa,OAAO,SAAS;IAAO;GAAO,EAAE,CAC9G;GACA,SAAS,QAAQ,KAAK,GAAG,SAAS,QAAQ,KAAK,UAAU,GAAG,MAAM,YAAY,IAAI,OAAO,CAAC;GAC1F,KAAK,MAAM,SAAS,SAAS,KAAK,QAAQ,UAAU,MAAM,UAAU,SAAS,KAAK,GAAG;IACnF,MAAM,KAAK,GAAG,MAAM,YAAY,GAAG,MAAM,MAAM,GAAG,MAAM;IAOxD,MAAM,WAAW,GALf,MAAM,aAAa,KAAA,IACf,KACA,MAAM,aAAa,aACjB,GAAG,MAAM,UAAU,WAAW,SAAS,gCAAgC,aACvE,GAAG,aAAa,MAAM,KAAK,EAAE,GAAG,MAAM,aAClB,MAAM,SAAS,MAAM,KAAK,MAAM;IAC5D,MAAM,SAAS,MAAM,OAAO,YAAY;IACxC,MAAM,OAAQ,MAAM,cAAc,CAAC;IACnC,IAAI,KAAK,SAAS,MAAM,IAAI,MAAM,8BAA8B,MAAM,OAAO,GAAG,UAAU;IAC1F,MAAM,cAAc,MAAM,cAAc,CAAC,EAAA,CAAG,KAAK,eAAe;KAC9D,GAAG;KACH,QAAQ,OAAO,GAAG,GAAG,GAAG,UAAU,GAAG,GAAG,UAAU,QAAQ,UAAU,MAAM;IAC5E,EAAE;IACF,KAAK,MAAM,SAAS,SAAS,SAAS,eAAe,GACnD,IAAI,CAAC,WAAW,MAAM,cAAc,UAAU,OAAO,UAAU,UAAU,SAAS,MAAM,EAAE,GACxF,WAAW,KAAK;KACd,MAAM,MAAM;KACZ,IAAI;KACJ,UAAU;KACV,QAAQ,OAAO,GAAG,GAAG,QAAQ,MAAM,MAAM;MAAE,MAAM;MAAU,WAAW;KAAE,CAAC;IAC3E,CAAC;IAEL,KAAK,UAAU;KACb,aAAa,cAAc,EAAE;KAC7B,aAAa,MAAM;KACnB;KACA,UAAU,MAAM,mBAAmB,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,iBAAiB,CAAC,EAAE,CAAC;KAChF,QAAQ;MACN,aAAa,MAAM;MACnB,OAAO,MAAM;MACb,GAAI,MAAM,eAAe,EAAE,cAAc,MAAM,aAAa,IAAI,CAAC;KACnE;KACA,GAAI,MAAM,OACN,EACE,aAAa;MACX,UAAU,MAAM,KAAK;MACrB,SAAS,OAAO,aACb,MAAM,KAAK,gBAAgB,CAAC,MAAM,KAAK,WAAW,EAAA,CAAG,KAAK,cAAc,CACvE,WACA,EAAE,QAAQ,OAAO,GAAG,GAAG,QAAQ,aAAa,MAAM,KAAM,MAAM,EAAE,CAClE,CAAC,CACH;KACF,EACF,IACA,CAAC;KACL,WAAW,OAAO,YAChB,OAAO,QAAQ,MAAM,SAAS,CAAC,CAAC,KAAK,CAAC,QAAQ,cAAc,CAC1D,QACA;MACE,aAAa,SAAS;MACtB,GAAI,SAAS,SACT,EACE,gBAAgB,OAAO,YACrB,OAAO,QAAQ,SAAS,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,aAAa,CACvD,MACA,OAAO,GAAG,GAAG,SAAS,QAAQ,OAAO,CACvC,CAAC,CACH,EACF,IACA,CAAC;MACL,GAAI,SAAS,WAAW,KAAA,IACpB,CAAC,IACD,EACE,SAAS,GACN,SAAS,eAAe,qBAAqB,EAC5C,QAAQ,OAAO,GAAG,GAAG,YAAY,UAAU,SAAS,MAAM,EAC5D,EACF,EACF;KACN,CACF,CAAC,CACH;IACF;GACF;GACA,KAAK,MAAM,UAAU,SAAS,QAAQ,QAAQ,WAAW,OAAO,UAAU,SAAS,KAAK,GAAG;IACzF,MAAM,UAAU,GAAG,OAAO,MAAM,GAAG,OAAO,UAAU,GAAG,OAAO,KAAK,GAAG,OAAO,QAAQ,GAAG,OAAO;IAC/F,IAAI,gBAAgB,IAAI,OAAO,GAAG,MAAM,IAAI,MAAM,gCAAgC,SAAS;IAC3F,gBAAgB,IAAI,OAAO;IAC3B,KAAK,MAAM,WAAW,OAAO,UAAU,WAAW,CAAC,QAAQ,IAAI,CAAC,OAAO,OAAO,QAAQ,GAAG;KACvF,MAAM,KAAK,cACT,GAAG,MAAM,YAAY,GAAG,OAAO,MAAM,GAAG,OAAO,KAAK,YAAY,OAAO,QAAQ,KAAK,cACtF;KACA,MAAM,cAAc,QAAgB,YAA6B;MAC/D,MAAM,OAAO,GAAG,GAAG,GAAG;MACtB,SAAS,QAAQ;OAAE;OAAM,SAAS,OAAO,MAAM,OAAO;MAAE;MACxD,gBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,yBAAyB,OAAO;MACzE,OAAO,cAAc,QAAQ,YAAY;KAC3C;KACA,MAAM,UAAU,WAAW,SAAS,OAAO,KAAK;KAChD,MAAM,UAAU,OAAO,WAAW,KAAA,IAAY,CAAC,IAAI,CAAC,EAAE,MAAM,WAAW,UAAU,OAAO,MAAM,EAAE,CAAC;KACjG,IAAI,OAAO,WAAW,KAAA,GAAW,QAAQ,KAAK,EAAE,MAAM,WAAW,SAAS,OAAO,MAAM,EAAE,CAAC;KAC1F,WAAW,MAAM;MACf,QAAQ,OAAO,cAAc,qBAAqB,YAAY;MAC9D,SAAS,EAAE,MAAM,cAAc,UAAU;MACzC,UAAU,CAAC,EAAE,MAAM,QAAQ,CAAC;MAC5B,aAAa,OAAO;MACpB,GAAI,QAAQ,SAAS,EAAE,OAAO;OAAE,SAAS,EAAE,MAAM,cAAc,UAAU;OAAG,UAAU;MAAQ,EAAE,IAAI,CAAC;MACrG,QAAQ;OACN,SAAS,OAAO;OAChB,QAAQ,OAAO;OACf,OAAO,OAAO;OACd,MAAM,OAAO;OACb,gBAAgB;OAChB,GAAI,OAAO,eAAe,EAAE,cAAc,OAAO,aAAa,IAAI,CAAC;MACrE;KACF;IACF;GACF;EACF;CACF;CACA,SAAS,WAAW,SAAS,KAAK,WAAW;CAC7C,SAAS,UAAU,CAAC,GAAG,IAAI,IAAI,SAAS,OAAO,CAAC,CAAC,CAAC,KAAK;CACvD,MAAM,OAAO;EAAE,OAAO;EAA0B,SAAS;CAAI;CAC7D,MAAM,UAAU;EACd,SAAS;EACT;EACA;EACA,YAAY;GACV,SAAS,eAAe,OAAO;GAC/B,iBAAiB;IACf,OAAO;KAAE,MAAM;KAAU,IAAI;KAAU,MAAM;IAAa;IAC1D,QAAQ;KACN,MAAM;KACN,IAAI;KACJ,MAAM;KACN,aACE;IACJ;GACF;EACF;CACF;CACA,MAAM,WAAW;EACf,UAAU;EACV;EACA,UAAU,OAAO,YACf,OAAO,QAAQ,eAAe,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CACzD,OACA;GACE,SACE,UAAU,WACN,YACA,UAAU,cACR,qCACA;GACR,GAAI,UAAU,WACV,CAAC,IACD,EACE,YAAY;IACV,aAAa,EAAE,aAAa,+BAA+B;IAC3D,GAAI,UAAU,YAAY,EAAE,WAAW,EAAE,aAAa,mCAAmC,EAAE,IAAI,CAAC;GAClG,EACF;GACJ;GACA,aACE;EACJ,CACF,CAAC,CACH;EACA;EACA,YAAY;GAAE,SAAS,gBAAgB,OAAO;GAAG;EAAS;CAC5D;CAEA,KAAK,MAAM,YAAY,CAAC,SAAS,QAAQ,GAAG;EAC1C,MAAM,SAAS,UAAyB;GACtC,IAAI,UAAU,QAAQ,OAAO,UAAU,UAAU;GACjD,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,KAAK,GAC7C,IAAI,QAAQ,UAAU,OAAO,UAAU,UAAU;IAC/C,IAAI,SAAkB;IACtB,KAAK,MAAM,WAAW,MAAM,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG;KAC/C,IAAI,WAAW,QAAQ,OAAO,WAAW,UAAU,MAAM,IAAI,MAAM,6BAA6B,OAAO;KACvG,SAAS,QAAQ,IAAI,QAAQ,QAAQ,QAAQ,QAAQ,GAAG,CAAC,CAAC,QAAQ,QAAQ,GAAG,CAAC;IAChF;IACA,IAAI,WAAW,KAAA,GAAW,MAAM,IAAI,MAAM,6BAA6B,OAAO;GAChF,OAAO,MAAM,KAAK;EAEtB;EACA,MAAM,QAAQ;CAChB;CACA,OAAO;EAAE;EAAS;EAAU;CAAS;AACvC;;AAGA,SAAS,eAAe,OAAyB;CAC/C,IAAI,MAAM,QAAQ,KAAK,GAAG,OAAO,MAAM,IAAI,cAAc;CACzD,IAAI,UAAU,QAAQ,OAAO,UAAU,UAAU,OAAO;CACxD,MAAM,SAAS;CACf,MAAM,SAAkC,CAAC;CACzC,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,MAAM,GAC9C,IAAI,QAAQ,WAAW,MAAM,QAAQ,KAAK,GAAG;EAC3C,IAAI,MAAM,QAAQ,OAAO,cAAc,MAAM,IAAI,cAAc;OAC1D;GACH,OAAO,QAAQ;GACf,OAAO,WAAW;EACpB;CACF,OAAO,IAAI,QAAQ,qBAAqB,MAAM,QAAQ,OAAO,KAAK,GAAG,OAAO,QAAQ,eAAe,KAAK;MACnG,IAAI,QAAQ,kBAAkB,UAAU,QAAQ,OAAO,UAAU,UAAU;EAC9E,MAAM,WAAoC,CAAC;EAC3C,MAAM,UAAmC,CAAC;EAC1C,KAAK,MAAM,CAAC,MAAM,eAAe,OAAO,QAAQ,KAAK,GACnD,IAAI,MAAM,QAAQ,UAAU,GAAG,SAAS,QAAQ;OAC3C,QAAQ,QAAQ,eAAe,UAAU;EAEhD,IAAI,OAAO,KAAK,QAAQ,CAAC,CAAC,QAAQ,OAAO,oBAAoB;EAC7D,IAAI,OAAO,KAAK,OAAO,CAAC,CAAC,QAAQ,OAAO,mBAAmB;CAC7D,OAAO,IAAI,QAAQ,WAAW,OAAO,UAAU;MAC1C,OAAO,OAAO,eAAe,KAAK;CAEzC,OAAO;AACT;AAEA,SAAS,gBAAgB,SAA2D;CAClF,MAAM,WAAW,UAA4B;EAC3C,IAAI,MAAM,QAAQ,KAAK,GAAG,OAAO,MAAM,IAAI,OAAO;EAClD,IAAI,UAAU,QAAQ,OAAO,UAAU,UAAU,OAAO;EACxD,MAAM,SAAkC,CAAC;EACzC,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,KAAK,GAC7C,IAAI,QAAQ,UAAU,OAAO,UAAU,UACrC,OAAO,OAAO,MAAM,QAAQ,0CAA0C,aAAa;OAC9E,IAAI,QAAQ,WAAW,MAAM,QAAQ,KAAK,KAAK,MAAM,WAAW,GAAG;GACxE,OAAO,QAAQ;GACf,OAAO,WAAW;EACpB,OAAO,OAAO,OAAO,QAAQ,KAAK;EAEpC,OAAO;CACT;CACA,OAAO,OAAO,YACZ,OAAO,QAAQ,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,YAAY,CAC9C,MACA;EACE,cAAc;EACd,QAAQ,QAAQ,MAAM;CACxB,CACF,CAAC,CACH;AACF;;;;;;;;;;;;;;ACpWA,MAAa,gBAAgB;AAK7B,MAAa,aAAa;AAE1B,MAAa,gBAAgB;;;ACd7B,MAAMC,SAAOC,QAAAA,KAAK,OAAO;AACzB,MAAMC,aAAWD,QAAAA,KAAK;AACtB,MAAME,YAAUF,QAAAA,KAAK,MAAMD,MAAI;AAC/B,MAAMI,SAAOH,QAAAA,KAAK,QAAQ;AAC1B,MAAMI,gBAAcJ,QAAAA,KAAK,OAAO;AAChC,MAAa,iBAAiBA,QAAAA,KAAK,OAAO;CAAE,OAAOD;CAAM,MAAME,WAASF,MAAI;AAAE,CAAC;AAC/E,MAAa,cAAcC,QAAAA,KAAK,OAAO,EAAE,IAAIA,QAAAA,KAAK,QAAQ,IAAI,EAAE,CAAC;AACjE,MAAMK,SAAOL,QAAAA,KAAK,QAAQ,EAAE,aAAa,uEAAuE,CAAC;;AAGjH,SAAgB,iBAAiB,QAA0B,SAAS,KAAkC;CACpG,OAAO;GACJ,SAAS;GAAE,aAAa;GAAuB,aAAa;GAAoB;EAAO;EACxF,OAAO;GAAE,aAAa;GAAmB,QAAQ;EAAe;EAChE,OAAO;GAAE,aAAa;GAA2B,QAAQ;EAAe;EACxE,OAAO;GAAE,aAAa;GAA6B,QAAQ;EAAe;EAC1E,OAAO;GAAE,aAAa;GAAsC,QAAQ;EAAe;EACnF,OAAO;GAAE,aAAa;GAAqB,QAAQ;EAAe;EAClE,OAAO;GAAE,aAAa;GAAqB,QAAQ;EAAe;EAClE,OAAO;GAAE,aAAa;GAAyB,QAAQ;EAAe;EACtE,OAAO;GAAE,aAAa;GAAmB,QAAQ;EAAe;EAChE,OAAO;GAAE,aAAa;GAAuB,QAAQ;EAAe;CACtE;AACF;AACA,MAAa,uBAAuBA,QAAAA,KAAK,OAAO;CAC9C,IAAID;CACJ,OAAOC,QAAAA,KAAK,MAAM;EAACA,QAAAA,KAAK,QAAQ,QAAQ;EAAGA,QAAAA,KAAK,QAAQ,WAAW;EAAGA,QAAAA,KAAK,QAAQ,SAAS;CAAC,CAAC;CAC9F,UAAUI;CACV,aAAaL;CACb,iBAAiBA;CACjB,sBAAsBA;CACtB,eAAeC,QAAAA,KAAK,MAAMA,QAAAA,KAAK,MAAM,CAACD,QAAMA,MAAI,CAAC,CAAC;CAClD,YAAYG;CACZ,YAAYA;CACZ,UAAUA;AACZ,CAAC;AACD,MAAa,0BAA0BF,QAAAA,KAAK,OAAO;CACjD,IAAID;CACJ,OAAOC,QAAAA,KAAK,MAAM;EAACA,QAAAA,KAAK,QAAQ,QAAQ;EAAGA,QAAAA,KAAK,QAAQ,WAAW;EAAGA,QAAAA,KAAK,QAAQ,SAAS;CAAC,CAAC;CAC9F,UAAUI;CACV,aAAaL;CACb,iBAAiBA;CACjB,eAAeC,QAAAA,KAAK,MAAMA,QAAAA,KAAK,MAAM,CAACD,QAAMA,MAAI,CAAC,CAAC;CAClD,SAASE,WAASF,MAAI;CACtB,UAAUG;CACV,SAASA;AACX,CAAC;;AAED,MAAM,yBAAyBF,QAAAA,KAAK,OAAO;CACzC,IAAIC,WAASF,MAAI;CACjB,OAAOC,QAAAA,KAAK,MAAM,CAChBA,QAAAA,KAAK,OAAO,EAAE,OAAOA,QAAAA,KAAK,QAAQ,QAAQ,EAAE,CAAC,GAC7CA,QAAAA,KAAK,OAAO;EAAE,OAAOA,QAAAA,KAAK,QAAQ,WAAW;EAAG,aAAaD;CAAK,CAAC,CACrE,CAAC;AACH,CAAC;AACD,MAAa,uBAAuBC,QAAAA,KAAK,OAAO;CAC9C,IAAID;CACJ,aAAaE,WAASF,MAAI;CAC1B,gBAAgBE,WAAS,oBAAoB;CAC7C,mBAAmBA,WAAS,uBAAuB;CACnD,MAAMF;CACN,KAAKA;CACL,WAAWA;CACX,WAAWA;CACX,OAAOC,QAAAA,KAAK,MAAM;EAACA,QAAAA,KAAK,QAAQ,MAAM;EAAGA,QAAAA,KAAK,QAAQ,MAAM;EAAGA,QAAAA,KAAK,QAAQ,YAAY;EAAGA,QAAAA,KAAK,QAAQ,OAAO;CAAC,CAAC;CACjH,YAAYD;CACZ,QAAQC,QAAAA,KAAK,QAAQ,UAAU;CAC/B,qBAAqBI;CACrB,cAAcD;CACd,eAAeA;CACf,eAAeF,WAASF,MAAI;CAC5B,KAAKE,WAASD,QAAAA,KAAK,OAAO;EAAE,QAAQD;EAAM,OAAOI;CAAK,CAAC,CAAC;CACxD,SAASF,WAASD,QAAAA,KAAK,OAAO;EAAE,MAAMD;EAAM,aAAaE,WAASF,MAAI;EAAG,aAAaE,WAASF,MAAI;CAAE,CAAC,CAAC;CACvG,iBAAiBE,WAASF,MAAI;CAC9B,mBAAmBE,WAASF,MAAI;CAChC,aAAaE,WAASD,QAAAA,KAAK,MAAM,CAACA,QAAAA,KAAK,QAAQ,aAAa,GAAGA,QAAAA,KAAK,QAAQ,YAAY,CAAC,CAAC,CAAC;;CAE3F,UAAUC,WAASD,QAAAA,KAAK,OAAO;EAAE,OAAOD;EAAM,WAAWE,WAASE,MAAI;EAAG,OAAOF,WAASF,MAAI;CAAE,CAAC,CAAC;;CAEjG,sBAAsBE,WAASD,QAAAA,KAAK,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;CAC3D,eAAeC,WACbD,QAAAA,KAAK,MACHA,QAAAA,KAAK,OAAO;EACV,IAAID;EACJ,MAAMA;EACN,WAAWA;EACX,KAAKE,WAASF,MAAI;EAClB,WAAWE,WAASD,QAAAA,KAAK,MAAM,CAACA,QAAAA,KAAK,QAAQ,kBAAkB,GAAGA,QAAAA,KAAK,QAAQ,oBAAoB,CAAC,CAAC,CAAC;EACtG,QAAQC,WACND,QAAAA,KAAK,MAAM;GAACA,QAAAA,KAAK,QAAQ,cAAc;GAAGA,QAAAA,KAAK,QAAQ,QAAQ;GAAGA,QAAAA,KAAK,QAAQ,aAAa;EAAC,CAAC,CAChG;EACA,WAAWC,WACTD,QAAAA,KAAK,MAAM,CAACA,QAAAA,KAAK,QAAQ,mCAAmC,GAAGA,QAAAA,KAAK,QAAQ,qBAAqB,CAAC,CAAC,CACrG;CACF,CAAC,CACH,CACF;CACA,QAAQC,WAASC,SAAO;CACxB,sBAAsBD,WAASE,MAAI;;CAEnC,SAASF,WAASE,MAAI;AACxB,CAAC;AACD,MAAa,kBAAkBH,QAAAA,KAAK,OAAO;CACzC,MAAMC,WAASD,QAAAA,KAAK,QAAQ,SAAS,CAAC;CACtC,cAAcC,WAASF,MAAI;CAC3B,IAAIA;CACJ,MAAMA;CACN,MAAME,WAASF,MAAI;CACnB,WAAWE,WAASE,MAAI;CACxB,SAASF,WAASF,MAAI;;;;;;;CAOtB,cAAcE,WACZD,QAAAA,KAAK,MAAM;EACTA,QAAAA,KAAK,QAAQ,UAAU;EACvBA,QAAAA,KAAK,QAAQ,SAAS;EACtBA,QAAAA,KAAK,QAAQ,UAAU;EACvBA,QAAAA,KAAK,QAAQ,aAAa;EAC1BA,QAAAA,KAAK,QAAQ,QAAQ;CACvB,CAAC,CACH;;CAEA,eAAeC,WAASF,MAAI;AAC9B,CAAC;AACD,MAAM,eAAeC,QAAAA,KAAK,OAAO;CAC/B,IAAID;CACJ,MAAME,WAASF,MAAI;CACnB,cAAcA;CACd,WAAWA;CACX,WAAWA;AACb,CAAC;AACD,MAAM,SACJ,MACA,SAAkBA,QAClB,WAAW,WAC4C;CAAE;CAAM,IAAI;CAAS;CAAU;AAAO;AAC/F,MAAM,QAAQ,YAA0D;CACtE,aAAa;CACb,UAAU;CACV;AACF;AACA,MAAM,QACJ,IACA,MACA,QACA,QACA,QAAiC,CAAC,OACd;CACpB;CACA;CACA;CACA,OAAO;CACP,gBAAgB;CAChB,aAAa;CACb,WAAW,iBAAiB,MAAM;CAClC,GAAG;AACL;AACA,MAAM,YAAYC,QAAAA,KAAK,OAAO;CAAE,QAAQD;CAAM,SAASA;AAAK,CAAC;AAC7D,MAAM,gBAAgBC,QAAAA,KAAK,OAAO;CAChC,KAAKA,QAAAA,KAAK,QAAQ,aAAa;CAC/B,WAAWD;CACX,SAASC,QAAAA,KAAK,OAAO;EACnB,QAAQD;EACR,SAASA;EACT,SAASA;EACT,aAAaA;EACb,WAAWA;EACX,aAAaA;EACb,eAAeA;EACf,cAAcA;EACd,YAAYG;EACZ,aAAaF,QAAAA,KAAK,OAAOD,QAAMC,QAAAA,KAAK,MAAM;GAACD;GAAMK;GAAaD;GAAMH,QAAAA,KAAK,KAAK;EAAC,CAAC,CAAC;EACjF,UAAUI;EACV,WAAWA;EACX,WAAWA;EACX,aAAaJ,QAAAA,KAAK,QAAQ,KAAK;EAC/B,iBAAiBC,WAASG,aAAW;CACvC,CAAC;AACH,CAAC;AACD,MAAM,kBAAkBJ,QAAAA,KAAK,OAAO;CAClC,aAAaD;CACb,gBAAgBA;CAChB,aAAaA;CACb,OAAO;CACP,QAAQC,QAAAA,KAAK,MAAM,eAAe;EAAE,UAAU;EAAG,UAAU;CAAE,CAAC;CAC9D,WAAWI;CACX,WAAWA;AACb,CAAC;AACD,MAAM,mBAAmBJ,QAAAA,KAAK,OAAO;CACnC,QAAQD;CACR,aAAaA;CACb,SAASA;CACT,YAAYG;CACZ,mBAAmBE;AACrB,CAAC;AACD,MAAM,4BAA4B;CAAE,MAAM;CAAe,IAAI;CAAiB,UAAU;CAAM,QAAQL;AAAK;AAC3G,MAAM,SAASC,QAAAA,KAAK,OAAO,EAAE,iBAAiB,SAAS,CAAC;AACxD,MAAa,wBAA0C;CACrD,KACE,UACA,eACA,OACAA,QAAAA,KAAK,OAAO;EACV,IAAIA,QAAAA,KAAK,QAAQ,IAAI;EACrB,MAAMA,QAAAA,KAAK,QAAQ,KAAK;EACxB,UAAUA,QAAAA,KAAK,QAAQ,CAAC;EACxB,UAAUI;CACZ,CAAC,GACD,EAAE,gBAAgB,OAAO,CAC3B;CACA,KAAK,qBAAqB,0BAA0B,QAAQ,aAAa,EACvE,MAAM,KACJJ,QAAAA,KAAK,OAAO;EACV,GAAGA,QAAAA,KAAK,QAAQ,CAAC;EACjB,QAAQA,QAAAA,KAAK,MACXA,QAAAA,KAAK,OAAO;GACV,MAAMA,QAAAA,KAAK,OAAO,EAAE,SAAS,iCAAiC,CAAC;GAC/D,aAAaC,WAASG,aAAW;GACjC,OAAOH,WAASG,aAAW;GAC3B,OAAOH,WAASD,QAAAA,KAAK,QAAQ,MAAM,CAAC;GACpC,YAAYC,WACVD,QAAAA,KAAK,OACHA,QAAAA,KAAK,OAAO,EAAE,SAAS,iBAAiB,CAAC,GACzCA,QAAAA,KAAK,MAAM,CAACA,QAAAA,KAAK,OAAO,EAAE,WAAW,IAAI,CAAC,GAAGI,aAAW,CAAC,GACzD,EAAE,eAAe,GAAG,CACtB,CACF;EACF,CAAC,GACD,EAAE,UAAU,GAAG,CACjB;CACF,CAAC,CACH,EACF,CAAC;CACD,KACE,gBACA,qBACA,OACAJ,QAAAA,KAAK,OAAO;EACV,SAASC,WAASD,QAAAA,KAAK,OAAO;GAAE,QAAQD;GAAM,WAAWA;GAAM,sBAAsBE,WAASG,aAAW;EAAE,CAAC,CAAC;;EAE7G,aAAaH,WAASF,MAAI;EAC1B,QAAQE,WAAS,oBAAoB;EACrC,cAAcA,WAAS,uBAAuB;EAC9C,WAAWA,WAASF,MAAI;EACxB,OAAOE,WAASD,QAAAA,KAAK,OAAO;GAAE,WAAWD;GAAM,UAAUK;EAAY,CAAC,CAAC;EACvE,UAAUH,WAAS,sBAAsB;;EAEzC,gBAAgBA,WAAS,sBAAsB;EAC/C,YAAYD,QAAAA,KAAK,MACfA,QAAAA,KAAK,OAAO;GACV,IAAID;GACJ,MAAMA;;GAEN,gBAAgBE,WAASD,QAAAA,KAAK,MAAM,CAAC,sBAAsBA,QAAAA,KAAK,KAAK,CAAC,CAAC,CAAC;GACxE,mBAAmBC,WAASD,QAAAA,KAAK,MAAM,CAAC,yBAAyBA,QAAAA,KAAK,KAAK,CAAC,CAAC,CAAC;GAC9E,WAAWC,WACTD,QAAAA,KAAK,MACHA,QAAAA,KAAK,OAAO;IACV,QAAQD;IACR,aAAaA;IACb,SAASA;IACT,YAAYC,QAAAA,KAAK,MACfA,QAAAA,KAAK,OAAO;KACV,OAAOA,QAAAA,KAAK,MAAM;MAACA,QAAAA,KAAK,QAAQ,QAAQ;MAAGA,QAAAA,KAAK,QAAQ,WAAW;MAAGA,QAAAA,KAAK,QAAQ,SAAS;KAAC,CAAC;KAC9F,OAAOE;IACT,CAAC,CACH;IACA,YAAYF,QAAAA,KAAK,MAAM;KAACA,QAAAA,KAAK,QAAQ,OAAO;KAAGA,QAAAA,KAAK,QAAQ,KAAK;KAAGA,QAAAA,KAAK,QAAQ,WAAW;IAAC,CAAC;IAC9F,QAAQA,QAAAA,KAAK,MAAM,CAACA,QAAAA,KAAK,QAAQ,WAAW,GAAGA,QAAAA,KAAK,QAAQ,aAAa,CAAC,CAAC;IAC3E,QAAQC,WACND,QAAAA,KAAK,MAAM;KACTA,QAAAA,KAAK,QAAQ,kBAAkB;KAC/BA,QAAAA,KAAK,QAAQ,kBAAkB;KAC/BA,QAAAA,KAAK,QAAQ,cAAc;KAC3BA,QAAAA,KAAK,QAAQ,cAAc;KAC3BA,QAAAA,KAAK,QAAQ,iBAAiB;IAChC,CAAC,CACH;IACA,WAAWC,WAASG,aAAW;GACjC,CAAC,CACH,CACF;EACF,CAAC,CACH;CACF,CAAC,CACH;CACA,KAAK,0BAA0B,uBAAuB,QAAQC,QAAM,EAClE,MAAM,KACJL,QAAAA,KAAK,OAAO;EACV,QAAQA,QAAAA,KAAK,MAAM,CACjBA,QAAAA,KAAK,OAAO;GAAE,SAASD;GAAM,OAAOK;GAAa,MAAMJ,QAAAA,KAAK,QAAQ,KAAK;GAAG,OAAOD;GAAM,UAAUA;EAAK,CAAC,GACzGC,QAAAA,KAAK,OAAO;GAAE,SAASD;GAAM,OAAOK;GAAa,MAAMJ,QAAAA,KAAK,QAAQ,OAAO;GAAG,SAASD;EAAK,CAAC,CAC/F,CAAC;EACD,eAAeA;CACjB,CAAC,CACH,EACF,CAAC;CACD,KACE,yBACA,kDACA,OACAC,QAAAA,KAAK,OAAO;EAAE,UAAUA,QAAAA,KAAK,MAAM,eAAe;EAAG,YAAYA,QAAAA,KAAK,MAAM,gBAAgB;CAAE,CAAC,GAC/F,EAAE,YAAY,CAAC,yBAAyB,EAAE,CAC5C;CACA,KAAK,4BAA4B,kDAAkD,QAAQ,iBAAiB;EAC1G,YAAY,CAAC,yBAAyB;EACtC,MAAM,KACJA,QAAAA,KAAK,OAAO;GACV,gBAAgBD;GAChB,aAAaA;GACb,QAAQC,QAAAA,KAAK,MAAM,eAAe;IAAE,UAAU;IAAG,UAAU;GAAE,CAAC;EAChE,CAAC,CACH;EACA,WAAW,iBAAiB,iBAAiB,GAAG;CAClD,CAAC;CACD,KACE,2BACA,iFACA,UACAA,QAAAA,KAAK,KAAK,GACV;EACE,YAAY;GACV;GACA;IAAE,MAAM;IAAkB,IAAI;IAAQ,UAAU;IAAM,QAAQD;GAAK;GACnE;IAAE,MAAM;IAAe,IAAI;IAAQ,UAAU;IAAM,QAAQA;GAAK;EAClE;EACA,WAAW,EAAE,OAAO,EAAE,aAAa,2BAA2B,EAAE;CAClE,CACF;CACA,KAAK,eAAe,oBAAoB,OAAOC,QAAAA,KAAK,OAAO,EAAE,aAAaE,UAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;CAClH,KACE,wBACA,6BACA,OACAF,QAAAA,KAAK,OAAO;EAAE,MAAMD;EAAM,QAAQE,WAASF,MAAI;EAAG,aAAaG;CAAQ,CAAC,GACxE,EAAE,YAAY,CAAC,MAAM,MAAM,CAAC,EAAE,CAChC;CACA,KACE,0BACA,+BACA,OACAF,QAAAA,KAAK,OAAO;EACV,MAAMD;EACN,cAAcC,QAAAA,KAAK,MAAMA,QAAAA,KAAK,OAAO;GAAE,MAAMD;GAAM,cAAcE,WAASF,MAAI;GAAG,aAAaE,WAASF,MAAI;EAAE,CAAC,CAAC;CACjH,CAAC,GACD;EAAE,YAAY,CAAC,MAAM,MAAM,CAAC;EAAG,cAAc;CAAmC,CAClF;CACA,KAAK,kBAAkB,uBAAuB,OAAOC,QAAAA,KAAK,OAAO,EAAE,aAAaE,UAAQ,CAAC,CAAC;CAC1F,KACE,iBACA,0CACA,OACAF,QAAAA,KAAK,OAAO,EAAE,UAAUA,QAAAA,KAAK,MAAM,oBAAoB,EAAE,CAAC,CAC5D;CACA,KAAK,mBAAmB,0CAA0C,QAAQA,QAAAA,KAAK,OAAO,EAAE,WAAWD,OAAK,CAAC,GAAG;EAC1G,MAAM,KAAKC,QAAAA,KAAK,OAAO,EAAE,MAAMC,WAASF,MAAI,EAAE,CAAC,CAAC;EAChD,WAAW,iBAAiBC,QAAAA,KAAK,OAAO,EAAE,WAAWD,OAAK,CAAC,GAAG,GAAG;CACnE,CAAC;CACD,KACE,0BACA,iBACA,QACAC,QAAAA,KAAK,OAAO;EAAE,WAAWD;EAAM,WAAWE,WAAS,eAAe;EAAG,SAASA,WAAS,oBAAoB;CAAE,CAAC,GAC9G;EACE,MAAM,KAAKD,QAAAA,KAAK,OAAO;GAAE,MAAMC,WAASF,MAAI;GAAG,KAAKE,WAASD,QAAAA,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;EAAE,CAAC,CAAC;EAC9F,cACE;EACF,WAAW,iBACTA,QAAAA,KAAK,OAAO;GAAE,WAAWD;GAAM,WAAWE,WAAS,eAAe;GAAG,SAASA,WAAS,oBAAoB;EAAE,CAAC,GAC9G,GACF;CACF,CACF;CACA,KACE,qBACA,0BACA,QACAD,QAAAA,KAAK,OAAO;EAAE,WAAWD;EAAM,SAASC,QAAAA,KAAK,QAAQ;CAAE,CAAC,GACxD;EACE,MAAM,KACJA,QAAAA,KAAK,OACH;GACE,SAASA,QAAAA,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC;GACrC,OAAOC,WAASD,QAAAA,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;GAC7C,MAAMA,QAAAA,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC;EACpC,GACA,EAAE,sBAAsB,MAAM,CAChC,CACF;EACA,cAAc;CAChB,CACF;CACA,KAAK,gBAAgB,sDAAsD,OAAO,oBAAoB;CACtG,KAAK,mBAAmB,sDAAsD,UAAU,WAAW;CACnG,KACE,oBACA,8DACA,OACAA,QAAAA,KAAK,OAAO,EAAE,UAAUA,QAAAA,KAAK,MAAM,YAAY,EAAE,CAAC,GAClD,EAAE,cAAc,+BAA+B,CACjD;CACA,KAAK,oBAAoB,8DAA8D,QAAQ,aAAa,EAC1G,cAAc,+BAChB,CAAC;CACD,KAAK,mBAAmB,6DAA6D,QAAQ,aAAa,EACxG,cAAc,8BAChB,CAAC;CACD,KACE,mBACA,6DACA,QACAA,QAAAA,KAAK,OAAO,EAAE,WAAWD,OAAK,CAAC,GAC/B;EACE,cAAc;EACd,MAAM,KAAKC,QAAAA,KAAK,OAAO,EAAE,iBAAiBA,QAAAA,KAAK,OAAO,EAAE,SAAS,mBAAmB,CAAC,EAAE,CAAC,CAAC;CAC3F,CACF;CACA,KAAK,iBAAiB,2DAA2D,OAAO,QAAQ;EAC9F,YAAY,CAAC,MAAM,QAAQD,QAAM,IAAI,CAAC;EACtC,WAAW;GACT,GAAG,iBAAiB,MAAM;GAC1B,OAAO;IAAE,aAAa;IAAoD,aAAa;IAAO,QAAQ;GAAO;EAC/G;CACF,CAAC;CACD,KAAK,mBAAmB,mBAAmB,OAAOC,QAAAA,KAAK,OAAO,EAAE,YAAYA,QAAAA,KAAK,MAAM,eAAe,EAAE,CAAC,CAAC;CAC1G,KAAK,oBAAoB,mBAAmB,QAAQA,QAAAA,KAAK,OAAO,EAAE,WAAW,gBAAgB,CAAC,GAAG;EAC/F,MAAM,KACJA,QAAAA,KAAK,OAAO;GACV,MAAMC,WAASF,MAAI;GACnB,MAAME,WAASF,MAAI;GACnB,aAAaE,WAASF,MAAI;GAC1B,cAAcE,WAASF,MAAI;EAC7B,CAAC,CACH;EACA,WAAW,iBAAiBC,QAAAA,KAAK,OAAO,EAAE,WAAW,gBAAgB,CAAC,GAAG,GAAG;CAC9E,CAAC;CACD,KAAK,kBAAkB,iCAAiC,OAAOA,QAAAA,KAAK,OAAO,EAAE,WAAW,gBAAgB,CAAC,CAAC;CAC1G,KACE,sBACA,yCACA,OACAA,QAAAA,KAAK,OAAO,EAAE,UAAUA,QAAAA,KAAK,MAAM,YAAY,EAAE,CAAC,GAClD,EACE,cAAc,iCAChB,CACF;CACA,KAAK,qBAAqB,wCAAwC,QAAQA,QAAAA,KAAK,OAAO,EAAE,WAAWD,OAAK,CAAC,GAAG;EAC1G,cAAc;EACd,MAAM,KAAKC,QAAAA,KAAK,OAAO,EAAE,iBAAiBA,QAAAA,KAAK,OAAO,EAAE,SAAS,mBAAmB,CAAC,EAAE,CAAC,CAAC;CAC3F,CAAC;CACD,KACE,sBACA,yCACA,OACAA,QAAAA,KAAK,OAAO,EACV,UAAUA,QAAAA,KAAK,MAAMA,QAAAA,KAAK,UAAU,CAAC,cAAcA,QAAAA,KAAK,OAAO;EAAE,WAAWD;EAAM,SAASA;CAAK,CAAC,CAAC,CAAC,CAAC,EACtG,CAAC,GACD,EAAE,cAAc,gCAAgC,CAClD;CACA,KAAK,6BAA6B,6DAA6D,QAAQ,aAAa,EAClH,cAAc,sCAChB,CAAC;CACD,KAAK,yBAAyB,iCAAiC,SAASC,QAAAA,KAAK,OAAO,EAAE,WAAW,gBAAgB,CAAC,GAAG;EACnH,cAAc;EACd,MAAM,KACJA,QAAAA,KAAK,MAAM,CACTA,QAAAA,KAAK,OAAO,EAAE,SAASA,QAAAA,KAAK,MAAM,CAACD,QAAMC,QAAAA,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,sBAAsB,MAAM,CAAC,GACzFA,QAAAA,KAAK,OAAO,EAAE,cAAcD,OAAK,GAAG,EAAE,sBAAsB,MAAM,CAAC,CACrE,CAAC,CACH;CACF,CAAC;CACD,KAAK,qBAAqB,iCAAiC,UAAU,WAAW;AAClF;AACA,MAAM,WAAWC,QAAAA,KAAK,MAAM,CAACA,QAAAA,KAAK,QAAQ,SAAS,GAAGA,QAAAA,KAAK,QAAQ,OAAO,CAAC,CAAC;AAC5E,MAAM,WAAWA,QAAAA,KAAK,OAAO;CAC3B,IAAID;CACJ,MAAMA;CACN,SAASC,QAAAA,KAAK,MAAMA,QAAAA,KAAK,OAAO;EAAE,MAAM;EAAU,OAAOD;CAAK,CAAC,CAAC;CAChE,eAAeE,WAASD,QAAAA,KAAK,OAAO;EAAE,MAAM;EAAU,QAAQC,WAASF,MAAI;CAAE,CAAC,CAAC;AACjF,CAAC;AACD,MAAM,aAAaC,QAAAA,KAAK,MAAM;CAC5BA,QAAAA,KAAK,OAAO;EACV,MAAMA,QAAAA,KAAK,QAAQ,MAAM;EACzB,SAASD;EACT,OAAOE,WAASD,QAAAA,KAAK,MAAMA,QAAAA,KAAK,OAAO;GAAE,KAAKD;GAAM,OAAOE,WAASF,MAAI;EAAE,CAAC,CAAC,CAAC;CAC/E,CAAC;CACDC,QAAAA,KAAK,OAAO;EAAE,MAAMA,QAAAA,KAAK,QAAQ,UAAU;EAAG,KAAKD;EAAM,cAAcE,WAASF,MAAI;CAAE,CAAC;CACvFC,QAAAA,KAAK,OAAO;EACV,MAAMA,QAAAA,KAAK,QAAQ,aAAa;EAChC,UAAUD;EACV,iBAAiBA;EACjB,iBAAiBE,WAASG,aAAW;EACrC,kBAAkBH,WAASG,aAAW;CACxC,CAAC;CACDJ,QAAAA,KAAK,OAAO;EAAE,MAAMA,QAAAA,KAAK,QAAQ,UAAU;EAAG,SAASD;CAAK,CAAC;AAC/D,CAAC;AACD,MAAa,kBAAkBC,QAAAA,KAAK,OAAO;CACzC,IAAID;CACJ,YAAYA;CACZ,cAAcA;CACd,MAAM;CACN,QAAQC,QAAAA,KAAK,MAAM;EACjBA,QAAAA,KAAK,QAAQ,SAAS;EACtBA,QAAAA,KAAK,QAAQ,WAAW;EACxBA,QAAAA,KAAK,QAAQ,QAAQ;EACrBA,QAAAA,KAAK,QAAQ,WAAW;CAC1B,CAAC;CACD,QAAQA,QAAAA,KAAK,MAAM,UAAU;CAC7B,QAAQC,WACND,QAAAA,KAAK,OAAO;EACV,IAAID;EACJ,MAAMC,QAAAA,KAAK,MAAM;GACfA,QAAAA,KAAK,QAAQ,MAAM;GACnBA,QAAAA,KAAK,QAAQ,QAAQ;GACrBA,QAAAA,KAAK,QAAQ,QAAQ;GACrBA,QAAAA,KAAK,QAAQ,aAAa;EAC5B,CAAC;EACD,SAASD;EACT,aAAaE,WAASF,MAAI;EAC1B,SAASE,WAASD,QAAAA,KAAK,MAAMA,QAAAA,KAAK,OAAO;GAAE,IAAID;GAAM,OAAOA;GAAM,aAAaE,WAASF,MAAI;EAAE,CAAC,CAAC,CAAC;CACnG,CAAC,CACH;CACA,QAAQE,WAASE,MAAI;CACrB,OAAOF,WAASF,MAAI;AACtB,CAAC;AACD,MAAM,OAAOC,QAAAA,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAClD,MAAa,uBAAyC;CACpD,KAAK,kBAAkB,cAAc,OAAOA,QAAAA,KAAK,OAAO,EAAE,WAAWA,QAAAA,KAAK,MAAM,QAAQ,EAAE,CAAC,CAAC;CAC5F,KACE,eACA,WACA,OACAA,QAAAA,KAAK,OAAO,EAAE,QAAQA,QAAAA,KAAK,MAAMA,QAAAA,KAAK,OAAO;EAAE,OAAOD;EAAM,OAAOA;EAAM,OAAOA;CAAK,CAAC,CAAC,EAAE,CAAC,CAC5F;CACA,KAAK,oBAAoB,2BAA2B,UAAU,WAAW;CACzE,KAAK,iBAAiB,WAAW,QAAQ,MAAM;EAC7C,MAAM,KAAKC,QAAAA,KAAK,OAAO;GAAE,YAAYD;GAAM,MAAM;EAAS,CAAC,CAAC;EAC5D,WAAW,iBAAiB,MAAM,GAAG;CACvC,CAAC;CACD,KAAK,cAAc,oBAAoB,OAAO,IAAI;CAClD,KAAK,iBAAiB,oBAAoB,UAAU,IAAI;CACxD,KAAK,iBAAiB,2BAA2B,QAAQ,MAAM,EAC7D,MAAM,KAAKC,QAAAA,KAAK,OAAO;EAAE,UAAUD;EAAM,OAAOA;CAAK,CAAC,CAAC,EACzD,CAAC;AACH,CAAC,CAAC,KAAK,WAAW;CAAE,GAAG;CAAO,UAAU;AAAK,EAAE;AAC/C,MAAM,SAASC,QAAAA,KAAK,MAAM;CACxBA,QAAAA,KAAK,QAAQ,WAAW;CACxBA,QAAAA,KAAK,QAAQ,KAAK;CAClBA,QAAAA,KAAK,QAAQ,QAAQ;CACrBA,QAAAA,KAAK,QAAQ,MAAM;AACrB,CAAC;AACD,MAAM,SAASA,QAAAA,KAAK,MAAM;CACxBA,QAAAA,KAAK,OAAO;EACV,UAAUA,QAAAA,KAAK,QAAQ,MAAM;EAC7B,MAAMD;EACN,OAAOA;EACP,QAAQ;EACR,QAAQI;EACR,QAAQH,QAAAA,KAAK,OAAO;GAAE,cAAcI;GAAa,cAAcA;GAAa,aAAaA;EAAY,CAAC;EACtG,aAAaH,WAASF,MAAI;EAC1B,eAAeE,WAASF,MAAI;EAC5B,kBAAkBE,WAASC,SAAO;EAClC,YAAYD,WAASI,MAAI;CAC3B,CAAC;CACDL,QAAAA,KAAK,OAAO;EACV,UAAUA,QAAAA,KAAK,QAAQ,OAAO;EAC9B,MAAMD;EACN,OAAOA;EACP,QAAQ;EACR,QAAQC,QAAAA,KAAK,QAAQ,IAAI;EACzB,QAAQI;EACR,aAAaL;EACb,UAAUE,WAASF,MAAI;EACvB,gBAAgBI;CAClB,CAAC;CACDH,QAAAA,KAAK,OAAO;EACV,UAAUA,QAAAA,KAAK,QAAQ,QAAQ;EAC/B,MAAMA,QAAAA,KAAK,QAAQ,QAAQ;EAC3B,QAAQI;EACR,OAAOJ,QAAAA,KAAK,MAAM,CAACA,QAAAA,KAAK,QAAQ,MAAM,GAAGA,QAAAA,KAAK,QAAQ,WAAW,CAAC,CAAC;EACnE,MAAMD;CACR,CAAC;AACH,CAAC;AAwCD,MAAa,uBAAyC;CACpD;EACE,GAAG,KAAK,mBAAmB,eAAe,OAzCpBC,QAAAA,KAAK,OAAO;GACpC,SAASA,QAAAA,KAAK,QAAQ,CAAC;GACvB,UAAUI;GACV,WAAWJ,QAAAA,KAAK,OAAO;IAAE,WAAWD;IAAM,SAASG;IAAS,SAASD,WAASF,MAAI;GAAE,CAAC;GACrF,QAAQC,QAAAA,KAAK,MACXA,QAAAA,KAAK,OAAO;IACV,IAAID;IACJ,OAAOA;IACP,MAAMC,QAAAA,KAAK,MAAM;KACfA,QAAAA,KAAK,QAAQ,OAAO;KACpBA,QAAAA,KAAK,QAAQ,OAAO;KACpBA,QAAAA,KAAK,QAAQ,QAAQ;KACrBA,QAAAA,KAAK,QAAQ,QAAQ;KACrBA,QAAAA,KAAK,QAAQ,MAAM;IACrB,CAAC;IACD,OAAOA,QAAAA,KAAK,MACVA,QAAAA,KAAK,OAAO;KACV,MAAMD;KACN,UAAUC,QAAAA,KAAK,MAAM,CAACA,QAAAA,KAAK,QAAQ,MAAM,GAAGA,QAAAA,KAAK,QAAQ,OAAO,CAAC,CAAC;KAClE,QAAQ;KACR,OAAOD;KACP,QAAQK;KACR,QAAQD;IACV,CAAC,CACH;IACA,QAAQC;IACR,gBAAgBA;GAClB,CAAC,CACH;GACA,aAAaA;GACb,gBAAgBA;GAChB,cAAcH,WACZD,QAAAA,KAAK,OAAO;IACV,QAAQI;IACR,OAAOJ,QAAAA,KAAK,MAAM,CAACA,QAAAA,KAAK,QAAQ,MAAM,GAAGA,QAAAA,KAAK,QAAQ,WAAW,CAAC,CAAC;GACrE,CAAC,CACH;GACA,WAAWA,QAAAA,KAAK,QAAQ,eAAe;EACzC,CAGqD,CAAiB;EAClE,OAAO;EACP,UAAU;CACZ;CACA;EACE,GAAG,KAAK,gBAAgB,YAAY,OAAOA,QAAAA,KAAK,OAAO;GAAE,UAAUI;GAAa,MAAM;EAAO,CAAC,GAAG,EAC/F,YAAY,CACV,MAAM,QAAQJ,QAAAA,KAAK,MAAM;GAACA,QAAAA,KAAK,QAAQ,MAAM;GAAGA,QAAAA,KAAK,QAAQ,OAAO;GAAGA,QAAAA,KAAK,QAAQ,QAAQ;EAAC,CAAC,GAAG,IAAI,GACrG,MAAM,QAAQD,QAAM,IAAI,CAC1B,EACF,CAAC;EACD,OAAO;EACP,UAAU;CACZ;CACA;EACE,GAAG,KAAK,kBAAkB,KAAK,OAAOC,QAAAA,KAAK,OAAO,EAAE,OAAOE,UAAQ,CAAC,GAAG,EACrE,YAAY,CAAC,MAAM,KAAKF,QAAAA,KAAK,OAAO,EAAE,WAAW,IAAI,CAAC,CAAC,CAAC,EAC1D,CAAC;EACD,OAAO;EACP,UAAU;CACZ;AACF;;;ACzoBA,MAAMM,SAAOC,QAAAA,KAAK,OAAO;AACzB,MAAMC,gBAAcD,QAAAA,KAAK,OAAO;AAChC,MAAME,aAAWF,QAAAA,KAAK;AACtB,MAAMG,SAAOH,QAAAA,KAAK,QAAQ;AAC1B,MAAM,aAAaA,QAAAA,KAAK,OACtBD,QACAC,QAAAA,KAAK,QAAQ,EACX,aAAa,2FACf,CAAC,CACH;AACA,MAAM,SAASA,QAAAA,KAAK,MAAM,CACxBA,QAAAA,KAAK,OAAO,EAAE,MAAMA,QAAAA,KAAK,QAAQ,OAAO,EAAE,CAAC,GAC3CA,QAAAA,KAAK,OAAO;CACV,MAAMA,QAAAA,KAAK,QAAQ,OAAO;CAC1B,UAAUD;CACV,MAAMG,WAASH,MAAI;CACnB,WAAWG,WAASH,MAAI;CACxB,YAAYG,WAASH,MAAI;AAC3B,CAAC,CACH,CAAC;AACD,MAAM,WAAWC,QAAAA,KAAK,OAAO;CAC3B,kBAAkBG;CAClB,kBAAkBF;CAClB,sBAAsBE;CACtB,aAAaF;CACb,eAAeA;CACf,QAAQ;AACV,CAAC;AACD,MAAM,QAAQD,QAAAA,KAAK,OAAO;CACxB,QAAQA,QAAAA,KAAK,MAAM;EAACA,QAAAA,KAAK,QAAQ,KAAK;EAAGA,QAAAA,KAAK,QAAQ,UAAU;EAAGA,QAAAA,KAAK,QAAQ,IAAI;EAAGA,QAAAA,KAAK,QAAQ,QAAQ;CAAC,CAAC;CAC9G,WAAWE,WAASH,MAAI;CACxB,WAAWG,WAASH,MAAI;CACxB,UAAUG,WAASH,MAAI;CACvB,OAAOG,WAASH,MAAI;CACpB,SAASC,QAAAA,KAAK,MACZA,QAAAA,KAAK,OAAO;EAAE,IAAID;EAAM,OAAOA;EAAM,WAAWA;EAAM,WAAWA;EAAM,YAAYA;EAAM,MAAMI;CAAK,CAAC,CACvG;CACA,SAASH,QAAAA,KAAK,MAAMA,QAAAA,KAAK,OAAO;EAAE,IAAID;EAAM,WAAWA;EAAM,QAAQA;EAAM,WAAWA;EAAM,WAAWA;CAAK,CAAC,CAAC;CAC9G,gBAAgBC,QAAAA,KAAK,MACnBA,QAAAA,KAAK,OAAO;EACV,IAAID;EACJ,OAAOA;EACP,UAAUC,QAAAA,KAAK,MAAM,CAACA,QAAAA,KAAK,QAAQ,KAAK,GAAGA,QAAAA,KAAK,QAAQ,SAAS,CAAC,CAAC;EACnE,WAAWD;EACX,YAAYA;EACZ,MAAMI;CACR,CAAC,CACH;CACA,UAAU;AACZ,CAAC;AACD,MAAM,gBAAgBH,QAAAA,KAAK,OAAO,EAAE,OAAO,MAAM,CAAC;AAClD,MAAM,QAAQA,QAAAA,KAAK,OAAO;CAAE,WAAWD;CAAM,aAAaA;CAAM,UAAUE;AAAY,CAAC;AACvF,MAAM,QAAQD,QAAAA,KAAK,OAAO;CAAE,YAAYD;CAAM,SAAS;AAAW,CAAC;AACnE,MAAM,iBAAiBC,QAAAA,KAAK,OAAO;CAAE,YAAYD;CAAM,WAAWA;CAAM,MAAMC,QAAAA,KAAK,QAAQ,YAAY;AAAE,CAAC;AAC1G,MAAM,cAAcA,QAAAA,KAAK,OAAO;CAAE,SAASD;CAAM,UAAUA;CAAM,MAAMA;AAAK,CAAC;AAC7E,MAAM,SAASC,QAAAA,KAAK,OAAO;CAAE,YAAYD;CAAM,UAAU;AAAW,CAAC;AACrE,MAAa,uBAAuBC,QAAAA,KAAK,OAAO;CAAE,GAAGA,QAAAA,KAAK,QAAQ,CAAC;CAAG,GAAGD;CAAM,GAAGA;AAAK,CAAC;AACxF,MAAa,0BAA0BC,QAAAA,KAAK,OAAO;CACjD,GAAGA,QAAAA,KAAK,QAAQ,CAAC;CACjB,QAAQD;CACR,QAAQA;CACR,SAASC,QAAAA,KAAK,MAAMA,QAAAA,KAAK,MAAM,CAACD,QAAMA,MAAI,CAAC,CAAC;CAC5C,MAAMG,WAASH,MAAI;AACrB,CAAC;AACD,MAAa,2BAA2BC,QAAAA,KAAK,OAAO;CAClD,GAAGA,QAAAA,KAAK,QAAQ,CAAC;CACjB,QAAQC;CACR,SAASD,QAAAA,KAAK,MAAMA,QAAAA,KAAK,MAAM,CAACD,QAAMA,MAAI,CAAC,CAAC;CAC5C,MAAMA;AACR,CAAC;AACD,MAAM,SACJ,IACA,MACA,QACA,QACA,OACA,QAAiC,CAAC,OACd;CACpB,IAAI,UAAU;CACd,MAAM,cAAc;CACpB;CACA,OAAO;CACP,gBAAgB;CAChB,aAAa,kBAAkB,GAAG;CAClC,cACE;CACF,WAAW;EAAE,GAAG,iBAAiB,MAAM;EAAG,OAAO;GAAE,aAAa;GAAuB,QAAQ;EAAe;CAAE;CAChH,GAAI,QAAQ,EAAE,MAAM;EAAE,aAAa;EAAoB,UAAU;EAAM,QAAQ;CAAM,EAAE,IAAI,CAAC;CAC5F,GAAG;AACL;AACA,MAAM,SAA2B;CAC/B,MAAM,SAAS,IAAI,OAAO,aAAa;CACvC,MAAM,UAAU,WAAW,QAAQ,aAAa;CAChD,MAAM,WAAW,YAAY,QAAQ,eAAe,KAAA,GAAW,EAC7D,WAAW;EACT,GAAG,iBAAiB,aAAa;EACjC,OAAO;GAAE,aAAa;GAAkB,QAAQC,QAAAA,KAAK,OAAO,EAAE,QAAQA,QAAAA,KAAK,QAAQ,SAAS,EAAE,CAAC;EAAE;CACnG,EACF,CAAC;CACD,MACE,SACA,UACA,QACAA,QAAAA,KAAK,OAAO;EAAE,GAAG,MAAM;EAAY,MAAMD;EAAM,YAAYA;EAAM,SAASA;EAAM,WAAWA;CAAK,CAAC,GACjG,KAAA,GACA,EACE,WAAW,iBACTC,QAAAA,KAAK,OAAO;EAAE,GAAG,MAAM;EAAY,MAAMD;EAAM,YAAYA;EAAM,SAASA;EAAM,WAAWA;CAAK,CAAC,GACjG,GACF,EACF,CACF;CACA,MAAM,WAAW,yBAAyB,QAAQ,aAAa;CAC/D,MAAM,QAAQ,sBAAsB,QAAQ,aAAa;CACzD,MAAM,UAAU,iBAAiB,UAAU,aAAa;CACxD,MAAM,YAAY,aAAa,OAAOC,QAAAA,KAAK,OAAO,EAAE,UAAU,SAAS,CAAC,GAAGA,QAAAA,KAAK,QAAQ,QAAQ,CAAC;CACjG,MACE,YACA,aACA,OACAA,QAAAA,KAAK,OAAO;EACV,SAASA,QAAAA,KAAK,MAAM,CAClBA,QAAAA,KAAK,OAAO;GAAE,WAAWA,QAAAA,KAAK,QAAQ,IAAI;GAAG,MAAMD;EAAK,CAAC,GACzDC,QAAAA,KAAK,OAAO;GAAE,WAAWA,QAAAA,KAAK,QAAQ,KAAK;GAAG,QAAQD;EAAK,CAAC,CAC9D,CAAC;EACD,aAAaC,QAAAA,KAAK,MAAMA,QAAAA,KAAK,OAAO;GAAE,IAAID;GAAM,OAAOA;GAAM,WAAWA;GAAM,YAAYA;EAAK,CAAC,CAAC;CACnG,CAAC,CACH;CACA,MAAM,mBAAmB,kBAAkB,UAAU,WAAW;CAChE,MAAM,kBAAkB,4BAA4B,QAAQ,OAAO,KAAA,GAAW,EAAE,gBAAgB,SAAS,CAAC;CAC1G,MAAM,mBAAmB,6BAA6B,QAAQC,QAAAA,KAAK,OAAO,EAAE,IAAID,OAAK,CAAC,GAAG,QAAQ,EAC/F,gBAAgB,SAClB,CAAC;CACD,MAAM,sBAAsB,gCAAgC,QAAQ,OAAO,KAAA,GAAW,EAAE,gBAAgB,OAAO,CAAC;CAChH,MACE,uBACA,iCACA,QACAC,QAAAA,KAAK,OAAO;EAAE,IAAIA,QAAAA,KAAK,QAAQ,IAAI;EAAG,eAAeD;CAAK,CAAC,GAC3D,QACA,EAAE,gBAAgB,OAAO,CAC3B;CACA,MAAM,aAAa,cAAc,QAAQC,QAAAA,KAAK,MAAM,CAAC,OAAO,cAAc,CAAC,GAAGA,QAAAA,KAAK,OAAO,EAAE,QAAQD,OAAK,CAAC,GAAG,EAC3G,gBAAgB,SAClB,CAAC;CACD,MACE,4BACA,oBACA,QACAC,QAAAA,KAAK,OAAO,EAAE,iBAAiBD,OAAK,CAAC,GACrCC,QAAAA,KAAK,OAAO;EACV,mBAAmBD;EACnB,iBAAiBA;EACjB,OAAOA;EACP,UAAUC,QAAAA,KAAK,MAAM,CAACA,QAAAA,KAAK,QAAQ,KAAK,GAAGA,QAAAA,KAAK,QAAQ,SAAS,CAAC,CAAC;EACnE,eAAeD;EACf,aAAaA;CACf,CAAC,GACD;EACE,gBAAgB;EAChB,aAAa;EACb,WAAW,iBAAiBC,QAAAA,KAAK,OAAO,EAAE,iBAAiBD,OAAK,CAAC,GAAG,GAAG;CACzE,CACF;CACA,MAAM,0BAA0B,yBAAyB,UAAU,eAAe,KAAA,GAAW,EAC3F,aAAa,2FACf,CAAC;CACD,MACE,yBACA,0BACA,QACAC,QAAAA,KAAK,OAAO;EAAE,aAAaD;EAAM,WAAWA;EAAM,eAAeA;EAAM,aAAaA;CAAK,CAAC,GAC1FC,QAAAA,KAAK,OAAO;EAAE,iBAAiBD;EAAM,OAAOA;CAAK,CAAC,GAClD,EAAE,gBAAgB,OAAO,CAC3B;CACA,MACE,4BACA,6BACA,QACAC,QAAAA,KAAK,OAAO,EAAE,IAAIA,QAAAA,KAAK,QAAQ,IAAI,EAAE,CAAC,GACtCA,QAAAA,KAAK,OAAO;EAAE,aAAaD;EAAM,iBAAiBA;EAAM,WAAWA;EAAM,UAAU;CAAY,CAAC,GAChG,EAAE,gBAAgB,OAAO,CAC3B;CACA,MACE,WACA,YACA,QACA,aACAC,QAAAA,KAAK,OAAO;EACV,iBAAiBD;EACjB,OAAOC,QAAAA,KAAK,MAAM;GAACA,QAAAA,KAAK,QAAQ,SAAS;GAAGA,QAAAA,KAAK,QAAQ,UAAU;GAAGA,QAAAA,KAAK,QAAQ,MAAM;EAAC,CAAC;CAC7F,CAAC,GACD,EAAE,gBAAgB,SAAS,CAC7B;CACA,MAAM,WAAW,YAAY,QAAQ,sBAAsB,sBAAsB;EAC/E,gBAAgB;EAChB,aACE;CACJ,CAAC;CACD,MACE,QACA,SACA,QACAA,QAAAA,KAAK,OAAO;EAAE,WAAWD;EAAM,QAAQC,QAAAA,KAAK,QAAQ,SAAS;CAAE,CAAC,GAChEA,QAAAA,KAAK,OAAO,EAAE,MAAMA,QAAAA,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,GACnD;EACE,gBAAgB;EAChB,WAAW;GACT,GAAG,iBAAiBA,QAAAA,KAAK,OAAO;IAAE,WAAWD;IAAM,QAAQC,QAAAA,KAAK,QAAQ,SAAS;GAAE,CAAC,GAAG,GAAG;GAC1F,OAAO;IAAE,aAAa;IAAmC,QAAQ;GAAe;EAClF;CACF,CACF;CACA,MACE,eACA,gBACA,OACAA,QAAAA,KAAK,OAAO;EACV,QAAQA,QAAAA,KAAK,MAAM;GACjBA,QAAAA,KAAK,QAAQ,SAAS;GACtBA,QAAAA,KAAK,QAAQ,UAAU;GACvBA,QAAAA,KAAK,QAAQ,QAAQ;GACrBA,QAAAA,KAAK,QAAQ,SAAS;GACtBA,QAAAA,KAAK,QAAQ,UAAU;EACzB,CAAC;EACD,aAAaE,WAAS,KAAK;EAC3B,eAAeA,WAASH,MAAI;CAC9B,CAAC,GACD,KAAA,GACA;EAAE,gBAAgB;EAAQ,YAAY,CAAC;GAAE,MAAM;GAAW,IAAI;GAAS,UAAU;GAAM,QAAQA;EAAK,CAAC;CAAE,CACzG;AACF;AACA,MAAa,sBAAwC;CACnD,MAAM,YAAY,aAAa,QAAQ,aAAaC,QAAAA,KAAK,OAAO,EAAE,QAAQD,OAAK,CAAC,GAAG;EACjF,gBAAgB;EAChB,cAAc;EACd,YAAY,CAAC;GAAE,MAAM;GAAyB,IAAI;GAAU,UAAU;GAAM,QAAQA;EAAK,CAAC;CAC5F,CAAC;CACD,GAAG;CACH,GAAG,OAAO,KAAK,eAAe;EAC5B,GAAG;EACH,IAAI,GAAG,UAAU,GAAG;EACpB,UAAU;EACV,MAAM,UAAU,KAAK,MAAM,EAAoB,KAAK;EACpD,gBAAgB;EAChB,cAAc;CAChB,EAAE;CACF;EACE,IAAI;EACJ,OAAO;EACP,MAAM;EACN,QAAQ;EACR,gBAAgB;EAChB,cAAc;EACd,aAAa;EACb,WAAW,EAAE,OAAO;GAAE,aAAa;GAAgB,aAAa;GAAa,QAAQA;EAAK,EAAE;CAC9F;AACF;AACA,MAAM,QAAQC,QAAAA,KAAK,OAAO;CACxB,MAAMD;CACN,QAAQC,QAAAA,KAAK,OAAO,EAAE,SAAS,iBAAiB,CAAC;CACjD,YAAYA,QAAAA,KAAK,QAAQ,EAAE,SAAS,EAAE,CAAC;CACvC,aAAaD;AACf,CAAC;AACD,MAAM,SAASC,QAAAA,KAAK,OAAO;CACzB,UAAUA,QAAAA,KAAK,OAAO;EACpB,SAASA,QAAAA,KAAK,QAAQ,CAAC;EACvB,UAAUA,QAAAA,KAAK,QAAQ,EAAE,SAAS,EAAE,CAAC;EACrC,SAASC;EACT,QAAQD,QAAAA,KAAK,MAAM,KAAK;CAC1B,CAAC;CACD,WAAWD;CACX,WAAWA;AACb,CAAC;AACD,MAAa,sBAAwC,CACnD,GAAG,CAAC,yBAAyB,2CAA2C,CAAC,CAAC,SAAS,SAChF,CAAC,OAAO,MAAM,CAAC,CAAW,KAAK,YAA4B;CAC1D,IAAI,UAAU,KAAK,GAAG;CACtB,OAAO;CACP;CACA;CACA,gBAAgB;CAChB,cAAc;CACd,aAAa;CACb,WACE,WAAW,SACP;EAAE,OAAO,EAAE,aAAa,4BAA4B;EAAG,OAAO,EAAE,aAAa,uBAAuB;CAAE,IACtG,iBAAiB,MAAM;AAC/B,EAAE,CACJ,GACA,GAAG,CAAC,yCAAyC,qDAAqD,CAAC,CAAC,SAAS,SAC1G,CAAC,OAAO,MAAM,CAAC,CAAW,KAAK,YAA4B;CAC1D,IAAI,SAAS,KAAK,GAAG;CACrB,OAAO;CACP;CACA;CACA,gBAAgB;CAChB,cAAc;CACd,aAAa;CACb,WAAW;EACT,OAAO;GACL,aAAa;GACb,GAAI,WAAW,QAAQ;IAAE,aAAa;IAAO,QAAQC,QAAAA,KAAK,OAAO,EAAE,iBAAiB,SAAS,CAAC;GAAE,IAAI,CAAC;EACvG;EACA,OAAO,EAAE,aAAa,sBAAsB;CAC9C;AACF,EAAE,CACJ,CACF;;;;ACpTA,MAAa,iBAAiB;;;;;AAY9B,SAAgB,YAA+B,QAA8B;CAC3E,OAAO;AACT;;AAGA,SAAgB,YAA+C,SAAsD;CACnH,OAAO;AACT;;AAmBA,SAAgB,aAAwD,SAA6B;CACnG,OAAO,OAAO,YACZ,OAAO,QAAyB,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,cAAc,CACzE,MACA,WAAW,KAAA,KAAA,GACPI,uBAAAA,OAAAA,CAAO,QAAQ,YAAY,IAAI,GAAG,YAAY,MAAM,CAAC,IACrD,SAAS,KAAA,KAAA,GACPA,uBAAAA,OAAAA,CAAO,YAAY,IAAI,CAAC,KAAA,GACxBA,uBAAAA,OAAAA,CAAO,CACf,CAAC,CACH;AACF;;;AChDA,MAAMC,SAAOC,QAAAA,KAAK,OAAkB,CAAC,CAAC;AAEtC,MAAa,qBAAqBA,QAAAA,KAAK,OAAO;CAAE,MAAMA,QAAAA,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC;CAAG,SAASD;AAAK,CAAC;;AAEpG,MAAa,wBAAwBC,QAAAA,KAAK,OAAOA,QAAAA,KAAK,OAAO,GAAGD,MAAI;CAGvD,GAAqBE,uBAAAA,OAAAA,CAAO,eAAe;CACtD,SAAS;CACT,OAAA,GAAMC,uBAAAA,UAAAA,CAAU,cAAc;CAC9B,OAAO,YAAYF,QAAAA,KAAK,OAAO,EAAE,WAAWA,QAAAA,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;CAC5E,UAAU,EACR,SAAS;EACP,OAAO,YAAY,EAAE,QAAQ,sBAAsB,CAAC;EACpD,SAAS,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,EAAE,CAAC;CACjE,EACF;AACF,CAAC;;;;ACdD,MAAa,sBAAsBG,QAAAA,KAAK,MAAM;CAC5CA,QAAAA,KAAK,OAAO,EAAE,OAAOA,QAAAA,KAAK,QAAQ,QAAQ,EAAE,GAAG,EAAE,sBAAsB,MAAM,CAAC;CAC9EA,QAAAA,KAAK,OACH;EAAE,OAAOA,QAAAA,KAAK,QAAQ,WAAW;EAAG,aAAaA,QAAAA,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC;CAAE,GAC/E,EAAE,sBAAsB,MAAM,CAChC;CACAA,QAAAA,KAAK,OACH;EAAE,OAAOA,QAAAA,KAAK,QAAQ,SAAS;EAAG,WAAWA,QAAAA,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC;CAAE,GAC3E,EAAE,sBAAsB,MAAM,CAChC;AACF,CAAC;AAED,MAAa,qBAAqBA,QAAAA,KAAK,OACrC;CACE,OAAO;CACP,SAASA,QAAAA,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC;CACrC,QAAQA,QAAAA,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC;CACpC,OAAOA,QAAAA,KAAK,QAAQ;AACtB,GACA,EAAE,sBAAsB,MAAM,CAChC;;;ACpBA,MAAMC,SAAOC,QAAAA,KAAK,OAAO;AACzB,MAAMC,SAAOD,QAAAA,KAAK,OAAkB,CAAC,CAAC;;AAGtC,MAAa,kBAAkBA,QAAAA,KAAK,OAAO;CAAE,IAAID;CAAM,WAAWA;CAAM,OAAOC,QAAAA,KAAK,OAAOD,QAAME,MAAI;AAAE,CAAC;;AAGxG,MAAa,mBAAmBD,QAAAA,KAAK,OAAO;CAC1C,GAAG,qBAAqB;CACxB,mBAAmBA,QAAAA,KAAK,SAASA,QAAAA,KAAK,KAAK,yBAAyB,CAAC,SAAS,CAAC,CAAC;AAClF,CAAC;;AAGD,MAAa,qBAAqBA,QAAAA,KAAK,KAAK,iBAAiB,CAAC,cAAc,CAAC;;AAI7E,MAAa,wBAAwBA,QAAAA,KAAK,OAAOD,QAAMC,QAAAA,KAAK,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;AAEnF,MAAM,WAAW;CACf,UAAUA,QAAAA,KAAK,OAAOD,QAAM,gBAAgB;CAC5C,YAAYC,QAAAA,KAAK,OAAOD,QAAM,kBAAkB;CAChD,SAASC,QAAAA,KAAK,MAAM,eAAe;CACnC,cAAc;AAChB;AACA,MAAa,mBAAmBA,QAAAA,KAAK,OAAO,QAAQ;CAGvC,GAAgBE,uBAAAA,OAAAA,CAAO,UAAU;CAC5C,SAAS;CACT,OAAA,GAAMC,uBAAAA,UAAAA,CAAU,cAAc;CAC9B,OAAO,YAAYH,QAAAA,KAAK,OAAO,CAAC,CAAC,CAAC;CAClC,UAAU,EACR,SAAS;EACP,OAAO,YAAY,QAAQ;EAC3B,SAAS,aAAa;GACpB,UAAU;IACR,MAAMA,QAAAA,KAAK,OAAO;KAChB,QAAQA,QAAAA,KAAK,SAASA,QAAAA,KAAK,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;KAClD,OAAOA,QAAAA,KAAK,SAASA,QAAAA,KAAK,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;KACjD,QAAQA,QAAAA,KAAK,SAASD,MAAI;KAC1B,aAAaC,QAAAA,KAAK,SAASD,MAAI;IACjC,CAAC;IACD,QAAQC,QAAAA,KAAK,OAAqB,CAAC,CAAC;GACtC;GACA,QAAQ;IAAE,MAAM;IAAoB,QAAQC;GAAK;GACjD,WAAW,EAAE,MAAMD,QAAAA,KAAK,OAAO,EAAE,IAAID,OAAK,CAAC,EAAE;EAC/C,CAAC;CACH,EACF;AACF,CAAC;;;;;;AASD,MAAa,qBAAqBC,QAAAA,KAAK,OAAOD,QAAMC,QAAAA,KAAK,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;CAEnE,GAAyBE,uBAAAA,OAAAA,CAAO,oBAAoB;CAC/D,SAAS;CACT,OAAA,GAAMC,uBAAAA,UAAAA,CAAU,cAAc;CAC9B,OAAO,YAAYH,QAAAA,KAAK,OAAO,CAAC,CAAC,CAAC;CAClC,UAAU,EAAE,SAAS;EAAE,OAAO,YAAY,EAAE,WAAW,mBAAmB,CAAC;EAAG,SAAS,aAAa,CAAC,CAAC;CAAE,EAAE;AAC5G,CAAC;;;;ACpED,MAAa,sBAAsBI,QAAAA,KAAK,MAAM,CAC5CA,QAAAA,KAAK,KAAK,GACVA,QAAAA,KAAK,UAAU,CAACA,QAAAA,KAAK,OAAO,EAAE,MAAMA,QAAAA,KAAK,OAAO,EAAE,CAAC,GAAGA,QAAAA,KAAK,OAAOA,QAAAA,KAAK,OAAO,GAAGA,QAAAA,KAAK,OAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAC/G,CAAC;CAGY,GAAmBC,uBAAAA,OAAAA,CAAO,aAAa;CAClD,SAAS;CACT,OAAA,GAAMC,uBAAAA,UAAAA,CAAU,cAAc;CAC9B,OAAO,YACLF,QAAAA,KAAK,OAAO;EAAE,WAAWA,QAAAA,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC;EAAG,UAAUA,QAAAA,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC;CAAE,CAAC,CACnG;CACA,UAAU,EACR,SAAS,EAAE,OAAO,YAAY,EAAE,OAAO,oBAAoB,CAAC,EAAE,EAChE;AACF,CAAC;;;ACbD,MAAM,OAAOG,QAAAA,KAAK,OAAO;AACzB,MAAM,cAAcA,QAAAA,KAAK,OAAO;AAChC,MAAM,OAAOA,QAAAA,KAAK,QAAQ;AAC1B,MAAMC,SAAOD,QAAAA,KAAK,OAChBA,QAAAA,KAAK,QAAQ,EACX,aACE,qHACJ,CAAC,CACH;AACA,MAAM,WAAWA,QAAAA,KAAK;AACtB,MAAM,UAAUA,QAAAA,KAAK,MAAM,IAAI;AAC/B,MAAM,QAAQA,QAAAA,KAAK,OAAO;CAAE,UAAU;CAAM,IAAI;AAAK,CAAC;AACtD,MAAM,WAAWA,QAAAA,KAAK,MAAM;CAC1BA,QAAAA,KAAK,QAAQ,KAAK;CAClBA,QAAAA,KAAK,QAAQ,SAAS;CACtBA,QAAAA,KAAK,QAAQ,KAAK;CAClBA,QAAAA,KAAK,QAAQ,QAAQ;CACrBA,QAAAA,KAAK,QAAQ,MAAM;CACnBA,QAAAA,KAAK,QAAQ,KAAK;CAClBA,QAAAA,KAAK,QAAQ,OAAO;AACtB,CAAC;AACD,MAAM,QAAQA,QAAAA,KAAK,MAAM;CACvBA,QAAAA,KAAK,QAAQ,MAAM;CACnBA,QAAAA,KAAK,QAAQ,MAAM;CACnBA,QAAAA,KAAK,QAAQ,YAAY;CACzBA,QAAAA,KAAK,QAAQ,OAAO;AACtB,CAAC;AACD,MAAM,QAAQA,QAAAA,KAAK,OAAO;CAAE,MAAMA,QAAAA,KAAK,QAAQ,OAAO;CAAG,MAAM;CAAM,UAAU;AAAK,CAAC;AACrF,MAAM,WAAWA,QAAAA,KAAK,OAAO;CAAE,MAAMA,QAAAA,KAAK,QAAQ,MAAM;CAAG,MAAM;AAAK,CAAC;AACvE,MAAM,eAAeA,QAAAA,KAAK,OAAO;CAC/B,MAAMA,QAAAA,KAAK,QAAQ,UAAU;CAC7B,UAAU;CACV,UAAU,SAASA,QAAAA,KAAK,QAAQ,IAAI,CAAC;AACvC,CAAC;AACD,MAAM,UAAUA,QAAAA,KAAK,MAAM,CAAC,OAAO,QAAQ,CAAC;AAC5C,MAAM,QAAQA,QAAAA,KAAK,OAAO;CACxB,OAAO;CACP,QAAQ;CACR,WAAW;CACX,YAAY;CACZ,OAAO;AACT,CAAC;;AAED,MAAM,UAAUA,QAAAA,KAAK,OAAO;CAAE,MAAM;CAAM,QAAQ,SAASA,QAAAA,KAAK,MAAM,KAAK,CAAC;CAAG,UAAU,SAAS,IAAI;AAAE,CAAC;AACzG,MAAM,YAAYA,QAAAA,KAAK,OAAO;CAC5B,UAAU;CACV,WAAWA,QAAAA,KAAK,MAAM,CACpBA,QAAAA,KAAK,KAAK,GACVA,QAAAA,KAAK,OAAO;EACV,IAAI;EACJ,MAAMA,QAAAA,KAAK,MAAM;GAACA,QAAAA,KAAK,QAAQ,KAAK;GAAGA,QAAAA,KAAK,QAAQ,YAAY;GAAGA,QAAAA,KAAK,QAAQ,YAAY;EAAC,CAAC;EAC9F,QAAQA,QAAAA,KAAK,MAAM,CAACA,QAAAA,KAAK,QAAQ,MAAM,GAAGA,QAAAA,KAAK,QAAQ,UAAU,CAAC,CAAC;CACrE,CAAC,CACH,CAAC;CACD,QAAQ;CACR,OAAOA,QAAAA,KAAK,MACVA,QAAAA,KAAK,OAAO;EACV,IAAI;EACJ,MAAM;EACN,QAAQ,SAASA,QAAAA,KAAK,MAAM,KAAK,CAAC;EAClC,UAAUA,QAAAA,KAAK,MAAM;GAACA,QAAAA,KAAK,QAAQ,OAAO;GAAGA,QAAAA,KAAK,QAAQ,UAAU;GAAGA,QAAAA,KAAK,QAAQ,SAAS;EAAC,CAAC;EAC/F,YAAYA,QAAAA,KAAK,MAAM,CAACA,QAAAA,KAAK,QAAQ,WAAW,GAAGA,QAAAA,KAAK,QAAQ,MAAM,CAAC,CAAC;EACxE,aAAaA,QAAAA,KAAK,MAAM,CAACA,QAAAA,KAAK,QAAQ,SAAS,GAAGA,QAAAA,KAAK,QAAQ,SAAS,CAAC,CAAC;CAC5E,CAAC,CACH;AACF,CAAC;AACD,MAAM,QAAQA,QAAAA,KAAK,UAAU,CAACA,QAAAA,KAAK,OAAO,EAAE,MAAM,KAAK,CAAC,GAAGA,QAAAA,KAAK,OAAO,MAAMC,MAAI,CAAC,GAAG,EACnF,aAAa,kGACf,CAAC;AACD,MAAM,gBAAgBD,QAAAA,KAAK,OAAO;CAAE,UAAU;CAAa,OAAO;AAAM,CAAC;AACzE,MAAa,4BAA4BA,QAAAA,KAAK,OAAO;CACnD,UAAUA,QAAAA,KAAK,OAAO;EACpB,UAAU;EACV,QAAQ;EACR,WAAW,SAAS,SAAS;CAC/B,CAAC;CACD,cAAc,SACZA,QAAAA,KAAK,OAAO;EACV,UAAU;EACV,SAAS;EACT,eAAe,SAAS,WAAW;EACnC,QAAQA,QAAAA,KAAK,MAAM,aAAa;EAChC,aAAaA,QAAAA,KAAK,MAAM,aAAa;CACvC,CAAC,CACH;CACA,MAAM,SACJA,QAAAA,KAAK,OAAO;EACV,OAAO;EACP,SAAS,SACPA,QAAAA,KAAK,OAAO;GACV,MAAMA,QAAAA,KAAK,QAAQ,WAAW;GAC9B,SAASA,QAAAA,KAAK,MAAMA,QAAAA,KAAK,MAAM,CAAC,UAAU,YAAY,CAAC,CAAC;GACxD,OAAO;GACP,WAAW;EACb,CAAC,CACH;EACA,OAAOA,QAAAA,KAAK,OACV,MACAA,QAAAA,KAAK,OAAO;GACV,YAAY;GACZ,UAAU;GACV,MAAMC;GACN,eAAe,SAASD,QAAAA,KAAK,OAAO;IAAE,SAASA,QAAAA,KAAK,MAAM,OAAO;IAAG,SAAS,SAASC,MAAI;GAAE,CAAC,CAAC;EAChG,CAAC,CACH;CACF,CAAC,CACH;AACF,CAAC;;AAED,MAAa,uBAAuB;CAClC,oBAAoB;EAClB,MAAMD,QAAAA,KAAK,OAAO;GAChB,QAAQ,SAAS,IAAI;GACrB,WAAW,SAASA,QAAAA,KAAK,MAAM,CAACA,QAAAA,KAAK,QAAQ,OAAO,GAAGA,QAAAA,KAAK,QAAQ,OAAO,CAAC,CAAC,CAAC;GAC9E,OAAO,SAAS,WAAW;GAC3B,UAAU,SAAS,IAAI;GACvB,SAAS,SAAS,IAAI;EACxB,CAAC;EACD,QAAQA,QAAAA,KAAK,OAAO;GAClB,SAASA,QAAAA,KAAK,MAAMC,MAAI;GACxB,aAAaD,QAAAA,KAAK,MAAM,CAAC,MAAMA,QAAAA,KAAK,KAAK,CAAC,CAAC;GAC3C,WAAWA,QAAAA,KAAK,MAAM,CAAC,MAAMA,QAAAA,KAAK,KAAK,CAAC,CAAC;GACzC,aAAaA,QAAAA,KAAK,MAAM,CAAC,MAAMA,QAAAA,KAAK,KAAK,CAAC,CAAC;GAC3C,aAAaA,QAAAA,KAAK,MAAM,CAAC,MAAMA,QAAAA,KAAK,KAAK,CAAC,CAAC;GAC3C,YAAY;GACZ,UAAU;GACV,SAASA,QAAAA,KAAK,MAAMC,MAAI;EAC1B,CAAC;CACH;CACA,QAAQ,EACN,MAAMD,QAAAA,KAAK,MAAM,CACf,MACAA,QAAAA,KAAK,OAAO;EACV,GAAG,QAAQ;EACX,SAAS,SAASA,QAAAA,KAAK,MAAM,CAACA,QAAAA,KAAK,QAAQ,UAAU,GAAGA,QAAAA,KAAK,QAAQ,SAAS,CAAC,CAAC,CAAC;CACnF,CAAC,CACH,CAAC,EACH;CACA,OAAO,EAAE,MAAMA,QAAAA,KAAK,MAAM,CAAC,MAAM,OAAO,CAAC,EAAE;CAC3C,OAAO,CAAC;CACR,gBAAgB,EAAE,MAAMA,QAAAA,KAAK,OAAO,EAAE,aAAa,KAAK,CAAC,EAAE;CAC3D,UAAU,EAAE,MAAM,MAAM;CACxB,aAAa,EAAE,MAAM,SAAS;CAC9B,aAAa,EAAE,MAAM,KAAK;CAC1B,cAAc,EAAE,MAAM,KAAK;CAC3B,UAAU,EAAE,MAAM,QAAQ;CAC1B,kBAAkB;EAAE,MAAM;EAAS,QAAQA,QAAAA,KAAK,OAAO,EAAE,IAAI,KAAK,CAAC;CAAE;CACrE,cAAc;EACZ,MAAMA,QAAAA,KAAK,OAAO,EAAE,IAAI,KAAK,CAAC;EAC9B,QAAQA,QAAAA,KAAK,MAAM;GACjBA,QAAAA,KAAK,QAAQ,SAAS;GACtBA,QAAAA,KAAK,QAAQ,WAAW;GACxBA,QAAAA,KAAK,QAAQ,kBAAkB;GAC/BA,QAAAA,KAAK,QAAQ,WAAW;EAC1B,CAAC;CACH;CACA,eAAe;EACb,MAAMA,QAAAA,KAAK,OAAO;GAAE,IAAI;GAAM,aAAa,SAAS,IAAI;EAAE,CAAC;EAC3D,QAAQA,QAAAA,KAAK,MAAM;GACjBA,QAAAA,KAAK,QAAQ,UAAU;GACvBA,QAAAA,KAAK,QAAQ,WAAW;GACxBA,QAAAA,KAAK,QAAQ,gBAAgB;GAC7BA,QAAAA,KAAK,QAAQ,WAAW;EAC1B,CAAC;CACH;CACA,aAAa,CAAC;CACd,YAAY,EAAE,QAAQA,QAAAA,KAAK,OAAO;EAAE,UAAU;EAAS,UAAU;CAAQ,CAAC,EAAE;CAC5E,QAAQ;EACN,MAAMA,QAAAA,KAAK,OAAO;GAChB,QAAQ;GACR,WAAW,SAAS,IAAI;GACxB,oBAAoB,SAAS,IAAI;GACjC,qBAAqB,SAAS,IAAI;GAClC,OAAO,SAAS,IAAI;EACtB,CAAC;EACD,QAAQA,QAAAA,KAAK,OAAO;GAClB,YAAY,SAAS,IAAI;GACzB,WAAW;GACX,SAAS,SAAS,IAAI;GACtB,cAAc,SACZA,QAAAA,KAAK,OAAO;IACV,IAAI;IACJ,UAAUA,QAAAA,KAAK,MAAM,CAAC,MAAMA,QAAAA,KAAK,KAAK,CAAC,CAAC;IACxC,WAAW;IACX,QAAQ;IACR,SAAS;IACT,SAAS,SAASC,MAAI;IACtB,OAAO,SAAS,KAAK;IACrB,UAAU,SAAS,IAAI;GACzB,CAAC,CACH;EACF,CAAC;CACH;CACA,qBAAqB,EACnB,MAAMD,QAAAA,KAAK,MAAM;EACfA,QAAAA,KAAK,OAAO;GAAE,IAAI;GAAM,OAAO;EAAK,CAAC;EACrCA,QAAAA,KAAK,OAAO;GAAE,IAAI;GAAM,WAAW;EAAK,CAAC;EACzCA,QAAAA,KAAK,OAAO;GAAE,IAAI;GAAM,WAAWA,QAAAA,KAAK,QAAQ,IAAI;EAAE,CAAC;CACzD,CAAC,EACH;CACA,UAAU,EACR,QAAQA,QAAAA,KAAK,OAAO;EAClB,OAAO,SAAS,KAAK;EACrB,eAAe;EACf,UAAU;EACV,aAAa,SAAS,IAAI;EAC1B,aAAa;EACb,cAAc;EACd,cAAcA,QAAAA,KAAK,MAAM,CAACA,QAAAA,KAAK,QAAQ,KAAK,GAAGA,QAAAA,KAAK,QAAQ,eAAe,CAAC,CAAC;EAC7E,cAAcA,QAAAA,KAAK,MAAM,CAACA,QAAAA,KAAK,QAAQ,KAAK,GAAGA,QAAAA,KAAK,QAAQ,eAAe,CAAC,CAAC;EAC7E,WAAW;EACX,aAAa,SAAS,IAAI;EAC1B,uBAAuB;EACvB,cAAc;EACd,qBAAqB;EACrB,aAAa,SAAS,IAAI;EAC1B,iBAAiB,SAASA,QAAAA,KAAK,MAAM,CAACA,QAAAA,KAAK,QAAQ,MAAM,GAAGA,QAAAA,KAAK,QAAQ,UAAU,CAAC,CAAC,CAAC;EACtF,aAAa,SAAS,IAAI;EAC1B,eAAe,SAAS,WAAW;CACrC,CAAC,EACH;CACA,iBAAiB,EACf,QAAQA,QAAAA,KAAK,OAAO;EAClB,WAAW;EACX,eAAe;EACf,QAAQ;EACR,MAAM;EACN,cAAc,SACZA,QAAAA,KAAK,OAAO;GACV,QAAQA,QAAAA,KAAK,MAAM,CAAC,aAAaA,QAAAA,KAAK,KAAK,CAAC,CAAC;GAC7C,eAAe;GACf,SAASA,QAAAA,KAAK,MAAM,CAAC,aAAaA,QAAAA,KAAK,KAAK,CAAC,CAAC;EAChD,CAAC,CACH;CACF,CAAC,EACH;CACA,aAAa,EACX,QAAQA,QAAAA,KAAK,MACXA,QAAAA,KAAK,OAAO;EACV,MAAM;EACN,aAAa,SAAS,IAAI;EAC1B,QAAQA,QAAAA,KAAK,MAAM;GAACA,QAAAA,KAAK,QAAQ,WAAW;GAAGA,QAAAA,KAAK,QAAQ,QAAQ;GAAGA,QAAAA,KAAK,QAAQ,OAAO;EAAC,CAAC;EAC7F,YAAY,SACVA,QAAAA,KAAK,OAAO;GACV,MAAM;GACN,QAAQ;GACR,OAAOA,QAAAA,KAAK,MAAM;IAACA,QAAAA,KAAK,QAAQ,MAAM;IAAGA,QAAAA,KAAK,QAAQ,SAAS;IAAGA,QAAAA,KAAK,QAAQ,WAAW;GAAC,CAAC;GAC5F,QAAQA,QAAAA,KAAK,MAAM,CAACA,QAAAA,KAAK,QAAQ,SAAS,GAAGA,QAAAA,KAAK,QAAQ,WAAW,CAAC,CAAC;GACvE,SAAS,SAAS,IAAI;EACxB,CAAC,CACH;CACF,CAAC,CACH,EACF;CACA,oBAAoB,EAAE,QAAQA,QAAAA,KAAK,MAAM,KAAK,EAAE;CAChD,4BAA4B,EAAE,QAAQA,QAAAA,KAAK,MAAM,QAAQ,EAAE;CAC3D,SAAS;EAAE,MAAMA,QAAAA,KAAK,OAAO,EAAE,oBAAoB,SAAS,IAAI,EAAE,CAAC;EAAG,QAAQC;CAAK;CACnF,SAAS,EAAE,MAAM,KAAK;CACtB,WAAW,EAAE,MAAMD,QAAAA,KAAK,MAAM,IAAI,EAAE;AACtC;;AAEA,MAAa,iBAAiB,aAAa,oBAAoB;AAE/D,MAAM,cAAcA,QAAAA,KAAK,OAAO;CAAE,MAAM;CAAM,SAAS;AAAK,CAAC;AAC7D,MAAM,cACJ,IACA,SACA,QACA,WACA,OACA,iBACsB;CACtB;CACA,OAAO,YAAY,WAAW,WAAW;CACzC;CACA;CACA;CACA,MAAM,cAAc,qBAAqB,UAAU;CACnD;CACA,GAAI,cAAc,qBAAqB,CAAC,IAAI,EAAE,QAAQ,YAAY;CAClE;AACF;AACA,MAAa,yBAA6C;CACxD,GAAG,OAAO,QAAyB,oBAAoB,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,eAAiC;EAC9G,IAAI,WAAW;EACf,OAAO;EACP,SAAS;EACT;EACA,WAAW;EACX,MAAM;EACN,aAAa,WAAW,OAAO;EAC/B,OAAOA,QAAAA,KAAK,MAAM,SAAS,KAAA,IAAY,CAAC,IAAK,CAAC,IAAI,CAAe;EACjE,GAAI,WAAW,KAAA,IAAY,CAAC,IAAI,EAAE,QAAQ,OAAO;EACjD,QAAQ;CACV,EAAE;CACF,WACE,iBACA,cACA,SACA,oBACA,2BACA,yFACF;CACA,WACE,aACA,UACA,SACA,oBACA,kBACA,uFACF;CACA,WACE,gBACA,aACA,SACA,oBACA,qBACA,uGACF;CACA,WACE,mBACA,eACA,UACA,oBACA,uBACA,0EACF;CACA,WACE,oBACA,eACA,WACA,oBACAA,QAAAA,KAAK,MAAM,CAAC,kBAAkB,CAAC,GAC/B,kDACF;AACF;;;;AClVA,MAAa,qBAAqB;AAElC,MAAM,IAAIE,QAAAA,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC;AACtC,MAAM,OAAOA,QAAAA,KAAK,QAAQ,EACxB,aAAa,iFACf,CAAC;AACD,MAAM,KAAKA,QAAAA,KAAK,QAAQ,EAAE,SAAS,EAAE,CAAC;AACtC,MAAM,YAAYA,QAAAA,KAAK,MACrB;CACE;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC,CAAC,KAAK,SAASA,QAAAA,KAAK,QAAQ,IAAI,CAAC,CACpC;AACA,MAAM,YAAYA,QAAAA,KAAK,OAAO;CAAE,MAAM;CAAW,SAASA,QAAAA,KAAK,OAAO;CAAG,QAAQA,QAAAA,KAAK,SAASA,QAAAA,KAAK,OAAO,CAAC;AAAE,CAAC;AAC/G,MAAM,UAAUA,QAAAA,KAAK,MAAM,CAACA,QAAAA,KAAK,OAAO,GAAGA,QAAAA,KAAK,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;AACxE,MAAM,OAAOA,QAAAA,KAAK,MAAM,OAAO;AAC/B,MAAM,UAAUA,QAAAA,KAAK,MAAM,CAAC,MAAMA,QAAAA,KAAK,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;AAC/D,MAAM,kBAAkBA,QAAAA,KAAK,MAAM,CAACA,QAAAA,KAAK,MAAM,SAAS,EAAE,UAAU,EAAE,CAAC,GAAGA,QAAAA,KAAK,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;AACvG,MAAM,QAAQA,QAAAA,KAAK,QAAQ,EAAE,SAAS,EAAE,CAAC;AACzC,MAAa,oBAAoBA,QAAAA,KAAK,MACpC;CACEA,QAAAA,KAAK,MAAM,CAACA,QAAAA,KAAK,QAAQ,GAAG,GAAG,IAAI,CAAC;CACpCA,QAAAA,KAAK,MAAM;EAACA,QAAAA,KAAK,QAAQ,GAAG;EAAG;EAAiB;CAAI,CAAC;CACrDA,QAAAA,KAAK,MAAM,CAACA,QAAAA,KAAK,QAAQ,GAAG,GAAG,IAAI,CAAC;CACpCA,QAAAA,KAAK,MAAM,CAACA,QAAAA,KAAK,QAAQ,GAAG,GAAG,eAAe,CAAC;CAC/CA,QAAAA,KAAK,MAAM,CAACA,QAAAA,KAAK,QAAQ,GAAG,CAAC,CAAC;CAC9BA,QAAAA,KAAK,MAAM;EAACA,QAAAA,KAAK,QAAQ,GAAG;EAAG;EAAiBA,QAAAA,KAAK,OAAO;CAAC,CAAC;CAC9DA,QAAAA,KAAK,MAAM,CAACA,QAAAA,KAAK,QAAQ,GAAG,GAAGA,QAAAA,KAAK,OAAO,CAAC,CAAC;CAC7CA,QAAAA,KAAK,MAAM;EAACA,QAAAA,KAAK,QAAQ,GAAG;EAAG;EAAiB;CAAK,CAAC;CACtDA,QAAAA,KAAK,MAAM,CAACA,QAAAA,KAAK,QAAQ,GAAG,GAAG,KAAK,CAAC;CACrCA,QAAAA,KAAK,MAAM;EAACA,QAAAA,KAAK,QAAQ,GAAG;EAAG;EAAS;EAAO;EAAOA,QAAAA,KAAK,MAAM,IAAI;CAAC,CAAC;CACvEA,QAAAA,KAAK,MAAM;EAACA,QAAAA,KAAK,QAAQ,GAAG;EAAG;EAAO;EAAOA,QAAAA,KAAK,MAAM,IAAI;CAAC,CAAC;CAC9DA,QAAAA,KAAK,MAAM;EAACA,QAAAA,KAAK,QAAQ,GAAG;EAAG;EAASA,QAAAA,KAAK,MAAM,KAAK;CAAC,CAAC;CAC1DA,QAAAA,KAAK,MAAM,CAACA,QAAAA,KAAK,QAAQ,GAAG,GAAGA,QAAAA,KAAK,MAAM,KAAK,CAAC,CAAC;CACjDA,QAAAA,KAAK,MAAM;EAACA,QAAAA,KAAK,QAAQ,GAAG;EAAG;EAAO;CAAI,CAAC;AAC7C,GACA,EACE,aACE,2JACJ,CACF;AACA,MAAM,SAAS,SACbA,QAAAA,KAAK,OAAO;CACV,GAAGA,QAAAA,KAAK,QAAQ,OAAO;CACvB,UAAUA,QAAAA,KAAK,SAASA,QAAAA,KAAK,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;CACpD,MAAMA,QAAAA,KAAK,OAAO;CAClB;CACA,aAAaA,QAAAA,KAAK,QAAQ,EAAE,SAAS,EAAE,CAAC;CACxC,MAAMA,QAAAA,KAAK,SAASA,QAAAA,KAAK,QAAQ,CAAC;AACpC,CAAC;AACH,MAAM,MAAMA,QAAAA,KAAK,OAAO;CAAE,GAAGA,QAAAA,KAAK,QAAQ,KAAK;CAAG,GAAGA,QAAAA,KAAK,QAAQ,EAAE,SAAS,EAAE,CAAC;AAAE,CAAC;AACnF,MAAM,OAAOA,QAAAA,KAAK,OAAO;CAAE,GAAGA,QAAAA,KAAK,QAAQ,MAAM;CAAG,GAAGA,QAAAA,KAAK,QAAQ;AAAE,CAAC;AACvE,MAAM,OAAOA,QAAAA,KAAK,OAAO;CAAE,GAAGA,QAAAA,KAAK,QAAQ,MAAM;CAAG,GAAGA,QAAAA,KAAK,QAAQ;AAAE,CAAC;AACvE,MAAM,MAAMA,QAAAA,KAAK,OAAO;CAAE,GAAGA,QAAAA,KAAK,QAAQ,KAAK;CAAG,QAAQA,QAAAA,KAAK,SAASA,QAAAA,KAAK,OAAO,CAAC;AAAE,CAAC;;AAGxF,MAAa,yBAAyBA,QAAAA,KAAK,MAAM;CAC/C,MAAMA,QAAAA,KAAK,QAAQ,QAAQ,CAAC;CAC5B;CACAA,QAAAA,KAAK,OAAO;EACV,GAAGA,QAAAA,KAAK,QAAQ,MAAM;EACtB,IAAI;EACJ,IAAIA,QAAAA,KAAK,OAAO;EAChB,OAAO;EACP,OAAO;EACP,OAAOA,QAAAA,KAAK,SAASA,QAAAA,KAAK,QAAQ,KAAK,CAAC;EACxC,OAAOA,QAAAA,KAAK,SAASA,QAAAA,KAAK,QAAQ,IAAI,CAAC;CACzC,CAAC;CACDA,QAAAA,KAAK,OAAO;EAAE,GAAGA,QAAAA,KAAK,QAAQ,SAAS;EAAG,IAAI;CAAG,CAAC;CAClDA,QAAAA,KAAK,OAAO;EAAE,GAAGA,QAAAA,KAAK,QAAQ,MAAM;EAAG,IAAI;EAAI,MAAM;EAAI,QAAQ;EAAG,MAAMA,QAAAA,KAAK,SAAS,IAAI;CAAE,CAAC;CAC/FA,QAAAA,KAAK,OAAO;EAAE,GAAGA,QAAAA,KAAK,QAAQ,QAAQ;EAAG,IAAI;CAAG,CAAC;CACjDA,QAAAA,KAAK,OAAO;EAAE,GAAGA,QAAAA,KAAK,QAAQ,KAAK;EAAG,MAAM;CAAG,CAAC;CAChDA,QAAAA,KAAK,OAAO;EAAE,GAAGA,QAAAA,KAAK,QAAQ,OAAO;EAAG,MAAM;CAAG,CAAC;CAClDA,QAAAA,KAAK,OAAO;EAAE,GAAGA,QAAAA,KAAK,QAAQ,UAAU;EAAG,QAAQA,QAAAA,KAAK,OAAO;CAAE,CAAC;CAClE;CACA;CACA;AACF,CAAC;;AAGD,MAAa,yBAAyBA,QAAAA,KAAK,MAAM;CAC/C,MAAMA,QAAAA,KAAK,OAAO,CAAC;CACnB;CACAA,QAAAA,KAAK,OAAO;EACV,GAAGA,QAAAA,KAAK,QAAQ,OAAO;EACvB,IAAI;EACJ,SAASA,QAAAA,KAAK,SAASA,QAAAA,KAAK,OAAO,CAAC;EACpC,SAASA,QAAAA,KAAK,MAAMA,QAAAA,KAAK,OAAO,CAAC;EACjC,UAAUA,QAAAA,KAAK,OAAO;EACtB,OAAOA,QAAAA,KAAK,MAAM,CAAC;CACrB,CAAC;CACDA,QAAAA,KAAK,OAAO;EAAE,GAAGA,QAAAA,KAAK,QAAQ,MAAM;EAAG,IAAI;EAAI,OAAO;CAAU,CAAC;CACjEA,QAAAA,KAAK,OAAO;EAAE,GAAGA,QAAAA,KAAK,QAAQ,QAAQ;EAAG,IAAI;EAAI,OAAOA,QAAAA,KAAK,SAAS,IAAI;EAAG,OAAOA,QAAAA,KAAK,SAAS,SAAS;CAAE,CAAC;CAC9GA,QAAAA,KAAK,OAAO;EACV,GAAGA,QAAAA,KAAK,QAAQ,OAAO;EACvB,MAAM;EACN,GAAG;EACH,IAAIA,QAAAA,KAAK,MAAM;GAACA,QAAAA,KAAK,QAAQ,MAAM;GAAGA,QAAAA,KAAK,QAAQ,OAAO;GAAGA,QAAAA,KAAK,QAAQ,KAAK;GAAGA,QAAAA,KAAK,QAAQ,OAAO;EAAC,CAAC;EACxG,OAAOA,QAAAA,KAAK,SAAS,IAAI;EACzB,KAAKA,QAAAA,KAAK,SAASA,QAAAA,KAAK,MAAM,iBAAiB,CAAC;EAChD,OAAOA,QAAAA,KAAK,SAAS,SAAS;CAChC,CAAC;CACD;CACA;CACA;AACF,CAAC;AAED,MAAa,2BAA+C;CAC1D;EACE,IAAI;EACJ,OAAO;EACP,SAAS;EACT,QAAQ;EACR,WAAW;EACX,MAAM;EACN,OAAO;EACP,aAAa,SAAS,mBAAmB;CAC3C;CACA;EACE,IAAI;EACJ,OAAO;EACP,SAAS;EACT,QAAQ;EACR,WAAW;EACX,MAAM;EACN,OAAO;EACP,aAAa;CACf;CACA;EACE,IAAI;EACJ,OAAO;EACP,SAAS;EACT,QAAQ;EACR,WAAW;EACX,MAAM;EACN,OAAO;EACP,QAAQ;EACR,QAAQ;EACR,aAAa;CACf;AACF;;;AChJA,MAAa,qBAAqB,kBAAkB;CAClD,SAAS;CACT,SAAS;EACP,gBAAgB;EAChB,mBAAmB;EACnB,oBAAoB;CACtB;CACA,WAAW;EAAE,OAAO;EAAoB,QAAQ;CAAI;CACpD,MAAM;EACJ,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;CACL;CACA,SAAS,CAAC,GAAG,wBAAwB,GAAG,wBAAwB;CAChE,SAAS;EACP;EACA;EACA;CACF;AACF,CAAC"}
|