@agimon-ai/doompi-core 0.0.1-alpha.112 → 0.0.1-alpha.114
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.mjs.map +1 -1
- package/dist/headless.cjs +1 -0
- package/dist/headless.d.mts +2 -2
- package/dist/headless.mjs +2 -2
- package/dist/headlessSessionHost.d.mts +1 -1
- package/dist/src/schemas/headless.cjs +7 -0
- package/dist/src/schemas/headless.cjs.map +1 -1
- package/dist/src/schemas/headless.d.mts +7 -0
- package/dist/src/schemas/headless.d.mts.map +1 -1
- package/dist/src/schemas/headless.mjs +7 -1
- package/dist/src/schemas/headless.mjs.map +1 -1
- package/dist/src/schemas/pluginProtocol.cjs.map +1 -1
- package/dist/src/schemas/pluginProtocol.d.mts +2 -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 +4 -1
- package/dist/src/server/directHarnessRuntime.cjs.map +1 -1
- package/dist/src/server/directHarnessRuntime.mjs +4 -1
- package/dist/src/server/directHarnessRuntime.mjs.map +1 -1
- package/dist/src/server/headlessProtocol.cjs +6 -1
- package/dist/src/server/headlessProtocol.cjs.map +1 -1
- package/dist/src/server/headlessProtocol.mjs +6 -1
- package/dist/src/server/headlessProtocol.mjs.map +1 -1
- package/dist/src/services/rpcTranscript/index.cjs +4 -2
- package/dist/src/services/rpcTranscript/index.cjs.map +1 -1
- package/dist/src/services/rpcTranscript/index.mjs +4 -2
- package/dist/src/services/rpcTranscript/index.mjs.map +1 -1
- package/dist/src/systems/main/adapters/headlessHost.cjs +15 -3
- package/dist/src/systems/main/adapters/headlessHost.cjs.map +1 -1
- package/dist/src/systems/main/adapters/headlessHost.d.mts +1 -0
- package/dist/src/systems/main/adapters/headlessHost.d.mts.map +1 -1
- package/dist/src/systems/main/adapters/headlessHost.mjs +16 -4
- package/dist/src/systems/main/adapters/headlessHost.mjs.map +1 -1
- package/dist/src/systems/main/adapters/headlessSessionHost.cjs +30 -6
- package/dist/src/systems/main/adapters/headlessSessionHost.cjs.map +1 -1
- package/dist/src/systems/main/adapters/headlessSessionHost.d.mts.map +1 -1
- package/dist/src/systems/main/adapters/headlessSessionHost.mjs +31 -7
- package/dist/src/systems/main/adapters/headlessSessionHost.mjs.map +1 -1
- package/dist/src/systems/main/types/headlessHost.d.mts +2 -1
- package/dist/src/systems/main/types/headlessHost.d.mts.map +1 -1
- package/dist/src/testing/pi/testHost.cjs +1 -0
- package/dist/src/testing/pi/testHost.cjs.map +1 -1
- package/dist/src/testing/pi/testHost.mjs +1 -0
- package/dist/src/testing/pi/testHost.mjs.map +1 -1
- package/dist/src/types/server/sessionToolSurface.d.mts +1 -1
- package/dist/src/web/types/webPlugin.d.mts +3 -2
- package/dist/src/web/types/webPlugin.d.mts.map +1 -1
- package/package.json +14 -14
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiContracts.cjs","names":["Type","Check","Text","Type","Optional","Strings","Flag","NumberValue","Json","Text","Type","NumberValue","Optional","Flag","defineService","Type","Json","Type","defineService","Type","PROTOCOL_VERSION","PROTOCOL_VERSION"],"sources":["../src/schemas/apiContracts.ts","../src/services/apiContracts/index.ts","../src/constants/contextApi.ts","../src/schemas/httpApiContracts.ts","../src/schemas/remoteApiContracts.ts","../src/schemas/sessionProtocol.ts","../src/schemas/sessionApiContracts.ts","../src/schemas/pluginProtocol.ts","../src/schemas/transportApiContracts.ts","../src/schemas/builtinApiContracts.ts"],"sourcesContent":["import { type Static, Type } from 'typebox';\nimport { Check } from 'typebox/value';\n\nimport type { DoomApiScope } from './packageApi';\nimport type { DoomServerBundleOwner } from './serverBundle';\n\nexport const DOOM_API_CONTRACT_VERSION = 1;\nexport const DOOM_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 DoomApiContractSchema = Type.Object({\n version: Type.Literal(DOOM_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 DoomApiContract = Static<typeof DoomApiContractSchema>;\nexport type DoomHttpContract = DoomApiContract['http'][number];\nexport type DoomSocketContract = DoomApiContract['sockets'][number];\n\nexport function defineApiContract(contract: DoomApiContract): DoomApiContract {\n return contract;\n}\n\nexport function parseApiContract(value: unknown): DoomApiContract {\n if (!Check(DoomApiContractSchema, value)) throw new Error('Invalid DoomPi API contract');\n const contract = value as DoomApiContract;\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 DoomPackageContract {\n packageName: string;\n packageVersion: string;\n scopes: readonly DoomApiScope[];\n owners: readonly DoomServerBundleOwner[];\n contract?: DoomApiContract;\n problem?: string;\n /** Generation-relative compiler output, never imported by the export command. */\n module?: string;\n}\n\nexport interface DoomCompiledContracts {\n version: typeof DOOM_API_CONTRACT_VERSION;\n generation: string;\n fingerprint: string;\n packages: DoomPackageContract[];\n}\n\nexport function parseCompiledContracts(value: unknown): DoomCompiledContracts {\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(DoomApiContractSchema),\n problem: Type.Optional(Named),\n module: Type.Optional(Type.String({ pattern: '^\\\\./[^\\\\\\\\%?#]+$' })),\n });\n const CompiledSchema = Type.Object({\n version: Type.Literal(DOOM_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 DoomCompiledContracts;\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 DoomCompiledContracts } from '../../schemas/apiContracts';\nimport type { DoomApiScope } from '../../schemas/packageApi';\n\nexport interface ApiContractSelection {\n scope: DoomApiScope;\n majorMode: string;\n activeLayers: readonly string[];\n compiled: DoomCompiledContracts;\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: DoomApiScope;\n majorMode: string;\n activeLayers: string[];\n generation: string;\n fingerprint: string;\n }[];\n packages: { name: string; version: string; scope: DoomApiScope }[];\n gaps: { packageName: string; scope: DoomApiScope; 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: DoomApiScope): 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-doompi': {\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-doompi': {\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: 'DoomPi 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-doompi-token' },\n device: {\n type: 'apiKey',\n in: 'cookie',\n name: '__Host-doompi_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 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 = 'doom-context-tool-warnings';\n","import { Type, type TSchema } from 'typebox';\n\nimport { API_BASE_PATH, ITEM_ROUTE } from '../constants/contextApi';\nimport type { DoomHttpContract } 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): DoomHttpContract['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 entryPath: Text,\n stylePaths: Strings,\n channels: Strings,\n});\nexport const SessionSummarySchema = Type.Object({\n id: Text,\n workspaceId: Optional(Text),\n webComposition: Optional(WebCompositionSchema),\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 /** 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 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 /** Present and true for a recorded session the server has not reopened yet. */\n dormant: Optional(Flag),\n});\nexport const HubSnapshotFrameSchema = Type.Object({\n type: Type.Literal('sessions_snapshot'),\n sessions: Type.Array(SessionSummarySchema),\n});\nexport const HubUpsertFrameSchema = Type.Object({\n type: Type.Literal('session_upsert'),\n session: SessionSummarySchema,\n});\nexport const HubRemovedFrameSchema = Type.Object({ type: Type.Literal('session_removed'), sessionId: Text });\nconst Workspace = Type.Object({ id: Text, root: Text, name: Optional(Text), available: Optional(Flag) });\nexport const WorkspaceSnapshotFrameSchema = Type.Object({\n type: Type.Literal('workspaces_snapshot'),\n workspaces: Type.Array(Workspace),\n});\nexport const WorkspaceUpsertFrameSchema = Type.Object({\n type: Type.Literal('workspace_upsert'),\n workspace: Workspace,\n});\nexport const WorkspaceRemovedFrameSchema = Type.Object({\n type: Type.Literal('workspace_removed'),\n workspaceId: Text,\n});\nconst SavedSession = Type.Object({\n id: Text,\n name: Optional(Text),\n firstMessage: Text,\n createdAt: Text,\n updatedAt: Text,\n messageCount: NumberValue,\n});\nconst query = (\n name: string,\n schema: TSchema = Text,\n required = false,\n): NonNullable<DoomHttpContract['parameters']>[number] => ({ name, in: 'query', required, schema });\nconst body = (schema: TSchema): NonNullable<DoomHttpContract['body']> => ({\n contentType: 'application/json',\n required: true,\n schema,\n});\nconst host = (\n id: string,\n path: string,\n method: DoomHttpContract['method'],\n result: TSchema,\n extra: Partial<DoomHttpContract> = {},\n): DoomHttpContract => ({\n id,\n path,\n method,\n scope: 'global',\n authentication: 'owner',\n description: id,\n responses: jsonApiResponses(result),\n ...extra,\n});\nconst Binary = Type.String({ contentEncoding: 'binary' });\nexport const headlessHttpContracts: DoomHttpContract[] = [\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 }),\n { maxItems: 10 },\n ),\n }),\n ),\n }),\n host(\n 'compositions',\n '/api/compositions',\n 'GET',\n Type.Object({\n global: Optional(WebCompositionSchema),\n publicKey: Optional(Text),\n shell: Optional(Type.Object({ publicKey: Text, revision: NumberValue })),\n workspaces: Type.Array(Type.Object({ id: Text, root: Text, webComposition: Optional(WebCompositionSchema) })),\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 '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('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(\n 'sessions.channels',\n '/api/workspaces/{workspaceId}/sessions/{sessionId}/channels',\n 'GET',\n Type.Object({ channels: Type.Array(Type.Object({ type: Text, sessionId: Text, payload: Json })) }),\n ),\n host(\n 'sessions.channel.send',\n '/api/workspaces/{workspaceId}/sessions/{sessionId}/channel/{frameType}',\n 'POST',\n ApiOkSchema,\n {\n body: body(Json),\n responses: jsonApiResponses(ApiOkSchema, 202),\n description: 'Deliver a payload to the selected channel contract identified by frameType.',\n },\n ),\n host('workspaces.list', '/api/workspaces', 'GET', Type.Object({ workspaces: Type.Array(Workspace) })),\n host('workspaces.admit', '/api/workspaces', 'POST', Type.Object({ workspace: Workspace }), {\n body: body(Type.Object({ root: Optional(Text), name: Optional(Text) })),\n responses: jsonApiResponses(Type.Object({ workspace: Workspace }), 201),\n }),\n host('workspaces.get', '/api/workspaces/{workspaceId}', 'GET', Type.Object({ workspace: Workspace })),\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('workspaces.remove', '/api/workspaces/{workspaceId}', 'DELETE', ApiOkSchema),\n host('events', '/api/events', 'GET', Text, {\n responses: {\n '200': {\n description:\n 'SSE session and workspace snapshots, membership changes, and selected channel frames. Selected extension channel payloads are defined by the corresponding AsyncAPI channel operations.',\n events: {\n sessions_snapshot: HubSnapshotFrameSchema,\n session_upsert: HubUpsertFrameSchema,\n session_removed: HubRemovedFrameSchema,\n workspaces_snapshot: WorkspaceSnapshotFrameSchema,\n workspace_upsert: WorkspaceUpsertFrameSchema,\n workspace_removed: WorkspaceRemovedFrameSchema,\n },\n contentType: 'text/event-stream',\n schema: Text,\n },\n '401': { description: 'Authentication required', schema: ApiErrorSchema },\n },\n }),\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: DoomHttpContract[] = [\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: 'doompi' }));\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]);\nexport const sessionHttpContracts: DoomHttpContract[] = [\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 { DoomHttpContract } 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 sandbox: Type.Object({ enabled: Flag, workspaces: Type.Array(Text) }),\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 settings: Settings,\n});\nconst StateResponse = Type.Object({ state: State, handingOver: Optional(Flag) });\nconst Trust = Type.Object({ publicKey: Text, fingerprint: Text, revision: NumberValue });\nconst Begun = Type.Object({ ceremonyId: Text, options: JsonObject });\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: DoomHttpContract['method'],\n result: TSchema,\n input?: TSchema,\n extra: Partial<DoomHttpContract> = {},\n): DoomHttpContract => ({\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: DoomHttpContract[] = [\n route('state', '', 'GET', StateResponse),\n route('enable', '/enable', 'POST', StateResponse, undefined, {\n responses: {\n ...jsonApiResponses(StateResponse),\n '202': { description: 'Container handover started', schema: StateResponse },\n },\n }),\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', Begun, Type.Object({ action: Text }), { authentication: 'device' }),\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: DoomHttpContract[] = [\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-doompi-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: DoomHttpContract[] = [\n ...['/bundle-manifest.json', '/api/web-plugins/{id}/{revision}/manifest'].flatMap((path) =>\n (['GET', 'HEAD'] as const).map((method): DoomHttpContract => ({\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): DoomHttpContract => ({\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 { defineService, type Context, type ReplicatedState } from '@earendil-works/chord';\n\nimport type { DoomSessionUpdateEvent } from './sessionUpdates';\n\nexport const DOOM_SESSION_SERVICE_ID = 'doompi.session.v2';\nexport const DOOM_SESSION_MANAGEMENT_SERVICE_ID = 'doompi.session-management.v1';\nexport const DOOM_COCKPIT_SERVER_ID = '646f6f6d-7069-4000-8000-000000000001';\n\nexport type JsonValue = null | boolean | number | string | JsonValue[] | { [key: string]: JsonValue };\nexport type ThinkingLevel = 'off' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' | 'max';\nexport type SessionPhase = 'idle' | 'turn' | 'compaction' | 'retry';\n\n/** Native execution ownership plus DoomPi's durable pending-input policy. */\nexport interface SessionLifecycle {\n revision: number;\n operation: { id: string; kind: 'run' | 'compaction' | 'navigation'; status: 'open' | 'aborting' } | null;\n paused: boolean;\n queue: Array<{\n id: string;\n text: string;\n images?: ImageContentPart[];\n delivery: 'steer' | 'followUp' | 'nextRun';\n scheduling: 'automatic' | 'held';\n disposition: 'pending' | 'handoff' | 'uncertain';\n }>;\n}\n\nexport interface ModelRef {\n provider: string;\n id: string;\n}\n\nexport interface TextContentPart {\n type: 'text';\n text: string;\n}\n\nexport interface ImageContentPart {\n type: 'image';\n data: string;\n mimeType: string;\n}\n\nexport interface ThinkingContentPart {\n type: 'thinking';\n thinking: string;\n redacted?: true;\n}\n\nexport interface ToolCallContentPart {\n type: 'toolCall';\n toolCallId: string;\n toolName: string;\n input: JsonValue;\n}\n\nexport interface UserTranscriptItem {\n id: string;\n role: 'user';\n content: Array<TextContentPart | ImageContentPart>;\n timestamp: number;\n}\n\nexport interface AssistantTranscriptItem {\n id: string;\n role: 'assistant';\n content: Array<TextContentPart | ThinkingContentPart | ToolCallContentPart>;\n model: ModelRef;\n status: 'streaming' | 'complete' | 'aborted' | 'error';\n stopReason?: 'stop' | 'length' | 'toolUse' | 'aborted' | 'error';\n errorMessage?: string;\n timestamp: number;\n}\n\nexport interface ToolTranscriptItem {\n id: string;\n role: 'tool';\n toolCallId: string;\n toolName: string;\n input: JsonValue;\n content: Array<TextContentPart | ImageContentPart>;\n details?: JsonValue;\n status: 'running' | 'complete' | 'error';\n isError: boolean;\n timestamp: number;\n}\n\nexport type TranscriptItem = UserTranscriptItem | AssistantTranscriptItem | ToolTranscriptItem;\n\nexport type TranscriptProgress =\n | { type: 'item_started'; item: TranscriptItem }\n | { type: 'item_updated'; item: TranscriptItem }\n | { type: 'item_finished'; item: TranscriptItem };\n\nexport interface SessionSnapshot {\n id: string;\n cwd: string;\n name?: string;\n createdAt: number;\n updatedAt: number;\n phase: SessionPhase;\n model: ModelRef;\n thinkingLevel: ThinkingLevel;\n fastMode: boolean;\n attached: boolean;\n locked: boolean;\n revision: number;\n transcript: TranscriptItem[];\n queuedSteer: UserTranscriptItem[];\n queuedSteerCount: number;\n /** Authoritative execution and queue state, independent of transcript replay. */\n lifecycle?: SessionLifecycle;\n}\n\nexport interface ProtocolEvent {\n sequence: number;\n frame: { type: string; [key: string]: JsonValue };\n}\n\nexport interface SessionPresentation {\n revision: number;\n dropped: number;\n /** A branch replacement invalidates earlier presentation state, even without ring overflow. */\n resetRevision?: number;\n events: ProtocolEvent[];\n projections: ProtocolEvent[];\n}\n\nexport interface HubService {\n readonly state: ReplicatedState<{ events: ProtocolEvent[] }>;\n send(frame: { type: string; [key: string]: JsonValue }, context: Context): Promise<void>;\n}\n\nexport const DoomHubService = defineService<HubService>('doompi.hub.v1');\n\nexport interface SessionServiceState {\n snapshot: Omit<SessionSnapshot, 'transcript'>;\n progress: TranscriptProgress | null;\n /** ACP v2-shaped agent events, replayed in sequence across fresh bindings. */\n updates?: DoomSessionUpdateEvent[];\n presentation?: SessionPresentation;\n /** Current concurrent drafts/tools, so a fresh attachment does not depend on missed progress events. */\n inFlight?: TranscriptItem[];\n}\n\nexport interface TranscriptPageRequest {\n cursor?: string;\n direction?: 'older' | 'newer';\n limit?: number;\n threadId?: string;\n}\n\nexport interface TranscriptPage {\n entries: JsonValue[];\n startCursor: string | null;\n endCursor: string | null;\n olderCursor: string | null;\n newerCursor: string | null;\n generation: number;\n revision: number;\n /** Profile and other context preceding this page. */\n context: JsonValue[];\n /** Current drafts are separate from committed history. */\n drafts: TranscriptItem[];\n}\n\nexport interface SessionMessageArgs {\n text: string;\n images?: ImageContentPart[];\n}\n\nexport interface PromptArgs extends SessionMessageArgs {\n /** Interactive clients acknowledge preflight without owning the supervised turn's lifetime. */\n waitFor?: 'accepted' | 'settled';\n}\nexport type SteerArgs = SessionMessageArgs;\nexport type FollowUpArgs = SessionMessageArgs;\nexport interface QueuedItemArgs {\n id: string;\n}\nexport interface PromoteQueuedArgs extends QueuedItemArgs {\n operationId?: string;\n}\n\nexport interface ClearQueueResult {\n steering: string[];\n followUp: string[];\n}\n\nexport interface RewindArgs {\n itemId: string;\n summarize?: boolean;\n customInstructions?: string;\n replaceInstructions?: boolean;\n label?: string;\n}\n\nexport interface SessionUsage {\n input: number;\n output: number;\n cacheRead: number;\n cacheWrite: number;\n total: number;\n}\n\nexport interface RewindSummaryEntry {\n id: string;\n parentId: string | null;\n timestamp: string;\n fromId: string;\n summary: string;\n details?: JsonValue;\n usage?: SessionUsage;\n fromHook?: boolean;\n}\n\nexport interface RewindResult {\n editorText?: string;\n cancelled: boolean;\n aborted?: boolean;\n summaryEntry?: RewindSummaryEntry;\n}\n\nexport type ExtensionUiResponse =\n | { id: string; value: string }\n | { id: string; confirmed: boolean }\n | { id: string; cancelled: true };\n\nexport interface SessionStateInfo {\n model?: ModelRef;\n thinkingLevel: ThinkingLevel;\n fastMode: boolean;\n isStreaming: boolean;\n isCompacting: boolean;\n steeringMode: 'all' | 'one-at-a-time';\n followUpMode: 'all' | 'one-at-a-time';\n sessionFile?: string;\n sessionId: string;\n sessionName?: string;\n autoCompactionEnabled: boolean;\n messageCount: number;\n pendingMessageCount: number;\n operationId?: string;\n executionStatus?: 'open' | 'aborting';\n queuePaused?: boolean;\n queueRevision?: number;\n}\n\nexport interface SessionStats {\n sessionFile?: string;\n sessionId: string;\n totalMessages: number;\n tokens: SessionUsage;\n cost: number;\n contextUsage?: {\n tokens: number | null;\n contextWindow: number;\n percent: number | null;\n };\n}\n\nexport interface SessionCommandSourceInfo {\n path: string;\n source: string;\n scope: 'user' | 'project' | 'temporary';\n origin: 'package' | 'top-level';\n baseDir?: string;\n}\n\nexport interface SessionCommand {\n name: string;\n description?: string;\n source: 'extension' | 'prompt' | 'skill';\n sourceInfo?: SessionCommandSourceInfo;\n}\n\nexport interface SessionService {\n readonly state: ReplicatedState<SessionServiceState>;\n readTranscriptPage(args: TranscriptPageRequest, context: Context): Promise<TranscriptPage>;\n prompt(text: string, context: Context): Promise<void>;\n prompt(args: PromptArgs, context: Context): Promise<void>;\n steer(text: string, context: Context): Promise<void>;\n steer(args: SteerArgs, context: Context): Promise<void>;\n abort(context: Context): Promise<void>;\n abortOperation(args: { operationId: string }, context: Context): Promise<void>;\n setModel(model: ModelRef, context: Context): Promise<void>;\n setThinking(thinkingLevel: ThinkingLevel, context: Context): Promise<void>;\n setFastMode(enabled: boolean, context: Context): Promise<void>;\n followUp(args: FollowUpArgs, context: Context): Promise<void>;\n enqueueAutomatic(args: FollowUpArgs, context: Context): Promise<{ id: string }>;\n removeQueued(\n args: QueuedItemArgs,\n context: Context,\n ): Promise<'removed' | 'in_flight' | 'already_consumed' | 'not_found'>;\n promoteQueued(\n args: PromoteQueuedArgs,\n context: Context,\n ): Promise<'promoted' | 'in_flight' | 'target_changed' | 'not_found'>;\n resumeQueue(context: Context): Promise<void>;\n clearQueue(context: Context): Promise<ClearQueueResult>;\n rewind(args: RewindArgs, context: Context): Promise<RewindResult>;\n extensionUiResponse(response: ExtensionUiResponse, context: Context): Promise<void>;\n getState(context: Context): Promise<SessionStateInfo>;\n getSessionStats(context: Context): Promise<SessionStats>;\n getCommands(context: Context): Promise<SessionCommand[]>;\n getAvailableModels(context: Context): Promise<ModelRef[]>;\n getAvailableThinkingLevels(context: Context): Promise<ThinkingLevel[]>;\n compact(args: { customInstructions?: string }, context: Context): Promise<JsonValue>;\n setName(name: string, context: Context): Promise<void>;\n}\n\nexport interface SessionManagementService {\n attach(sessionId: string, context: Context): Promise<void>;\n detach(context: Context): Promise<void>;\n}\n\nexport const DoomSessionService = defineService<SessionService>(DOOM_SESSION_SERVICE_ID);\nexport const DoomSessionManagementService = defineService<SessionManagementService>(DOOM_SESSION_MANAGEMENT_SERVICE_ID);\n","import { Type } from 'typebox';\n\nimport type { DoomSocketContract } from './apiContracts';\nimport { HubSnapshotFrameSchema, HubUpsertFrameSchema, HubRemovedFrameSchema } from './httpApiContracts';\nimport { DOOM_SESSION_MANAGEMENT_SERVICE_ID, DOOM_SESSION_SERVICE_ID, 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 Content = Type.Union([Image, TextPart]);\nconst User = Type.Object({\n id: Text,\n role: Type.Literal('user'),\n content: Type.Array(Content),\n timestamp: NumberValue,\n});\nconst Transcript = Type.Union([\n User,\n Type.Object({\n id: Text,\n role: Type.Literal('assistant'),\n content: Type.Array(\n Type.Union([\n TextPart,\n Type.Object({ type: Type.Literal('thinking'), thinking: Text, redacted: Optional(Type.Literal(true)) }),\n Type.Object({ type: Type.Literal('toolCall'), toolCallId: Text, toolName: Text, input: Json }),\n ]),\n ),\n model: Model,\n status: Type.Union([\n Type.Literal('streaming'),\n Type.Literal('complete'),\n Type.Literal('aborted'),\n Type.Literal('error'),\n ]),\n stopReason: Optional(\n Type.Union([\n Type.Literal('stop'),\n Type.Literal('length'),\n Type.Literal('toolUse'),\n Type.Literal('aborted'),\n Type.Literal('error'),\n ]),\n ),\n errorMessage: Optional(Text),\n timestamp: NumberValue,\n }),\n Type.Object({\n id: Text,\n role: Type.Literal('tool'),\n toolCallId: Text,\n toolName: Text,\n input: Json,\n content: Type.Array(Content),\n details: Optional(Json),\n status: Type.Union([Type.Literal('running'), Type.Literal('complete'), Type.Literal('error')]),\n isError: Flag,\n timestamp: NumberValue,\n }),\n]);\nconst Usage = Type.Object({\n input: NumberValue,\n output: NumberValue,\n cacheRead: NumberValue,\n cacheWrite: NumberValue,\n total: NumberValue,\n});\nconst Message = Type.Object({ text: Text, images: Optional(Type.Array(Image)) });\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'), Type.Literal('uncertain')]),\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 HubClientFrame = Type.Union([\n Type.Object({ type: Type.Union([Type.Literal('subscribe'), Type.Literal('unsubscribe')]), sessionId: Text }),\n Type.Object({\n type: Type.Union([Type.Literal('subscribe_thread'), Type.Literal('unsubscribe_thread')]),\n sessionId: Text,\n threadId: Text,\n }),\n Type.Object({\n type: Type.String({ not: { enum: ['subscribe', 'unsubscribe', 'subscribe_thread', 'unsubscribe_thread'] } }),\n sessionId: Text,\n payload: Json,\n }),\n]);\nconst HubServerFrame = Type.Union([\n HubSnapshotFrameSchema,\n HubUpsertFrameSchema,\n HubRemovedFrameSchema,\n Type.Object({ type: Type.Literal('thread_frame'), sessionId: Text, threadId: Text, frame: Frame }),\n Type.Object({ type: Type.Literal('thread_backlog'), sessionId: Text, threadId: Text, frames: Type.Array(Frame) }),\n Type.Object({\n type: Type.String({\n not: {\n enum: [\n 'sessions_snapshot',\n 'session_upsert',\n 'session_removed',\n 'workspaces_snapshot',\n 'workspace_upsert',\n 'workspace_removed',\n 'thread_frame',\n 'thread_backlog',\n ],\n },\n }),\n sessionId: Text,\n payload: Json,\n }),\n]);\nconst ProtocolEvent = Type.Object({ sequence: NumberValue, frame: Frame });\nconst Update = Type.Union([\n Type.Object({\n sessionUpdate: Type.Union([\n Type.Literal('user_message'),\n Type.Literal('agent_message'),\n Type.Literal('agent_thought'),\n ]),\n messageId: Text,\n content: Type.Array(Content),\n }),\n Type.Object({\n sessionUpdate: Type.Literal('tool_call_update'),\n toolCallId: Text,\n title: Optional(Text),\n kind: Optional(Text),\n status: Optional(\n Type.Union([\n Type.Literal('pending'),\n Type.Literal('in_progress'),\n Type.Literal('completed'),\n Type.Literal('failed'),\n Type.Literal('cancelled'),\n ]),\n ),\n content: Optional(Type.Array(Type.Object({ type: Type.Literal('content'), content: Content }))),\n rawInput: Optional(Json),\n rawOutput: Optional(Json),\n }),\n Type.Object({\n sessionUpdate: Type.Literal('state_update'),\n state: Type.Union([Type.Literal('running'), Type.Literal('idle'), Type.Literal('requires_action')]),\n stopReason: Optional(\n Type.Union([\n Type.Literal('end_turn'),\n Type.Literal('max_tokens'),\n Type.Literal('max_turn_requests'),\n Type.Literal('refusal'),\n Type.Literal('cancelled'),\n Type.Unsafe<`_${string}`>(Type.String({ pattern: '^_' })),\n ]),\n ),\n }),\n]);\nexport const SessionServiceStateSchema = Type.Object({\n snapshot: Type.Object({\n id: Text,\n cwd: Text,\n name: Optional(Text),\n createdAt: NumberValue,\n updatedAt: NumberValue,\n phase: Phase,\n model: Model,\n thinkingLevel: Thinking,\n fastMode: Flag,\n attached: Flag,\n locked: Flag,\n revision: NumberValue,\n queuedSteer: Type.Array(User),\n queuedSteerCount: NumberValue,\n lifecycle: Optional(Lifecycle),\n }),\n progress: Type.Union([\n Type.Null(),\n Type.Union([\n Type.Object({ type: Type.Literal('item_started'), item: Transcript }),\n Type.Object({ type: Type.Literal('item_updated'), item: Transcript }),\n Type.Object({ type: Type.Literal('item_finished'), item: Transcript }),\n ]),\n ]),\n updates: Optional(Type.Array(Type.Object({ sequence: NumberValue, update: Update }))),\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 inFlight: Optional(Type.Array(Transcript)),\n});\nexport const SessionMethodSchemas = {\n readTranscriptPage: {\n input: Type.Tuple([\n 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 }),\n ]),\n output: 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 drafts: Type.Array(Transcript),\n }),\n },\n prompt: {\n input: Type.Tuple([\n 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 },\n steer: { input: Type.Tuple([Type.Union([Text, Message])]) },\n abort: { input: Type.Tuple([]) },\n abortOperation: { input: Type.Tuple([Type.Object({ operationId: Text })]) },\n setModel: { input: Type.Tuple([Model]) },\n setThinking: { input: Type.Tuple([Thinking]) },\n setFastMode: { input: Type.Tuple([Flag]) },\n followUp: { input: Type.Tuple([Message]) },\n enqueueAutomatic: { input: Type.Tuple([Message]), output: Type.Object({ id: Text }) },\n removeQueued: {\n input: Type.Tuple([Type.Object({ id: Text })]),\n output: 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 input: Type.Tuple([Type.Object({ id: Text, operationId: Optional(Text) })]),\n output: 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: { input: Type.Tuple([]) },\n clearQueue: { input: Type.Tuple([]), output: Type.Object({ steering: Strings, followUp: Strings }) },\n rewind: {\n input: Type.Tuple([\n Type.Object({\n itemId: Text,\n summarize: Optional(Flag),\n customInstructions: Optional(Text),\n replaceInstructions: Optional(Flag),\n label: Optional(Text),\n }),\n ]),\n output: 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 input: Type.Tuple([\n 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 },\n getState: {\n input: Type.Tuple([]),\n output: Type.Object({\n model: Optional(Model),\n thinkingLevel: Thinking,\n fastMode: 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 sessionFile: Optional(Text),\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 input: Type.Tuple([]),\n output: Type.Object({\n sessionFile: Optional(Text),\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 input: Type.Tuple([]),\n output: 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: { input: Type.Tuple([]), output: Type.Array(Model) },\n getAvailableThinkingLevels: { input: Type.Tuple([]), output: Type.Array(Thinking) },\n compact: { input: Type.Tuple([Type.Object({ customInstructions: Optional(Text) })]), output: Json },\n setName: { input: Type.Tuple([Text]) },\n};\n\nconst ErrorSchema = Type.Object({ code: Text, message: Text });\nexport const sessionSocketContracts: DoomSocketContract[] = [\n ...Object.entries(SessionMethodSchemas).map(([member, definition]): DoomSocketContract => ({\n id: `session.${member}`,\n scope: 'session',\n service: DOOM_SESSION_SERVICE_ID,\n member,\n direction: 'client-to-server',\n kind: 'method',\n description: `Session ${member}. Arguments exclude the process-local Chord Context. A void result is omitted from the successful Pi response.`,\n ...definition,\n errors: ErrorSchema,\n })),\n {\n id: 'session.state',\n scope: 'session',\n service: DOOM_SESSION_SERVICE_ID,\n member: 'state',\n direction: 'server-to-client',\n kind: 'state',\n input: SessionServiceStateSchema,\n description: 'Reconstructed session state after Chord snapshot/delta decoding.',\n },\n {\n id: 'management.attach',\n scope: 'global',\n service: DOOM_SESSION_MANAGEMENT_SERVICE_ID,\n member: 'attach',\n direction: 'client-to-server',\n kind: 'method',\n input: Type.Tuple([Text]),\n errors: ErrorSchema,\n description: 'Attach this presentation to a session. Pi publishes an out-of-band attachment update.',\n },\n {\n id: 'management.detach',\n scope: 'global',\n service: DOOM_SESSION_MANAGEMENT_SERVICE_ID,\n member: 'detach',\n direction: 'client-to-server',\n kind: 'method',\n input: Type.Tuple([]),\n errors: ErrorSchema,\n description: 'Detach this presentation from its selected session.',\n },\n {\n id: 'hub.send',\n scope: 'global',\n service: 'doompi.hub.v1',\n member: 'send',\n direction: 'client-to-server',\n kind: 'method',\n input: Type.Tuple([HubClientFrame]),\n errors: ErrorSchema,\n description: 'Send a hub subscription, thread, history, or selected extension channel frame.',\n },\n {\n id: 'hub.state',\n scope: 'global',\n service: 'doompi.hub.v1',\n member: 'state',\n direction: 'server-to-client',\n kind: 'state',\n input: Type.Object({ events: Type.Array(Type.Object({ sequence: NumberValue, frame: HubServerFrame })) }),\n description:\n 'Reconstructed hub event replay window. Frame discriminators identify session and selected extension updates.',\n },\n];\n","import { defineService, type Context, type JsonValue } from '@earendil-works/chord';\nimport { type Static, type TSchema, Type } from 'typebox';\nimport { Check } from 'typebox/value';\n\nimport type { DoomApiMount, DoomApiScope } from './packageApi';\n\n/** The address is always exact. A workspace call never resolves to a global service. */\nexport const DoomPluginMountSchema = 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 DoomPluginCallSchema = Type.Object(\n {\n mount: DoomPluginMountSchema,\n service: Type.String({ minLength: 1 }),\n method: Type.String({ minLength: 1 }),\n input: Type.Unknown(),\n },\n { additionalProperties: false },\n);\n\nexport type DoomPluginCall = Static<typeof DoomPluginCallSchema>;\nexport type DoomPluginDirection = 'client-to-server' | 'server-to-client';\nexport interface DoomPluginCaller {\n /** Authenticated connection that owns client capabilities and leases. */\n connectionId?: string;\n}\n\n/** Chord method shared by all authenticated Doompi clients. */\nexport interface DoomPluginService {\n invoke(\n call: {\n mount: DoomApiMount;\n service: string;\n method: string;\n input: JsonValue;\n },\n context: Context,\n ): Promise<JsonValue>;\n}\n\nexport const DoomPluginService = defineService<DoomPluginService>('doompi.plugin.v1');\n\nexport interface DoomPluginMethod<TInput extends TSchema, TOutput extends TSchema> {\n readonly service: string;\n readonly method: string;\n readonly scope: DoomApiScope;\n readonly direction: DoomPluginDirection;\n readonly input: TInput;\n readonly output: TOutput;\n}\n\nexport function defineDoomPluginMethod<TInput extends TSchema, TOutput extends TSchema>(\n definition: DoomPluginMethod<TInput, TOutput>,\n): DoomPluginMethod<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 doomPluginMountKey(mount: DoomApiMount): string {\n if (!Check(DoomPluginMountSchema, 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 DoomPluginCallError 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 = 'DoomPluginCallError';\n }\n}\n\nexport interface DoomPluginRegistry {\n register<TInput extends TSchema, TOutput extends TSchema>(\n mount: DoomApiMount,\n definition: DoomPluginMethod<TInput, TOutput>,\n handler: (input: Static<TInput>, caller: DoomPluginCaller) => Static<TOutput> | Promise<Static<TOutput>>,\n ): () => void;\n invoke(call: unknown, direction: DoomPluginDirection, caller?: DoomPluginCaller): Promise<unknown>;\n dispose(): void;\n}\n\n/** Transport-neutral dispatch, shared by Chord server services and client capability hosts. */\nexport function createDoomPluginRegistry(): DoomPluginRegistry {\n const handlers = new Map<\n string,\n {\n definition: DoomPluginMethod<TSchema, TSchema>;\n handler: (input: never, caller: DoomPluginCaller) => unknown;\n }\n >();\n let disposed = false;\n const keyOf = (mount: DoomApiMount, service: string, method: string, direction: DoomPluginDirection): string =>\n `${doomPluginMountKey(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(DoomPluginCallSchema, value)) throw new DoomPluginCallError('INVALID_CALL', 'Invalid plugin call.');\n const call = value as DoomPluginCall;\n const entry = handlers.get(keyOf(call.mount, call.service, call.method, direction));\n if (!entry)\n throw new DoomPluginCallError(\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 DoomPluginCallError('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 DoomPluginCallError('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 invokeDoomPluginMethod<TInput extends TSchema, TOutput extends TSchema>(\n transport: (call: DoomPluginCall) => Promise<unknown>,\n mount: DoomApiMount,\n definition: DoomPluginMethod<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 DoomPluginCallError('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 DoomPluginCallError(\n 'INVALID_OUTPUT',\n `Invalid output from '${definition.service}.${definition.method}'.`,\n );\n return output;\n}\n","import { PROTOCOL_VERSION } from '@earendil-works/pi-protocol';\nimport { Type } from 'typebox';\n\nimport type { DoomSocketContract } from './apiContracts';\nimport { DoomPluginCallSchema } from './pluginProtocol';\n\nconst S = Type.String({ minLength: 1 });\nconst Json = Type.Unknown({\n description: 'JSON value; its application shape is defined by the addressed service member.',\n});\nconst E = Type.Object({ code: S, message: Type.String() }, { additionalProperties: false });\nconst ServerId = Type.String({ pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$' });\nconst Address = Type.Object({ key: S, generation: Type.Integer({ minimum: 1 }) }, { additionalProperties: false });\nconst Mode = Type.Union([Type.Literal('singleton'), Type.Literal('keyed')]);\nconst SessionTarget = Type.Object(\n { serverId: ServerId, sessionId: S, attachmentId: S },\n { additionalProperties: false },\n);\nconst Target = Type.Union([Type.Object({ serverId: ServerId }, { additionalProperties: false }), SessionTarget]);\nexport const ChordCallSchema = Type.Object(\n { serviceId: S, member: S, args: Type.Array(Json), instance: Type.Optional(Address) },\n { additionalProperties: false },\n);\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('#'), 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 Instance = Type.Object({\n instance: Type.Optional(Address),\n members: Type.Array(\n Type.Union([\n Type.Object({ name: S, kind: Type.Literal('method') }),\n Type.Object({\n name: S,\n kind: Type.Literal('state'),\n sequence: Type.Integer({ minimum: 0 }),\n ops: Type.Array(ChordWireOpSchema),\n }),\n ]),\n ),\n});\nexport const ChordSnapshotSchema = Type.Object({ serviceId: S, mode: Mode, instances: Type.Array(Instance) });\nexport const ChordUpdateSchema = Type.Union([\n Type.Object({\n type: Type.Literal('state'),\n instance: Type.Optional(Address),\n member: S,\n sequence: Type.Integer({ minimum: 1 }),\n ops: Type.Array(ChordWireOpSchema),\n }),\n Type.Object({ type: Type.Literal('unavailable') }),\n Type.Object({ type: Type.Literal('replaced'), snapshot: Instance }),\n Type.Object({ type: Type.Literal('spawned'), instance: Instance }),\n Type.Object({ type: Type.Literal('closed'), instance: Address }),\n]);\nexport const PiClientMessageSchema = Type.Union([\n Type.Object({ type: Type.Literal('hello'), version: Type.Integer({ minimum: 0 }) }),\n Type.Object({ type: Type.Literal('request'), id: S, target: Target, call: ChordCallSchema }),\n Type.Object({ type: Type.Literal('cancel'), id: S, target: Target }),\n]);\nexport const PiServerMessageSchema = Type.Union([\n Type.Object({ type: Type.Literal('hello'), version: Type.Literal(PROTOCOL_VERSION), serverId: ServerId }),\n Type.Object({ type: Type.Literal('hello_error'), error: E }),\n Type.Object({ type: Type.Literal('response'), id: S, ok: Type.Literal(true), result: Type.Optional(Json) }),\n Type.Object({ type: Type.Literal('response'), id: S, ok: Type.Literal(false), error: E }),\n Type.Object({ type: Type.Literal('service_update'), subscriptionId: S, update: ChordUpdateSchema }),\n Type.Object({ type: Type.Literal('attachment'), attachment: Type.Union([SessionTarget, Type.Null()]) }),\n]);\nexport const transportSocketContracts: DoomSocketContract[] = [\n {\n id: 'pi.client',\n scope: 'global',\n service: '$pi',\n member: 'client',\n direction: 'client-to-server',\n kind: 'channel',\n input: PiClientMessageSchema,\n description: `Pi protocol ${PROTOCOL_VERSION} decoded client envelope. Encode with the public Pi codec and framing functions, then seal for WebSocket delivery.`,\n },\n {\n id: 'pi.server',\n scope: 'global',\n service: '$pi',\n member: 'server',\n direction: 'server-to-client',\n kind: 'channel',\n input: PiServerMessageSchema,\n description: 'Pi decoded server envelope. Responses correlate by id; service updates correlate by subscriptionId.',\n },\n {\n id: 'chord.catalogue',\n scope: 'global',\n service: '$chord.service',\n member: 'catalogue',\n direction: 'client-to-server',\n kind: 'method',\n input: Type.Tuple([]),\n output: Type.Array(Type.Object({ serviceId: S, mode: Mode })),\n errors: E,\n description: 'Discover services at the selected Pi target.',\n },\n {\n id: 'chord.subscribe',\n scope: 'global',\n service: '$chord.service',\n member: 'subscribe',\n direction: 'client-to-server',\n kind: 'method',\n input: Type.Tuple([S, S, Mode]),\n output: ChordSnapshotSchema,\n errors: E,\n description:\n 'Subscribe with [subscriptionId, serviceId, mode]; subsequent Pi service_update messages contain Chord deltas.',\n },\n {\n id: 'chord.unsubscribe',\n scope: 'global',\n service: '$chord.service',\n member: 'unsubscribe',\n direction: 'client-to-server',\n kind: 'method',\n input: Type.Tuple([S]),\n errors: E,\n description: 'Unsubscribe by subscriptionId.',\n },\n {\n id: 'plugin.invoke',\n scope: 'global',\n service: 'doompi.plugin.v1',\n member: 'invoke',\n direction: 'client-to-server',\n kind: 'method',\n input: Type.Tuple([DoomPluginCallSchema]),\n output: Json,\n errors: E,\n description: 'Invoke the selected scoped plugin method. Its declaration supplies input and output shapes.',\n },\n];\n","import { PROTOCOL_VERSION } from '@earendil-works/pi-protocol';\n\nimport { 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 { 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: { pi: String(PROTOCOL_VERSION), chord: '1.0.0', 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","defineService","Type","Json","Type","defineService","Type","PROTOCOL_VERSION","PROTOCOL_VERSION"],"sources":["../src/schemas/apiContracts.ts","../src/services/apiContracts/index.ts","../src/constants/contextApi.ts","../src/schemas/httpApiContracts.ts","../src/schemas/remoteApiContracts.ts","../src/schemas/sessionProtocol.ts","../src/schemas/sessionApiContracts.ts","../src/schemas/pluginProtocol.ts","../src/schemas/transportApiContracts.ts","../src/schemas/builtinApiContracts.ts"],"sourcesContent":["import { type Static, Type } from 'typebox';\nimport { Check } from 'typebox/value';\n\nimport type { DoomApiScope } from './packageApi';\nimport type { DoomServerBundleOwner } from './serverBundle';\n\nexport const DOOM_API_CONTRACT_VERSION = 1;\nexport const DOOM_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 DoomApiContractSchema = Type.Object({\n version: Type.Literal(DOOM_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 DoomApiContract = Static<typeof DoomApiContractSchema>;\nexport type DoomHttpContract = DoomApiContract['http'][number];\nexport type DoomSocketContract = DoomApiContract['sockets'][number];\n\nexport function defineApiContract(contract: DoomApiContract): DoomApiContract {\n return contract;\n}\n\nexport function parseApiContract(value: unknown): DoomApiContract {\n if (!Check(DoomApiContractSchema, value)) throw new Error('Invalid DoomPi API contract');\n const contract = value as DoomApiContract;\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 DoomPackageContract {\n packageName: string;\n packageVersion: string;\n scopes: readonly DoomApiScope[];\n owners: readonly DoomServerBundleOwner[];\n contract?: DoomApiContract;\n problem?: string;\n /** Generation-relative compiler output, never imported by the export command. */\n module?: string;\n}\n\nexport interface DoomCompiledContracts {\n version: typeof DOOM_API_CONTRACT_VERSION;\n generation: string;\n fingerprint: string;\n packages: DoomPackageContract[];\n}\n\nexport function parseCompiledContracts(value: unknown): DoomCompiledContracts {\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(DoomApiContractSchema),\n problem: Type.Optional(Named),\n module: Type.Optional(Type.String({ pattern: '^\\\\./[^\\\\\\\\%?#]+$' })),\n });\n const CompiledSchema = Type.Object({\n version: Type.Literal(DOOM_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 DoomCompiledContracts;\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 DoomCompiledContracts } from '../../schemas/apiContracts';\nimport type { DoomApiScope } from '../../schemas/packageApi';\n\nexport interface ApiContractSelection {\n scope: DoomApiScope;\n majorMode: string;\n activeLayers: readonly string[];\n compiled: DoomCompiledContracts;\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: DoomApiScope;\n majorMode: string;\n activeLayers: string[];\n generation: string;\n fingerprint: string;\n }[];\n packages: { name: string; version: string; scope: DoomApiScope }[];\n gaps: { packageName: string; scope: DoomApiScope; 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: DoomApiScope): 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-doompi': {\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-doompi': {\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: 'DoomPi 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-doompi-token' },\n device: {\n type: 'apiKey',\n in: 'cookie',\n name: '__Host-doompi_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 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 = 'doom-context-tool-warnings';\n","import { Type, type TSchema } from 'typebox';\n\nimport { API_BASE_PATH, ITEM_ROUTE } from '../constants/contextApi';\nimport type { DoomHttpContract } 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): DoomHttpContract['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 entryPath: Text,\n stylePaths: Strings,\n channels: Strings,\n});\nexport const SessionSummarySchema = Type.Object({\n id: Text,\n workspaceId: Optional(Text),\n webComposition: Optional(WebCompositionSchema),\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 /** 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 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 /** Present and true for a recorded session the server has not reopened yet. */\n dormant: Optional(Flag),\n});\nexport const HubSnapshotFrameSchema = Type.Object({\n type: Type.Literal('sessions_snapshot'),\n sessions: Type.Array(SessionSummarySchema),\n});\nexport const HubUpsertFrameSchema = Type.Object({\n type: Type.Literal('session_upsert'),\n session: SessionSummarySchema,\n});\nexport const HubRemovedFrameSchema = Type.Object({ type: Type.Literal('session_removed'), sessionId: Text });\nconst Workspace = Type.Object({ id: Text, root: Text, name: Optional(Text), available: Optional(Flag) });\nexport const WorkspaceSnapshotFrameSchema = Type.Object({\n type: Type.Literal('workspaces_snapshot'),\n workspaces: Type.Array(Workspace),\n});\nexport const WorkspaceUpsertFrameSchema = Type.Object({\n type: Type.Literal('workspace_upsert'),\n workspace: Workspace,\n});\nexport const WorkspaceRemovedFrameSchema = Type.Object({\n type: Type.Literal('workspace_removed'),\n workspaceId: Text,\n});\nconst SavedSession = Type.Object({\n id: Text,\n name: Optional(Text),\n firstMessage: Text,\n createdAt: Text,\n updatedAt: Text,\n messageCount: NumberValue,\n});\nconst query = (\n name: string,\n schema: TSchema = Text,\n required = false,\n): NonNullable<DoomHttpContract['parameters']>[number] => ({ name, in: 'query', required, schema });\nconst body = (schema: TSchema): NonNullable<DoomHttpContract['body']> => ({\n contentType: 'application/json',\n required: true,\n schema,\n});\nconst host = (\n id: string,\n path: string,\n method: DoomHttpContract['method'],\n result: TSchema,\n extra: Partial<DoomHttpContract> = {},\n): DoomHttpContract => ({\n id,\n path,\n method,\n scope: 'global',\n authentication: 'owner',\n description: id,\n responses: jsonApiResponses(result),\n ...extra,\n});\nconst Binary = Type.String({ contentEncoding: 'binary' });\nexport const headlessHttpContracts: DoomHttpContract[] = [\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 }),\n { maxItems: 10 },\n ),\n }),\n ),\n }),\n host(\n 'compositions',\n '/api/compositions',\n 'GET',\n Type.Object({\n global: Optional(WebCompositionSchema),\n publicKey: Optional(Text),\n shell: Optional(Type.Object({ publicKey: Text, revision: NumberValue })),\n workspaces: Type.Array(Type.Object({ id: Text, root: Text, webComposition: Optional(WebCompositionSchema) })),\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 '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('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(\n 'sessions.channels',\n '/api/workspaces/{workspaceId}/sessions/{sessionId}/channels',\n 'GET',\n Type.Object({ channels: Type.Array(Type.Object({ type: Text, sessionId: Text, payload: Json })) }),\n ),\n host(\n 'sessions.channel.send',\n '/api/workspaces/{workspaceId}/sessions/{sessionId}/channel/{frameType}',\n 'POST',\n ApiOkSchema,\n {\n body: body(Json),\n responses: jsonApiResponses(ApiOkSchema, 202),\n description: 'Deliver a payload to the selected channel contract identified by frameType.',\n },\n ),\n host('workspaces.list', '/api/workspaces', 'GET', Type.Object({ workspaces: Type.Array(Workspace) })),\n host('workspaces.admit', '/api/workspaces', 'POST', Type.Object({ workspace: Workspace }), {\n body: body(Type.Object({ root: Optional(Text), name: Optional(Text) })),\n responses: jsonApiResponses(Type.Object({ workspace: Workspace }), 201),\n }),\n host('workspaces.get', '/api/workspaces/{workspaceId}', 'GET', Type.Object({ workspace: Workspace })),\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('workspaces.remove', '/api/workspaces/{workspaceId}', 'DELETE', ApiOkSchema),\n host('events', '/api/events', 'GET', Text, {\n responses: {\n '200': {\n description:\n 'SSE session and workspace snapshots, membership changes, and selected channel frames. Selected extension channel payloads are defined by the corresponding AsyncAPI channel operations.',\n events: {\n sessions_snapshot: HubSnapshotFrameSchema,\n session_upsert: HubUpsertFrameSchema,\n session_removed: HubRemovedFrameSchema,\n workspaces_snapshot: WorkspaceSnapshotFrameSchema,\n workspace_upsert: WorkspaceUpsertFrameSchema,\n workspace_removed: WorkspaceRemovedFrameSchema,\n },\n contentType: 'text/event-stream',\n schema: Text,\n },\n '401': { description: 'Authentication required', schema: ApiErrorSchema },\n },\n }),\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: DoomHttpContract[] = [\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: 'doompi' }));\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]);\nexport const sessionHttpContracts: DoomHttpContract[] = [\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 { DoomHttpContract } 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 sandbox: Type.Object({ enabled: Flag, workspaces: Type.Array(Text) }),\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 settings: Settings,\n});\nconst StateResponse = Type.Object({ state: State, handingOver: Optional(Flag) });\nconst Trust = Type.Object({ publicKey: Text, fingerprint: Text, revision: NumberValue });\nconst Begun = Type.Object({ ceremonyId: Text, options: JsonObject });\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: DoomHttpContract['method'],\n result: TSchema,\n input?: TSchema,\n extra: Partial<DoomHttpContract> = {},\n): DoomHttpContract => ({\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: DoomHttpContract[] = [\n route('state', '', 'GET', StateResponse),\n route('enable', '/enable', 'POST', StateResponse, undefined, {\n responses: {\n ...jsonApiResponses(StateResponse),\n '202': { description: 'Container handover started', schema: StateResponse },\n },\n }),\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', Begun, Type.Object({ action: Text }), { authentication: 'device' }),\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: DoomHttpContract[] = [\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-doompi-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: DoomHttpContract[] = [\n ...['/bundle-manifest.json', '/api/web-plugins/{id}/{revision}/manifest'].flatMap((path) =>\n (['GET', 'HEAD'] as const).map((method): DoomHttpContract => ({\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): DoomHttpContract => ({\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 { defineService, type Context, type ReplicatedState } from '@earendil-works/chord';\n\nimport type { DoomSessionUpdateEvent } from './sessionUpdates';\n\nexport const DOOM_SESSION_SERVICE_ID = 'doompi.session.v2';\nexport const DOOM_SESSION_MANAGEMENT_SERVICE_ID = 'doompi.session-management.v1';\nexport const DOOM_COCKPIT_SERVER_ID = '646f6f6d-7069-4000-8000-000000000001';\n\nexport type JsonValue = null | boolean | number | string | JsonValue[] | { [key: string]: JsonValue };\nexport type ThinkingLevel = 'off' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' | 'max';\nexport type SessionPhase = 'idle' | 'turn' | 'compaction' | 'retry';\n\n/** Native execution ownership plus DoomPi's durable pending-input policy. */\nexport interface SessionLifecycle {\n revision: number;\n operation: { id: string; kind: 'run' | 'compaction' | 'navigation'; status: 'open' | 'aborting' } | null;\n paused: boolean;\n queue: Array<{\n id: string;\n text: string;\n images?: ImageContentPart[];\n delivery: 'steer' | 'followUp' | 'nextRun';\n scheduling: 'automatic' | 'held';\n disposition: 'pending' | 'handoff' | 'uncertain';\n }>;\n}\n\nexport interface ModelRef {\n provider: string;\n id: string;\n}\n\nexport interface TextContentPart {\n type: 'text';\n text: string;\n}\n\nexport interface ImageContentPart {\n type: 'image';\n data: string;\n mimeType: string;\n}\n\nexport interface ThinkingContentPart {\n type: 'thinking';\n thinking: string;\n redacted?: true;\n}\n\nexport interface ToolCallContentPart {\n type: 'toolCall';\n toolCallId: string;\n toolName: string;\n input: JsonValue;\n}\n\nexport interface UserTranscriptItem {\n id: string;\n role: 'user';\n content: Array<TextContentPart | ImageContentPart>;\n timestamp: number;\n}\n\nexport interface AssistantTranscriptItem {\n id: string;\n role: 'assistant';\n content: Array<TextContentPart | ThinkingContentPart | ToolCallContentPart>;\n model: ModelRef;\n status: 'streaming' | 'complete' | 'aborted' | 'error';\n stopReason?: 'stop' | 'length' | 'toolUse' | 'aborted' | 'error';\n errorMessage?: string;\n timestamp: number;\n}\n\nexport interface ToolTranscriptItem {\n id: string;\n role: 'tool';\n toolCallId: string;\n toolName: string;\n input: JsonValue;\n content: Array<TextContentPart | ImageContentPart>;\n details?: JsonValue;\n status: 'running' | 'complete' | 'error';\n isError: boolean;\n timestamp: number;\n}\n\nexport type TranscriptItem = UserTranscriptItem | AssistantTranscriptItem | ToolTranscriptItem;\n\nexport type TranscriptProgress =\n | { type: 'item_started'; item: TranscriptItem }\n | { type: 'item_updated'; item: TranscriptItem }\n | { type: 'item_finished'; item: TranscriptItem };\n\nexport interface SessionSnapshot {\n id: string;\n cwd: string;\n name?: string;\n createdAt: number;\n updatedAt: number;\n phase: SessionPhase;\n model: ModelRef;\n thinkingLevel: ThinkingLevel;\n fastMode: boolean;\n attached: boolean;\n locked: boolean;\n revision: number;\n transcript: TranscriptItem[];\n queuedSteer: UserTranscriptItem[];\n queuedSteerCount: number;\n /** Authoritative execution and queue state, independent of transcript replay. */\n lifecycle?: SessionLifecycle;\n}\n\nexport interface ProtocolEvent {\n sequence: number;\n frame: { type: string; [key: string]: JsonValue };\n}\n\nexport interface SessionPresentation {\n revision: number;\n dropped: number;\n /** A branch replacement invalidates earlier presentation state, even without ring overflow. */\n resetRevision?: number;\n events: ProtocolEvent[];\n projections: ProtocolEvent[];\n}\n\nexport interface HubService {\n readonly state: ReplicatedState<{ events: ProtocolEvent[] }>;\n send(frame: { type: string; [key: string]: JsonValue }, context: Context): Promise<void>;\n}\n\nexport const DoomHubService = defineService<HubService>('doompi.hub.v1');\n\nexport interface SessionServiceState {\n snapshot: Omit<SessionSnapshot, 'transcript'>;\n progress: TranscriptProgress | null;\n /** ACP v2-shaped agent events, replayed in sequence across fresh bindings. */\n updates?: DoomSessionUpdateEvent[];\n presentation?: SessionPresentation;\n /** Current concurrent drafts/tools, so a fresh attachment does not depend on missed progress events. */\n inFlight?: TranscriptItem[];\n}\n\nexport interface TranscriptPageRequest {\n cursor?: string;\n direction?: 'older' | 'newer';\n limit?: number;\n threadId?: string;\n}\n\nexport interface TranscriptPage {\n entries: JsonValue[];\n startCursor: string | null;\n endCursor: string | null;\n olderCursor: string | null;\n newerCursor: string | null;\n generation: number;\n revision: number;\n /** Profile and other context preceding this page. */\n context: JsonValue[];\n /** Current drafts are separate from committed history. */\n drafts: TranscriptItem[];\n}\n\nexport interface SessionMessageArgs {\n text: string;\n images?: ImageContentPart[];\n}\n\nexport interface PromptArgs extends SessionMessageArgs {\n /** Interactive clients acknowledge preflight without owning the supervised turn's lifetime. */\n waitFor?: 'accepted' | 'settled';\n}\nexport type SteerArgs = SessionMessageArgs;\nexport type FollowUpArgs = SessionMessageArgs;\nexport interface QueuedItemArgs {\n id: string;\n}\nexport interface PromoteQueuedArgs extends QueuedItemArgs {\n operationId?: string;\n}\n\nexport interface ClearQueueResult {\n steering: string[];\n followUp: string[];\n}\n\nexport interface RewindArgs {\n itemId: string;\n summarize?: boolean;\n customInstructions?: string;\n replaceInstructions?: boolean;\n label?: string;\n}\n\nexport interface SessionUsage {\n input: number;\n output: number;\n cacheRead: number;\n cacheWrite: number;\n total: number;\n}\n\nexport interface RewindSummaryEntry {\n id: string;\n parentId: string | null;\n timestamp: string;\n fromId: string;\n summary: string;\n details?: JsonValue;\n usage?: SessionUsage;\n fromHook?: boolean;\n}\n\nexport interface RewindResult {\n editorText?: string;\n cancelled: boolean;\n aborted?: boolean;\n summaryEntry?: RewindSummaryEntry;\n}\n\nexport type ExtensionUiResponse =\n | { id: string; value: string }\n | { id: string; confirmed: boolean }\n | { id: string; cancelled: true };\n\nexport interface SessionStateInfo {\n model?: ModelRef;\n thinkingLevel: ThinkingLevel;\n fastMode: boolean;\n isStreaming: boolean;\n isCompacting: boolean;\n steeringMode: 'all' | 'one-at-a-time';\n followUpMode: 'all' | 'one-at-a-time';\n sessionFile?: string;\n sessionId: string;\n sessionName?: string;\n autoCompactionEnabled: boolean;\n messageCount: number;\n pendingMessageCount: number;\n operationId?: string;\n executionStatus?: 'open' | 'aborting';\n queuePaused?: boolean;\n queueRevision?: number;\n}\n\nexport interface SessionStats {\n sessionFile?: string;\n sessionId: string;\n totalMessages: number;\n tokens: SessionUsage;\n cost: number;\n contextUsage?: {\n tokens: number | null;\n contextWindow: number;\n percent: number | null;\n };\n}\n\nexport interface SessionCommandSourceInfo {\n path: string;\n source: string;\n scope: 'user' | 'project' | 'temporary';\n origin: 'package' | 'top-level';\n baseDir?: string;\n}\n\nexport interface SessionCommand {\n name: string;\n description?: string;\n source: 'extension' | 'prompt' | 'skill';\n sourceInfo?: SessionCommandSourceInfo;\n}\n\nexport interface SessionService {\n readonly state: ReplicatedState<SessionServiceState>;\n readTranscriptPage(args: TranscriptPageRequest, context: Context): Promise<TranscriptPage>;\n prompt(text: string, context: Context): Promise<void>;\n prompt(args: PromptArgs, context: Context): Promise<void>;\n steer(text: string, context: Context): Promise<void>;\n steer(args: SteerArgs, context: Context): Promise<void>;\n abort(context: Context): Promise<void>;\n abortOperation(args: { operationId: string }, context: Context): Promise<void>;\n setModel(model: ModelRef, context: Context): Promise<void>;\n setThinking(thinkingLevel: ThinkingLevel, context: Context): Promise<void>;\n setFastMode(enabled: boolean, context: Context): Promise<void>;\n followUp(args: FollowUpArgs, context: Context): Promise<void>;\n enqueueAutomatic(args: FollowUpArgs, context: Context): Promise<{ id: string }>;\n removeQueued(\n args: QueuedItemArgs,\n context: Context,\n ): Promise<'removed' | 'in_flight' | 'already_consumed' | 'not_found'>;\n promoteQueued(\n args: PromoteQueuedArgs,\n context: Context,\n ): Promise<'promoted' | 'in_flight' | 'target_changed' | 'not_found'>;\n resumeQueue(context: Context): Promise<void>;\n clearQueue(context: Context): Promise<ClearQueueResult>;\n rewind(args: RewindArgs, context: Context): Promise<RewindResult>;\n extensionUiResponse(response: ExtensionUiResponse, context: Context): Promise<void>;\n getState(context: Context): Promise<SessionStateInfo>;\n getSessionStats(context: Context): Promise<SessionStats>;\n getCommands(context: Context): Promise<SessionCommand[]>;\n getAvailableModels(context: Context): Promise<ModelRef[]>;\n getAvailableThinkingLevels(context: Context): Promise<ThinkingLevel[]>;\n compact(args: { customInstructions?: string }, context: Context): Promise<JsonValue>;\n setName(name: string, context: Context): Promise<void>;\n}\n\nexport interface SessionManagementService {\n attach(sessionId: string, context: Context): Promise<void>;\n detach(context: Context): Promise<void>;\n}\n\nexport const DoomSessionService = defineService<SessionService>(DOOM_SESSION_SERVICE_ID);\nexport const DoomSessionManagementService = defineService<SessionManagementService>(DOOM_SESSION_MANAGEMENT_SERVICE_ID);\n","import { Type } from 'typebox';\n\nimport type { DoomSocketContract } from './apiContracts';\nimport { HubSnapshotFrameSchema, HubUpsertFrameSchema, HubRemovedFrameSchema } from './httpApiContracts';\nimport { DOOM_SESSION_MANAGEMENT_SERVICE_ID, DOOM_SESSION_SERVICE_ID, 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 Content = Type.Union([Image, TextPart]);\nconst User = Type.Object({\n id: Text,\n role: Type.Literal('user'),\n content: Type.Array(Content),\n timestamp: NumberValue,\n});\nconst Transcript = Type.Union([\n User,\n Type.Object({\n id: Text,\n role: Type.Literal('assistant'),\n content: Type.Array(\n Type.Union([\n TextPart,\n Type.Object({ type: Type.Literal('thinking'), thinking: Text, redacted: Optional(Type.Literal(true)) }),\n Type.Object({ type: Type.Literal('toolCall'), toolCallId: Text, toolName: Text, input: Json }),\n ]),\n ),\n model: Model,\n status: Type.Union([\n Type.Literal('streaming'),\n Type.Literal('complete'),\n Type.Literal('aborted'),\n Type.Literal('error'),\n ]),\n stopReason: Optional(\n Type.Union([\n Type.Literal('stop'),\n Type.Literal('length'),\n Type.Literal('toolUse'),\n Type.Literal('aborted'),\n Type.Literal('error'),\n ]),\n ),\n errorMessage: Optional(Text),\n timestamp: NumberValue,\n }),\n Type.Object({\n id: Text,\n role: Type.Literal('tool'),\n toolCallId: Text,\n toolName: Text,\n input: Json,\n content: Type.Array(Content),\n details: Optional(Json),\n status: Type.Union([Type.Literal('running'), Type.Literal('complete'), Type.Literal('error')]),\n isError: Flag,\n timestamp: NumberValue,\n }),\n]);\nconst Usage = Type.Object({\n input: NumberValue,\n output: NumberValue,\n cacheRead: NumberValue,\n cacheWrite: NumberValue,\n total: NumberValue,\n});\nconst Message = Type.Object({ text: Text, images: Optional(Type.Array(Image)) });\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'), Type.Literal('uncertain')]),\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 HubClientFrame = Type.Union([\n Type.Object({ type: Type.Union([Type.Literal('subscribe'), Type.Literal('unsubscribe')]), sessionId: Text }),\n Type.Object({\n type: Type.Union([Type.Literal('subscribe_thread'), Type.Literal('unsubscribe_thread')]),\n sessionId: Text,\n threadId: Text,\n }),\n Type.Object({\n type: Type.String({ not: { enum: ['subscribe', 'unsubscribe', 'subscribe_thread', 'unsubscribe_thread'] } }),\n sessionId: Text,\n payload: Json,\n }),\n]);\nconst HubServerFrame = Type.Union([\n HubSnapshotFrameSchema,\n HubUpsertFrameSchema,\n HubRemovedFrameSchema,\n Type.Object({ type: Type.Literal('thread_frame'), sessionId: Text, threadId: Text, frame: Frame }),\n Type.Object({ type: Type.Literal('thread_backlog'), sessionId: Text, threadId: Text, frames: Type.Array(Frame) }),\n Type.Object({\n type: Type.String({\n not: {\n enum: [\n 'sessions_snapshot',\n 'session_upsert',\n 'session_removed',\n 'workspaces_snapshot',\n 'workspace_upsert',\n 'workspace_removed',\n 'thread_frame',\n 'thread_backlog',\n ],\n },\n }),\n sessionId: Text,\n payload: Json,\n }),\n]);\nconst ProtocolEvent = Type.Object({ sequence: NumberValue, frame: Frame });\nconst Update = Type.Union([\n Type.Object({\n sessionUpdate: Type.Union([\n Type.Literal('user_message'),\n Type.Literal('agent_message'),\n Type.Literal('agent_thought'),\n ]),\n messageId: Text,\n content: Type.Array(Content),\n }),\n Type.Object({\n sessionUpdate: Type.Literal('tool_call_update'),\n toolCallId: Text,\n title: Optional(Text),\n kind: Optional(Text),\n status: Optional(\n Type.Union([\n Type.Literal('pending'),\n Type.Literal('in_progress'),\n Type.Literal('completed'),\n Type.Literal('failed'),\n Type.Literal('cancelled'),\n ]),\n ),\n content: Optional(Type.Array(Type.Object({ type: Type.Literal('content'), content: Content }))),\n rawInput: Optional(Json),\n rawOutput: Optional(Json),\n }),\n Type.Object({\n sessionUpdate: Type.Literal('state_update'),\n state: Type.Union([Type.Literal('running'), Type.Literal('idle'), Type.Literal('requires_action')]),\n stopReason: Optional(\n Type.Union([\n Type.Literal('end_turn'),\n Type.Literal('max_tokens'),\n Type.Literal('max_turn_requests'),\n Type.Literal('refusal'),\n Type.Literal('cancelled'),\n Type.Unsafe<`_${string}`>(Type.String({ pattern: '^_' })),\n ]),\n ),\n }),\n]);\nexport const SessionServiceStateSchema = Type.Object({\n snapshot: Type.Object({\n id: Text,\n cwd: Text,\n name: Optional(Text),\n createdAt: NumberValue,\n updatedAt: NumberValue,\n phase: Phase,\n model: Model,\n thinkingLevel: Thinking,\n fastMode: Flag,\n attached: Flag,\n locked: Flag,\n revision: NumberValue,\n queuedSteer: Type.Array(User),\n queuedSteerCount: NumberValue,\n lifecycle: Optional(Lifecycle),\n }),\n progress: Type.Union([\n Type.Null(),\n Type.Union([\n Type.Object({ type: Type.Literal('item_started'), item: Transcript }),\n Type.Object({ type: Type.Literal('item_updated'), item: Transcript }),\n Type.Object({ type: Type.Literal('item_finished'), item: Transcript }),\n ]),\n ]),\n updates: Optional(Type.Array(Type.Object({ sequence: NumberValue, update: Update }))),\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 inFlight: Optional(Type.Array(Transcript)),\n});\nexport const SessionMethodSchemas = {\n readTranscriptPage: {\n input: Type.Tuple([\n 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 }),\n ]),\n output: 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 drafts: Type.Array(Transcript),\n }),\n },\n prompt: {\n input: Type.Tuple([\n 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 },\n steer: { input: Type.Tuple([Type.Union([Text, Message])]) },\n abort: { input: Type.Tuple([]) },\n abortOperation: { input: Type.Tuple([Type.Object({ operationId: Text })]) },\n setModel: { input: Type.Tuple([Model]) },\n setThinking: { input: Type.Tuple([Thinking]) },\n setFastMode: { input: Type.Tuple([Flag]) },\n followUp: { input: Type.Tuple([Message]) },\n enqueueAutomatic: { input: Type.Tuple([Message]), output: Type.Object({ id: Text }) },\n removeQueued: {\n input: Type.Tuple([Type.Object({ id: Text })]),\n output: 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 input: Type.Tuple([Type.Object({ id: Text, operationId: Optional(Text) })]),\n output: 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: { input: Type.Tuple([]) },\n clearQueue: { input: Type.Tuple([]), output: Type.Object({ steering: Strings, followUp: Strings }) },\n rewind: {\n input: Type.Tuple([\n Type.Object({\n itemId: Text,\n summarize: Optional(Flag),\n customInstructions: Optional(Text),\n replaceInstructions: Optional(Flag),\n label: Optional(Text),\n }),\n ]),\n output: 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 input: Type.Tuple([\n 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 },\n getState: {\n input: Type.Tuple([]),\n output: Type.Object({\n model: Optional(Model),\n thinkingLevel: Thinking,\n fastMode: 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 sessionFile: Optional(Text),\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 input: Type.Tuple([]),\n output: Type.Object({\n sessionFile: Optional(Text),\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 input: Type.Tuple([]),\n output: 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: { input: Type.Tuple([]), output: Type.Array(Model) },\n getAvailableThinkingLevels: { input: Type.Tuple([]), output: Type.Array(Thinking) },\n compact: { input: Type.Tuple([Type.Object({ customInstructions: Optional(Text) })]), output: Json },\n setName: { input: Type.Tuple([Text]) },\n};\n\nconst ErrorSchema = Type.Object({ code: Text, message: Text });\nexport const sessionSocketContracts: DoomSocketContract[] = [\n ...Object.entries(SessionMethodSchemas).map(([member, definition]): DoomSocketContract => ({\n id: `session.${member}`,\n scope: 'session',\n service: DOOM_SESSION_SERVICE_ID,\n member,\n direction: 'client-to-server',\n kind: 'method',\n description: `Session ${member}. Arguments exclude the process-local Chord Context. A void result is omitted from the successful Pi response.`,\n ...definition,\n errors: ErrorSchema,\n })),\n {\n id: 'session.state',\n scope: 'session',\n service: DOOM_SESSION_SERVICE_ID,\n member: 'state',\n direction: 'server-to-client',\n kind: 'state',\n input: SessionServiceStateSchema,\n description: 'Reconstructed session state after Chord snapshot/delta decoding.',\n },\n {\n id: 'management.attach',\n scope: 'global',\n service: DOOM_SESSION_MANAGEMENT_SERVICE_ID,\n member: 'attach',\n direction: 'client-to-server',\n kind: 'method',\n input: Type.Tuple([Text]),\n errors: ErrorSchema,\n description: 'Attach this presentation to a session. Pi publishes an out-of-band attachment update.',\n },\n {\n id: 'management.detach',\n scope: 'global',\n service: DOOM_SESSION_MANAGEMENT_SERVICE_ID,\n member: 'detach',\n direction: 'client-to-server',\n kind: 'method',\n input: Type.Tuple([]),\n errors: ErrorSchema,\n description: 'Detach this presentation from its selected session.',\n },\n {\n id: 'hub.send',\n scope: 'global',\n service: 'doompi.hub.v1',\n member: 'send',\n direction: 'client-to-server',\n kind: 'method',\n input: Type.Tuple([HubClientFrame]),\n errors: ErrorSchema,\n description: 'Send a hub subscription, thread, history, or selected extension channel frame.',\n },\n {\n id: 'hub.state',\n scope: 'global',\n service: 'doompi.hub.v1',\n member: 'state',\n direction: 'server-to-client',\n kind: 'state',\n input: Type.Object({ events: Type.Array(Type.Object({ sequence: NumberValue, frame: HubServerFrame })) }),\n description:\n 'Reconstructed hub event replay window. Frame discriminators identify session and selected extension updates.',\n },\n];\n","import { defineService, type Context, type JsonValue } from '@earendil-works/chord';\nimport { type Static, type TSchema, Type } from 'typebox';\nimport { Check } from 'typebox/value';\n\nimport type { DoomApiMount, DoomApiScope } from './packageApi';\n\n/** The address is always exact. A workspace call never resolves to a global service. */\nexport const DoomPluginMountSchema = 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 DoomPluginCallSchema = Type.Object(\n {\n mount: DoomPluginMountSchema,\n service: Type.String({ minLength: 1 }),\n method: Type.String({ minLength: 1 }),\n input: Type.Unknown(),\n },\n { additionalProperties: false },\n);\n\nexport type DoomPluginCall = Static<typeof DoomPluginCallSchema>;\nexport type DoomPluginDirection = 'client-to-server' | 'server-to-client';\nexport interface DoomPluginCaller {\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 Doompi clients. */\nexport interface DoomPluginService {\n invoke(\n call: {\n mount: DoomApiMount;\n service: string;\n method: string;\n input: JsonValue;\n },\n context: Context,\n ): Promise<JsonValue>;\n}\n\nexport const DoomPluginService = defineService<DoomPluginService>('doompi.plugin.v1');\n\nexport interface DoomPluginMethod<TInput extends TSchema, TOutput extends TSchema> {\n readonly service: string;\n readonly method: string;\n readonly scope: DoomApiScope;\n readonly direction: DoomPluginDirection;\n readonly input: TInput;\n readonly output: TOutput;\n}\n\nexport function defineDoomPluginMethod<TInput extends TSchema, TOutput extends TSchema>(\n definition: DoomPluginMethod<TInput, TOutput>,\n): DoomPluginMethod<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 doomPluginMountKey(mount: DoomApiMount): string {\n if (!Check(DoomPluginMountSchema, 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 DoomPluginCallError 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 = 'DoomPluginCallError';\n }\n}\n\nexport interface DoomPluginRegistry {\n register<TInput extends TSchema, TOutput extends TSchema>(\n mount: DoomApiMount,\n definition: DoomPluginMethod<TInput, TOutput>,\n handler: (input: Static<TInput>, caller: DoomPluginCaller) => Static<TOutput> | Promise<Static<TOutput>>,\n ): () => void;\n invoke(call: unknown, direction: DoomPluginDirection, caller?: DoomPluginCaller): Promise<unknown>;\n dispose(): void;\n}\n\n/** Transport-neutral dispatch, shared by Chord server services and client capability hosts. */\nexport function createDoomPluginRegistry(): DoomPluginRegistry {\n const handlers = new Map<\n string,\n {\n definition: DoomPluginMethod<TSchema, TSchema>;\n handler: (input: never, caller: DoomPluginCaller) => unknown;\n }\n >();\n let disposed = false;\n const keyOf = (mount: DoomApiMount, service: string, method: string, direction: DoomPluginDirection): string =>\n `${doomPluginMountKey(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(DoomPluginCallSchema, value)) throw new DoomPluginCallError('INVALID_CALL', 'Invalid plugin call.');\n const call = value as DoomPluginCall;\n const entry = handlers.get(keyOf(call.mount, call.service, call.method, direction));\n if (!entry)\n throw new DoomPluginCallError(\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 DoomPluginCallError('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 DoomPluginCallError('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 invokeDoomPluginMethod<TInput extends TSchema, TOutput extends TSchema>(\n transport: (call: DoomPluginCall) => Promise<unknown>,\n mount: DoomApiMount,\n definition: DoomPluginMethod<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 DoomPluginCallError('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 DoomPluginCallError(\n 'INVALID_OUTPUT',\n `Invalid output from '${definition.service}.${definition.method}'.`,\n );\n return output;\n}\n","import { PROTOCOL_VERSION } from '@earendil-works/pi-protocol';\nimport { Type } from 'typebox';\n\nimport type { DoomSocketContract } from './apiContracts';\nimport { DoomPluginCallSchema } from './pluginProtocol';\n\nconst S = Type.String({ minLength: 1 });\nconst Json = Type.Unknown({\n description: 'JSON value; its application shape is defined by the addressed service member.',\n});\nconst E = Type.Object({ code: S, message: Type.String() }, { additionalProperties: false });\nconst ServerId = Type.String({ pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$' });\nconst Address = Type.Object({ key: S, generation: Type.Integer({ minimum: 1 }) }, { additionalProperties: false });\nconst Mode = Type.Union([Type.Literal('singleton'), Type.Literal('keyed')]);\nconst SessionTarget = Type.Object(\n { serverId: ServerId, sessionId: S, attachmentId: S },\n { additionalProperties: false },\n);\nconst Target = Type.Union([Type.Object({ serverId: ServerId }, { additionalProperties: false }), SessionTarget]);\nexport const ChordCallSchema = Type.Object(\n { serviceId: S, member: S, args: Type.Array(Json), instance: Type.Optional(Address) },\n { additionalProperties: false },\n);\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('#'), 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 Instance = Type.Object({\n instance: Type.Optional(Address),\n members: Type.Array(\n Type.Union([\n Type.Object({ name: S, kind: Type.Literal('method') }),\n Type.Object({\n name: S,\n kind: Type.Literal('state'),\n sequence: Type.Integer({ minimum: 0 }),\n ops: Type.Array(ChordWireOpSchema),\n }),\n ]),\n ),\n});\nexport const ChordSnapshotSchema = Type.Object({ serviceId: S, mode: Mode, instances: Type.Array(Instance) });\nexport const ChordUpdateSchema = Type.Union([\n Type.Object({\n type: Type.Literal('state'),\n instance: Type.Optional(Address),\n member: S,\n sequence: Type.Integer({ minimum: 1 }),\n ops: Type.Array(ChordWireOpSchema),\n }),\n Type.Object({ type: Type.Literal('unavailable') }),\n Type.Object({ type: Type.Literal('replaced'), snapshot: Instance }),\n Type.Object({ type: Type.Literal('spawned'), instance: Instance }),\n Type.Object({ type: Type.Literal('closed'), instance: Address }),\n]);\nexport const PiClientMessageSchema = Type.Union([\n Type.Object({ type: Type.Literal('hello'), version: Type.Integer({ minimum: 0 }) }),\n Type.Object({ type: Type.Literal('request'), id: S, target: Target, call: ChordCallSchema }),\n Type.Object({ type: Type.Literal('cancel'), id: S, target: Target }),\n]);\nexport const PiServerMessageSchema = Type.Union([\n Type.Object({ type: Type.Literal('hello'), version: Type.Literal(PROTOCOL_VERSION), serverId: ServerId }),\n Type.Object({ type: Type.Literal('hello_error'), error: E }),\n Type.Object({ type: Type.Literal('response'), id: S, ok: Type.Literal(true), result: Type.Optional(Json) }),\n Type.Object({ type: Type.Literal('response'), id: S, ok: Type.Literal(false), error: E }),\n Type.Object({ type: Type.Literal('service_update'), subscriptionId: S, update: ChordUpdateSchema }),\n Type.Object({ type: Type.Literal('attachment'), attachment: Type.Union([SessionTarget, Type.Null()]) }),\n]);\nexport const transportSocketContracts: DoomSocketContract[] = [\n {\n id: 'pi.client',\n scope: 'global',\n service: '$pi',\n member: 'client',\n direction: 'client-to-server',\n kind: 'channel',\n input: PiClientMessageSchema,\n description: `Pi protocol ${PROTOCOL_VERSION} decoded client envelope. Encode with the public Pi codec and framing functions, then seal for WebSocket delivery.`,\n },\n {\n id: 'pi.server',\n scope: 'global',\n service: '$pi',\n member: 'server',\n direction: 'server-to-client',\n kind: 'channel',\n input: PiServerMessageSchema,\n description: 'Pi decoded server envelope. Responses correlate by id; service updates correlate by subscriptionId.',\n },\n {\n id: 'chord.catalogue',\n scope: 'global',\n service: '$chord.service',\n member: 'catalogue',\n direction: 'client-to-server',\n kind: 'method',\n input: Type.Tuple([]),\n output: Type.Array(Type.Object({ serviceId: S, mode: Mode })),\n errors: E,\n description: 'Discover services at the selected Pi target.',\n },\n {\n id: 'chord.subscribe',\n scope: 'global',\n service: '$chord.service',\n member: 'subscribe',\n direction: 'client-to-server',\n kind: 'method',\n input: Type.Tuple([S, S, Mode]),\n output: ChordSnapshotSchema,\n errors: E,\n description:\n 'Subscribe with [subscriptionId, serviceId, mode]; subsequent Pi service_update messages contain Chord deltas.',\n },\n {\n id: 'chord.unsubscribe',\n scope: 'global',\n service: '$chord.service',\n member: 'unsubscribe',\n direction: 'client-to-server',\n kind: 'method',\n input: Type.Tuple([S]),\n errors: E,\n description: 'Unsubscribe by subscriptionId.',\n },\n {\n id: 'plugin.invoke',\n scope: 'global',\n service: 'doompi.plugin.v1',\n member: 'invoke',\n direction: 'client-to-server',\n kind: 'method',\n input: Type.Tuple([DoomPluginCallSchema]),\n output: Json,\n errors: E,\n description: 'Invoke the selected scoped plugin method. Its declaration supplies input and output shapes.',\n },\n];\n","import { PROTOCOL_VERSION } from '@earendil-works/pi-protocol';\n\nimport { 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 { 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: { pi: String(PROTOCOL_VERSION), chord: '1.0.0', 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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"}
|