@bastani/atomic 0.9.23 → 0.9.24
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 +42 -0
- package/dist/builtin/intercom/package.json +1 -1
- package/dist/builtin/mcp/CHANGELOG.md +12 -0
- package/dist/builtin/mcp/README.md +1 -0
- package/dist/builtin/mcp/index.bundle.mjs +244 -58
- package/dist/builtin/mcp/package.json +1 -1
- package/dist/builtin/subagents/package.json +1 -1
- package/dist/builtin/web-access/package.json +1 -1
- package/dist/builtin/workflows/CHANGELOG.md +22 -0
- package/dist/builtin/workflows/builtin/{chunk-d3xhj946.js → chunk-cpw5gtzg.js} +1 -1
- package/dist/builtin/workflows/builtin/{chunk-kgn5wz1c.js → chunk-e1254zvd.js} +139 -15
- package/dist/builtin/workflows/builtin/{chunk-hj8mh07f.js → chunk-qy6g0baf.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 +1 -1
- package/dist/builtin/workflows/skills/prompt-engineer/SKILL.md +1 -0
- package/dist/builtin/workflows/skills/prompt-engineer/references/claude_sonnet_5_5.md +131 -0
- package/dist/builtin/workflows/src/extension/index.bundle.mjs +187 -25
- package/dist/builtin/workflows/src/index.js +147 -17
- package/dist/core/agent-session-events.js +1 -1
- package/dist/core/agent-session-events.js.map +1 -1
- package/dist/core/agent-session-state.js +5 -2
- package/dist/core/agent-session-state.js.map +1 -1
- package/dist/core/extensions/api-types.d.ts +12 -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/loader-api.d.ts.map +1 -1
- package/dist/core/extensions/loader-api.js +42 -0
- package/dist/core/extensions/loader-api.js.map +1 -1
- package/dist/core/extensions/loader-bindings.d.ts.map +1 -1
- package/dist/core/extensions/loader-bindings.js +13 -7
- package/dist/core/extensions/loader-bindings.js.map +1 -1
- package/dist/core/extensions/loader-resources.d.ts +3 -0
- package/dist/core/extensions/loader-resources.d.ts.map +1 -1
- package/dist/core/extensions/loader-resources.js.map +1 -1
- package/dist/core/extensions/loader-runtime.d.ts.map +1 -1
- package/dist/core/extensions/loader-runtime.js +2 -0
- package/dist/core/extensions/loader-runtime.js.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.js +2 -0
- package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
- package/dist/core/extensions/mcp-server-registry.d.ts +22 -0
- package/dist/core/extensions/mcp-server-registry.d.ts.map +1 -0
- package/dist/core/extensions/mcp-server-registry.js +51 -0
- package/dist/core/extensions/mcp-server-registry.js.map +1 -0
- 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/keybindings.d.ts +1 -1
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +1 -1
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/mcp-servers.d.ts +39 -0
- package/dist/core/mcp-servers.d.ts.map +1 -0
- package/dist/core/mcp-servers.js +2 -0
- package/dist/core/mcp-servers.js.map +1 -0
- package/dist/core/model-resolver-defaults.js +2 -2
- package/dist/core/model-resolver-defaults.js.map +1 -1
- package/dist/core/package-manager-manifest.d.ts +3 -0
- package/dist/core/package-manager-manifest.d.ts.map +1 -1
- package/dist/core/package-manager-manifest.js +14 -0
- package/dist/core/package-manager-manifest.js.map +1 -1
- package/dist/core/package-manager-mcp-servers.d.ts +4 -0
- package/dist/core/package-manager-mcp-servers.d.ts.map +1 -0
- package/dist/core/package-manager-mcp-servers.js +53 -0
- package/dist/core/package-manager-mcp-servers.js.map +1 -0
- package/dist/core/package-manager-resource-accumulator.d.ts.map +1 -1
- package/dist/core/package-manager-resource-accumulator.js +2 -0
- package/dist/core/package-manager-resource-accumulator.js.map +1 -1
- package/dist/core/package-manager-resource-collector.d.ts.map +1 -1
- package/dist/core/package-manager-resource-collector.js +2 -0
- package/dist/core/package-manager-resource-collector.js.map +1 -1
- package/dist/core/package-manager-resource-patterns.d.ts +4 -0
- package/dist/core/package-manager-resource-patterns.d.ts.map +1 -1
- package/dist/core/package-manager-resource-patterns.js +36 -12
- package/dist/core/package-manager-resource-patterns.js.map +1 -1
- package/dist/core/package-manager-types.d.ts +14 -0
- package/dist/core/package-manager-types.d.ts.map +1 -1
- package/dist/core/package-manager-types.js.map +1 -1
- package/dist/core/package-manager.d.ts +1 -1
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/resource-loader-core.d.ts +4 -0
- package/dist/core/resource-loader-core.d.ts.map +1 -1
- package/dist/core/resource-loader-core.js +7 -0
- package/dist/core/resource-loader-core.js.map +1 -1
- package/dist/core/resource-loader-helpers.d.ts.map +1 -1
- package/dist/core/resource-loader-helpers.js +1 -0
- package/dist/core/resource-loader-helpers.js.map +1 -1
- package/dist/core/resource-loader-internals.d.ts +2 -0
- package/dist/core/resource-loader-internals.d.ts.map +1 -1
- package/dist/core/resource-loader-internals.js.map +1 -1
- package/dist/core/resource-loader-package-resources.d.ts +3 -0
- package/dist/core/resource-loader-package-resources.d.ts.map +1 -1
- package/dist/core/resource-loader-package-resources.js +25 -2
- package/dist/core/resource-loader-package-resources.js.map +1 -1
- package/dist/core/resource-loader-reload.d.ts.map +1 -1
- package/dist/core/resource-loader-reload.js +4 -1
- package/dist/core/resource-loader-reload.js.map +1 -1
- package/dist/core/session-manager-core.d.ts +2 -0
- package/dist/core/session-manager-core.d.ts.map +1 -1
- package/dist/core/session-manager-core.js +6 -1
- package/dist/core/session-manager-core.js.map +1 -1
- package/dist/core/settings-types.d.ts +1 -0
- package/dist/core/settings-types.d.ts.map +1 -1
- package/dist/core/settings-types.js.map +1 -1
- package/dist/extensions/llama/provider.d.ts +1 -1
- package/dist/extensions/llama/provider.d.ts.map +1 -1
- package/dist/extensions/llama/provider.js +37 -10
- package/dist/extensions/llama/provider.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/modes/interactive/chat-input-actions.d.ts +12 -0
- package/dist/modes/interactive/chat-input-actions.d.ts.map +1 -1
- package/dist/modes/interactive/chat-input-actions.js +44 -18
- package/dist/modes/interactive/chat-input-actions.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-editor.d.ts +11 -0
- package/dist/modes/interactive/components/chat-session-host-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-editor.js +7 -1
- package/dist/modes/interactive/components/chat-session-host-editor.js.map +1 -1
- package/dist/modes/interactive/interactive-hotkeys-debug.js +1 -1
- package/dist/modes/interactive/interactive-hotkeys-debug.js.map +1 -1
- package/dist/modes/interactive/interactive-input-handling.js +3 -1
- package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-helpers.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-helpers.js +1 -6
- package/dist/modes/interactive/interactive-mode-helpers.js.map +1 -1
- package/dist/utils/clipboard-native.d.ts +2 -0
- package/dist/utils/clipboard-native.d.ts.map +1 -1
- package/dist/utils/clipboard-native.js.map +1 -1
- package/dist/utils/clipboard.d.ts +7 -0
- package/dist/utils/clipboard.d.ts.map +1 -1
- package/dist/utils/clipboard.js +37 -1
- package/dist/utils/clipboard.js.map +1 -1
- package/docs/extensions/api-reference.md +19 -0
- package/docs/extensions.md +4 -0
- package/docs/keybindings.md +2 -2
- package/docs/llama-cpp.md +13 -0
- package/docs/mcp-servers.md +18 -0
- package/docs/models/evals.md +16 -4
- package/docs/packages/authoring.md +27 -0
- package/docs/packages/reference.md +3 -2
- package/docs/packages.md +3 -2
- package/docs/skills.md +3 -1
- package/examples/extensions/gondolin/package-lock.json +3 -3
- package/npm-shrinkwrap.json +46 -46
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session-state.js","sourceRoot":"","sources":["../../src/core/agent-session-state.ts"],"names":[],"mappings":"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","sourcesContent":["import { getCurrentSystemMessage, type SystemMessage } from \"@bastani/pi-ai\";\nimport type { Api, Model } from \"@bastani/pi-ai/compat\";\nimport type { AgentMessage, AgentTool, ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { AgentSessionInternalSurface as AgentSession } from \"./agent-session-methods.ts\";\nimport type { ToolDefinition, ToolInfo } from \"./extensions/index.js\";\nimport { getSkillCatalog } from \"./skill-catalog.ts\";\nimport {\n\tbuildSystemPrompt,\n\tbuildSystemPromptSections,\n\tdiffSystemPromptSections,\n\ttype NormalizedBuildSystemPromptOptions,\n\tnormalizeBuildSystemPromptOptions,\n} from \"./system-prompt.ts\";\n\nexport function getActiveToolNames(this: AgentSession): string[] {\n\treturn this.agent.state.tools.map((t) => t.name);\n}\n\n/**\n * Get all configured tools with name, description, parameter schema, and source metadata.\n */\n\nexport function getAllTools(this: AgentSession): ToolInfo[] {\n\treturn Array.from(this._toolDefinitions.values()).map(({ definition, sourceInfo }) => ({\n\t\tname: definition.name,\n\t\tdescription: definition.description,\n\t\tparameters: definition.parameters,\n\t\t...(Object.hasOwn(definition, \"constrainedSampling\")\n\t\t\t? { constrainedSampling: definition.constrainedSampling }\n\t\t\t: {}),\n\t\tpromptGuidelines: definition.promptGuidelines,\n\t\tsourceInfo,\n\t}));\n}\n\nexport function getToolDefinition(this: AgentSession, name: string): ToolDefinition | undefined {\n\treturn this._toolDefinitions.get(name)?.definition;\n}\n\n/**\n * Set active tools by name.\n * Only tools in the registry can be enabled. Unknown tool names are ignored.\n * Also rebuilds the system prompt to reflect the new tool set.\n * Changes take effect on the next agent turn.\n */\n\nexport function setActiveToolsByName(this: AgentSession, toolNames: string[]): void {\n\tconst tools: AgentTool[] = [];\n\tfor (const name of toolNames) {\n\t\tconst tool = this._toolRegistry.get(name);\n\t\tif (tool) tools.push(tool);\n\t}\n\tconst validToolNames = tools.map((tool) => tool.name);\n\tthis.agent.state.tools = tools;\n\n\tthis._rebuildSystemPrompt(validToolNames);\n}\n\n/** Whether compaction or branch summarization is currently running */\n\nexport function setScopedModels(\n\tthis: AgentSession,\n\tscopedModels: Array<{ model: Model<Api>; thinkingLevel?: ThinkingLevel }>,\n): void {\n\tthis._scopedModels = scopedModels;\n}\n\n/** File-based prompt templates */\n\nexport function _normalizePromptSnippet(this: AgentSession, text: string | undefined): string | undefined {\n\tif (!text) return undefined;\n\tconst oneLine = text\n\t\t.replace(/[\\r\\n]+/g, \" \")\n\t\t.replace(/\\s+/g, \" \")\n\t\t.trim();\n\treturn oneLine.length > 0 ? oneLine : undefined;\n}\n\nexport function _normalizePromptGuidelines(this: AgentSession, guidelines: string[] | undefined): string[] {\n\tif (!guidelines || guidelines.length === 0) {\n\t\treturn [];\n\t}\n\n\tconst unique = new Set<string>();\n\tfor (const guideline of guidelines) {\n\t\tconst normalized = guideline.trim();\n\t\tif (normalized.length > 0) {\n\t\t\tunique.add(normalized);\n\t\t}\n\t}\n\treturn Array.from(unique);\n}\n\nexport function _rebuildSystemPrompt(this: AgentSession, toolNames: string[]): void {\n\tconst validToolNames = toolNames.filter((name) => this._toolRegistry.has(name));\n\tconst toolSnippets: Record<string, string> = {};\n\tfor (const name of this._toolRegistry.keys()) {\n\t\tconst snippet = this._toolPromptSnippets.get(name);\n\t\tif (snippet) {\n\t\t\ttoolSnippets[name] = snippet;\n\t\t}\n\t}\n\n\tconst loaderSystemPrompt = this._resourceLoader.getSystemPrompt();\n\tconst loaderAppendSystemPrompt = this._resourceLoader.getAppendSystemPrompt();\n\tconst appendSystemPrompt = loaderAppendSystemPrompt.length > 0 ? loaderAppendSystemPrompt.join(\"\\n\\n\") : undefined;\n\tconst loadedSkills = getSkillCatalog(this._resourceLoader).modelSkills();\n\tconst loadedContextFiles = this._resourceLoader.getAgentsFiles().agentsFiles;\n\n\tthis._baseSystemPromptOptions = normalizeBuildSystemPromptOptions({\n\t\tcwd: this._cwd,\n\t\tselectedModel: this.model,\n\t\tselectedThinkingLevel: this.thinkingLevel,\n\t\tskills: loadedSkills,\n\t\tcontextFiles: loadedContextFiles,\n\t\tcustomPrompt: loaderSystemPrompt,\n\t\tappendSystemPrompt,\n\t\tselectedTools: validToolNames,\n\t\texcludedTools: this._excludedToolNames ? Array.from(this._excludedToolNames) : undefined,\n\t\ttoolSnippets,\n\t\ttoolGuidelines: Object.fromEntries(this._toolPromptGuidelines),\n\t});\n\tif (this._systemPromptTransform) {\n\t\tthis._baseSystemPromptOptions.forceSystemPrompt = this._systemPromptTransform(\n\t\t\tbuildSystemPrompt(this._baseSystemPromptOptions),\n\t\t);\n\t}\n}\n\nexport function _refreshBaseSystemPromptFromActiveTools(this: AgentSession): void {\n\tthis._rebuildSystemPrompt(this.getActiveToolNames());\n}\n\n/** Diff structured prompt state; executable tool changes are declared by the agent loop. */\nexport function _preparePromptAndToolLoadout(\n\tthis: AgentSession,\n\toptions: NormalizedBuildSystemPromptOptions,\n\tmessages: AgentMessage[] = this.agent.state.messages,\n): SystemMessage | undefined {\n\toptions.selectedTools = [...new Set(options.selectedTools)].filter((name) => this._toolRegistry.has(name));\n\tthis.agent.state.tools = options.selectedTools.flatMap((name) => {\n\t\tconst tool = this._toolRegistry.get(name);\n\t\treturn tool ? [tool] : [];\n\t});\n\tconst sections = diffSystemPromptSections(\n\t\tgetCurrentSystemMessage(messages)?.sections ?? {},\n\t\tbuildSystemPromptSections(options),\n\t);\n\treturn sections ? { role: \"system\", content: \"\", sections, timestamp: Date.now() } : undefined;\n}\n\n/** Restore registered tools from the selected transcript, not another branch's live state. */\nexport function _restoreToolsFromTranscript(this: AgentSession): void {\n\tconst current = getCurrentSystemMessage(this.sessionManager.buildSessionContext().messages);\n\tif (!current) return;\n\tconst names = (current.toolsAdded ?? []).map((tool) => tool.name).filter((name) => this._toolRegistry.has(name));\n\tthis.setActiveToolsByName(names);\n}\n\n// =========================================================================\n// Prompting\n// =========================================================================\n\n/**\n * Send a prompt to the agent.\n * - Handles extension commands (registered via pi.registerCommand) immediately, even during streaming\n * - Expands file-based prompt templates by default\n * - During streaming, queues via steer() or followUp() based on streamingBehavior option\n * - Validates model and API key before sending (when not streaming)\n * @throws Error if streaming and no streamingBehavior specified\n * @throws Error if no model selected or no API key available (when not streaming)\n */\n\nexport const agentSessionStateMethods = {\n\tgetActiveToolNames,\n\tgetAllTools,\n\tgetToolDefinition,\n\tsetActiveToolsByName,\n\tsetScopedModels,\n\t_normalizePromptSnippet,\n\t_normalizePromptGuidelines,\n\t_rebuildSystemPrompt,\n\t_preparePromptAndToolLoadout,\n\t_restoreToolsFromTranscript,\n\t_refreshBaseSystemPromptFromActiveTools,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"agent-session-state.js","sourceRoot":"","sources":["../../src/core/agent-session-state.ts"],"names":[],"mappings":"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","sourcesContent":["import { getCurrentSystemMessage, type SystemMessage } from \"@bastani/pi-ai\";\nimport type { Api, Model } from \"@bastani/pi-ai/compat\";\nimport type { AgentMessage, AgentTool, ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { AgentSessionInternalSurface as AgentSession } from \"./agent-session-methods.ts\";\nimport type { ToolDefinition, ToolInfo } from \"./extensions/index.js\";\nimport { getSkillCatalog } from \"./skill-catalog.ts\";\nimport {\n\tbuildSystemPrompt,\n\tbuildSystemPromptSections,\n\tdiffSystemPromptSections,\n\ttype NormalizedBuildSystemPromptOptions,\n\tnormalizeBuildSystemPromptOptions,\n} from \"./system-prompt.ts\";\n\nexport function getActiveToolNames(this: AgentSession): string[] {\n\treturn this.agent.state.tools.map((t) => t.name);\n}\n\n/**\n * Get all configured tools with name, description, parameter schema, and source metadata.\n */\n\nexport function getAllTools(this: AgentSession): ToolInfo[] {\n\treturn Array.from(this._toolDefinitions.values()).map(({ definition, sourceInfo }) => ({\n\t\tname: definition.name,\n\t\tdescription: definition.description,\n\t\tparameters: definition.parameters,\n\t\t...(Object.hasOwn(definition, \"constrainedSampling\")\n\t\t\t? { constrainedSampling: definition.constrainedSampling }\n\t\t\t: {}),\n\t\tpromptGuidelines: definition.promptGuidelines,\n\t\tsourceInfo,\n\t}));\n}\n\nexport function getToolDefinition(this: AgentSession, name: string): ToolDefinition | undefined {\n\treturn this._toolDefinitions.get(name)?.definition;\n}\n\n/**\n * Set active tools by name.\n * Only tools in the registry can be enabled. Unknown tool names are ignored.\n * Also rebuilds the system prompt to reflect the new tool set.\n * Changes take effect on the next agent turn.\n */\n\nexport function setActiveToolsByName(this: AgentSession, toolNames: string[]): void {\n\tconst tools: AgentTool[] = [];\n\tfor (const name of toolNames) {\n\t\tconst tool = this._toolRegistry.get(name);\n\t\tif (tool) tools.push(tool);\n\t}\n\tconst validToolNames = tools.map((tool) => tool.name);\n\tthis.agent.state.tools = tools;\n\n\tthis._rebuildSystemPrompt(validToolNames);\n}\n\n/** Whether compaction or branch summarization is currently running */\n\nexport function setScopedModels(\n\tthis: AgentSession,\n\tscopedModels: Array<{ model: Model<Api>; thinkingLevel?: ThinkingLevel }>,\n): void {\n\tthis._scopedModels = scopedModels;\n}\n\n/** File-based prompt templates */\n\nexport function _normalizePromptSnippet(this: AgentSession, text: string | undefined): string | undefined {\n\tif (!text) return undefined;\n\tconst oneLine = text\n\t\t.replace(/[\\r\\n]+/g, \" \")\n\t\t.replace(/\\s+/g, \" \")\n\t\t.trim();\n\treturn oneLine.length > 0 ? oneLine : undefined;\n}\n\nexport function _normalizePromptGuidelines(this: AgentSession, guidelines: string[] | undefined): string[] {\n\tif (!guidelines || guidelines.length === 0) {\n\t\treturn [];\n\t}\n\n\tconst unique = new Set<string>();\n\tfor (const guideline of guidelines) {\n\t\tconst normalized = guideline.trim();\n\t\tif (normalized.length > 0) {\n\t\t\tunique.add(normalized);\n\t\t}\n\t}\n\treturn Array.from(unique);\n}\n\nexport function _rebuildSystemPrompt(this: AgentSession, toolNames: string[]): void {\n\tconst validToolNames = toolNames.filter((name) => this._toolRegistry.has(name));\n\tconst toolSnippets: Record<string, string> = {};\n\tfor (const name of this._toolRegistry.keys()) {\n\t\tconst snippet = this._toolPromptSnippets.get(name);\n\t\tif (snippet) {\n\t\t\ttoolSnippets[name] = snippet;\n\t\t}\n\t}\n\n\tconst loaderSystemPrompt = this._resourceLoader.getSystemPrompt();\n\tconst loaderAppendSystemPrompt = this._resourceLoader.getAppendSystemPrompt();\n\tconst appendSystemPrompt = loaderAppendSystemPrompt.length > 0 ? loaderAppendSystemPrompt.join(\"\\n\\n\") : undefined;\n\tconst loadedSkills = getSkillCatalog(this._resourceLoader).modelSkills();\n\tconst loadedContextFiles = this._resourceLoader.getAgentsFiles().agentsFiles;\n\n\tthis._baseSystemPromptOptions = normalizeBuildSystemPromptOptions({\n\t\tcwd: this._cwd,\n\t\tselectedModel: this.model,\n\t\tselectedThinkingLevel: this.thinkingLevel,\n\t\tskills: loadedSkills,\n\t\tcontextFiles: loadedContextFiles,\n\t\tcustomPrompt: loaderSystemPrompt,\n\t\tappendSystemPrompt,\n\t\tselectedTools: validToolNames,\n\t\texcludedTools: this._excludedToolNames ? Array.from(this._excludedToolNames) : undefined,\n\t\ttoolSnippets,\n\t\ttoolGuidelines: Object.fromEntries(this._toolPromptGuidelines),\n\t});\n\tif (this._systemPromptTransform) {\n\t\tthis._baseSystemPromptOptions.forceSystemPrompt = this._systemPromptTransform(\n\t\t\tbuildSystemPrompt(this._baseSystemPromptOptions),\n\t\t);\n\t}\n}\n\nexport function _refreshBaseSystemPromptFromActiveTools(this: AgentSession): void {\n\tthis._rebuildSystemPrompt(this.getActiveToolNames());\n}\n\n/** Diff structured prompt state; executable tool changes are declared by the agent loop. */\nexport function _preparePromptAndToolLoadout(\n\tthis: AgentSession,\n\toptions: NormalizedBuildSystemPromptOptions,\n\tmessages: AgentMessage[] = this.agent.state.messages,\n): SystemMessage | undefined {\n\tconst current = getCurrentSystemMessage(messages);\n\tconst selected = [...new Set(options.selectedTools)].filter((name) => this._toolRegistry.has(name));\n\tconst recorded = (current?.toolsAdded ?? []).map((tool) => tool.name).filter((name) => selected.includes(name));\n\toptions.selectedTools = [...recorded, ...selected.filter((name) => !recorded.includes(name))];\n\tthis.agent.state.tools = options.selectedTools.flatMap((name) => {\n\t\tconst tool = this._toolRegistry.get(name);\n\t\treturn tool ? [tool] : [];\n\t});\n\tconst sections = diffSystemPromptSections(current?.sections ?? {}, buildSystemPromptSections(options));\n\treturn sections ? { role: \"system\", content: \"\", sections, timestamp: Date.now() } : undefined;\n}\n\n/** Restore registered tools from the selected transcript, not another branch's live state. */\nexport function _restoreToolsFromTranscript(this: AgentSession): void {\n\tconst current = getCurrentSystemMessage(this.sessionManager.buildSessionContext().messages);\n\tif (!current) return;\n\tconst names = (current.toolsAdded ?? []).map((tool) => tool.name).filter((name) => this._toolRegistry.has(name));\n\tthis.setActiveToolsByName(names);\n}\n\n// =========================================================================\n// Prompting\n// =========================================================================\n\n/**\n * Send a prompt to the agent.\n * - Handles extension commands (registered via pi.registerCommand) immediately, even during streaming\n * - Expands file-based prompt templates by default\n * - During streaming, queues via steer() or followUp() based on streamingBehavior option\n * - Validates model and API key before sending (when not streaming)\n * @throws Error if streaming and no streamingBehavior specified\n * @throws Error if no model selected or no API key available (when not streaming)\n */\n\nexport const agentSessionStateMethods = {\n\tgetActiveToolNames,\n\tgetAllTools,\n\tgetToolDefinition,\n\tsetActiveToolsByName,\n\tsetScopedModels,\n\t_normalizePromptSnippet,\n\t_normalizePromptGuidelines,\n\t_rebuildSystemPrompt,\n\t_preparePromptAndToolLoadout,\n\t_restoreToolsFromTranscript,\n\t_refreshBaseSystemPromptFromActiveTools,\n};\n"]}
|
|
@@ -6,6 +6,7 @@ import type { TSchema } from "typebox";
|
|
|
6
6
|
import type { CacheWarmingDecisionEvent, CacheWarmingDecisionEventResult } from "../cache-warmer.ts";
|
|
7
7
|
import type { EventBus } from "../event-bus.js";
|
|
8
8
|
import type { ExecOptions, ExecResult } from "../exec.ts";
|
|
9
|
+
import type { McpServerConfig, McpServerContribution } from "../mcp-servers.ts";
|
|
9
10
|
import type { CustomMessage } from "../messages.ts";
|
|
10
11
|
import type { ResolvedResource } from "../package-manager.ts";
|
|
11
12
|
import type { DefaultResourceLoaderInheritanceSnapshot } from "../resource-loader.ts";
|
|
@@ -103,6 +104,17 @@ export interface ExtensionAPI {
|
|
|
103
104
|
* Does not reload extensions, skills, prompts, themes, or context files.
|
|
104
105
|
*/
|
|
105
106
|
refreshWorkflowResources?: () => Promise<ResolvedResource[]>;
|
|
107
|
+
/**
|
|
108
|
+
* Contribute an MCP server to this session, using the same schema as an `mcpServers` entry in `mcp.json`.
|
|
109
|
+
* Call it from the factory or from `session_start`; registering a name again replaces the earlier entry.
|
|
110
|
+
* Contributed servers are the lowest-precedence MCP layer: a same-named server in a user or project MCP
|
|
111
|
+
* config replaces this one, and `{ "disabled": true }` there turns it off.
|
|
112
|
+
*/
|
|
113
|
+
registerMcpServer(name: string, config: McpServerConfig): void;
|
|
114
|
+
/** Package-manifest and registered MCP servers for this session, one entry per server name. */
|
|
115
|
+
getMcpServerContributions?: () => McpServerContribution[];
|
|
116
|
+
/** Subscribe to `registerMcpServer()` changes after startup; returns an unsubscribe function. */
|
|
117
|
+
onMcpServerContributionsChanged?: (listener: () => void) => () => void;
|
|
106
118
|
/**
|
|
107
119
|
* Return the resource-loader options that child Atomic sessions should inherit without sharing this loader instance.
|
|
108
120
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-types.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/api-types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"api-types.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/api-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-types.js","sourceRoot":"","sources":["../../../src/core/extensions/api-types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Provider } from \"@bastani/pi-ai\";\nimport type { Api, ImageContent, Model, TextContent } from \"@bastani/pi-ai/compat\";\nimport type { ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { KeyId } from \"@earendil-works/pi-tui\";\nimport type { TSchema } from \"typebox\";\nimport type { CacheWarmingDecisionEvent, CacheWarmingDecisionEventResult } from \"../cache-warmer.ts\";\nimport type { EventBus } from \"../event-bus.js\";\nimport type { ExecOptions, ExecResult } from \"../exec.ts\";\nimport type { CustomMessage } from \"../messages.ts\";\nimport type { ResolvedResource } from \"../package-manager.ts\";\nimport type { DefaultResourceLoaderInheritanceSnapshot } from \"../resource-loader.ts\";\nimport type { SlashCommandInfo } from \"../slash-commands.js\";\nimport type {\n\tAfterProviderResponseEvent,\n\tAgentBeforeSettleEvent,\n\tAgentEndEvent,\n\tAgentSettledEvent,\n\tAgentStartEvent,\n\tBeforeAgentStartEvent,\n\tBeforeProviderHeadersEvent,\n\tBeforeProviderRequestEvent,\n\tContextEvent,\n\tContextWithSystemEvent,\n\tInputEvent,\n\tInputEventResult,\n\tMessageEndEvent,\n\tMessageStartEvent,\n\tMessageUpdateEvent,\n\tModelSelectEvent,\n\tProjectTrustHandler,\n\tProviderStreamEvent,\n\tThinkingLevelSelectEvent,\n\tToolExecutionEndEvent,\n\tToolExecutionStartEvent,\n\tToolExecutionUpdateEvent,\n\tTurnEndEvent,\n\tTurnStartEvent,\n\tUIPromptEndEvent,\n\tUIPromptStartEvent,\n\tUserBashEvent,\n} from \"./agent-events.ts\";\nimport type { RegisteredCommand } from \"./command-types.ts\";\nimport type { ExtensionContext } from \"./context-types.ts\";\nimport type {\n\tAgentBeforeSettleEventResult,\n\tBeforeAgentStartEventResult,\n\tBeforeProviderRequestEventResult,\n\tContextEventResult,\n\tMessageEndEventResult,\n\tSessionBeforeCompactResult,\n\tSessionBeforeForkResult,\n\tSessionBeforeSwitchResult,\n\tSessionBeforeTreeResult,\n\tToolCallEventResult,\n\tToolResultEventResult,\n\tTurnEndEventResult,\n\tUserBashEventResult,\n} from \"./event-results.ts\";\nimport type {\n\tEntryRenderer,\n\tMarkdownTransformer,\n\tMessageRenderer,\n\tSendMessageOptions,\n\tSendMessagesOptions,\n} from \"./message-types.ts\";\nimport type { ProviderConfig } from \"./provider-types.ts\";\nimport type {\n\tResourcesDiscoverEvent,\n\tResourcesDiscoverResult,\n\tSessionBeforeCompactEvent,\n\tSessionBeforeForkEvent,\n\tSessionBeforeSwitchEvent,\n\tSessionBeforeTreeEvent,\n\tSessionCompactEvent,\n\tSessionCompactFailedEvent,\n\tSessionInfoChangedEvent,\n\tSessionShutdownEvent,\n\tSessionStartEvent,\n\tSessionTreeEvent,\n} from \"./session-events.ts\";\nimport type { ToolCallEvent, ToolResultEvent } from \"./tool-events.ts\";\nimport type { ToolDefinition, ToolInfo } from \"./tool-types.ts\";\nimport type {\n\tWorkflowActivityChangedEvent,\n\tWorkflowActivityPublisher,\n\tWorkflowHeartbeatEvent,\n\tWorkflowLifecycleEvent,\n\tWorkflowStageCompletedEvent,\n} from \"./workflow-events.js\";\n\n/** Handler function type for events */\n// biome-ignore lint/suspicious/noConfusingVoidType: void allows bare return statements\nexport type ExtensionHandler<E, R = undefined> = (event: E, ctx: ExtensionContext) => Promise<R | void> | R | void;\n\n/**\n * ExtensionAPI passed to extension factory functions.\n */\nexport interface ExtensionAPI {\n\t/** @internal Owning runtime identity, retained across generation replacement. */\n\tlifecycleScope?: object;\n\tregisterWorkflowActivityPublisher(): WorkflowActivityPublisher;\n\ton(\n\t\tevent: \"cache_warming_decision\",\n\t\thandler: ExtensionHandler<CacheWarmingDecisionEvent, CacheWarmingDecisionEventResult>,\n\t): () => void;\n\ton(event: \"workflow_lifecycle\", handler: ExtensionHandler<WorkflowLifecycleEvent>): () => void;\n\ton(event: \"workflow_activity_changed\", handler: ExtensionHandler<WorkflowActivityChangedEvent>): () => void;\n\ton(event: \"workflow_stage_completed\", handler: ExtensionHandler<WorkflowStageCompletedEvent>): () => void;\n\ton(event: \"workflow_heartbeat\", handler: ExtensionHandler<WorkflowHeartbeatEvent>): () => void;\n\t// =========================================================================\n\t// Event Subscription\n\t// =========================================================================\n\n\ton(\n\t\tevent: \"resources_discover\",\n\t\thandler: ExtensionHandler<ResourcesDiscoverEvent, ResourcesDiscoverResult>,\n\t): () => void;\n\ton(event: \"session_info_changed\", handler: ExtensionHandler<SessionInfoChangedEvent>): () => void;\n\ton(event: \"session_start\", handler: ExtensionHandler<SessionStartEvent>): () => void;\n\ton(\n\t\tevent: \"session_before_switch\",\n\t\thandler: ExtensionHandler<SessionBeforeSwitchEvent, SessionBeforeSwitchResult>,\n\t): () => void;\n\ton(\n\t\tevent: \"session_before_fork\",\n\t\thandler: ExtensionHandler<SessionBeforeForkEvent, SessionBeforeForkResult>,\n\t): () => void;\n\ton(\n\t\tevent: \"session_before_compact\",\n\t\thandler: ExtensionHandler<SessionBeforeCompactEvent, SessionBeforeCompactResult>,\n\t): () => void;\n\ton(event: \"session_compact\", handler: ExtensionHandler<SessionCompactEvent>): () => void;\n\ton(event: \"session_compact_failed\", handler: ExtensionHandler<SessionCompactFailedEvent>): () => void;\n\ton(event: \"session_shutdown\", handler: ExtensionHandler<SessionShutdownEvent>): () => void;\n\ton(\n\t\tevent: \"session_before_tree\",\n\t\thandler: ExtensionHandler<SessionBeforeTreeEvent, SessionBeforeTreeResult>,\n\t): () => void;\n\ton(event: \"session_tree\", handler: ExtensionHandler<SessionTreeEvent>): () => void;\n\ton(event: \"context\", handler: ExtensionHandler<ContextEvent, ContextEventResult>): () => void;\n\ton(event: \"context_with_system\", handler: ExtensionHandler<ContextWithSystemEvent, ContextEventResult>): () => void;\n\ton(\n\t\tevent: \"before_provider_request\",\n\t\thandler: ExtensionHandler<BeforeProviderRequestEvent, BeforeProviderRequestEventResult>,\n\t): () => void;\n\ton(event: \"before_provider_headers\", handler: ExtensionHandler<BeforeProviderHeadersEvent>): () => void;\n\ton(event: \"after_provider_response\", handler: ExtensionHandler<AfterProviderResponseEvent>): () => void;\n\ton(event: \"provider_stream_event\", handler: ExtensionHandler<ProviderStreamEvent>): () => void;\n\ton(\n\t\tevent: \"before_agent_start\",\n\t\thandler: ExtensionHandler<BeforeAgentStartEvent, BeforeAgentStartEventResult>,\n\t): () => void;\n\ton(event: \"agent_start\", handler: ExtensionHandler<AgentStartEvent>): () => void;\n\ton(event: \"agent_end\", handler: ExtensionHandler<AgentEndEvent>): () => void;\n\ton(\n\t\tevent: \"agent_before_settle\",\n\t\thandler: ExtensionHandler<AgentBeforeSettleEvent, AgentBeforeSettleEventResult>,\n\t): () => void;\n\ton(event: \"agent_settled\", handler: ExtensionHandler<AgentSettledEvent>): () => void;\n\ton(event: \"ui_prompt_start\", handler: ExtensionHandler<UIPromptStartEvent>): () => void;\n\ton(event: \"ui_prompt_end\", handler: ExtensionHandler<UIPromptEndEvent>): () => void;\n\ton(event: \"turn_start\", handler: ExtensionHandler<TurnStartEvent>): () => void;\n\ton(event: \"turn_end\", handler: ExtensionHandler<TurnEndEvent, TurnEndEventResult>): () => void;\n\ton(event: \"message_start\", handler: ExtensionHandler<MessageStartEvent>): () => void;\n\ton(event: \"message_update\", handler: ExtensionHandler<MessageUpdateEvent>): () => void;\n\ton(event: \"message_end\", handler: ExtensionHandler<MessageEndEvent, MessageEndEventResult>): () => void;\n\ton(event: \"tool_execution_start\", handler: ExtensionHandler<ToolExecutionStartEvent>): () => void;\n\ton(event: \"tool_execution_update\", handler: ExtensionHandler<ToolExecutionUpdateEvent>): () => void;\n\ton(event: \"tool_execution_end\", handler: ExtensionHandler<ToolExecutionEndEvent>): () => void;\n\ton(event: \"model_select\", handler: ExtensionHandler<ModelSelectEvent>): () => void;\n\ton(event: \"thinking_level_select\", handler: ExtensionHandler<ThinkingLevelSelectEvent>): () => void;\n\ton(event: \"tool_call\", handler: ExtensionHandler<ToolCallEvent, ToolCallEventResult>): () => void;\n\ton(event: \"tool_result\", handler: ExtensionHandler<ToolResultEvent, ToolResultEventResult>): () => void;\n\ton(event: \"user_bash\", handler: ExtensionHandler<UserBashEvent, UserBashEventResult>): () => void;\n\ton(event: \"project_trust\", handler: ProjectTrustHandler): () => void;\n\ton(event: \"input\", handler: ExtensionHandler<InputEvent, InputEventResult>): () => void;\n\n\t// =========================================================================\n\t// Tool Registration\n\t// =========================================================================\n\n\t/** Register a tool that the LLM can call. */\n\tregisterTool<TParams extends TSchema = TSchema, TDetails = unknown, TState = unknown>(\n\t\ttool: ToolDefinition<TParams, TDetails, TState>,\n\t): void;\n\n\t// =========================================================================\n\t// Command, Shortcut, Flag Registration\n\t// =========================================================================\n\n\t/** Register a custom command. */\n\tregisterCommand(name: string, options: Omit<RegisteredCommand, \"name\" | \"sourceInfo\">): void;\n\n\t/** Register a keyboard shortcut. */\n\tregisterShortcut(\n\t\tshortcut: KeyId,\n\t\toptions: {\n\t\t\tdescription?: string;\n\t\t\tkeybinding?: import(\"../keybindings.ts\").Keybinding;\n\t\t\tpreferEditor?: boolean;\n\t\t\thandler: (ctx: ExtensionContext) => Promise<void> | void;\n\t\t},\n\t): void;\n\n\t/** Register a CLI flag. */\n\tregisterFlag(\n\t\tname: string,\n\t\toptions:\n\t\t\t| { description?: string; type: \"boolean\"; default?: boolean }\n\t\t\t| { description?: string; type: \"string\"; default?: string },\n\t): void;\n\n\t/** Get the value of a registered CLI flag. */\n\tgetFlag(name: string): boolean | string | undefined;\n\n\t/** Return package-provided workflow files discovered for this session. */\n\tgetWorkflowResources(): ResolvedResource[];\n\n\t/**\n\t * Re-read package/settings workflow resources and return the updated snapshot when supported by the host.\n\t * Does not reload extensions, skills, prompts, themes, or context files.\n\t */\n\trefreshWorkflowResources?: () => Promise<ResolvedResource[]>;\n\n\t/**\n\t * Return the resource-loader options that child Atomic sessions should inherit without sharing this loader instance.\n\t */\n\tgetResourceLoaderInheritanceSnapshot?: () => DefaultResourceLoaderInheritanceSnapshot;\n\t/** Internal owner-bound defaults and capability ceiling for builtin child adapters. */\n\tgetChildSessionOptions?: import(\"../child-session-options.ts\").ChildSessionOptionsResolver;\n\n\t// =========================================================================\n\t// Message Rendering\n\t// =========================================================================\n\n\t/** Register a custom renderer for CustomMessageEntry. */\n\tregisterMessageRenderer<T = unknown>(customType: string, renderer: MessageRenderer<T>): void;\n\n\t/** Register a transformer for user and assistant Markdown before Atomic renders it in the interactive transcript. */\n\tregisterMarkdownTransformer(transformer: MarkdownTransformer): void;\n\t/** Register a custom renderer for a persistent CustomEntry. */\n\tregisterEntryRenderer<T = unknown>(customType: string, renderer: EntryRenderer<T>): void;\n\n\t// =========================================================================\n\t// Actions\n\t// =========================================================================\n\n\t/** Send a custom message to the session. */\n\tsendMessage<T = unknown>(\n\t\tmessage: Pick<CustomMessage<T>, \"customType\" | \"content\" | \"display\" | \"details\">,\n\t\toptions?: SendMessageOptions,\n\t): void | Promise<void>;\n\n\t/** Atomically admit custom messages in array order without waiting for the resulting turn. */\n\tsendMessages<T = unknown>(\n\t\tmessages: Array<Pick<CustomMessage<T>, \"customType\" | \"content\" | \"display\" | \"details\">>,\n\t\toptions?: SendMessagesOptions,\n\t): void | Promise<void>;\n\n\t/**\n\t * Send a user message to the agent. Always triggers a turn.\n\t * When the agent is streaming, use deliverAs to specify how to queue the message.\n\t *\n\t * By default the text is sent literally. Set expandPromptTemplates to true to\n\t * dispatch a registered extension or skill command (or expand a prompt\n\t * template) — with that option the message may DISPATCH a command rather\n\t * than being sent. Default: false.\n\t */\n\tsendUserMessage(\n\t\tcontent: string | (TextContent | ImageContent)[],\n\t\toptions?: { deliverAs?: \"steer\" | \"followUp\"; expandPromptTemplates?: boolean },\n\t): void;\n\n\t/** Append a custom entry to the session for state persistence (not sent to LLM). */\n\tappendEntry<T = unknown>(customType: string, data?: T): void;\n\n\t// =========================================================================\n\t// Session Metadata\n\t// =========================================================================\n\n\t/** Set the session display name (shown in session selector). */\n\tsetSessionName(name: string): void;\n\n\t/** Get the current session name, if set. */\n\tgetSessionName(): string | undefined;\n\n\t/** Set or clear a label on an entry. Labels are user-defined markers for bookmarking/navigation. */\n\tsetLabel(entryId: string, label: string | undefined): void;\n\n\t/** Execute a shell command. */\n\texec(command: string, args: string[], options?: ExecOptions): Promise<ExecResult>;\n\n\t/** Get the list of currently active tool names. */\n\tgetActiveTools(): string[];\n\n\t/** Get all configured tools with parameter schema and source metadata. */\n\tgetAllTools(): ToolInfo[];\n\n\t/** Set the active tools by name. */\n\tsetActiveTools(toolNames: string[]): void;\n\n\t/** Get available slash commands in the current session. */\n\tgetCommands(): SlashCommandInfo[];\n\n\t// =========================================================================\n\t// Model and Thinking Level\n\t// =========================================================================\n\n\t/**\n\t * Set the model for the current session without changing the configured default for new sessions.\n\t * Returns false if authentication is not configured for the model's provider.\n\t */\n\tsetModel(model: Model<Api>): Promise<boolean>;\n\n\t/** Get current thinking level. */\n\tgetThinkingLevel(): ThinkingLevel;\n\n\t/**\n\t * Set the thinking level (clamped to model capabilities) for the current session without changing the configured default\n\t * for new sessions.\n\t */\n\tsetThinkingLevel(level: ThinkingLevel): void;\n\n\t// =========================================================================\n\t// Provider Registration\n\t// =========================================================================\n\n\t/**\n\t * Register or override a model provider.\n\t *\n\t * If `models` is provided: replaces all existing models for this provider.\n\t * If only `baseUrl` is provided: overrides the URL for existing models.\n\t * If `oauth` is provided: registers OAuth provider for /login support.\n\t * If `streamSimple` is provided: registers a custom API stream handler.\n\t *\n\t * During initial extension load this call is queued and applied once the\n\t * runner has bound its context. After that it takes effect immediately, so\n\t * it is safe to call from command handlers or event callbacks without\n\t * requiring a `/reload`.\n\t *\n\t * @example\n\t * // Register a new provider with custom models\n\t * pi.registerProvider(\"my-proxy\", {\n\t * baseUrl: \"https://proxy.example.com\",\n\t * apiKey: \"$PROXY_API_KEY\",\n\t * api: \"anthropic-messages\",\n\t * models: [\n\t * {\n\t * id: \"claude-sonnet-4-20250514\",\n\t * name: \"Claude 4 Sonnet (proxy)\",\n\t * reasoning: false,\n\t * input: [\"text\", \"image\"],\n\t * cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },\n\t * contextWindow: 200000,\n\t * maxTokens: 16384\n\t * }\n\t * ]\n\t * });\n\t *\n\t * @example\n\t * // Override baseUrl for an existing provider\n\t * pi.registerProvider(\"anthropic\", {\n\t * baseUrl: \"https://proxy.example.com\"\n\t * });\n\t *\n\t * @example\n\t * // Register provider with OAuth support\n\t * pi.registerProvider(\"corporate-ai\", {\n\t * baseUrl: \"https://ai.corp.com\",\n\t * api: \"openai-responses\",\n\t * models: [...],\n\t * oauth: {\n\t * name: \"Corporate AI (SSO)\",\n\t * async login(callbacks, signal) { ... },\n\t * async refreshToken(credentials, signal) { ... },\n\t * getApiKey(credentials) { return credentials.access; }\n\t * }\n\t * });\n\t */\n\tregisterProvider(name: string, config: ProviderConfig): void;\n\tregisterProvider(provider: Provider): void;\n\n\t/**\n\t * Unregister a previously registered provider.\n\t *\n\t * Removes all models belonging to the named provider and restores any\n\t * built-in models that were overridden by it. Has no effect if the provider\n\t * is not currently registered.\n\t *\n\t * Like `registerProvider`, this takes effect immediately when called after\n\t * the initial load phase.\n\t *\n\t * @example\n\t * pi.unregisterProvider(\"my-proxy\");\n\t */\n\tunregisterProvider(name: string): void;\n\n\t/** Shared event bus for extension communication. */\n\tevents: EventBus;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"api-types.js","sourceRoot":"","sources":["../../../src/core/extensions/api-types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Provider } from \"@bastani/pi-ai\";\nimport type { Api, ImageContent, Model, TextContent } from \"@bastani/pi-ai/compat\";\nimport type { ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { KeyId } from \"@earendil-works/pi-tui\";\nimport type { TSchema } from \"typebox\";\nimport type { CacheWarmingDecisionEvent, CacheWarmingDecisionEventResult } from \"../cache-warmer.ts\";\nimport type { EventBus } from \"../event-bus.js\";\nimport type { ExecOptions, ExecResult } from \"../exec.ts\";\nimport type { McpServerConfig, McpServerContribution } from \"../mcp-servers.ts\";\nimport type { CustomMessage } from \"../messages.ts\";\nimport type { ResolvedResource } from \"../package-manager.ts\";\nimport type { DefaultResourceLoaderInheritanceSnapshot } from \"../resource-loader.ts\";\nimport type { SlashCommandInfo } from \"../slash-commands.js\";\nimport type {\n\tAfterProviderResponseEvent,\n\tAgentBeforeSettleEvent,\n\tAgentEndEvent,\n\tAgentSettledEvent,\n\tAgentStartEvent,\n\tBeforeAgentStartEvent,\n\tBeforeProviderHeadersEvent,\n\tBeforeProviderRequestEvent,\n\tContextEvent,\n\tContextWithSystemEvent,\n\tInputEvent,\n\tInputEventResult,\n\tMessageEndEvent,\n\tMessageStartEvent,\n\tMessageUpdateEvent,\n\tModelSelectEvent,\n\tProjectTrustHandler,\n\tProviderStreamEvent,\n\tThinkingLevelSelectEvent,\n\tToolExecutionEndEvent,\n\tToolExecutionStartEvent,\n\tToolExecutionUpdateEvent,\n\tTurnEndEvent,\n\tTurnStartEvent,\n\tUIPromptEndEvent,\n\tUIPromptStartEvent,\n\tUserBashEvent,\n} from \"./agent-events.ts\";\nimport type { RegisteredCommand } from \"./command-types.ts\";\nimport type { ExtensionContext } from \"./context-types.ts\";\nimport type {\n\tAgentBeforeSettleEventResult,\n\tBeforeAgentStartEventResult,\n\tBeforeProviderRequestEventResult,\n\tContextEventResult,\n\tMessageEndEventResult,\n\tSessionBeforeCompactResult,\n\tSessionBeforeForkResult,\n\tSessionBeforeSwitchResult,\n\tSessionBeforeTreeResult,\n\tToolCallEventResult,\n\tToolResultEventResult,\n\tTurnEndEventResult,\n\tUserBashEventResult,\n} from \"./event-results.ts\";\nimport type {\n\tEntryRenderer,\n\tMarkdownTransformer,\n\tMessageRenderer,\n\tSendMessageOptions,\n\tSendMessagesOptions,\n} from \"./message-types.ts\";\nimport type { ProviderConfig } from \"./provider-types.ts\";\nimport type {\n\tResourcesDiscoverEvent,\n\tResourcesDiscoverResult,\n\tSessionBeforeCompactEvent,\n\tSessionBeforeForkEvent,\n\tSessionBeforeSwitchEvent,\n\tSessionBeforeTreeEvent,\n\tSessionCompactEvent,\n\tSessionCompactFailedEvent,\n\tSessionInfoChangedEvent,\n\tSessionShutdownEvent,\n\tSessionStartEvent,\n\tSessionTreeEvent,\n} from \"./session-events.ts\";\nimport type { ToolCallEvent, ToolResultEvent } from \"./tool-events.ts\";\nimport type { ToolDefinition, ToolInfo } from \"./tool-types.ts\";\nimport type {\n\tWorkflowActivityChangedEvent,\n\tWorkflowActivityPublisher,\n\tWorkflowHeartbeatEvent,\n\tWorkflowLifecycleEvent,\n\tWorkflowStageCompletedEvent,\n} from \"./workflow-events.js\";\n\n/** Handler function type for events */\n// biome-ignore lint/suspicious/noConfusingVoidType: void allows bare return statements\nexport type ExtensionHandler<E, R = undefined> = (event: E, ctx: ExtensionContext) => Promise<R | void> | R | void;\n\n/**\n * ExtensionAPI passed to extension factory functions.\n */\nexport interface ExtensionAPI {\n\t/** @internal Owning runtime identity, retained across generation replacement. */\n\tlifecycleScope?: object;\n\tregisterWorkflowActivityPublisher(): WorkflowActivityPublisher;\n\ton(\n\t\tevent: \"cache_warming_decision\",\n\t\thandler: ExtensionHandler<CacheWarmingDecisionEvent, CacheWarmingDecisionEventResult>,\n\t): () => void;\n\ton(event: \"workflow_lifecycle\", handler: ExtensionHandler<WorkflowLifecycleEvent>): () => void;\n\ton(event: \"workflow_activity_changed\", handler: ExtensionHandler<WorkflowActivityChangedEvent>): () => void;\n\ton(event: \"workflow_stage_completed\", handler: ExtensionHandler<WorkflowStageCompletedEvent>): () => void;\n\ton(event: \"workflow_heartbeat\", handler: ExtensionHandler<WorkflowHeartbeatEvent>): () => void;\n\t// =========================================================================\n\t// Event Subscription\n\t// =========================================================================\n\n\ton(\n\t\tevent: \"resources_discover\",\n\t\thandler: ExtensionHandler<ResourcesDiscoverEvent, ResourcesDiscoverResult>,\n\t): () => void;\n\ton(event: \"session_info_changed\", handler: ExtensionHandler<SessionInfoChangedEvent>): () => void;\n\ton(event: \"session_start\", handler: ExtensionHandler<SessionStartEvent>): () => void;\n\ton(\n\t\tevent: \"session_before_switch\",\n\t\thandler: ExtensionHandler<SessionBeforeSwitchEvent, SessionBeforeSwitchResult>,\n\t): () => void;\n\ton(\n\t\tevent: \"session_before_fork\",\n\t\thandler: ExtensionHandler<SessionBeforeForkEvent, SessionBeforeForkResult>,\n\t): () => void;\n\ton(\n\t\tevent: \"session_before_compact\",\n\t\thandler: ExtensionHandler<SessionBeforeCompactEvent, SessionBeforeCompactResult>,\n\t): () => void;\n\ton(event: \"session_compact\", handler: ExtensionHandler<SessionCompactEvent>): () => void;\n\ton(event: \"session_compact_failed\", handler: ExtensionHandler<SessionCompactFailedEvent>): () => void;\n\ton(event: \"session_shutdown\", handler: ExtensionHandler<SessionShutdownEvent>): () => void;\n\ton(\n\t\tevent: \"session_before_tree\",\n\t\thandler: ExtensionHandler<SessionBeforeTreeEvent, SessionBeforeTreeResult>,\n\t): () => void;\n\ton(event: \"session_tree\", handler: ExtensionHandler<SessionTreeEvent>): () => void;\n\ton(event: \"context\", handler: ExtensionHandler<ContextEvent, ContextEventResult>): () => void;\n\ton(event: \"context_with_system\", handler: ExtensionHandler<ContextWithSystemEvent, ContextEventResult>): () => void;\n\ton(\n\t\tevent: \"before_provider_request\",\n\t\thandler: ExtensionHandler<BeforeProviderRequestEvent, BeforeProviderRequestEventResult>,\n\t): () => void;\n\ton(event: \"before_provider_headers\", handler: ExtensionHandler<BeforeProviderHeadersEvent>): () => void;\n\ton(event: \"after_provider_response\", handler: ExtensionHandler<AfterProviderResponseEvent>): () => void;\n\ton(event: \"provider_stream_event\", handler: ExtensionHandler<ProviderStreamEvent>): () => void;\n\ton(\n\t\tevent: \"before_agent_start\",\n\t\thandler: ExtensionHandler<BeforeAgentStartEvent, BeforeAgentStartEventResult>,\n\t): () => void;\n\ton(event: \"agent_start\", handler: ExtensionHandler<AgentStartEvent>): () => void;\n\ton(event: \"agent_end\", handler: ExtensionHandler<AgentEndEvent>): () => void;\n\ton(\n\t\tevent: \"agent_before_settle\",\n\t\thandler: ExtensionHandler<AgentBeforeSettleEvent, AgentBeforeSettleEventResult>,\n\t): () => void;\n\ton(event: \"agent_settled\", handler: ExtensionHandler<AgentSettledEvent>): () => void;\n\ton(event: \"ui_prompt_start\", handler: ExtensionHandler<UIPromptStartEvent>): () => void;\n\ton(event: \"ui_prompt_end\", handler: ExtensionHandler<UIPromptEndEvent>): () => void;\n\ton(event: \"turn_start\", handler: ExtensionHandler<TurnStartEvent>): () => void;\n\ton(event: \"turn_end\", handler: ExtensionHandler<TurnEndEvent, TurnEndEventResult>): () => void;\n\ton(event: \"message_start\", handler: ExtensionHandler<MessageStartEvent>): () => void;\n\ton(event: \"message_update\", handler: ExtensionHandler<MessageUpdateEvent>): () => void;\n\ton(event: \"message_end\", handler: ExtensionHandler<MessageEndEvent, MessageEndEventResult>): () => void;\n\ton(event: \"tool_execution_start\", handler: ExtensionHandler<ToolExecutionStartEvent>): () => void;\n\ton(event: \"tool_execution_update\", handler: ExtensionHandler<ToolExecutionUpdateEvent>): () => void;\n\ton(event: \"tool_execution_end\", handler: ExtensionHandler<ToolExecutionEndEvent>): () => void;\n\ton(event: \"model_select\", handler: ExtensionHandler<ModelSelectEvent>): () => void;\n\ton(event: \"thinking_level_select\", handler: ExtensionHandler<ThinkingLevelSelectEvent>): () => void;\n\ton(event: \"tool_call\", handler: ExtensionHandler<ToolCallEvent, ToolCallEventResult>): () => void;\n\ton(event: \"tool_result\", handler: ExtensionHandler<ToolResultEvent, ToolResultEventResult>): () => void;\n\ton(event: \"user_bash\", handler: ExtensionHandler<UserBashEvent, UserBashEventResult>): () => void;\n\ton(event: \"project_trust\", handler: ProjectTrustHandler): () => void;\n\ton(event: \"input\", handler: ExtensionHandler<InputEvent, InputEventResult>): () => void;\n\n\t// =========================================================================\n\t// Tool Registration\n\t// =========================================================================\n\n\t/** Register a tool that the LLM can call. */\n\tregisterTool<TParams extends TSchema = TSchema, TDetails = unknown, TState = unknown>(\n\t\ttool: ToolDefinition<TParams, TDetails, TState>,\n\t): void;\n\n\t// =========================================================================\n\t// Command, Shortcut, Flag Registration\n\t// =========================================================================\n\n\t/** Register a custom command. */\n\tregisterCommand(name: string, options: Omit<RegisteredCommand, \"name\" | \"sourceInfo\">): void;\n\n\t/** Register a keyboard shortcut. */\n\tregisterShortcut(\n\t\tshortcut: KeyId,\n\t\toptions: {\n\t\t\tdescription?: string;\n\t\t\tkeybinding?: import(\"../keybindings.ts\").Keybinding;\n\t\t\tpreferEditor?: boolean;\n\t\t\thandler: (ctx: ExtensionContext) => Promise<void> | void;\n\t\t},\n\t): void;\n\n\t/** Register a CLI flag. */\n\tregisterFlag(\n\t\tname: string,\n\t\toptions:\n\t\t\t| { description?: string; type: \"boolean\"; default?: boolean }\n\t\t\t| { description?: string; type: \"string\"; default?: string },\n\t): void;\n\n\t/** Get the value of a registered CLI flag. */\n\tgetFlag(name: string): boolean | string | undefined;\n\n\t/** Return package-provided workflow files discovered for this session. */\n\tgetWorkflowResources(): ResolvedResource[];\n\n\t/**\n\t * Re-read package/settings workflow resources and return the updated snapshot when supported by the host.\n\t * Does not reload extensions, skills, prompts, themes, or context files.\n\t */\n\trefreshWorkflowResources?: () => Promise<ResolvedResource[]>;\n\n\t/**\n\t * Contribute an MCP server to this session, using the same schema as an `mcpServers` entry in `mcp.json`.\n\t * Call it from the factory or from `session_start`; registering a name again replaces the earlier entry.\n\t * Contributed servers are the lowest-precedence MCP layer: a same-named server in a user or project MCP\n\t * config replaces this one, and `{ \"disabled\": true }` there turns it off.\n\t */\n\tregisterMcpServer(name: string, config: McpServerConfig): void;\n\n\t/** Package-manifest and registered MCP servers for this session, one entry per server name. */\n\tgetMcpServerContributions?: () => McpServerContribution[];\n\n\t/** Subscribe to `registerMcpServer()` changes after startup; returns an unsubscribe function. */\n\tonMcpServerContributionsChanged?: (listener: () => void) => () => void;\n\n\t/**\n\t * Return the resource-loader options that child Atomic sessions should inherit without sharing this loader instance.\n\t */\n\tgetResourceLoaderInheritanceSnapshot?: () => DefaultResourceLoaderInheritanceSnapshot;\n\t/** Internal owner-bound defaults and capability ceiling for builtin child adapters. */\n\tgetChildSessionOptions?: import(\"../child-session-options.ts\").ChildSessionOptionsResolver;\n\n\t// =========================================================================\n\t// Message Rendering\n\t// =========================================================================\n\n\t/** Register a custom renderer for CustomMessageEntry. */\n\tregisterMessageRenderer<T = unknown>(customType: string, renderer: MessageRenderer<T>): void;\n\n\t/** Register a transformer for user and assistant Markdown before Atomic renders it in the interactive transcript. */\n\tregisterMarkdownTransformer(transformer: MarkdownTransformer): void;\n\t/** Register a custom renderer for a persistent CustomEntry. */\n\tregisterEntryRenderer<T = unknown>(customType: string, renderer: EntryRenderer<T>): void;\n\n\t// =========================================================================\n\t// Actions\n\t// =========================================================================\n\n\t/** Send a custom message to the session. */\n\tsendMessage<T = unknown>(\n\t\tmessage: Pick<CustomMessage<T>, \"customType\" | \"content\" | \"display\" | \"details\">,\n\t\toptions?: SendMessageOptions,\n\t): void | Promise<void>;\n\n\t/** Atomically admit custom messages in array order without waiting for the resulting turn. */\n\tsendMessages<T = unknown>(\n\t\tmessages: Array<Pick<CustomMessage<T>, \"customType\" | \"content\" | \"display\" | \"details\">>,\n\t\toptions?: SendMessagesOptions,\n\t): void | Promise<void>;\n\n\t/**\n\t * Send a user message to the agent. Always triggers a turn.\n\t * When the agent is streaming, use deliverAs to specify how to queue the message.\n\t *\n\t * By default the text is sent literally. Set expandPromptTemplates to true to\n\t * dispatch a registered extension or skill command (or expand a prompt\n\t * template) — with that option the message may DISPATCH a command rather\n\t * than being sent. Default: false.\n\t */\n\tsendUserMessage(\n\t\tcontent: string | (TextContent | ImageContent)[],\n\t\toptions?: { deliverAs?: \"steer\" | \"followUp\"; expandPromptTemplates?: boolean },\n\t): void;\n\n\t/** Append a custom entry to the session for state persistence (not sent to LLM). */\n\tappendEntry<T = unknown>(customType: string, data?: T): void;\n\n\t// =========================================================================\n\t// Session Metadata\n\t// =========================================================================\n\n\t/** Set the session display name (shown in session selector). */\n\tsetSessionName(name: string): void;\n\n\t/** Get the current session name, if set. */\n\tgetSessionName(): string | undefined;\n\n\t/** Set or clear a label on an entry. Labels are user-defined markers for bookmarking/navigation. */\n\tsetLabel(entryId: string, label: string | undefined): void;\n\n\t/** Execute a shell command. */\n\texec(command: string, args: string[], options?: ExecOptions): Promise<ExecResult>;\n\n\t/** Get the list of currently active tool names. */\n\tgetActiveTools(): string[];\n\n\t/** Get all configured tools with parameter schema and source metadata. */\n\tgetAllTools(): ToolInfo[];\n\n\t/** Set the active tools by name. */\n\tsetActiveTools(toolNames: string[]): void;\n\n\t/** Get available slash commands in the current session. */\n\tgetCommands(): SlashCommandInfo[];\n\n\t// =========================================================================\n\t// Model and Thinking Level\n\t// =========================================================================\n\n\t/**\n\t * Set the model for the current session without changing the configured default for new sessions.\n\t * Returns false if authentication is not configured for the model's provider.\n\t */\n\tsetModel(model: Model<Api>): Promise<boolean>;\n\n\t/** Get current thinking level. */\n\tgetThinkingLevel(): ThinkingLevel;\n\n\t/**\n\t * Set the thinking level (clamped to model capabilities) for the current session without changing the configured default\n\t * for new sessions.\n\t */\n\tsetThinkingLevel(level: ThinkingLevel): void;\n\n\t// =========================================================================\n\t// Provider Registration\n\t// =========================================================================\n\n\t/**\n\t * Register or override a model provider.\n\t *\n\t * If `models` is provided: replaces all existing models for this provider.\n\t * If only `baseUrl` is provided: overrides the URL for existing models.\n\t * If `oauth` is provided: registers OAuth provider for /login support.\n\t * If `streamSimple` is provided: registers a custom API stream handler.\n\t *\n\t * During initial extension load this call is queued and applied once the\n\t * runner has bound its context. After that it takes effect immediately, so\n\t * it is safe to call from command handlers or event callbacks without\n\t * requiring a `/reload`.\n\t *\n\t * @example\n\t * // Register a new provider with custom models\n\t * pi.registerProvider(\"my-proxy\", {\n\t * baseUrl: \"https://proxy.example.com\",\n\t * apiKey: \"$PROXY_API_KEY\",\n\t * api: \"anthropic-messages\",\n\t * models: [\n\t * {\n\t * id: \"claude-sonnet-4-20250514\",\n\t * name: \"Claude 4 Sonnet (proxy)\",\n\t * reasoning: false,\n\t * input: [\"text\", \"image\"],\n\t * cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },\n\t * contextWindow: 200000,\n\t * maxTokens: 16384\n\t * }\n\t * ]\n\t * });\n\t *\n\t * @example\n\t * // Override baseUrl for an existing provider\n\t * pi.registerProvider(\"anthropic\", {\n\t * baseUrl: \"https://proxy.example.com\"\n\t * });\n\t *\n\t * @example\n\t * // Register provider with OAuth support\n\t * pi.registerProvider(\"corporate-ai\", {\n\t * baseUrl: \"https://ai.corp.com\",\n\t * api: \"openai-responses\",\n\t * models: [...],\n\t * oauth: {\n\t * name: \"Corporate AI (SSO)\",\n\t * async login(callbacks, signal) { ... },\n\t * async refreshToken(credentials, signal) { ... },\n\t * getApiKey(credentials) { return credentials.access; }\n\t * }\n\t * });\n\t */\n\tregisterProvider(name: string, config: ProviderConfig): void;\n\tregisterProvider(provider: Provider): void;\n\n\t/**\n\t * Unregister a previously registered provider.\n\t *\n\t * Removes all models belonging to the named provider and restores any\n\t * built-in models that were overridden by it. Has no effect if the provider\n\t * is not currently registered.\n\t *\n\t * Like `registerProvider`, this takes effect immediately when called after\n\t * the initial load phase.\n\t *\n\t * @example\n\t * pi.unregisterProvider(\"my-proxy\");\n\t */\n\tunregisterProvider(name: string): void;\n\n\t/** Shared event bus for extension communication. */\n\tevents: EventBus;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader-api.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/loader-api.ts"],"names":[],"mappings":"AAGA,OAAO,EAAwB,KAAK,QAAQ,EAA6B,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"loader-api.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/loader-api.ts"],"names":[],"mappings":"AAGA,OAAO,EAAwB,KAAK,QAAQ,EAA6B,MAAM,iBAAiB,CAAC;AAoBjG,OAAO,EAGN,KAAK,yCAAyC,EAC9C,KAAK,6BAA6B,EAClC,MAAM,uBAAuB,CAAC;AAG/B,OAAO,KAAK,EAEX,SAAS,EACT,YAAY,EAEZ,gBAAgB,EAMhB,MAAM,YAAY,CAAC;AASpB,+EAA+E;AAC/E,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAG/E;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAK9D;AAED,iFAAiF;AACjF,wBAAsB,sBAAsB,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAUhH;AAED,wFAAwF;AACxF,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAc7D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CACjC,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,gBAAgB,EACzB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,QAAQ,EAClB,wBAAwB,GAAE,6BAA6D,EACvF,yCAAyC,CAAC,EAAE,yCAAyC,GACnF;IAAE,GAAG,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,CAmbhE"}
|
|
@@ -69,6 +69,7 @@ export function createExtensionAPI(extension, runtime, cwd, eventBus, workflowRe
|
|
|
69
69
|
runtime = invocationRuntime(runtime);
|
|
70
70
|
extension = invocationExtension(extension);
|
|
71
71
|
const workflowResources = normalizeWorkflowResourceProvider(workflowResourceProvider);
|
|
72
|
+
originalRuntime.mcpServerRegistry.addPackageSource(workflowResources);
|
|
72
73
|
const pendingRuntimeChanges = [];
|
|
73
74
|
const loadingUnsubscribers = [];
|
|
74
75
|
const initialFlagValues = new Map(runtime.flagValues);
|
|
@@ -261,6 +262,47 @@ export function createExtensionAPI(extension, runtime, cwd, eventBus, workflowRe
|
|
|
261
262
|
return [...(refreshed ?? workflowResources.get())];
|
|
262
263
|
});
|
|
263
264
|
},
|
|
265
|
+
registerMcpServer(name, config) {
|
|
266
|
+
assertActive();
|
|
267
|
+
if (typeof name !== "string" || name.trim() === "") {
|
|
268
|
+
throw new Error(`MCP server registered by extension "${extension.path}" must have a non-empty name.`);
|
|
269
|
+
}
|
|
270
|
+
if (typeof config !== "object" || config === null || Array.isArray(config)) {
|
|
271
|
+
throw new Error(`MCP server "${name}" registered by extension "${extension.path}" must be an object.`);
|
|
272
|
+
}
|
|
273
|
+
const contribution = {
|
|
274
|
+
name,
|
|
275
|
+
config: { ...config },
|
|
276
|
+
origin: "extension",
|
|
277
|
+
sourceInfo: extension.sourceInfo,
|
|
278
|
+
};
|
|
279
|
+
let previous;
|
|
280
|
+
applyRuntimeChange({
|
|
281
|
+
apply: () => {
|
|
282
|
+
previous = runtime.mcpServerRegistry.register(contribution);
|
|
283
|
+
},
|
|
284
|
+
rollback: () => runtime.mcpServerRegistry.restore(name, previous),
|
|
285
|
+
});
|
|
286
|
+
},
|
|
287
|
+
getMcpServerContributions() {
|
|
288
|
+
assertActive(true);
|
|
289
|
+
return runtime.mcpServerRegistry.list();
|
|
290
|
+
},
|
|
291
|
+
onMcpServerContributionsChanged(listener) {
|
|
292
|
+
const ownerRuntime = resolveInvocationRuntime(originalRuntime);
|
|
293
|
+
const ownerLifetime = extension[apiLifetime];
|
|
294
|
+
const deliver = captureRegistrationInvocation(listener);
|
|
295
|
+
assertActive();
|
|
296
|
+
return trackRelease(ownerRuntime.mcpServerRegistry.subscribe(() => {
|
|
297
|
+
if (ownerLifetime?.retired || ownerLifetime?.cleanup || !extensionWorkOpen(ownerRuntime))
|
|
298
|
+
return;
|
|
299
|
+
if (state !== "loading" && !boundExtensionRuntimes.has(ownerRuntime))
|
|
300
|
+
return;
|
|
301
|
+
void trackExtensionWork(ownerRuntime, () => trackSessionWork(ownerLifetime, async () => deliver())).catch((error) => {
|
|
302
|
+
console.error(`MCP server contribution listener error (${extension.path}):`, error);
|
|
303
|
+
});
|
|
304
|
+
}));
|
|
305
|
+
},
|
|
264
306
|
getResourceLoaderInheritanceSnapshot() {
|
|
265
307
|
assertActive(true);
|
|
266
308
|
return resourceLoaderInheritanceSnapshotProvider?.() ?? {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader-api.js","sourceRoot":"","sources":["../../../src/core/extensions/loader-api.ts"],"names":[],"mappings":"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","sourcesContent":["import { AsyncLocalStorage } from \"node:async_hooks\";\nimport type { Provider } from \"@bastani/pi-ai\";\nimport type { KeyId } from \"@earendil-works/pi-tui\";\nimport { canonicalEventBusFor, type EventBus, registerCanonicalEventBus } from \"../event-bus.js\";\nimport type { ExecOptions } from \"../exec.ts\";\nimport { execCommand } from \"../exec.ts\";\nimport { lifecycleScopeForOwner } from \"../session-lifecycle-scope.ts\";\nimport { drainSessionWork, hasCallingSessionWork, trackSessionWork } from \"../session-lifecycle-work.ts\";\nimport {\n\tassertExtensionAction,\n\textensionWorkOpen,\n\tisRetiredExtensionCleanup,\n\ttrackExtensionWork,\n} from \"./extension-work.ts\";\nimport { hostInputError } from \"./host-input.js\";\nimport {\n\tcaptureRegistrationInvocation as captureInvocation,\n\tinvocationExtension,\n\tinvocationRuntime,\n\toriginalRegistrationCallback,\n\tresolveInvocationRuntime,\n} from \"./loader-bindings.ts\";\nimport {\n\temptyWorkflowResourceProvider,\n\tnormalizeWorkflowResourceProvider,\n\ttype ResourceLoaderInheritanceSnapshotProvider,\n\ttype WorkflowResourceProviderInput,\n} from \"./loader-resources.ts\";\nimport { boundExtensionRuntimes } from \"./loader-runtime.ts\";\nimport { STALE_EXTENSION_CONTEXT_MESSAGE } from \"./stale-context.ts\";\nimport type {\n\tEntryRenderer,\n\tExtension,\n\tExtensionAPI,\n\tExtensionContext,\n\tExtensionRuntime,\n\tMarkdownTransformer,\n\tMessageRenderer,\n\tProviderConfig,\n\tRegisteredCommand,\n\tToolDefinition,\n} from \"./types.ts\";\n\ntype HandlerFn = (...args: unknown[]) => Promise<unknown>;\n\nconst apiLifetime = Symbol.for(\"atomic.extension-api-lifetime.v1\");\ntype ExtensionWithLifetime = Extension & {\n\t[apiLifetime]?: { retired: boolean; releases: Set<() => void>; cleanup?: AsyncLocalStorage<{ active: boolean }> };\n};\n\n/** Factory receipts must not include selected siblings sharing the runtime. */\nexport async function drainExtensionAPIWork(extension: Extension): Promise<void> {\n\tconst lifetime = (extension as ExtensionWithLifetime)[apiLifetime];\n\tif (lifetime) await drainSessionWork(lifetime);\n}\n\nexport function sealExtensionAPI(extension: Extension): boolean {\n\tconst lifetime = (extension as ExtensionWithLifetime)[apiLifetime];\n\tif (lifetime?.retired) return false;\n\tif (lifetime) lifetime.cleanup ??= new AsyncLocalStorage<{ active: boolean }>();\n\treturn true;\n}\n\n/** Seal one unadopted factory without sealing its selected siblings' runtime. */\nexport async function runExtensionAPICleanup(extension: Extension, operation: () => Promise<void>): Promise<void> {\n\tconst lifetime = (extension as ExtensionWithLifetime)[apiLifetime];\n\tif (!lifetime) return operation();\n\tlifetime.cleanup ??= new AsyncLocalStorage<{ active: boolean }>();\n\tconst scope = { active: true };\n\ttry {\n\t\tawait lifetime.cleanup.run(scope, operation);\n\t} finally {\n\t\tscope.active = false;\n\t}\n}\n\n/** Retire one factory without invalidating a runtime shared with selected factories. */\nexport function retireExtensionAPI(extension: Extension): void {\n\tconst lifetime = (extension as ExtensionWithLifetime)[apiLifetime];\n\tif (!lifetime || lifetime.retired) return;\n\tlifetime.retired = true;\n\tconst failures: unknown[] = [];\n\tfor (const release of lifetime.releases) {\n\t\ttry {\n\t\t\trelease();\n\t\t} catch (error) {\n\t\t\tfailures.push(error);\n\t\t}\n\t}\n\tlifetime.releases.clear();\n\tif (failures.length) throw new AggregateError(failures, \"Extension subscription retirement failed\");\n}\n\n/**\n * Create the ExtensionAPI for an extension.\n * Registration methods write to the extension object.\n * Action methods delegate to the shared runtime.\n */\nexport function createExtensionAPI(\n\textension: Extension,\n\truntime: ExtensionRuntime,\n\tcwd: string,\n\teventBus: EventBus,\n\tworkflowResourceProvider: WorkflowResourceProviderInput = emptyWorkflowResourceProvider,\n\tresourceLoaderInheritanceSnapshotProvider?: ResourceLoaderInheritanceSnapshotProvider,\n): { api: ExtensionAPI; commit: () => void; discard: () => void } {\n\tconst originalRuntime = runtime;\n\t(extension as ExtensionWithLifetime)[apiLifetime] = { retired: false, releases: new Set() };\n\tconst captureRegistrationInvocation = <T>(value: T): T => captureInvocation(value, originalRuntime);\n\truntime = invocationRuntime(runtime);\n\textension = invocationExtension(extension);\n\tconst workflowResources = normalizeWorkflowResourceProvider(workflowResourceProvider);\n\tconst pendingRuntimeChanges: Array<{ apply: () => void; rollback: () => void }> = [];\n\tconst loadingUnsubscribers: Array<() => void> = [];\n\tconst initialFlagValues = new Map(runtime.flagValues);\n\tconst initialFlagOwners = new Map(runtime.flagOwners);\n\tconst initialFlagOwnerOrigins = new Map(runtime.flagOwnerOrigins);\n\tlet state: \"loading\" | \"active\" | \"failed\" = \"loading\";\n\tconst assertActive = (inspection = false) => {\n\t\tconst lifetime = (extension as ExtensionWithLifetime)[apiLifetime];\n\t\tif (lifetime?.retired) throw new Error(STALE_EXTENSION_CONTEXT_MESSAGE);\n\t\tif (lifetime?.cleanup && !lifetime.cleanup.getStore()?.active && !hasCallingSessionWork(lifetime))\n\t\t\tthrow hostInputError(\"SessionClosed\");\n\t\tif (state === \"failed\")\n\t\t\tthrow new Error(`Extension \"${extension.path}\" failed to load and its API is no longer active.`);\n\t\truntime.assertActive();\n\t\tif (!inspection) assertExtensionAction(resolveInvocationRuntime(originalRuntime));\n\t};\n\tconst trackAPIWork = <T>(operation: () => Promise<T>): Promise<T> => {\n\t\tconst lifetime = (extension as ExtensionWithLifetime)[apiLifetime]!;\n\t\treturn trackExtensionWork(resolveInvocationRuntime(originalRuntime), () => trackSessionWork(lifetime, operation));\n\t};\n\tconst applyRuntimeChange = (change: { apply: () => void; rollback: () => void }) => {\n\t\tif (state === \"loading\") pendingRuntimeChanges.push(change);\n\t\telse if (state === \"active\") change.apply();\n\t\telse assertActive();\n\t};\n\t// Both ownership ledgers must forget a completed release, including on throw.\n\t// Clearing the capture also makes a retained public unsubscribe handle harmless.\n\tconst trackRelease = (cleanup: () => void): (() => void) => {\n\t\tconst lifetime = (extension as ExtensionWithLifetime)[apiLifetime];\n\t\tlet pending: (() => void) | undefined = cleanup;\n\t\tconst release = runtime.trackEventBusSubscription(() => {\n\t\t\tconst callback = pending;\n\t\t\tpending = undefined;\n\t\t\tlifetime?.releases.delete(release);\n\t\t\tcallback?.();\n\t\t});\n\t\tlifetime?.releases.add(release);\n\t\tif (state === \"loading\") loadingUnsubscribers.push(release);\n\t\treturn release;\n\t};\n\t// Successive load generations of one session each build a new facade over\n\t// the same shared bus; mapping the facade back to that bus lets\n\t// session-scoped state re-bind across module re-evaluation.\n\tconst events: EventBus = {\n\t\temit(channel, data) {\n\t\t\tif (isRetiredExtensionCleanup(resolveInvocationRuntime(originalRuntime))) return;\n\t\t\tassertActive();\n\t\t\teventBus.emit(channel, data);\n\t\t},\n\t\ton(channel, handler) {\n\t\t\tconst ownerRuntime = resolveInvocationRuntime(originalRuntime);\n\t\t\tconst ownerLifetime = (extension as ExtensionWithLifetime)[apiLifetime];\n\t\t\tconst deliver = captureRegistrationInvocation(handler);\n\t\t\tassertActive();\n\t\t\tconst unsubscribe = trackRelease(\n\t\t\t\teventBus.on(channel, (data) => {\n\t\t\t\t\tif (ownerLifetime?.retired || ownerLifetime?.cleanup || !extensionWorkOpen(ownerRuntime)) return;\n\t\t\t\t\tif (state === \"loading\" || boundExtensionRuntimes.has(ownerRuntime))\n\t\t\t\t\t\treturn trackExtensionWork(ownerRuntime, () =>\n\t\t\t\t\t\t\ttrackSessionWork(ownerLifetime!, async () => deliver(data)),\n\t\t\t\t\t\t);\n\t\t\t\t}),\n\t\t\t);\n\t\t\treturn unsubscribe;\n\t\t},\n\t};\n\tregisterCanonicalEventBus(events, canonicalEventBusFor(eventBus));\n\t// Capture explicit creation/reload lineage before invocation leaves its construction scope.\n\tlifecycleScopeForOwner(originalRuntime);\n\tconst api = {\n\t\tget lifecycleScope() {\n\t\t\treturn lifecycleScopeForOwner(resolveInvocationRuntime(originalRuntime));\n\t\t},\n\t\tregisterWorkflowActivityPublisher() {\n\t\t\tassertActive();\n\t\t\tconst publisher = runtime.workflowActivityHub.registerWorkflowActivityPublisher();\n\t\t\treturn { ...publisher, dispose: trackRelease(() => publisher.dispose()) };\n\t\t},\n\t\ton(event: string, handler: HandlerFn): () => void {\n\t\t\tassertActive();\n\t\t\tconst registeredHandler = captureRegistrationInvocation((...args: Parameters<HandlerFn>) => handler(...args));\n\t\t\tconst list = extension.handlers.get(event) ?? [];\n\t\t\tlist.push(registeredHandler);\n\t\t\textension.handlers.set(event, list);\n\t\t\treturn () => {\n\t\t\t\tconst handlers = extension.handlers.get(event);\n\t\t\t\tif (!handlers) return;\n\t\t\t\tconst index = handlers.findIndex(\n\t\t\t\t\t(candidate) =>\n\t\t\t\t\t\toriginalRegistrationCallback(candidate) === originalRegistrationCallback(registeredHandler),\n\t\t\t\t);\n\t\t\t\tif (index === -1) return;\n\t\t\t\thandlers.splice(index, 1);\n\t\t\t\tif (handlers.length === 0) extension.handlers.delete(event);\n\t\t\t};\n\t\t},\n\n\t\tregisterTool(tool: ToolDefinition): void {\n\t\t\tassertActive();\n\t\t\tif (runtime.canRegisterResource?.(extension, \"tool\", tool.name) === false) return;\n\t\t\tif (typeof tool.parameters !== \"object\" || tool.parameters === null || Array.isArray(tool.parameters)) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Tool \"${tool.name}\" registered by extension \"${extension.path}\" must define an object parameter schema.`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst registration = { definition: captureRegistrationInvocation(tool), sourceInfo: extension.sourceInfo };\n\t\t\tif (runtime.stageToolRegistration?.(extension, tool.name, registration)) return;\n\t\t\textension.tools.set(tool.name, registration);\n\t\t\tif (runtime.refreshToolsAfterRegistration) runtime.refreshToolsAfterRegistration();\n\t\t\telse runtime.refreshTools();\n\t\t},\n\n\t\tregisterCommand(name: string, options: Omit<RegisteredCommand, \"name\" | \"sourceInfo\">): void {\n\t\t\tassertActive();\n\t\t\tif (runtime.canRegisterResource?.(extension, \"command\", name) === false) return;\n\t\t\tconst registration = { name, sourceInfo: extension.sourceInfo, ...captureRegistrationInvocation(options) };\n\t\t\tif (runtime.stageCommandRegistration?.(extension, name, registration)) return;\n\t\t\textension.commands.set(name, registration);\n\t\t},\n\n\t\tregisterShortcut(\n\t\t\tshortcut: KeyId,\n\t\t\toptions: {\n\t\t\t\tdescription?: string;\n\t\t\t\tkeybinding?: import(\"../keybindings.ts\").Keybinding;\n\t\t\t\tpreferEditor?: boolean;\n\t\t\t\thandler: (ctx: ExtensionContext) => Promise<void> | void;\n\t\t\t},\n\t\t): void {\n\t\t\tassertActive();\n\t\t\tif (runtime.canRegisterResource?.(extension, \"shortcut\", shortcut) === false) return;\n\t\t\tconst registration = { shortcut, extensionPath: extension.path, ...captureRegistrationInvocation(options) };\n\t\t\tif (runtime.stageShortcutRegistration?.(extension, shortcut, registration)) return;\n\t\t\textension.shortcuts.set(shortcut, registration);\n\t\t},\n\n\t\tregisterFlag(\n\t\t\tname: string,\n\t\t\toptions: {\n\t\t\t\tdescription?: string;\n\t\t\t\ttype: \"boolean\" | \"string\";\n\t\t\t\tdefault?: boolean | string;\n\t\t\t},\n\t\t): void {\n\t\t\tassertActive();\n\t\t\tif (options.default !== undefined && typeof options.default !== options.type) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Invalid default for flag \"${name}\": expected ${options.type}, got ${typeof options.default}`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (runtime.canRegisterResource?.(extension, \"flag\", name) === false) return;\n\t\t\tconst registration = { name, extensionPath: extension.path, ...options };\n\t\t\tif (runtime.stageFlagRegistration?.(extension, name, registration, options.default)) return;\n\t\t\textension.flags.set(name, registration);\n\t\t\truntime.flagOwners ??= new Map();\n\t\t\tconst flagOwners = runtime.flagOwners;\n\t\t\truntime.flagOwnerOrigins ??= new Map();\n\t\t\tconst flagOwnerOrigins = runtime.flagOwnerOrigins;\n\t\t\tif (!flagOwners.has(name)) {\n\t\t\t\tflagOwners.set(name, extension.path);\n\t\t\t\tflagOwnerOrigins.set(name, extension.sourceInfo.configurationOrigin);\n\t\t\t}\n\t\t\tif (options.default !== undefined && !runtime.flagValues.has(name)) {\n\t\t\t\tif (runtime.applyFlagDefaultAfterRegistration) {\n\t\t\t\t\truntime.applyFlagDefaultAfterRegistration(\n\t\t\t\t\t\tname,\n\t\t\t\t\t\textension.path,\n\t\t\t\t\t\toptions.default,\n\t\t\t\t\t\textension.sourceInfo.configurationOrigin,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\truntime.flagValues.set(name, options.default);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tregisterMessageRenderer<T>(customType: string, renderer: MessageRenderer<T>): void {\n\t\t\tassertActive();\n\t\t\textension.messageRenderers.set(customType, captureRegistrationInvocation(renderer) as MessageRenderer);\n\t\t},\n\n\t\tregisterMarkdownTransformer(transformer: MarkdownTransformer): void {\n\t\t\tassertActive();\n\t\t\textension.markdownTransformer = captureRegistrationInvocation(transformer);\n\t\t},\n\n\t\tregisterEntryRenderer<T>(customType: string, renderer: EntryRenderer<T>): void {\n\t\t\tassertActive();\n\t\t\textension.entryRenderers.set(customType, captureRegistrationInvocation(renderer) as EntryRenderer);\n\t\t},\n\n\t\tgetFlag(name: string): boolean | string | undefined {\n\t\t\tassertActive(true);\n\t\t\tconst pendingDefault = runtime.getPendingFlagDefault?.(extension.path, name);\n\t\t\tif (!extension.flags.has(name) && pendingDefault === undefined) return undefined;\n\t\t\treturn runtime.flagValues.get(name) ?? pendingDefault;\n\t\t},\n\n\t\tgetWorkflowResources() {\n\t\t\tassertActive(true);\n\t\t\treturn [...workflowResources.get()];\n\t\t},\n\n\t\tasync refreshWorkflowResources() {\n\t\t\tassertActive();\n\t\t\treturn trackAPIWork(async () => {\n\t\t\t\tconst refreshed = await workflowResources.refresh?.();\n\t\t\t\treturn [...(refreshed ?? workflowResources.get())];\n\t\t\t});\n\t\t},\n\n\t\tgetResourceLoaderInheritanceSnapshot() {\n\t\t\tassertActive(true);\n\t\t\treturn resourceLoaderInheritanceSnapshotProvider?.() ?? {};\n\t\t},\n\t\tgetChildSessionOptions(options) {\n\t\t\tassertActive();\n\t\t\treturn runtime.getChildSessionOptions?.(options) ?? options;\n\t\t},\n\n\t\tsendMessage(message, options): void | Promise<void> {\n\t\t\tassertActive();\n\t\t\treturn runtime.sendMessage(message, options);\n\t\t},\n\n\t\tsendMessages(messages, options): void | Promise<void> {\n\t\t\tassertActive();\n\t\t\treturn runtime.sendMessages(messages, options);\n\t\t},\n\n\t\tsendUserMessage(content, options): void {\n\t\t\tassertActive();\n\t\t\truntime.sendUserMessage(content, options);\n\t\t},\n\n\t\tappendEntry(customType: string, data?: unknown): void {\n\t\t\tassertActive();\n\t\t\truntime.appendEntry(customType, data);\n\t\t},\n\n\t\tsetSessionName(name: string): void {\n\t\t\tassertActive();\n\t\t\truntime.setSessionName(name);\n\t\t},\n\n\t\tgetSessionName(): string | undefined {\n\t\t\tassertActive(true);\n\t\t\treturn runtime.getSessionName();\n\t\t},\n\n\t\tsetLabel(entryId: string, label: string | undefined): void {\n\t\t\tassertActive();\n\t\t\truntime.setLabel(entryId, label);\n\t\t},\n\n\t\texec(command: string, args: string[], options?: ExecOptions) {\n\t\t\tassertActive();\n\t\t\treturn trackAPIWork(() => execCommand(command, args, options?.cwd ?? cwd, options));\n\t\t},\n\n\t\tgetActiveTools(): string[] {\n\t\t\tassertActive(true);\n\t\t\treturn runtime.getActiveToolsAfterRegistration?.(extension) ?? runtime.getActiveTools();\n\t\t},\n\n\t\tgetAllTools() {\n\t\t\tassertActive(true);\n\t\t\treturn runtime.getAllToolsAfterRegistration?.(extension) ?? runtime.getAllTools();\n\t\t},\n\n\t\tsetActiveTools(toolNames: string[]): void {\n\t\t\tassertActive();\n\t\t\tif (!runtime.setActiveToolsAfterRegistration?.(extension, toolNames)) runtime.setActiveTools(toolNames);\n\t\t},\n\n\t\tgetCommands() {\n\t\t\tassertActive(true);\n\t\t\treturn runtime.getCommandsAfterRegistration?.(extension) ?? runtime.getCommands();\n\t\t},\n\n\t\tsetModel(model) {\n\t\t\tassertActive();\n\t\t\treturn runtime.setModel(model);\n\t\t},\n\n\t\tgetThinkingLevel() {\n\t\t\tassertActive(true);\n\t\t\treturn runtime.getThinkingLevel();\n\t\t},\n\n\t\tsetThinkingLevel(level) {\n\t\t\tassertActive();\n\t\t\truntime.setThinkingLevel(level);\n\t\t},\n\n\t\tregisterProvider(nameOrProvider: string | Provider, config?: ProviderConfig) {\n\t\t\tassertActive();\n\t\t\tif (typeof nameOrProvider === \"string\") {\n\t\t\t\tif (!config) throw new Error(\"Provider config is required\");\n\t\t\t\tconst name = nameOrProvider;\n\t\t\t\tapplyRuntimeChange({\n\t\t\t\t\tapply: () => runtime.registerProvider(name, config, extension.path),\n\t\t\t\t\trollback: () => runtime.unregisterProvider(name, extension.path),\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst provider = nameOrProvider;\n\t\t\t\tapplyRuntimeChange({\n\t\t\t\t\tapply: () => runtime.registerProvider(provider, extension.path),\n\t\t\t\t\trollback: () => runtime.unregisterProvider(provider.id, extension.path),\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\tunregisterProvider(name: string) {\n\t\t\tassertActive();\n\t\t\tconst prior = runtime.pendingProviderRegistrations.filter((registration) =>\n\t\t\t\t\"provider\" in registration ? registration.provider.id === name : registration.name === name,\n\t\t\t);\n\t\t\tapplyRuntimeChange({\n\t\t\t\t// Explicit unregistration stays name-wide: its rollback below\n\t\t\t\t// restores every prior registration, so a narrower removal here\n\t\t\t\t// would re-register entries that were never taken away.\n\t\t\t\tapply: () => runtime.unregisterProvider(name),\n\t\t\t\trollback: () => {\n\t\t\t\t\tfor (const registration of prior) {\n\t\t\t\t\t\tif (\"provider\" in registration) {\n\t\t\t\t\t\t\truntime.registerProvider(registration.provider, registration.extensionPath);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\truntime.registerProvider(registration.name, registration.config, registration.extensionPath);\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},\n\n\t\tevents,\n\t} as ExtensionAPI;\n\n\treturn {\n\t\tapi,\n\t\tcommit: () => {\n\t\t\tif (state !== \"loading\") return;\n\t\t\tconst applied: Array<{ apply: () => void; rollback: () => void }> = [];\n\t\t\ttry {\n\t\t\t\tfor (const change of pendingRuntimeChanges) {\n\t\t\t\t\tchange.apply();\n\t\t\t\t\tapplied.push(change);\n\t\t\t\t}\n\t\t\t\tstate = \"active\";\n\t\t\t\tpendingRuntimeChanges.length = 0;\n\t\t\t\tloadingUnsubscribers.length = 0;\n\t\t\t} catch (error) {\n\t\t\t\tfor (const change of applied.reverse()) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tchange.rollback();\n\t\t\t\t\t} catch {\n\t\t\t\t\t\t// Best-effort undo of provider ops already applied in this commit.\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t\tdiscard: () => {\n\t\t\tif (state !== \"loading\") return;\n\t\t\tstate = \"failed\";\n\t\t\tconst failures: unknown[] = [];\n\t\t\tfor (const unsubscribe of loadingUnsubscribers) {\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\tpendingRuntimeChanges.length = 0;\n\t\t\tloadingUnsubscribers.length = 0;\n\t\t\truntime.flagValues = initialFlagValues;\n\t\t\truntime.flagOwners = initialFlagOwners;\n\t\t\truntime.flagOwnerOrigins = initialFlagOwnerOrigins;\n\t\t\tif (failures.length) throw new AggregateError(failures, \"Extension subscription rollback failed\");\n\t\t},\n\t};\n}\n"]}
|
|
1
|
+
{"version":3,"file":"loader-api.js","sourceRoot":"","sources":["../../../src/core/extensions/loader-api.ts"],"names":[],"mappings":"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","sourcesContent":["import { AsyncLocalStorage } from \"node:async_hooks\";\nimport type { Provider } from \"@bastani/pi-ai\";\nimport type { KeyId } from \"@earendil-works/pi-tui\";\nimport { canonicalEventBusFor, type EventBus, registerCanonicalEventBus } from \"../event-bus.js\";\nimport type { ExecOptions } from \"../exec.ts\";\nimport { execCommand } from \"../exec.ts\";\nimport type { McpServerConfig, McpServerContribution } from \"../mcp-servers.ts\";\nimport { lifecycleScopeForOwner } from \"../session-lifecycle-scope.ts\";\nimport { drainSessionWork, hasCallingSessionWork, trackSessionWork } from \"../session-lifecycle-work.ts\";\nimport {\n\tassertExtensionAction,\n\textensionWorkOpen,\n\tisRetiredExtensionCleanup,\n\ttrackExtensionWork,\n} from \"./extension-work.ts\";\nimport { hostInputError } from \"./host-input.js\";\nimport {\n\tcaptureRegistrationInvocation as captureInvocation,\n\tinvocationExtension,\n\tinvocationRuntime,\n\toriginalRegistrationCallback,\n\tresolveInvocationRuntime,\n} from \"./loader-bindings.ts\";\nimport {\n\temptyWorkflowResourceProvider,\n\tnormalizeWorkflowResourceProvider,\n\ttype ResourceLoaderInheritanceSnapshotProvider,\n\ttype WorkflowResourceProviderInput,\n} from \"./loader-resources.ts\";\nimport { boundExtensionRuntimes } from \"./loader-runtime.ts\";\nimport { STALE_EXTENSION_CONTEXT_MESSAGE } from \"./stale-context.ts\";\nimport type {\n\tEntryRenderer,\n\tExtension,\n\tExtensionAPI,\n\tExtensionContext,\n\tExtensionRuntime,\n\tMarkdownTransformer,\n\tMessageRenderer,\n\tProviderConfig,\n\tRegisteredCommand,\n\tToolDefinition,\n} from \"./types.ts\";\n\ntype HandlerFn = (...args: unknown[]) => Promise<unknown>;\n\nconst apiLifetime = Symbol.for(\"atomic.extension-api-lifetime.v1\");\ntype ExtensionWithLifetime = Extension & {\n\t[apiLifetime]?: { retired: boolean; releases: Set<() => void>; cleanup?: AsyncLocalStorage<{ active: boolean }> };\n};\n\n/** Factory receipts must not include selected siblings sharing the runtime. */\nexport async function drainExtensionAPIWork(extension: Extension): Promise<void> {\n\tconst lifetime = (extension as ExtensionWithLifetime)[apiLifetime];\n\tif (lifetime) await drainSessionWork(lifetime);\n}\n\nexport function sealExtensionAPI(extension: Extension): boolean {\n\tconst lifetime = (extension as ExtensionWithLifetime)[apiLifetime];\n\tif (lifetime?.retired) return false;\n\tif (lifetime) lifetime.cleanup ??= new AsyncLocalStorage<{ active: boolean }>();\n\treturn true;\n}\n\n/** Seal one unadopted factory without sealing its selected siblings' runtime. */\nexport async function runExtensionAPICleanup(extension: Extension, operation: () => Promise<void>): Promise<void> {\n\tconst lifetime = (extension as ExtensionWithLifetime)[apiLifetime];\n\tif (!lifetime) return operation();\n\tlifetime.cleanup ??= new AsyncLocalStorage<{ active: boolean }>();\n\tconst scope = { active: true };\n\ttry {\n\t\tawait lifetime.cleanup.run(scope, operation);\n\t} finally {\n\t\tscope.active = false;\n\t}\n}\n\n/** Retire one factory without invalidating a runtime shared with selected factories. */\nexport function retireExtensionAPI(extension: Extension): void {\n\tconst lifetime = (extension as ExtensionWithLifetime)[apiLifetime];\n\tif (!lifetime || lifetime.retired) return;\n\tlifetime.retired = true;\n\tconst failures: unknown[] = [];\n\tfor (const release of lifetime.releases) {\n\t\ttry {\n\t\t\trelease();\n\t\t} catch (error) {\n\t\t\tfailures.push(error);\n\t\t}\n\t}\n\tlifetime.releases.clear();\n\tif (failures.length) throw new AggregateError(failures, \"Extension subscription retirement failed\");\n}\n\n/**\n * Create the ExtensionAPI for an extension.\n * Registration methods write to the extension object.\n * Action methods delegate to the shared runtime.\n */\nexport function createExtensionAPI(\n\textension: Extension,\n\truntime: ExtensionRuntime,\n\tcwd: string,\n\teventBus: EventBus,\n\tworkflowResourceProvider: WorkflowResourceProviderInput = emptyWorkflowResourceProvider,\n\tresourceLoaderInheritanceSnapshotProvider?: ResourceLoaderInheritanceSnapshotProvider,\n): { api: ExtensionAPI; commit: () => void; discard: () => void } {\n\tconst originalRuntime = runtime;\n\t(extension as ExtensionWithLifetime)[apiLifetime] = { retired: false, releases: new Set() };\n\tconst captureRegistrationInvocation = <T>(value: T): T => captureInvocation(value, originalRuntime);\n\truntime = invocationRuntime(runtime);\n\textension = invocationExtension(extension);\n\tconst workflowResources = normalizeWorkflowResourceProvider(workflowResourceProvider);\n\toriginalRuntime.mcpServerRegistry.addPackageSource(workflowResources);\n\tconst pendingRuntimeChanges: Array<{ apply: () => void; rollback: () => void }> = [];\n\tconst loadingUnsubscribers: Array<() => void> = [];\n\tconst initialFlagValues = new Map(runtime.flagValues);\n\tconst initialFlagOwners = new Map(runtime.flagOwners);\n\tconst initialFlagOwnerOrigins = new Map(runtime.flagOwnerOrigins);\n\tlet state: \"loading\" | \"active\" | \"failed\" = \"loading\";\n\tconst assertActive = (inspection = false) => {\n\t\tconst lifetime = (extension as ExtensionWithLifetime)[apiLifetime];\n\t\tif (lifetime?.retired) throw new Error(STALE_EXTENSION_CONTEXT_MESSAGE);\n\t\tif (lifetime?.cleanup && !lifetime.cleanup.getStore()?.active && !hasCallingSessionWork(lifetime))\n\t\t\tthrow hostInputError(\"SessionClosed\");\n\t\tif (state === \"failed\")\n\t\t\tthrow new Error(`Extension \"${extension.path}\" failed to load and its API is no longer active.`);\n\t\truntime.assertActive();\n\t\tif (!inspection) assertExtensionAction(resolveInvocationRuntime(originalRuntime));\n\t};\n\tconst trackAPIWork = <T>(operation: () => Promise<T>): Promise<T> => {\n\t\tconst lifetime = (extension as ExtensionWithLifetime)[apiLifetime]!;\n\t\treturn trackExtensionWork(resolveInvocationRuntime(originalRuntime), () => trackSessionWork(lifetime, operation));\n\t};\n\tconst applyRuntimeChange = (change: { apply: () => void; rollback: () => void }) => {\n\t\tif (state === \"loading\") pendingRuntimeChanges.push(change);\n\t\telse if (state === \"active\") change.apply();\n\t\telse assertActive();\n\t};\n\t// Both ownership ledgers must forget a completed release, including on throw.\n\t// Clearing the capture also makes a retained public unsubscribe handle harmless.\n\tconst trackRelease = (cleanup: () => void): (() => void) => {\n\t\tconst lifetime = (extension as ExtensionWithLifetime)[apiLifetime];\n\t\tlet pending: (() => void) | undefined = cleanup;\n\t\tconst release = runtime.trackEventBusSubscription(() => {\n\t\t\tconst callback = pending;\n\t\t\tpending = undefined;\n\t\t\tlifetime?.releases.delete(release);\n\t\t\tcallback?.();\n\t\t});\n\t\tlifetime?.releases.add(release);\n\t\tif (state === \"loading\") loadingUnsubscribers.push(release);\n\t\treturn release;\n\t};\n\t// Successive load generations of one session each build a new facade over\n\t// the same shared bus; mapping the facade back to that bus lets\n\t// session-scoped state re-bind across module re-evaluation.\n\tconst events: EventBus = {\n\t\temit(channel, data) {\n\t\t\tif (isRetiredExtensionCleanup(resolveInvocationRuntime(originalRuntime))) return;\n\t\t\tassertActive();\n\t\t\teventBus.emit(channel, data);\n\t\t},\n\t\ton(channel, handler) {\n\t\t\tconst ownerRuntime = resolveInvocationRuntime(originalRuntime);\n\t\t\tconst ownerLifetime = (extension as ExtensionWithLifetime)[apiLifetime];\n\t\t\tconst deliver = captureRegistrationInvocation(handler);\n\t\t\tassertActive();\n\t\t\tconst unsubscribe = trackRelease(\n\t\t\t\teventBus.on(channel, (data) => {\n\t\t\t\t\tif (ownerLifetime?.retired || ownerLifetime?.cleanup || !extensionWorkOpen(ownerRuntime)) return;\n\t\t\t\t\tif (state === \"loading\" || boundExtensionRuntimes.has(ownerRuntime))\n\t\t\t\t\t\treturn trackExtensionWork(ownerRuntime, () =>\n\t\t\t\t\t\t\ttrackSessionWork(ownerLifetime!, async () => deliver(data)),\n\t\t\t\t\t\t);\n\t\t\t\t}),\n\t\t\t);\n\t\t\treturn unsubscribe;\n\t\t},\n\t};\n\tregisterCanonicalEventBus(events, canonicalEventBusFor(eventBus));\n\t// Capture explicit creation/reload lineage before invocation leaves its construction scope.\n\tlifecycleScopeForOwner(originalRuntime);\n\tconst api = {\n\t\tget lifecycleScope() {\n\t\t\treturn lifecycleScopeForOwner(resolveInvocationRuntime(originalRuntime));\n\t\t},\n\t\tregisterWorkflowActivityPublisher() {\n\t\t\tassertActive();\n\t\t\tconst publisher = runtime.workflowActivityHub.registerWorkflowActivityPublisher();\n\t\t\treturn { ...publisher, dispose: trackRelease(() => publisher.dispose()) };\n\t\t},\n\t\ton(event: string, handler: HandlerFn): () => void {\n\t\t\tassertActive();\n\t\t\tconst registeredHandler = captureRegistrationInvocation((...args: Parameters<HandlerFn>) => handler(...args));\n\t\t\tconst list = extension.handlers.get(event) ?? [];\n\t\t\tlist.push(registeredHandler);\n\t\t\textension.handlers.set(event, list);\n\t\t\treturn () => {\n\t\t\t\tconst handlers = extension.handlers.get(event);\n\t\t\t\tif (!handlers) return;\n\t\t\t\tconst index = handlers.findIndex(\n\t\t\t\t\t(candidate) =>\n\t\t\t\t\t\toriginalRegistrationCallback(candidate) === originalRegistrationCallback(registeredHandler),\n\t\t\t\t);\n\t\t\t\tif (index === -1) return;\n\t\t\t\thandlers.splice(index, 1);\n\t\t\t\tif (handlers.length === 0) extension.handlers.delete(event);\n\t\t\t};\n\t\t},\n\n\t\tregisterTool(tool: ToolDefinition): void {\n\t\t\tassertActive();\n\t\t\tif (runtime.canRegisterResource?.(extension, \"tool\", tool.name) === false) return;\n\t\t\tif (typeof tool.parameters !== \"object\" || tool.parameters === null || Array.isArray(tool.parameters)) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Tool \"${tool.name}\" registered by extension \"${extension.path}\" must define an object parameter schema.`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst registration = { definition: captureRegistrationInvocation(tool), sourceInfo: extension.sourceInfo };\n\t\t\tif (runtime.stageToolRegistration?.(extension, tool.name, registration)) return;\n\t\t\textension.tools.set(tool.name, registration);\n\t\t\tif (runtime.refreshToolsAfterRegistration) runtime.refreshToolsAfterRegistration();\n\t\t\telse runtime.refreshTools();\n\t\t},\n\n\t\tregisterCommand(name: string, options: Omit<RegisteredCommand, \"name\" | \"sourceInfo\">): void {\n\t\t\tassertActive();\n\t\t\tif (runtime.canRegisterResource?.(extension, \"command\", name) === false) return;\n\t\t\tconst registration = { name, sourceInfo: extension.sourceInfo, ...captureRegistrationInvocation(options) };\n\t\t\tif (runtime.stageCommandRegistration?.(extension, name, registration)) return;\n\t\t\textension.commands.set(name, registration);\n\t\t},\n\n\t\tregisterShortcut(\n\t\t\tshortcut: KeyId,\n\t\t\toptions: {\n\t\t\t\tdescription?: string;\n\t\t\t\tkeybinding?: import(\"../keybindings.ts\").Keybinding;\n\t\t\t\tpreferEditor?: boolean;\n\t\t\t\thandler: (ctx: ExtensionContext) => Promise<void> | void;\n\t\t\t},\n\t\t): void {\n\t\t\tassertActive();\n\t\t\tif (runtime.canRegisterResource?.(extension, \"shortcut\", shortcut) === false) return;\n\t\t\tconst registration = { shortcut, extensionPath: extension.path, ...captureRegistrationInvocation(options) };\n\t\t\tif (runtime.stageShortcutRegistration?.(extension, shortcut, registration)) return;\n\t\t\textension.shortcuts.set(shortcut, registration);\n\t\t},\n\n\t\tregisterFlag(\n\t\t\tname: string,\n\t\t\toptions: {\n\t\t\t\tdescription?: string;\n\t\t\t\ttype: \"boolean\" | \"string\";\n\t\t\t\tdefault?: boolean | string;\n\t\t\t},\n\t\t): void {\n\t\t\tassertActive();\n\t\t\tif (options.default !== undefined && typeof options.default !== options.type) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Invalid default for flag \"${name}\": expected ${options.type}, got ${typeof options.default}`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (runtime.canRegisterResource?.(extension, \"flag\", name) === false) return;\n\t\t\tconst registration = { name, extensionPath: extension.path, ...options };\n\t\t\tif (runtime.stageFlagRegistration?.(extension, name, registration, options.default)) return;\n\t\t\textension.flags.set(name, registration);\n\t\t\truntime.flagOwners ??= new Map();\n\t\t\tconst flagOwners = runtime.flagOwners;\n\t\t\truntime.flagOwnerOrigins ??= new Map();\n\t\t\tconst flagOwnerOrigins = runtime.flagOwnerOrigins;\n\t\t\tif (!flagOwners.has(name)) {\n\t\t\t\tflagOwners.set(name, extension.path);\n\t\t\t\tflagOwnerOrigins.set(name, extension.sourceInfo.configurationOrigin);\n\t\t\t}\n\t\t\tif (options.default !== undefined && !runtime.flagValues.has(name)) {\n\t\t\t\tif (runtime.applyFlagDefaultAfterRegistration) {\n\t\t\t\t\truntime.applyFlagDefaultAfterRegistration(\n\t\t\t\t\t\tname,\n\t\t\t\t\t\textension.path,\n\t\t\t\t\t\toptions.default,\n\t\t\t\t\t\textension.sourceInfo.configurationOrigin,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\truntime.flagValues.set(name, options.default);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tregisterMessageRenderer<T>(customType: string, renderer: MessageRenderer<T>): void {\n\t\t\tassertActive();\n\t\t\textension.messageRenderers.set(customType, captureRegistrationInvocation(renderer) as MessageRenderer);\n\t\t},\n\n\t\tregisterMarkdownTransformer(transformer: MarkdownTransformer): void {\n\t\t\tassertActive();\n\t\t\textension.markdownTransformer = captureRegistrationInvocation(transformer);\n\t\t},\n\n\t\tregisterEntryRenderer<T>(customType: string, renderer: EntryRenderer<T>): void {\n\t\t\tassertActive();\n\t\t\textension.entryRenderers.set(customType, captureRegistrationInvocation(renderer) as EntryRenderer);\n\t\t},\n\n\t\tgetFlag(name: string): boolean | string | undefined {\n\t\t\tassertActive(true);\n\t\t\tconst pendingDefault = runtime.getPendingFlagDefault?.(extension.path, name);\n\t\t\tif (!extension.flags.has(name) && pendingDefault === undefined) return undefined;\n\t\t\treturn runtime.flagValues.get(name) ?? pendingDefault;\n\t\t},\n\n\t\tgetWorkflowResources() {\n\t\t\tassertActive(true);\n\t\t\treturn [...workflowResources.get()];\n\t\t},\n\n\t\tasync refreshWorkflowResources() {\n\t\t\tassertActive();\n\t\t\treturn trackAPIWork(async () => {\n\t\t\t\tconst refreshed = await workflowResources.refresh?.();\n\t\t\t\treturn [...(refreshed ?? workflowResources.get())];\n\t\t\t});\n\t\t},\n\n\t\tregisterMcpServer(name: string, config: McpServerConfig): void {\n\t\t\tassertActive();\n\t\t\tif (typeof name !== \"string\" || name.trim() === \"\") {\n\t\t\t\tthrow new Error(`MCP server registered by extension \"${extension.path}\" must have a non-empty name.`);\n\t\t\t}\n\t\t\tif (typeof config !== \"object\" || config === null || Array.isArray(config)) {\n\t\t\t\tthrow new Error(`MCP server \"${name}\" registered by extension \"${extension.path}\" must be an object.`);\n\t\t\t}\n\t\t\tconst contribution: McpServerContribution = {\n\t\t\t\tname,\n\t\t\t\tconfig: { ...config },\n\t\t\t\torigin: \"extension\",\n\t\t\t\tsourceInfo: extension.sourceInfo,\n\t\t\t};\n\t\t\tlet previous: McpServerContribution | undefined;\n\t\t\tapplyRuntimeChange({\n\t\t\t\tapply: () => {\n\t\t\t\t\tprevious = runtime.mcpServerRegistry.register(contribution);\n\t\t\t\t},\n\t\t\t\trollback: () => runtime.mcpServerRegistry.restore(name, previous),\n\t\t\t});\n\t\t},\n\n\t\tgetMcpServerContributions() {\n\t\t\tassertActive(true);\n\t\t\treturn runtime.mcpServerRegistry.list();\n\t\t},\n\n\t\tonMcpServerContributionsChanged(listener: () => void) {\n\t\t\tconst ownerRuntime = resolveInvocationRuntime(originalRuntime);\n\t\t\tconst ownerLifetime = (extension as ExtensionWithLifetime)[apiLifetime];\n\t\t\tconst deliver = captureRegistrationInvocation(listener);\n\t\t\tassertActive();\n\t\t\treturn trackRelease(\n\t\t\t\townerRuntime.mcpServerRegistry.subscribe(() => {\n\t\t\t\t\tif (ownerLifetime?.retired || ownerLifetime?.cleanup || !extensionWorkOpen(ownerRuntime)) return;\n\t\t\t\t\tif (state !== \"loading\" && !boundExtensionRuntimes.has(ownerRuntime)) return;\n\t\t\t\t\tvoid trackExtensionWork(ownerRuntime, () =>\n\t\t\t\t\t\ttrackSessionWork(ownerLifetime!, async () => deliver()),\n\t\t\t\t\t).catch((error: Error) => {\n\t\t\t\t\t\tconsole.error(`MCP server contribution listener error (${extension.path}):`, error);\n\t\t\t\t\t});\n\t\t\t\t}),\n\t\t\t);\n\t\t},\n\n\t\tgetResourceLoaderInheritanceSnapshot() {\n\t\t\tassertActive(true);\n\t\t\treturn resourceLoaderInheritanceSnapshotProvider?.() ?? {};\n\t\t},\n\t\tgetChildSessionOptions(options) {\n\t\t\tassertActive();\n\t\t\treturn runtime.getChildSessionOptions?.(options) ?? options;\n\t\t},\n\n\t\tsendMessage(message, options): void | Promise<void> {\n\t\t\tassertActive();\n\t\t\treturn runtime.sendMessage(message, options);\n\t\t},\n\n\t\tsendMessages(messages, options): void | Promise<void> {\n\t\t\tassertActive();\n\t\t\treturn runtime.sendMessages(messages, options);\n\t\t},\n\n\t\tsendUserMessage(content, options): void {\n\t\t\tassertActive();\n\t\t\truntime.sendUserMessage(content, options);\n\t\t},\n\n\t\tappendEntry(customType: string, data?: unknown): void {\n\t\t\tassertActive();\n\t\t\truntime.appendEntry(customType, data);\n\t\t},\n\n\t\tsetSessionName(name: string): void {\n\t\t\tassertActive();\n\t\t\truntime.setSessionName(name);\n\t\t},\n\n\t\tgetSessionName(): string | undefined {\n\t\t\tassertActive(true);\n\t\t\treturn runtime.getSessionName();\n\t\t},\n\n\t\tsetLabel(entryId: string, label: string | undefined): void {\n\t\t\tassertActive();\n\t\t\truntime.setLabel(entryId, label);\n\t\t},\n\n\t\texec(command: string, args: string[], options?: ExecOptions) {\n\t\t\tassertActive();\n\t\t\treturn trackAPIWork(() => execCommand(command, args, options?.cwd ?? cwd, options));\n\t\t},\n\n\t\tgetActiveTools(): string[] {\n\t\t\tassertActive(true);\n\t\t\treturn runtime.getActiveToolsAfterRegistration?.(extension) ?? runtime.getActiveTools();\n\t\t},\n\n\t\tgetAllTools() {\n\t\t\tassertActive(true);\n\t\t\treturn runtime.getAllToolsAfterRegistration?.(extension) ?? runtime.getAllTools();\n\t\t},\n\n\t\tsetActiveTools(toolNames: string[]): void {\n\t\t\tassertActive();\n\t\t\tif (!runtime.setActiveToolsAfterRegistration?.(extension, toolNames)) runtime.setActiveTools(toolNames);\n\t\t},\n\n\t\tgetCommands() {\n\t\t\tassertActive(true);\n\t\t\treturn runtime.getCommandsAfterRegistration?.(extension) ?? runtime.getCommands();\n\t\t},\n\n\t\tsetModel(model) {\n\t\t\tassertActive();\n\t\t\treturn runtime.setModel(model);\n\t\t},\n\n\t\tgetThinkingLevel() {\n\t\t\tassertActive(true);\n\t\t\treturn runtime.getThinkingLevel();\n\t\t},\n\n\t\tsetThinkingLevel(level) {\n\t\t\tassertActive();\n\t\t\truntime.setThinkingLevel(level);\n\t\t},\n\n\t\tregisterProvider(nameOrProvider: string | Provider, config?: ProviderConfig) {\n\t\t\tassertActive();\n\t\t\tif (typeof nameOrProvider === \"string\") {\n\t\t\t\tif (!config) throw new Error(\"Provider config is required\");\n\t\t\t\tconst name = nameOrProvider;\n\t\t\t\tapplyRuntimeChange({\n\t\t\t\t\tapply: () => runtime.registerProvider(name, config, extension.path),\n\t\t\t\t\trollback: () => runtime.unregisterProvider(name, extension.path),\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst provider = nameOrProvider;\n\t\t\t\tapplyRuntimeChange({\n\t\t\t\t\tapply: () => runtime.registerProvider(provider, extension.path),\n\t\t\t\t\trollback: () => runtime.unregisterProvider(provider.id, extension.path),\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\tunregisterProvider(name: string) {\n\t\t\tassertActive();\n\t\t\tconst prior = runtime.pendingProviderRegistrations.filter((registration) =>\n\t\t\t\t\"provider\" in registration ? registration.provider.id === name : registration.name === name,\n\t\t\t);\n\t\t\tapplyRuntimeChange({\n\t\t\t\t// Explicit unregistration stays name-wide: its rollback below\n\t\t\t\t// restores every prior registration, so a narrower removal here\n\t\t\t\t// would re-register entries that were never taken away.\n\t\t\t\tapply: () => runtime.unregisterProvider(name),\n\t\t\t\trollback: () => {\n\t\t\t\t\tfor (const registration of prior) {\n\t\t\t\t\t\tif (\"provider\" in registration) {\n\t\t\t\t\t\t\truntime.registerProvider(registration.provider, registration.extensionPath);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\truntime.registerProvider(registration.name, registration.config, registration.extensionPath);\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},\n\n\t\tevents,\n\t} as ExtensionAPI;\n\n\treturn {\n\t\tapi,\n\t\tcommit: () => {\n\t\t\tif (state !== \"loading\") return;\n\t\t\tconst applied: Array<{ apply: () => void; rollback: () => void }> = [];\n\t\t\ttry {\n\t\t\t\tfor (const change of pendingRuntimeChanges) {\n\t\t\t\t\tchange.apply();\n\t\t\t\t\tapplied.push(change);\n\t\t\t\t}\n\t\t\t\tstate = \"active\";\n\t\t\t\tpendingRuntimeChanges.length = 0;\n\t\t\t\tloadingUnsubscribers.length = 0;\n\t\t\t} catch (error) {\n\t\t\t\tfor (const change of applied.reverse()) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tchange.rollback();\n\t\t\t\t\t} catch {\n\t\t\t\t\t\t// Best-effort undo of provider ops already applied in this commit.\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t\tdiscard: () => {\n\t\t\tif (state !== \"loading\") return;\n\t\t\tstate = \"failed\";\n\t\t\tconst failures: unknown[] = [];\n\t\t\tfor (const unsubscribe of loadingUnsubscribers) {\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\tpendingRuntimeChanges.length = 0;\n\t\t\tloadingUnsubscribers.length = 0;\n\t\t\truntime.flagValues = initialFlagValues;\n\t\t\truntime.flagOwners = initialFlagOwners;\n\t\t\truntime.flagOwnerOrigins = initialFlagOwnerOrigins;\n\t\t\tif (failures.length) throw new AggregateError(failures, \"Extension subscription rollback failed\");\n\t\t},\n\t};\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader-bindings.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/loader-bindings.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9D,KAAK,QAAQ,GAAG,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC;AAS9C,gGAAgG;AAChG,wBAAgB,4BAA4B,CAAC,CAAC,SAAS,QAAQ,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAE/E;AAED,UAAU,UAAU;IACnB,QAAQ,EAAE,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;IAClD,UAAU,EAAE,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACtC,SAAS,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;CACnC;AAOD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,gBAAgB,GAAG,gBAAgB,CAEpF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,GAAG,gBAAgB,CAS7E;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CASnE;
|
|
1
|
+
{"version":3,"file":"loader-bindings.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/loader-bindings.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9D,KAAK,QAAQ,GAAG,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC;AAS9C,gGAAgG;AAChG,wBAAgB,4BAA4B,CAAC,CAAC,SAAS,QAAQ,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAE/E;AAED,UAAU,UAAU;IACnB,QAAQ,EAAE,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;IAClD,UAAU,EAAE,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACtC,SAAS,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;CACnC;AAOD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,gBAAgB,GAAG,gBAAgB,CAEpF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,GAAG,gBAAgB,CAS7E;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CASnE;AAYD,yFAAyF;AACzF,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,QAAQ,GAAG,CAAC,CASxF;AAED,eAAO,MAAM,kBAAkB,YAC9B,UAAU,EACV,OAAO,EACP,UAAU,EACV,OAAO,EACP,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,CACZ,CAAC;AAEX,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAcvE;AAED,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,gBAAgB,EAAE,OAAO,EAAE,gBAAgB,GAAG,UAAU,CAE/G;AAED,gGAAgG;AAChG,wBAAgB,qBAAqB,CACpC,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,OAAO,EACjB,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,UAAU,GAClB,OAAO,CAyCT;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,GAAG,IAAI,CAY1F;AAED,4FAA4F;AAC5F,wBAAgB,6BAA6B,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,aAAa,EAAE,gBAAgB,GAAG,CAAC,CAQ7F"}
|
|
@@ -36,6 +36,15 @@ export function invocationExtension(extension) {
|
|
|
36
36
|
},
|
|
37
37
|
});
|
|
38
38
|
}
|
|
39
|
+
/** Rebuild a plain object, keeping each own key's enumerability (TypeBox hides `~kind` from JSON this way). */
|
|
40
|
+
function mapOwnProperties(source, map) {
|
|
41
|
+
const target = {};
|
|
42
|
+
for (const key of Reflect.ownKeys(source)) {
|
|
43
|
+
const { enumerable } = Reflect.getOwnPropertyDescriptor(source, key);
|
|
44
|
+
Object.defineProperty(target, key, { value: map(key), enumerable, writable: true, configurable: true });
|
|
45
|
+
}
|
|
46
|
+
return target;
|
|
47
|
+
}
|
|
39
48
|
/** Snapshot registration containers, retaining opaque values and function identities. */
|
|
40
49
|
export function copyRegistrations(value, functions) {
|
|
41
50
|
if (typeof value === "function")
|
|
@@ -45,7 +54,7 @@ export function copyRegistrations(value, functions) {
|
|
|
45
54
|
if (Array.isArray(value))
|
|
46
55
|
return value.map((item) => copyRegistrations(item, functions));
|
|
47
56
|
if (value && typeof value === "object" && Object.getPrototypeOf(value) === Object.prototype) {
|
|
48
|
-
return
|
|
57
|
+
return mapOwnProperties(value, (key) => copyRegistrations(Reflect.get(value, key), functions));
|
|
49
58
|
}
|
|
50
59
|
return value;
|
|
51
60
|
}
|
|
@@ -100,12 +109,9 @@ export function reconcileRegistration(source, baseline, fresh, bindings) {
|
|
|
100
109
|
typeof fresh === "object" &&
|
|
101
110
|
Object.getPrototypeOf(source) === Object.prototype &&
|
|
102
111
|
Object.getPrototypeOf(baseline) === Object.prototype) {
|
|
103
|
-
return
|
|
104
|
-
key,
|
|
105
|
-
|
|
106
|
-
? reconcileRegistration(Reflect.get(source, key), Reflect.get(baseline, key), Reflect.get(fresh, key), bindings)
|
|
107
|
-
: Reflect.get(source, key),
|
|
108
|
-
]));
|
|
112
|
+
return mapOwnProperties(source, (key) => Object.hasOwn(baseline, key)
|
|
113
|
+
? reconcileRegistration(Reflect.get(source, key), Reflect.get(baseline, key), Reflect.get(fresh, key), bindings)
|
|
114
|
+
: Reflect.get(source, key));
|
|
109
115
|
}
|
|
110
116
|
return source;
|
|
111
117
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader-bindings.js","sourceRoot":"","sources":["../../../src/core/extensions/loader-bindings.ts"],"names":[],"mappings":"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","sourcesContent":["import { AsyncLocalStorage } from \"node:async_hooks\";\nimport type { Extension, ExtensionRuntime } from \"./types.ts\";\n\ntype Callback = (...args: never[]) => unknown;\n\nconst originalCallbacks = new WeakMap<Callback, Callback>();\n\nfunction retainCallbackIdentity(wrapped: Callback, original: Callback): Callback {\n\toriginalCallbacks.set(wrapped, originalCallbacks.get(original) ?? original);\n\treturn wrapped;\n}\n\n/** Inspection returns the authored callback; hosts invoke its owned registration separately. */\nexport function originalRegistrationCallback<T extends Callback>(callback: T): T {\n\treturn (originalCallbacks.get(callback) ?? callback) as T;\n}\n\ninterface Invocation {\n\truntimes: Map<ExtensionRuntime, ExtensionRuntime>;\n\textensions: Map<Extension, Extension>;\n\tcallbacks: Map<Callback, Callback>;\n}\n// Built/source loaders can coexist. This is invocation context, not a session cache.\nconst key = Symbol.for(\"atomic.extension-invocation.v1\");\nconst host = globalThis as typeof globalThis & { [key]?: AsyncLocalStorage<Invocation> };\nhost[key] ??= new AsyncLocalStorage<Invocation>();\nconst invocation = host[key];\n\nexport function resolveInvocationRuntime(runtime: ExtensionRuntime): ExtensionRuntime {\n\treturn invocation.getStore()?.runtimes.get(runtime) ?? runtime;\n}\n\nexport function invocationRuntime(runtime: ExtensionRuntime): ExtensionRuntime {\n\treturn new Proxy(runtime, {\n\t\tget(target, key) {\n\t\t\treturn Reflect.get(invocation.getStore()?.runtimes.get(target) ?? target, key);\n\t\t},\n\t\tset(target, key, value) {\n\t\t\treturn Reflect.set(invocation.getStore()?.runtimes.get(target) ?? target, key, value);\n\t\t},\n\t});\n}\n\nexport function invocationExtension(extension: Extension): Extension {\n\treturn new Proxy(extension, {\n\t\tget(target, key) {\n\t\t\treturn Reflect.get(invocation.getStore()?.extensions.get(target) ?? target, key);\n\t\t},\n\t\tset(target, key, value) {\n\t\t\treturn Reflect.set(invocation.getStore()?.extensions.get(target) ?? target, key, value);\n\t\t},\n\t});\n}\n\n/** Snapshot registration containers, retaining opaque values and function identities. */\nexport function copyRegistrations<T>(value: T, functions?: (fn: Callback) => Callback): T {\n\tif (typeof value === \"function\") return (functions ? functions(value as Callback) : value) as T;\n\tif (value instanceof Map)\n\t\treturn new Map([...value].map(([key, item]) => [key, copyRegistrations(item, functions)])) as T;\n\tif (Array.isArray(value)) return value.map((item) => copyRegistrations(item, functions)) as T;\n\tif (value && typeof value === \"object\" && Object.getPrototypeOf(value) === Object.prototype) {\n\t\treturn Object.fromEntries(\n\t\t\tReflect.ownKeys(value).map((key) => [key, copyRegistrations(Reflect.get(value, key), functions)]),\n\t\t) as T;\n\t}\n\treturn value;\n}\n\nexport const registrationFields = [\n\t\"handlers\",\n\t\"tools\",\n\t\"commands\",\n\t\"flags\",\n\t\"shortcuts\",\n\t\"messageRenderers\",\n\t\"entryRenderers\",\n\t\"markdownTransformer\",\n] as const;\n\nexport function prepareRegistrationCallbacks(extension: Extension): void {\n\tfor (const key of registrationFields) {\n\t\tReflect.set(\n\t\t\textension,\n\t\t\tkey,\n\t\t\tcopyRegistrations(extension[key], (fn) => {\n\t\t\t\tconst wrapped = function (this: unknown, ...args: unknown[]) {\n\t\t\t\t\tconst replacement = invocation.getStore()?.callbacks.get(wrapped);\n\t\t\t\t\treturn Reflect.apply(replacement ?? fn, this, args);\n\t\t\t\t};\n\t\t\t\treturn retainCallbackIdentity(wrapped, fn);\n\t\t\t}),\n\t\t);\n\t}\n}\n\nexport function createInvocationBindings(sourceRuntime: ExtensionRuntime, runtime: ExtensionRuntime): Invocation {\n\treturn { runtimes: new Map([[sourceRuntime, runtime]]), extensions: new Map(), callbacks: new Map() };\n}\n\n/** Three-way registration merge: replay unchanged factory state, preserve every caller edit. */\nexport function reconcileRegistration(\n\tsource: unknown,\n\tbaseline: unknown,\n\tfresh: unknown,\n\tbindings: Invocation,\n): unknown {\n\tif (typeof baseline === \"function\" && typeof fresh === \"function\")\n\t\tbindings.callbacks.set(baseline as Callback, fresh as Callback);\n\tif (source === baseline) return fresh;\n\tif (source instanceof Map && baseline instanceof Map && fresh instanceof Map) {\n\t\treturn new Map(\n\t\t\t[...source].map(([key, value]) => [\n\t\t\t\tkey,\n\t\t\t\tbaseline.has(key) ? reconcileRegistration(value, baseline.get(key), fresh.get(key), bindings) : value,\n\t\t\t]),\n\t\t);\n\t}\n\tif (Array.isArray(source) && Array.isArray(baseline) && Array.isArray(fresh)) {\n\t\treturn source.map((value, index) => {\n\t\t\tconst originalIndex = baseline.indexOf(value);\n\t\t\tconst slot = originalIndex < 0 ? index : originalIndex;\n\t\t\treturn reconcileRegistration(value, baseline[slot], fresh[slot], bindings);\n\t\t});\n\t}\n\tif (\n\t\tsource &&\n\t\tbaseline &&\n\t\tfresh &&\n\t\ttypeof source === \"object\" &&\n\t\ttypeof baseline === \"object\" &&\n\t\ttypeof fresh === \"object\" &&\n\t\tObject.getPrototypeOf(source) === Object.prototype &&\n\t\tObject.getPrototypeOf(baseline) === Object.prototype\n\t) {\n\t\treturn Object.fromEntries(\n\t\t\tReflect.ownKeys(source).map((key) => [\n\t\t\t\tkey,\n\t\t\t\tObject.hasOwn(baseline, key)\n\t\t\t\t\t? reconcileRegistration(\n\t\t\t\t\t\t\tReflect.get(source, key),\n\t\t\t\t\t\t\tReflect.get(baseline, key),\n\t\t\t\t\t\t\tReflect.get(fresh, key),\n\t\t\t\t\t\t\tbindings,\n\t\t\t\t\t\t)\n\t\t\t\t\t: Reflect.get(source, key),\n\t\t\t]),\n\t\t);\n\t}\n\treturn source;\n}\n\nexport function bindRegistrationCallbacks(extension: Extension, bindings: Invocation): void {\n\tfor (const key of registrationFields) {\n\t\tReflect.set(\n\t\t\textension,\n\t\t\tkey,\n\t\t\tcopyRegistrations(extension[key], (fn) =>\n\t\t\t\tretainCallbackIdentity(function (this: unknown, ...args: unknown[]) {\n\t\t\t\t\treturn invocation.run(bindings, () => Reflect.apply(fn, this, args));\n\t\t\t\t}, fn),\n\t\t\t),\n\t\t);\n\t}\n}\n\n/** Registrations made by copied APIs retain the registering invocation after it returns. */\nexport function captureRegistrationInvocation<T>(value: T, sourceRuntime: ExtensionRuntime): T {\n\tconst bindings = invocation.getStore();\n\tif (!bindings?.runtimes.has(sourceRuntime)) return value;\n\treturn copyRegistrations(value, (fn) =>\n\t\tretainCallbackIdentity(function (this: unknown, ...args: unknown[]) {\n\t\t\treturn invocation.run(bindings, () => Reflect.apply(fn, this, args));\n\t\t}, fn),\n\t);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"loader-bindings.js","sourceRoot":"","sources":["../../../src/core/extensions/loader-bindings.ts"],"names":[],"mappings":"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","sourcesContent":["import { AsyncLocalStorage } from \"node:async_hooks\";\nimport type { Extension, ExtensionRuntime } from \"./types.ts\";\n\ntype Callback = (...args: never[]) => unknown;\n\nconst originalCallbacks = new WeakMap<Callback, Callback>();\n\nfunction retainCallbackIdentity(wrapped: Callback, original: Callback): Callback {\n\toriginalCallbacks.set(wrapped, originalCallbacks.get(original) ?? original);\n\treturn wrapped;\n}\n\n/** Inspection returns the authored callback; hosts invoke its owned registration separately. */\nexport function originalRegistrationCallback<T extends Callback>(callback: T): T {\n\treturn (originalCallbacks.get(callback) ?? callback) as T;\n}\n\ninterface Invocation {\n\truntimes: Map<ExtensionRuntime, ExtensionRuntime>;\n\textensions: Map<Extension, Extension>;\n\tcallbacks: Map<Callback, Callback>;\n}\n// Built/source loaders can coexist. This is invocation context, not a session cache.\nconst key = Symbol.for(\"atomic.extension-invocation.v1\");\nconst host = globalThis as typeof globalThis & { [key]?: AsyncLocalStorage<Invocation> };\nhost[key] ??= new AsyncLocalStorage<Invocation>();\nconst invocation = host[key];\n\nexport function resolveInvocationRuntime(runtime: ExtensionRuntime): ExtensionRuntime {\n\treturn invocation.getStore()?.runtimes.get(runtime) ?? runtime;\n}\n\nexport function invocationRuntime(runtime: ExtensionRuntime): ExtensionRuntime {\n\treturn new Proxy(runtime, {\n\t\tget(target, key) {\n\t\t\treturn Reflect.get(invocation.getStore()?.runtimes.get(target) ?? target, key);\n\t\t},\n\t\tset(target, key, value) {\n\t\t\treturn Reflect.set(invocation.getStore()?.runtimes.get(target) ?? target, key, value);\n\t\t},\n\t});\n}\n\nexport function invocationExtension(extension: Extension): Extension {\n\treturn new Proxy(extension, {\n\t\tget(target, key) {\n\t\t\treturn Reflect.get(invocation.getStore()?.extensions.get(target) ?? target, key);\n\t\t},\n\t\tset(target, key, value) {\n\t\t\treturn Reflect.set(invocation.getStore()?.extensions.get(target) ?? target, key, value);\n\t\t},\n\t});\n}\n\n/** Rebuild a plain object, keeping each own key's enumerability (TypeBox hides `~kind` from JSON this way). */\nfunction mapOwnProperties(source: object, map: (key: string | symbol) => unknown): object {\n\tconst target = {};\n\tfor (const key of Reflect.ownKeys(source)) {\n\t\tconst { enumerable } = Reflect.getOwnPropertyDescriptor(source, key)!;\n\t\tObject.defineProperty(target, key, { value: map(key), enumerable, writable: true, configurable: true });\n\t}\n\treturn target;\n}\n\n/** Snapshot registration containers, retaining opaque values and function identities. */\nexport function copyRegistrations<T>(value: T, functions?: (fn: Callback) => Callback): T {\n\tif (typeof value === \"function\") return (functions ? functions(value as Callback) : value) as T;\n\tif (value instanceof Map)\n\t\treturn new Map([...value].map(([key, item]) => [key, copyRegistrations(item, functions)])) as T;\n\tif (Array.isArray(value)) return value.map((item) => copyRegistrations(item, functions)) as T;\n\tif (value && typeof value === \"object\" && Object.getPrototypeOf(value) === Object.prototype) {\n\t\treturn mapOwnProperties(value, (key) => copyRegistrations(Reflect.get(value, key), functions)) as T;\n\t}\n\treturn value;\n}\n\nexport const registrationFields = [\n\t\"handlers\",\n\t\"tools\",\n\t\"commands\",\n\t\"flags\",\n\t\"shortcuts\",\n\t\"messageRenderers\",\n\t\"entryRenderers\",\n\t\"markdownTransformer\",\n] as const;\n\nexport function prepareRegistrationCallbacks(extension: Extension): void {\n\tfor (const key of registrationFields) {\n\t\tReflect.set(\n\t\t\textension,\n\t\t\tkey,\n\t\t\tcopyRegistrations(extension[key], (fn) => {\n\t\t\t\tconst wrapped = function (this: unknown, ...args: unknown[]) {\n\t\t\t\t\tconst replacement = invocation.getStore()?.callbacks.get(wrapped);\n\t\t\t\t\treturn Reflect.apply(replacement ?? fn, this, args);\n\t\t\t\t};\n\t\t\t\treturn retainCallbackIdentity(wrapped, fn);\n\t\t\t}),\n\t\t);\n\t}\n}\n\nexport function createInvocationBindings(sourceRuntime: ExtensionRuntime, runtime: ExtensionRuntime): Invocation {\n\treturn { runtimes: new Map([[sourceRuntime, runtime]]), extensions: new Map(), callbacks: new Map() };\n}\n\n/** Three-way registration merge: replay unchanged factory state, preserve every caller edit. */\nexport function reconcileRegistration(\n\tsource: unknown,\n\tbaseline: unknown,\n\tfresh: unknown,\n\tbindings: Invocation,\n): unknown {\n\tif (typeof baseline === \"function\" && typeof fresh === \"function\")\n\t\tbindings.callbacks.set(baseline as Callback, fresh as Callback);\n\tif (source === baseline) return fresh;\n\tif (source instanceof Map && baseline instanceof Map && fresh instanceof Map) {\n\t\treturn new Map(\n\t\t\t[...source].map(([key, value]) => [\n\t\t\t\tkey,\n\t\t\t\tbaseline.has(key) ? reconcileRegistration(value, baseline.get(key), fresh.get(key), bindings) : value,\n\t\t\t]),\n\t\t);\n\t}\n\tif (Array.isArray(source) && Array.isArray(baseline) && Array.isArray(fresh)) {\n\t\treturn source.map((value, index) => {\n\t\t\tconst originalIndex = baseline.indexOf(value);\n\t\t\tconst slot = originalIndex < 0 ? index : originalIndex;\n\t\t\treturn reconcileRegistration(value, baseline[slot], fresh[slot], bindings);\n\t\t});\n\t}\n\tif (\n\t\tsource &&\n\t\tbaseline &&\n\t\tfresh &&\n\t\ttypeof source === \"object\" &&\n\t\ttypeof baseline === \"object\" &&\n\t\ttypeof fresh === \"object\" &&\n\t\tObject.getPrototypeOf(source) === Object.prototype &&\n\t\tObject.getPrototypeOf(baseline) === Object.prototype\n\t) {\n\t\treturn mapOwnProperties(source, (key) =>\n\t\t\tObject.hasOwn(baseline, key)\n\t\t\t\t? reconcileRegistration(\n\t\t\t\t\t\tReflect.get(source, key),\n\t\t\t\t\t\tReflect.get(baseline, key),\n\t\t\t\t\t\tReflect.get(fresh, key),\n\t\t\t\t\t\tbindings,\n\t\t\t\t\t)\n\t\t\t\t: Reflect.get(source, key),\n\t\t);\n\t}\n\treturn source;\n}\n\nexport function bindRegistrationCallbacks(extension: Extension, bindings: Invocation): void {\n\tfor (const key of registrationFields) {\n\t\tReflect.set(\n\t\t\textension,\n\t\t\tkey,\n\t\t\tcopyRegistrations(extension[key], (fn) =>\n\t\t\t\tretainCallbackIdentity(function (this: unknown, ...args: unknown[]) {\n\t\t\t\t\treturn invocation.run(bindings, () => Reflect.apply(fn, this, args));\n\t\t\t\t}, fn),\n\t\t\t),\n\t\t);\n\t}\n}\n\n/** Registrations made by copied APIs retain the registering invocation after it returns. */\nexport function captureRegistrationInvocation<T>(value: T, sourceRuntime: ExtensionRuntime): T {\n\tconst bindings = invocation.getStore();\n\tif (!bindings?.runtimes.has(sourceRuntime)) return value;\n\treturn copyRegistrations(value, (fn) =>\n\t\tretainCallbackIdentity(function (this: unknown, ...args: unknown[]) {\n\t\t\treturn invocation.run(bindings, () => Reflect.apply(fn, this, args));\n\t\t}, fn),\n\t);\n}\n"]}
|