@theokit/agents 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bridge.d.ts +28 -18
- package/dist/bridge.js +1 -1
- package/dist/{chunk-2MI27XCA.js → chunk-KTYBQ7HY.js} +279 -72
- package/dist/chunk-KTYBQ7HY.js.map +1 -0
- package/dist/decorators.d.ts +2 -2
- package/dist/index.d.ts +197 -3
- package/dist/index.js +17 -1
- package/dist/{skills-DnfvEUSg.d.ts → skills-DmN1HGUb.d.ts} +1 -1
- package/package.json +1 -1
- package/dist/chunk-2MI27XCA.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/bridge/agent-execution-context.ts","../src/bridge/compile-context-window.ts","../src/bridge/compile-project-context.ts","../src/bridge/walk-agent-metadata.ts","../src/bridge/compile-skills.ts","../src/bridge/agent-compiler.ts","../src/bridge/agent-sse-handler.ts","../src/bridge/agent-stream-events.ts","../src/bridge/agent-route-generator.ts","../src/bridge/event-translator.ts","../src/bridge/sdk-adapter.ts","../src/bridge/agent-orchestrator.ts","../src/manifest/agent-manifest.ts","../src/theokit-plugin.ts"],"sourcesContent":["/**\n * AgentExecutionContext — extends http-decorators' ExecutionContext with agent-specific methods.\n *\n * Per ADR D2 (LSP): any guard that accepts ExecutionContext works unchanged with\n * AgentExecutionContext. Agent-specific guards can narrow via isAgentContext().\n */\nimport type { ExecutionContext } from '@theokit/http'\n\nimport type { AgentOptions, ToolOptions } from '../types.js'\n\nexport interface AgentRunInfo {\n id: string\n startedAt: Date\n}\n\nexport interface AgentExecutionContext extends ExecutionContext {\n /** The agent's configuration from @Agent() decorator. */\n getAgent(): AgentOptions\n /** The current run information. */\n getRun(): AgentRunInfo\n /** The tool being called, or null if in the main agent handler. */\n getToolCall(): ToolOptions | null\n /** Type guard — always true for AgentExecutionContext. */\n isAgentContext(): true\n}\n\n/** Create an AgentExecutionContext from a base ExecutionContext + agent state. */\nexport function createAgentExecutionContext(\n base: ExecutionContext,\n agent: AgentOptions,\n run: AgentRunInfo,\n toolCall?: ToolOptions,\n): AgentExecutionContext {\n return {\n getRequest: () => base.getRequest(),\n getUrl: () => base.getUrl(),\n getClass: () => base.getClass(),\n getMethodName: () => base.getMethodName(),\n getAgent: () => agent,\n getRun: () => run,\n getToolCall: () => toolCall ?? null,\n isAgentContext: () => true as const,\n }\n}\n\n/** Narrow an ExecutionContext to AgentExecutionContext if it is one. */\nexport function isAgentContext(ctx: ExecutionContext): ctx is AgentExecutionContext {\n return 'isAgentContext' in ctx && (ctx as AgentExecutionContext).isAgentContext()\n}\n","/**\n * M8-1 — compile `@ContextWindow` metadata into the SDK's `ContextSettings`.\n *\n * Per sdk-runtime.md, the SDK owns session/transcript storage + compaction.\n * The bridge therefore maps the one knob the SDK natively exposes as a budget —\n * `maxTokens` → `ContextSettings.maxTokens` — and reports the strategy knobs that\n * have NO native `AgentOptions` equivalent (`compactionStrategy`, `preserveLastN`,\n * `preserveToolResults`, `preserveSystemPrompt`). Those are surfaced as\n * `metadataOnlyKnobs` so the walk can emit an honest `metadata-only` warning\n * (ADR D2) instead of silently dropping them (G10 — honest enforcement).\n */\nimport type { ContextSettings } from '@theokit/sdk'\n\nimport type { ContextWindowOptions } from '../decorators/context-window.js'\n\n/** `@ContextWindow` knobs with no native SDK `AgentOptions` mapping. */\nconst STRATEGY_KNOBS = [\n 'compactionStrategy',\n 'preserveLastN',\n 'preserveToolResults',\n 'preserveSystemPrompt',\n] as const\n\nexport interface CompiledContextWindow {\n /** SDK-shaped context budget passed to `Agent.create({ context })`. */\n context: ContextSettings\n /** Declared knobs the SDK does not expose — reported, never silently dropped. */\n metadataOnlyKnobs: string[]\n}\n\nexport function compileContextWindow(options: ContextWindowOptions): CompiledContextWindow {\n const context: ContextSettings = {}\n if (typeof options.maxTokens === 'number') {\n context.maxTokens = options.maxTokens\n }\n\n const opts = options as Record<string, unknown>\n const metadataOnlyKnobs = STRATEGY_KNOBS.filter((knob) => opts[knob] !== undefined)\n\n return { context, metadataOnlyKnobs }\n}\n","/**\n * M8-2 — compile `@ProjectContext` metadata into an SDK `SystemPromptResolver`.\n *\n * There is no native `AgentOptions` field that carries a repo map, so the bridge\n * composes the documented `systemPrompt` seam (`string | SystemPromptResolver`):\n * the resolver prepends `buildEnvContext` + `buildRepoMap` (`@theokit/sdk-tools`)\n * and the nearest `THEO.md` (`@theokit/sdk/project#readProjectInstructions`) to\n * the agent's base prompt (ADR D3). The SDK primitives are dynamically imported\n * so `@theokit/sdk-tools` stays an OPTIONAL peer — only loaded when a `@ProjectContext`\n * agent actually sends.\n *\n * Knobs with no primitive mapping (`indexStrategy`, `relevanceStrategy`,\n * `maxFilesInContext`, `includeExtensions`, `rootMarkers`) are reported via\n * {@link projectContextMetadataOnlyKnobs} so the walk warns honestly (G10).\n * Only `ignorePatterns` is forwarded (to `buildRepoMap`).\n */\nimport type { SystemPromptResolver } from '@theokit/sdk'\n\nimport type { ProjectContextOptions } from '../decorators/project-context.js'\n\n/** `@ProjectContext` knobs with no primitive mapping (reported, not executed). */\nconst UNMAPPED_KNOBS = [\n 'indexStrategy',\n 'relevanceStrategy',\n 'maxFilesInContext',\n 'includeExtensions',\n 'rootMarkers',\n] as const\n\nexport function projectContextMetadataOnlyKnobs(options: ProjectContextOptions): string[] {\n const opts = options as Record<string, unknown>\n return UNMAPPED_KNOBS.filter((knob) => opts[knob] !== undefined)\n}\n\n/**\n * Build a `SystemPromptResolver` that prepends env + repo map + project\n * instructions to `base`. When the SDK provides no `cwd`, the resolver returns\n * `base` unchanged (no filesystem guess — keeps `packages/agents/src` free of\n * direct Node `process` access per G8; the repo map needs a real cwd).\n */\nexport function compileProjectContext(\n options: ProjectContextOptions,\n base?: string,\n): SystemPromptResolver {\n return async (promptCtx) => {\n const cwd = promptCtx.cwd\n if (!cwd) {\n return base ?? ''\n }\n\n const { buildEnvContext, buildRepoMap } = await import('@theokit/sdk-tools')\n const { readProjectInstructions } = await import('@theokit/sdk/project')\n\n const env = buildEnvContext(cwd)\n const repoMap = buildRepoMap(cwd, { ignore: options.ignorePatterns })\n\n let instructions = ''\n try {\n instructions = (await readProjectInstructions(cwd)).content ?? ''\n } catch {\n // readProjectInstructions is best-effort: a missing/unreadable THEO.md must\n // never break a send. buildEnvContext/buildRepoMap are never-throw by contract.\n instructions = ''\n }\n\n return [env, repoMap, instructions, base].filter(Boolean).join('\\n\\n')\n }\n}\n","/**\n * Walk decorator metadata on agent + toolbox classes.\n * Mirrors http-decorators' walkControllerMetadata() pattern.\n *\n * EC-1: throws if @Agent class is missing @MainLoop.\n * EC-4: throws on duplicate routes across agents.\n */\nimport 'reflect-metadata'\n\nimport { Reflector } from '@theokit/http'\n\nimport { getContextWindowConfig } from '../decorators/context-window.js'\nimport type { ContextWindowOptions } from '../decorators/context-window.js'\nimport type { GatewayOptions } from '../decorators/gateway.js'\nimport { getGatewayConfig } from '../decorators/gateway.js'\nimport { getMcpConfig } from '../decorators/mcp.js'\nimport type { McpServersMap } from '../decorators/mcp.js'\nimport { getMemoryConfig } from '../decorators/memory.js'\nimport type { MemoryOptions } from '../decorators/memory.js'\nimport { Trace, Audit } from '../decorators/observability.js'\nimport { RequiresApproval, Budget } from '../decorators/policies.js'\nimport type { ProjectContextOptions } from '../decorators/project-context.js'\nimport { getProjectContextConfig } from '../decorators/project-context.js'\nimport { getSkillsConfig } from '../decorators/skills.js'\nimport type { SkillsOptions } from '../decorators/skills.js'\nimport { getSubAgents } from '../decorators/sub-agents.js'\nimport { getMeta } from '../metadata/index.js'\nimport {\n AGENT_CONFIG,\n AGENT_MAIN_LOOP,\n TOOLBOX_CONFIG,\n TOOL_CONFIG,\n TOOL_METHODS,\n} from '../metadata/keys.js'\nimport type {\n AgentOptions,\n MainLoopMeta,\n ToolboxOptions,\n ToolOptions,\n ApprovalOptions,\n BudgetOptions,\n} from '../types.js'\n\nimport { compileContextWindow } from './compile-context-window.js'\nimport { projectContextMetadataOnlyKnobs } from './compile-project-context.js'\n\n// http-decorators metadata keys for pipeline reuse\nconst USE_GUARDS = Symbol.for('theokit:http-decorators:use-guards')\nconst USE_INTERCEPTORS = Symbol.for('theokit:http-decorators:use-interceptors')\nconst USE_FILTERS = Symbol.for('theokit:http-decorators:use-filters')\n\n/**\n * Stable warning codes for agent pipeline metadata-only decorators.\n * Test by code, not by message string. Document in agent support matrix.\n */\nexport const AgentWarningCode = {\n INTERCEPTOR_METADATA_ONLY: 'THEO_AGENT_INTERCEPTOR_METADATA_ONLY',\n FILTER_METADATA_ONLY: 'THEO_AGENT_FILTER_METADATA_ONLY',\n BUDGET_TOP_LEVEL_METADATA_ONLY: 'THEO_AGENT_BUDGET_TOP_LEVEL_METADATA_ONLY',\n CONTEXT_STRATEGY_METADATA_ONLY: 'THEO_AGENT_CONTEXT_STRATEGY_METADATA_ONLY',\n PROJECT_CONTEXT_KNOB_METADATA_ONLY: 'THEO_AGENT_PROJECT_CONTEXT_KNOB_METADATA_ONLY',\n} as const\n\nconst reflectorInstance = new Reflector()\n\nexport interface AgentWalkResult {\n agentConfig: AgentOptions\n mainLoop: MainLoopMeta\n toolboxes: ToolboxWalkResult[]\n guards: Function[]\n interceptors: Function[]\n filters: Function[]\n route: string\n gateway?: GatewayOptions\n subAgentClasses: Function[]\n memory?: MemoryOptions\n skills?: SkillsOptions\n contextWindow?: ContextWindowOptions\n projectContext?: ProjectContextOptions\n mcpServers?: McpServersMap\n}\n\nexport interface ToolboxWalkResult {\n class: Function\n namespace: string\n tools: ToolWalkResult[]\n guards: Function[]\n}\n\nexport interface ToolWalkResult {\n propertyKey: string | symbol\n config: ToolOptions\n guards: Function[]\n approval?: ApprovalOptions\n capabilities?: string[]\n budget?: BudgetOptions\n trace: boolean\n audit: boolean\n}\n\nfunction walkToolbox(ToolboxClass: Function): ToolboxWalkResult {\n const config = getMeta<ToolboxOptions>(TOOLBOX_CONFIG, ToolboxClass) ?? {}\n const methods = getMeta<(string | symbol)[]>(TOOL_METHODS, ToolboxClass) ?? []\n const classGuards = getMeta<Function[]>(USE_GUARDS, ToolboxClass) ?? []\n\n const tools: ToolWalkResult[] = methods.map((propertyKey) => {\n const toolConfig = getMeta<ToolOptions>(TOOL_CONFIG, ToolboxClass, propertyKey)\n if (!toolConfig) {\n throw new Error(\n `[@theokit/agents] Toolbox ${ToolboxClass.name}: method '${String(propertyKey)}' is in TOOL_METHODS but has no @Tool() config.`,\n )\n }\n\n const methodGuards = getMeta<Function[]>(USE_GUARDS, ToolboxClass, propertyKey) ?? []\n\n // Read typed decorator metadata via Reflector (not generic readTypedMeta)\n const ref = reflectorInstance\n\n const approvalVal = ref.get(RequiresApproval, ToolboxClass, propertyKey)\n const traceVal = ref.get(Trace, ToolboxClass, propertyKey)\n const auditVal = ref.get(Audit, ToolboxClass, propertyKey)\n\n return {\n propertyKey,\n config: toolConfig,\n guards: [...classGuards, ...methodGuards],\n approval:\n approvalVal && typeof approvalVal === 'object' && 'reason' in approvalVal\n ? approvalVal\n : undefined,\n capabilities: undefined, // read via RequiresCapability when needed\n budget: undefined, // read via Budget when needed\n trace: traceVal ?? false,\n audit: auditVal ?? false,\n }\n })\n\n return {\n class: ToolboxClass,\n namespace: config.namespace ?? '',\n tools,\n guards: classGuards,\n }\n}\n\n/**\n * Emit one `metadata-only` warning per M8 decorator whose declared knobs have no\n * native SDK mapping. Extracted from {@link walkAgentMetadata} to keep its\n * cyclomatic complexity within budget (G6).\n */\nfunction warnUnmappedDecoratorKnobs(\n agentName: string,\n contextWindow: ContextWindowOptions | undefined,\n projectContext: ProjectContextOptions | undefined,\n): void {\n if (contextWindow) {\n const { metadataOnlyKnobs } = compileContextWindow(contextWindow)\n if (metadataOnlyKnobs.length > 0) {\n console.warn(\n `[${AgentWarningCode.CONTEXT_STRATEGY_METADATA_ONLY}] Agent ${agentName}: ` +\n `@ContextWindow knob(s) ${metadataOnlyKnobs.join(', ')} are metadata-only — ` +\n `the SDK manages transcript compaction internally. Only maxTokens is forwarded ` +\n `to Agent.create({ context }).`,\n )\n }\n }\n\n if (projectContext) {\n const unmapped = projectContextMetadataOnlyKnobs(projectContext)\n if (unmapped.length > 0) {\n console.warn(\n `[${AgentWarningCode.PROJECT_CONTEXT_KNOB_METADATA_ONLY}] Agent ${agentName}: ` +\n `@ProjectContext knob(s) ${unmapped.join(', ')} are metadata-only — ` +\n `the repo map is composed via buildRepoMap/buildEnvContext/readProjectInstructions; ` +\n `only ignorePatterns is forwarded.`,\n )\n }\n }\n}\n\n/** WeakMap cache — metadata is immutable; walk once per class. */\nconst agentWalkCache = new WeakMap<Function, AgentWalkResult>()\n\n/**\n * Walk all metadata on an agent class and its toolboxes.\n * Memoized per AgentClass via WeakMap.\n *\n * @throws Error if @Agent is missing @MainLoop (EC-1)\n */\nexport function walkAgentMetadata(\n AgentClass: Function,\n toolboxClasses: Function[] = [],\n): AgentWalkResult {\n // Cache key is AgentClass only (toolboxes are typically stable per agent)\n if (toolboxClasses.length === 0) {\n const cached = agentWalkCache.get(AgentClass)\n if (cached) return cached\n }\n const agentConfig = getMeta<AgentOptions>(AGENT_CONFIG, AgentClass)\n if (!agentConfig) {\n throw new Error(`[@theokit/agents] Class ${AgentClass.name} is missing @Agent() decorator.`)\n }\n\n const mainLoop = getMeta<MainLoopMeta>(AGENT_MAIN_LOOP, AgentClass)\n if (!mainLoop) {\n throw new Error(\n `[@theokit/agents] Agent ${AgentClass.name} is missing @MainLoop() decorator. ` +\n `Decorate exactly one method with @MainLoop().`,\n )\n }\n\n const guards = getMeta<Function[]>(USE_GUARDS, AgentClass) ?? []\n\n // Interceptors and filters are read but NOT enforced in agent pipeline.\n // Agent pipeline only shares guards with HTTP; interceptors/filters have\n // different lifecycle semantics (HTTP wraps a single handler; agents run\n // a multi-step loop with tool calls, streaming, checkpoints).\n // Warn explicitly so developers don't expect enforcement silently.\n const interceptors = getMeta<Function[]>(USE_INTERCEPTORS, AgentClass) ?? []\n if (interceptors.length > 0) {\n console.warn(\n `[${AgentWarningCode.INTERCEPTOR_METADATA_ONLY}] Agent ${AgentClass.name}: ` +\n `@UseInterceptors is metadata-only on agents and will not execute. ` +\n `Agent pipeline shares guards with HTTP but uses a distinct execution model. ` +\n `Interceptors are reserved for future agent-specific lifecycle hooks.`,\n )\n }\n\n const filters = getMeta<Function[]>(USE_FILTERS, AgentClass) ?? []\n if (filters.length > 0) {\n console.warn(\n `[${AgentWarningCode.FILTER_METADATA_ONLY}] Agent ${AgentClass.name}: ` +\n `@UseFilters is metadata-only on agents and will not catch agent runtime errors. ` +\n `Agent errors flow through SSE error events, not HTTP exception filters. ` +\n `Filters are reserved for future agent-specific error handling.`,\n )\n }\n\n // @Budget on agent class: metadata-only for top-level agents.\n // Budget enforcement is active only in delegate() (sub-agent calls) where\n // the orchestrator clamps cost mid-stream. Top-level agent budget depends\n // on the SDK's cost reporting in DoneEvent.\n const agentBudget = reflectorInstance.get(Budget, AgentClass)\n if (agentBudget) {\n console.warn(\n `[${AgentWarningCode.BUDGET_TOP_LEVEL_METADATA_ONLY}] Agent ${AgentClass.name}: ` +\n `@Budget on top-level agents is metadata-only in this version. ` +\n `Budget enforcement currently applies to delegate() calls only. ` +\n `Top-level run enforcement will be wired through SDK cost tracking in a future release.`,\n )\n }\n\n const toolboxes = toolboxClasses.map(walkToolbox)\n const gateway = getGatewayConfig(AgentClass)\n const subAgentClasses = getSubAgents(AgentClass)\n const memory = getMemoryConfig(AgentClass)\n const skills = getSkillsConfig(AgentClass)\n const mcpServers = getMcpConfig(AgentClass)\n\n // M8: @ContextWindow + @ProjectContext have native SDK mappings for only a\n // subset of their knobs; warn once for the rest (honest enforcement, G10).\n const contextWindow = getContextWindowConfig(AgentClass)\n const projectContext = getProjectContextConfig(AgentClass)\n warnUnmappedDecoratorKnobs(AgentClass.name, contextWindow, projectContext)\n\n const result: AgentWalkResult = {\n agentConfig,\n mainLoop,\n toolboxes,\n guards,\n interceptors,\n filters,\n route: agentConfig.route,\n gateway,\n subAgentClasses,\n memory,\n skills,\n contextWindow,\n projectContext,\n mcpServers,\n }\n\n if (toolboxClasses.length === 0) {\n agentWalkCache.set(AgentClass, result)\n }\n return result\n}\n\n/**\n * Validate that no two agents share the same route prefix.\n *\n * @throws Error on duplicate routes (EC-4)\n */\nexport function validateUniqueRoutes(results: AgentWalkResult[]): void {\n const seen = new Map<string, string>()\n for (const r of results) {\n const existing = seen.get(r.route)\n if (existing) {\n throw new Error(\n `[@theokit/agents] Duplicate agent route '${r.route}': ` +\n `both '${existing}' and '${r.agentConfig.name}' declare it.`,\n )\n }\n seen.set(r.route, r.agentConfig.name)\n }\n}\n","/**\n * M8-3 — compile `@Skills` metadata into the SDK's `SkillsSettings`.\n *\n * Per sdk-runtime.md: the bridge COMPILES decorator metadata into a format the\n * SDK accepts; the SDK is the runtime. `Agent.create({ skills })` natively\n * discovers `.theokit/skills/<name>/SKILL.md` files and injects the `<skills>`\n * block — so giving `@Skills` runtime is a pure shape translation, not a\n * reimplementation of discovery.\n *\n * Mapping (ADR D4):\n * - `{ include }` → `{ enabled: include, autoInject: true }`\n * - `{ autoDiscover: true }` → `{ autoInject: true }` (enabled omitted ⇒ the SDK\n * enables every discovered skill)\n */\nimport type { SkillsSettings } from '@theokit/sdk'\n\nimport type { SkillsOptions } from '../decorators/skills.js'\n\nexport function compileSkills(options: SkillsOptions): SkillsSettings {\n if (options.autoDiscover) {\n return { autoInject: true }\n }\n return { enabled: options.include, autoInject: true }\n}\n","/**\n * Agent compiler — transforms decorator metadata into SDK calls.\n *\n * Per ADR D1: @Agent is a macro over Agent.create().\n * Per ADR D3: @Tool compiles to defineTool().\n *\n * EC-3: throws if toolbox instance is missing from the instances map.\n */\nimport type { ContextSettings, SkillsSettings } from '@theokit/sdk'\n\nimport { getAgentConfig } from '../decorators/agent.js'\nimport type { McpServersMap } from '../decorators/mcp.js'\nimport type { MemoryOptions } from '../decorators/memory.js'\nimport type { ProjectContextOptions } from '../decorators/project-context.js'\n\nimport { compileContextWindow } from './compile-context-window.js'\nimport { compileSkills } from './compile-skills.js'\nimport type { ToolboxWalkResult, AgentWalkResult } from './walk-agent-metadata.js'\n\n/** Minimal interface matching defineTool() result shape. */\nexport interface CompiledTool {\n name: string\n description: string\n inputSchema: unknown\n handler: (input: unknown) => string | Promise<string>\n}\n\n/**\n * Compile @Tool metadata into tool definitions.\n *\n * @param toolboxes - Walked toolbox metadata\n * @param toolboxInstances - Map of Toolbox class → instantiated object (for `this` binding)\n */\nexport function compileTools(\n toolboxes: ToolboxWalkResult[],\n toolboxInstances: Map<Function, object>,\n): CompiledTool[] {\n const tools: CompiledTool[] = []\n\n for (const tb of toolboxes) {\n // EC-3: guard against missing toolbox instance\n const instance = toolboxInstances.get(tb.class)\n if (!instance) {\n throw new Error(\n `[@theokit/agents] Toolbox ${tb.class.name} not instantiated — add to providers or pass instances.`,\n )\n }\n\n for (const tool of tb.tools) {\n const handler = (instance as Record<string | symbol, Function>)[tool.propertyKey]\n if (typeof handler !== 'function') {\n throw new Error(\n `[@theokit/agents] Toolbox ${tb.class.name}: '${String(tool.propertyKey)}' is not a function.`,\n )\n }\n\n const name = tb.namespace ? `${tb.namespace}.${tool.config.name}` : tool.config.name\n\n tools.push({\n name,\n description: tool.config.description,\n inputSchema: tool.config.input,\n handler: (input: unknown) => handler.call(instance, input) as string | Promise<string>,\n })\n }\n }\n\n return tools\n}\n\n/** Compiled sub-agent definition matching SDK AgentDefinition shape. */\nexport interface CompiledSubAgent {\n model?: string\n systemPrompt?: string\n}\n\n/** Compiled agent options ready for SDK Agent.create(). */\nexport interface CompiledAgentOptions {\n model?: string\n systemPrompt?: string\n tools: CompiledTool[]\n agents: Record<string, CompiledSubAgent>\n memory?: MemoryOptions\n skills?: SkillsSettings\n context?: ContextSettings\n /** Raw @ProjectContext config; the adapter builds the (async) systemPrompt resolver from it. */\n projectContext?: ProjectContextOptions\n mcpServers?: McpServersMap\n maxIterations?: number\n timeoutMs?: number\n stream: boolean\n}\n\n/**\n * Compile @SubAgents references into SDK agents map.\n * Each sub-agent class must have @Agent() metadata.\n */\nexport function compileSubAgents(subAgentClasses: Function[]): Record<string, CompiledSubAgent> {\n const agents: Record<string, CompiledSubAgent> = {}\n for (const cls of subAgentClasses) {\n const config = getAgentConfig(cls)\n if (!config) continue // validated at decoration time\n agents[config.name] = {\n model: config.model,\n systemPrompt: config.systemPrompt,\n }\n }\n return agents\n}\n\n/**\n * Compile @Agent metadata into SDK-compatible options.\n *\n * EC-7: agents without toolboxes produce tools: [].\n */\nexport function compileAgent(\n walkResult: AgentWalkResult,\n toolboxInstances = new Map<Function, object>(),\n): CompiledAgentOptions {\n const tools = compileTools(walkResult.toolboxes, toolboxInstances)\n const agents = compileSubAgents(walkResult.subAgentClasses)\n\n return {\n model: walkResult.agentConfig.model,\n systemPrompt: walkResult.agentConfig.systemPrompt,\n tools,\n agents,\n memory: walkResult.memory,\n skills: walkResult.skills ? compileSkills(walkResult.skills) : undefined,\n context: walkResult.contextWindow\n ? compileContextWindow(walkResult.contextWindow).context\n : undefined,\n projectContext: walkResult.projectContext,\n mcpServers: walkResult.mcpServers,\n maxIterations: walkResult.mainLoop.maxIterations ?? walkResult.agentConfig.maxIterations,\n timeoutMs: walkResult.mainLoop.timeoutMs ?? walkResult.agentConfig.timeoutMs,\n stream: walkResult.agentConfig.stream ?? true,\n }\n}\n","/**\n * SSE streaming handler — Web Standard Response with ReadableStream.\n *\n * Per ADR D4: SSE is the v1 transport.\n * Per EC-2: uses ReadableStream with controller.enqueue() instead of res.write().\n * Works natively on Node, Bun, Deno, CF Workers.\n */\n\n/** Minimal event shape matching SDK's SDKMessage discriminated union. */\nexport interface StreamEvent {\n type: string\n [key: string]: unknown\n}\n\nconst encoder = new TextEncoder()\n\n/**\n * Create a Web Standard Response that streams SSE events.\n * Each event becomes: `event: {type}\\ndata: {json}\\n\\n`\n */\nexport function streamAgentResponse(\n eventStream: AsyncIterable<StreamEvent>,\n): Response {\n const stream = new ReadableStream({\n async start(controller) {\n let closed = false\n const safeEnqueue = (chunk: Uint8Array) => {\n if (closed) return\n try { controller.enqueue(chunk) } catch { closed = true }\n }\n try {\n for await (const event of eventStream) {\n if (closed) break // eslint-disable-line @typescript-eslint/no-unnecessary-condition -- mutated by safeEnqueue catch\n const data = JSON.stringify(event)\n const frame = `event: ${event.type}\\ndata: ${data}\\n\\n`\n safeEnqueue(encoder.encode(frame))\n }\n } catch (err) {\n if (!closed) { // eslint-disable-line @typescript-eslint/no-unnecessary-condition -- mutated by safeEnqueue catch\n const errorEvent = {\n type: 'error',\n error: { message: err instanceof Error ? err.message : 'Internal agent error' },\n }\n const frame = `event: error\\ndata: ${JSON.stringify(errorEvent)}\\n\\n`\n safeEnqueue(encoder.encode(frame))\n }\n } finally {\n controller.close()\n }\n },\n })\n\n return new Response(stream, {\n status: 200,\n headers: {\n 'content-type': 'text/event-stream',\n 'cache-control': 'no-cache',\n 'connection': 'keep-alive',\n },\n })\n}\n","/**\n * Typed discriminated union for agent SSE stream events.\n *\n * Every event has a `type` field for discrimination.\n * Clients narrow via `if (event.type === 'text_delta') event.content`.\n */\n\n/** Partial text content from the LLM. */\nexport interface TextDeltaEvent {\n type: 'text_delta'\n content: string\n}\n\n/** Agent started a tool call. */\nexport interface ToolCallEvent {\n type: 'tool_call'\n callId: string\n toolName: string\n input: unknown\n}\n\n/** Tool execution completed. */\nexport interface ToolResultEvent {\n type: 'tool_result'\n callId: string\n toolName: string\n output: string\n durationMs: number\n isError: boolean\n}\n\n/** Extended thinking / reasoning (when model supports it). */\nexport interface ThinkingEvent {\n type: 'thinking'\n content: string\n}\n\n/** Agent loop iteration. */\nexport interface IterationEvent {\n type: 'iteration'\n step: number\n totalSteps: number | null\n}\n\n/** Human approval required before proceeding. */\nexport interface ApprovalRequiredEvent {\n type: 'approval_required'\n callId: string\n toolName: string\n question: string\n input?: unknown\n callbackUrl: string\n timeoutMs: number\n}\n\n/** Agent encountered an error. */\nexport interface ErrorEvent {\n type: 'error'\n code: string\n message: string\n retryable: boolean\n}\n\n/** Agent completed with a final result. */\nexport interface DoneEvent {\n type: 'done'\n result: string\n usage: {\n inputTokens: number\n outputTokens: number\n totalTokens: number\n }\n durationMs: number\n /** Total cost in USD for this agent run (EC-2: added for budget tracking). */\n cost?: number\n}\n\n/** Agent run started. */\nexport interface RunStartedEvent {\n type: 'run_started'\n runId: string\n agentName: string\n model?: string\n}\n\n/** Artifact generation started (code, document, diagram). */\nexport interface ArtifactStartEvent {\n type: 'artifact_start'\n artifactId: string\n mimeType: string\n filename?: string\n metadata?: Record<string, unknown>\n}\n\n/** Artifact content chunk (streamable artifacts). */\nexport interface ArtifactChunkEvent {\n type: 'artifact_chunk'\n artifactId: string\n chunk: string\n isLast: boolean\n}\n\n/** Real-time state update from @Observable channels. */\nexport interface StateUpdateEvent {\n type: 'state_update'\n channel: string\n data: unknown\n}\n\n/** Checkpoint saved (resumable agents). */\nexport interface CheckpointSavedEvent {\n type: 'checkpoint_saved'\n checkpointId: string\n step: number\n resumeToken: string\n}\n\n/** File edit produced by a code assistant tool. */\nexport interface FileEditEvent {\n type: 'file_edit'\n file: string\n format: 'search-replace' | 'unified-diff' | 'full-file' | 'line-range'\n search?: string\n replace?: string\n content?: string\n diff?: string\n startLine?: number\n endLine?: number\n}\n\n/** Discriminated union of all agent stream events. */\nexport type AgentStreamEvent =\n | RunStartedEvent\n | TextDeltaEvent\n | ToolCallEvent\n | ToolResultEvent\n | ThinkingEvent\n | IterationEvent\n | ApprovalRequiredEvent\n | ArtifactStartEvent\n | ArtifactChunkEvent\n | StateUpdateEvent\n | CheckpointSavedEvent\n | FileEditEvent\n | ErrorEvent\n | DoneEvent\n\n/** Type guard helpers. */\nexport function isTextDelta(e: AgentStreamEvent): e is TextDeltaEvent { return e.type === 'text_delta' }\nexport function isToolCall(e: AgentStreamEvent): e is ToolCallEvent { return e.type === 'tool_call' }\nexport function isToolResult(e: AgentStreamEvent): e is ToolResultEvent { return e.type === 'tool_result' }\nexport function isDone(e: AgentStreamEvent): e is DoneEvent { return e.type === 'done' }\nexport function isError(e: AgentStreamEvent): e is ErrorEvent { return e.type === 'error' }\nexport function isApprovalRequired(e: AgentStreamEvent): e is ApprovalRequiredEvent { return e.type === 'approval_required' }\n","/**\n * Auto-generate HTTP routes from @Agent metadata — Web Standard.\n *\n * Per ADR D5: @Agent({ route }) auto-generates two endpoints:\n * - POST {route}/chat — send message, receive SSE stream\n * - GET {route}/runs/:runId — get run status/result\n *\n * Routes are convention-based, generated at registration time.\n */\nimport type { CompiledAgentOptions } from './agent-compiler.js'\nimport { streamAgentResponse, type StreamEvent } from './agent-sse-handler.js'\nimport type { AgentWalkResult } from './walk-agent-metadata.js'\n\nexport interface AgentRoute {\n method: 'POST' | 'GET'\n path: string\n handler: (request: Request) => Promise<Response>\n}\n\nexport interface AgentRouteContext {\n walkResult: AgentWalkResult\n compiledOptions: CompiledAgentOptions\n createRun: (message: string, sessionId: string) => AsyncIterable<StreamEvent>\n getRun?: (runId: string) => Promise<{ id: string; status: string; result?: string } | null>\n}\n\n/** Generate HTTP routes for a single agent. Returns Web Standard handlers. */\nexport function generateAgentRoutes(ctx: AgentRouteContext): AgentRoute[] {\n const { walkResult, createRun, getRun } = ctx\n const basePath = walkResult.route.replace(/\\/$/, '')\n const routes: AgentRoute[] = []\n\n routes.push({\n method: 'POST',\n path: `${basePath}/chat`,\n handler: async (request) => {\n let body: Record<string, unknown> | null = null\n try {\n body = (await request.json()) as Record<string, unknown>\n } catch {\n /* empty */\n }\n\n const message = body?.message\n if (typeof message !== 'string' || message.length === 0) {\n return new Response(\n JSON.stringify({ error: { code: 'BAD_REQUEST', message: 'message field required' } }),\n { status: 400, headers: { 'content-type': 'application/json' } },\n )\n }\n\n const rawSessionId = body?.sessionId\n const sessionId = typeof rawSessionId === 'string' ? rawSessionId : `session-${Date.now()}`\n return streamAgentResponse(createRun(message, sessionId))\n },\n })\n\n if (getRun) {\n routes.push({\n method: 'GET',\n path: `${basePath}/runs/:runId`,\n handler: async (request) => {\n const url = new URL(request.url)\n const runId = url.pathname.split('/').pop() ?? ''\n const run = await getRun(runId)\n if (!run) {\n return new Response(\n JSON.stringify({ error: { code: 'NOT_FOUND', message: `Run ${runId} not found` } }),\n { status: 404, headers: { 'content-type': 'application/json' } },\n )\n }\n return new Response(JSON.stringify(run), {\n status: 200,\n headers: { 'content-type': 'application/json' },\n })\n },\n })\n }\n\n return routes\n}\n","/**\n * Translates @theokit/sdk SDKMessage events → TheoKit AgentStreamEvent.\n *\n * The SDK yields SDKMessage (system/assistant/tool_call/thinking/status).\n * TheoKit devtools + SSE handler expect AgentStreamEvent (run_started/text_delta/tool_call/done).\n * This module bridges the two — Adapter pattern (per sdk-integration-blueprint ADR-D2).\n */\nimport type { StreamEvent } from './agent-sse-handler.js'\n\n/** Minimal SDK message shape — duck-typed to avoid hard import of @theokit/sdk types. */\nexport interface SdkMessage {\n type: string\n [key: string]: unknown\n}\n\n/** Safely coerce unknown value to string. */\nfunction asString(value: unknown, fallback: string): string {\n if (typeof value === 'string') return value\n return fallback\n}\n\nfunction translateSystemEvent(msg: SdkMessage, runId: string): StreamEvent[] {\n return [\n {\n type: 'run_started',\n runId,\n agentName: asString(msg.agent_id, 'agent'),\n model: asString(msg.model, 'unknown'),\n },\n ]\n}\n\nfunction translateAssistantEvent(msg: SdkMessage): StreamEvent[] {\n const events: StreamEvent[] = []\n const content = msg.content as unknown[] | undefined\n if (!Array.isArray(content)) return events\n\n for (const block of content) {\n const b = block as { type: string; text?: string; name?: string; input?: unknown; id?: string }\n if (b.type === 'text' && b.text) {\n events.push({ type: 'text_delta', content: b.text })\n }\n if (b.type === 'tool_use') {\n events.push({\n type: 'tool_call',\n callId: b.id ?? `tc-${Date.now()}`,\n toolName: b.name ?? 'unknown',\n input: b.input ?? {},\n })\n }\n }\n return events\n}\n\nfunction translateToolCallEvent(msg: SdkMessage): StreamEvent[] {\n const status = msg.status as string\n if (status === 'completed') {\n return [\n {\n type: 'tool_result',\n callId: asString(msg.id, `tc-${Date.now()}`),\n toolName: asString(msg.name, 'unknown'),\n output: asString(msg.result, ''),\n durationMs: 0,\n isError: false,\n },\n ]\n }\n if (status === 'error') {\n return [\n {\n type: 'tool_result',\n callId: asString(msg.id, `tc-${Date.now()}`),\n toolName: asString(msg.name, 'unknown'),\n output: asString(msg.error, 'Tool failed'),\n durationMs: 0,\n isError: true,\n },\n ]\n }\n return [] // 'running' status → no event (in progress)\n}\n\nfunction translateStatusEvent(msg: SdkMessage): StreamEvent[] {\n const s = msg.status as string\n if (s === 'done' || s === 'completed') {\n return [\n {\n type: 'done',\n result: '',\n usage: { inputTokens: 0, outputTokens: 0, totalTokens: 0 },\n durationMs: 0,\n cost: 0,\n },\n ]\n }\n if (s === 'error') {\n return [\n {\n type: 'error',\n code: 'AGENT_ERROR',\n message: asString(msg.error, 'Agent error'),\n retryable: false,\n },\n ]\n }\n return []\n}\n\n/**\n * Translate a single SDK message to zero or more TheoKit stream events.\n * Returns an array because one SDK message may map to multiple TheoKit events.\n */\nexport function translateSdkEvent(msg: SdkMessage, runId: string): StreamEvent[] {\n switch (msg.type) {\n case 'system':\n return translateSystemEvent(msg, runId)\n case 'assistant':\n return translateAssistantEvent(msg)\n case 'tool_call':\n return translateToolCallEvent(msg)\n case 'thinking':\n return [{ type: 'thinking', content: asString(msg.content, '') }]\n case 'status':\n return translateStatusEvent(msg)\n default:\n return [] // Unknown message types silently ignored\n }\n}\n","/**\n * SDK Adapter — bridges @theokit/agents decorators → @theokit/sdk runtime.\n *\n * Per rule sdk-runtime.md (INQUEBRÁVEL): @theokit/sdk is the ONLY agent runtime.\n * This adapter replaces llm-runner.ts (which called OpenRouter API directly).\n *\n * Flow: @Agent decorator → compileAgent() → createSdkAgentStream() → SDK Agent.create() → Run.stream()\n */\nimport type { ContextSettings, SkillsSettings, SystemPromptResolver } from '@theokit/sdk'\n\nimport type { CompiledAgentOptions, CompiledTool } from './agent-compiler.js'\nimport type { StreamEvent } from './agent-sse-handler.js'\nimport { compileProjectContext } from './compile-project-context.js'\nimport { translateSdkEvent, type SdkMessage } from './event-translator.js'\n\n/** Extra `Agent.create()` options compiled from the M8 declarative decorators. */\ninterface M8CreateOptions {\n skills?: SkillsSettings\n context?: ContextSettings\n systemPrompt?: string | SystemPromptResolver\n /** Settings source so the SDK can discover SKILL.md files (EC-1). */\n local?: { settingSources: string[] }\n}\n\n/**\n * Project the M8 fields from `CompiledAgentOptions` (the single compile site is\n * `agent-compiler.ts`, per sdk-runtime.md) into `Agent.create()` arguments. Only\n * the async `@ProjectContext` resolver is built here (it does I/O, so the compiler\n * keeps it raw). `applied` lists which decorators contributed, for the\n * observability log (wiring triad — runtime metric).\n */\nfunction assembleM8CreateOptions(compiled: CompiledAgentOptions): {\n options: M8CreateOptions\n applied: string[]\n} {\n const options: M8CreateOptions = {}\n const applied: string[] = []\n const base = compiled.systemPrompt\n\n if (compiled.skills) {\n options.skills = compiled.skills\n options.local = { settingSources: ['project'] }\n applied.push('skills')\n }\n if (compiled.context) {\n options.context = compiled.context\n applied.push('context')\n }\n if (compiled.projectContext) {\n options.systemPrompt = compileProjectContext(compiled.projectContext, base)\n applied.push('projectContext')\n } else if (base !== undefined) {\n options.systemPrompt = base\n }\n\n return { options, applied }\n}\n\n/**\n * Creates an agent stream factory using @theokit/sdk as the runtime.\n *\n * Returns a function that, given a message + sessionId, yields TheoKit\n * AgentStreamEvent via the SDK's Agent.create() + Run.stream() pipeline.\n */\nexport function createSdkAgentStream(\n compiled: CompiledAgentOptions,\n compiledTools: CompiledTool[],\n apiKey: string,\n envModel?: string,\n) {\n const model = envModel ?? compiled.model ?? 'openai/gpt-4o-mini'\n\n return (message: string, _sessionId: string): AsyncIterable<StreamEvent> => ({\n async *[Symbol.asyncIterator]() {\n const runId = `run-${Date.now()}`\n const t0 = Date.now()\n\n // Dynamic import — @theokit/sdk is optional peer dep\n let Agent: {\n create: (opts: Record<string, unknown>) => Promise<{\n send: (msg: string) => Promise<{ stream: () => AsyncGenerator<SdkMessage> }>\n dispose: () => Promise<void>\n }>\n }\n let defineTool: (spec: {\n name: string\n description: string\n inputSchema: unknown\n handler: (input: unknown) => string | Promise<string>\n }) => unknown\n\n try {\n const sdk = await import('@theokit/sdk')\n Agent = sdk.Agent as typeof Agent\n defineTool = sdk.defineTool as typeof defineTool\n } catch {\n yield {\n type: 'error',\n code: 'SDK_NOT_INSTALLED',\n message: 'Install @theokit/sdk: pnpm add @theokit/sdk',\n retryable: false,\n }\n return\n }\n\n // Convert compiled tools → SDK defineTool format\n const sdkTools = compiledTools.map((t) =>\n defineTool({\n name: t.name,\n description: t.description,\n inputSchema: t.inputSchema,\n handler: t.handler,\n }),\n )\n\n try {\n // Project the compiled M8 decorator fields into native Agent.create args.\n const { options: m8, applied } = assembleM8CreateOptions(compiled)\n if (applied.length > 0) {\n // Wiring triad — runtime metric: observable proof the decorators fired.\n console.debug('[THEO_AGENT_M8_RUNTIME_APPLIED]', {\n skills: applied.includes('skills'),\n context: applied.includes('context'),\n projectContext: applied.includes('projectContext'),\n })\n }\n\n // Create SDK agent (M8 fields spread; absent decorators add no keys)\n const agent = await Agent.create({\n apiKey,\n model: { id: model },\n tools: sdkTools,\n ...m8,\n })\n\n // Send message + stream response\n const run = await agent.send(message)\n\n for await (const sdkEvent of run.stream()) {\n const translated = translateSdkEvent(sdkEvent, runId)\n for (const event of translated) {\n yield event\n }\n }\n\n // Emit done if SDK didn't emit status:done\n yield {\n type: 'done',\n result: '',\n usage: { inputTokens: 0, outputTokens: 0, totalTokens: 0 },\n durationMs: Date.now() - t0,\n cost: 0,\n }\n\n await agent.dispose()\n } catch (err) {\n yield {\n type: 'error',\n code: 'SDK_ERROR',\n message: err instanceof Error ? err.message : 'SDK agent error',\n retryable: false,\n }\n }\n },\n })\n}\n","/**\n * Multi-agent orchestration runtime.\n *\n * Provides `delegate()` — a function that lets a parent agent invoke a\n * sub-agent and receive its result. Handles budget clamping (D4),\n * tool sharing, and toolbox auto-instantiation (EC-1).\n */\nimport type { CompiledTool } from './agent-compiler.js'\nimport { compileAgent } from './agent-compiler.js'\nimport { createSdkAgentStream } from './sdk-adapter.js'\nimport { walkAgentMetadata } from './walk-agent-metadata.js'\n\nexport interface DelegateOptions {\n /** Max USD for this sub-agent call. */\n budget?: number\n /** Parent's remaining budget (for clamping). */\n parentBudgetRemaining?: number\n /** Parent's tools (for sharing — sub-agent inherits these). */\n parentTools?: CompiledTool[]\n /** LLM API key (inherited from parent). */\n apiKey?: string\n /** Session ID override (default: crypto.randomUUID for isolation). */\n sessionId?: string\n}\n\nexport interface DelegationResult {\n response: string\n toolCalls: { name: string; input: unknown; output: string }[]\n cost: number\n tokens: number\n}\n\nexport class BudgetExceededError extends Error {\n constructor(\n public readonly agentName: string,\n public readonly actualCost: number,\n public readonly budgetLimit: number,\n ) {\n super(\n `Agent \"${agentName}\" exceeded budget: $${actualCost.toFixed(4)} > $${budgetLimit.toFixed(4)}`,\n )\n this.name = 'BudgetExceededError'\n }\n}\n\nexport class DelegationError extends Error {\n constructor(\n public readonly agentName: string,\n public readonly cause: unknown,\n ) {\n super(\n `Delegation to agent \"${agentName}\" failed: ${cause instanceof Error ? cause.message : String(cause)}`,\n )\n this.name = 'DelegationError'\n }\n}\n\n/** Safely coerce unknown to string. */\nfunction asString(value: unknown, fallback: string): string {\n if (typeof value === 'string') return value\n return fallback\n}\n\n/** Safely coerce unknown to number. */\nfunction asNumber(value: unknown, fallback: number): number {\n if (typeof value === 'number') return value\n return fallback\n}\n\n/** Validate API key and throw DelegationError if missing. */\nfunction requireApiKey(opts: DelegateOptions, agentName: string): string {\n const apiKey = opts.apiKey ?? ''\n if (!apiKey) {\n throw new DelegationError(agentName, 'No API key provided. Pass apiKey in DelegateOptions.')\n }\n return apiKey\n}\n\n/** Merge parent tools with sub-agent tools (sub wins on collision). */\nfunction mergeTools(parentTools: CompiledTool[], subTools: CompiledTool[]): CompiledTool[] {\n const subToolNames = new Set(subTools.map((t) => t.name))\n const inherited = parentTools.filter((t) => !subToolNames.has(t.name))\n return [...inherited, ...subTools]\n}\n\n/** Mutable accumulator for stream event processing. */\ninterface StreamAccumulator {\n response: string\n toolCalls: { name: string; input: unknown; output: string }[]\n cost: number\n tokens: number\n}\n\n/** Process a single stream event into the accumulator. Throws on budget exceeded or error. */\nfunction processStreamEvent(\n event: { type: string; [key: string]: unknown },\n acc: StreamAccumulator,\n budget: number,\n agentName: string,\n): void {\n if (event.type === 'text_delta' && typeof event.content === 'string') {\n acc.response += event.content\n return\n }\n if (event.type === 'tool_result') {\n acc.toolCalls.push({\n name: asString(event.toolName, 'unknown'),\n input: event.input ?? {},\n output: asString(event.output, ''),\n })\n return\n }\n if (event.type === 'done') {\n acc.cost = asNumber(event.cost, 0)\n const usage = event.usage as { totalTokens?: number } | undefined\n acc.tokens = usage?.totalTokens ?? 0\n if (Number.isFinite(budget) && acc.cost > budget) {\n throw new BudgetExceededError(agentName, acc.cost, budget)\n }\n return\n }\n if (event.type === 'error') {\n throw new DelegationError(\n agentName,\n asString((event as { message?: unknown }).message, 'Unknown agent error'),\n )\n }\n}\n\n/**\n * Delegate a task to a sub-agent and collect its result.\n *\n * - Budget clamping: `min(parentBudgetRemaining, budget)` (D4)\n * - Tool sharing: parent tools merged with sub-agent tools (sub wins on collision)\n * - Toolbox auto-instantiation: sub-agent toolboxes instantiated without DI (EC-1)\n * - Session isolation: each delegation gets a unique session ID (EC-4)\n */\nexport async function delegate(\n SubAgentClass: Function,\n message: string,\n opts: DelegateOptions = {},\n): Promise<DelegationResult> {\n const apiKey = requireApiKey(opts, SubAgentClass.name)\n\n // 1. Walk + compile sub-agent (EC-1: auto-instantiate toolboxes)\n const walk = walkAgentMetadata(SubAgentClass, [])\n const toolboxInstances = new Map(\n walk.toolboxes.map((tb) => [tb.class, new (tb.class as new () => object)()]),\n )\n const compiled = compileAgent(walk, toolboxInstances)\n\n // 2. Merge parent tools\n const allTools = mergeTools(opts.parentTools ?? [], compiled.tools)\n\n // 3. Budget clamping (D4)\n const budget = Math.min(opts.budget ?? Infinity, opts.parentBudgetRemaining ?? Infinity)\n\n // 4. Create stream + collect (EC-4: randomUUID for session isolation)\n const streamFactory = createSdkAgentStream(compiled, allTools, apiKey, walk.agentConfig.model)\n const sessionId = opts.sessionId ?? `sub-${crypto.randomUUID()}`\n\n const acc: StreamAccumulator = { response: '', toolCalls: [], cost: 0, tokens: 0 }\n\n try {\n for await (const event of streamFactory(message, sessionId)) {\n processStreamEvent(event, acc, budget, SubAgentClass.name)\n }\n } catch (err) {\n if (err instanceof BudgetExceededError || err instanceof DelegationError) throw err\n throw new DelegationError(SubAgentClass.name, err)\n }\n\n // 5. Budget enforcement (post-run check)\n if (Number.isFinite(budget) && acc.cost > budget) {\n throw new BudgetExceededError(SubAgentClass.name, acc.cost, budget)\n }\n\n return acc\n}\n","/**\n * Agent manifest generator — build-time JSON describing all agents, tools, guards, policies.\n *\n * Feeds: theokit agents list/inspect, TheoCloud deploy, UI agent consoles.\n */\nimport type { AgentWalkResult } from '../bridge/walk-agent-metadata.js'\n\nexport interface AgentManifest {\n version: '1.0'\n generatedAt: string\n agents: AgentManifestEntry[]\n}\n\nexport interface AgentManifestEntry {\n name: string\n route: string\n model?: string\n stream: boolean\n mainLoop: {\n method: string\n strategy: string\n }\n guards: string[]\n interceptors: string[]\n tools: AgentManifestTool[]\n gateway?: {\n platforms: string[]\n sessionStrategy: string\n }\n subAgents: string[]\n memory?: { provider: string; embeddings: boolean; fts: boolean; scope: string }\n skills?: string[]\n mcpServers?: string[]\n}\n\nexport interface AgentManifestTool {\n name: string\n description: string\n risk?: string\n approval: boolean\n capabilities?: string[]\n trace: boolean\n audit: boolean\n}\n\n/**\n * Generate a serializable agent manifest from walked metadata.\n * All Function references are converted to string names for JSON safety.\n */\nexport function generateAgentManifest(walkResults: AgentWalkResult[]): AgentManifest {\n return {\n version: '1.0',\n generatedAt: new Date().toISOString(),\n agents: walkResults.map((r) => ({\n name: r.agentConfig.name,\n route: r.route,\n model: r.agentConfig.model,\n stream: r.agentConfig.stream ?? true,\n mainLoop: {\n method: String(r.mainLoop.propertyKey),\n strategy: r.mainLoop.strategy,\n },\n guards: r.guards.map((g) => g.name),\n interceptors: r.interceptors.map((i) => i.name),\n tools: r.toolboxes.flatMap((tb) =>\n tb.tools.map((t) => ({\n name: tb.namespace ? `${tb.namespace}.${t.config.name}` : t.config.name,\n description: t.config.description,\n risk: t.config.risk,\n approval: t.approval !== undefined,\n capabilities: t.capabilities,\n trace: t.trace,\n audit: t.audit,\n })),\n ),\n gateway: r.gateway\n ? { platforms: r.gateway.platforms, sessionStrategy: r.gateway.sessionStrategy ?? 'per-user' }\n : undefined,\n subAgents: r.subAgentClasses.map((cls) => cls.name),\n memory: r.memory\n ? {\n provider: r.memory.provider ?? 'built-in',\n embeddings: r.memory.embeddings ?? false,\n fts: r.memory.fts ?? false,\n scope: r.memory.scope ?? 'per-user',\n }\n : undefined,\n skills: r.skills?.include,\n mcpServers: r.mcpServers ? Object.keys(r.mcpServers) : undefined,\n })),\n }\n}\n","/**\n * agentsPlugin() — TheoKit dev-server plugin for agent routes.\n *\n * Mirrors httpDecoratorsPlugin() pattern. Registers agent HTTP endpoints\n * (POST /chat, GET /runs/:id) via the TheoKit plugin hook system.\n *\n * Per ADR D6: structural { name, register } shape (no compile-time theokit dep).\n */\nimport 'reflect-metadata'\n\nimport { compileAgent, type CompiledAgentOptions } from './bridge/agent-compiler.js'\nimport { generateAgentRoutes, type AgentRoute } from './bridge/agent-route-generator.js'\nimport type { StreamEvent } from './bridge/agent-sse-handler.js'\nimport {\n walkAgentMetadata,\n validateUniqueRoutes,\n type AgentWalkResult,\n} from './bridge/walk-agent-metadata.js'\nimport { getMixins } from './decorators/mixin.js'\n\nexport interface AgentsPluginOptions {\n /** Agent classes decorated with @Agent(). */\n agents: Function[]\n /** Toolbox classes (or use @Mixin on agents). */\n toolboxes?: Function[]\n /** Factory that creates agent runs — bridges to SDK Agent.create() + agent.send(). */\n createRunFactory?: (\n compiled: CompiledAgentOptions,\n walkResult: AgentWalkResult,\n ) => (message: string, sessionId: string) => AsyncIterable<StreamEvent>\n}\n\ninterface PluginApp {\n addHook(name: string, fn: (ctx: { request: Request }) => Promise<Response | undefined>): void\n}\n\n/**\n * Create a TheoKit plugin that mounts agent routes.\n * Web Standard Request/Response — runtime-agnostic.\n */\nexport function agentsPlugin(opts: AgentsPluginOptions) {\n let routes: CompiledRoute[] | null = null\n\n return {\n name: '@theokit/agents',\n\n register(app: PluginApp) {\n app.addHook('onRequest', async (pluginCtx) => {\n routes ??= initRoutes(opts)\n\n const request = pluginCtx.request\n const url = new URL(request.url)\n const method = request.method.toUpperCase()\n\n const matched = matchRoute(routes, method, url.pathname)\n if (!matched) return // fall through\n\n return matched.handler(request)\n })\n },\n }\n}\n\n/** Initialize routes from agent metadata (once). */\nfunction initRoutes(opts: AgentsPluginOptions): CompiledRoute[] {\n const allRoutes: AgentRoute[] = []\n const walkResults: AgentWalkResult[] = []\n\n for (const AgentClass of opts.agents) {\n // Resolve toolboxes: explicit + @Mixin\n const mixins = getMixins(AgentClass)\n const toolboxes = [...(opts.toolboxes ?? []), ...mixins]\n\n const walkResult = walkAgentMetadata(AgentClass, toolboxes)\n walkResults.push(walkResult)\n\n const compiled = compileAgent(walkResult, new Map())\n const createRun = opts.createRunFactory\n ? opts.createRunFactory(compiled, walkResult)\n : defaultCreateRun(compiled)\n\n const agentRoutes = generateAgentRoutes({\n walkResult,\n compiledOptions: compiled,\n createRun,\n })\n\n allRoutes.push(...agentRoutes)\n }\n\n validateUniqueRoutes(walkResults)\n return compileRoutePatterns(allRoutes)\n}\n\n/** Default run factory — returns a mock stream when SDK not wired. */\nfunction defaultCreateRun(compiled: CompiledAgentOptions) {\n return async function* (_message: string, _sessionId: string): AsyncGenerator<StreamEvent> {\n await Promise.resolve() // yield to event loop for async contract\n yield {\n type: 'run_started',\n runId: `run-${Date.now()}`,\n agentName: compiled.model ?? 'unknown',\n }\n yield {\n type: 'error',\n code: 'SDK_NOT_WIRED',\n message:\n 'No createRunFactory provided — wire @theokit/sdk Agent.create() to enable real agent execution.',\n retryable: false,\n }\n }\n}\n\ninterface CompiledRoute extends AgentRoute {\n regex?: RegExp\n}\n\n/** Pre-compile route patterns for efficient matching. */\nfunction compileRoutePatterns(routes: AgentRoute[]): CompiledRoute[] {\n return routes.map((r) => {\n if (!r.path.includes(':')) return r\n const regexSource = r.path.replace(/:[^/]+/g, '[^/]+')\n return { ...r, regex: RegExp(`^${regexSource}$`) }\n })\n}\n\n/** Simple route matcher — checks method + path prefix. */\nfunction matchRoute(\n routes: CompiledRoute[],\n method: string,\n pathname: string,\n): CompiledRoute | undefined {\n return routes.find((r) => {\n if (r.method !== method) return false\n if (r.regex) return r.regex.test(pathname)\n return r.path === pathname\n })\n}\n"],"mappings":"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","names":["createAgentExecutionContext","base","agent","run","toolCall","getRequest","getUrl","getClass","getMethodName","getAgent","getRun","getToolCall","isAgentContext","ctx","STRATEGY_KNOBS","compileContextWindow","options","context","maxTokens","opts","metadataOnlyKnobs","filter","knob","undefined","UNMAPPED_KNOBS","projectContextMetadataOnlyKnobs","options","opts","filter","knob","undefined","compileProjectContext","base","promptCtx","cwd","buildEnvContext","buildRepoMap","readProjectInstructions","env","repoMap","ignore","ignorePatterns","instructions","content","Boolean","join","Reflector","USE_GUARDS","Symbol","for","USE_INTERCEPTORS","USE_FILTERS","AgentWarningCode","INTERCEPTOR_METADATA_ONLY","FILTER_METADATA_ONLY","BUDGET_TOP_LEVEL_METADATA_ONLY","CONTEXT_STRATEGY_METADATA_ONLY","PROJECT_CONTEXT_KNOB_METADATA_ONLY","reflectorInstance","Reflector","walkToolbox","ToolboxClass","config","getMeta","TOOLBOX_CONFIG","methods","TOOL_METHODS","classGuards","tools","map","propertyKey","toolConfig","TOOL_CONFIG","Error","name","String","methodGuards","ref","approvalVal","get","RequiresApproval","traceVal","Trace","auditVal","Audit","guards","approval","undefined","capabilities","budget","trace","audit","class","namespace","warnUnmappedDecoratorKnobs","agentName","contextWindow","projectContext","metadataOnlyKnobs","compileContextWindow","length","console","warn","join","unmapped","projectContextMetadataOnlyKnobs","agentWalkCache","WeakMap","walkAgentMetadata","AgentClass","toolboxClasses","cached","agentConfig","AGENT_CONFIG","mainLoop","AGENT_MAIN_LOOP","interceptors","filters","agentBudget","Budget","toolboxes","gateway","getGatewayConfig","subAgentClasses","getSubAgents","memory","getMemoryConfig","skills","getSkillsConfig","mcpServers","getMcpConfig","getContextWindowConfig","getProjectContextConfig","result","route","set","validateUniqueRoutes","results","seen","Map","r","existing","compileSkills","options","autoDiscover","autoInject","enabled","include","compileTools","toolboxes","toolboxInstances","tools","tb","instance","get","class","Error","name","tool","handler","propertyKey","String","namespace","config","push","description","inputSchema","input","call","compileSubAgents","subAgentClasses","agents","cls","getAgentConfig","model","systemPrompt","compileAgent","walkResult","Map","agentConfig","memory","skills","compileSkills","undefined","context","contextWindow","compileContextWindow","projectContext","mcpServers","maxIterations","mainLoop","timeoutMs","stream","encoder","TextEncoder","streamAgentResponse","eventStream","stream","ReadableStream","start","controller","closed","safeEnqueue","chunk","enqueue","event","data","JSON","stringify","frame","type","encode","err","errorEvent","error","message","Error","close","Response","status","headers","isTextDelta","e","type","isToolCall","isToolResult","isDone","isError","isApprovalRequired","generateAgentRoutes","ctx","walkResult","createRun","getRun","basePath","route","replace","routes","push","method","path","handler","request","body","json","message","length","Response","JSON","stringify","error","code","status","headers","rawSessionId","sessionId","Date","now","streamAgentResponse","url","URL","runId","pathname","split","pop","run","asString","value","fallback","translateSystemEvent","msg","runId","type","agentName","agent_id","model","translateAssistantEvent","events","content","Array","isArray","block","b","text","push","callId","id","Date","now","toolName","name","input","translateToolCallEvent","status","output","result","durationMs","isError","error","translateStatusEvent","s","usage","inputTokens","outputTokens","totalTokens","cost","code","message","retryable","translateSdkEvent","assembleM8CreateOptions","compiled","options","applied","base","systemPrompt","skills","local","settingSources","push","context","projectContext","compileProjectContext","undefined","createSdkAgentStream","compiledTools","apiKey","envModel","model","message","_sessionId","Symbol","asyncIterator","runId","Date","now","t0","Agent","defineTool","sdk","type","code","retryable","sdkTools","map","t","name","description","inputSchema","handler","m8","length","console","debug","includes","agent","create","id","tools","run","send","sdkEvent","stream","translated","translateSdkEvent","event","result","usage","inputTokens","outputTokens","totalTokens","durationMs","cost","dispose","err","Error","BudgetExceededError","Error","agentName","actualCost","budgetLimit","toFixed","name","DelegationError","cause","message","String","asString","value","fallback","asNumber","requireApiKey","opts","apiKey","mergeTools","parentTools","subTools","subToolNames","Set","map","t","inherited","filter","has","processStreamEvent","event","acc","budget","type","content","response","toolCalls","push","toolName","input","output","cost","usage","tokens","totalTokens","Number","isFinite","delegate","SubAgentClass","walk","walkAgentMetadata","toolboxInstances","Map","toolboxes","tb","class","compiled","compileAgent","allTools","tools","Math","min","Infinity","parentBudgetRemaining","streamFactory","createSdkAgentStream","agentConfig","model","sessionId","crypto","randomUUID","err","generateAgentManifest","walkResults","version","generatedAt","Date","toISOString","agents","map","r","name","agentConfig","route","model","stream","mainLoop","method","String","propertyKey","strategy","guards","g","interceptors","i","tools","toolboxes","flatMap","tb","t","namespace","config","description","risk","approval","undefined","capabilities","trace","audit","gateway","platforms","sessionStrategy","subAgents","subAgentClasses","cls","memory","provider","embeddings","fts","scope","skills","include","mcpServers","Object","keys","agentsPlugin","opts","routes","name","register","app","addHook","pluginCtx","initRoutes","request","url","URL","method","toUpperCase","matched","matchRoute","pathname","handler","allRoutes","walkResults","AgentClass","agents","mixins","getMixins","toolboxes","walkResult","walkAgentMetadata","push","compiled","compileAgent","Map","createRun","createRunFactory","defaultCreateRun","agentRoutes","generateAgentRoutes","compiledOptions","validateUniqueRoutes","compileRoutePatterns","_message","_sessionId","Promise","resolve","type","runId","Date","now","agentName","model","code","message","retryable","map","r","path","includes","regexSource","replace","regex","RegExp","find","test"]}
|