@bastani/atomic 0.9.25-alpha.1 → 0.9.25-alpha.3
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/CHANGELOG.md +36 -0
- package/dist/builtin/intercom/package.json +2 -2
- package/dist/builtin/mcp/CHANGELOG.md +13 -0
- package/dist/builtin/mcp/index.bundle.mjs +489 -208
- package/dist/builtin/mcp/package.json +2 -2
- package/dist/builtin/subagents/package.json +3 -3
- package/dist/builtin/web-access/package.json +2 -2
- package/dist/builtin/workflows/CHANGELOG.md +12 -0
- package/dist/builtin/workflows/builtin/{chunk-e1254zvd.js → chunk-kfsnh3w7.js} +40 -12
- package/dist/builtin/workflows/builtin/{chunk-cpw5gtzg.js → chunk-rqmasd3d.js} +1 -1
- package/dist/builtin/workflows/builtin/{chunk-qy6g0baf.js → chunk-wz783pvd.js} +1 -1
- package/dist/builtin/workflows/builtin/goal.js +2 -2
- package/dist/builtin/workflows/builtin/index.js +3 -3
- package/dist/builtin/workflows/builtin/ralph.js +2 -2
- package/dist/builtin/workflows/package.json +2 -2
- package/dist/builtin/workflows/src/extension/index.bundle.mjs +472 -88
- package/dist/builtin/workflows/src/index.js +65 -28
- package/dist/core/agent-session-accessors.d.ts.map +1 -1
- package/dist/core/agent-session-accessors.js +7 -0
- package/dist/core/agent-session-accessors.js.map +1 -1
- package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
- package/dist/core/agent-session-extension-bindings.js +16 -2
- package/dist/core/agent-session-extension-bindings.js.map +1 -1
- package/dist/core/agent-session-methods.d.ts +7 -1
- package/dist/core/agent-session-methods.d.ts.map +1 -1
- package/dist/core/agent-session-methods.js.map +1 -1
- package/dist/core/agent-session-state.d.ts.map +1 -1
- package/dist/core/agent-session-state.js +3 -2
- package/dist/core/agent-session-state.js.map +1 -1
- package/dist/core/agent-session-types.d.ts +1 -0
- package/dist/core/agent-session-types.d.ts.map +1 -1
- package/dist/core/agent-session-types.js.map +1 -1
- package/dist/core/agent-session.d.ts +3 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +6 -0
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/builtin-resource-loader.d.ts.map +1 -1
- package/dist/core/builtin-resource-loader.js +13 -1
- package/dist/core/builtin-resource-loader.js.map +1 -1
- package/dist/core/extensions/api-types.d.ts +3 -0
- package/dist/core/extensions/api-types.d.ts.map +1 -1
- package/dist/core/extensions/api-types.js.map +1 -1
- package/dist/core/extensions/index.d.ts +2 -0
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js +1 -0
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader-api.d.ts.map +1 -1
- package/dist/core/extensions/loader-api.js +11 -0
- package/dist/core/extensions/loader-api.js.map +1 -1
- package/dist/core/extensions/loader-runtime.d.ts.map +1 -1
- package/dist/core/extensions/loader-runtime.js +3 -0
- package/dist/core/extensions/loader-runtime.js.map +1 -1
- package/dist/core/extensions/mcp-server-registry.d.ts.map +1 -1
- package/dist/core/extensions/mcp-server-registry.js +4 -0
- package/dist/core/extensions/mcp-server-registry.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +3 -0
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +4 -0
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/runtime-types.d.ts +3 -0
- package/dist/core/extensions/runtime-types.d.ts.map +1 -1
- package/dist/core/extensions/runtime-types.js.map +1 -1
- package/dist/core/extensions/tool-types.d.ts +1 -0
- package/dist/core/extensions/tool-types.d.ts.map +1 -1
- package/dist/core/extensions/tool-types.js.map +1 -1
- package/dist/core/extensions/workflow-run-control-hub.d.ts +23 -0
- package/dist/core/extensions/workflow-run-control-hub.d.ts.map +1 -0
- package/dist/core/extensions/workflow-run-control-hub.js +57 -0
- package/dist/core/extensions/workflow-run-control-hub.js.map +1 -0
- package/dist/core/extensions/workflow-run-control.d.ts +163 -0
- package/dist/core/extensions/workflow-run-control.d.ts.map +1 -0
- package/dist/core/extensions/workflow-run-control.js +73 -0
- package/dist/core/extensions/workflow-run-control.js.map +1 -0
- package/dist/core/mandatory-resource-loader.d.ts.map +1 -1
- package/dist/core/mandatory-resource-loader.js +9 -0
- package/dist/core/mandatory-resource-loader.js.map +1 -1
- package/dist/core/mcp-servers.d.ts +4 -1
- package/dist/core/mcp-servers.d.ts.map +1 -1
- package/dist/core/mcp-servers.js.map +1 -1
- package/dist/core/oauth-provider-metadata.js +1 -1
- package/dist/core/oauth-provider-metadata.js.map +1 -1
- package/dist/core/remote-catalog-provider.d.ts.map +1 -1
- package/dist/core/remote-catalog-provider.js +4 -9
- package/dist/core/remote-catalog-provider.js.map +1 -1
- package/dist/core/resource-loader-types.d.ts +4 -0
- package/dist/core/resource-loader-types.d.ts.map +1 -1
- package/dist/core/resource-loader-types.js.map +1 -1
- package/dist/core/sdk.js +1 -0
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/structured-output/index.d.ts.map +1 -1
- package/dist/core/structured-output/index.js +3 -1
- package/dist/core/structured-output/index.js.map +1 -1
- package/dist/core/tool-loadout.d.ts +1 -0
- package/dist/core/tool-loadout.d.ts.map +1 -1
- package/dist/core/tool-loadout.js +3 -0
- package/dist/core/tool-loadout.js.map +1 -1
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +11 -30
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/extensions/codemode/execute.d.ts.map +1 -1
- package/dist/extensions/codemode/execute.js +26 -0
- package/dist/extensions/codemode/execute.js.map +1 -1
- package/dist/extensions/codemode/renderer.d.ts.map +1 -1
- package/dist/extensions/codemode/renderer.js +38 -23
- package/dist/extensions/codemode/renderer.js.map +1 -1
- package/dist/extensions/codemode/tool.d.ts.map +1 -1
- package/dist/extensions/codemode/tool.js +22 -10
- package/dist/extensions/codemode/tool.js.map +1 -1
- package/dist/extensions/tool-search/tool.d.ts +1 -1
- package/dist/extensions/tool-search/tool.d.ts.map +1 -1
- package/dist/extensions/tool-search/tool.js +3 -13
- package/dist/extensions/tool-search/tool.js.map +1 -1
- package/dist/index-extensions.d.ts +2 -1
- package/dist/index-extensions.d.ts.map +1 -1
- package/dist/index-extensions.js +1 -1
- package/dist/index-extensions.js.map +1 -1
- package/dist/modes/interactive/components/visual-truncate.d.ts +27 -3
- package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
- package/dist/modes/interactive/components/visual-truncate.js +39 -6
- package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
- package/docs/extensions/events.md +2 -0
- package/docs/mcp-servers.md +47 -0
- package/docs/providers.md +9 -1
- package/docs/sdk/reference.md +22 -0
- package/docs/sdk/structured-decisions.md +2 -0
- package/docs/sdk.md +67 -1
- package/docs/settings.md +2 -0
- package/docs/tools.md +6 -0
- package/docs/workflows/operations.md +3 -1
- package/examples/extensions/built-in-tool-renderer.ts +16 -40
- package/examples/extensions/minimal-mode.ts +28 -108
- package/npm-shrinkwrap.json +69 -69
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader-runtime.js","sourceRoot":"","sources":["../../../src/core/extensions/loader-runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import { extensionWorkOpen, trackExtensionWork } from \"./extension-work.ts\";\nimport { hostInputError } from \"./host-input.js\";\nimport { McpServerRegistry } from \"./mcp-server-registry.ts\";\nimport { STALE_EXTENSION_CONTEXT_MESSAGE } from \"./stale-context.ts\";\nimport type {\n\tExtension,\n\tExtensionFlag,\n\tExtensionRuntime,\n\tExtensionShortcut,\n\tRegisteredCommand,\n\tRegisteredTool,\n} from \"./types.ts\";\nimport { WorkflowActivityHub } from \"./workflow-activity-hub.js\";\n\n/** Prepared generations do not own session event delivery until bound by a runner. */\nexport const boundExtensionRuntimes = new WeakSet<ExtensionRuntime>();\n\nexport async function runResourceRegistrationBatch<T>(\n\truntime: ExtensionRuntime,\n\trun: () => Promise<T>,\n\tcompletion = false,\n): Promise<T> {\n\tif (!completion && !extensionWorkOpen(runtime)) throw hostInputError(\"SessionClosed\");\n\treturn trackExtensionWork(runtime, async () => {\n\t\tif (!runtime.beginResourceRegistrationBatch || !runtime.endResourceRegistrationBatch) return run();\n\t\truntime.beginResourceRegistrationBatch();\n\t\ttry {\n\t\t\treturn await run();\n\t\t} finally {\n\t\t\truntime.endResourceRegistrationBatch();\n\t\t}\n\t});\n}\n\nfunction registrationKey(extension: Extension, name: string): string {\n\treturn `${extension.path}\\0${name}`;\n}\n\n/** Create a runtime with throwing stubs for action methods. */\nexport function createExtensionRuntime(): ExtensionRuntime {\n\tconst notInitialized = () => {\n\t\tthrow new Error(\"Extension runtime not initialized. Action methods cannot be called during extension loading.\");\n\t};\n\tconst state: { staleMessage?: string } = {};\n\tconst eventBusUnsubscribers = new Set<() => void>();\n\tlet batchDepth = 0;\n\tconst pendingTools = new Map<string, { extension: Extension; name: string; registration: RegisteredTool }>();\n\tconst pendingCommands = new Map<string, { extension: Extension; name: string; registration: RegisteredCommand }>();\n\tconst pendingFlags = new Map<\n\t\tstring,\n\t\t{ extension: Extension; name: string; registration: ExtensionFlag; defaultValue?: boolean | string }\n\t>();\n\tconst pendingShortcuts = new Map<string, { extension: Extension; name: string; registration: ExtensionShortcut }>();\n\tconst shouldStage = (extension: Extension) =>\n\t\tbatchDepth > 0 && extension.sourceInfo.configurationOrigin === \"inherited-pi\";\n\tlet pendingActiveToolNames: string[] | undefined;\n\tconst assertActive = () => {\n\t\tif (state.staleMessage) throw new Error(state.staleMessage);\n\t};\n\n\tconst runtime: ExtensionRuntime = {\n\t\tsendMessage: notInitialized,\n\t\tworkflowActivityHub: new WorkflowActivityHub((operation) =>\n\t\t\textensionWorkOpen(runtime) ? trackExtensionWork(runtime, operation) : Promise.resolve(),\n\t\t),\n\t\tmcpServerRegistry: new McpServerRegistry(),\n\t\tsendMessages: notInitialized,\n\t\tsendUserMessage: notInitialized,\n\t\tappendEntry: notInitialized,\n\t\tsetSessionName: notInitialized,\n\t\tgetSessionName: notInitialized,\n\t\tsetLabel: notInitialized,\n\t\tgetActiveTools: notInitialized,\n\t\tgetAllTools: notInitialized,\n\t\tsetActiveTools: notInitialized,\n\t\trefreshTools: () => {},\n\t\tgetCommands: notInitialized,\n\t\tsetModel: () => Promise.reject(new Error(\"Extension runtime not initialized\")),\n\t\tgetThinkingLevel: notInitialized,\n\t\tsetThinkingLevel: notInitialized,\n\t\tflagValues: new Map(),\n\t\texplicitFlagNames: new Set(),\n\t\tflagOwners: new Map(),\n\t\tflagOwnerOrigins: new Map(),\n\t\tpendingProviderRegistrations: [],\n\t\textensionProviderIds: new Set(),\n\t\tcanRegisterResource: () => true,\n\t\tbeginResourceRegistrationBatch: () => {\n\t\t\tbatchDepth += 1;\n\t\t},\n\t\tendResourceRegistrationBatch: () => {\n\t\t\tbatchDepth -= 1;\n\t\t\tif (batchDepth !== 0) return;\n\t\t\tconst refreshTools = pendingTools.size > 0;\n\t\t\tfor (const pending of pendingTools.values()) pending.extension.tools.set(pending.name, pending.registration);\n\t\t\tfor (const pending of pendingCommands.values())\n\t\t\t\tpending.extension.commands.set(pending.name, pending.registration);\n\t\t\tfor (const pending of pendingFlags.values()) {\n\t\t\t\tpending.extension.flags.set(pending.name, pending.registration);\n\t\t\t\tconst ownerOrigin = runtime.flagOwnerOrigins?.get(pending.name);\n\t\t\t\tif (\n\t\t\t\t\townerOrigin === pending.extension.sourceInfo.configurationOrigin &&\n\t\t\t\t\tpending.defaultValue !== undefined &&\n\t\t\t\t\t!runtime.flagValues.has(pending.name)\n\t\t\t\t) {\n\t\t\t\t\truntime.flagValues.set(pending.name, pending.defaultValue);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const pending of pendingShortcuts.values())\n\t\t\t\tpending.extension.shortcuts.set(pending.name as never, pending.registration);\n\t\t\tpendingTools.clear();\n\t\t\tpendingCommands.clear();\n\t\t\tpendingFlags.clear();\n\t\t\tpendingShortcuts.clear();\n\t\t\tif (refreshTools) runtime.refreshTools();\n\t\t\tif (pendingActiveToolNames) runtime.setActiveTools(pendingActiveToolNames);\n\t\t\tpendingActiveToolNames = undefined;\n\t\t},\n\t\tstageToolRegistration: (extension, name, registration) => {\n\t\t\tif (!shouldStage(extension)) return false;\n\t\t\tpendingTools.set(registrationKey(extension, name), { extension, name, registration });\n\t\t\tif (pendingActiveToolNames && !pendingActiveToolNames.includes(name)) pendingActiveToolNames.push(name);\n\t\t\treturn true;\n\t\t},\n\t\tstageCommandRegistration: (extension, name, registration) => {\n\t\t\tif (!shouldStage(extension)) return false;\n\t\t\tpendingCommands.set(registrationKey(extension, name), { extension, name, registration });\n\t\t\treturn true;\n\t\t},\n\t\tstageFlagRegistration: (extension, name, registration, defaultValue) => {\n\t\t\tif (!shouldStage(extension)) return false;\n\t\t\tconst key = registrationKey(extension, name);\n\t\t\tconst firstDefault = pendingFlags.get(key)?.defaultValue;\n\t\t\tpendingFlags.set(key, { extension, name, registration, defaultValue: firstDefault ?? defaultValue });\n\t\t\truntime.flagOwners ??= new Map();\n\t\t\tconst owners = runtime.flagOwners;\n\t\t\truntime.flagOwnerOrigins ??= new Map();\n\t\t\tconst ownerOrigins = runtime.flagOwnerOrigins;\n\t\t\tif (!owners.has(name)) {\n\t\t\t\towners.set(name, extension.path);\n\t\t\t\townerOrigins.set(name, extension.sourceInfo.configurationOrigin);\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\tstageShortcutRegistration: (extension, name, registration) => {\n\t\t\tif (!shouldStage(extension)) return false;\n\t\t\tpendingShortcuts.set(registrationKey(extension, name), { extension, name, registration });\n\t\t\treturn true;\n\t\t},\n\t\thasPendingResourceRegistration: (extension, resourceType, name) => {\n\t\t\tconst key = registrationKey(extension, name);\n\t\t\tif (resourceType === \"tool\") return pendingTools.has(key);\n\t\t\tif (resourceType === \"command\") return pendingCommands.has(key);\n\t\t\tif (resourceType === \"flag\") return pendingFlags.has(key);\n\t\t\tif (resourceType === \"shortcut\") return pendingShortcuts.has(key);\n\t\t\treturn false;\n\t\t},\n\t\tdeletePendingResourceRegistration: (extension, resourceType, name) => {\n\t\t\tconst key = registrationKey(extension, name);\n\t\t\tif (resourceType === \"tool\") pendingTools.delete(key);\n\t\t\telse if (resourceType === \"command\") pendingCommands.delete(key);\n\t\t\telse if (resourceType === \"flag\") pendingFlags.delete(key);\n\t\t\telse if (resourceType === \"shortcut\") pendingShortcuts.delete(key);\n\t\t},\n\t\tgetPendingFlagDefault: (ownerPath, name) => {\n\t\t\tif (!pendingFlags.has(`${ownerPath}\\0${name}`)) return undefined;\n\t\t\treturn [...pendingFlags.values()].find(\n\t\t\t\t(pending) => pending.name === name && pending.defaultValue !== undefined,\n\t\t\t)?.defaultValue;\n\t\t},\n\t\tgetAllToolsAfterRegistration: (extension) => {\n\t\t\tconst tools = runtime.getAllTools();\n\t\t\tif (extension.sourceInfo.configurationOrigin !== \"inherited-pi\") return tools;\n\t\t\tconst names = new Set(tools.map((tool) => tool.name));\n\t\t\tfor (const pending of pendingTools.values()) {\n\t\t\t\tif (names.has(pending.name)) continue;\n\t\t\t\tconst { definition, sourceInfo } = pending.registration;\n\t\t\t\ttools.push({\n\t\t\t\t\tname: definition.name,\n\t\t\t\t\tdescription: definition.description,\n\t\t\t\t\tparameters: definition.parameters,\n\t\t\t\t\t...(Object.hasOwn(definition, \"constrainedSampling\")\n\t\t\t\t\t\t? { constrainedSampling: definition.constrainedSampling }\n\t\t\t\t\t\t: {}),\n\t\t\t\t\tpromptGuidelines: definition.promptGuidelines,\n\t\t\t\t\texposure: definition.exposure ?? \"direct\",\n\t\t\t\t\tnamespace: definition.namespace,\n\t\t\t\t\tannotations: definition.annotations,\n\t\t\t\t\tsourceInfo,\n\t\t\t\t});\n\t\t\t\tnames.add(pending.name);\n\t\t\t}\n\t\t\treturn tools;\n\t\t},\n\t\tgetCommandsAfterRegistration: (extension) => {\n\t\t\tif (extension.sourceInfo.configurationOrigin !== \"inherited-pi\") return runtime.getCommands();\n\t\t\tconst active = [...pendingCommands.values()].map((pending) => ({\n\t\t\t\t...pending,\n\t\t\t\tprevious: pending.extension.commands.get(pending.name),\n\t\t\t}));\n\t\t\tfor (const pending of active) pending.extension.commands.set(pending.name, pending.registration);\n\t\t\ttry {\n\t\t\t\treturn runtime.getCommands();\n\t\t\t} finally {\n\t\t\t\tfor (const pending of active) {\n\t\t\t\t\tif (pending.previous) pending.extension.commands.set(pending.name, pending.previous);\n\t\t\t\t\telse pending.extension.commands.delete(pending.name);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\trefreshToolsAfterRegistration: () => {\n\t\t\truntime.refreshTools();\n\t\t\tif (batchDepth > 0 && pendingActiveToolNames) pendingActiveToolNames = runtime.getActiveTools();\n\t\t},\n\t\tapplyFlagDefaultAfterRegistration: (name, _ownerPath, value, configurationOrigin) => {\n\t\t\tif (runtime.flagOwnerOrigins?.get(name) === configurationOrigin && !runtime.flagValues.has(name)) {\n\t\t\t\truntime.flagValues.set(name, value);\n\t\t\t}\n\t\t},\n\t\tgetActiveToolsAfterRegistration: (extension) => {\n\t\t\tconst active = runtime.getActiveTools();\n\t\t\tif (extension.sourceInfo.configurationOrigin !== \"inherited-pi\") return active;\n\t\t\tif (pendingActiveToolNames) return [...pendingActiveToolNames];\n\t\t\tconst names = new Set(active);\n\t\t\tfor (const pending of pendingTools.values()) names.add(pending.name);\n\t\t\treturn [...names];\n\t\t},\n\t\tsetActiveToolsAfterRegistration: (extension, toolNames) => {\n\t\t\tif (batchDepth === 0) return false;\n\t\t\tpendingActiveToolNames = [...toolNames];\n\t\t\tif (extension.sourceInfo.configurationOrigin !== \"inherited-pi\") return false;\n\t\t\tconst liveNames = new Set(runtime.getAllTools().map((tool) => tool.name));\n\t\t\truntime.setActiveTools(toolNames.filter((name) => liveNames.has(name)));\n\t\t\treturn true;\n\t\t},\n\t\tassertActive,\n\t\tinvalidate: (message) => {\n\t\t\tif (state.staleMessage) return;\n\t\t\tstate.staleMessage = message ?? STALE_EXTENSION_CONTEXT_MESSAGE;\n\t\t\tconst failures: unknown[] = [];\n\t\t\ttry {\n\t\t\t\truntime.workflowActivityHub.dispose();\n\t\t\t} catch (error) {\n\t\t\t\tfailures.push(error);\n\t\t\t}\n\t\t\tfor (const unsubscribe of eventBusUnsubscribers) {\n\t\t\t\ttry {\n\t\t\t\t\tunsubscribe();\n\t\t\t\t} catch (error) {\n\t\t\t\t\tfailures.push(error);\n\t\t\t\t}\n\t\t\t}\n\t\t\teventBusUnsubscribers.clear();\n\t\t\tif (failures.length)\n\t\t\t\tthrow Object.assign(new AggregateError(failures, \"Extension resource release failed\"), {\n\t\t\t\t\tcode: \"ShutdownFailed\",\n\t\t\t\t});\n\t\t},\n\t\ttrackEventBusSubscription: (unsubscribe) => {\n\t\t\tlet active = true;\n\t\t\tconst trackedUnsubscribe = () => {\n\t\t\t\tif (!active) return;\n\t\t\t\tactive = false;\n\t\t\t\teventBusUnsubscribers.delete(trackedUnsubscribe);\n\t\t\t\tunsubscribe();\n\t\t\t};\n\t\t\teventBusUnsubscribers.add(trackedUnsubscribe);\n\t\t\treturn trackedUnsubscribe;\n\t\t},\n\t\tregisterProvider: (nameOrProvider, configOrPath, extensionPath = \"<unknown>\") => {\n\t\t\tif (typeof nameOrProvider === \"string\") {\n\t\t\t\truntime.pendingProviderRegistrations.push({\n\t\t\t\t\tname: nameOrProvider,\n\t\t\t\t\tconfig: configOrPath as import(\"./types.ts\").ProviderConfig,\n\t\t\t\t\textensionPath: extensionPath as string,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\truntime.pendingProviderRegistrations.push({\n\t\t\t\t\tprovider: nameOrProvider,\n\t\t\t\t\textensionPath: typeof configOrPath === \"string\" ? configOrPath : (extensionPath as string),\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tunregisterProvider: (name, extensionPath) => {\n\t\t\truntime.pendingProviderRegistrations = runtime.pendingProviderRegistrations.filter((registration) => {\n\t\t\t\tconst matchesName =\n\t\t\t\t\t\"provider\" in registration ? registration.provider.id === name : registration.name === name;\n\t\t\t\tif (!matchesName) return true;\n\t\t\t\t// A transactional rollback owns only what its own extension\n\t\t\t\t// registered. Without this, a later extension reusing a provider\n\t\t\t\t// name would drop an earlier extension's working registration.\n\t\t\t\treturn extensionPath !== undefined && registration.extensionPath !== extensionPath;\n\t\t\t});\n\t\t},\n\t};\n\treturn runtime;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"loader-runtime.js","sourceRoot":"","sources":["../../../src/core/extensions/loader-runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import { extensionWorkOpen, trackExtensionWork } from \"./extension-work.ts\";\nimport { hostInputError } from \"./host-input.js\";\nimport { McpServerRegistry } from \"./mcp-server-registry.ts\";\nimport { STALE_EXTENSION_CONTEXT_MESSAGE } from \"./stale-context.ts\";\nimport type {\n\tExtension,\n\tExtensionFlag,\n\tExtensionRuntime,\n\tExtensionShortcut,\n\tRegisteredCommand,\n\tRegisteredTool,\n} from \"./types.ts\";\nimport { WorkflowActivityHub } from \"./workflow-activity-hub.js\";\nimport { WorkflowRunControlHub } from \"./workflow-run-control-hub.js\";\n\n/** Prepared generations do not own session event delivery until bound by a runner. */\nexport const boundExtensionRuntimes = new WeakSet<ExtensionRuntime>();\n\nexport async function runResourceRegistrationBatch<T>(\n\truntime: ExtensionRuntime,\n\trun: () => Promise<T>,\n\tcompletion = false,\n): Promise<T> {\n\tif (!completion && !extensionWorkOpen(runtime)) throw hostInputError(\"SessionClosed\");\n\treturn trackExtensionWork(runtime, async () => {\n\t\tif (!runtime.beginResourceRegistrationBatch || !runtime.endResourceRegistrationBatch) return run();\n\t\truntime.beginResourceRegistrationBatch();\n\t\ttry {\n\t\t\treturn await run();\n\t\t} finally {\n\t\t\truntime.endResourceRegistrationBatch();\n\t\t}\n\t});\n}\n\nfunction registrationKey(extension: Extension, name: string): string {\n\treturn `${extension.path}\\0${name}`;\n}\n\n/** Create a runtime with throwing stubs for action methods. */\nexport function createExtensionRuntime(): ExtensionRuntime {\n\tconst notInitialized = () => {\n\t\tthrow new Error(\"Extension runtime not initialized. Action methods cannot be called during extension loading.\");\n\t};\n\tconst state: { staleMessage?: string } = {};\n\tconst eventBusUnsubscribers = new Set<() => void>();\n\tlet batchDepth = 0;\n\tconst pendingTools = new Map<string, { extension: Extension; name: string; registration: RegisteredTool }>();\n\tconst pendingCommands = new Map<string, { extension: Extension; name: string; registration: RegisteredCommand }>();\n\tconst pendingFlags = new Map<\n\t\tstring,\n\t\t{ extension: Extension; name: string; registration: ExtensionFlag; defaultValue?: boolean | string }\n\t>();\n\tconst pendingShortcuts = new Map<string, { extension: Extension; name: string; registration: ExtensionShortcut }>();\n\tconst shouldStage = (extension: Extension) =>\n\t\tbatchDepth > 0 && extension.sourceInfo.configurationOrigin === \"inherited-pi\";\n\tlet pendingActiveToolNames: string[] | undefined;\n\tconst assertActive = () => {\n\t\tif (state.staleMessage) throw new Error(state.staleMessage);\n\t};\n\n\tconst runtime: ExtensionRuntime = {\n\t\tsendMessage: notInitialized,\n\t\tworkflowActivityHub: new WorkflowActivityHub((operation) =>\n\t\t\textensionWorkOpen(runtime) ? trackExtensionWork(runtime, operation) : Promise.resolve(),\n\t\t),\n\t\tworkflowRunControlHub: new WorkflowRunControlHub(),\n\t\tmcpServerRegistry: new McpServerRegistry(),\n\t\tsendMessages: notInitialized,\n\t\tsendUserMessage: notInitialized,\n\t\tappendEntry: notInitialized,\n\t\tsetSessionName: notInitialized,\n\t\tgetSessionName: notInitialized,\n\t\tsetLabel: notInitialized,\n\t\tgetActiveTools: notInitialized,\n\t\tgetAllTools: notInitialized,\n\t\tsetActiveTools: notInitialized,\n\t\trefreshTools: () => {},\n\t\tgetCommands: notInitialized,\n\t\tsetModel: () => Promise.reject(new Error(\"Extension runtime not initialized\")),\n\t\tgetThinkingLevel: notInitialized,\n\t\tsetThinkingLevel: notInitialized,\n\t\tflagValues: new Map(),\n\t\texplicitFlagNames: new Set(),\n\t\tflagOwners: new Map(),\n\t\tflagOwnerOrigins: new Map(),\n\t\tpendingProviderRegistrations: [],\n\t\textensionProviderIds: new Set(),\n\t\tcanRegisterResource: () => true,\n\t\tbeginResourceRegistrationBatch: () => {\n\t\t\tbatchDepth += 1;\n\t\t},\n\t\tendResourceRegistrationBatch: () => {\n\t\t\tbatchDepth -= 1;\n\t\t\tif (batchDepth !== 0) return;\n\t\t\tconst refreshTools = pendingTools.size > 0;\n\t\t\tfor (const pending of pendingTools.values()) pending.extension.tools.set(pending.name, pending.registration);\n\t\t\tfor (const pending of pendingCommands.values())\n\t\t\t\tpending.extension.commands.set(pending.name, pending.registration);\n\t\t\tfor (const pending of pendingFlags.values()) {\n\t\t\t\tpending.extension.flags.set(pending.name, pending.registration);\n\t\t\t\tconst ownerOrigin = runtime.flagOwnerOrigins?.get(pending.name);\n\t\t\t\tif (\n\t\t\t\t\townerOrigin === pending.extension.sourceInfo.configurationOrigin &&\n\t\t\t\t\tpending.defaultValue !== undefined &&\n\t\t\t\t\t!runtime.flagValues.has(pending.name)\n\t\t\t\t) {\n\t\t\t\t\truntime.flagValues.set(pending.name, pending.defaultValue);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const pending of pendingShortcuts.values())\n\t\t\t\tpending.extension.shortcuts.set(pending.name as never, pending.registration);\n\t\t\tpendingTools.clear();\n\t\t\tpendingCommands.clear();\n\t\t\tpendingFlags.clear();\n\t\t\tpendingShortcuts.clear();\n\t\t\tif (refreshTools) runtime.refreshTools();\n\t\t\tif (pendingActiveToolNames) runtime.setActiveTools(pendingActiveToolNames);\n\t\t\tpendingActiveToolNames = undefined;\n\t\t},\n\t\tstageToolRegistration: (extension, name, registration) => {\n\t\t\tif (!shouldStage(extension)) return false;\n\t\t\tpendingTools.set(registrationKey(extension, name), { extension, name, registration });\n\t\t\tif (pendingActiveToolNames && !pendingActiveToolNames.includes(name)) pendingActiveToolNames.push(name);\n\t\t\treturn true;\n\t\t},\n\t\tstageCommandRegistration: (extension, name, registration) => {\n\t\t\tif (!shouldStage(extension)) return false;\n\t\t\tpendingCommands.set(registrationKey(extension, name), { extension, name, registration });\n\t\t\treturn true;\n\t\t},\n\t\tstageFlagRegistration: (extension, name, registration, defaultValue) => {\n\t\t\tif (!shouldStage(extension)) return false;\n\t\t\tconst key = registrationKey(extension, name);\n\t\t\tconst firstDefault = pendingFlags.get(key)?.defaultValue;\n\t\t\tpendingFlags.set(key, { extension, name, registration, defaultValue: firstDefault ?? defaultValue });\n\t\t\truntime.flagOwners ??= new Map();\n\t\t\tconst owners = runtime.flagOwners;\n\t\t\truntime.flagOwnerOrigins ??= new Map();\n\t\t\tconst ownerOrigins = runtime.flagOwnerOrigins;\n\t\t\tif (!owners.has(name)) {\n\t\t\t\towners.set(name, extension.path);\n\t\t\t\townerOrigins.set(name, extension.sourceInfo.configurationOrigin);\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\tstageShortcutRegistration: (extension, name, registration) => {\n\t\t\tif (!shouldStage(extension)) return false;\n\t\t\tpendingShortcuts.set(registrationKey(extension, name), { extension, name, registration });\n\t\t\treturn true;\n\t\t},\n\t\thasPendingResourceRegistration: (extension, resourceType, name) => {\n\t\t\tconst key = registrationKey(extension, name);\n\t\t\tif (resourceType === \"tool\") return pendingTools.has(key);\n\t\t\tif (resourceType === \"command\") return pendingCommands.has(key);\n\t\t\tif (resourceType === \"flag\") return pendingFlags.has(key);\n\t\t\tif (resourceType === \"shortcut\") return pendingShortcuts.has(key);\n\t\t\treturn false;\n\t\t},\n\t\tdeletePendingResourceRegistration: (extension, resourceType, name) => {\n\t\t\tconst key = registrationKey(extension, name);\n\t\t\tif (resourceType === \"tool\") pendingTools.delete(key);\n\t\t\telse if (resourceType === \"command\") pendingCommands.delete(key);\n\t\t\telse if (resourceType === \"flag\") pendingFlags.delete(key);\n\t\t\telse if (resourceType === \"shortcut\") pendingShortcuts.delete(key);\n\t\t},\n\t\tgetPendingFlagDefault: (ownerPath, name) => {\n\t\t\tif (!pendingFlags.has(`${ownerPath}\\0${name}`)) return undefined;\n\t\t\treturn [...pendingFlags.values()].find(\n\t\t\t\t(pending) => pending.name === name && pending.defaultValue !== undefined,\n\t\t\t)?.defaultValue;\n\t\t},\n\t\tgetAllToolsAfterRegistration: (extension) => {\n\t\t\tconst tools = runtime.getAllTools();\n\t\t\tif (extension.sourceInfo.configurationOrigin !== \"inherited-pi\") return tools;\n\t\t\tconst names = new Set(tools.map((tool) => tool.name));\n\t\t\tfor (const pending of pendingTools.values()) {\n\t\t\t\tif (names.has(pending.name)) continue;\n\t\t\t\tconst { definition, sourceInfo } = pending.registration;\n\t\t\t\ttools.push({\n\t\t\t\t\tname: definition.name,\n\t\t\t\t\tdescription: definition.description,\n\t\t\t\t\tparameters: definition.parameters,\n\t\t\t\t\t...(Object.hasOwn(definition, \"constrainedSampling\")\n\t\t\t\t\t\t? { constrainedSampling: definition.constrainedSampling }\n\t\t\t\t\t\t: {}),\n\t\t\t\t\tpromptGuidelines: definition.promptGuidelines,\n\t\t\t\t\texposure: definition.exposure ?? \"direct\",\n\t\t\t\t\tnamespace: definition.namespace,\n\t\t\t\t\tannotations: definition.annotations,\n\t\t\t\t\tsourceInfo,\n\t\t\t\t});\n\t\t\t\tnames.add(pending.name);\n\t\t\t}\n\t\t\treturn tools;\n\t\t},\n\t\tgetCommandsAfterRegistration: (extension) => {\n\t\t\tif (extension.sourceInfo.configurationOrigin !== \"inherited-pi\") return runtime.getCommands();\n\t\t\tconst active = [...pendingCommands.values()].map((pending) => ({\n\t\t\t\t...pending,\n\t\t\t\tprevious: pending.extension.commands.get(pending.name),\n\t\t\t}));\n\t\t\tfor (const pending of active) pending.extension.commands.set(pending.name, pending.registration);\n\t\t\ttry {\n\t\t\t\treturn runtime.getCommands();\n\t\t\t} finally {\n\t\t\t\tfor (const pending of active) {\n\t\t\t\t\tif (pending.previous) pending.extension.commands.set(pending.name, pending.previous);\n\t\t\t\t\telse pending.extension.commands.delete(pending.name);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\trefreshToolsAfterRegistration: () => {\n\t\t\truntime.refreshTools();\n\t\t\tif (batchDepth > 0 && pendingActiveToolNames) pendingActiveToolNames = runtime.getActiveTools();\n\t\t},\n\t\tapplyFlagDefaultAfterRegistration: (name, _ownerPath, value, configurationOrigin) => {\n\t\t\tif (runtime.flagOwnerOrigins?.get(name) === configurationOrigin && !runtime.flagValues.has(name)) {\n\t\t\t\truntime.flagValues.set(name, value);\n\t\t\t}\n\t\t},\n\t\tgetActiveToolsAfterRegistration: (extension) => {\n\t\t\tconst active = runtime.getActiveTools();\n\t\t\tif (extension.sourceInfo.configurationOrigin !== \"inherited-pi\") return active;\n\t\t\tif (pendingActiveToolNames) return [...pendingActiveToolNames];\n\t\t\tconst names = new Set(active);\n\t\t\tfor (const pending of pendingTools.values()) names.add(pending.name);\n\t\t\treturn [...names];\n\t\t},\n\t\tsetActiveToolsAfterRegistration: (extension, toolNames) => {\n\t\t\tif (batchDepth === 0) return false;\n\t\t\tpendingActiveToolNames = [...toolNames];\n\t\t\tif (extension.sourceInfo.configurationOrigin !== \"inherited-pi\") return false;\n\t\t\tconst liveNames = new Set(runtime.getAllTools().map((tool) => tool.name));\n\t\t\truntime.setActiveTools(toolNames.filter((name) => liveNames.has(name)));\n\t\t\treturn true;\n\t\t},\n\t\tassertActive,\n\t\tinvalidate: (message) => {\n\t\t\tif (state.staleMessage) return;\n\t\t\tstate.staleMessage = message ?? STALE_EXTENSION_CONTEXT_MESSAGE;\n\t\t\tconst failures: unknown[] = [];\n\t\t\ttry {\n\t\t\t\truntime.workflowActivityHub.dispose();\n\t\t\t} catch (error) {\n\t\t\t\tfailures.push(error);\n\t\t\t}\n\t\t\truntime.workflowRunControlHub.dispose();\n\t\t\tfor (const unsubscribe of eventBusUnsubscribers) {\n\t\t\t\ttry {\n\t\t\t\t\tunsubscribe();\n\t\t\t\t} catch (error) {\n\t\t\t\t\tfailures.push(error);\n\t\t\t\t}\n\t\t\t}\n\t\t\teventBusUnsubscribers.clear();\n\t\t\tif (failures.length)\n\t\t\t\tthrow Object.assign(new AggregateError(failures, \"Extension resource release failed\"), {\n\t\t\t\t\tcode: \"ShutdownFailed\",\n\t\t\t\t});\n\t\t},\n\t\ttrackEventBusSubscription: (unsubscribe) => {\n\t\t\tlet active = true;\n\t\t\tconst trackedUnsubscribe = () => {\n\t\t\t\tif (!active) return;\n\t\t\t\tactive = false;\n\t\t\t\teventBusUnsubscribers.delete(trackedUnsubscribe);\n\t\t\t\tunsubscribe();\n\t\t\t};\n\t\t\teventBusUnsubscribers.add(trackedUnsubscribe);\n\t\t\treturn trackedUnsubscribe;\n\t\t},\n\t\tregisterProvider: (nameOrProvider, configOrPath, extensionPath = \"<unknown>\") => {\n\t\t\tif (typeof nameOrProvider === \"string\") {\n\t\t\t\truntime.pendingProviderRegistrations.push({\n\t\t\t\t\tname: nameOrProvider,\n\t\t\t\t\tconfig: configOrPath as import(\"./types.ts\").ProviderConfig,\n\t\t\t\t\textensionPath: extensionPath as string,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\truntime.pendingProviderRegistrations.push({\n\t\t\t\t\tprovider: nameOrProvider,\n\t\t\t\t\textensionPath: typeof configOrPath === \"string\" ? configOrPath : (extensionPath as string),\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tunregisterProvider: (name, extensionPath) => {\n\t\t\truntime.pendingProviderRegistrations = runtime.pendingProviderRegistrations.filter((registration) => {\n\t\t\t\tconst matchesName =\n\t\t\t\t\t\"provider\" in registration ? registration.provider.id === name : registration.name === name;\n\t\t\t\tif (!matchesName) return true;\n\t\t\t\t// A transactional rollback owns only what its own extension\n\t\t\t\t// registered. Without this, a later extension reusing a provider\n\t\t\t\t// name would drop an earlier extension's working registration.\n\t\t\t\treturn extensionPath !== undefined && registration.extensionPath !== extensionPath;\n\t\t\t});\n\t\t},\n\t};\n\treturn runtime;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server-registry.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/mcp-server-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,KAAK,sBAAsB,GAAG,IAAI,CAAC,wBAAwB,EAAE,eAAe,CAAC,CAAC;AAE9E;;;GAGG;AACH,qBAAa,iBAAiB;IAC7B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqC;IACpE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4C;IAC1E,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IAEnD,6EAA6E;IAC7E,gBAAgB,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI,CAErD;IAED,2FAA2F;IAC3F,QAAQ,CAAC,YAAY,EAAE,qBAAqB,GAAG,qBAAqB,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"mcp-server-registry.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/mcp-server-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,KAAK,sBAAsB,GAAG,IAAI,CAAC,wBAAwB,EAAE,eAAe,CAAC,CAAC;AAE9E;;;GAGG;AACH,qBAAa,iBAAiB;IAC7B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqC;IACpE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4C;IAC1E,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IAEnD,6EAA6E;IAC7E,gBAAgB,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI,CAErD;IAED,2FAA2F;IAC3F,QAAQ,CAAC,YAAY,EAAE,qBAAqB,GAAG,qBAAqB,GAAG,SAAS,CAW/E;IAED,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,qBAAqB,GAAG,SAAS,GAAG,IAAI,CAIvE;IAED,IAAI,IAAI,qBAAqB,EAAE,CAS9B;IAED,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAK1C;IAED,OAAO,CAAC,MAAM;CAGd"}
|
|
@@ -13,6 +13,10 @@ export class McpServerRegistry {
|
|
|
13
13
|
}
|
|
14
14
|
/** Returns the registration it replaced so a rolled-back extension load can restore it. */
|
|
15
15
|
register(contribution) {
|
|
16
|
+
const clash = this.list().find((server) => server.name !== contribution.name &&
|
|
17
|
+
server.name.replace(/-/g, "_") === contribution.name.replace(/-/g, "_"));
|
|
18
|
+
if (clash)
|
|
19
|
+
throw new Error(`MCP server "${contribution.name}" conflicts with registered server "${clash.name}"`);
|
|
16
20
|
const previous = this.registrations.get(contribution.name);
|
|
17
21
|
this.registrations.set(contribution.name, contribution);
|
|
18
22
|
this.notify();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server-registry.js","sourceRoot":"","sources":["../../../src/core/extensions/mcp-server-registry.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IACZ,cAAc,GAAG,IAAI,GAAG,EAA0B,CAAC;IACnD,aAAa,GAAG,IAAI,GAAG,EAAiC,CAAC;IACzD,SAAS,GAAG,IAAI,GAAG,EAAc,CAAC;IAEnD,6EAA6E;IAC7E,gBAAgB,CAAC,MAA8B;QAC9C,IAAI,MAAM,CAAC,aAAa;YAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3D,CAAC;IAED,2FAA2F;IAC3F,QAAQ,CAAC,YAAmC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED,OAAO,CAAC,IAAY,EAAE,QAA2C;QAChE,IAAI,QAAQ;YAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;;YAChD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,EAAE,CAAC;IACf,CAAC;IAED,IAAI;QACH,MAAM,aAAa,GAAG,IAAI,GAAG,EAAiC,CAAC;QAC/D,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC1C,KAAK,MAAM,YAAY,IAAI,MAAM,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;gBAC3D,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YAC/F,CAAC;QACF,CAAC;QACD,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YAAE,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAC3G,OAAO,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,SAAS,CAAC,QAAoB;QAC7B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,GAAG,EAAE;YACX,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC,CAAC;IACH,CAAC;IAEO,MAAM;QACb,KAAK,MAAM,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;YAAE,QAAQ,EAAE,CAAC;IACxD,CAAC;CACD","sourcesContent":["import type { McpServerContribution } from \"../mcp-servers.ts\";\nimport type { WorkflowResourceProvider } from \"./loader-resources.ts\";\n\ntype PackageMcpServerSource = Pick<WorkflowResourceProvider, \"getMcpServers\">;\n\n/**\n * MCP server contributions shared by every extension of one runtime generation.\n * Package-manifest servers come first; extension registrations replace them by name.\n */\nexport class McpServerRegistry {\n\tprivate readonly packageSources = new Set<PackageMcpServerSource>();\n\tprivate readonly registrations = new Map<string, McpServerContribution>();\n\tprivate readonly listeners = new Set<() => void>();\n\n\t/** Resource providers of the loaders whose extensions share this runtime. */\n\taddPackageSource(source: PackageMcpServerSource): void {\n\t\tif (source.getMcpServers) this.packageSources.add(source);\n\t}\n\n\t/** Returns the registration it replaced so a rolled-back extension load can restore it. */\n\tregister(contribution: McpServerContribution): McpServerContribution | undefined {\n\t\tconst previous = this.registrations.get(contribution.name);\n\t\tthis.registrations.set(contribution.name, contribution);\n\t\tthis.notify();\n\t\treturn previous;\n\t}\n\n\trestore(name: string, previous: McpServerContribution | undefined): void {\n\t\tif (previous) this.registrations.set(name, previous);\n\t\telse this.registrations.delete(name);\n\t\tthis.notify();\n\t}\n\n\tlist(): McpServerContribution[] {\n\t\tconst contributions = new Map<string, McpServerContribution>();\n\t\tfor (const source of this.packageSources) {\n\t\t\tfor (const contribution of source.getMcpServers?.() ?? []) {\n\t\t\t\tif (!contributions.has(contribution.name)) contributions.set(contribution.name, contribution);\n\t\t\t}\n\t\t}\n\t\tfor (const contribution of this.registrations.values()) contributions.set(contribution.name, contribution);\n\t\treturn [...contributions.values()];\n\t}\n\n\tsubscribe(listener: () => void): () => void {\n\t\tthis.listeners.add(listener);\n\t\treturn () => {\n\t\t\tthis.listeners.delete(listener);\n\t\t};\n\t}\n\n\tprivate notify(): void {\n\t\tfor (const listener of [...this.listeners]) listener();\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"mcp-server-registry.js","sourceRoot":"","sources":["../../../src/core/extensions/mcp-server-registry.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IACZ,cAAc,GAAG,IAAI,GAAG,EAA0B,CAAC;IACnD,aAAa,GAAG,IAAI,GAAG,EAAiC,CAAC;IACzD,SAAS,GAAG,IAAI,GAAG,EAAc,CAAC;IAEnD,6EAA6E;IAC7E,gBAAgB,CAAC,MAA8B;QAC9C,IAAI,MAAM,CAAC,aAAa;YAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3D,CAAC;IAED,2FAA2F;IAC3F,QAAQ,CAAC,YAAmC;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAC7B,CAAC,MAAM,EAAE,EAAE,CACV,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI;YACjC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CACxE,CAAC;QACF,IAAI,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,eAAe,YAAY,CAAC,IAAI,uCAAuC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;QACjH,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED,OAAO,CAAC,IAAY,EAAE,QAA2C;QAChE,IAAI,QAAQ;YAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;;YAChD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,EAAE,CAAC;IACf,CAAC;IAED,IAAI;QACH,MAAM,aAAa,GAAG,IAAI,GAAG,EAAiC,CAAC;QAC/D,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC1C,KAAK,MAAM,YAAY,IAAI,MAAM,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;gBAC3D,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YAC/F,CAAC;QACF,CAAC;QACD,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YAAE,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAC3G,OAAO,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,SAAS,CAAC,QAAoB;QAC7B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,GAAG,EAAE;YACX,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC,CAAC;IACH,CAAC;IAEO,MAAM;QACb,KAAK,MAAM,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;YAAE,QAAQ,EAAE,CAAC;IACxD,CAAC;CACD","sourcesContent":["import type { McpServerContribution } from \"../mcp-servers.ts\";\nimport type { WorkflowResourceProvider } from \"./loader-resources.ts\";\n\ntype PackageMcpServerSource = Pick<WorkflowResourceProvider, \"getMcpServers\">;\n\n/**\n * MCP server contributions shared by every extension of one runtime generation.\n * Package-manifest servers come first; extension registrations replace them by name.\n */\nexport class McpServerRegistry {\n\tprivate readonly packageSources = new Set<PackageMcpServerSource>();\n\tprivate readonly registrations = new Map<string, McpServerContribution>();\n\tprivate readonly listeners = new Set<() => void>();\n\n\t/** Resource providers of the loaders whose extensions share this runtime. */\n\taddPackageSource(source: PackageMcpServerSource): void {\n\t\tif (source.getMcpServers) this.packageSources.add(source);\n\t}\n\n\t/** Returns the registration it replaced so a rolled-back extension load can restore it. */\n\tregister(contribution: McpServerContribution): McpServerContribution | undefined {\n\t\tconst clash = this.list().find(\n\t\t\t(server) =>\n\t\t\t\tserver.name !== contribution.name &&\n\t\t\t\tserver.name.replace(/-/g, \"_\") === contribution.name.replace(/-/g, \"_\"),\n\t\t);\n\t\tif (clash) throw new Error(`MCP server \"${contribution.name}\" conflicts with registered server \"${clash.name}\"`);\n\t\tconst previous = this.registrations.get(contribution.name);\n\t\tthis.registrations.set(contribution.name, contribution);\n\t\tthis.notify();\n\t\treturn previous;\n\t}\n\n\trestore(name: string, previous: McpServerContribution | undefined): void {\n\t\tif (previous) this.registrations.set(name, previous);\n\t\telse this.registrations.delete(name);\n\t\tthis.notify();\n\t}\n\n\tlist(): McpServerContribution[] {\n\t\tconst contributions = new Map<string, McpServerContribution>();\n\t\tfor (const source of this.packageSources) {\n\t\t\tfor (const contribution of source.getMcpServers?.() ?? []) {\n\t\t\t\tif (!contributions.has(contribution.name)) contributions.set(contribution.name, contribution);\n\t\t\t}\n\t\t}\n\t\tfor (const contribution of this.registrations.values()) contributions.set(contribution.name, contribution);\n\t\treturn [...contributions.values()];\n\t}\n\n\tsubscribe(listener: () => void): () => void {\n\t\tthis.listeners.add(listener);\n\t\treturn () => {\n\t\t\tthis.listeners.delete(listener);\n\t\t};\n\t}\n\n\tprivate notify(): void {\n\t\tfor (const listener of [...this.listeners]) listener();\n\t}\n}\n"]}
|
|
@@ -16,6 +16,7 @@ import { type HostDiagnostic, type HostInput } from "./host-input.js";
|
|
|
16
16
|
import { type BeforeAgentStartCombinedResult, type BoundaryBaseEvent, type BoundaryDispatchResult, type ResourcesDiscoverCombinedResult, type RunnerEmitEvent, type RunnerEmitResult } from "./runner-events.ts";
|
|
17
17
|
import type { ExtensionErrorListener } from "./runner-handlers.ts";
|
|
18
18
|
import type { BoundaryContextPreview, EntryRenderer, Extension, ExtensionActions, ExtensionCommandContext, ExtensionCommandContextActions, ExtensionContext, ExtensionContextActions, ExtensionError, ExtensionFlag, ExtensionMode, ExtensionRuntime, ExtensionShortcut, ExtensionUIContext, InputEventResult, InputSource, MarkdownTransformer, MessageEndEvent, MessageRenderer, OrchestrationContext, ProviderConfig, RegisteredTool, ResolvedCommand, ResourcesDiscoverEvent, SessionBoundaryDraft, SessionShutdownEvent, SubagentChildPolicy, ToolCallEvent, ToolCallEventResult, ToolResultEvent, ToolResultEventResult, UIPromptKind, UserBashEvent, UserBashEventResult } from "./types.ts";
|
|
19
|
+
import type { SessionWorkflows } from "./workflow-run-control.js";
|
|
19
20
|
export type { ExtensionErrorListener, ForkHandler, NavigateTreeHandler, NewSessionHandler, ReloadHandler, ShutdownHandler, SwitchSessionHandler, } from "./runner-handlers.ts";
|
|
20
21
|
export { emitProjectTrustEvent } from "./runner-project-trust.ts";
|
|
21
22
|
/**
|
|
@@ -44,6 +45,8 @@ export declare class ExtensionRunner {
|
|
|
44
45
|
bindWorkOwner(owner: object): void;
|
|
45
46
|
bindTaskHost(binding: () => import("../tasks/agent-adapter.js").AgentTaskHost): void;
|
|
46
47
|
bindChildSessionOptions(resolver: import("../child-session-options.ts").ChildSessionOptionsResolver | undefined): void;
|
|
48
|
+
/** The run-control implementation registered by the current extension generation, if any. */
|
|
49
|
+
getWorkflowRunControl(): SessionWorkflows | undefined;
|
|
47
50
|
getChildHostBindings(): import("../agent-session-types.js").ExtensionBindings;
|
|
48
51
|
private errorListeners;
|
|
49
52
|
private getModel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/runner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,kBAAkB,EAClB,yBAAyB,EAEzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAsB,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAEnF;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,KAAK,EAAO,YAAY,EAAS,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAapE,OAAO,EAEN,KAAK,cAAc,EACnB,KAAK,SAAS,EAGd,MAAM,iBAAiB,CAAC;AAQzB,OAAO,EACN,KAAK,8BAA8B,EACnC,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,+BAA+B,EACpC,KAAK,eAAe,EACpB,KAAK,gBAAgB,EAYrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EACX,sBAAsB,EAOtB,MAAM,sBAAsB,CAAC;AAc9B,OAAO,KAAK,EACX,sBAAsB,EAGtB,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,uBAAuB,EACvB,8BAA8B,EAC9B,gBAAgB,EAChB,uBAAuB,EACvB,cAAc,EACd,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,EACb,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -76,6 +76,10 @@ export class ExtensionRunner {
|
|
|
76
76
|
bindChildSessionOptions(resolver) {
|
|
77
77
|
this.runtime.getChildSessionOptions = resolver;
|
|
78
78
|
}
|
|
79
|
+
/** The run-control implementation registered by the current extension generation, if any. */
|
|
80
|
+
getWorkflowRunControl() {
|
|
81
|
+
return this.runtime.workflowRunControlHub.current();
|
|
82
|
+
}
|
|
79
83
|
getChildHostBindings() {
|
|
80
84
|
return {
|
|
81
85
|
humanInput: this.humanInput === undefined ? this.presentationInput : this.humanInput,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/core/extensions/runner.ts"],"names":[],"mappings":"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","sourcesContent":["import { AsyncLocalStorage } from \"node:async_hooks\";\nimport type {\n\tCacheWarmingAction,\n\tCacheWarmingDecisionEvent,\n\tCacheWarmingDecisionEventResult,\n} from \"../cache-warmer.ts\";\nimport type { ExecuteToolOptions, ExtensionToolContext } from \"./context-types.ts\";\nimport { snapshotEventHandlers } from \"./runner-events.ts\";\n/**\n * Extension runner - executes extensions and manages their lifecycle.\n */\n\nimport type { Provider, ProviderHeaders } from \"@bastani/pi-ai\";\nimport type { Api, ImageContent, Model } from \"@bastani/pi-ai/compat\";\nimport type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport type { KeyId } from \"@earendil-works/pi-tui\";\nimport type { ResourceDiagnostic } from \"../diagnostics.ts\";\nimport type { KeybindingsConfig } from \"../keybindings.ts\";\nimport type { ModelRegistry } from \"../model-registry.ts\";\nimport type { ScopedModel } from \"../model-resolver.ts\";\nimport { lifecycleScopeForOwner, sessionLifecycleScopes } from \"../session-lifecycle-scope.ts\";\nimport type { SessionManager } from \"../session-manager.ts\";\nimport type { BuildSystemPromptOptions } from \"../system-prompt.ts\";\nimport { normalizeBuildSystemPromptOptions } from \"../system-prompt.ts\";\nimport { presentQuestionnaire } from \"../tools/ask-user-question/ask-user-question.js\";\nimport {\n\tassertExtensionAction,\n\tbindExtensionWork,\n\tdrainExtensionWork,\n\textensionWorkOpen,\n\tresumeExtensionWork,\n\trevokeExtensionAuthority,\n\trunExtensionCleanup,\n\tsealExtensionWork,\n} from \"./extension-work.ts\";\nimport {\n\tcopyHostQuestionnaire,\n\ttype HostDiagnostic,\n\ttype HostInput,\n\tHostInputBridge,\n\thostInputError,\n} from \"./host-input.js\";\nimport { originalRegistrationCallback } from \"./loader-bindings.ts\";\nimport { boundExtensionRuntimes, runResourceRegistrationBatch } from \"./loader-runtime.ts\";\nimport {\n\tcreateExtensionCommandContext,\n\tcreateExtensionContext,\n\ttype ExtensionCommandContextSource,\n} from \"./runner-context.ts\";\nimport {\n\ttype BeforeAgentStartCombinedResult,\n\ttype BoundaryBaseEvent,\n\ttype BoundaryDispatchResult,\n\ttype ResourcesDiscoverCombinedResult,\n\ttype RunnerEmitEvent,\n\ttype RunnerEmitResult,\n\trunBeforeAgentStartHandlers,\n\trunBeforeProviderRequestHandlers,\n\trunBoundaryHandlers,\n\trunContextHandlers,\n\trunGenericHandlers,\n\trunInputHandlers,\n\trunMessageEndHandlers,\n\trunResourcesDiscoverHandlers,\n\trunToolCallHandlers,\n\trunToolResultHandlers,\n\trunUserBashHandlers,\n} from \"./runner-events.ts\";\nimport type {\n\tExtensionErrorListener,\n\tForkHandler,\n\tNavigateTreeHandler,\n\tNewSessionHandler,\n\tReloadHandler,\n\tShutdownHandler,\n\tSwitchSessionHandler,\n} from \"./runner-handlers.ts\";\nimport {\n\tcollectFlags,\n\tcollectMarkdownTransformers,\n\tcollectRegisteredTools,\n\tfindEntryRenderer,\n\tfindMessageRenderer,\n\tfindToolDefinition,\n\thasExtensionHandlers,\n\tresolveRegisteredCommands,\n} from \"./runner-registries.ts\";\nimport { resolveExtensionShortcuts } from \"./runner-shortcuts.ts\";\nimport { noOpUIContext } from \"./runner-ui.ts\";\nimport { STALE_EXTENSION_CONTEXT_MESSAGE } from \"./stale-context.ts\";\nimport type {\n\tBoundaryContextPreview,\n\tCompactOptions,\n\tContextUsage,\n\tEntryRenderer,\n\tExtension,\n\tExtensionActions,\n\tExtensionCommandContext,\n\tExtensionCommandContextActions,\n\tExtensionContext,\n\tExtensionContextActions,\n\tExtensionError,\n\tExtensionFlag,\n\tExtensionMode,\n\tExtensionRuntime,\n\tExtensionShortcut,\n\tExtensionUIContext,\n\tInputEventResult,\n\tInputSource,\n\tMarkdownTransformer,\n\tMessageEndEvent,\n\tMessageRenderer,\n\tOrchestrationContext,\n\tProviderConfig,\n\tRegisteredTool,\n\tResolvedCommand,\n\tResourcesDiscoverEvent,\n\tSessionBoundaryDraft,\n\tSessionShutdownEvent,\n\tSubagentChildPolicy,\n\tToolCallEvent,\n\tToolCallEventResult,\n\tToolResultEvent,\n\tToolResultEventResult,\n\tUIPromptKind,\n\tUserBashEvent,\n\tUserBashEventResult,\n} from \"./types.ts\";\n\nexport type {\n\tExtensionErrorListener,\n\tForkHandler,\n\tNavigateTreeHandler,\n\tNewSessionHandler,\n\tReloadHandler,\n\tShutdownHandler,\n\tSwitchSessionHandler,\n} from \"./runner-handlers.ts\";\nexport { emitProjectTrustEvent } from \"./runner-project-trust.ts\";\n\n/**\n * Helper function to emit session_shutdown event to extensions.\n * Returns true if the event was emitted, false if there were no handlers.\n */\nexport async function emitSessionShutdownEvent(\n\textensionRunner: ExtensionRunner,\n\tevent: SessionShutdownEvent,\n): Promise<boolean> {\n\tif (extensionRunner.hasHandlers(\"session_shutdown\")) {\n\t\tconst failures: Error[] = [];\n\t\tconst unsubscribe = extensionRunner.onError((failure) => {\n\t\t\tif (failure.event === \"session_shutdown\")\n\t\t\t\tfailures.push(new Error(`${failure.extensionPath}: ${failure.error}`));\n\t\t});\n\t\ttry {\n\t\t\tawait extensionRunner.emit(event);\n\t\t} catch (error) {\n\t\t\tconst causes = error instanceof AggregateError ? error.errors : [error];\n\t\t\tfailures.push(...causes.map((cause) => (cause instanceof Error ? cause : new Error(String(cause)))));\n\t\t} finally {\n\t\t\tunsubscribe();\n\t\t}\n\t\t// Shutdown may start tracked cleanup without returning its promise. Join it\n\t\t// after dispatch leaves its own work frame, including when a handler failed.\n\t\ttry {\n\t\t\tawait extensionRunner.drainWork();\n\t\t} catch (error) {\n\t\t\tfailures.push(error instanceof Error ? error : new Error(String(error)));\n\t\t}\n\t\tif (failures.length)\n\t\t\tthrow Object.assign(new AggregateError(failures, \"Extension shutdown failed\"), { code: \"ShutdownFailed\" });\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport class ExtensionRunner {\n\tprivate extensions: Extension[];\n\tprivate runtime: ExtensionRuntime;\n\tprivate uiContext: ExtensionUIContext;\n\tprivate presentationUI?: ExtensionUIContext;\n\tprivate presentationInput?: HostInput;\n\tprivate humanInput?: HostInput | null;\n\tprivate humanInputBindingRevision = 0;\n\tprivate inputBridge = new HostInputBridge(\n\t\t() => this.sessionManager.getSessionId(),\n\t\t() => this.getSignalFn(),\n\t);\n\tprivate onDiagnostic?: (diagnostic: HostDiagnostic) => void;\n\tprivate mode: ExtensionMode = \"print\";\n\tprivate cwd: string;\n\tprivate sessionManager: SessionManager;\n\tprivate modelRegistry: ModelRegistry;\n\tprivate orchestrationContext: OrchestrationContext | undefined;\n\tprivate subagentPolicy: SubagentChildPolicy | undefined;\n\tprivate taskHostBinding: (() => import(\"../tasks/agent-adapter.js\").AgentTaskHost) | undefined;\n\t/** @internal Attach dispatch receipts to the owning session before startup. */\n\tbindWorkOwner(owner: object): void {\n\t\tbindExtensionWork(this.runtime, owner);\n\t}\n\tbindTaskHost(binding: () => import(\"../tasks/agent-adapter.js\").AgentTaskHost): void {\n\t\tthis.taskHostBinding = binding;\n\t}\n\tbindChildSessionOptions(\n\t\tresolver: import(\"../child-session-options.ts\").ChildSessionOptionsResolver | undefined,\n\t): void {\n\t\tthis.runtime.getChildSessionOptions = resolver;\n\t}\n\tgetChildHostBindings(): import(\"../agent-session-types.js\").ExtensionBindings {\n\t\treturn {\n\t\t\thumanInput: this.humanInput === undefined ? this.presentationInput : this.humanInput,\n\t\t\tonDiagnostic: this.onDiagnostic,\n\t\t};\n\t}\n\tprivate errorListeners: Set<ExtensionErrorListener> = new Set();\n\tprivate getModel: () => Model<Api> | undefined = () => undefined;\n\tprivate getScopedModels: () => readonly ScopedModel[] = () => [];\n\tprivate isIdleFn: () => boolean = () => true;\n\tprivate isProjectTrustedFn: () => boolean = () => true;\n\tprivate getSignalFn: () => AbortSignal | undefined = () => undefined;\n\tprivate waitForIdleFn: () => Promise<void> = async () => {};\n\tprivate abortFn: () => void = () => {};\n\tprivate hasPendingMessagesFn: () => boolean = () => false;\n\tprivate getContextUsageFn: () => ContextUsage | undefined = () => undefined;\n\tprivate compactFn: (options?: CompactOptions) => void = () => {};\n\tprivate getSystemPromptFn: () => string = () => \"\";\n\tprivate getSystemPromptOptionsFn: () => BuildSystemPromptOptions = () =>\n\t\tnormalizeBuildSystemPromptOptions({ cwd: this.cwd });\n\tprivate getSkillCatalogFn: ExtensionContextActions[\"getSkillCatalog\"] = undefined;\n\tprivate getRouterModelFn: ExtensionContextActions[\"getRouterModel\"] = undefined;\n\tprivate getModelRoutingFn: ExtensionContextActions[\"getModelRouting\"] = undefined;\n\tprivate executeToolFn: ExtensionContextActions[\"executeTool\"];\n\tprivate getCallableToolsFn: NonNullable<ExtensionContextActions[\"getCallableTools\"]> = () => [];\n\tprivate newSessionHandler: NewSessionHandler = async () => ({ cancelled: false });\n\tprivate forkHandler: ForkHandler = async () => ({ cancelled: false });\n\tprivate navigateTreeHandler: NavigateTreeHandler = async () => ({ cancelled: false });\n\tprivate switchSessionHandler: SwitchSessionHandler = async () => ({ cancelled: false });\n\tprivate reloadHandler: ReloadHandler = async () => {};\n\tprivate shutdownHandler: ShutdownHandler = () => {};\n\tprivate shortcutDiagnostics: ResourceDiagnostic[] = [];\n\tprivate commandDiagnostics: ResourceDiagnostic[] = [];\n\tprivate staleMessage: string | undefined;\n\tprivate authorityRevoked = false;\n\tprivate readonly contextOwner = {};\n\tprivate uiPromptBinding = 0;\n\tprivate activeUIPrompt:\n\t\t| { depth: number; reason: \"ui_prompt\" | \"project_trust\"; kind: UIPromptKind; title: string | undefined }\n\t\t| undefined;\n\n\tconstructor(\n\t\textensions: Extension[],\n\t\truntime: ExtensionRuntime,\n\t\tcwd: string,\n\t\tsessionManager: SessionManager,\n\t\tmodelRegistry: ModelRegistry,\n\t\torchestrationContext?: OrchestrationContext,\n\t\tsubagentPolicy?: SubagentChildPolicy,\n\t) {\n\t\tthis.extensions = extensions;\n\t\tthis.runtime = runtime;\n\t\tsessionLifecycleScopes.set(this, lifecycleScopeForOwner(runtime));\n\t\tthis.runtime.workflowActivityHub.bindDispatcher((event, isCurrent) => this.emit(event, isCurrent));\n\t\tthis.uiContext = noOpUIContext;\n\t\tthis.cwd = cwd;\n\t\tthis.sessionManager = sessionManager;\n\t\tthis.modelRegistry = modelRegistry;\n\t\tthis.orchestrationContext = orchestrationContext;\n\t\tthis.subagentPolicy = subagentPolicy;\n\t}\n\n\tbindCore(\n\t\tactions: ExtensionActions,\n\t\tcontextActions: ExtensionContextActions,\n\t\tproviderActions?: {\n\t\t\tregisterProvider?: (providerOrName: Provider | string, config?: ProviderConfig) => void;\n\t\t\tunregisterProvider?: (name: string) => void;\n\t\t},\n\t): void {\n\t\t// Copy actions into the shared runtime (all extension APIs reference this)\n\t\tthis.runtime.sendMessage = actions.sendMessage;\n\t\tthis.runtime.sendMessages = actions.sendMessages;\n\t\tthis.runtime.sendUserMessage = actions.sendUserMessage;\n\t\tboundExtensionRuntimes.add(this.runtime);\n\t\tthis.runtime.appendEntry = actions.appendEntry;\n\t\tthis.runtime.setSessionName = actions.setSessionName;\n\t\tthis.runtime.getSessionName = actions.getSessionName;\n\t\tthis.runtime.setLabel = actions.setLabel;\n\t\tthis.runtime.getActiveTools = actions.getActiveTools;\n\t\tthis.runtime.getAllTools = actions.getAllTools;\n\t\tthis.runtime.setActiveTools = actions.setActiveTools;\n\t\tthis.runtime.refreshTools = actions.refreshTools;\n\t\tthis.runtime.getCommands = actions.getCommands;\n\t\tthis.runtime.setModel = actions.setModel;\n\t\tthis.runtime.getThinkingLevel = actions.getThinkingLevel;\n\t\tthis.runtime.setThinkingLevel = actions.setThinkingLevel;\n\n\t\t// Context actions (required)\n\t\tthis.getModel = contextActions.getModel;\n\t\tthis.getScopedModels = contextActions.getScopedModels;\n\t\tthis.isIdleFn = contextActions.isIdle;\n\t\tthis.isProjectTrustedFn = contextActions.isProjectTrusted;\n\t\tthis.getSignalFn = contextActions.getSignal;\n\t\tthis.abortFn = contextActions.abort;\n\t\tthis.hasPendingMessagesFn = contextActions.hasPendingMessages;\n\t\tthis.shutdownHandler = contextActions.shutdown;\n\t\tthis.getContextUsageFn = contextActions.getContextUsage;\n\t\tthis.compactFn = contextActions.compact;\n\t\tthis.getSystemPromptFn = contextActions.getSystemPrompt;\n\t\tthis.getSystemPromptOptionsFn =\n\t\t\tcontextActions.getSystemPromptOptions ?? (() => normalizeBuildSystemPromptOptions({ cwd: this.cwd }));\n\t\tthis.getSkillCatalogFn = contextActions.getSkillCatalog;\n\t\tthis.getRouterModelFn = contextActions.getRouterModel;\n\t\tthis.getModelRoutingFn = contextActions.getModelRouting;\n\t\tthis.executeToolFn = contextActions.executeTool;\n\t\tthis.getCallableToolsFn = contextActions.getCallableTools ?? (() => []);\n\t\tthis.runtime.getSettings = contextActions.getSettings;\n\n\t\t// Flush provider registrations queued during extension loading.\n\t\tfor (const registration of this.runtime.pendingProviderRegistrations) {\n\t\t\ttry {\n\t\t\t\tif (\"provider\" in registration) {\n\t\t\t\t\t(\n\t\t\t\t\t\tproviderActions?.registerProvider ??\n\t\t\t\t\t\t((provider: Provider) => this.modelRegistry.registerProvider(provider))\n\t\t\t\t\t)(registration.provider);\n\t\t\t\t} else {\n\t\t\t\t\t(\n\t\t\t\t\t\tproviderActions?.registerProvider ??\n\t\t\t\t\t\t((name: string, config?: ProviderConfig) => this.modelRegistry.registerProvider(name, config!))\n\t\t\t\t\t)(registration.name, registration.config);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tthis.emitError({\n\t\t\t\t\textensionPath: registration.extensionPath,\n\t\t\t\t\tevent: \"register_provider\",\n\t\t\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\t\t\tstack: error instanceof Error ? error.stack : undefined,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tthis.runtime.pendingProviderRegistrations = [];\n\n\t\t// From this point on, provider registration/unregistration takes effect immediately\n\t\t// without requiring a /reload.\n\t\tthis.runtime.registerProvider = ((providerOrName: Provider | string, configOrPath?: ProviderConfig | string) => {\n\t\t\tif (typeof providerOrName === \"string\") {\n\t\t\t\tconst config = configOrPath as ProviderConfig;\n\t\t\t\tif (providerActions?.registerProvider) providerActions.registerProvider(providerOrName, config);\n\t\t\t\telse this.modelRegistry.registerProvider(providerOrName, config);\n\t\t\t} else if (providerActions?.registerProvider) providerActions.registerProvider(providerOrName);\n\t\t\telse this.modelRegistry.registerProvider(providerOrName);\n\t\t}) as ExtensionRuntime[\"registerProvider\"];\n\t\tthis.runtime.unregisterProvider = (name) => {\n\t\t\tif (providerActions?.unregisterProvider) {\n\t\t\t\tproviderActions.unregisterProvider(name);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.modelRegistry.unregisterProvider(name);\n\t\t};\n\t}\n\n\tbindCommandContext(actions?: ExtensionCommandContextActions): void {\n\t\tif (actions) {\n\t\t\tthis.waitForIdleFn = actions.waitForIdle;\n\t\t\tthis.newSessionHandler = actions.newSession;\n\t\t\tthis.forkHandler = actions.fork;\n\t\t\tthis.navigateTreeHandler = actions.navigateTree;\n\t\t\tthis.switchSessionHandler = actions.switchSession;\n\t\t\tthis.reloadHandler = actions.reload;\n\t\t\treturn;\n\t\t}\n\n\t\tthis.waitForIdleFn = async () => {};\n\t\tthis.newSessionHandler = async () => ({ cancelled: false });\n\t\tthis.forkHandler = async () => ({ cancelled: false });\n\t\tthis.navigateTreeHandler = async () => ({ cancelled: false });\n\t\tthis.switchSessionHandler = async () => ({ cancelled: false });\n\t\tthis.reloadHandler = async () => {};\n\t}\n\n\tsetHostBindings(\n\t\thumanInput: HostInput | null | undefined,\n\t\tonDiagnostic?: (diagnostic: HostDiagnostic) => void,\n\t\tbindingRevision = 0,\n\t): void {\n\t\tthis.humanInput = humanInput;\n\t\tthis.humanInputBindingRevision = bindingRevision;\n\t\tthis.onDiagnostic = onDiagnostic;\n\t\t// Internal builtin bridge: no new extension API and no interception of console.\n\t\tconst scope = lifecycleScopeForOwner(this.runtime);\n\t\tconst report = (diagnostic: Omit<HostDiagnostic, \"sessionId\">) => {\n\t\t\ttry {\n\t\t\t\tthis.onDiagnostic?.({ ...diagnostic, sessionId: this.sessionManager.getSessionId() });\n\t\t\t} catch {\n\t\t\t\t// Observers cannot replace the primary service failure.\n\t\t\t}\n\t\t};\n\t\t// Rebinding replaces the reporter, not the builtin service owner.\n\t\tObject.defineProperty(report, Symbol.for(\"atomic.builtin-owner.v1\"), { value: scope });\n\t\tReflect.set(scope, Symbol.for(\"atomic.builtin-diagnostic.v1\"), report);\n\t\tthis.refreshHostInput();\n\t}\n\n\tcancelHostInput(): void {\n\t\tthis.inputBridge.cancel();\n\t}\n\t/** @internal Join this generation's callbacks without draining its reload caller. */\n\tdrainWork(): Promise<void> {\n\t\treturn drainExtensionWork(this.runtime);\n\t}\n\n\t/** @internal Seal input admission without invalidating shutdown handlers. */\n\tsealHostInput(): void {\n\t\tthis.inputBridge.close();\n\t\tsealExtensionWork(this.runtime);\n\t}\n\n\t/** @internal A rejected transaction retains the live runner, but never revives captured dialogs. */\n\tresumeAfterRejectedReload(): void {\n\t\tif (this.staleMessage) return;\n\t\tresumeExtensionWork(this.runtime);\n\t\tthis.inputBridge = new HostInputBridge(\n\t\t\t() => this.sessionManager.getSessionId(),\n\t\t\t() => this.getSignalFn(),\n\t\t);\n\t\tthis.refreshHostInput();\n\t}\n\n\tprivate refreshHostInput(): void {\n\t\tconst ui = this.presentationUI;\n\t\tthis.inputBridge.bind(\n\t\t\tthis.humanInput === undefined ? this.presentationInput : (this.humanInput ?? undefined),\n\t\t\tthis.humanInput,\n\t\t\tthis.humanInputBindingRevision,\n\t\t);\n\t\tconst bridged = this.inputBridge.wrap(\n\t\t\tui ?? {\n\t\t\t\t...noOpUIContext,\n\t\t\t\tcustom: async () => {\n\t\t\t\t\tthrow hostInputError(\"HumanInputUnavailable\");\n\t\t\t\t},\n\t\t\t},\n\t\t\tthis.presentationInput,\n\t\t\tthis.orchestrationContext?.kind === \"workflow-stage\"\n\t\t\t\t? {\n\t\t\t\t\t\tworkflowRunId: this.orchestrationContext.workflowRunId,\n\t\t\t\t\t\tworkflowStageId: this.orchestrationContext.workflowStageId,\n\t\t\t\t\t}\n\t\t\t\t: {},\n\t\t);\n\t\tthis.uiContext = this.wrapUIPromptContext(bridged, this.uiPromptBinding);\n\t\tcopyHostQuestionnaire(bridged, this.uiContext);\n\t}\n\n\tsetUIContext(uiContext?: ExtensionUIContext, mode: ExtensionMode = \"print\"): void {\n\t\tif (uiContext !== this.presentationUI) {\n\t\t\tthis.endActiveUIPrompt();\n\t\t\t++this.uiPromptBinding;\n\t\t\tthis.presentationUI = uiContext;\n\t\t\tconst ui = uiContext;\n\t\t\tthis.presentationInput = ui\n\t\t\t\t? {\n\t\t\t\t\t\tconfirm: (title, message, options) => ui.confirm(title, message, options),\n\t\t\t\t\t\tselect: (title, choices, options) => ui.select(title, choices, options),\n\t\t\t\t\t\tinput: (title, placeholder, options) => ui.input(title, placeholder, options),\n\t\t\t\t\t\teditor: (title, initial, options) => ui.editor(title, initial, options),\n\t\t\t\t\t\tquestionnaire: (params, options) => presentQuestionnaire(ui, params, options.signal),\n\t\t\t\t\t}\n\t\t\t\t: undefined;\n\t\t\tthis.refreshHostInput();\n\t\t}\n\t\tthis.mode = mode;\n\t}\n\n\tprivate wrapUIPromptContext(ui: ExtensionUIContext, binding: number): ExtensionUIContext {\n\t\treturn {\n\t\t\t...ui,\n\t\t\tselect: (title, options, opts) =>\n\t\t\t\tthis.withUIPrompt(binding, \"select\", title, () => ui.select(title, options, opts)),\n\t\t\tconfirm: (title, message, opts) =>\n\t\t\t\tthis.withUIPrompt(binding, \"confirm\", title, () => ui.confirm(title, message, opts)),\n\t\t\tinput: (title, placeholder, opts) =>\n\t\t\t\tthis.withUIPrompt(binding, \"input\", title, () => ui.input(title, placeholder, opts)),\n\t\t\teditor: (title, prefill, opts) =>\n\t\t\t\tthis.withUIPrompt(binding, \"editor\", title, () => ui.editor(title, prefill, opts)),\n\t\t\tcustom: (factory, options) =>\n\t\t\t\toptions?.purpose === \"navigation\"\n\t\t\t\t\t? ui.custom(factory, options)\n\t\t\t\t\t: this.withUIPrompt(binding, \"custom\", undefined, () => ui.custom(factory, options)),\n\t\t};\n\t}\n\n\t/** Track a host-owned trust dialog using the current session's prompt lifecycle. */\n\twithProjectTrustPrompt<T>(kind: UIPromptKind, title: string, run: () => Promise<T>): Promise<T> {\n\t\treturn this.withUIPrompt(this.uiPromptBinding, kind, title, run, \"project_trust\");\n\t}\n\n\t/** Begin a host-owned trust span whose end arrives as a separate control frame. */\n\tbeginProjectTrustPrompt(kind: UIPromptKind, title: string): () => void {\n\t\treturn this.beginUIPrompt(kind, title, \"project_trust\");\n\t}\n\n\tprivate withUIPrompt<T>(\n\t\tbinding: number,\n\t\tkind: UIPromptKind,\n\t\ttitle: string | undefined,\n\t\trun: () => Promise<T>,\n\t\treason: \"ui_prompt\" | \"project_trust\" = \"ui_prompt\",\n\t): Promise<T> {\n\t\tif (binding !== this.uiPromptBinding) return run();\n\t\tconst finish = this.beginUIPrompt(kind, title, reason);\n\t\ttry {\n\t\t\treturn run().finally(finish);\n\t\t} catch (error) {\n\t\t\tfinish();\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tprivate beginUIPrompt(\n\t\tkind: UIPromptKind,\n\t\ttitle: string | undefined,\n\t\treason: \"ui_prompt\" | \"project_trust\",\n\t): () => void {\n\t\tlet prompt = this.activeUIPrompt;\n\t\tif (!prompt) {\n\t\t\tprompt = { depth: 0, reason, kind, title };\n\t\t\tthis.activeUIPrompt = prompt;\n\t\t\tthis.emitUIPromptEvent({\n\t\t\t\ttype: \"ui_prompt_start\",\n\t\t\t\treason,\n\t\t\t\tkind,\n\t\t\t\t...(title === undefined ? {} : { title }),\n\t\t\t});\n\t\t}\n\t\tprompt.depth += 1;\n\n\t\tlet finished = false;\n\t\treturn () => {\n\t\t\tif (finished) return;\n\t\t\tfinished = true;\n\t\t\tif (this.activeUIPrompt !== prompt) return;\n\n\t\t\tprompt.depth -= 1;\n\t\t\tif (prompt.depth === 0) this.endActiveUIPrompt(prompt);\n\t\t};\n\t}\n\n\tprivate endActiveUIPrompt(prompt = this.activeUIPrompt): void {\n\t\tif (!prompt || this.activeUIPrompt !== prompt) return;\n\t\tthis.activeUIPrompt = undefined;\n\t\tprompt.depth = 0;\n\t\tthis.emitUIPromptEvent({\n\t\t\ttype: \"ui_prompt_end\",\n\t\t\treason: prompt.reason,\n\t\t\tkind: prompt.kind,\n\t\t\t...(prompt.title === undefined ? {} : { title: prompt.title }),\n\t\t});\n\t}\n\n\tprivate readonly pendingUIPromptNotifications = new Set<Promise<void>>();\n\n\tprivate emitUIPromptEvent(event: Extract<RunnerEmitEvent, { type: \"ui_prompt_start\" | \"ui_prompt_end\" }>): void {\n\t\tconst delivery = Promise.resolve().then(async () => {\n\t\t\tawait this.emit(event);\n\t\t});\n\t\tthis.pendingUIPromptNotifications.add(delivery);\n\t\tvoid delivery.finally(() => this.pendingUIPromptNotifications.delete(delivery)).catch(() => {});\n\t}\n\n\t/** Settle only the deliveries pending at this boundary, without delaying prompt UI. */\n\tasync flushUIPromptNotifications(timeoutMs: number): Promise<{ timedOut: boolean }> {\n\t\tconst pending = [...this.pendingUIPromptNotifications];\n\t\tif (pending.length === 0) return { timedOut: false };\n\t\tlet timer: ReturnType<typeof setTimeout> | undefined;\n\t\ttry {\n\t\t\treturn await Promise.race([\n\t\t\t\tPromise.allSettled(pending).then(() => ({ timedOut: false })),\n\t\t\t\tnew Promise<{ timedOut: boolean }>((resolve) => {\n\t\t\t\t\ttimer = setTimeout(() => resolve({ timedOut: true }), timeoutMs);\n\t\t\t\t}),\n\t\t\t]);\n\t\t} finally {\n\t\t\tclearTimeout(timer);\n\t\t}\n\t}\n\n\tgetUIContext(): ExtensionUIContext {\n\t\treturn this.uiContext;\n\t}\n\n\thasUI(): boolean {\n\t\treturn this.presentationUI !== undefined;\n\t}\n\n\tgetExtensionPaths(): string[] {\n\t\treturn this.extensions.map((extension) => extension.path);\n\t}\n\n\t/** Get all registered tools from all extensions (first registration per name wins). */\n\tgetAllRegisteredTools(): RegisteredTool[] {\n\t\treturn collectRegisteredTools(this.extensions);\n\t}\n\n\t/** Get a tool definition by name. Returns undefined if not found. */\n\tgetToolDefinition(toolName: string): RegisteredTool[\"definition\"] | undefined {\n\t\treturn findToolDefinition(this.extensions, toolName);\n\t}\n\n\tgetFlags(): Map<string, ExtensionFlag> {\n\t\treturn collectFlags(this.extensions);\n\t}\n\n\tsetFlagValue(name: string, value: boolean | string): void {\n\t\tthis.runtime.flagValues.set(name, value);\n\t\tthis.runtime.explicitFlagNames ??= new Set();\n\t\tthis.runtime.explicitFlagNames.add(name);\n\t}\n\n\tgetFlagValues(): Map<string, boolean | string> {\n\t\treturn new Map(this.runtime.flagValues);\n\t}\n\n\tgetExplicitFlagValues(): Map<string, boolean | string> {\n\t\tconst explicitFlagNames = this.runtime.explicitFlagNames ?? new Set<string>();\n\t\treturn new Map([...this.runtime.flagValues].filter(([name]) => explicitFlagNames.has(name)));\n\t}\n\n\tgetShortcuts(resolvedKeybindings: KeybindingsConfig): Map<KeyId, ExtensionShortcut> {\n\t\tconst resolution = resolveExtensionShortcuts(this.extensions, resolvedKeybindings, this.hasUI());\n\t\tthis.shortcutDiagnostics = resolution.diagnostics;\n\t\tfor (const [key, shortcut] of resolution.shortcuts) {\n\t\t\tresolution.shortcuts.set(key, {\n\t\t\t\t...shortcut,\n\t\t\t\thandler: (context) => {\n\t\t\t\t\tif (!extensionWorkOpen(this.runtime)) return Promise.reject(hostInputError(\"SessionClosed\"));\n\t\t\t\t\treturn runResourceRegistrationBatch(this.runtime, async () => shortcut.handler(context));\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t\treturn resolution.shortcuts;\n\t}\n\n\tgetShortcutDiagnostics(): ResourceDiagnostic[] {\n\t\treturn this.shortcutDiagnostics;\n\t}\n\n\trevokeAuthority(): void {\n\t\tthis.authorityRevoked = true;\n\t\trevokeExtensionAuthority(this.runtime);\n\t}\n\n\tinvalidate(message = STALE_EXTENSION_CONTEXT_MESSAGE): void {\n\t\tthis.sealHostInput();\n\t\tif (!this.staleMessage) {\n\t\t\tthis.staleMessage = message;\n\t\t\tthis.runtime.invalidate(message);\n\t\t}\n\t}\n\n\tprivate assertActive(): void {\n\t\tif (this.authorityRevoked) this.runtime.assertActive();\n\t\tif (this.staleMessage) {\n\t\t\tthrow new Error(this.staleMessage);\n\t\t}\n\t}\n\n\tonError(listener: ExtensionErrorListener): () => void {\n\t\tthis.errorListeners.add(listener);\n\t\treturn () => this.errorListeners.delete(listener);\n\t}\n\n\temitError(error: ExtensionError): void {\n\t\tthis.onDiagnostic?.({\n\t\t\tlevel: \"error\",\n\t\t\tsource: error.extensionPath,\n\t\t\tmessage: `Extension ${error.event} failed`,\n\t\t\tsessionId: this.sessionManager.getSessionId(),\n\t\t});\n\t\tfor (const listener of this.errorListeners) {\n\t\t\tlistener(error);\n\t\t}\n\t}\n\n\thasHandlers(eventType: string): boolean {\n\t\treturn hasExtensionHandlers(this.extensions, eventType);\n\t}\n\n\tgetMessageRenderer(customType: string): MessageRenderer | undefined {\n\t\treturn findMessageRenderer(this.extensions, customType);\n\t}\n\n\tgetMarkdownTransformers(): MarkdownTransformer[] {\n\t\treturn collectMarkdownTransformers(this.extensions);\n\t}\n\n\tgetEntryRenderer(customType: string): EntryRenderer | undefined {\n\t\tconst renderer = findEntryRenderer(this.extensions, customType);\n\t\treturn renderer ? originalRegistrationCallback(renderer) : undefined;\n\t}\n\n\t/** Invoke the session-owned registration without changing discovery identity. */\n\trenderEntry(customType: string, ...args: Parameters<EntryRenderer>): ReturnType<EntryRenderer> {\n\t\tthis.assertActive();\n\t\treturn findEntryRenderer(this.extensions, customType)?.(...args);\n\t}\n\n\tgetRegisteredCommands(): ResolvedCommand[] {\n\t\tthis.commandDiagnostics = [];\n\t\treturn resolveRegisteredCommands(this.extensions);\n\t}\n\n\tgetCommandDiagnostics(): ResourceDiagnostic[] {\n\t\treturn this.commandDiagnostics;\n\t}\n\n\tgetCommand(name: string): ResolvedCommand | undefined {\n\t\tconst command = resolveRegisteredCommands(this.extensions).find((entry) => entry.invocationName === name);\n\t\tif (!command) return undefined;\n\t\treturn {\n\t\t\t...command,\n\t\t\thandler: (args, context) =>\n\t\t\t\trunResourceRegistrationBatch(this.runtime, async () => command.handler(args, context)),\n\t\t};\n\t}\n\n\t/**\n\t * Request a graceful shutdown. Called by extension tools and event handlers.\n\t * The actual shutdown behavior is provided by the mode via bindExtensions().\n\t */\n\tshutdown(): void {\n\t\tthis.shutdownHandler();\n\t}\n\n\tcreateContext(): ExtensionContext {\n\t\treturn createExtensionContext(this.createContextSource(), this.contextOwner);\n\t}\n\n\t/** Bound to the actual executing parent, not an extension-supplied caller identity. */\n\tcreateToolContext(toolCallId: string, signal: AbortSignal | undefined): ExtensionToolContext {\n\t\tconst invoke = AsyncLocalStorage.bind(async (name: string, args: unknown, options: ExecuteToolOptions = {}) => {\n\t\t\tthis.assertActive();\n\t\t\tif (signal?.aborted) throw new Error(\"Calling tool execution has ended\");\n\t\t\tif (!this.executeToolFn)\n\t\t\t\treturn {\n\t\t\t\t\ttoolCall: { type: \"toolCall\" as const, id: `${toolCallId}/0`, name, arguments: {} },\n\t\t\t\t\tresult: {\n\t\t\t\t\t\tcontent: [{ type: \"text\" as const, text: \"Nested tool calls are not available in this context\" }],\n\t\t\t\t\t\tdetails: {},\n\t\t\t\t\t},\n\t\t\t\t\tisError: true,\n\t\t\t\t};\n\t\t\tconst callSignal =\n\t\t\t\tsignal && options.signal ? AbortSignal.any([signal, options.signal]) : (options.signal ?? signal);\n\t\t\treturn this.executeToolFn(toolCallId, name, args, { ...options, signal: callSignal });\n\t\t});\n\t\treturn Object.defineProperties(this.createContext() as ExtensionToolContext, {\n\t\t\ttools: {\n\t\t\t\tget: () => {\n\t\t\t\t\tthis.assertActive();\n\t\t\t\t\treturn this.getCallableToolsFn();\n\t\t\t\t},\n\t\t\t},\n\t\t\texecuteTool: { value: invoke },\n\t\t});\n\t}\n\n\tcreateCommandContext(): ExtensionCommandContext {\n\t\treturn createExtensionCommandContext(this.createContextSource(), this.contextOwner);\n\t}\n\n\tprivate createContextSource(): ExtensionCommandContextSource {\n\t\treturn {\n\t\t\tassertActive: () => this.assertActive(),\n\t\t\tassertAction: () => assertExtensionAction(this.runtime),\n\t\t\tgetChildSessionOptions: (options) => this.runtime.getChildSessionOptions?.(options) ?? options,\n\t\t\tgetExtensionPaths: () => this.getExtensionPaths(),\n\t\t\tobserveWorkflowActivity: (observer) => this.runtime.workflowActivityHub.observeWorkflowActivity(observer),\n\t\t\t...(this.taskHostBinding ? { getAgentTaskHost: this.taskHostBinding } : {}),\n\t\t\tgetUIContext: () => this.uiContext,\n\t\t\tgetMode: () => this.mode,\n\t\t\thasUI: () => this.hasUI(),\n\t\t\thasHumanInput: () => this.inputBridge.available,\n\t\t\tgetCwd: () => this.cwd,\n\t\t\tgetSessionManager: () => this.sessionManager,\n\t\t\tgetModelRegistry: () => this.modelRegistry,\n\t\t\tgetModel: () => this.getModel(),\n\t\t\tgetSubagentPolicy: () => this.subagentPolicy,\n\t\t\tgetScopedModels: () => this.getScopedModels(),\n\t\t\tgetThinkingLevel: () => this.runtime.getThinkingLevel(),\n\t\t\tgetOrchestrationContext: () => this.orchestrationContext,\n\t\t\tisIdle: () => this.isIdleFn(),\n\t\t\tisProjectTrusted: () => this.isProjectTrustedFn(),\n\t\t\tgetSignal: () => this.getSignalFn(),\n\t\t\tabort: () => this.abortFn(),\n\t\t\thasPendingMessages: () => this.hasPendingMessagesFn(),\n\t\t\tshutdown: () => this.shutdownHandler(),\n\t\t\tgetContextUsage: () => this.getContextUsageFn(),\n\t\t\tcompact: (options) => this.compactFn(options),\n\t\t\tgetSystemPrompt: () => this.getSystemPromptFn(),\n\t\t\t...(this.getSkillCatalogFn ? { getSkillCatalog: () => this.getSkillCatalogFn!() } : {}),\n\t\t\t...(this.getRouterModelFn ? { getRouterModel: () => this.getRouterModelFn!() } : {}),\n\t\t\t...(this.getModelRoutingFn ? { getModelRouting: () => this.getModelRoutingFn!() } : {}),\n\t\t\tgetSystemPromptOptions: () => this.getSystemPromptOptionsFn(),\n\t\t\twaitForIdle: () => this.waitForIdleFn(),\n\t\t\tnewSession: (options) => this.newSessionHandler(options),\n\t\t\tfork: (entryId, options) => this.forkHandler(entryId, options),\n\t\t\tnavigateTree: (targetId, options) => this.navigateTreeHandler(targetId, options),\n\t\t\tswitchSession: (sessionPath, options) => this.switchSessionHandler(sessionPath, options),\n\t\t\treload: () => this.reloadHandler(),\n\t\t};\n\t}\n\n\t/** Keep startup reporters bound while adding the now-authorized extension set. */\n\tattachStartupExtensions(extensions: Extension[]): () => Promise<void> {\n\t\tconst newcomers = extensions.filter((extension) => !this.extensions.includes(extension));\n\t\tthis.extensions = [...this.extensions, ...newcomers];\n\t\treturn async () => {\n\t\t\tawait runResourceRegistrationBatch(this.runtime, () =>\n\t\t\t\trunGenericHandlers(\n\t\t\t\t\tthis.extensions.filter((extension) => newcomers.includes(extension)),\n\t\t\t\t\tthis.createContext(),\n\t\t\t\t\t{ type: \"session_start\", reason: \"startup\" },\n\t\t\t\t\t(error) => this.emitError(error),\n\t\t\t\t),\n\t\t\t);\n\t\t};\n\t}\n\n\tasync emit<TEvent extends RunnerEmitEvent>(\n\t\tevent: TEvent,\n\t\tisCurrent?: () => boolean,\n\t\tadmitted = false,\n\t): Promise<RunnerEmitResult<TEvent>> {\n\t\tif (!admitted && event.type !== \"session_shutdown\" && !extensionWorkOpen(this.runtime))\n\t\t\treturn undefined as RunnerEmitResult<TEvent>;\n\t\tconst observerFailures: Error[] = [];\n\t\tconst dispatch = () =>\n\t\t\trunGenericHandlers(\n\t\t\t\tthis.extensions,\n\t\t\t\tthis.createContext(),\n\t\t\t\tevent,\n\t\t\t\t(error) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.emitError(error);\n\t\t\t\t\t} catch (cause) {\n\t\t\t\t\t\tif (event.type !== \"session_shutdown\") throw cause;\n\t\t\t\t\t\tobserverFailures.push(\n\t\t\t\t\t\t\tnew Error(`${error.extensionPath}: ${error.error}`),\n\t\t\t\t\t\t\tnew Error(\"Shutdown observer failed\", { cause }),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tisCurrent,\n\t\t\t);\n\t\tconst result = await runResourceRegistrationBatch(\n\t\t\tthis.runtime,\n\t\t\t() => (event.type === \"session_shutdown\" ? runExtensionCleanup(this.runtime, dispatch) : dispatch()),\n\t\t\tadmitted || event.type === \"session_shutdown\",\n\t\t);\n\t\tif (observerFailures.length)\n\t\t\tthrow Object.assign(new AggregateError(observerFailures, \"Shutdown observers failed\"), {\n\t\t\t\tcode: \"ShutdownFailed\",\n\t\t\t});\n\t\treturn result;\n\t}\n\n\tasync emitMessageEnd(event: MessageEndEvent, admitted = false): Promise<AgentMessage | undefined> {\n\t\treturn runResourceRegistrationBatch(\n\t\t\tthis.runtime,\n\t\t\t() => runMessageEndHandlers(this.extensions, this.createContext(), event, (error) => this.emitError(error)),\n\t\t\tadmitted,\n\t\t);\n\t}\n\n\tasync emitToolResult(event: ToolResultEvent, admitted = false): Promise<ToolResultEventResult | undefined> {\n\t\treturn runResourceRegistrationBatch(\n\t\t\tthis.runtime,\n\t\t\t() => runToolResultHandlers(this.extensions, this.createContext(), event, (error) => this.emitError(error)),\n\t\t\tadmitted,\n\t\t);\n\t}\n\n\tasync emitToolCall(event: ToolCallEvent): Promise<ToolCallEventResult | undefined> {\n\t\treturn runResourceRegistrationBatch(this.runtime, () =>\n\t\t\trunToolCallHandlers(this.extensions, this.createContext(), event),\n\t\t);\n\t}\n\n\tasync emitUserBash(event: UserBashEvent): Promise<UserBashEventResult | undefined> {\n\t\treturn runResourceRegistrationBatch(this.runtime, () =>\n\t\t\trunUserBashHandlers(this.extensions, this.createContext(), event, (error) => this.emitError(error)),\n\t\t);\n\t}\n\n\tasync emitBoundary(\n\t\tbaseEvent: BoundaryBaseEvent,\n\t\tbuildContext: (entries: SessionBoundaryDraft[]) => BoundaryContextPreview | Promise<BoundaryContextPreview>,\n\t): Promise<BoundaryDispatchResult> {\n\t\treturn runResourceRegistrationBatch(\n\t\t\tthis.runtime,\n\t\t\t() =>\n\t\t\t\trunBoundaryHandlers(this.extensions, this.createContext(), baseEvent, buildContext, (error) =>\n\t\t\t\t\tthis.emitError(error),\n\t\t\t\t),\n\t\t\ttrue,\n\t\t);\n\t}\n\n\tasync emitContext(messages: AgentMessage[]): Promise<AgentMessage[]> {\n\t\treturn runResourceRegistrationBatch(this.runtime, () =>\n\t\t\trunContextHandlers(this.extensions, this.createContext(), messages, (error) => this.emitError(error)),\n\t\t);\n\t}\n\n\temitBeforeProviderRequest(payload: unknown): Promise<unknown> {\n\t\treturn runResourceRegistrationBatch(this.runtime, () =>\n\t\t\trunBeforeProviderRequestHandlers(this.extensions, this.createContext(), payload, (error) =>\n\t\t\t\tthis.emitError(error),\n\t\t\t),\n\t\t);\n\t}\n\n\tasync emitCacheWarmingDecision(event: CacheWarmingDecisionEvent): Promise<CacheWarmingAction> {\n\t\tlet action = event.action;\n\t\tconst ctx = this.createContext();\n\t\tfor (const { ext, handlers } of snapshotEventHandlers(this.extensions, event.type)) {\n\t\t\tfor (const handler of handlers) {\n\t\t\t\ttry {\n\t\t\t\t\tconst result = (await handler({ ...event, action }, ctx)) as CacheWarmingDecisionEventResult | undefined;\n\t\t\t\t\tif (result?.action === \"warm\" || result?.action === \"stop\") action = result.action;\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthis.emitError({\n\t\t\t\t\t\textensionPath: ext.path,\n\t\t\t\t\t\tevent: event.type,\n\t\t\t\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn action;\n\t}\n\n\tasync emitBeforeProviderHeaders(headers: ProviderHeaders): Promise<ProviderHeaders> {\n\t\treturn runResourceRegistrationBatch(this.runtime, async () => {\n\t\t\tfor (const { ext: extension, handlers } of snapshotEventHandlers(this.extensions, \"before_provider_headers\")) {\n\t\t\t\tfor (const handler of handlers) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait handler({ type: \"before_provider_headers\", headers }, this.createContext());\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tthis.emitError({\n\t\t\t\t\t\t\textensionPath: extension.path,\n\t\t\t\t\t\t\tevent: \"before_provider_headers\",\n\t\t\t\t\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\t\t\t\t\tstack: error instanceof Error ? error.stack : undefined,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn headers;\n\t\t});\n\t}\n\n\temitBeforeAgentStart(\n\t\tprompt: string,\n\t\timages: ImageContent[] | undefined,\n\t\tsystemPromptOptions: BuildSystemPromptOptions,\n\t): Promise<BeforeAgentStartCombinedResult> {\n\t\treturn runResourceRegistrationBatch(this.runtime, () =>\n\t\t\trunBeforeAgentStartHandlers(\n\t\t\t\tthis.extensions,\n\t\t\t\tthis.createContext(),\n\t\t\t\t() => this.assertActive(),\n\t\t\t\tprompt,\n\t\t\t\timages,\n\t\t\t\tsystemPromptOptions,\n\t\t\t\t(error) => this.emitError(error),\n\t\t\t),\n\t\t);\n\t}\n\n\temitResourcesDiscover(\n\t\tcwd: string,\n\t\treason: ResourcesDiscoverEvent[\"reason\"],\n\t): Promise<ResourcesDiscoverCombinedResult> {\n\t\treturn runResourceRegistrationBatch(this.runtime, () =>\n\t\t\trunResourcesDiscoverHandlers(this.extensions, this.createContext(), cwd, reason, (error) =>\n\t\t\t\tthis.emitError(error),\n\t\t\t),\n\t\t);\n\t}\n\n\t/** Emit input event. Transforms chain, \"handled\" short-circuits. */\n\temitInput(\n\t\ttext: string,\n\t\timages: ImageContent[] | undefined,\n\t\tsource: InputSource,\n\t\tstreamingBehavior?: \"steer\" | \"followUp\",\n\t): Promise<InputEventResult> {\n\t\treturn runResourceRegistrationBatch(this.runtime, () =>\n\t\t\trunInputHandlers(this.extensions, this.createContext(), text, images, source, streamingBehavior, (error) =>\n\t\t\t\tthis.emitError(error),\n\t\t\t),\n\t\t);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/core/extensions/runner.ts"],"names":[],"mappings":"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","sourcesContent":["import { AsyncLocalStorage } from \"node:async_hooks\";\nimport type {\n\tCacheWarmingAction,\n\tCacheWarmingDecisionEvent,\n\tCacheWarmingDecisionEventResult,\n} from \"../cache-warmer.ts\";\nimport type { ExecuteToolOptions, ExtensionToolContext } from \"./context-types.ts\";\nimport { snapshotEventHandlers } from \"./runner-events.ts\";\n/**\n * Extension runner - executes extensions and manages their lifecycle.\n */\n\nimport type { Provider, ProviderHeaders } from \"@bastani/pi-ai\";\nimport type { Api, ImageContent, Model } from \"@bastani/pi-ai/compat\";\nimport type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport type { KeyId } from \"@earendil-works/pi-tui\";\nimport type { ResourceDiagnostic } from \"../diagnostics.ts\";\nimport type { KeybindingsConfig } from \"../keybindings.ts\";\nimport type { ModelRegistry } from \"../model-registry.ts\";\nimport type { ScopedModel } from \"../model-resolver.ts\";\nimport { lifecycleScopeForOwner, sessionLifecycleScopes } from \"../session-lifecycle-scope.ts\";\nimport type { SessionManager } from \"../session-manager.ts\";\nimport type { BuildSystemPromptOptions } from \"../system-prompt.ts\";\nimport { normalizeBuildSystemPromptOptions } from \"../system-prompt.ts\";\nimport { presentQuestionnaire } from \"../tools/ask-user-question/ask-user-question.js\";\nimport {\n\tassertExtensionAction,\n\tbindExtensionWork,\n\tdrainExtensionWork,\n\textensionWorkOpen,\n\tresumeExtensionWork,\n\trevokeExtensionAuthority,\n\trunExtensionCleanup,\n\tsealExtensionWork,\n} from \"./extension-work.ts\";\nimport {\n\tcopyHostQuestionnaire,\n\ttype HostDiagnostic,\n\ttype HostInput,\n\tHostInputBridge,\n\thostInputError,\n} from \"./host-input.js\";\nimport { originalRegistrationCallback } from \"./loader-bindings.ts\";\nimport { boundExtensionRuntimes, runResourceRegistrationBatch } from \"./loader-runtime.ts\";\nimport {\n\tcreateExtensionCommandContext,\n\tcreateExtensionContext,\n\ttype ExtensionCommandContextSource,\n} from \"./runner-context.ts\";\nimport {\n\ttype BeforeAgentStartCombinedResult,\n\ttype BoundaryBaseEvent,\n\ttype BoundaryDispatchResult,\n\ttype ResourcesDiscoverCombinedResult,\n\ttype RunnerEmitEvent,\n\ttype RunnerEmitResult,\n\trunBeforeAgentStartHandlers,\n\trunBeforeProviderRequestHandlers,\n\trunBoundaryHandlers,\n\trunContextHandlers,\n\trunGenericHandlers,\n\trunInputHandlers,\n\trunMessageEndHandlers,\n\trunResourcesDiscoverHandlers,\n\trunToolCallHandlers,\n\trunToolResultHandlers,\n\trunUserBashHandlers,\n} from \"./runner-events.ts\";\nimport type {\n\tExtensionErrorListener,\n\tForkHandler,\n\tNavigateTreeHandler,\n\tNewSessionHandler,\n\tReloadHandler,\n\tShutdownHandler,\n\tSwitchSessionHandler,\n} from \"./runner-handlers.ts\";\nimport {\n\tcollectFlags,\n\tcollectMarkdownTransformers,\n\tcollectRegisteredTools,\n\tfindEntryRenderer,\n\tfindMessageRenderer,\n\tfindToolDefinition,\n\thasExtensionHandlers,\n\tresolveRegisteredCommands,\n} from \"./runner-registries.ts\";\nimport { resolveExtensionShortcuts } from \"./runner-shortcuts.ts\";\nimport { noOpUIContext } from \"./runner-ui.ts\";\nimport { STALE_EXTENSION_CONTEXT_MESSAGE } from \"./stale-context.ts\";\nimport type {\n\tBoundaryContextPreview,\n\tCompactOptions,\n\tContextUsage,\n\tEntryRenderer,\n\tExtension,\n\tExtensionActions,\n\tExtensionCommandContext,\n\tExtensionCommandContextActions,\n\tExtensionContext,\n\tExtensionContextActions,\n\tExtensionError,\n\tExtensionFlag,\n\tExtensionMode,\n\tExtensionRuntime,\n\tExtensionShortcut,\n\tExtensionUIContext,\n\tInputEventResult,\n\tInputSource,\n\tMarkdownTransformer,\n\tMessageEndEvent,\n\tMessageRenderer,\n\tOrchestrationContext,\n\tProviderConfig,\n\tRegisteredTool,\n\tResolvedCommand,\n\tResourcesDiscoverEvent,\n\tSessionBoundaryDraft,\n\tSessionShutdownEvent,\n\tSubagentChildPolicy,\n\tToolCallEvent,\n\tToolCallEventResult,\n\tToolResultEvent,\n\tToolResultEventResult,\n\tUIPromptKind,\n\tUserBashEvent,\n\tUserBashEventResult,\n} from \"./types.ts\";\nimport type { SessionWorkflows } from \"./workflow-run-control.js\";\n\nexport type {\n\tExtensionErrorListener,\n\tForkHandler,\n\tNavigateTreeHandler,\n\tNewSessionHandler,\n\tReloadHandler,\n\tShutdownHandler,\n\tSwitchSessionHandler,\n} from \"./runner-handlers.ts\";\nexport { emitProjectTrustEvent } from \"./runner-project-trust.ts\";\n\n/**\n * Helper function to emit session_shutdown event to extensions.\n * Returns true if the event was emitted, false if there were no handlers.\n */\nexport async function emitSessionShutdownEvent(\n\textensionRunner: ExtensionRunner,\n\tevent: SessionShutdownEvent,\n): Promise<boolean> {\n\tif (extensionRunner.hasHandlers(\"session_shutdown\")) {\n\t\tconst failures: Error[] = [];\n\t\tconst unsubscribe = extensionRunner.onError((failure) => {\n\t\t\tif (failure.event === \"session_shutdown\")\n\t\t\t\tfailures.push(new Error(`${failure.extensionPath}: ${failure.error}`));\n\t\t});\n\t\ttry {\n\t\t\tawait extensionRunner.emit(event);\n\t\t} catch (error) {\n\t\t\tconst causes = error instanceof AggregateError ? error.errors : [error];\n\t\t\tfailures.push(...causes.map((cause) => (cause instanceof Error ? cause : new Error(String(cause)))));\n\t\t} finally {\n\t\t\tunsubscribe();\n\t\t}\n\t\t// Shutdown may start tracked cleanup without returning its promise. Join it\n\t\t// after dispatch leaves its own work frame, including when a handler failed.\n\t\ttry {\n\t\t\tawait extensionRunner.drainWork();\n\t\t} catch (error) {\n\t\t\tfailures.push(error instanceof Error ? error : new Error(String(error)));\n\t\t}\n\t\tif (failures.length)\n\t\t\tthrow Object.assign(new AggregateError(failures, \"Extension shutdown failed\"), { code: \"ShutdownFailed\" });\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport class ExtensionRunner {\n\tprivate extensions: Extension[];\n\tprivate runtime: ExtensionRuntime;\n\tprivate uiContext: ExtensionUIContext;\n\tprivate presentationUI?: ExtensionUIContext;\n\tprivate presentationInput?: HostInput;\n\tprivate humanInput?: HostInput | null;\n\tprivate humanInputBindingRevision = 0;\n\tprivate inputBridge = new HostInputBridge(\n\t\t() => this.sessionManager.getSessionId(),\n\t\t() => this.getSignalFn(),\n\t);\n\tprivate onDiagnostic?: (diagnostic: HostDiagnostic) => void;\n\tprivate mode: ExtensionMode = \"print\";\n\tprivate cwd: string;\n\tprivate sessionManager: SessionManager;\n\tprivate modelRegistry: ModelRegistry;\n\tprivate orchestrationContext: OrchestrationContext | undefined;\n\tprivate subagentPolicy: SubagentChildPolicy | undefined;\n\tprivate taskHostBinding: (() => import(\"../tasks/agent-adapter.js\").AgentTaskHost) | undefined;\n\t/** @internal Attach dispatch receipts to the owning session before startup. */\n\tbindWorkOwner(owner: object): void {\n\t\tbindExtensionWork(this.runtime, owner);\n\t}\n\tbindTaskHost(binding: () => import(\"../tasks/agent-adapter.js\").AgentTaskHost): void {\n\t\tthis.taskHostBinding = binding;\n\t}\n\tbindChildSessionOptions(\n\t\tresolver: import(\"../child-session-options.ts\").ChildSessionOptionsResolver | undefined,\n\t): void {\n\t\tthis.runtime.getChildSessionOptions = resolver;\n\t}\n\t/** The run-control implementation registered by the current extension generation, if any. */\n\tgetWorkflowRunControl(): SessionWorkflows | undefined {\n\t\treturn this.runtime.workflowRunControlHub.current();\n\t}\n\tgetChildHostBindings(): import(\"../agent-session-types.js\").ExtensionBindings {\n\t\treturn {\n\t\t\thumanInput: this.humanInput === undefined ? this.presentationInput : this.humanInput,\n\t\t\tonDiagnostic: this.onDiagnostic,\n\t\t};\n\t}\n\tprivate errorListeners: Set<ExtensionErrorListener> = new Set();\n\tprivate getModel: () => Model<Api> | undefined = () => undefined;\n\tprivate getScopedModels: () => readonly ScopedModel[] = () => [];\n\tprivate isIdleFn: () => boolean = () => true;\n\tprivate isProjectTrustedFn: () => boolean = () => true;\n\tprivate getSignalFn: () => AbortSignal | undefined = () => undefined;\n\tprivate waitForIdleFn: () => Promise<void> = async () => {};\n\tprivate abortFn: () => void = () => {};\n\tprivate hasPendingMessagesFn: () => boolean = () => false;\n\tprivate getContextUsageFn: () => ContextUsage | undefined = () => undefined;\n\tprivate compactFn: (options?: CompactOptions) => void = () => {};\n\tprivate getSystemPromptFn: () => string = () => \"\";\n\tprivate getSystemPromptOptionsFn: () => BuildSystemPromptOptions = () =>\n\t\tnormalizeBuildSystemPromptOptions({ cwd: this.cwd });\n\tprivate getSkillCatalogFn: ExtensionContextActions[\"getSkillCatalog\"] = undefined;\n\tprivate getRouterModelFn: ExtensionContextActions[\"getRouterModel\"] = undefined;\n\tprivate getModelRoutingFn: ExtensionContextActions[\"getModelRouting\"] = undefined;\n\tprivate executeToolFn: ExtensionContextActions[\"executeTool\"];\n\tprivate getCallableToolsFn: NonNullable<ExtensionContextActions[\"getCallableTools\"]> = () => [];\n\tprivate newSessionHandler: NewSessionHandler = async () => ({ cancelled: false });\n\tprivate forkHandler: ForkHandler = async () => ({ cancelled: false });\n\tprivate navigateTreeHandler: NavigateTreeHandler = async () => ({ cancelled: false });\n\tprivate switchSessionHandler: SwitchSessionHandler = async () => ({ cancelled: false });\n\tprivate reloadHandler: ReloadHandler = async () => {};\n\tprivate shutdownHandler: ShutdownHandler = () => {};\n\tprivate shortcutDiagnostics: ResourceDiagnostic[] = [];\n\tprivate commandDiagnostics: ResourceDiagnostic[] = [];\n\tprivate staleMessage: string | undefined;\n\tprivate authorityRevoked = false;\n\tprivate readonly contextOwner = {};\n\tprivate uiPromptBinding = 0;\n\tprivate activeUIPrompt:\n\t\t| { depth: number; reason: \"ui_prompt\" | \"project_trust\"; kind: UIPromptKind; title: string | undefined }\n\t\t| undefined;\n\n\tconstructor(\n\t\textensions: Extension[],\n\t\truntime: ExtensionRuntime,\n\t\tcwd: string,\n\t\tsessionManager: SessionManager,\n\t\tmodelRegistry: ModelRegistry,\n\t\torchestrationContext?: OrchestrationContext,\n\t\tsubagentPolicy?: SubagentChildPolicy,\n\t) {\n\t\tthis.extensions = extensions;\n\t\tthis.runtime = runtime;\n\t\tsessionLifecycleScopes.set(this, lifecycleScopeForOwner(runtime));\n\t\tthis.runtime.workflowActivityHub.bindDispatcher((event, isCurrent) => this.emit(event, isCurrent));\n\t\tthis.uiContext = noOpUIContext;\n\t\tthis.cwd = cwd;\n\t\tthis.sessionManager = sessionManager;\n\t\tthis.modelRegistry = modelRegistry;\n\t\tthis.orchestrationContext = orchestrationContext;\n\t\tthis.subagentPolicy = subagentPolicy;\n\t}\n\n\tbindCore(\n\t\tactions: ExtensionActions,\n\t\tcontextActions: ExtensionContextActions,\n\t\tproviderActions?: {\n\t\t\tregisterProvider?: (providerOrName: Provider | string, config?: ProviderConfig) => void;\n\t\t\tunregisterProvider?: (name: string) => void;\n\t\t},\n\t): void {\n\t\t// Copy actions into the shared runtime (all extension APIs reference this)\n\t\tthis.runtime.sendMessage = actions.sendMessage;\n\t\tthis.runtime.sendMessages = actions.sendMessages;\n\t\tthis.runtime.sendUserMessage = actions.sendUserMessage;\n\t\tboundExtensionRuntimes.add(this.runtime);\n\t\tthis.runtime.appendEntry = actions.appendEntry;\n\t\tthis.runtime.setSessionName = actions.setSessionName;\n\t\tthis.runtime.getSessionName = actions.getSessionName;\n\t\tthis.runtime.setLabel = actions.setLabel;\n\t\tthis.runtime.getActiveTools = actions.getActiveTools;\n\t\tthis.runtime.getAllTools = actions.getAllTools;\n\t\tthis.runtime.setActiveTools = actions.setActiveTools;\n\t\tthis.runtime.refreshTools = actions.refreshTools;\n\t\tthis.runtime.getCommands = actions.getCommands;\n\t\tthis.runtime.setModel = actions.setModel;\n\t\tthis.runtime.getThinkingLevel = actions.getThinkingLevel;\n\t\tthis.runtime.setThinkingLevel = actions.setThinkingLevel;\n\n\t\t// Context actions (required)\n\t\tthis.getModel = contextActions.getModel;\n\t\tthis.getScopedModels = contextActions.getScopedModels;\n\t\tthis.isIdleFn = contextActions.isIdle;\n\t\tthis.isProjectTrustedFn = contextActions.isProjectTrusted;\n\t\tthis.getSignalFn = contextActions.getSignal;\n\t\tthis.abortFn = contextActions.abort;\n\t\tthis.hasPendingMessagesFn = contextActions.hasPendingMessages;\n\t\tthis.shutdownHandler = contextActions.shutdown;\n\t\tthis.getContextUsageFn = contextActions.getContextUsage;\n\t\tthis.compactFn = contextActions.compact;\n\t\tthis.getSystemPromptFn = contextActions.getSystemPrompt;\n\t\tthis.getSystemPromptOptionsFn =\n\t\t\tcontextActions.getSystemPromptOptions ?? (() => normalizeBuildSystemPromptOptions({ cwd: this.cwd }));\n\t\tthis.getSkillCatalogFn = contextActions.getSkillCatalog;\n\t\tthis.getRouterModelFn = contextActions.getRouterModel;\n\t\tthis.getModelRoutingFn = contextActions.getModelRouting;\n\t\tthis.executeToolFn = contextActions.executeTool;\n\t\tthis.getCallableToolsFn = contextActions.getCallableTools ?? (() => []);\n\t\tthis.runtime.getSettings = contextActions.getSettings;\n\n\t\t// Flush provider registrations queued during extension loading.\n\t\tfor (const registration of this.runtime.pendingProviderRegistrations) {\n\t\t\ttry {\n\t\t\t\tif (\"provider\" in registration) {\n\t\t\t\t\t(\n\t\t\t\t\t\tproviderActions?.registerProvider ??\n\t\t\t\t\t\t((provider: Provider) => this.modelRegistry.registerProvider(provider))\n\t\t\t\t\t)(registration.provider);\n\t\t\t\t} else {\n\t\t\t\t\t(\n\t\t\t\t\t\tproviderActions?.registerProvider ??\n\t\t\t\t\t\t((name: string, config?: ProviderConfig) => this.modelRegistry.registerProvider(name, config!))\n\t\t\t\t\t)(registration.name, registration.config);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tthis.emitError({\n\t\t\t\t\textensionPath: registration.extensionPath,\n\t\t\t\t\tevent: \"register_provider\",\n\t\t\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\t\t\tstack: error instanceof Error ? error.stack : undefined,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tthis.runtime.pendingProviderRegistrations = [];\n\n\t\t// From this point on, provider registration/unregistration takes effect immediately\n\t\t// without requiring a /reload.\n\t\tthis.runtime.registerProvider = ((providerOrName: Provider | string, configOrPath?: ProviderConfig | string) => {\n\t\t\tif (typeof providerOrName === \"string\") {\n\t\t\t\tconst config = configOrPath as ProviderConfig;\n\t\t\t\tif (providerActions?.registerProvider) providerActions.registerProvider(providerOrName, config);\n\t\t\t\telse this.modelRegistry.registerProvider(providerOrName, config);\n\t\t\t} else if (providerActions?.registerProvider) providerActions.registerProvider(providerOrName);\n\t\t\telse this.modelRegistry.registerProvider(providerOrName);\n\t\t}) as ExtensionRuntime[\"registerProvider\"];\n\t\tthis.runtime.unregisterProvider = (name) => {\n\t\t\tif (providerActions?.unregisterProvider) {\n\t\t\t\tproviderActions.unregisterProvider(name);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.modelRegistry.unregisterProvider(name);\n\t\t};\n\t}\n\n\tbindCommandContext(actions?: ExtensionCommandContextActions): void {\n\t\tif (actions) {\n\t\t\tthis.waitForIdleFn = actions.waitForIdle;\n\t\t\tthis.newSessionHandler = actions.newSession;\n\t\t\tthis.forkHandler = actions.fork;\n\t\t\tthis.navigateTreeHandler = actions.navigateTree;\n\t\t\tthis.switchSessionHandler = actions.switchSession;\n\t\t\tthis.reloadHandler = actions.reload;\n\t\t\treturn;\n\t\t}\n\n\t\tthis.waitForIdleFn = async () => {};\n\t\tthis.newSessionHandler = async () => ({ cancelled: false });\n\t\tthis.forkHandler = async () => ({ cancelled: false });\n\t\tthis.navigateTreeHandler = async () => ({ cancelled: false });\n\t\tthis.switchSessionHandler = async () => ({ cancelled: false });\n\t\tthis.reloadHandler = async () => {};\n\t}\n\n\tsetHostBindings(\n\t\thumanInput: HostInput | null | undefined,\n\t\tonDiagnostic?: (diagnostic: HostDiagnostic) => void,\n\t\tbindingRevision = 0,\n\t): void {\n\t\tthis.humanInput = humanInput;\n\t\tthis.humanInputBindingRevision = bindingRevision;\n\t\tthis.onDiagnostic = onDiagnostic;\n\t\t// Internal builtin bridge: no new extension API and no interception of console.\n\t\tconst scope = lifecycleScopeForOwner(this.runtime);\n\t\tconst report = (diagnostic: Omit<HostDiagnostic, \"sessionId\">) => {\n\t\t\ttry {\n\t\t\t\tthis.onDiagnostic?.({ ...diagnostic, sessionId: this.sessionManager.getSessionId() });\n\t\t\t} catch {\n\t\t\t\t// Observers cannot replace the primary service failure.\n\t\t\t}\n\t\t};\n\t\t// Rebinding replaces the reporter, not the builtin service owner.\n\t\tObject.defineProperty(report, Symbol.for(\"atomic.builtin-owner.v1\"), { value: scope });\n\t\tReflect.set(scope, Symbol.for(\"atomic.builtin-diagnostic.v1\"), report);\n\t\tthis.refreshHostInput();\n\t}\n\n\tcancelHostInput(): void {\n\t\tthis.inputBridge.cancel();\n\t}\n\t/** @internal Join this generation's callbacks without draining its reload caller. */\n\tdrainWork(): Promise<void> {\n\t\treturn drainExtensionWork(this.runtime);\n\t}\n\n\t/** @internal Seal input admission without invalidating shutdown handlers. */\n\tsealHostInput(): void {\n\t\tthis.inputBridge.close();\n\t\tsealExtensionWork(this.runtime);\n\t}\n\n\t/** @internal A rejected transaction retains the live runner, but never revives captured dialogs. */\n\tresumeAfterRejectedReload(): void {\n\t\tif (this.staleMessage) return;\n\t\tresumeExtensionWork(this.runtime);\n\t\tthis.inputBridge = new HostInputBridge(\n\t\t\t() => this.sessionManager.getSessionId(),\n\t\t\t() => this.getSignalFn(),\n\t\t);\n\t\tthis.refreshHostInput();\n\t}\n\n\tprivate refreshHostInput(): void {\n\t\tconst ui = this.presentationUI;\n\t\tthis.inputBridge.bind(\n\t\t\tthis.humanInput === undefined ? this.presentationInput : (this.humanInput ?? undefined),\n\t\t\tthis.humanInput,\n\t\t\tthis.humanInputBindingRevision,\n\t\t);\n\t\tconst bridged = this.inputBridge.wrap(\n\t\t\tui ?? {\n\t\t\t\t...noOpUIContext,\n\t\t\t\tcustom: async () => {\n\t\t\t\t\tthrow hostInputError(\"HumanInputUnavailable\");\n\t\t\t\t},\n\t\t\t},\n\t\t\tthis.presentationInput,\n\t\t\tthis.orchestrationContext?.kind === \"workflow-stage\"\n\t\t\t\t? {\n\t\t\t\t\t\tworkflowRunId: this.orchestrationContext.workflowRunId,\n\t\t\t\t\t\tworkflowStageId: this.orchestrationContext.workflowStageId,\n\t\t\t\t\t}\n\t\t\t\t: {},\n\t\t);\n\t\tthis.uiContext = this.wrapUIPromptContext(bridged, this.uiPromptBinding);\n\t\tcopyHostQuestionnaire(bridged, this.uiContext);\n\t}\n\n\tsetUIContext(uiContext?: ExtensionUIContext, mode: ExtensionMode = \"print\"): void {\n\t\tif (uiContext !== this.presentationUI) {\n\t\t\tthis.endActiveUIPrompt();\n\t\t\t++this.uiPromptBinding;\n\t\t\tthis.presentationUI = uiContext;\n\t\t\tconst ui = uiContext;\n\t\t\tthis.presentationInput = ui\n\t\t\t\t? {\n\t\t\t\t\t\tconfirm: (title, message, options) => ui.confirm(title, message, options),\n\t\t\t\t\t\tselect: (title, choices, options) => ui.select(title, choices, options),\n\t\t\t\t\t\tinput: (title, placeholder, options) => ui.input(title, placeholder, options),\n\t\t\t\t\t\teditor: (title, initial, options) => ui.editor(title, initial, options),\n\t\t\t\t\t\tquestionnaire: (params, options) => presentQuestionnaire(ui, params, options.signal),\n\t\t\t\t\t}\n\t\t\t\t: undefined;\n\t\t\tthis.refreshHostInput();\n\t\t}\n\t\tthis.mode = mode;\n\t}\n\n\tprivate wrapUIPromptContext(ui: ExtensionUIContext, binding: number): ExtensionUIContext {\n\t\treturn {\n\t\t\t...ui,\n\t\t\tselect: (title, options, opts) =>\n\t\t\t\tthis.withUIPrompt(binding, \"select\", title, () => ui.select(title, options, opts)),\n\t\t\tconfirm: (title, message, opts) =>\n\t\t\t\tthis.withUIPrompt(binding, \"confirm\", title, () => ui.confirm(title, message, opts)),\n\t\t\tinput: (title, placeholder, opts) =>\n\t\t\t\tthis.withUIPrompt(binding, \"input\", title, () => ui.input(title, placeholder, opts)),\n\t\t\teditor: (title, prefill, opts) =>\n\t\t\t\tthis.withUIPrompt(binding, \"editor\", title, () => ui.editor(title, prefill, opts)),\n\t\t\tcustom: (factory, options) =>\n\t\t\t\toptions?.purpose === \"navigation\"\n\t\t\t\t\t? ui.custom(factory, options)\n\t\t\t\t\t: this.withUIPrompt(binding, \"custom\", undefined, () => ui.custom(factory, options)),\n\t\t};\n\t}\n\n\t/** Track a host-owned trust dialog using the current session's prompt lifecycle. */\n\twithProjectTrustPrompt<T>(kind: UIPromptKind, title: string, run: () => Promise<T>): Promise<T> {\n\t\treturn this.withUIPrompt(this.uiPromptBinding, kind, title, run, \"project_trust\");\n\t}\n\n\t/** Begin a host-owned trust span whose end arrives as a separate control frame. */\n\tbeginProjectTrustPrompt(kind: UIPromptKind, title: string): () => void {\n\t\treturn this.beginUIPrompt(kind, title, \"project_trust\");\n\t}\n\n\tprivate withUIPrompt<T>(\n\t\tbinding: number,\n\t\tkind: UIPromptKind,\n\t\ttitle: string | undefined,\n\t\trun: () => Promise<T>,\n\t\treason: \"ui_prompt\" | \"project_trust\" = \"ui_prompt\",\n\t): Promise<T> {\n\t\tif (binding !== this.uiPromptBinding) return run();\n\t\tconst finish = this.beginUIPrompt(kind, title, reason);\n\t\ttry {\n\t\t\treturn run().finally(finish);\n\t\t} catch (error) {\n\t\t\tfinish();\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tprivate beginUIPrompt(\n\t\tkind: UIPromptKind,\n\t\ttitle: string | undefined,\n\t\treason: \"ui_prompt\" | \"project_trust\",\n\t): () => void {\n\t\tlet prompt = this.activeUIPrompt;\n\t\tif (!prompt) {\n\t\t\tprompt = { depth: 0, reason, kind, title };\n\t\t\tthis.activeUIPrompt = prompt;\n\t\t\tthis.emitUIPromptEvent({\n\t\t\t\ttype: \"ui_prompt_start\",\n\t\t\t\treason,\n\t\t\t\tkind,\n\t\t\t\t...(title === undefined ? {} : { title }),\n\t\t\t});\n\t\t}\n\t\tprompt.depth += 1;\n\n\t\tlet finished = false;\n\t\treturn () => {\n\t\t\tif (finished) return;\n\t\t\tfinished = true;\n\t\t\tif (this.activeUIPrompt !== prompt) return;\n\n\t\t\tprompt.depth -= 1;\n\t\t\tif (prompt.depth === 0) this.endActiveUIPrompt(prompt);\n\t\t};\n\t}\n\n\tprivate endActiveUIPrompt(prompt = this.activeUIPrompt): void {\n\t\tif (!prompt || this.activeUIPrompt !== prompt) return;\n\t\tthis.activeUIPrompt = undefined;\n\t\tprompt.depth = 0;\n\t\tthis.emitUIPromptEvent({\n\t\t\ttype: \"ui_prompt_end\",\n\t\t\treason: prompt.reason,\n\t\t\tkind: prompt.kind,\n\t\t\t...(prompt.title === undefined ? {} : { title: prompt.title }),\n\t\t});\n\t}\n\n\tprivate readonly pendingUIPromptNotifications = new Set<Promise<void>>();\n\n\tprivate emitUIPromptEvent(event: Extract<RunnerEmitEvent, { type: \"ui_prompt_start\" | \"ui_prompt_end\" }>): void {\n\t\tconst delivery = Promise.resolve().then(async () => {\n\t\t\tawait this.emit(event);\n\t\t});\n\t\tthis.pendingUIPromptNotifications.add(delivery);\n\t\tvoid delivery.finally(() => this.pendingUIPromptNotifications.delete(delivery)).catch(() => {});\n\t}\n\n\t/** Settle only the deliveries pending at this boundary, without delaying prompt UI. */\n\tasync flushUIPromptNotifications(timeoutMs: number): Promise<{ timedOut: boolean }> {\n\t\tconst pending = [...this.pendingUIPromptNotifications];\n\t\tif (pending.length === 0) return { timedOut: false };\n\t\tlet timer: ReturnType<typeof setTimeout> | undefined;\n\t\ttry {\n\t\t\treturn await Promise.race([\n\t\t\t\tPromise.allSettled(pending).then(() => ({ timedOut: false })),\n\t\t\t\tnew Promise<{ timedOut: boolean }>((resolve) => {\n\t\t\t\t\ttimer = setTimeout(() => resolve({ timedOut: true }), timeoutMs);\n\t\t\t\t}),\n\t\t\t]);\n\t\t} finally {\n\t\t\tclearTimeout(timer);\n\t\t}\n\t}\n\n\tgetUIContext(): ExtensionUIContext {\n\t\treturn this.uiContext;\n\t}\n\n\thasUI(): boolean {\n\t\treturn this.presentationUI !== undefined;\n\t}\n\n\tgetExtensionPaths(): string[] {\n\t\treturn this.extensions.map((extension) => extension.path);\n\t}\n\n\t/** Get all registered tools from all extensions (first registration per name wins). */\n\tgetAllRegisteredTools(): RegisteredTool[] {\n\t\treturn collectRegisteredTools(this.extensions);\n\t}\n\n\t/** Get a tool definition by name. Returns undefined if not found. */\n\tgetToolDefinition(toolName: string): RegisteredTool[\"definition\"] | undefined {\n\t\treturn findToolDefinition(this.extensions, toolName);\n\t}\n\n\tgetFlags(): Map<string, ExtensionFlag> {\n\t\treturn collectFlags(this.extensions);\n\t}\n\n\tsetFlagValue(name: string, value: boolean | string): void {\n\t\tthis.runtime.flagValues.set(name, value);\n\t\tthis.runtime.explicitFlagNames ??= new Set();\n\t\tthis.runtime.explicitFlagNames.add(name);\n\t}\n\n\tgetFlagValues(): Map<string, boolean | string> {\n\t\treturn new Map(this.runtime.flagValues);\n\t}\n\n\tgetExplicitFlagValues(): Map<string, boolean | string> {\n\t\tconst explicitFlagNames = this.runtime.explicitFlagNames ?? new Set<string>();\n\t\treturn new Map([...this.runtime.flagValues].filter(([name]) => explicitFlagNames.has(name)));\n\t}\n\n\tgetShortcuts(resolvedKeybindings: KeybindingsConfig): Map<KeyId, ExtensionShortcut> {\n\t\tconst resolution = resolveExtensionShortcuts(this.extensions, resolvedKeybindings, this.hasUI());\n\t\tthis.shortcutDiagnostics = resolution.diagnostics;\n\t\tfor (const [key, shortcut] of resolution.shortcuts) {\n\t\t\tresolution.shortcuts.set(key, {\n\t\t\t\t...shortcut,\n\t\t\t\thandler: (context) => {\n\t\t\t\t\tif (!extensionWorkOpen(this.runtime)) return Promise.reject(hostInputError(\"SessionClosed\"));\n\t\t\t\t\treturn runResourceRegistrationBatch(this.runtime, async () => shortcut.handler(context));\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t\treturn resolution.shortcuts;\n\t}\n\n\tgetShortcutDiagnostics(): ResourceDiagnostic[] {\n\t\treturn this.shortcutDiagnostics;\n\t}\n\n\trevokeAuthority(): void {\n\t\tthis.authorityRevoked = true;\n\t\trevokeExtensionAuthority(this.runtime);\n\t}\n\n\tinvalidate(message = STALE_EXTENSION_CONTEXT_MESSAGE): void {\n\t\tthis.sealHostInput();\n\t\tif (!this.staleMessage) {\n\t\t\tthis.staleMessage = message;\n\t\t\tthis.runtime.invalidate(message);\n\t\t}\n\t}\n\n\tprivate assertActive(): void {\n\t\tif (this.authorityRevoked) this.runtime.assertActive();\n\t\tif (this.staleMessage) {\n\t\t\tthrow new Error(this.staleMessage);\n\t\t}\n\t}\n\n\tonError(listener: ExtensionErrorListener): () => void {\n\t\tthis.errorListeners.add(listener);\n\t\treturn () => this.errorListeners.delete(listener);\n\t}\n\n\temitError(error: ExtensionError): void {\n\t\tthis.onDiagnostic?.({\n\t\t\tlevel: \"error\",\n\t\t\tsource: error.extensionPath,\n\t\t\tmessage: `Extension ${error.event} failed`,\n\t\t\tsessionId: this.sessionManager.getSessionId(),\n\t\t});\n\t\tfor (const listener of this.errorListeners) {\n\t\t\tlistener(error);\n\t\t}\n\t}\n\n\thasHandlers(eventType: string): boolean {\n\t\treturn hasExtensionHandlers(this.extensions, eventType);\n\t}\n\n\tgetMessageRenderer(customType: string): MessageRenderer | undefined {\n\t\treturn findMessageRenderer(this.extensions, customType);\n\t}\n\n\tgetMarkdownTransformers(): MarkdownTransformer[] {\n\t\treturn collectMarkdownTransformers(this.extensions);\n\t}\n\n\tgetEntryRenderer(customType: string): EntryRenderer | undefined {\n\t\tconst renderer = findEntryRenderer(this.extensions, customType);\n\t\treturn renderer ? originalRegistrationCallback(renderer) : undefined;\n\t}\n\n\t/** Invoke the session-owned registration without changing discovery identity. */\n\trenderEntry(customType: string, ...args: Parameters<EntryRenderer>): ReturnType<EntryRenderer> {\n\t\tthis.assertActive();\n\t\treturn findEntryRenderer(this.extensions, customType)?.(...args);\n\t}\n\n\tgetRegisteredCommands(): ResolvedCommand[] {\n\t\tthis.commandDiagnostics = [];\n\t\treturn resolveRegisteredCommands(this.extensions);\n\t}\n\n\tgetCommandDiagnostics(): ResourceDiagnostic[] {\n\t\treturn this.commandDiagnostics;\n\t}\n\n\tgetCommand(name: string): ResolvedCommand | undefined {\n\t\tconst command = resolveRegisteredCommands(this.extensions).find((entry) => entry.invocationName === name);\n\t\tif (!command) return undefined;\n\t\treturn {\n\t\t\t...command,\n\t\t\thandler: (args, context) =>\n\t\t\t\trunResourceRegistrationBatch(this.runtime, async () => command.handler(args, context)),\n\t\t};\n\t}\n\n\t/**\n\t * Request a graceful shutdown. Called by extension tools and event handlers.\n\t * The actual shutdown behavior is provided by the mode via bindExtensions().\n\t */\n\tshutdown(): void {\n\t\tthis.shutdownHandler();\n\t}\n\n\tcreateContext(): ExtensionContext {\n\t\treturn createExtensionContext(this.createContextSource(), this.contextOwner);\n\t}\n\n\t/** Bound to the actual executing parent, not an extension-supplied caller identity. */\n\tcreateToolContext(toolCallId: string, signal: AbortSignal | undefined): ExtensionToolContext {\n\t\tconst invoke = AsyncLocalStorage.bind(async (name: string, args: unknown, options: ExecuteToolOptions = {}) => {\n\t\t\tthis.assertActive();\n\t\t\tif (signal?.aborted) throw new Error(\"Calling tool execution has ended\");\n\t\t\tif (!this.executeToolFn)\n\t\t\t\treturn {\n\t\t\t\t\ttoolCall: { type: \"toolCall\" as const, id: `${toolCallId}/0`, name, arguments: {} },\n\t\t\t\t\tresult: {\n\t\t\t\t\t\tcontent: [{ type: \"text\" as const, text: \"Nested tool calls are not available in this context\" }],\n\t\t\t\t\t\tdetails: {},\n\t\t\t\t\t},\n\t\t\t\t\tisError: true,\n\t\t\t\t};\n\t\t\tconst callSignal =\n\t\t\t\tsignal && options.signal ? AbortSignal.any([signal, options.signal]) : (options.signal ?? signal);\n\t\t\treturn this.executeToolFn(toolCallId, name, args, { ...options, signal: callSignal });\n\t\t});\n\t\treturn Object.defineProperties(this.createContext() as ExtensionToolContext, {\n\t\t\ttools: {\n\t\t\t\tget: () => {\n\t\t\t\t\tthis.assertActive();\n\t\t\t\t\treturn this.getCallableToolsFn();\n\t\t\t\t},\n\t\t\t},\n\t\t\texecuteTool: { value: invoke },\n\t\t});\n\t}\n\n\tcreateCommandContext(): ExtensionCommandContext {\n\t\treturn createExtensionCommandContext(this.createContextSource(), this.contextOwner);\n\t}\n\n\tprivate createContextSource(): ExtensionCommandContextSource {\n\t\treturn {\n\t\t\tassertActive: () => this.assertActive(),\n\t\t\tassertAction: () => assertExtensionAction(this.runtime),\n\t\t\tgetChildSessionOptions: (options) => this.runtime.getChildSessionOptions?.(options) ?? options,\n\t\t\tgetExtensionPaths: () => this.getExtensionPaths(),\n\t\t\tobserveWorkflowActivity: (observer) => this.runtime.workflowActivityHub.observeWorkflowActivity(observer),\n\t\t\t...(this.taskHostBinding ? { getAgentTaskHost: this.taskHostBinding } : {}),\n\t\t\tgetUIContext: () => this.uiContext,\n\t\t\tgetMode: () => this.mode,\n\t\t\thasUI: () => this.hasUI(),\n\t\t\thasHumanInput: () => this.inputBridge.available,\n\t\t\tgetCwd: () => this.cwd,\n\t\t\tgetSessionManager: () => this.sessionManager,\n\t\t\tgetModelRegistry: () => this.modelRegistry,\n\t\t\tgetModel: () => this.getModel(),\n\t\t\tgetSubagentPolicy: () => this.subagentPolicy,\n\t\t\tgetScopedModels: () => this.getScopedModels(),\n\t\t\tgetThinkingLevel: () => this.runtime.getThinkingLevel(),\n\t\t\tgetOrchestrationContext: () => this.orchestrationContext,\n\t\t\tisIdle: () => this.isIdleFn(),\n\t\t\tisProjectTrusted: () => this.isProjectTrustedFn(),\n\t\t\tgetSignal: () => this.getSignalFn(),\n\t\t\tabort: () => this.abortFn(),\n\t\t\thasPendingMessages: () => this.hasPendingMessagesFn(),\n\t\t\tshutdown: () => this.shutdownHandler(),\n\t\t\tgetContextUsage: () => this.getContextUsageFn(),\n\t\t\tcompact: (options) => this.compactFn(options),\n\t\t\tgetSystemPrompt: () => this.getSystemPromptFn(),\n\t\t\t...(this.getSkillCatalogFn ? { getSkillCatalog: () => this.getSkillCatalogFn!() } : {}),\n\t\t\t...(this.getRouterModelFn ? { getRouterModel: () => this.getRouterModelFn!() } : {}),\n\t\t\t...(this.getModelRoutingFn ? { getModelRouting: () => this.getModelRoutingFn!() } : {}),\n\t\t\tgetSystemPromptOptions: () => this.getSystemPromptOptionsFn(),\n\t\t\twaitForIdle: () => this.waitForIdleFn(),\n\t\t\tnewSession: (options) => this.newSessionHandler(options),\n\t\t\tfork: (entryId, options) => this.forkHandler(entryId, options),\n\t\t\tnavigateTree: (targetId, options) => this.navigateTreeHandler(targetId, options),\n\t\t\tswitchSession: (sessionPath, options) => this.switchSessionHandler(sessionPath, options),\n\t\t\treload: () => this.reloadHandler(),\n\t\t};\n\t}\n\n\t/** Keep startup reporters bound while adding the now-authorized extension set. */\n\tattachStartupExtensions(extensions: Extension[]): () => Promise<void> {\n\t\tconst newcomers = extensions.filter((extension) => !this.extensions.includes(extension));\n\t\tthis.extensions = [...this.extensions, ...newcomers];\n\t\treturn async () => {\n\t\t\tawait runResourceRegistrationBatch(this.runtime, () =>\n\t\t\t\trunGenericHandlers(\n\t\t\t\t\tthis.extensions.filter((extension) => newcomers.includes(extension)),\n\t\t\t\t\tthis.createContext(),\n\t\t\t\t\t{ type: \"session_start\", reason: \"startup\" },\n\t\t\t\t\t(error) => this.emitError(error),\n\t\t\t\t),\n\t\t\t);\n\t\t};\n\t}\n\n\tasync emit<TEvent extends RunnerEmitEvent>(\n\t\tevent: TEvent,\n\t\tisCurrent?: () => boolean,\n\t\tadmitted = false,\n\t): Promise<RunnerEmitResult<TEvent>> {\n\t\tif (!admitted && event.type !== \"session_shutdown\" && !extensionWorkOpen(this.runtime))\n\t\t\treturn undefined as RunnerEmitResult<TEvent>;\n\t\tconst observerFailures: Error[] = [];\n\t\tconst dispatch = () =>\n\t\t\trunGenericHandlers(\n\t\t\t\tthis.extensions,\n\t\t\t\tthis.createContext(),\n\t\t\t\tevent,\n\t\t\t\t(error) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.emitError(error);\n\t\t\t\t\t} catch (cause) {\n\t\t\t\t\t\tif (event.type !== \"session_shutdown\") throw cause;\n\t\t\t\t\t\tobserverFailures.push(\n\t\t\t\t\t\t\tnew Error(`${error.extensionPath}: ${error.error}`),\n\t\t\t\t\t\t\tnew Error(\"Shutdown observer failed\", { cause }),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tisCurrent,\n\t\t\t);\n\t\tconst result = await runResourceRegistrationBatch(\n\t\t\tthis.runtime,\n\t\t\t() => (event.type === \"session_shutdown\" ? runExtensionCleanup(this.runtime, dispatch) : dispatch()),\n\t\t\tadmitted || event.type === \"session_shutdown\",\n\t\t);\n\t\tif (observerFailures.length)\n\t\t\tthrow Object.assign(new AggregateError(observerFailures, \"Shutdown observers failed\"), {\n\t\t\t\tcode: \"ShutdownFailed\",\n\t\t\t});\n\t\treturn result;\n\t}\n\n\tasync emitMessageEnd(event: MessageEndEvent, admitted = false): Promise<AgentMessage | undefined> {\n\t\treturn runResourceRegistrationBatch(\n\t\t\tthis.runtime,\n\t\t\t() => runMessageEndHandlers(this.extensions, this.createContext(), event, (error) => this.emitError(error)),\n\t\t\tadmitted,\n\t\t);\n\t}\n\n\tasync emitToolResult(event: ToolResultEvent, admitted = false): Promise<ToolResultEventResult | undefined> {\n\t\treturn runResourceRegistrationBatch(\n\t\t\tthis.runtime,\n\t\t\t() => runToolResultHandlers(this.extensions, this.createContext(), event, (error) => this.emitError(error)),\n\t\t\tadmitted,\n\t\t);\n\t}\n\n\tasync emitToolCall(event: ToolCallEvent): Promise<ToolCallEventResult | undefined> {\n\t\treturn runResourceRegistrationBatch(this.runtime, () =>\n\t\t\trunToolCallHandlers(this.extensions, this.createContext(), event),\n\t\t);\n\t}\n\n\tasync emitUserBash(event: UserBashEvent): Promise<UserBashEventResult | undefined> {\n\t\treturn runResourceRegistrationBatch(this.runtime, () =>\n\t\t\trunUserBashHandlers(this.extensions, this.createContext(), event, (error) => this.emitError(error)),\n\t\t);\n\t}\n\n\tasync emitBoundary(\n\t\tbaseEvent: BoundaryBaseEvent,\n\t\tbuildContext: (entries: SessionBoundaryDraft[]) => BoundaryContextPreview | Promise<BoundaryContextPreview>,\n\t): Promise<BoundaryDispatchResult> {\n\t\treturn runResourceRegistrationBatch(\n\t\t\tthis.runtime,\n\t\t\t() =>\n\t\t\t\trunBoundaryHandlers(this.extensions, this.createContext(), baseEvent, buildContext, (error) =>\n\t\t\t\t\tthis.emitError(error),\n\t\t\t\t),\n\t\t\ttrue,\n\t\t);\n\t}\n\n\tasync emitContext(messages: AgentMessage[]): Promise<AgentMessage[]> {\n\t\treturn runResourceRegistrationBatch(this.runtime, () =>\n\t\t\trunContextHandlers(this.extensions, this.createContext(), messages, (error) => this.emitError(error)),\n\t\t);\n\t}\n\n\temitBeforeProviderRequest(payload: unknown): Promise<unknown> {\n\t\treturn runResourceRegistrationBatch(this.runtime, () =>\n\t\t\trunBeforeProviderRequestHandlers(this.extensions, this.createContext(), payload, (error) =>\n\t\t\t\tthis.emitError(error),\n\t\t\t),\n\t\t);\n\t}\n\n\tasync emitCacheWarmingDecision(event: CacheWarmingDecisionEvent): Promise<CacheWarmingAction> {\n\t\tlet action = event.action;\n\t\tconst ctx = this.createContext();\n\t\tfor (const { ext, handlers } of snapshotEventHandlers(this.extensions, event.type)) {\n\t\t\tfor (const handler of handlers) {\n\t\t\t\ttry {\n\t\t\t\t\tconst result = (await handler({ ...event, action }, ctx)) as CacheWarmingDecisionEventResult | undefined;\n\t\t\t\t\tif (result?.action === \"warm\" || result?.action === \"stop\") action = result.action;\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthis.emitError({\n\t\t\t\t\t\textensionPath: ext.path,\n\t\t\t\t\t\tevent: event.type,\n\t\t\t\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn action;\n\t}\n\n\tasync emitBeforeProviderHeaders(headers: ProviderHeaders): Promise<ProviderHeaders> {\n\t\treturn runResourceRegistrationBatch(this.runtime, async () => {\n\t\t\tfor (const { ext: extension, handlers } of snapshotEventHandlers(this.extensions, \"before_provider_headers\")) {\n\t\t\t\tfor (const handler of handlers) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait handler({ type: \"before_provider_headers\", headers }, this.createContext());\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tthis.emitError({\n\t\t\t\t\t\t\textensionPath: extension.path,\n\t\t\t\t\t\t\tevent: \"before_provider_headers\",\n\t\t\t\t\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\t\t\t\t\tstack: error instanceof Error ? error.stack : undefined,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn headers;\n\t\t});\n\t}\n\n\temitBeforeAgentStart(\n\t\tprompt: string,\n\t\timages: ImageContent[] | undefined,\n\t\tsystemPromptOptions: BuildSystemPromptOptions,\n\t): Promise<BeforeAgentStartCombinedResult> {\n\t\treturn runResourceRegistrationBatch(this.runtime, () =>\n\t\t\trunBeforeAgentStartHandlers(\n\t\t\t\tthis.extensions,\n\t\t\t\tthis.createContext(),\n\t\t\t\t() => this.assertActive(),\n\t\t\t\tprompt,\n\t\t\t\timages,\n\t\t\t\tsystemPromptOptions,\n\t\t\t\t(error) => this.emitError(error),\n\t\t\t),\n\t\t);\n\t}\n\n\temitResourcesDiscover(\n\t\tcwd: string,\n\t\treason: ResourcesDiscoverEvent[\"reason\"],\n\t): Promise<ResourcesDiscoverCombinedResult> {\n\t\treturn runResourceRegistrationBatch(this.runtime, () =>\n\t\t\trunResourcesDiscoverHandlers(this.extensions, this.createContext(), cwd, reason, (error) =>\n\t\t\t\tthis.emitError(error),\n\t\t\t),\n\t\t);\n\t}\n\n\t/** Emit input event. Transforms chain, \"handled\" short-circuits. */\n\temitInput(\n\t\ttext: string,\n\t\timages: ImageContent[] | undefined,\n\t\tsource: InputSource,\n\t\tstreamingBehavior?: \"steer\" | \"followUp\",\n\t): Promise<InputEventResult> {\n\t\treturn runResourceRegistrationBatch(this.runtime, () =>\n\t\t\trunInputHandlers(this.extensions, this.createContext(), text, images, source, streamingBehavior, (error) =>\n\t\t\t\tthis.emitError(error),\n\t\t\t),\n\t\t);\n\t}\n}\n"]}
|
|
@@ -17,6 +17,7 @@ import type { EntryRenderer, MarkdownTransformer, MessageRenderer, SendMessageOp
|
|
|
17
17
|
import type { ProviderConfig } from "./provider-types.ts";
|
|
18
18
|
import type { ToolDefinition, ToolInfo } from "./tool-types.ts";
|
|
19
19
|
import type { WorkflowActivityHub } from "./workflow-activity-hub.js";
|
|
20
|
+
import type { WorkflowRunControlHub } from "./workflow-run-control-hub.js";
|
|
20
21
|
export interface RegisteredTool {
|
|
21
22
|
definition: ToolDefinition;
|
|
22
23
|
sourceInfo: SourceInfo;
|
|
@@ -66,6 +67,8 @@ export interface ExtensionRuntimeState {
|
|
|
66
67
|
getChildSessionOptions?: import("../child-session-options.ts").ChildSessionOptionsResolver;
|
|
67
68
|
/** Shared by extension loading and its runner generation. */
|
|
68
69
|
workflowActivityHub: WorkflowActivityHub;
|
|
70
|
+
/** Holds the session-scoped run-control implementation registered by the workflows extension. */
|
|
71
|
+
workflowRunControlHub: WorkflowRunControlHub;
|
|
69
72
|
/** Package-manifest and `registerMcpServer()` MCP servers visible to every extension of this generation. */
|
|
70
73
|
mcpServerRegistry: McpServerRegistry;
|
|
71
74
|
flagValues: Map<string, boolean | string>;
|