@bastani/atomic 0.9.21-alpha.1 → 0.9.21
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 +56 -0
- package/dist/builtin/intercom/package.json +1 -1
- package/dist/builtin/mcp/package.json +1 -1
- package/dist/builtin/subagents/CHANGELOG.md +22 -0
- package/dist/builtin/subagents/package.json +1 -1
- package/dist/builtin/subagents/src/extension/index.bundle.mjs +292 -60
- package/dist/builtin/web-access/package.json +1 -1
- package/dist/builtin/workflows/CHANGELOG.md +23 -0
- package/dist/builtin/workflows/builtin/adversarial-verification.js +3 -3
- package/dist/builtin/workflows/builtin/{chunk-cw86srkf.js → chunk-632fxeb8.js} +1 -1
- package/dist/builtin/workflows/builtin/{chunk-w18kbz63.js → chunk-94f8zfz1.js} +1 -1
- package/dist/builtin/workflows/builtin/{chunk-kspvwc24.js → chunk-9cm2ckq2.js} +1 -1
- package/dist/builtin/workflows/builtin/{chunk-jaj27rqc.js → chunk-a1ar035d.js} +1 -1
- package/dist/builtin/workflows/builtin/{chunk-wh19f5ee.js → chunk-d3xhj946.js} +5 -4
- package/dist/builtin/workflows/builtin/{chunk-crw7q5g1.js → chunk-gyjck9z8.js} +1 -1
- package/dist/builtin/workflows/builtin/{chunk-maqv731g.js → chunk-hj8mh07f.js} +10 -6
- package/dist/builtin/workflows/builtin/{chunk-0nrgfbag.js → chunk-kb7s3gx2.js} +1 -1
- package/dist/builtin/workflows/builtin/{chunk-73c5tayt.js → chunk-kgn5wz1c.js} +19 -1
- package/dist/builtin/workflows/builtin/{chunk-2hak3b7g.js → chunk-nkj4qhj6.js} +1 -1
- package/dist/builtin/workflows/builtin/{chunk-bzdvx2xr.js → chunk-r97ndfvt.js} +1 -1
- package/dist/builtin/workflows/builtin/{chunk-vkmpdat4.js → chunk-wf876n16.js} +1 -1
- package/dist/builtin/workflows/builtin/classify-and-act.js +3 -3
- package/dist/builtin/workflows/builtin/fan-out-and-synthesize.js +3 -3
- package/dist/builtin/workflows/builtin/generate-and-filter.js +3 -3
- package/dist/builtin/workflows/builtin/goal.js +4 -4
- package/dist/builtin/workflows/builtin/index.js +12 -12
- package/dist/builtin/workflows/builtin/loop-until-done.js +3 -3
- package/dist/builtin/workflows/builtin/open-claude-design.js +3 -3
- package/dist/builtin/workflows/builtin/ralph.js +4 -4
- package/dist/builtin/workflows/builtin/steering-context.js +1 -1
- package/dist/builtin/workflows/builtin/tournament.js +3 -3
- package/dist/builtin/workflows/package.json +1 -1
- package/dist/builtin/workflows/src/extension/index.bundle.mjs +40 -11
- package/dist/builtin/workflows/src/index.js +9 -3
- package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +6 -1
- package/dist/cli/auth-command.js +5 -0
- package/dist/cli/auth-command.js.map +1 -1
- package/dist/cli/credential-print.js +2 -0
- package/dist/cli/credential-print.js.map +1 -1
- package/dist/cli/experimental/command.js +5 -2
- package/dist/cli/experimental/command.js.map +1 -1
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +4 -4
- package/dist/config.js +4 -4
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
- package/dist/core/agent-session-extension-bindings.js +9 -4
- package/dist/core/agent-session-extension-bindings.js.map +1 -1
- package/dist/core/agent-session-methods.d.ts +4 -4
- package/dist/core/agent-session-methods.d.ts.map +1 -1
- package/dist/core/agent-session-methods.js.map +1 -1
- package/dist/core/agent-session-prompt.d.ts +4 -4
- package/dist/core/agent-session-prompt.d.ts.map +1 -1
- package/dist/core/agent-session-prompt.js +38 -15
- package/dist/core/agent-session-prompt.js.map +1 -1
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +14 -9
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session-types.d.ts +4 -1
- package/dist/core/agent-session-types.d.ts.map +1 -1
- package/dist/core/agent-session-types.js.map +1 -1
- package/dist/core/agent-session.d.ts +1 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +140 -95
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-storage-backends.js +2 -3
- package/dist/core/auth-storage-backends.js.map +1 -1
- package/dist/core/auth-storage.js +4 -1
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/builtin-resource-loader.js +9 -0
- package/dist/core/builtin-resource-loader.js.map +1 -1
- package/dist/core/cache-warmer.js +8 -1
- package/dist/core/cache-warmer.js.map +1 -1
- package/dist/core/compaction/range-planner.js +6 -0
- package/dist/core/compaction/range-planner.js.map +1 -1
- package/dist/core/execution-model-router.d.ts +13 -3
- package/dist/core/execution-model-router.d.ts.map +1 -1
- package/dist/core/execution-model-router.js +227 -131
- package/dist/core/execution-model-router.js.map +1 -1
- package/dist/core/export-html/template-js/entries-navigation.js +16 -6
- package/dist/core/export-html/template-js/initialization.js +34 -11
- package/dist/core/export-html/template.css +10 -0
- package/dist/core/export-html/template.js +50 -17
- package/dist/core/extensions/context-types.d.ts +2 -0
- package/dist/core/extensions/context-types.d.ts.map +1 -1
- package/dist/core/extensions/context-types.js.map +1 -1
- package/dist/core/extensions/host-input.js +8 -4
- package/dist/core/extensions/host-input.js.map +1 -1
- package/dist/core/extensions/reactive-widget.js +1 -0
- package/dist/core/extensions/reactive-widget.js.map +1 -1
- package/dist/core/extensions/runner-context.d.ts +1 -0
- package/dist/core/extensions/runner-context.d.ts.map +1 -1
- package/dist/core/extensions/runner-context.js +4 -0
- package/dist/core/extensions/runner-context.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +1 -0
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +48 -30
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/runtime-types.d.ts +1 -0
- package/dist/core/extensions/runtime-types.d.ts.map +1 -1
- package/dist/core/extensions/runtime-types.js.map +1 -1
- package/dist/core/extensions/workflow-activity-hub.js +9 -7
- package/dist/core/extensions/workflow-activity-hub.js.map +1 -1
- package/dist/core/footer-data-provider.js +24 -23
- package/dist/core/footer-data-provider.js.map +1 -1
- package/dist/core/keybindings.js +1 -0
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/mandatory-resource-loader.js +4 -1
- package/dist/core/mandatory-resource-loader.js.map +1 -1
- package/dist/core/model-config.js +2 -0
- package/dist/core/model-config.js.map +1 -1
- package/dist/core/model-registry.js +1 -0
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver-defaults.js +1 -1
- package/dist/core/model-resolver-defaults.js.map +1 -1
- package/dist/core/{model-routing-task.d.ts → model-routing-bytes.d.ts} +1 -4
- package/dist/core/model-routing-bytes.d.ts.map +1 -0
- package/dist/core/model-routing-bytes.js +33 -0
- package/dist/core/model-routing-bytes.js.map +1 -0
- package/dist/core/model-routing-candidates.d.ts +42 -0
- package/dist/core/model-routing-candidates.d.ts.map +1 -0
- package/dist/core/model-routing-candidates.js +309 -0
- package/dist/core/model-routing-candidates.js.map +1 -0
- package/dist/core/model-routing-constraints.d.ts +4 -0
- package/dist/core/model-routing-constraints.d.ts.map +1 -1
- package/dist/core/model-routing-constraints.js +13 -1
- package/dist/core/model-routing-constraints.js.map +1 -1
- package/dist/core/model-routing-debug.d.ts +9 -0
- package/dist/core/model-routing-debug.d.ts.map +1 -0
- package/dist/core/model-routing-debug.js +14 -0
- package/dist/core/model-routing-debug.js.map +1 -0
- package/dist/core/model-routing-evals.d.ts +50 -0
- package/dist/core/model-routing-evals.d.ts.map +1 -0
- package/dist/core/model-routing-evals.js +190 -0
- package/dist/core/model-routing-evals.js.map +1 -0
- package/dist/core/model-routing-needs.d.ts +75 -0
- package/dist/core/model-routing-needs.d.ts.map +1 -0
- package/dist/core/model-routing-needs.js +176 -0
- package/dist/core/model-routing-needs.js.map +1 -0
- package/dist/core/model-runtime-streaming.js +3 -0
- package/dist/core/model-runtime-streaming.js.map +1 -1
- package/dist/core/model-runtime.js +26 -14
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/models-store.js +2 -3
- package/dist/core/models-store.js.map +1 -1
- package/dist/core/output-guard.js +1 -0
- package/dist/core/output-guard.js.map +1 -1
- package/dist/core/package-manager-paths.d.ts +2 -1
- package/dist/core/package-manager-paths.d.ts.map +1 -1
- package/dist/core/package-manager-paths.js +4 -3
- package/dist/core/package-manager-paths.js.map +1 -1
- package/dist/core/package-manager.js +1 -0
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/resource-loader-assets.d.ts.map +1 -1
- package/dist/core/resource-loader-assets.js +9 -7
- package/dist/core/resource-loader-assets.js.map +1 -1
- package/dist/core/resource-loader-core.js +49 -0
- package/dist/core/resource-loader-core.js.map +1 -1
- package/dist/core/runtime-credentials.js +2 -1
- package/dist/core/runtime-credentials.js.map +1 -1
- package/dist/core/session-cwd.js +1 -0
- package/dist/core/session-cwd.js.map +1 -1
- package/dist/core/session-manager-archive.d.ts.map +1 -1
- package/dist/core/session-manager-archive.js +4 -2
- package/dist/core/session-manager-archive.js.map +1 -1
- package/dist/core/session-manager-core.js +11 -7
- package/dist/core/session-manager-core.js.map +1 -1
- package/dist/core/session-manager-storage.d.ts +10 -4
- package/dist/core/session-manager-storage.d.ts.map +1 -1
- package/dist/core/session-manager-storage.js +12 -6
- package/dist/core/session-manager-storage.js.map +1 -1
- package/dist/core/settings-manager-basic-accessors.d.ts +2 -1
- package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
- package/dist/core/settings-manager-basic-accessors.js +21 -0
- package/dist/core/settings-manager-basic-accessors.js.map +1 -1
- package/dist/core/settings-manager-core.js +13 -7
- package/dist/core/settings-manager-core.js.map +1 -1
- package/dist/core/settings-manager.d.ts +1 -1
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/settings-storage.js +6 -0
- package/dist/core/settings-storage.js.map +1 -1
- package/dist/core/settings-types.d.ts +8 -0
- package/dist/core/settings-types.d.ts.map +1 -1
- package/dist/core/settings-types.js.map +1 -1
- package/dist/core/structured-output/index.d.ts.map +1 -1
- package/dist/core/structured-output/index.js +4 -1
- package/dist/core/structured-output/index.js.map +1 -1
- package/dist/core/structured-output/invalid-output.js +1 -0
- package/dist/core/structured-output/invalid-output.js.map +1 -1
- package/dist/core/tasks/agent-adapter.js +5 -3
- package/dist/core/tasks/agent-adapter.js.map +1 -1
- package/dist/core/tasks/child-command-owner.js +3 -7
- package/dist/core/tasks/child-command-owner.js.map +1 -1
- package/dist/core/tasks/completion.js +5 -1
- package/dist/core/tasks/completion.js.map +1 -1
- package/dist/core/tasks/owner-store.js +12 -8
- package/dist/core/tasks/owner-store.js.map +1 -1
- package/dist/core/tasks/supervisor.js +14 -35
- package/dist/core/tasks/supervisor.js.map +1 -1
- package/dist/core/tools/ask-user-question/state/build-questionnaire.js +13 -4
- package/dist/core/tools/ask-user-question/state/build-questionnaire.js.map +1 -1
- package/dist/core/tools/ask-user-question/state/questionnaire-session.js +11 -1
- package/dist/core/tools/ask-user-question/state/questionnaire-session.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/chat-row-view.js +1 -0
- package/dist/core/tools/ask-user-question/view/components/chat-row-view.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/multi-select-view.js +1 -0
- package/dist/core/tools/ask-user-question/view/components/multi-select-view.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/option-list-view.js +1 -0
- package/dist/core/tools/ask-user-question/view/components/option-list-view.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/preview/markdown-content-cache.js +5 -0
- package/dist/core/tools/ask-user-question/view/components/preview/markdown-content-cache.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.js +2 -0
- package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/preview/preview-pane.js +13 -8
- package/dist/core/tools/ask-user-question/view/components/preview/preview-pane.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/submit-picker.js +1 -0
- package/dist/core/tools/ask-user-question/view/components/submit-picker.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/tab-bar.js +1 -0
- package/dist/core/tools/ask-user-question/view/components/tab-bar.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/wrapping-select.js +30 -24
- package/dist/core/tools/ask-user-question/view/components/wrapping-select.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/dialog-builder.js +5 -0
- package/dist/core/tools/ask-user-question/view/dialog-builder.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/props-adapter.js +8 -0
- package/dist/core/tools/ask-user-question/view/props-adapter.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/tab-content-strategy.js +4 -4
- package/dist/core/tools/ask-user-question/view/tab-content-strategy.js.map +1 -1
- package/dist/core/tools/bash.js +5 -8
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/edit-batch.js +4 -0
- package/dist/core/tools/edit-batch.js.map +1 -1
- package/dist/core/tools/edit.js +2 -0
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/file-mutation-coordinator.js +9 -0
- package/dist/core/tools/file-mutation-coordinator.js.map +1 -1
- package/dist/core/tools/find.js +1 -1
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/hashline-engine/fs.js +1 -1
- package/dist/core/tools/hashline-engine/fs.js.map +1 -1
- package/dist/core/tools/hashline-engine/input.js +4 -0
- package/dist/core/tools/hashline-engine/input.js.map +1 -1
- package/dist/core/tools/hashline-engine/mismatch.js +6 -0
- package/dist/core/tools/hashline-engine/mismatch.js.map +1 -1
- package/dist/core/tools/hashline-engine/patcher.js +13 -0
- package/dist/core/tools/hashline-engine/patcher.js.map +1 -1
- package/dist/core/tools/hashline-engine/recovery.js +1 -0
- package/dist/core/tools/hashline-engine/recovery.js.map +1 -1
- package/dist/core/tools/output-accumulator.js +20 -13
- package/dist/core/tools/output-accumulator.js.map +1 -1
- package/dist/core/tools/persisted-output-file.js +9 -3
- package/dist/core/tools/persisted-output-file.js.map +1 -1
- package/dist/core/tools/resource-selectors.js +1 -0
- package/dist/core/tools/resource-selectors.js.map +1 -1
- package/dist/core/tools/write.js +1 -0
- package/dist/core/tools/write.js.map +1 -1
- package/dist/core/trust-manager.js +1 -0
- package/dist/core/trust-manager.js.map +1 -1
- package/dist/core/workflow-stage-admission.js +17 -10
- package/dist/core/workflow-stage-admission.js.map +1 -1
- package/dist/extensions/llama/client.js +2 -0
- package/dist/extensions/llama/client.js.map +1 -1
- package/dist/extensions/llama/huggingface-ui.js +17 -9
- package/dist/extensions/llama/huggingface-ui.js.map +1 -1
- package/dist/extensions/llama/huggingface.js +2 -0
- package/dist/extensions/llama/huggingface.js.map +1 -1
- package/dist/extensions/llama/ui.js +11 -3
- package/dist/extensions/llama/ui.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/modes/interactive/components/armin.js +10 -6
- package/dist/modes/interactive/components/armin.js.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js +10 -2
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/atomic-working-status.js +10 -2
- package/dist/modes/interactive/components/atomic-working-status.js.map +1 -1
- package/dist/modes/interactive/components/bash-execution.js +9 -4
- package/dist/modes/interactive/components/bash-execution.js.map +1 -1
- package/dist/modes/interactive/components/bordered-loader.js +3 -0
- package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.js +4 -1
- package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/chat-message-renderer.js +2 -1
- package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-state.js +63 -31
- package/dist/modes/interactive/components/chat-session-host-state.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host.js +8 -1
- package/dist/modes/interactive/components/chat-session-host.js.map +1 -1
- package/dist/modes/interactive/components/chat-transcript.js +24 -14
- package/dist/modes/interactive/components/chat-transcript.js.map +1 -1
- package/dist/modes/interactive/components/compaction-boundary-message.js +2 -1
- package/dist/modes/interactive/components/compaction-boundary-message.js.map +1 -1
- package/dist/modes/interactive/components/config-selector-list.js +15 -6
- package/dist/modes/interactive/components/config-selector-list.js.map +1 -1
- package/dist/modes/interactive/components/config-selector.js +7 -1
- package/dist/modes/interactive/components/config-selector.js.map +1 -1
- package/dist/modes/interactive/components/countdown-timer.js +2 -0
- package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
- package/dist/modes/interactive/components/custom-editor.js +21 -1
- package/dist/modes/interactive/components/custom-editor.js.map +1 -1
- package/dist/modes/interactive/components/custom-entry.js +4 -1
- package/dist/modes/interactive/components/custom-entry.js.map +1 -1
- package/dist/modes/interactive/components/custom-message.js +9 -1
- package/dist/modes/interactive/components/custom-message.js.map +1 -1
- package/dist/modes/interactive/components/daxnuts.js +8 -6
- package/dist/modes/interactive/components/daxnuts.js.map +1 -1
- package/dist/modes/interactive/components/dynamic-border.js +1 -0
- package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
- package/dist/modes/interactive/components/extension-editor.js +7 -1
- package/dist/modes/interactive/components/extension-editor.js.map +1 -1
- package/dist/modes/interactive/components/extension-input.js +8 -2
- package/dist/modes/interactive/components/extension-input.js.map +1 -1
- package/dist/modes/interactive/components/extension-selector.js +9 -1
- package/dist/modes/interactive/components/extension-selector.js.map +1 -1
- package/dist/modes/interactive/components/first-time-setup.js +4 -2
- package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
- package/dist/modes/interactive/components/footer.js +5 -2
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/host-input-form.js +13 -2
- package/dist/modes/interactive/components/host-input-form.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js +9 -3
- package/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +24 -12
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.js +12 -3
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
- package/dist/modes/interactive/components/reserved-bottom-overlay.js +11 -2
- package/dist/modes/interactive/components/reserved-bottom-overlay.js.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.js +13 -8
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
- package/dist/modes/interactive/components/scroll-widget.js +4 -0
- package/dist/modes/interactive/components/scroll-widget.js.map +1 -1
- package/dist/modes/interactive/components/session-selector-header.js +11 -7
- package/dist/modes/interactive/components/session-selector-header.js.map +1 -1
- package/dist/modes/interactive/components/session-selector-list.js +25 -12
- package/dist/modes/interactive/components/session-selector-list.js.map +1 -1
- package/dist/modes/interactive/components/session-selector.js +23 -15
- package/dist/modes/interactive/components/session-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-submenus.js +19 -1
- package/dist/modes/interactive/components/settings-selector-submenus.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +1 -0
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/show-images-selector.js +1 -0
- package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.js +4 -1
- package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
- package/dist/modes/interactive/components/startup-identity.js +8 -3
- package/dist/modes/interactive/components/startup-identity.js.map +1 -1
- package/dist/modes/interactive/components/task-completion-message.js +2 -0
- package/dist/modes/interactive/components/task-completion-message.js.map +1 -1
- package/dist/modes/interactive/components/task-detail.js +2 -0
- package/dist/modes/interactive/components/task-detail.js.map +1 -1
- package/dist/modes/interactive/components/task-inspector.js +22 -12
- package/dist/modes/interactive/components/task-inspector.js.map +1 -1
- package/dist/modes/interactive/components/task-list.js +2 -0
- package/dist/modes/interactive/components/task-list.js.map +1 -1
- package/dist/modes/interactive/components/task-live-transcript.js +8 -3
- package/dist/modes/interactive/components/task-live-transcript.js.map +1 -1
- package/dist/modes/interactive/components/task-navigation.js +5 -2
- package/dist/modes/interactive/components/task-navigation.js.map +1 -1
- package/dist/modes/interactive/components/task-row.js +2 -0
- package/dist/modes/interactive/components/task-row.js.map +1 -1
- package/dist/modes/interactive/components/theme-selector.js +2 -0
- package/dist/modes/interactive/components/theme-selector.js.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.js +7 -1
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +25 -10
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/components/transcript-follow-indicator.js +1 -0
- package/dist/modes/interactive/components/transcript-follow-indicator.js.map +1 -1
- package/dist/modes/interactive/components/tree-selector-component.js +7 -3
- package/dist/modes/interactive/components/tree-selector-component.js.map +1 -1
- package/dist/modes/interactive/components/tree-selector-help.js +1 -0
- package/dist/modes/interactive/components/tree-selector-help.js.map +1 -1
- package/dist/modes/interactive/components/tree-selector-label-input.js +6 -2
- package/dist/modes/interactive/components/tree-selector-label-input.js.map +1 -1
- package/dist/modes/interactive/components/tree-selector-list.js +4 -0
- package/dist/modes/interactive/components/tree-selector-list.js.map +1 -1
- package/dist/modes/interactive/components/trust-selector.js +6 -0
- package/dist/modes/interactive/components/trust-selector.js.map +1 -1
- package/dist/modes/interactive/components/user-message-selector.js +6 -3
- package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
- package/dist/modes/interactive/components/user-message.js +5 -0
- package/dist/modes/interactive/components/user-message.js.map +1 -1
- package/dist/modes/interactive/components/working-status.js +1 -0
- package/dist/modes/interactive/components/working-status.js.map +1 -1
- package/dist/modes/interactive/interactive-autocomplete.js +2 -0
- package/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
- package/dist/modes/interactive/interactive-extension-runtime.js +1 -0
- package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-base.js +162 -120
- package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-helpers.js +3 -0
- package/dist/modes/interactive/interactive-mode-helpers.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-surface.d.ts +0 -6
- package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
- package/dist/modes/interactive/interactive-resource-disclosure.js +0 -4
- package/dist/modes/interactive/interactive-resource-disclosure.js.map +1 -1
- package/dist/modes/interactive/interactive-resource-rendering.js +0 -12
- package/dist/modes/interactive/interactive-resource-rendering.js.map +1 -1
- package/dist/modes/interactive/interactive-startup-chat-container.js +1 -4
- package/dist/modes/interactive/interactive-startup-chat-container.js.map +1 -1
- package/dist/modes/interactive/model-catalog-refresh.js +1 -3
- package/dist/modes/interactive/model-catalog-refresh.js.map +1 -1
- package/dist/modes/interactive/theme/color-utils.d.ts +5 -0
- package/dist/modes/interactive/theme/color-utils.d.ts.map +1 -1
- package/dist/modes/interactive/theme/color-utils.js +11 -0
- package/dist/modes/interactive/theme/color-utils.js.map +1 -1
- package/dist/modes/interactive/theme/global-theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/global-theme.js +4 -3
- package/dist/modes/interactive/theme/global-theme.js.map +1 -1
- package/dist/modes/interactive/theme/theme-class.js +7 -0
- package/dist/modes/interactive/theme/theme-class.js.map +1 -1
- package/dist/modes/interactive/theme/theme-controller.js +9 -2
- package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
- package/dist/modes/interactive-engine/activity-watchdog.js +8 -3
- package/dist/modes/interactive-engine/activity-watchdog.js.map +1 -1
- package/dist/modes/interactive-engine/engine-custom-ui.js +12 -8
- package/dist/modes/interactive-engine/engine-custom-ui.js.map +1 -1
- package/dist/modes/interactive-engine/engine-dialog-host.js +7 -3
- package/dist/modes/interactive-engine/engine-dialog-host.js.map +1 -1
- package/dist/modes/interactive-engine/engine-health.js +23 -13
- package/dist/modes/interactive-engine/engine-health.js.map +1 -1
- package/dist/modes/interactive-engine/engine-input-form.js +3 -2
- package/dist/modes/interactive-engine/engine-input-form.js.map +1 -1
- package/dist/modes/interactive-engine/engine-monitor.js +13 -1
- package/dist/modes/interactive-engine/engine-monitor.js.map +1 -1
- package/dist/modes/interactive-engine/engine-project-trust.js +2 -1
- package/dist/modes/interactive-engine/engine-project-trust.js.map +1 -1
- package/dist/modes/interactive-engine/engine-render-service.js +7 -4
- package/dist/modes/interactive-engine/engine-render-service.js.map +1 -1
- package/dist/modes/interactive-engine/engine-session-picker.js +3 -2
- package/dist/modes/interactive-engine/engine-session-picker.js.map +1 -1
- package/dist/modes/interactive-engine/input-form-host.js +5 -1
- package/dist/modes/interactive-engine/input-form-host.js.map +1 -1
- package/dist/modes/interactive-engine/isolated-runtime.js +37 -23
- package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
- package/dist/modes/interactive-engine/remote-command-catalog.js +4 -3
- package/dist/modes/interactive-engine/remote-command-catalog.js.map +1 -1
- package/dist/modes/interactive-engine/remote-component.js +24 -12
- package/dist/modes/interactive-engine/remote-component.js.map +1 -1
- package/dist/modes/interactive-engine/remote-frame-clamp.js +3 -3
- package/dist/modes/interactive-engine/remote-frame-clamp.js.map +1 -1
- package/dist/modes/interactive-engine/remote-model-catalog.js +5 -4
- package/dist/modes/interactive-engine/remote-model-catalog.js.map +1 -1
- package/dist/modes/interactive-engine/remote-queue-pause.js +3 -1
- package/dist/modes/interactive-engine/remote-queue-pause.js.map +1 -1
- package/dist/modes/interactive-engine/remote-renderer.js +24 -13
- package/dist/modes/interactive-engine/remote-renderer.js.map +1 -1
- package/dist/modes/interactive-engine/resource-readiness-error.js +1 -0
- package/dist/modes/interactive-engine/resource-readiness-error.js.map +1 -1
- package/dist/modes/interactive-engine/session-picker-host.js +5 -1
- package/dist/modes/interactive-engine/session-picker-host.js.map +1 -1
- package/dist/modes/interactive-engine/terminal-mode-controller.js +2 -1
- package/dist/modes/interactive-engine/terminal-mode-controller.js.map +1 -1
- package/dist/modes/rpc/queued-writer.js +13 -4
- package/dist/modes/rpc/queued-writer.js.map +1 -1
- package/dist/modes/rpc/rpc-bash-request-owners.js +2 -1
- package/dist/modes/rpc/rpc-bash-request-owners.js.map +1 -1
- package/dist/modes/rpc/rpc-client-api.d.ts +8 -4
- package/dist/modes/rpc/rpc-client-api.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client-api.js +10 -3
- package/dist/modes/rpc/rpc-client-api.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +35 -22
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.js +6 -6
- package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
- package/dist/modes/rpc/rpc-event-buffer.js +3 -1
- package/dist/modes/rpc/rpc-event-buffer.js.map +1 -1
- package/dist/modes/rpc/rpc-generation-buffer.js +1 -3
- package/dist/modes/rpc/rpc-generation-buffer.js.map +1 -1
- package/dist/modes/rpc/rpc-keybindings-reload.js +4 -1
- package/dist/modes/rpc/rpc-keybindings-reload.js.map +1 -1
- package/dist/modes/rpc/rpc-output-buffer.js +3 -4
- package/dist/modes/rpc/rpc-output-buffer.js.map +1 -1
- package/dist/modes/rpc/rpc-pending-requests.js +1 -3
- package/dist/modes/rpc/rpc-pending-requests.js.map +1 -1
- package/dist/modes/rpc/rpc-provider-auth.js +3 -1
- package/dist/modes/rpc/rpc-provider-auth.js.map +1 -1
- package/dist/modes/rpc/rpc-resource-readiness.js +4 -5
- package/dist/modes/rpc/rpc-resource-readiness.js.map +1 -1
- package/dist/modes/rpc/rpc-session-binding.js +15 -0
- package/dist/modes/rpc/rpc-session-binding.js.map +1 -1
- package/dist/modes/rpc/rpc-terminal-drain.js +3 -0
- package/dist/modes/rpc/rpc-terminal-drain.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +10 -1
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/docs/models/evals.md +883 -39
- package/docs/models/model-selection.md +7 -8
- package/docs/rpc/examples.md +1 -1
- package/docs/rpc/protocol.md +9 -3
- package/docs/sdk/structured-decisions.md +1 -1
- package/docs/sdk.md +3 -3
- package/docs/settings.md +24 -3
- package/docs/subagents/reference.md +22 -4
- package/docs/subagents.md +2 -0
- package/docs/usage.md +3 -3
- package/docs/workflows/api-reference.md +1 -1
- package/docs/workflows/authoring.md +1 -7
- package/docs/workflows/builtins.md +1 -1
- package/docs/workflows/reliable-design.md +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/test.ts +5 -5
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/rpc-client.ts +1 -1
- package/examples/rpc-extension-ui.ts +1 -1
- package/npm-shrinkwrap.json +70 -33
- package/package.json +6 -7
- package/dist/core/model-routing-task.d.ts.map +0 -1
- package/dist/core/model-routing-task.js +0 -120
- package/dist/core/model-routing-task.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reactive-widget.js","sourceRoot":"","sources":["../../../src/core/extensions/reactive-widget.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ExtensionWidgetOptions } from \"./types.ts\";\nimport type { WidgetScrollRequest, WidgetScrollState } from \"./ui-types.js\";\n\nexport interface ReactiveWidgetComponent {\n\trender(width: number): string[];\n\tgetScrollRequest?(): WidgetScrollRequest | undefined;\n\tonScroll?(state: WidgetScrollState): void;\n\tinvalidate?(): void;\n\tdispose?(): void;\n}\n\nexport type ReactiveWidgetFactory<TTheme> = (tui: unknown, theme: TTheme) => ReactiveWidgetComponent;\n\nexport interface ReactiveWidgetUi<TTheme> {\n\tsetWidget(key: string, factory: ReactiveWidgetFactory<TTheme> | undefined, options?: ExtensionWidgetOptions): void;\n\trequestRender?: () => void;\n\tonWidgetRelease?: (key: string, listener: () => void) => () => void;\n}\n\nexport interface ReactiveWidgetTimerHandle {\n\tunref?: () => void;\n}\n\nexport interface ReactiveWidgetTimerApi {\n\tsetTimeout(handler: () => void, delayMs: number): ReactiveWidgetTimerHandle;\n\tclearTimeout(handle: ReactiveWidgetTimerHandle): void;\n}\n\nexport interface ReactiveWidgetScheduler {\n\tqueueMicrotask(handler: () => void): void;\n}\n\nexport type ReactiveWidgetAction = \"mount\" | \"unmount\" | \"update\" | \"none\";\nexport type ReactiveWidgetRefreshReason = \"initial\" | \"state\" | \"clock\" | \"manual\";\n\nexport interface ReactiveWidgetRenderState {\n\treadonly mounted: boolean;\n\treadonly lines: readonly string[];\n}\n\nexport interface ReactiveWidgetRenderContext<TTheme> {\n\ttheme: TTheme;\n\twidth: number;\n\tnow: number;\n}\n\nexport interface ReactiveWidgetController {\n\trefresh(reason?: ReactiveWidgetRefreshReason): void;\n\tdispose(): void;\n\tisMounted(): boolean;\n}\n\nexport interface ReactiveWidgetMountError {\n\treadonly cause: Error;\n\treadonly message: string;\n}\n\nexport interface InstallReactiveWidgetOptions<TSnapshot, TTheme> {\n\tui: ReactiveWidgetUi<TTheme>;\n\tkey: string;\n\tplacement?: ExtensionWidgetOptions[\"placement\"];\n\tscroll?: ExtensionWidgetOptions[\"scroll\"];\n\tgetScrollRequest?(): WidgetScrollRequest | undefined;\n\tonScroll?(state: WidgetScrollState): void;\n\tgetSnapshot(): TSnapshot;\n\tsubscribe?(listener: () => void): () => void;\n\tgetPreviewLines(snapshot: TSnapshot, now: number): readonly string[];\n\trender(snapshot: TSnapshot, context: ReactiveWidgetRenderContext<TTheme>): readonly string[];\n\tgetNextRefreshDelayMs?(snapshot: TSnapshot, now: number): number | undefined;\n\tnow?: () => number;\n\ttimers?: ReactiveWidgetTimerApi;\n\tscheduler?: ReactiveWidgetScheduler;\n\tcoalesceRenderRequests?: boolean;\n\trequestRenderOnMount?: boolean;\n\trequestRenderOnUnmount?: boolean;\n\trequestRenderOnStateNoop?: boolean;\n\tisStaleError?: (error: unknown) => boolean;\n\tonMountError?: (error: ReactiveWidgetMountError) => void;\n}\n\nconst defaultTimerApi: ReactiveWidgetTimerApi = {\n\tsetTimeout: (handler, delayMs) => setTimeout(handler, delayMs) as ReactiveWidgetTimerHandle,\n\tclearTimeout: (handle) => clearTimeout(handle as ReturnType<typeof setTimeout>),\n};\n\nconst defaultScheduler: ReactiveWidgetScheduler = {\n\tqueueMicrotask: (handler) => queueMicrotask(handler),\n};\n\nclass ReactiveWidgetMountReporterError extends Error {\n\treadonly reporterError: Error;\n\n\tconstructor(reporterError: Error) {\n\t\tsuper(reporterError.message);\n\t\tthis.reporterError = reporterError;\n\t}\n}\n\nfunction getRequestRenderFromHost(host: unknown): (() => void) | undefined {\n\tif (typeof host !== \"object\" || host === null) return undefined;\n\tconst candidate = (host as { requestRender?: unknown }).requestRender;\n\tif (typeof candidate !== \"function\") return undefined;\n\treturn () => candidate.call(host);\n}\n\nfunction linesEqual(a: readonly string[], b: readonly string[]): boolean {\n\tif (a.length !== b.length) return false;\n\tfor (let i = 0; i < a.length; i++) {\n\t\tif (a[i] !== b[i]) return false;\n\t}\n\treturn true;\n}\n\nexport function decideReactiveWidgetAction(\n\tprev: ReactiveWidgetRenderState,\n\tnextLines: readonly string[],\n): ReactiveWidgetAction {\n\tconst nextVisible = nextLines.length > 0;\n\tif (!prev.mounted) return nextVisible ? \"mount\" : \"none\";\n\tif (!nextVisible) return \"unmount\";\n\treturn linesEqual(prev.lines, nextLines) ? \"none\" : \"update\";\n}\n\nexport function installReactiveWidget<TSnapshot, TTheme = object>(\n\toptions: InstallReactiveWidgetOptions<TSnapshot, TTheme>,\n): ReactiveWidgetController {\n\tconst timers = options.timers ?? defaultTimerApi;\n\tconst scheduler = options.scheduler ?? defaultScheduler;\n\tconst now = options.now ?? Date.now;\n\tconst coalesceRenderRequests = options.coalesceRenderRequests ?? true;\n\tconst requestRenderOnMount = options.requestRenderOnMount ?? true;\n\tconst requestRenderOnUnmount = options.requestRenderOnUnmount ?? true;\n\tconst requestRenderOnStateNoop = options.requestRenderOnStateNoop ?? true;\n\n\tlet disposed = false;\n\tlet mounted = false;\n\tlet renderQueued = false;\n\tlet mountedRequestRender: (() => void) | undefined;\n\tlet refreshTimer: ReactiveWidgetTimerHandle | undefined;\n\tlet currentSnap = options.getSnapshot();\n\tlet currentNow = now();\n\tlet lastLines: readonly string[] = [];\n\tlet unsubscribe: (() => void) | undefined;\n\tlet unsubscribeWidgetRelease: (() => void) | undefined;\n\tlet mountFailureReported = false;\n\n\tconst clearRefreshTimer = (): void => {\n\t\tif (refreshTimer === undefined) return;\n\t\ttimers.clearTimeout(refreshTimer);\n\t\trefreshTimer = undefined;\n\t};\n\n\tconst handleError = (error: unknown): void => {\n\t\tif (error instanceof ReactiveWidgetMountReporterError) throw error.reporterError;\n\t\tif (options.isStaleError?.(error)) return;\n\t\tthrow error;\n\t};\n\n\tconst invokeRequestRender = (): void => {\n\t\tif (options.ui.requestRender) {\n\t\t\toptions.ui.requestRender();\n\t\t\treturn;\n\t\t}\n\t\tmountedRequestRender?.();\n\t};\n\n\tconst requestRender = (): void => {\n\t\tif (!coalesceRenderRequests) {\n\t\t\ttry {\n\t\t\t\tinvokeRequestRender();\n\t\t\t} catch (error) {\n\t\t\t\thandleError(error);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (renderQueued) return;\n\t\trenderQueued = true;\n\t\tscheduler.queueMicrotask(() => {\n\t\t\trenderQueued = false;\n\t\t\tif (disposed) return;\n\t\t\ttry {\n\t\t\t\tinvokeRequestRender();\n\t\t\t} catch (error) {\n\t\t\t\thandleError(error);\n\t\t\t}\n\t\t});\n\t};\n\n\tconst requestRenderForDispose = (): void => {\n\t\trenderQueued = false;\n\t\tinvokeRequestRender();\n\t};\n\n\tconst scheduleRefresh = (): void => {\n\t\tconst delayMs = options.getNextRefreshDelayMs?.(currentSnap, currentNow);\n\t\tif (delayMs === undefined) return;\n\t\trefreshTimer = timers.setTimeout(() => {\n\t\t\trefreshTimer = undefined;\n\t\t\tcontroller.refresh(\"clock\");\n\t\t}, delayMs);\n\t\trefreshTimer.unref?.();\n\t};\n\n\tconst handleWidgetRelease = (): void => {\n\t\tif (disposed || !mounted) return;\n\t\tmounted = false;\n\t\tlastLines = [];\n\t\tmountedRequestRender = undefined;\n\t\tclearRefreshTimer();\n\t\tscheduler.queueMicrotask(() => {\n\t\t\tif (!disposed) controller.refresh(\"manual\");\n\t\t});\n\t};\n\n\tconst widgetFactory: ReactiveWidgetFactory<TTheme> = (tui, theme) => {\n\t\tconst fallbackRequestRender = getRequestRenderFromHost(tui);\n\t\tif (fallbackRequestRender) mountedRequestRender = fallbackRequestRender;\n\t\treturn {\n\t\t\t...(options.getScrollRequest ? { getScrollRequest: () => options.getScrollRequest?.() } : {}),\n\t\t\t...(options.onScroll ? { onScroll: (state: WidgetScrollState) => options.onScroll?.(state) } : {}),\n\t\t\trender(width: number): string[] {\n\t\t\t\treturn [...options.render(currentSnap, { theme, width, now: currentNow })];\n\t\t\t},\n\t\t\tinvalidate(): void {\n\t\t\t\t// The component is intentionally stateless; callers should rebuild from the\n\t\t\t\t// latest snapshot/time on every render. This hook exists so pi-tui can still\n\t\t\t\t// invalidate the long-lived component on theme changes.\n\t\t\t},\n\t\t};\n\t};\n\n\tconst controller: ReactiveWidgetController = {\n\t\trefresh(reason: ReactiveWidgetRefreshReason = \"manual\"): void {\n\t\t\tif (disposed) return;\n\t\t\tclearRefreshTimer();\n\t\t\ttry {\n\t\t\t\tcurrentSnap = options.getSnapshot();\n\t\t\t\tcurrentNow = now();\n\t\t\t\tconst nextLines = options.getPreviewLines(currentSnap, currentNow);\n\t\t\t\tconst action = decideReactiveWidgetAction({ mounted, lines: lastLines }, nextLines);\n\n\t\t\t\tswitch (action) {\n\t\t\t\t\tcase \"mount\":\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\toptions.ui.setWidget(\n\t\t\t\t\t\t\t\toptions.key,\n\t\t\t\t\t\t\t\twidgetFactory,\n\t\t\t\t\t\t\t\toptions.scroll\n\t\t\t\t\t\t\t\t\t? { ...(options.placement ? { placement: options.placement } : {}), scroll: options.scroll }\n\t\t\t\t\t\t\t\t\t: options.placement\n\t\t\t\t\t\t\t\t\t\t? { placement: options.placement }\n\t\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tmounted = true;\n\t\t\t\t\t\t\tmountFailureReported = false;\n\t\t\t\t\t\t\tif (requestRenderOnMount) requestRender();\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tconst cause = error instanceof Error ? error : new Error(String(error));\n\t\t\t\t\t\t\tif (!mountFailureReported) {\n\t\t\t\t\t\t\t\tmountFailureReported = true;\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\toptions.onMountError?.({ cause, message: cause.message });\n\t\t\t\t\t\t\t\t} catch (reporterError) {\n\t\t\t\t\t\t\t\t\tthrow new ReactiveWidgetMountReporterError(\n\t\t\t\t\t\t\t\t\t\treporterError instanceof Error ? reporterError : new Error(String(reporterError)),\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (options.isStaleError?.(error)) return;\n\t\t\t\t\t\t\thandleError(error);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"unmount\":\n\t\t\t\t\t\toptions.ui.setWidget(options.key, undefined);\n\t\t\t\t\t\tmounted = false;\n\t\t\t\t\t\tif (requestRenderOnUnmount) requestRender();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"update\":\n\t\t\t\t\t\trequestRender();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"none\":\n\t\t\t\t\t\tif (mounted && reason === \"state\" && requestRenderOnStateNoop) requestRender();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tlastLines = nextLines;\n\t\t\t\tscheduleRefresh();\n\t\t\t} catch (error) {\n\t\t\t\thandleError(error);\n\t\t\t}\n\t\t},\n\t\tdispose(): void {\n\t\t\tif (disposed) return;\n\t\t\tdisposed = true;\n\t\t\tclearRefreshTimer();\n\t\t\tunsubscribeWidgetRelease?.();\n\t\t\tunsubscribeWidgetRelease = undefined;\n\t\t\tunsubscribe?.();\n\t\t\ttry {\n\t\t\t\toptions.ui.setWidget(options.key, undefined);\n\t\t\t\tmounted = false;\n\t\t\t\trequestRenderForDispose();\n\t\t\t} catch (error) {\n\t\t\t\thandleError(error);\n\t\t\t}\n\t\t},\n\t\tisMounted(): boolean {\n\t\t\treturn mounted;\n\t\t},\n\t};\n\n\ttry {\n\t\tunsubscribe = options.subscribe?.(() => controller.refresh(\"state\"));\n\t\tunsubscribeWidgetRelease = options.ui.onWidgetRelease?.(options.key, handleWidgetRelease);\n\t\tcontroller.refresh(\"initial\");\n\t} catch (error) {\n\t\ttry {\n\t\t\tcontroller.dispose();\n\t\t} catch {\n\t\t\t// Preserve the original installation failure after rolling back subscriptions.\n\t\t}\n\t\tthrow error;\n\t}\n\n\treturn controller;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"reactive-widget.js","sourceRoot":"","sources":["../../../src/core/extensions/reactive-widget.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ExtensionWidgetOptions } from \"./types.ts\";\nimport type { WidgetScrollRequest, WidgetScrollState } from \"./ui-types.js\";\n\nexport interface ReactiveWidgetComponent {\n\trender(width: number): string[];\n\tgetScrollRequest?(): WidgetScrollRequest | undefined;\n\tonScroll?(state: WidgetScrollState): void;\n\tinvalidate?(): void;\n\tdispose?(): void;\n}\n\nexport type ReactiveWidgetFactory<TTheme> = (tui: unknown, theme: TTheme) => ReactiveWidgetComponent;\n\nexport interface ReactiveWidgetUi<TTheme> {\n\tsetWidget(key: string, factory: ReactiveWidgetFactory<TTheme> | undefined, options?: ExtensionWidgetOptions): void;\n\trequestRender?: () => void;\n\tonWidgetRelease?: (key: string, listener: () => void) => () => void;\n}\n\nexport interface ReactiveWidgetTimerHandle {\n\tunref?: () => void;\n}\n\nexport interface ReactiveWidgetTimerApi {\n\tsetTimeout(handler: () => void, delayMs: number): ReactiveWidgetTimerHandle;\n\tclearTimeout(handle: ReactiveWidgetTimerHandle): void;\n}\n\nexport interface ReactiveWidgetScheduler {\n\tqueueMicrotask(handler: () => void): void;\n}\n\nexport type ReactiveWidgetAction = \"mount\" | \"unmount\" | \"update\" | \"none\";\nexport type ReactiveWidgetRefreshReason = \"initial\" | \"state\" | \"clock\" | \"manual\";\n\nexport interface ReactiveWidgetRenderState {\n\treadonly mounted: boolean;\n\treadonly lines: readonly string[];\n}\n\nexport interface ReactiveWidgetRenderContext<TTheme> {\n\ttheme: TTheme;\n\twidth: number;\n\tnow: number;\n}\n\nexport interface ReactiveWidgetController {\n\trefresh(reason?: ReactiveWidgetRefreshReason): void;\n\tdispose(): void;\n\tisMounted(): boolean;\n}\n\nexport interface ReactiveWidgetMountError {\n\treadonly cause: Error;\n\treadonly message: string;\n}\n\nexport interface InstallReactiveWidgetOptions<TSnapshot, TTheme> {\n\tui: ReactiveWidgetUi<TTheme>;\n\tkey: string;\n\tplacement?: ExtensionWidgetOptions[\"placement\"];\n\tscroll?: ExtensionWidgetOptions[\"scroll\"];\n\tgetScrollRequest?(): WidgetScrollRequest | undefined;\n\tonScroll?(state: WidgetScrollState): void;\n\tgetSnapshot(): TSnapshot;\n\tsubscribe?(listener: () => void): () => void;\n\tgetPreviewLines(snapshot: TSnapshot, now: number): readonly string[];\n\trender(snapshot: TSnapshot, context: ReactiveWidgetRenderContext<TTheme>): readonly string[];\n\tgetNextRefreshDelayMs?(snapshot: TSnapshot, now: number): number | undefined;\n\tnow?: () => number;\n\ttimers?: ReactiveWidgetTimerApi;\n\tscheduler?: ReactiveWidgetScheduler;\n\tcoalesceRenderRequests?: boolean;\n\trequestRenderOnMount?: boolean;\n\trequestRenderOnUnmount?: boolean;\n\trequestRenderOnStateNoop?: boolean;\n\tisStaleError?: (error: unknown) => boolean;\n\tonMountError?: (error: ReactiveWidgetMountError) => void;\n}\n\nconst defaultTimerApi: ReactiveWidgetTimerApi = {\n\tsetTimeout: (handler, delayMs) => setTimeout(handler, delayMs) as ReactiveWidgetTimerHandle,\n\tclearTimeout: (handle) => clearTimeout(handle as ReturnType<typeof setTimeout>),\n};\n\nconst defaultScheduler: ReactiveWidgetScheduler = {\n\tqueueMicrotask: (handler) => queueMicrotask(handler),\n};\n\nclass ReactiveWidgetMountReporterError extends Error {\n\treadonly reporterError: Error;\n\n\tconstructor(reporterError: Error) {\n\t\tsuper(reporterError.message);\n\t\tthis.reporterError = reporterError;\n\t}\n}\n\nfunction getRequestRenderFromHost(host: unknown): (() => void) | undefined {\n\tif (typeof host !== \"object\" || host === null) return undefined;\n\tconst candidate = (host as { requestRender?: unknown }).requestRender;\n\tif (typeof candidate !== \"function\") return undefined;\n\treturn () => candidate.call(host);\n}\n\nfunction linesEqual(a: readonly string[], b: readonly string[]): boolean {\n\tif (a.length !== b.length) return false;\n\tfor (let i = 0; i < a.length; i++) {\n\t\tif (a[i] !== b[i]) return false;\n\t}\n\treturn true;\n}\n\nexport function decideReactiveWidgetAction(\n\tprev: ReactiveWidgetRenderState,\n\tnextLines: readonly string[],\n): ReactiveWidgetAction {\n\tconst nextVisible = nextLines.length > 0;\n\tif (!prev.mounted) return nextVisible ? \"mount\" : \"none\";\n\tif (!nextVisible) return \"unmount\";\n\treturn linesEqual(prev.lines, nextLines) ? \"none\" : \"update\";\n}\n\nexport function installReactiveWidget<TSnapshot, TTheme = object>(\n\toptions: InstallReactiveWidgetOptions<TSnapshot, TTheme>,\n): ReactiveWidgetController {\n\tconst timers = options.timers ?? defaultTimerApi;\n\tconst scheduler = options.scheduler ?? defaultScheduler;\n\tconst now = options.now ?? Date.now;\n\tconst coalesceRenderRequests = options.coalesceRenderRequests ?? true;\n\tconst requestRenderOnMount = options.requestRenderOnMount ?? true;\n\tconst requestRenderOnUnmount = options.requestRenderOnUnmount ?? true;\n\tconst requestRenderOnStateNoop = options.requestRenderOnStateNoop ?? true;\n\n\tlet disposed = false;\n\tlet mounted = false;\n\tlet renderQueued = false;\n\tlet mountedRequestRender: (() => void) | undefined;\n\tlet refreshTimer: ReactiveWidgetTimerHandle | undefined;\n\tlet currentSnap = options.getSnapshot();\n\tlet currentNow = now();\n\tlet lastLines: readonly string[] = [];\n\tlet unsubscribe: (() => void) | undefined;\n\tlet unsubscribeWidgetRelease: (() => void) | undefined;\n\tlet mountFailureReported = false;\n\n\tconst clearRefreshTimer = (): void => {\n\t\tif (refreshTimer === undefined) return;\n\t\ttimers.clearTimeout(refreshTimer);\n\t\trefreshTimer = undefined;\n\t};\n\n\tconst handleError = (error: unknown): void => {\n\t\tif (error instanceof ReactiveWidgetMountReporterError) throw error.reporterError;\n\t\tif (options.isStaleError?.(error)) return;\n\t\tthrow error;\n\t};\n\n\tconst invokeRequestRender = (): void => {\n\t\tif (options.ui.requestRender) {\n\t\t\toptions.ui.requestRender();\n\t\t\treturn;\n\t\t}\n\t\tmountedRequestRender?.();\n\t};\n\n\tconst requestRender = (): void => {\n\t\tif (!coalesceRenderRequests) {\n\t\t\ttry {\n\t\t\t\tinvokeRequestRender();\n\t\t\t} catch (error) {\n\t\t\t\thandleError(error);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (renderQueued) return;\n\t\trenderQueued = true;\n\t\tscheduler.queueMicrotask(() => {\n\t\t\trenderQueued = false;\n\t\t\tif (disposed) return;\n\t\t\ttry {\n\t\t\t\tinvokeRequestRender();\n\t\t\t} catch (error) {\n\t\t\t\thandleError(error);\n\t\t\t}\n\t\t});\n\t};\n\n\tconst requestRenderForDispose = (): void => {\n\t\trenderQueued = false;\n\t\tinvokeRequestRender();\n\t};\n\n\tconst scheduleRefresh = (): void => {\n\t\tconst delayMs = options.getNextRefreshDelayMs?.(currentSnap, currentNow);\n\t\tif (delayMs === undefined) return;\n\t\trefreshTimer = timers.setTimeout(() => {\n\t\t\trefreshTimer = undefined;\n\t\t\tcontroller.refresh(\"clock\");\n\t\t}, delayMs);\n\t\trefreshTimer.unref?.();\n\t};\n\n\tconst handleWidgetRelease = (): void => {\n\t\tif (disposed || !mounted) return;\n\t\tmounted = false;\n\t\tlastLines = [];\n\t\tmountedRequestRender = undefined;\n\t\tclearRefreshTimer();\n\t\tscheduler.queueMicrotask(() => {\n\t\t\tif (!disposed) controller.refresh(\"manual\");\n\t\t});\n\t};\n\n\tconst widgetFactory: ReactiveWidgetFactory<TTheme> = (tui, theme) => {\n\t\tconst fallbackRequestRender = getRequestRenderFromHost(tui);\n\t\tif (fallbackRequestRender) mountedRequestRender = fallbackRequestRender;\n\t\treturn {\n\t\t\t...(options.getScrollRequest ? { getScrollRequest: () => options.getScrollRequest?.() } : {}),\n\t\t\t...(options.onScroll ? { onScroll: (state: WidgetScrollState) => options.onScroll?.(state) } : {}),\n\t\t\trender(width: number): string[] {\n\t\t\t\treturn [...options.render(currentSnap, { theme, width, now: currentNow })];\n\t\t\t},\n\t\t\tinvalidate(): void {\n\t\t\t\t// The component is intentionally stateless; callers should rebuild from the\n\t\t\t\t// latest snapshot/time on every render. This hook exists so pi-tui can still\n\t\t\t\t// invalidate the long-lived component on theme changes.\n\t\t\t},\n\t\t};\n\t};\n\n\tconst controller: ReactiveWidgetController = {\n\t\trefresh(reason: ReactiveWidgetRefreshReason = \"manual\"): void {\n\t\t\tif (disposed) return;\n\t\t\tclearRefreshTimer();\n\t\t\ttry {\n\t\t\t\tcurrentSnap = options.getSnapshot();\n\t\t\t\tcurrentNow = now();\n\t\t\t\tconst nextLines = options.getPreviewLines(currentSnap, currentNow);\n\t\t\t\tconst action = decideReactiveWidgetAction({ mounted, lines: lastLines }, nextLines);\n\n\t\t\t\tswitch (action) {\n\t\t\t\t\tcase \"mount\":\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\toptions.ui.setWidget(\n\t\t\t\t\t\t\t\toptions.key,\n\t\t\t\t\t\t\t\twidgetFactory,\n\t\t\t\t\t\t\t\toptions.scroll\n\t\t\t\t\t\t\t\t\t? { ...(options.placement ? { placement: options.placement } : {}), scroll: options.scroll }\n\t\t\t\t\t\t\t\t\t: options.placement\n\t\t\t\t\t\t\t\t\t\t? { placement: options.placement }\n\t\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tmounted = true;\n\t\t\t\t\t\t\tmountFailureReported = false;\n\t\t\t\t\t\t\tif (requestRenderOnMount) requestRender();\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tconst cause = error instanceof Error ? error : new Error(String(error));\n\t\t\t\t\t\t\tif (!mountFailureReported) {\n\t\t\t\t\t\t\t\tmountFailureReported = true;\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\toptions.onMountError?.({ cause, message: cause.message });\n\t\t\t\t\t\t\t\t} catch (reporterError) {\n\t\t\t\t\t\t\t\t\tthrow new ReactiveWidgetMountReporterError(\n\t\t\t\t\t\t\t\t\t\treporterError instanceof Error ? reporterError : new Error(String(reporterError)),\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (options.isStaleError?.(error)) return;\n\t\t\t\t\t\t\thandleError(error);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"unmount\":\n\t\t\t\t\t\toptions.ui.setWidget(options.key, undefined);\n\t\t\t\t\t\tmounted = false;\n\t\t\t\t\t\tif (requestRenderOnUnmount) requestRender();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"update\":\n\t\t\t\t\t\trequestRender();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"none\":\n\t\t\t\t\t\tif (mounted && reason === \"state\" && requestRenderOnStateNoop) requestRender();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tlastLines = nextLines;\n\t\t\t\tscheduleRefresh();\n\t\t\t} catch (error) {\n\t\t\t\thandleError(error);\n\t\t\t}\n\t\t},\n\t\tdispose(): void {\n\t\t\tif (disposed) return;\n\t\t\tdisposed = true;\n\t\t\tclearRefreshTimer();\n\t\t\tunsubscribeWidgetRelease?.();\n\t\t\tunsubscribeWidgetRelease = undefined;\n\t\t\tunsubscribe?.();\n\t\t\ttry {\n\t\t\t\toptions.ui.setWidget(options.key, undefined);\n\t\t\t\tmounted = false;\n\t\t\t\trequestRenderForDispose();\n\t\t\t} catch (error) {\n\t\t\t\thandleError(error);\n\t\t\t}\n\t\t},\n\t\tisMounted(): boolean {\n\t\t\treturn mounted;\n\t\t},\n\t};\n\n\ttry {\n\t\tunsubscribe = options.subscribe?.(() => controller.refresh(\"state\"));\n\t\tunsubscribeWidgetRelease = options.ui.onWidgetRelease?.(options.key, handleWidgetRelease);\n\t\tcontroller.refresh(\"initial\");\n\t} catch (error) {\n\t\ttry {\n\t\t\tcontroller.dispose();\n\t\t} catch {\n\t\t\t// Preserve the original installation failure after rolling back subscriptions.\n\t\t}\n\t\tthrow error;\n\t}\n\n\treturn controller;\n}\n"]}
|
|
@@ -35,6 +35,7 @@ export interface ExtensionContextSource {
|
|
|
35
35
|
compact(options?: CompactOptions): void;
|
|
36
36
|
getSystemPrompt(): string;
|
|
37
37
|
getRouterModel?(): string;
|
|
38
|
+
getModelRouting?(): import("../settings-types.ts").ModelRoutingSettings;
|
|
38
39
|
getSkillCatalog?(): SkillCatalog;
|
|
39
40
|
getAgentTaskHost?(): import("../tasks/agent-adapter.js").AgentTaskHost;
|
|
40
41
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner-context.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/runner-context.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"runner-context.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/runner-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -201,6 +201,10 @@ export function createExtensionContext(source, owner = source) {
|
|
|
201
201
|
throw new Error("Router settings are unavailable in this extension host.");
|
|
202
202
|
return source.getRouterModel();
|
|
203
203
|
},
|
|
204
|
+
getModelRouting: () => {
|
|
205
|
+
source.assertActive();
|
|
206
|
+
return source.getModelRouting?.() ?? {};
|
|
207
|
+
},
|
|
204
208
|
getSystemPrompt: () => {
|
|
205
209
|
source.assertActive();
|
|
206
210
|
return source.getSystemPrompt();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner-context.js","sourceRoot":"","sources":["../../../src/core/extensions/runner-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAQjC,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AA4D1F;;;;;;;;GAQG;AACH,SAAS,cAAc,CAAI,KAAQ;IAClC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAM,CAAC;IAC/E,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,SAAS,GAAY,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACxD,IAAI,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACvE,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACxF,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAM,CAAC;AACnC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAA8B;IAC9D,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,gFAAgF;AAChF,gFAAgF;AAChF,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;AACxF,MAAM,eAAe,GAAG,UAA8F,CAAC;AACvH,eAAe,CAAC,kBAAkB,CAAC,KAAK,IAAI,OAAO,EAA4B,CAAC;AAChF,MAAM,aAAa,GAAG,eAAe,CAAC,kBAAkB,CAAC,CAAC;AAE1D,yFAAyF;AACzF,MAAM,UAAU,wBAAwB,CAAC,OAAyB;IACjE,OAAO,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC;AAC9C,CAAC;AAGD,MAAM,mBAAmB,GAAG,IAAI,OAAO,EAA2C,CAAC;AAEnF,2FAA2F;AAC3F,MAAM,UAAU,+BAA+B,CAC9C,OAAyB,EACzB,KAAoD;IAEpD,MAAM,KAAK,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,KAAK;QAAE,mBAAmB,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;;QAC5C,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAAC,OAAyB,EAAE,MAAqB;IACnG,MAAM,KAAK,GAAG,mBAAmB,CAAC,GAAG,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC;IACzE,IAAI,KAAK;QAAE,KAAK,CAAC,MAAM,CAAC,CAAC;;QACpB,MAAM,MAAM,EAAE,CAAC;AACrB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAA8B,EAAE,KAAK,GAAW,MAAM;IAC5F,MAAM,OAAO,GAAqB;QACjC,sBAAsB,EAAE,CAAC,OAAO,EAAE,EAAE;YACnC,MAAM,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC;YACxB,OAAO,MAAM,CAAC,sBAAsB,EAAE,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC;QAC5D,CAAC;QACD,iBAAiB,EAAE,GAAG,EAAE;YACvB,MAAM,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,CAAC;QAC3C,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,gBAAgB;YAC1B,CAAC,CAAC;gBACA,gBAAgB,EAAE,GAAG,EAAE;oBACtB,MAAM,CAAC,YAAY,EAAE,CAAC;oBACtB,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC;oBACxB,OAAO,MAAM,CAAC,gBAAiB,EAAE,CAAC;gBACnC,CAAC;aACD;YACF,CAAC,CAAC,EAAE,CAAC;QACN,IAAI,EAAE;YACL,MAAM,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC;QAC9B,CAAC;QACD,IAAI,IAAI;YACP,MAAM,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC;QACD,uBAAuB,EAAE,CAAC,QAAQ,EAAE,EAAE;YACrC,MAAM,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC;YACxB,OAAO,MAAM,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,aAAa;YAChB,MAAM,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC,aAAa,EAAE,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACnD,CAAC;QACD,IAAI,KAAK;YACR,MAAM,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;QACD,IAAI,GAAG;YACN,MAAM,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;QACxB,CAAC;QACD,IAAI,cAAc;YACjB,MAAM,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC,iBAAiB,EAAE,CAAC;QACnC,CAAC;QACD,IAAI,aAAa;YAChB,MAAM,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAClC,CAAC;QACD,IAAI,KAAK;YACR,MAAM,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC1B,CAAC;QACD,IAAI,YAAY;YACf,MAAM,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,gBAAgB,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,aAAa;YAChB,MAAM,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAClC,CAAC;QACD,IAAI,sBAAsB;YACzB,MAAM,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,UAAU,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC,aAAa,EAAE,CAAC;YAC9D,IAAI,CAAC,UAAU;gBAAE,OAAO,SAAS,CAAC;YAClC,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YACnD,mBAAmB,CAAC,YAAY,CAAC,CAAC;YAClC,OAAO,oBAAoB,CAAC,GAAG,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,oBAAoB;YACvB,MAAM,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC,uBAAuB,EAAE,CAAC;QACzC,CAAC;QACD,IAAI,cAAc;YACjB,MAAM,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC,iBAAiB,EAAE,CAAC;QACnC,CAAC;QACD,MAAM,EAAE,GAAG,EAAE;YACZ,MAAM,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;QACxB,CAAC;QACD,gBAAgB,EAAE,GAAG,EAAE;YACtB,MAAM,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAClC,CAAC;QACD,IAAI,MAAM;YACT,MAAM,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC,SAAS,EAAE,CAAC;QAC3B,CAAC;QACD,KAAK,EAAE,GAAG,EAAE;YACX,MAAM,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC;YACxB,MAAM,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;QACD,kBAAkB,EAAE,GAAG,EAAE;YACxB,MAAM,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC,kBAAkB,EAAE,CAAC;QACpC,CAAC;QACD,QAAQ,EAAE,GAAG,EAAE;YACd,MAAM,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC;YACxB,MAAM,CAAC,QAAQ,EAAE,CAAC;QACnB,CAAC;QACD,eAAe,EAAE,GAAG,EAAE;YACrB,MAAM,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC,eAAe,EAAE,CAAC;QACjC,CAAC;QACD,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE;YACpB,MAAM,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC;YACxB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;QACD,cAAc,EAAE,GAAG,EAAE;YACpB,MAAM,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,CAAC,cAAc;gBAAE,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;YACvG,OAAO,MAAM,CAAC,cAAc,EAAE,CAAC;QAChC,CAAC;QACD,eAAe,EAAE,GAAG,EAAE;YACrB,MAAM,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC,eAAe,EAAE,CAAC;QACjC,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,eAAe;YACzB,CAAC,CAAC;gBACA,eAAe,EAAE,GAAG,EAAE;oBACrB,MAAM,CAAC,YAAY,EAAE,CAAC;oBACtB,OAAO,MAAM,CAAC,eAAgB,EAAE,CAAC;gBAClC,CAAC;aACD;YACF,CAAC,CAAC,EAAE,CAAC;KACN,CAAC;IACF,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAClC,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC5C,MAAqC,EACrC,KAAK,GAAW,MAAM;IAEtB,gFAAgF;IAChF,gFAAgF;IAChF,+EAA+E;IAC/E,MAAM,OAAO,GAAG,MAAM,CAAC,gBAAgB,CACtC,EAAE,EACF,MAAM,CAAC,yBAAyB,CAAC,sBAAsB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAC5C,CAAC;IAC7B,OAAO,CAAC,sBAAsB,GAAG,GAAG,EAAE;QACrC,MAAM,CAAC,YAAY,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC,sBAAsB,EAAE,CAAC;IACxC,CAAC,CAAC;IACF,OAAO,CAAC,WAAW,GAAG,GAAG,EAAE;QAC1B,MAAM,CAAC,YAAY,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC;IAC7B,CAAC,CAAC;IACF,OAAO,CAAC,UAAU,GAAG,CAAC,OAAO,EAAE,EAAE;QAChC,MAAM,CAAC,YAAY,EAAE,CAAC;QACtB,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC,CAAC;IACF,OAAO,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;QACnC,MAAM,CAAC,YAAY,EAAE,CAAC;QACtB,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC,CAAC;IACF,OAAO,CAAC,YAAY,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE;QAC5C,MAAM,CAAC,YAAY,EAAE,CAAC;QACtB,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC,CAAC;IACF,OAAO,CAAC,aAAa,GAAG,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE;QAChD,MAAM,CAAC,YAAY,EAAE,CAAC;QACtB,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC,CAAC;IACF,OAAO,CAAC,MAAM,GAAG,GAAG,EAAE;QACrB,MAAM,CAAC,YAAY,EAAE,CAAC;QACtB,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;IACxB,CAAC,CAAC;IACF,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAClC,OAAO,OAAO,CAAC;AAChB,CAAC","sourcesContent":["import { join } from \"node:path\";\nimport type { Api, Model } from \"@bastani/pi-ai/compat\";\nimport type { ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { ModelRegistry } from \"../model-registry.ts\";\nimport type { ScopedModel } from \"../model-resolver.ts\";\nimport type { SessionManager } from \"../session-manager.ts\";\nimport type { SkillCatalog } from \"../skill-catalog.ts\";\nimport type { BuildSystemPromptOptions } from \"../system-prompt.ts\";\nimport { createArtifactRouter, registerArtifactDir } from \"../tools/artifact-protocol.ts\";\nimport type {\n\tForkHandler,\n\tNavigateTreeHandler,\n\tNewSessionHandler,\n\tReloadHandler,\n\tSwitchSessionHandler,\n} from \"./runner-handlers.ts\";\nimport type {\n\tCompactOptions,\n\tContextUsage,\n\tExtensionCommandContext,\n\tExtensionContext,\n\tExtensionMode,\n\tExtensionUIContext,\n\tOrchestrationContext,\n\tSubagentChildPolicy,\n} from \"./types.ts\";\nexport interface ExtensionContextSource {\n\tobserveWorkflowActivity: ExtensionContext[\"observeWorkflowActivity\"];\n\tgetChildSessionOptions?: ExtensionContext[\"getChildSessionOptions\"];\n\tgetExtensionPaths?(): string[];\n\tassertActive(): void;\n\tassertAction?(): void;\n\tgetUIContext(): ExtensionUIContext;\n\tgetMode(): ExtensionMode;\n\thasUI(): boolean;\n\thasHumanInput?(): boolean;\n\tgetCwd(): string;\n\tgetSessionManager(): SessionManager;\n\tgetModelRegistry(): ModelRegistry;\n\tgetModel(): Model<Api> | undefined;\n\tgetScopedModels(): readonly ScopedModel[];\n\tgetThinkingLevel(): ThinkingLevel | undefined;\n\tgetOrchestrationContext(): OrchestrationContext | undefined;\n\tgetSubagentPolicy(): SubagentChildPolicy | undefined;\n\tisIdle(): boolean;\n\tisProjectTrusted(): boolean;\n\tgetSignal(): AbortSignal | undefined;\n\tabort(): void;\n\thasPendingMessages(): boolean;\n\tshutdown(): void;\n\tgetContextUsage(): ContextUsage | undefined;\n\tcompact(options?: CompactOptions): void;\n\tgetSystemPrompt(): string;\n\tgetRouterModel?(): string;\n\tgetSkillCatalog?(): SkillCatalog;\n\tgetAgentTaskHost?(): import(\"../tasks/agent-adapter.js\").AgentTaskHost;\n}\n\nexport interface ExtensionCommandContextSource extends ExtensionContextSource {\n\tgetSystemPromptOptions(): BuildSystemPromptOptions;\n\twaitForIdle(): Promise<void>;\n\tnewSession: NewSessionHandler;\n\tfork: ForkHandler;\n\tnavigateTree: NavigateTreeHandler;\n\tswitchSession: SwitchSessionHandler;\n\treload: ReloadHandler;\n}\n\n/**\n * A copy of `value` that shares no mutable structure with it, frozen through.\n *\n * Arrays and plain objects are rebuilt; everything else — primitives, and any\n * value carrying a prototype this does not own, such as a function or a class\n * instance — is passed through untouched rather than mangled into a plain\n * object. A `Model` is plain data (`input`, `cost.tiers`, `headers`,\n * `thinkingLevelMap`, `compat`), so the whole of one is rebuilt.\n */\nfunction deepFrozenCopy<T>(value: T): T {\n\tif (Array.isArray(value)) return Object.freeze(value.map(deepFrozenCopy)) as T;\n\tif (typeof value !== \"object\" || value === null) return value;\n\tconst prototype: unknown = Object.getPrototypeOf(value);\n\tif (prototype !== Object.prototype && prototype !== null) return value;\n\tconst copied: Record<string, unknown> = {};\n\tfor (const [key, nested] of Object.entries(value)) copied[key] = deepFrozenCopy(nested);\n\treturn Object.freeze(copied) as T;\n}\n\n/**\n * A defensive copy of the model scope, entries included.\n *\n * `readonly ScopedModel[]` is a compile-time claim only, so the array is\n * copied: a JavaScript extension, or one asserting the `readonly` away, could\n * otherwise push onto the session's own array and have `cycleModel()` treat the\n * entry as in scope.\n *\n * Copying the array alone is not enough. The entries are the session's objects,\n * so mutating `entry.model` or `entry.thinkingLevel` in place reaches the very\n * array `cycleModel()` reads, and swaps the model it selects without ever\n * touching the array.\n *\n * Nor is copying the entry and its model one level deep. `Object.freeze` and a\n * spread both stop at the first level, so `model.headers`, `model.input`,\n * `model.cost.tiers`, `model.thinkingLevelMap` and `model.compat` stayed the\n * session's own objects: writing through any of them changed the model used for\n * selection and request composition, and the freeze reported nothing. The copy\n * goes all the way down, and freezes all the way down with it, so an attempt\n * fails loudly under strict mode instead of silently succeeding.\n *\n * The accessor reports the scope; it must not be a way to change it.\n */\nexport function copyScopedModels(scoped: readonly ScopedModel[]): readonly ScopedModel[] {\n\treturn Object.freeze(scoped.map((entry) => deepFrozenCopy(entry)));\n}\n\n// Private host/builtin bridge, also read by intercom/context-owner.ts. Separate\n// bundles share identity without exposing guarded capabilities or retaining UI.\nconst CONTEXT_OWNERS_KEY = Symbol.for(\"atomic-coding-agent/extension-context-owners@1\");\nconst contextOwnerBag = globalThis as typeof globalThis & { [CONTEXT_OWNERS_KEY]?: WeakMap<ExtensionContext, object> };\ncontextOwnerBag[CONTEXT_OWNERS_KEY] ??= new WeakMap<ExtensionContext, object>();\nconst contextOwners = contextOwnerBag[CONTEXT_OWNERS_KEY];\n\n/** Internal lifecycle identity; contexts themselves are recreated for every dispatch. */\nexport function getExtensionContextOwner(context: ExtensionContext): object {\n\treturn contextOwners.get(context) ?? context;\n}\n\ntype ContextEffect = () => void | Promise<void>;\nconst contextPublications = new WeakMap<object, (effect: ContextEffect) => void>();\n\n/** Keep builtin lifecycle effects behind the host's transactional publication boundary. */\nexport function bindExtensionContextPublication(\n\tcontext: ExtensionContext,\n\tstage: ((effect: ContextEffect) => void) | undefined,\n): void {\n\tconst owner = getExtensionContextOwner(context);\n\tif (stage) contextPublications.set(owner, stage);\n\telse contextPublications.delete(owner);\n}\n\nexport async function publishExtensionContextEffect(context: ExtensionContext, effect: ContextEffect): Promise<void> {\n\tconst stage = contextPublications.get(getExtensionContextOwner(context));\n\tif (stage) stage(effect);\n\telse await effect();\n}\n\n/**\n * Create an ExtensionContext for use in event handlers and tool execution.\n * Context values are resolved at call time, so host changes are reflected.\n */\nexport function createExtensionContext(source: ExtensionContextSource, owner: object = source): ExtensionContext {\n\tconst context: ExtensionContext = {\n\t\tgetChildSessionOptions: (options) => {\n\t\t\tsource.assertActive();\n\t\t\tsource.assertAction?.();\n\t\t\treturn source.getChildSessionOptions?.(options) ?? options;\n\t\t},\n\t\tgetExtensionPaths: () => {\n\t\t\tsource.assertActive();\n\t\t\treturn source.getExtensionPaths?.() ?? [];\n\t\t},\n\t\t...(source.getAgentTaskHost\n\t\t\t? {\n\t\t\t\t\tgetAgentTaskHost: () => {\n\t\t\t\t\t\tsource.assertActive();\n\t\t\t\t\t\tsource.assertAction?.();\n\t\t\t\t\t\treturn source.getAgentTaskHost!();\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\tget ui() {\n\t\t\tsource.assertActive();\n\t\t\treturn source.getUIContext();\n\t\t},\n\t\tget mode() {\n\t\t\tsource.assertActive();\n\t\t\treturn source.getMode();\n\t\t},\n\t\tobserveWorkflowActivity: (observer) => {\n\t\t\tsource.assertActive();\n\t\t\tsource.assertAction?.();\n\t\t\treturn source.observeWorkflowActivity(observer);\n\t\t},\n\t\tget hasHumanInput() {\n\t\t\tsource.assertActive();\n\t\t\treturn source.hasHumanInput?.() ?? source.hasUI();\n\t\t},\n\t\tget hasUI() {\n\t\t\tsource.assertActive();\n\t\t\treturn source.hasUI();\n\t\t},\n\t\tget cwd() {\n\t\t\tsource.assertActive();\n\t\t\treturn source.getCwd();\n\t\t},\n\t\tget sessionManager() {\n\t\t\tsource.assertActive();\n\t\t\treturn source.getSessionManager();\n\t\t},\n\t\tget modelRegistry() {\n\t\t\tsource.assertActive();\n\t\t\treturn source.getModelRegistry();\n\t\t},\n\t\tget model() {\n\t\t\tsource.assertActive();\n\t\t\treturn source.getModel();\n\t\t},\n\t\tget scopedModels() {\n\t\t\tsource.assertActive();\n\t\t\treturn copyScopedModels(source.getScopedModels());\n\t\t},\n\t\tget thinkingLevel() {\n\t\t\tsource.assertActive();\n\t\t\treturn source.getThinkingLevel();\n\t\t},\n\t\tget internalResourceRouter() {\n\t\t\tsource.assertActive();\n\t\t\tconst sessionDir = source.getSessionManager().getSessionDir();\n\t\t\tif (!sessionDir) return undefined;\n\t\t\tconst artifactsDir = join(sessionDir, \"artifacts\");\n\t\t\tregisterArtifactDir(artifactsDir);\n\t\t\treturn createArtifactRouter(() => [artifactsDir]);\n\t\t},\n\t\tget orchestrationContext() {\n\t\t\tsource.assertActive();\n\t\t\treturn source.getOrchestrationContext();\n\t\t},\n\t\tget subagentPolicy() {\n\t\t\tsource.assertActive();\n\t\t\treturn source.getSubagentPolicy();\n\t\t},\n\t\tisIdle: () => {\n\t\t\tsource.assertActive();\n\t\t\treturn source.isIdle();\n\t\t},\n\t\tisProjectTrusted: () => {\n\t\t\tsource.assertActive();\n\t\t\treturn source.isProjectTrusted();\n\t\t},\n\t\tget signal() {\n\t\t\tsource.assertActive();\n\t\t\treturn source.getSignal();\n\t\t},\n\t\tabort: () => {\n\t\t\tsource.assertActive();\n\t\t\tsource.assertAction?.();\n\t\t\tsource.abort();\n\t\t},\n\t\thasPendingMessages: () => {\n\t\t\tsource.assertActive();\n\t\t\treturn source.hasPendingMessages();\n\t\t},\n\t\tshutdown: () => {\n\t\t\tsource.assertActive();\n\t\t\tsource.assertAction?.();\n\t\t\tsource.shutdown();\n\t\t},\n\t\tgetContextUsage: () => {\n\t\t\tsource.assertActive();\n\t\t\treturn source.getContextUsage();\n\t\t},\n\t\tcompact: (options) => {\n\t\t\tsource.assertActive();\n\t\t\tsource.assertAction?.();\n\t\t\tsource.compact(options);\n\t\t},\n\t\tgetRouterModel: () => {\n\t\t\tsource.assertActive();\n\t\t\tif (!source.getRouterModel) throw new Error(\"Router settings are unavailable in this extension host.\");\n\t\t\treturn source.getRouterModel();\n\t\t},\n\t\tgetSystemPrompt: () => {\n\t\t\tsource.assertActive();\n\t\t\treturn source.getSystemPrompt();\n\t\t},\n\t\t...(source.getSkillCatalog\n\t\t\t? {\n\t\t\t\t\tgetSkillCatalog: () => {\n\t\t\t\t\t\tsource.assertActive();\n\t\t\t\t\t\treturn source.getSkillCatalog!();\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t};\n\tcontextOwners.set(context, owner);\n\treturn context;\n}\n\nexport function createExtensionCommandContext(\n\tsource: ExtensionCommandContextSource,\n\towner: object = source,\n): ExtensionCommandContext {\n\t// Use property descriptors instead of object spread so the guarded getters from\n\t// createExtensionContext() stay lazy. A spread would eagerly read them once and\n\t// freeze old values into the returned object, bypassing stale-instance checks.\n\tconst context = Object.defineProperties(\n\t\t{},\n\t\tObject.getOwnPropertyDescriptors(createExtensionContext(source, owner)),\n\t) as ExtensionCommandContext;\n\tcontext.getSystemPromptOptions = () => {\n\t\tsource.assertActive();\n\t\treturn source.getSystemPromptOptions();\n\t};\n\tcontext.waitForIdle = () => {\n\t\tsource.assertActive();\n\t\treturn source.waitForIdle();\n\t};\n\tcontext.newSession = (options) => {\n\t\tsource.assertActive();\n\t\tsource.assertAction?.();\n\t\treturn source.newSession(options);\n\t};\n\tcontext.fork = (entryId, options) => {\n\t\tsource.assertActive();\n\t\tsource.assertAction?.();\n\t\treturn source.fork(entryId, options);\n\t};\n\tcontext.navigateTree = (targetId, options) => {\n\t\tsource.assertActive();\n\t\tsource.assertAction?.();\n\t\treturn source.navigateTree(targetId, options);\n\t};\n\tcontext.switchSession = (sessionPath, options) => {\n\t\tsource.assertActive();\n\t\tsource.assertAction?.();\n\t\treturn source.switchSession(sessionPath, options);\n\t};\n\tcontext.reload = () => {\n\t\tsource.assertActive();\n\t\tsource.assertAction?.();\n\t\treturn source.reload();\n\t};\n\tcontextOwners.set(context, owner);\n\treturn context;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"runner-context.js","sourceRoot":"","sources":["../../../src/core/extensions/runner-context.ts"],"names":[],"mappings":"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","sourcesContent":["import { join } from \"node:path\";\nimport type { Api, Model } from \"@bastani/pi-ai/compat\";\nimport type { ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { ModelRegistry } from \"../model-registry.ts\";\nimport type { ScopedModel } from \"../model-resolver.ts\";\nimport type { SessionManager } from \"../session-manager.ts\";\nimport type { SkillCatalog } from \"../skill-catalog.ts\";\nimport type { BuildSystemPromptOptions } from \"../system-prompt.ts\";\nimport { createArtifactRouter, registerArtifactDir } from \"../tools/artifact-protocol.ts\";\nimport type {\n\tForkHandler,\n\tNavigateTreeHandler,\n\tNewSessionHandler,\n\tReloadHandler,\n\tSwitchSessionHandler,\n} from \"./runner-handlers.ts\";\nimport type {\n\tCompactOptions,\n\tContextUsage,\n\tExtensionCommandContext,\n\tExtensionContext,\n\tExtensionMode,\n\tExtensionUIContext,\n\tOrchestrationContext,\n\tSubagentChildPolicy,\n} from \"./types.ts\";\nexport interface ExtensionContextSource {\n\tobserveWorkflowActivity: ExtensionContext[\"observeWorkflowActivity\"];\n\tgetChildSessionOptions?: ExtensionContext[\"getChildSessionOptions\"];\n\tgetExtensionPaths?(): string[];\n\tassertActive(): void;\n\tassertAction?(): void;\n\tgetUIContext(): ExtensionUIContext;\n\tgetMode(): ExtensionMode;\n\thasUI(): boolean;\n\thasHumanInput?(): boolean;\n\tgetCwd(): string;\n\tgetSessionManager(): SessionManager;\n\tgetModelRegistry(): ModelRegistry;\n\tgetModel(): Model<Api> | undefined;\n\tgetScopedModels(): readonly ScopedModel[];\n\tgetThinkingLevel(): ThinkingLevel | undefined;\n\tgetOrchestrationContext(): OrchestrationContext | undefined;\n\tgetSubagentPolicy(): SubagentChildPolicy | undefined;\n\tisIdle(): boolean;\n\tisProjectTrusted(): boolean;\n\tgetSignal(): AbortSignal | undefined;\n\tabort(): void;\n\thasPendingMessages(): boolean;\n\tshutdown(): void;\n\tgetContextUsage(): ContextUsage | undefined;\n\tcompact(options?: CompactOptions): void;\n\tgetSystemPrompt(): string;\n\tgetRouterModel?(): string;\n\tgetModelRouting?(): import(\"../settings-types.ts\").ModelRoutingSettings;\n\tgetSkillCatalog?(): SkillCatalog;\n\tgetAgentTaskHost?(): import(\"../tasks/agent-adapter.js\").AgentTaskHost;\n}\n\nexport interface ExtensionCommandContextSource extends ExtensionContextSource {\n\tgetSystemPromptOptions(): BuildSystemPromptOptions;\n\twaitForIdle(): Promise<void>;\n\tnewSession: NewSessionHandler;\n\tfork: ForkHandler;\n\tnavigateTree: NavigateTreeHandler;\n\tswitchSession: SwitchSessionHandler;\n\treload: ReloadHandler;\n}\n\n/**\n * A copy of `value` that shares no mutable structure with it, frozen through.\n *\n * Arrays and plain objects are rebuilt; everything else — primitives, and any\n * value carrying a prototype this does not own, such as a function or a class\n * instance — is passed through untouched rather than mangled into a plain\n * object. A `Model` is plain data (`input`, `cost.tiers`, `headers`,\n * `thinkingLevelMap`, `compat`), so the whole of one is rebuilt.\n */\nfunction deepFrozenCopy<T>(value: T): T {\n\tif (Array.isArray(value)) return Object.freeze(value.map(deepFrozenCopy)) as T;\n\tif (typeof value !== \"object\" || value === null) return value;\n\tconst prototype: unknown = Object.getPrototypeOf(value);\n\tif (prototype !== Object.prototype && prototype !== null) return value;\n\tconst copied: Record<string, unknown> = {};\n\tfor (const [key, nested] of Object.entries(value)) copied[key] = deepFrozenCopy(nested);\n\treturn Object.freeze(copied) as T;\n}\n\n/**\n * A defensive copy of the model scope, entries included.\n *\n * `readonly ScopedModel[]` is a compile-time claim only, so the array is\n * copied: a JavaScript extension, or one asserting the `readonly` away, could\n * otherwise push onto the session's own array and have `cycleModel()` treat the\n * entry as in scope.\n *\n * Copying the array alone is not enough. The entries are the session's objects,\n * so mutating `entry.model` or `entry.thinkingLevel` in place reaches the very\n * array `cycleModel()` reads, and swaps the model it selects without ever\n * touching the array.\n *\n * Nor is copying the entry and its model one level deep. `Object.freeze` and a\n * spread both stop at the first level, so `model.headers`, `model.input`,\n * `model.cost.tiers`, `model.thinkingLevelMap` and `model.compat` stayed the\n * session's own objects: writing through any of them changed the model used for\n * selection and request composition, and the freeze reported nothing. The copy\n * goes all the way down, and freezes all the way down with it, so an attempt\n * fails loudly under strict mode instead of silently succeeding.\n *\n * The accessor reports the scope; it must not be a way to change it.\n */\nexport function copyScopedModels(scoped: readonly ScopedModel[]): readonly ScopedModel[] {\n\treturn Object.freeze(scoped.map((entry) => deepFrozenCopy(entry)));\n}\n\n// Private host/builtin bridge, also read by intercom/context-owner.ts. Separate\n// bundles share identity without exposing guarded capabilities or retaining UI.\nconst CONTEXT_OWNERS_KEY = Symbol.for(\"atomic-coding-agent/extension-context-owners@1\");\nconst contextOwnerBag = globalThis as typeof globalThis & { [CONTEXT_OWNERS_KEY]?: WeakMap<ExtensionContext, object> };\ncontextOwnerBag[CONTEXT_OWNERS_KEY] ??= new WeakMap<ExtensionContext, object>();\nconst contextOwners = contextOwnerBag[CONTEXT_OWNERS_KEY];\n\n/** Internal lifecycle identity; contexts themselves are recreated for every dispatch. */\nexport function getExtensionContextOwner(context: ExtensionContext): object {\n\treturn contextOwners.get(context) ?? context;\n}\n\ntype ContextEffect = () => void | Promise<void>;\nconst contextPublications = new WeakMap<object, (effect: ContextEffect) => void>();\n\n/** Keep builtin lifecycle effects behind the host's transactional publication boundary. */\nexport function bindExtensionContextPublication(\n\tcontext: ExtensionContext,\n\tstage: ((effect: ContextEffect) => void) | undefined,\n): void {\n\tconst owner = getExtensionContextOwner(context);\n\tif (stage) contextPublications.set(owner, stage);\n\telse contextPublications.delete(owner);\n}\n\nexport async function publishExtensionContextEffect(context: ExtensionContext, effect: ContextEffect): Promise<void> {\n\tconst stage = contextPublications.get(getExtensionContextOwner(context));\n\tif (stage) stage(effect);\n\telse await effect();\n}\n\n/**\n * Create an ExtensionContext for use in event handlers and tool execution.\n * Context values are resolved at call time, so host changes are reflected.\n */\nexport function createExtensionContext(source: ExtensionContextSource, owner: object = source): ExtensionContext {\n\tconst context: ExtensionContext = {\n\t\tgetChildSessionOptions: (options) => {\n\t\t\tsource.assertActive();\n\t\t\tsource.assertAction?.();\n\t\t\treturn source.getChildSessionOptions?.(options) ?? options;\n\t\t},\n\t\tgetExtensionPaths: () => {\n\t\t\tsource.assertActive();\n\t\t\treturn source.getExtensionPaths?.() ?? [];\n\t\t},\n\t\t...(source.getAgentTaskHost\n\t\t\t? {\n\t\t\t\t\tgetAgentTaskHost: () => {\n\t\t\t\t\t\tsource.assertActive();\n\t\t\t\t\t\tsource.assertAction?.();\n\t\t\t\t\t\treturn source.getAgentTaskHost!();\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\tget ui() {\n\t\t\tsource.assertActive();\n\t\t\treturn source.getUIContext();\n\t\t},\n\t\tget mode() {\n\t\t\tsource.assertActive();\n\t\t\treturn source.getMode();\n\t\t},\n\t\tobserveWorkflowActivity: (observer) => {\n\t\t\tsource.assertActive();\n\t\t\tsource.assertAction?.();\n\t\t\treturn source.observeWorkflowActivity(observer);\n\t\t},\n\t\tget hasHumanInput() {\n\t\t\tsource.assertActive();\n\t\t\treturn source.hasHumanInput?.() ?? source.hasUI();\n\t\t},\n\t\tget hasUI() {\n\t\t\tsource.assertActive();\n\t\t\treturn source.hasUI();\n\t\t},\n\t\tget cwd() {\n\t\t\tsource.assertActive();\n\t\t\treturn source.getCwd();\n\t\t},\n\t\tget sessionManager() {\n\t\t\tsource.assertActive();\n\t\t\treturn source.getSessionManager();\n\t\t},\n\t\tget modelRegistry() {\n\t\t\tsource.assertActive();\n\t\t\treturn source.getModelRegistry();\n\t\t},\n\t\tget model() {\n\t\t\tsource.assertActive();\n\t\t\treturn source.getModel();\n\t\t},\n\t\tget scopedModels() {\n\t\t\tsource.assertActive();\n\t\t\treturn copyScopedModels(source.getScopedModels());\n\t\t},\n\t\tget thinkingLevel() {\n\t\t\tsource.assertActive();\n\t\t\treturn source.getThinkingLevel();\n\t\t},\n\t\tget internalResourceRouter() {\n\t\t\tsource.assertActive();\n\t\t\tconst sessionDir = source.getSessionManager().getSessionDir();\n\t\t\tif (!sessionDir) return undefined;\n\t\t\tconst artifactsDir = join(sessionDir, \"artifacts\");\n\t\t\tregisterArtifactDir(artifactsDir);\n\t\t\treturn createArtifactRouter(() => [artifactsDir]);\n\t\t},\n\t\tget orchestrationContext() {\n\t\t\tsource.assertActive();\n\t\t\treturn source.getOrchestrationContext();\n\t\t},\n\t\tget subagentPolicy() {\n\t\t\tsource.assertActive();\n\t\t\treturn source.getSubagentPolicy();\n\t\t},\n\t\tisIdle: () => {\n\t\t\tsource.assertActive();\n\t\t\treturn source.isIdle();\n\t\t},\n\t\tisProjectTrusted: () => {\n\t\t\tsource.assertActive();\n\t\t\treturn source.isProjectTrusted();\n\t\t},\n\t\tget signal() {\n\t\t\tsource.assertActive();\n\t\t\treturn source.getSignal();\n\t\t},\n\t\tabort: () => {\n\t\t\tsource.assertActive();\n\t\t\tsource.assertAction?.();\n\t\t\tsource.abort();\n\t\t},\n\t\thasPendingMessages: () => {\n\t\t\tsource.assertActive();\n\t\t\treturn source.hasPendingMessages();\n\t\t},\n\t\tshutdown: () => {\n\t\t\tsource.assertActive();\n\t\t\tsource.assertAction?.();\n\t\t\tsource.shutdown();\n\t\t},\n\t\tgetContextUsage: () => {\n\t\t\tsource.assertActive();\n\t\t\treturn source.getContextUsage();\n\t\t},\n\t\tcompact: (options) => {\n\t\t\tsource.assertActive();\n\t\t\tsource.assertAction?.();\n\t\t\tsource.compact(options);\n\t\t},\n\t\tgetRouterModel: () => {\n\t\t\tsource.assertActive();\n\t\t\tif (!source.getRouterModel) throw new Error(\"Router settings are unavailable in this extension host.\");\n\t\t\treturn source.getRouterModel();\n\t\t},\n\t\tgetModelRouting: () => {\n\t\t\tsource.assertActive();\n\t\t\treturn source.getModelRouting?.() ?? {};\n\t\t},\n\t\tgetSystemPrompt: () => {\n\t\t\tsource.assertActive();\n\t\t\treturn source.getSystemPrompt();\n\t\t},\n\t\t...(source.getSkillCatalog\n\t\t\t? {\n\t\t\t\t\tgetSkillCatalog: () => {\n\t\t\t\t\t\tsource.assertActive();\n\t\t\t\t\t\treturn source.getSkillCatalog!();\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t};\n\tcontextOwners.set(context, owner);\n\treturn context;\n}\n\nexport function createExtensionCommandContext(\n\tsource: ExtensionCommandContextSource,\n\towner: object = source,\n): ExtensionCommandContext {\n\t// Use property descriptors instead of object spread so the guarded getters from\n\t// createExtensionContext() stay lazy. A spread would eagerly read them once and\n\t// freeze old values into the returned object, bypassing stale-instance checks.\n\tconst context = Object.defineProperties(\n\t\t{},\n\t\tObject.getOwnPropertyDescriptors(createExtensionContext(source, owner)),\n\t) as ExtensionCommandContext;\n\tcontext.getSystemPromptOptions = () => {\n\t\tsource.assertActive();\n\t\treturn source.getSystemPromptOptions();\n\t};\n\tcontext.waitForIdle = () => {\n\t\tsource.assertActive();\n\t\treturn source.waitForIdle();\n\t};\n\tcontext.newSession = (options) => {\n\t\tsource.assertActive();\n\t\tsource.assertAction?.();\n\t\treturn source.newSession(options);\n\t};\n\tcontext.fork = (entryId, options) => {\n\t\tsource.assertActive();\n\t\tsource.assertAction?.();\n\t\treturn source.fork(entryId, options);\n\t};\n\tcontext.navigateTree = (targetId, options) => {\n\t\tsource.assertActive();\n\t\tsource.assertAction?.();\n\t\treturn source.navigateTree(targetId, options);\n\t};\n\tcontext.switchSession = (sessionPath, options) => {\n\t\tsource.assertActive();\n\t\tsource.assertAction?.();\n\t\treturn source.switchSession(sessionPath, options);\n\t};\n\tcontext.reload = () => {\n\t\tsource.assertActive();\n\t\tsource.assertAction?.();\n\t\treturn source.reload();\n\t};\n\tcontextOwners.set(context, owner);\n\treturn context;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/runner.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,6 +49,22 @@ export async function emitSessionShutdownEvent(extensionRunner, event) {
|
|
|
49
49
|
return false;
|
|
50
50
|
}
|
|
51
51
|
export class ExtensionRunner {
|
|
52
|
+
extensions;
|
|
53
|
+
runtime;
|
|
54
|
+
uiContext;
|
|
55
|
+
presentationUI;
|
|
56
|
+
presentationInput;
|
|
57
|
+
humanInput;
|
|
58
|
+
humanInputBindingRevision = 0;
|
|
59
|
+
inputBridge = new HostInputBridge(() => this.sessionManager.getSessionId(), () => this.getSignalFn());
|
|
60
|
+
onDiagnostic;
|
|
61
|
+
mode = "print";
|
|
62
|
+
cwd;
|
|
63
|
+
sessionManager;
|
|
64
|
+
modelRegistry;
|
|
65
|
+
orchestrationContext;
|
|
66
|
+
subagentPolicy;
|
|
67
|
+
taskHostBinding;
|
|
52
68
|
/** @internal Attach dispatch receipts to the owning session before startup. */
|
|
53
69
|
bindWorkOwner(owner) {
|
|
54
70
|
bindExtensionWork(this.runtime, owner);
|
|
@@ -65,37 +81,36 @@ export class ExtensionRunner {
|
|
|
65
81
|
onDiagnostic: this.onDiagnostic,
|
|
66
82
|
};
|
|
67
83
|
}
|
|
84
|
+
errorListeners = new Set();
|
|
85
|
+
getModel = () => undefined;
|
|
86
|
+
getScopedModels = () => [];
|
|
87
|
+
isIdleFn = () => true;
|
|
88
|
+
isProjectTrustedFn = () => true;
|
|
89
|
+
getSignalFn = () => undefined;
|
|
90
|
+
waitForIdleFn = async () => { };
|
|
91
|
+
abortFn = () => { };
|
|
92
|
+
hasPendingMessagesFn = () => false;
|
|
93
|
+
getContextUsageFn = () => undefined;
|
|
94
|
+
compactFn = () => { };
|
|
95
|
+
getSystemPromptFn = () => "";
|
|
96
|
+
getSystemPromptOptionsFn = () => normalizeBuildSystemPromptOptions({ cwd: this.cwd });
|
|
97
|
+
getSkillCatalogFn = undefined;
|
|
98
|
+
getRouterModelFn = undefined;
|
|
99
|
+
getModelRoutingFn = undefined;
|
|
100
|
+
newSessionHandler = async () => ({ cancelled: false });
|
|
101
|
+
forkHandler = async () => ({ cancelled: false });
|
|
102
|
+
navigateTreeHandler = async () => ({ cancelled: false });
|
|
103
|
+
switchSessionHandler = async () => ({ cancelled: false });
|
|
104
|
+
reloadHandler = async () => { };
|
|
105
|
+
shutdownHandler = () => { };
|
|
106
|
+
shortcutDiagnostics = [];
|
|
107
|
+
commandDiagnostics = [];
|
|
108
|
+
staleMessage;
|
|
109
|
+
authorityRevoked = false;
|
|
110
|
+
contextOwner = {};
|
|
111
|
+
uiPromptBinding = 0;
|
|
112
|
+
activeUIPrompt;
|
|
68
113
|
constructor(extensions, runtime, cwd, sessionManager, modelRegistry, orchestrationContext, subagentPolicy) {
|
|
69
|
-
this.humanInputBindingRevision = 0;
|
|
70
|
-
this.inputBridge = new HostInputBridge(() => this.sessionManager.getSessionId(), () => this.getSignalFn());
|
|
71
|
-
this.mode = "print";
|
|
72
|
-
this.errorListeners = new Set();
|
|
73
|
-
this.getModel = () => undefined;
|
|
74
|
-
this.getScopedModels = () => [];
|
|
75
|
-
this.isIdleFn = () => true;
|
|
76
|
-
this.isProjectTrustedFn = () => true;
|
|
77
|
-
this.getSignalFn = () => undefined;
|
|
78
|
-
this.waitForIdleFn = async () => { };
|
|
79
|
-
this.abortFn = () => { };
|
|
80
|
-
this.hasPendingMessagesFn = () => false;
|
|
81
|
-
this.getContextUsageFn = () => undefined;
|
|
82
|
-
this.compactFn = () => { };
|
|
83
|
-
this.getSystemPromptFn = () => "";
|
|
84
|
-
this.getSystemPromptOptionsFn = () => normalizeBuildSystemPromptOptions({ cwd: this.cwd });
|
|
85
|
-
this.getSkillCatalogFn = undefined;
|
|
86
|
-
this.getRouterModelFn = undefined;
|
|
87
|
-
this.newSessionHandler = async () => ({ cancelled: false });
|
|
88
|
-
this.forkHandler = async () => ({ cancelled: false });
|
|
89
|
-
this.navigateTreeHandler = async () => ({ cancelled: false });
|
|
90
|
-
this.switchSessionHandler = async () => ({ cancelled: false });
|
|
91
|
-
this.reloadHandler = async () => { };
|
|
92
|
-
this.shutdownHandler = () => { };
|
|
93
|
-
this.shortcutDiagnostics = [];
|
|
94
|
-
this.commandDiagnostics = [];
|
|
95
|
-
this.authorityRevoked = false;
|
|
96
|
-
this.contextOwner = {};
|
|
97
|
-
this.uiPromptBinding = 0;
|
|
98
|
-
this.pendingUIPromptNotifications = new Set();
|
|
99
114
|
this.extensions = extensions;
|
|
100
115
|
this.runtime = runtime;
|
|
101
116
|
sessionLifecycleScopes.set(this, lifecycleScopeForOwner(runtime));
|
|
@@ -141,6 +156,7 @@ export class ExtensionRunner {
|
|
|
141
156
|
contextActions.getSystemPromptOptions ?? (() => normalizeBuildSystemPromptOptions({ cwd: this.cwd }));
|
|
142
157
|
this.getSkillCatalogFn = contextActions.getSkillCatalog;
|
|
143
158
|
this.getRouterModelFn = contextActions.getRouterModel;
|
|
159
|
+
this.getModelRoutingFn = contextActions.getModelRouting;
|
|
144
160
|
// Flush provider registrations queued during extension loading.
|
|
145
161
|
for (const registration of this.runtime.pendingProviderRegistrations) {
|
|
146
162
|
try {
|
|
@@ -347,6 +363,7 @@ export class ExtensionRunner {
|
|
|
347
363
|
...(prompt.title === undefined ? {} : { title: prompt.title }),
|
|
348
364
|
});
|
|
349
365
|
}
|
|
366
|
+
pendingUIPromptNotifications = new Set();
|
|
350
367
|
emitUIPromptEvent(event) {
|
|
351
368
|
const delivery = Promise.resolve().then(async () => {
|
|
352
369
|
await this.emit(event);
|
|
@@ -533,6 +550,7 @@ export class ExtensionRunner {
|
|
|
533
550
|
getSystemPrompt: () => this.getSystemPromptFn(),
|
|
534
551
|
...(this.getSkillCatalogFn ? { getSkillCatalog: () => this.getSkillCatalogFn() } : {}),
|
|
535
552
|
...(this.getRouterModelFn ? { getRouterModel: () => this.getRouterModelFn() } : {}),
|
|
553
|
+
...(this.getModelRoutingFn ? { getModelRouting: () => this.getModelRoutingFn() } : {}),
|
|
536
554
|
getSystemPromptOptions: () => this.getSystemPromptOptionsFn(),
|
|
537
555
|
waitForIdle: () => this.waitForIdleFn(),
|
|
538
556
|
newSession: (options) => this.newSessionHandler(options),
|