@bastani/atomic 0.9.21-alpha.1 → 0.9.21-alpha.2
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 +27 -0
- package/dist/builtin/intercom/package.json +1 -1
- package/dist/builtin/mcp/package.json +1 -1
- package/dist/builtin/subagents/CHANGELOG.md +11 -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 +11 -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-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":"supervisor.js","sourceRoot":"","sources":["../../../src/core/tasks/supervisor.ts"],"names":[],"mappings":"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","sourcesContent":["import { AsyncResource } from \"node:async_hooks\";\nimport type * as native from \"@bastani/atomic-natives\";\nimport type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport { createModuleRequire } from \"../../utils/module-require.ts\";\nimport type { AgentSessionEvent } from \"../agent-session.js\";\nimport type { SessionManager } from \"../session-manager.ts\";\nimport { COMMAND_FOREGROUND_BUDGET_MS } from \"./command-output.js\";\nimport type { TaskCompletionSource } from \"./completion-ordering.js\";\nimport type * as C from \"./contracts.js\";\n\nexport type TaskTranscriptSource = Pick<SessionManager, \"getSessionId\" | \"getEntries\"> & {\n\treadonly completionSource?: TaskCompletionSource;\n\t/** Viewer-only subscription; updates never publish task lifecycle events. */\n\tsubscribe?(listener: (event: AgentSessionEvent) => void): () => void;\n\tgetStreamingMessage?(): AgentMessage | undefined;\n};\n\nexport const DEFAULT_AGENT_WAIT_BUDGET_MS = 30000;\n/** These objects are live authority, not DTOs, restart tokens or model arguments. */\nclass Capability {\n\t#live = true;\n\ttoJSON(): never {\n\t\tthrow new TypeError(`Task capability is not serializable (${this.#live ? \"live\" : \"closed\"})`);\n\t}\n}\nclass HostCapability extends Capability {\n\treadonly kind = \"host\";\n}\nclass OwnerCapability extends Capability {\n\treadonly kind = \"owner\";\n}\nclass TaskCapability extends Capability {\n\treadonly kind = \"task\";\n}\nclass WaitCapability extends Capability {\n\treadonly kind = \"wait\";\n}\nclass SubscriptionCapability extends Capability {\n\treadonly kind = \"subscription\";\n}\nclass StdinCapability extends Capability {\n\treadonly kind = \"stdin\";\n}\nexport type StdinLease = StdinCapability;\nexport type HostSession = HostCapability;\nexport type OwnerLease = OwnerCapability;\nexport type TaskLease = TaskCapability;\nexport type WaitLease = WaitCapability;\nexport type SubscriptionLease = SubscriptionCapability;\n\nexport type FakeRunnerContext = {\n\tref: C.NativeTaskRef;\n\tsignal: AbortSignal;\n\treportActivity(report: C.ActivityReport): C.Result<C.ReportReceipt, C.ReportError>;\n\t/** Bind existing child history while holding the admitted runner authority. */\n\tbindTranscript(session: TaskTranscriptSource): void;\n};\n/** Independent cleanup evidence: an outcome alone never proves resource release. */\nexport type FakeExecution = { result: Promise<C.TaskResult>; cleanup: Promise<C.Cleanup> };\nexport type TrustedTaskHost = {\n\tscope: C.OwnerScope;\n\t/** Owner-host observation settings; never an execution deadline. */\n\ttasks?: { wait?: C.TaskWaitConfiguration };\n\t/** The existing host/tool refusal throws here, before native admission. */\n\tauthorizeCommandLaunch?(intent: C.CommandIntent): void;\n\tauthorizeLaunch(intent: C.AgentIntent): void;\n\tonTaskSettled?(ref: C.NativeTaskRef, receipt: C.SettlementReceipt): void;\n\tcreateRunner(context: FakeRunnerContext, intent: C.AgentIntent): FakeExecution;\n};\ntype HostState = { native: native.HostSession; binding: TrustedTaskHost };\ntype OwnerState = {\n\tnative: native.OwnerLease;\n\thost: HostState;\n\ttasks: Map<C.TaskId, TaskLease>;\n\twatches: Set<TaskSubscription>;\n\tsettledTasks: Set<C.TaskId>;\n\tcommandAdmissions: Set<Promise<void>>;\n};\ntype TaskState = {\n\tnative: native.TaskLease;\n\towner: OwnerState;\n\tref: C.NativeTaskRef;\n\tcontroller: AbortController;\n\tkind?: \"command\";\n\texecution?: Promise<C.Result<C.Cleanup, C.ReportError>>;\n\ttranscript?: TaskTranscriptSource;\n\tinheritedEntryCount?: number;\n};\ntype WaitState = { native: native.WaitLease; outcome: Promise<C.Result<C.WaitOutcome, C.WaitError>> };\n\n// Native supervisors share one actor per environment; their JS continuations must too.\nconst environment = {\n\thosts: new WeakMap<HostSession, HostState>(),\n\towners: new WeakMap<OwnerLease, OwnerState>(),\n\ttasks: new WeakMap<TaskLease, TaskState>(),\n\tinputs: new WeakMap<StdinLease, native.StdinLease>(),\n\twaits: new WeakMap<WaitLease, WaitState>(),\n\twaitRegistry: new Map<C.WaitId, WaitLease>(),\n\townerIds: new Map<C.OwnerId, OwnerLease>(),\n};\n\n/** Reads only history bound by the admitted runner, never a caller-selected session. */\nexport function taskTranscriptSource(\n\ttask: TaskLease,\n): C.Result<{ session: TaskTranscriptSource; taskId: C.TaskId }, C.Failure<\"UnknownTask\" | \"TranscriptUnavailable\">> {\n\tconst state = environment.tasks.get(task);\n\tif (!state) return { ok: false, error: { code: \"UnknownTask\", message: \"Unknown task\" } };\n\tif (!state.transcript)\n\t\treturn { ok: false, error: { code: \"TranscriptUnavailable\", message: \"Transcript unavailable\" } };\n\treturn { ok: true, value: { session: state.transcript, taskId: state.ref.taskId } };\n}\n\n/** History the runner produced; a forked child's inherited parent entries are excluded. */\nexport function taskOwnTranscriptEntries(task: TaskLease): ReturnType<TaskTranscriptSource[\"getEntries\"]> | undefined {\n\tconst state = environment.tasks.get(task);\n\treturn state?.transcript?.getEntries().slice(state.inheritedEntryCount ?? 0);\n}\n\n/** Promise rejections, setup throws and consumer exceptions may be arbitrary JavaScript values. */\nfunction rejectionMessage<T>(reason: T): string {\n\ttry {\n\t\tconst message = reason instanceof Error ? reason.message : reason;\n\t\treturn typeof message === \"string\" ? message : String(message);\n\t} catch {\n\t\treturn \"Unprintable JavaScript rejection\";\n\t}\n}\nfunction mapped<T, U, Code extends string>(\n\tresult: C.Result<T, native.TaskFailure>,\n\tconvert: (value: T) => U,\n\tcodes: readonly Code[],\n): C.Result<U, C.Failure<Code>> {\n\tif (result.ok) return { ok: true, value: convert(result.value) };\n\tconst code = codes.find((candidate) => candidate === result.error.code);\n\tif (!code) throw new Error(`Unexpected native task refusal: ${result.error.code}: ${result.error.message}`);\n\treturn { ok: false, error: { code, message: result.error.message } };\n}\nconst ownerErrors = [\"ScopeMismatch\", \"EnvironmentClosing\"] as const;\nconst startErrors = [\n\t\"OwnerClosing\",\n\t\"UnknownAgent\",\n\t\"InvalidCwd\",\n\t\"DepthExceeded\",\n\t\"CapacityExhausted\",\n\t\"DispatchGuardBusy\",\n\t\"OperationConflict\",\n\t\"RunnerUnavailable\",\n\t\"SpawnFailed\",\n\t\"ContainmentUnavailable\",\n] as const;\nconst waitErrors = [\"UnknownTask\", \"OwnerClosed\", \"EnvironmentClosing\", \"ScopeMismatch\", \"ObserverCancelled\"] as const;\nconst reportErrors = [\"StaleAttempt\", \"OwnerClosing\", \"TaskTerminal\", \"ReportConflict\"] as const;\nconst watchErrors = [\"OwnerClosed\", \"StaleGeneration\", \"EnvironmentClosing\"] as const;\nfunction reference(value: native.NativeTaskRef): C.NativeTaskRef {\n\treturn {\n\t\townerId: value.ownerId as C.OwnerId,\n\t\ttaskId: value.taskId as C.TaskId,\n\t\tattemptId: value.attemptId as C.AttemptId,\n\t\tgeneration: value.generation as C.Generation,\n\t};\n}\nfunction cursor(value: native.Cursor): C.Cursor {\n\treturn { generation: value.generation as C.Generation, sequence: value.sequence as C.Sequence };\n}\nfunction output(value: native.OutputRef): C.OutputRef {\n\treturn {\n\t\townerId: value.ownerId as C.OwnerId,\n\t\ttaskId: value.taskId as C.TaskId,\n\t\tartifactId: value.artifactId,\n\t\tbyteCount: value.byteCount,\n\t\tomittedRanges: value.omittedRanges.map(({ start, end }) => ({ start, end })),\n\t};\n}\nfunction taskResult(value: native.TaskResult): C.TaskResult {\n\tswitch (value.kind) {\n\t\tcase \"completed\":\n\t\t\treturn {\n\t\t\t\tkind: value.kind,\n\t\t\t\toutput: output(value.output),\n\t\t\t\t...(value.exitCode === undefined ? {} : { exitCode: value.exitCode }),\n\t\t\t};\n\t\tcase \"failed\":\n\t\t\treturn {\n\t\t\t\tkind: value.kind,\n\t\t\t\tcode: value.code,\n\t\t\t\tmessage: value.message,\n\t\t\t\t...(value.output === undefined ? {} : { output: output(value.output) }),\n\t\t\t\t...(value.exitCode === undefined ? {} : { exitCode: value.exitCode }),\n\t\t\t};\n\t\tcase \"cancelled\":\n\t\t\treturn {\n\t\t\t\tkind: value.kind,\n\t\t\t\tcause: value.cause,\n\t\t\t\t...(value.output === undefined ? {} : { output: output(value.output) }),\n\t\t\t};\n\t}\n}\nfunction execution(value: native.Execution): C.Execution {\n\treturn value.kind === \"settled\" ? { kind: \"settled\", result: taskResult(value.result) } : value;\n}\nfunction observation(value: native.HostObservation): C.HostObservation {\n\tif (value.kind === \"foreground\") return { kind: value.kind, waitId: value.waitId as C.WaitId };\n\tif (value.kind === \"none\" && (value.reason === \"task-settled\" || value.reason === \"owner-closing\"))\n\t\treturn { kind: value.kind, reason: value.reason };\n\tconst reasons = [\n\t\t\"explicit\",\n\t\t\"default-background\",\n\t\t\"elapsed\",\n\t\t\"intercom-coordination\",\n\t\t\"input-needed\",\n\t\t\"not-observed\",\n\t\t\"observer-cancelled\",\n\t] as const;\n\tconst reason = reasons.find((reason) => reason === value.reason);\n\tif (value.kind === \"background\" && reason) return { kind: value.kind, reason };\n\tthrow new Error(\"Invalid native host observation\");\n}\n// Native records own lifecycle and mutable execution metadata. Routing provenance is\n// immutable host metadata, retained for the same environment lifetime as task records.\nconst routerSelections = new Map<string, C.RouterSelection>();\nfunction record(value: native.TaskRecord): C.TaskRecord {\n\tif (value.kind !== \"agent\" && value.kind !== \"command\") throw new Error(`Invalid native task kind: ${value.kind}`);\n\tconst routerSelection = routerSelections.get(value.ref.taskId);\n\treturn {\n\t\tref: reference(value.ref),\n\t\tlaunchOperationId: value.launchOperationId as C.OperationId,\n\t\t...(value.parentTaskId === undefined ? {} : { parentTaskId: value.parentTaskId as C.TaskId }),\n\t\t...(value.launchGroupId === undefined ? {} : { launchGroupId: value.launchGroupId }),\n\t\tlaunchOrdinal: value.launchOrdinal,\n\t\tkind: value.kind,\n\t\ttitle: value.title,\n\t\t...(value.agentName === undefined ? {} : { agentName: value.agentName }),\n\t\t...(value.model === undefined ? {} : { model: value.model }),\n\t\t...(value.thinking === undefined ? {} : { thinking: value.thinking }),\n\t\t...(routerSelection ? { routerSelection } : {}),\n\t\texecution: execution(value.execution),\n\t\tobservation: observation(value.observation),\n\t\t...(value.wasBackground === undefined ? {} : { wasBackground: value.wasBackground }),\n\t\tattention: value.attention,\n\t\tcleanup: value.cleanup,\n\t\t...(value.currentAction === undefined\n\t\t\t? {}\n\t\t\t: { currentAction: { tool: value.currentAction.tool, text: value.currentAction.text } }),\n\t\t...(value.metrics === undefined\n\t\t\t? {}\n\t\t\t: {\n\t\t\t\t\tmetrics: {\n\t\t\t\t\t\t...(value.metrics.elapsedMs === undefined ? {} : { elapsedMs: value.metrics.elapsedMs }),\n\t\t\t\t\t\t...(value.metrics.toolCount === undefined ? {} : { toolCount: value.metrics.toolCount }),\n\t\t\t\t\t\t...(value.metrics.tokenCount === undefined ? {} : { tokenCount: value.metrics.tokenCount }),\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\toutput: output(value.output),\n\t};\n}\nfunction snapshot(value: native.OwnerSnapshot): C.OwnerSnapshot {\n\tif (value.state !== \"open\" && value.state !== \"closing\" && value.state !== \"closed\")\n\t\tthrow new Error(`Invalid native owner state: ${value.state}`);\n\treturn {\n\t\townerId: value.ownerId as C.OwnerId,\n\t\tscope: value.scope,\n\t\tgeneration: value.generation as C.Generation,\n\t\tstate: value.state,\n\t\ttasks: value.tasks.map(record),\n\t\tcursor: cursor(value.cursor),\n\t};\n}\nfunction activity(value: native.ActivityReport): C.ActivityReport {\n\tif (value.change.kind === \"attention-set\" && value.change.attention.kind === \"none\")\n\t\tthrow new Error(\"Native attention-set cannot clear attention\");\n\t// Native tagged variants are owned wire data; only attention-set has a wider generated declaration.\n\treturn value as C.ActivityReport;\n}\nfunction payload(value: native.TaskEvent): C.TaskEvent {\n\tswitch (value.kind) {\n\t\tcase \"task-admitted\":\n\t\t\treturn { kind: value.kind, task: record(value.task) };\n\t\tcase \"task-started\":\n\t\t\treturn { kind: value.kind, ref: reference(value.ref) };\n\t\tcase \"wait-started\": {\n\t\t\tif (value.observer !== \"sdk\" && value.observer !== \"host\") throw new Error(\"Invalid native observer\");\n\t\t\treturn {\n\t\t\t\tkind: value.kind,\n\t\t\t\tref: reference(value.ref),\n\t\t\t\twaitId: value.waitId as C.WaitId,\n\t\t\t\tobserver: value.observer,\n\t\t\t};\n\t\t}\n\t\tcase \"wait-yielded\":\n\t\t\treturn { kind: value.kind, ref: reference(value.ref), waitId: value.waitId as C.WaitId, reason: value.reason };\n\t\tcase \"host-observation-changed\":\n\t\t\treturn { kind: value.kind, ref: reference(value.ref), observation: observation(value.observation) };\n\t\tcase \"task-activity\":\n\t\t\treturn { kind: value.kind, ref: reference(value.ref), activity: activity(value.activity) };\n\t\tcase \"task-cancelling\":\n\t\t\treturn { kind: value.kind, ref: reference(value.ref), cause: value.cause };\n\t\tcase \"task-settled\":\n\t\t\treturn {\n\t\t\t\tkind: value.kind,\n\t\t\t\tref: reference(value.ref),\n\t\t\t\tresult: taskResult(value.result),\n\t\t\t\tcompletionId: value.completionId,\n\t\t\t};\n\t\tcase \"cleanup-changed\":\n\t\t\treturn { kind: value.kind, ref: reference(value.ref), cleanup: value.cleanup };\n\t\tcase \"owner-closing\":\n\t\tcase \"owner-closed\":\n\t\t\treturn { kind: value.kind };\n\t}\n}\nfunction event(value: native.NativeEvent): C.NativeEvent {\n\tif (value.schemaVersion !== 1) throw new Error(\"Unsupported native task event schema\");\n\treturn {\n\t\tschemaVersion: 1,\n\t\tcursor: cursor(value.cursor),\n\t\townerId: value.ownerId as C.OwnerId,\n\t\t...(value.taskId === undefined ? {} : { taskId: value.taskId as C.TaskId }),\n\t\tpayload: payload(value.payload),\n\t};\n}\nfunction waitOutcome(value: native.WaitOutcome): C.WaitOutcome {\n\treturn value.kind === \"settled\"\n\t\t? { kind: value.kind, taskId: value.taskId as C.TaskId, result: taskResult(value.result) }\n\t\t: { kind: value.kind, taskId: value.taskId as C.TaskId, waitId: value.waitId as C.WaitId, reason: value.reason };\n}\nfunction cancelReceipt(value: native.CancelReceipt): C.CancelReceipt {\n\tif (value.decision !== \"already-settled\" && value.decision !== \"cancellation-requested\")\n\t\tthrow new Error(\"Invalid cancellation decision\");\n\treturn {\n\t\ttaskId: value.taskId as C.TaskId,\n\t\tdecision: value.decision,\n\t\texecution: execution(value.execution),\n\t\tcleanup: value.cleanup,\n\t};\n}\n\nfunction reportReceipt(value: native.ReportReceipt): C.ReportReceipt {\n\tif (value.disposition !== \"accepted\" && value.disposition !== \"duplicate\")\n\t\tthrow new Error(\"Invalid report disposition\");\n\treturn { reportId: value.reportId, cursor: cursor(value.cursor), disposition: value.disposition };\n}\n/** Projection only: native ordering remains the sole lifecycle authority. */\nfunction applyEvent(current: C.OwnerSnapshot, value: C.NativeEvent): C.OwnerSnapshot {\n\tconst next: C.OwnerSnapshot = { ...current, tasks: [...current.tasks], cursor: value.cursor };\n\tconst change = value.payload;\n\tif (change.kind === \"owner-closing\") {\n\t\tnext.state = \"closing\";\n\t\tnext.tasks = next.tasks.map((task) =>\n\t\t\ttask.execution.kind === \"settled\" ? task : { ...task, attention: { kind: \"none\" } },\n\t\t);\n\t\treturn next;\n\t}\n\tif (change.kind === \"owner-closed\") {\n\t\tnext.state = \"closed\";\n\t\treturn next;\n\t}\n\tif (change.kind === \"task-admitted\") {\n\t\tnext.tasks.push(change.task);\n\t\treturn next;\n\t}\n\tconst index = next.tasks.findIndex((task) => task.ref.taskId === change.ref.taskId);\n\tif (index < 0) throw new Error(\"Native delta references a task absent from its snapshot\");\n\tconst task: C.TaskRecord = { ...next.tasks[index] };\n\tnext.tasks[index] = task;\n\tswitch (change.kind) {\n\t\tcase \"task-started\":\n\t\t\ttask.execution = { kind: \"running\" };\n\t\t\tbreak;\n\t\tcase \"host-observation-changed\":\n\t\t\ttask.observation = change.observation;\n\t\t\tif (change.observation.kind === \"background\" && change.observation.reason !== \"not-observed\")\n\t\t\t\ttask.wasBackground = true;\n\t\t\tbreak;\n\t\tcase \"task-cancelling\":\n\t\t\ttask.execution = { kind: \"cancelling\", cause: change.cause };\n\t\t\tbreak;\n\t\tcase \"task-settled\":\n\t\t\ttask.execution = { kind: \"settled\", result: change.result };\n\t\t\ttask.attention = { kind: \"none\" };\n\t\t\tif (change.result.output !== undefined) task.output = change.result.output;\n\t\t\tbreak;\n\t\tcase \"cleanup-changed\":\n\t\t\ttask.cleanup = change.cleanup;\n\t\t\tbreak;\n\t\tcase \"task-activity\": {\n\t\t\tconst activity = change.activity.change;\n\t\t\tswitch (activity.kind) {\n\t\t\t\tcase \"action\":\n\t\t\t\t\ttask.currentAction = { tool: activity.tool, text: activity.text };\n\t\t\t\t\tif (task.attention.kind === \"no-recent-activity\") task.attention = { kind: \"none\" };\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"model\":\n\t\t\t\t\ttask.model = activity.model;\n\t\t\t\t\ttask.thinking = activity.thinking;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"metrics\":\n\t\t\t\t\ttask.metrics = {\n\t\t\t\t\t\t...task.metrics,\n\t\t\t\t\t\t...(activity.elapsedMs === undefined ? {} : { elapsedMs: activity.elapsedMs }),\n\t\t\t\t\t\t...(activity.toolCount === undefined ? {} : { toolCount: activity.toolCount }),\n\t\t\t\t\t\t...(activity.tokenCount === undefined ? {} : { tokenCount: activity.tokenCount }),\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"attention-set\":\n\t\t\t\t\ttask.attention = activity.attention;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"attention-clear\":\n\t\t\t\t\tif (task.attention.kind === \"input-needed\" && task.attention.requestId === activity.requestId)\n\t\t\t\t\t\ttask.attention = { kind: \"none\" };\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"output\":\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tcase \"wait-started\":\n\t\tcase \"wait-yielded\":\n\t\t\tbreak;\n\t}\n\treturn next;\n}\n/** One bounded wake poll per live subscription, including a journal with no retained event. */\nconst RECONCILE_INTERVAL_MS = 25;\nconst MAX_PENDING_EVENTS = 64;\nexport class TaskSubscription {\n\t#native: native.TaskSupervisor;\n\t#lease: native.SubscriptionLease;\n\t#resource = new AsyncResource(\"TaskSubscription\");\n\t#timer?: ReturnType<typeof setTimeout>;\n\t#queue: C.NativeEvent[] = [];\n\t#epoch = 0;\n\t#next?: (value: IteratorResult<C.NativeEvent>) => void;\n\t#disposed = false;\n\t#snapshot: C.OwnerSnapshot;\n\t#cursor: C.Cursor;\n\t/** Reconciliation supplements the RFC snapshot/cursor/iterable contract with the events it applied. */\n\tonReconcile: (snapshot: C.OwnerSnapshot, events: readonly C.NativeEvent[]) => void = () => {};\n\t#onDispose: () => void;\n\t#failure?: Error;\n\treadonly events: AsyncIterable<C.NativeEvent>;\n\treadonly lease: SubscriptionLease = new SubscriptionCapability();\n\n\tconstructor(actor: native.TaskSupervisor, initial: native.NativeTaskSubscription, onDispose: () => void) {\n\t\tObject.freeze(this.lease);\n\t\tthis.#native = actor;\n\t\tthis.#lease = initial.lease;\n\t\tthis.#snapshot = snapshot(initial.snapshot);\n\t\tthis.#cursor = cursor(initial.cursor);\n\t\tthis.#onDispose = onDispose;\n\t\tthis.events = {\n\t\t\t[Symbol.asyncIterator]: () => {\n\t\t\t\tconst epoch = this.#epoch;\n\t\t\t\treturn {\n\t\t\t\t\tnext: () => {\n\t\t\t\t\t\tif (epoch !== this.#epoch) return Promise.resolve({ done: true, value: undefined });\n\t\t\t\t\t\tconst value = this.#queue.shift();\n\t\t\t\t\t\tif (value) return Promise.resolve({ done: false, value });\n\t\t\t\t\t\tif (this.#disposed) return Promise.resolve({ done: true, value: undefined });\n\t\t\t\t\t\tif (this.#next) return Promise.reject(new Error(\"Only one pending subscription read is supported\"));\n\t\t\t\t\t\treturn new Promise((resolve) => {\n\t\t\t\t\t\t\tthis.#next = resolve;\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\treturn: async () => {\n\t\t\t\t\t\tif (epoch === this.#epoch) this.dispose();\n\t\t\t\t\t\treturn { done: true, value: undefined };\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t},\n\t\t};\n\t\tthis.#arm();\n\t}\n\tget snapshot(): C.OwnerSnapshot {\n\t\treturn this.#snapshot;\n\t}\n\tget cursor(): C.Cursor {\n\t\treturn this.#cursor;\n\t}\n\t/** Consumer exceptions are observable without breaking the native wake or fallback poll. */\n\tget failure(): Error | undefined {\n\t\treturn this.#failure;\n\t}\n\t/** Callback payloads are authentic hints; only the journal/snapshot is authoritative. */\n\twake(_hint: native.NativeEvent): void {\n\t\tthis.#resource.runInAsyncScope(() => this.drain());\n\t}\n\t#arm(): void {\n\t\tif (this.#disposed || this.#timer) return;\n\t\tthis.#timer = setTimeout(() => {\n\t\t\tthis.#timer = undefined;\n\t\t\tthis.#resource.runInAsyncScope(() => this.drain());\n\t\t\tthis.#arm();\n\t\t}, RECONCILE_INTERVAL_MS);\n\t\tthis.#timer.unref();\n\t}\n\tdrain(): void {\n\t\tif (this.#disposed) return;\n\t\tconst drained = this.#native.drainOwnerTasks(this.#lease);\n\t\tif (!drained.ok) {\n\t\t\tthis.dispose();\n\t\t\treturn;\n\t\t}\n\t\tconst events = drained.value.events.map(event);\n\t\tif (drained.value.snapshot) this.#snapshot = snapshot(drained.value.snapshot);\n\t\tfor (const value of events) {\n\t\t\tif (BigInt(value.cursor.sequence) > BigInt(this.#snapshot.cursor.sequence))\n\t\t\t\tthis.#snapshot = applyEvent(this.#snapshot, value);\n\t\t}\n\t\tthis.#cursor = cursor(drained.value.cursor);\n\t\tthis.#snapshot = { ...this.#snapshot, cursor: this.#cursor };\n\t\tconst overflow = this.#queue.length + events.length > MAX_PENDING_EVENTS;\n\t\tconst reset = drained.value.reset || overflow;\n\t\tif (reset) {\n\t\t\tthis.#queue = [];\n\t\t\tthis.#epoch++;\n\t\t\t// End the old iterator only after publishing the authoritative snapshot/cursor.\n\t\t\t// A new iterator on the same iterable observes subsequent authentic deltas.\n\t\t\tthis.#next?.({ done: true, value: undefined });\n\t\t\tthis.#next = undefined;\n\t\t}\n\t\tif (drained.value.snapshot || events.length) {\n\t\t\ttry {\n\t\t\t\tthis.#resource.runInAsyncScope(this.onReconcile, undefined, this.#snapshot, events);\n\t\t\t} catch (error) {\n\t\t\t\tthis.#failure = new Error(rejectionMessage(error));\n\t\t\t}\n\t\t}\n\t\tif (this.#disposed) return;\n\t\tif (!reset)\n\t\t\tfor (const value of events) {\n\t\t\t\tif (this.#next) {\n\t\t\t\t\tconst next = this.#next;\n\t\t\t\t\tthis.#next = undefined;\n\t\t\t\t\tnext({ done: false, value });\n\t\t\t\t} else this.#queue.push(value);\n\t\t\t}\n\t\tif (this.#snapshot.state === \"closed\") this.dispose(false);\n\t}\n\tdispose(clear = true): void {\n\t\tif (this.#disposed) return;\n\t\tthis.#disposed = true;\n\t\tif (this.#timer) clearTimeout(this.#timer);\n\t\tthis.#timer = undefined;\n\t\tthis.#native.disposeSubscription(this.#lease);\n\t\tif (clear) this.#queue = [];\n\t\tthis.#next?.({ done: true, value: undefined });\n\t\tthis.#next = undefined;\n\t\tthis.#resource.emitDestroy();\n\t\tthis.#onDispose();\n\t}\n}\n\nfunction createNativeSupervisor(): native.TaskSupervisor {\n\t// Keep loading separate from `new`: type-assertion erasure in the build\n\t// must not move construction onto createModuleRequire instead of the class.\n\tconst binding = createModuleRequire(import.meta.url)(\"@bastani/atomic-natives\") as typeof native;\n\treturn new binding.TaskSupervisor();\n}\n\nexport class TaskSupervisor {\n\t#native = createNativeSupervisor();\n\t#hosts = environment.hosts;\n\t#owners = environment.owners;\n\t#tasks = environment.tasks;\n\t#waits = environment.waits;\n\t#waitRegistry = environment.waitRegistry;\n\t#ownerIds = environment.ownerIds;\n\tbindHostSession(binding: TrustedTaskHost): HostSession {\n\t\tconst host = new HostCapability();\n\t\tObject.freeze(host);\n\t\tthis.#hosts.set(host, { native: this.#native.bindHostSession(binding.scope), binding });\n\t\treturn host;\n\t}\n\topenTaskOwner(host: HostSession, scope: C.OwnerScope): C.Result<OwnerLease, C.OwnerError> {\n\t\tconst state = this.#host(host);\n\t\treturn mapped(\n\t\t\tthis.#native.openTaskOwner(state.native, scope),\n\t\t\t(lease) => {\n\t\t\t\tconst probe = this.#native.watchOwnerTasks(lease, (_hint) => {});\n\t\t\t\tif (!probe.ok) throw new Error(probe.error.message);\n\t\t\t\tconst id = probe.value.snapshot.ownerId as C.OwnerId;\n\t\t\t\tthis.#native.disposeSubscription(probe.value.lease);\n\t\t\t\tconst existing = this.#ownerIds.get(id);\n\t\t\t\tif (existing) return existing;\n\t\t\t\tconst owner = new OwnerCapability();\n\t\t\t\tObject.freeze(owner);\n\t\t\t\tconst ownerState: OwnerState = {\n\t\t\t\t\tnative: lease,\n\t\t\t\t\thost: state,\n\t\t\t\t\ttasks: new Map(),\n\t\t\t\t\twatches: new Set(),\n\t\t\t\t\tsettledTasks: new Set(),\n\t\t\t\t\tcommandAdmissions: new Set(),\n\t\t\t\t};\n\t\t\t\tthis.#owners.set(owner, ownerState);\n\t\t\t\tthis.#ownerIds.set(id, owner);\n\t\t\t\tconst watched = this.watchOwnerTasks(owner);\n\t\t\t\tif (!watched.ok) throw new Error(watched.error.message);\n\t\t\t\twatched.value.onReconcile = (projection) => {\n\t\t\t\t\tif (projection.state === \"closed\") this.#ownerIds.delete(projection.ownerId);\n\t\t\t\t\tfor (const record of projection.tasks) {\n\t\t\t\t\t\tconst cause =\n\t\t\t\t\t\t\trecord.execution.kind === \"cancelling\"\n\t\t\t\t\t\t\t\t? record.execution.cause\n\t\t\t\t\t\t\t\t: projection.state !== \"open\" && record.cleanup.kind !== \"reaped\"\n\t\t\t\t\t\t\t\t\t? \"owner-close\"\n\t\t\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\t\tif (!cause) continue;\n\t\t\t\t\t\tconst task = this.#owner(owner).tasks.get(record.ref.taskId);\n\t\t\t\t\t\tif (task) this.#task(task).controller.abort(cause);\n\t\t\t\t\t}\n\t\t\t\t\tlet failure: Error | undefined;\n\t\t\t\t\tfor (const record of projection.tasks) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\trecord.execution.kind !== \"settled\" ||\n\t\t\t\t\t\t\townerState.settledTasks.has(record.ref.taskId) ||\n\t\t\t\t\t\t\t!state.binding.onTaskSettled\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t// Cancellation settles at cleanup (or while queued), without a runner outcome.\n\t\t\t\t\t\t\t// Recover its authentic receipt even when the bounded journal has reset.\n\t\t\t\t\t\t\tconst task = this.#native.lookupTask(lease, record.ref.taskId);\n\t\t\t\t\t\t\tif (!task.ok) throw new Error(task.error.message);\n\t\t\t\t\t\t\tconst settled = this.#native.taskSettlement(task.value);\n\t\t\t\t\t\t\tif (!settled.ok) throw new Error(settled.error.message);\n\t\t\t\t\t\t\tthis.#notifyTaskSettled(ownerState, record.ref, settled.value);\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tfailure ??= new Error(rejectionMessage(error));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (failure) throw failure;\n\t\t\t\t};\n\t\t\t\twatched.value.onReconcile(watched.value.snapshot, []);\n\t\t\t\treturn owner;\n\t\t\t},\n\t\t\townerErrors,\n\t\t);\n\t}\n\t#notifyTaskSettled(state: OwnerState, ref: C.NativeTaskRef, receipt: native.SettlementReceipt): void {\n\t\tif (!state.host.binding.onTaskSettled || state.settledTasks.has(ref.taskId)) return;\n\t\t// Runner outcomes and snapshot recovery share one delivery door. Mark before\n\t\t// host code so reentrant drains or callback failures cannot redeliver.\n\t\tstate.settledTasks.add(ref.taskId);\n\t\tstate.host.binding.onTaskSettled(ref, {\n\t\t\ttaskId: receipt.taskId as C.TaskId,\n\t\t\tcursor: cursor(receipt.cursor),\n\t\t\tresult: taskResult(receipt.result),\n\t\t\tcompletionId: receipt.completionId,\n\t\t});\n\t}\n\tasync startCommandTask(\n\t\towner: OwnerLease,\n\t\tintent: C.CommandIntent,\n\t\toperation: C.OperationId,\n\t): Promise<C.Result<TaskLease, C.StartFailure>> {\n\t\tconst state = this.#owner(owner);\n\t\tstate.host.binding.authorizeCommandLaunch?.(intent);\n\t\t// Native command setup can be admitted before its task lease is visible in JS.\n\t\tlet finishAdmission!: () => void;\n\t\tconst admission = new Promise<void>((resolve) => {\n\t\t\tfinishAdmission = resolve;\n\t\t});\n\t\tstate.commandAdmissions.add(admission);\n\t\ttry {\n\t\t\tconst admitted = mapped(\n\t\t\t\tawait this.#native.startCommandTask(state.native, intent, operation),\n\t\t\t\t(lease) => lease,\n\t\t\t\tstartErrors,\n\t\t\t);\n\t\t\tif (!admitted.ok) return admitted;\n\t\t\tconst ref = this.#native.taskReference(admitted.value);\n\t\t\tif (!ref.ok) throw new Error(ref.error.message);\n\t\t\tconst id = ref.value.taskId as C.TaskId;\n\t\t\tconst existing = state.tasks.get(id);\n\t\t\tif (existing) return { ok: true, value: existing };\n\t\t\tconst task = new TaskCapability();\n\t\t\tthis.#tasks.set(task, {\n\t\t\t\tnative: admitted.value,\n\t\t\t\towner: state,\n\t\t\t\tref: reference(ref.value),\n\t\t\t\tcontroller: new AbortController(),\n\t\t\t\tkind: \"command\",\n\t\t\t});\n\t\t\tstate.tasks.set(id, task);\n\t\t\treturn { ok: true, value: task };\n\t\t} finally {\n\t\t\tstate.commandAdmissions.delete(admission);\n\t\t\tfinishAdmission();\n\t\t}\n\t}\n\t/** Caller must hold launch authorization closed while this snapshot drains. */\n\tasync drainCommandAdmissions(owner: OwnerLease): Promise<void> {\n\t\tawait Promise.all([...this.#owner(owner).commandAdmissions]);\n\t}\n\ttaskStdin(task: TaskLease): C.Result<StdinLease, C.InputError> {\n\t\treturn mapped(\n\t\t\tthis.#native.taskStdin(this.#task(task).native),\n\t\t\t(input) => {\n\t\t\t\tconst lease = new StdinCapability();\n\t\t\t\tenvironment.inputs.set(lease, input);\n\t\t\t\treturn lease;\n\t\t\t},\n\t\t\t[\"TaskTerminal\", \"StdinClosed\", \"UnknownTask\", \"OutputUnavailable\"] as const,\n\t\t);\n\t}\n\tasync writeTaskInput(\n\t\tinput: StdinLease,\n\t\toperation: C.OperationId,\n\t\tdata: C.InputData,\n\t): Promise<C.Result<C.InputReceipt, C.InputError>> {\n\t\tconst lease = environment.inputs.get(input);\n\t\tif (!lease) throw new TypeError(\"Foreign stdin capability\");\n\t\treturn mapped(\n\t\t\tawait this.#native.writeTaskInput(\n\t\t\t\tlease,\n\t\t\t\toperation,\n\t\t\t\tdata.kind === \"bytes\" ? { kind: \"bytes\", bytes: Buffer.from(data.bytes) } : data,\n\t\t\t),\n\t\t\t(value) => ({\n\t\t\t\toperationId: value.operationId as C.OperationId,\n\t\t\t\tacceptedBytes: value.acceptedBytes,\n\t\t\t\tkind: value.kind as \"bytes\" | \"eof\",\n\t\t\t}),\n\t\t\t[\"TaskTerminal\", \"StdinClosed\", \"InputBackpressure\", \"OperationConflict\", \"InputDeliveryUnknown\"] as const,\n\t\t);\n\t}\n\tasync readTaskOutput(task: TaskLease, range: C.OutputRange): Promise<C.Result<C.OutputPage, C.OutputError>> {\n\t\treturn mapped(\n\t\t\tawait this.#native.readTaskOutput(this.#task(task).native, range),\n\t\t\t(page) => ({\n\t\t\t\trequested: page.requested,\n\t\t\t\tchunks: page.chunks.map((chunk) => ({ offsets: chunk.offsets, bytes: new Uint8Array(chunk.bytes) })),\n\t\t\t\tomittedRanges: page.omittedRanges,\n\t\t\t\t...(page.nextOffset === undefined ? {} : { nextOffset: page.nextOffset }),\n\t\t\t}),\n\t\t\t[\"UnknownTask\", \"OutputUnavailable\"] as const,\n\t\t);\n\t}\n\tasync startAgentTask(\n\t\towner: OwnerLease,\n\t\tintent: C.AgentIntent,\n\t\toperation: C.OperationId,\n\t\tschedule?: (dispatch: () => Promise<void>) => void,\n\t): Promise<C.Result<TaskLease, C.StartFailure>> {\n\t\tconst state = this.#owner(owner);\n\t\tstate.host.binding.authorizeLaunch(intent);\n\t\tconst admitted = mapped(\n\t\t\tthis.#native.startAgentTask(state.native, intent, operation),\n\t\t\t(lease) => lease,\n\t\t\tstartErrors,\n\t\t);\n\t\tif (!admitted.ok) return admitted;\n\t\tconst ref = this.#native.taskReference(admitted.value);\n\t\tif (!ref.ok) throw new Error(ref.error.message);\n\t\tconst id = ref.value.taskId as C.TaskId;\n\t\tconst existing = state.tasks.get(id);\n\t\tif (existing) return { ok: true, value: existing };\n\t\tif (intent.routerSelection) routerSelections.set(id, Object.freeze({ ...intent.routerSelection }));\n\t\tconst task = new TaskCapability();\n\t\tObject.freeze(task);\n\t\tconst taskState: TaskState = {\n\t\t\tnative: admitted.value,\n\t\t\towner: state,\n\t\t\tref: reference(ref.value),\n\t\t\tcontroller: new AbortController(),\n\t\t};\n\t\tthis.#tasks.set(task, taskState);\n\t\tstate.tasks.set(id, task);\n\t\tconst dispatch = AsyncResource.bind(async () => {\n\t\t\tif (taskState.controller.signal.aborted) return;\n\t\t\tconst runner = mapped(this.#native.claimTaskRunner(admitted.value), (lease) => lease, startErrors);\n\t\t\tif (!runner.ok) throw new Error(`${runner.error.code}: ${runner.error.message}`);\n\t\t\tlet execution: FakeExecution;\n\t\t\ttry {\n\t\t\t\texecution = state.host.binding.createRunner(\n\t\t\t\t\t{\n\t\t\t\t\t\tref: reference(taskState.ref),\n\t\t\t\t\t\tsignal: taskState.controller.signal,\n\t\t\t\t\t\tbindTranscript: (session) => {\n\t\t\t\t\t\t\ttaskState.inheritedEntryCount ??= session.getEntries().length;\n\t\t\t\t\t\t\ttaskState.transcript = session;\n\t\t\t\t\t\t},\n\t\t\t\t\t\treportActivity: (report) =>\n\t\t\t\t\t\t\tmapped(this.#native.reportTaskActivity(runner.value, report), reportReceipt, reportErrors),\n\t\t\t\t\t},\n\t\t\t\t\tintent,\n\t\t\t\t);\n\t\t\t} catch (error) {\n\t\t\t\tconst message = rejectionMessage(error);\n\t\t\t\texecution = {\n\t\t\t\t\tresult: Promise.resolve({ kind: \"failed\", code: \"SpawnFailed\", message }),\n\t\t\t\t\tcleanup: Promise.resolve({\n\t\t\t\t\t\tkind: \"failed\",\n\t\t\t\t\t\tresources: [{ resource: \"fake-runner-setup\", code: \"CleanupUnconfirmed\", message }],\n\t\t\t\t\t}),\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst outcome = execution.result\n\t\t\t\t.catch((error) => ({ kind: \"failed\" as const, code: \"RunnerFailed\", message: rejectionMessage(error) }))\n\t\t\t\t.then((result) => {\n\t\t\t\t\treturn mapped(\n\t\t\t\t\t\tthis.#native.reportRunnerOutcome(runner.value, result),\n\t\t\t\t\t\t(receipt) => this.#notifyTaskSettled(state, taskState.ref, receipt),\n\t\t\t\t\t\treportErrors,\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\tconst cleanup = execution.cleanup.catch(\n\t\t\t\t(error): C.Cleanup => ({\n\t\t\t\t\tkind: \"failed\",\n\t\t\t\t\tresources: [{ resource: \"fake-runner\", code: \"CleanupFailed\", message: rejectionMessage(error) }],\n\t\t\t\t}),\n\t\t\t);\n\t\t\ttaskState.execution = cleanup.then(async (evidence) => {\n\t\t\t\t// Natural reaping follows its outcome; cancellation needs only confirmed stop.\n\t\t\t\t// A result may never arrive after abort, including when cleanup arrived first.\n\t\t\t\tconst signal = taskState.controller.signal;\n\t\t\t\tlet stopped!: () => void;\n\t\t\t\tconst cancelled = new Promise<undefined>((resolve) => {\n\t\t\t\t\tstopped = () => resolve(undefined);\n\t\t\t\t\tif (signal.aborted) stopped();\n\t\t\t\t\telse signal.addEventListener(\"abort\", stopped, { once: true });\n\t\t\t\t});\n\t\t\t\tconst reported = await Promise.race([outcome, cancelled]).finally(() => {\n\t\t\t\t\tsignal.removeEventListener(\"abort\", stopped);\n\t\t\t\t});\n\t\t\t\tconst acknowledged = mapped(\n\t\t\t\t\tthis.#native.acknowledgeTaskCleanup(runner.value, evidence),\n\t\t\t\t\t(cleanup) => cleanup,\n\t\t\t\t\treportErrors,\n\t\t\t\t);\n\t\t\t\tif (reported && !reported.ok && !(signal.aborted && reported.error.code === \"ReportConflict\"))\n\t\t\t\t\treturn reported;\n\t\t\t\treturn acknowledged;\n\t\t\t});\n\t\t\tawait taskState.execution;\n\t\t});\n\t\tif (schedule) schedule(dispatch);\n\t\telse void dispatch();\n\t\t// Setup is complete. Do not await execution; ready terminal microtasks may win observation.\n\t\tawait Promise.resolve();\n\t\treturn { ok: true, value: task };\n\t}\n\ttaskReference(task: TaskLease): C.NativeTaskRef {\n\t\treturn reference(this.#task(task).ref);\n\t}\n\tasync waitForTask(\n\t\ttask: TaskLease,\n\t\tbudgetMs?: number,\n\t\tdesignation?: HostSession,\n\t): Promise<C.Result<C.WaitOutcome, C.WaitError>> {\n\t\tconst registered = mapped(\n\t\t\tthis.#native.waitForTask(\n\t\t\t\tthis.#task(task).native,\n\t\t\t\tthis.#agentBudget(this.#task(task).owner, budgetMs, this.#task(task).kind === \"command\"),\n\t\t\t\tdesignation ? this.#host(designation).native : undefined,\n\t\t\t),\n\t\t\t(lease) => this.#register(lease),\n\t\t\twaitErrors,\n\t\t);\n\t\treturn registered.ok ? this.observeTaskWait(registered.value) : registered;\n\t}\n\t/** Resolve only a task admitted under this live owner; IDs alone confer no authority. */\n\tlookupTask(owner: OwnerLease, taskId: C.TaskId): C.Result<TaskLease, C.WaitError> {\n\t\tconst state = this.#owner(owner);\n\t\tconst found = mapped(this.#native.lookupTask(state.native, taskId), () => state.tasks.get(taskId), waitErrors);\n\t\tif (!found.ok) return found;\n\t\tif (!found.value) return { ok: false, error: { code: \"UnknownTask\", message: \"No agent runner bound to task\" } };\n\t\treturn { ok: true, value: found.value };\n\t}\n\n\tasync waitForTaskId(\n\t\towner: OwnerLease,\n\t\ttaskId: C.TaskId,\n\t\tbudgetMs?: number,\n\t\tonRegistered?: (wait: WaitLease) => void,\n\t): Promise<C.Result<C.WaitOutcome, C.WaitError>> {\n\t\tconst found = mapped(this.#native.lookupTask(this.#owner(owner).native, taskId), (lease) => lease, waitErrors);\n\t\tif (!found.ok) return found;\n\t\tconst known = this.#owner(owner).tasks.get(taskId);\n\t\tconst registered = mapped(\n\t\t\tthis.#native.waitForTask(\n\t\t\t\tfound.value,\n\t\t\t\tthis.#agentBudget(\n\t\t\t\t\tthis.#owner(owner),\n\t\t\t\t\tbudgetMs,\n\t\t\t\t\tknown !== undefined && this.#task(known).kind === \"command\",\n\t\t\t\t),\n\t\t\t),\n\t\t\t(lease) => this.#register(lease),\n\t\t\twaitErrors,\n\t\t);\n\t\tif (!registered.ok) return registered;\n\t\tonRegistered?.(registered.value);\n\t\treturn this.observeTaskWait(registered.value);\n\t}\n\tasync foregroundTask(task: TaskLease, budgetMs?: number): Promise<C.Result<C.WaitOutcome, C.ForegroundError>> {\n\t\tconst state = this.#task(task);\n\t\tconst errors = [\"TaskTerminal\", \"OwnerClosing\", \"UnknownTask\", \"ObserverCancelled\"] as const;\n\t\tconst registered = mapped(\n\t\t\tthis.#native.foregroundTask(\n\t\t\t\tstate.native,\n\t\t\t\tstate.owner.host.native,\n\t\t\t\tthis.#agentBudget(state.owner, budgetMs, state.kind === \"command\"),\n\t\t\t),\n\t\t\t(lease) => this.#register(lease),\n\t\t\terrors,\n\t\t);\n\t\treturn registered.ok\n\t\t\t? mapped(await this.observeTaskWait(registered.value), (outcome) => outcome, errors)\n\t\t\t: registered;\n\t}\n\twaitId(wait: WaitLease): C.WaitId {\n\t\treturn this.#wait(wait).native.waitId as C.WaitId;\n\t}\n\tfindWait(id: C.WaitId): WaitLease | undefined {\n\t\treturn this.#waitRegistry.get(id);\n\t}\n\tobserveTaskWait(wait: WaitLease): Promise<C.Result<C.WaitOutcome, C.WaitError>> {\n\t\treturn this.#wait(wait).outcome;\n\t}\n\tyieldTaskWait(wait: WaitLease, reason: C.YieldReason): C.Result<C.WaitOutcome, C.YieldError> {\n\t\treturn mapped(this.#native.yieldTaskWait(this.#wait(wait).native, reason), waitOutcome, [\n\t\t\t\"UnknownWait\",\n\t\t\t\"StaleGeneration\",\n\t\t\t\"ObserverCancelled\",\n\t\t]);\n\t}\n\tdisposeTaskWait(wait: WaitLease): C.Result<void, C.WaitError> {\n\t\treturn mapped(this.#native.disposeTaskWait(this.#wait(wait).native), () => undefined, waitErrors);\n\t}\n\tasync initialObservation(\n\t\ttask: TaskLease,\n\t\tpolicy?: C.WaitPolicy,\n\t\tonRegistered?: (wait: WaitLease) => void,\n\t): Promise<C.Result<C.WaitOutcome, C.WaitError>> {\n\t\tconst state = this.#task(task);\n\t\tpolicy ??= state.kind === \"command\" ? { kind: \"foreground\" } : undefined;\n\t\tconst registered = mapped(\n\t\t\tthis.#native.waitForTask(\n\t\t\t\tstate.native,\n\t\t\t\tpolicy?.kind === \"foreground\"\n\t\t\t\t\t? this.#agentBudget(state.owner, policy.budgetMs, state.kind === \"command\")\n\t\t\t\t\t: undefined,\n\t\t\t\tstate.owner.host.native,\n\t\t\t),\n\t\t\t(lease) => this.#register(lease),\n\t\t\twaitErrors,\n\t\t);\n\t\tif (!registered.ok) return registered;\n\t\tonRegistered?.(registered.value);\n\t\tif (policy?.kind !== \"foreground\")\n\t\t\tthis.yieldTaskWait(registered.value, policy ? \"explicit\" : \"default-background\");\n\t\treturn this.observeTaskWait(registered.value);\n\t}\n\tasync cancelTask(task: TaskLease, cause: C.CancelCause): Promise<C.Result<C.CancelReceipt, C.CancelError>> {\n\t\tconst state = this.#task(task);\n\t\tconst result = mapped(this.#native.cancelTask(state.native, cause), cancelReceipt, [\n\t\t\t\"UnknownTask\",\n\t\t\t\"CleanupFailed\",\n\t\t]);\n\t\tif (result.ok && result.value.decision === \"cancellation-requested\") state.controller.abort(cause);\n\t\treturn result;\n\t}\n\tasync closeTaskOwner(\n\t\towner: OwnerLease,\n\t\tcause: C.OwnerCloseCause,\n\t): Promise<C.Result<C.OwnerCloseReceipt, C.CloseError>> {\n\t\tconst state = this.#owner(owner);\n\t\tconst closing = this.#native.closeTaskOwner(state.native, cause);\n\t\tfor (const task of state.tasks.values()) this.#task(task).controller.abort(\"owner-close\");\n\t\tconst result = mapped(\n\t\t\tawait closing,\n\t\t\t(receipt): C.OwnerCloseReceipt => ({\n\t\t\t\townerId: receipt.ownerId as C.OwnerId,\n\t\t\t\tstate: \"closed\",\n\t\t\t\ttasks: receipt.tasks.map(cancelReceipt),\n\t\t\t}),\n\t\t\t[\"CleanupFailed\", \"EnvironmentClosing\"],\n\t\t);\n\t\tif (result.ok)\n\t\t\tfor (const task of state.tasks.values()) {\n\t\t\t\tconst completed = await this.#task(task).execution;\n\t\t\t\tif (completed && !completed.ok)\n\t\t\t\t\tthrow new Error(`Runner protocol failed: ${completed.error.code}: ${completed.error.message}`);\n\t\t\t}\n\t\tif (result.ok)\n\t\t\tfor (const watch of state.watches) {\n\t\t\t\twatch.drain();\n\t\t\t\twatch.dispose(false);\n\t\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t * The bounded stream carries only authentic deltas. Overflow/native reset publishes\n\t * snapshot/cursor then ends the current iterator, even with no surviving delta.\n\t * Reconcile on completion; obtain a new iterator on the same events iterable to\n\t * continue observing. Apply snapshots first and ignore deltas at/below their cursor.\n\t * onReconcile is optional; consumer failures never disable the fallback poll.\n\t */\n\twatchOwnerTasks(owner: OwnerLease, from?: C.Cursor): C.Result<TaskSubscription, C.WatchError> {\n\t\tconst state = this.#owner(owner);\n\t\tlet subscription: TaskSubscription | undefined;\n\t\treturn mapped(\n\t\t\tthis.#native.watchOwnerTasks(state.native, (hint) => subscription?.wake(hint), from),\n\t\t\t(initial) => {\n\t\t\t\tsubscription = new TaskSubscription(this.#native, initial, () => {\n\t\t\t\t\tif (subscription) state.watches.delete(subscription);\n\t\t\t\t});\n\t\t\t\tstate.watches.add(subscription);\n\t\t\t\treturn subscription;\n\t\t\t},\n\t\t\twatchErrors,\n\t\t);\n\t}\n\t#agentBudget(owner: OwnerState, budgetMs?: number, command = false): number | undefined {\n\t\tif (budgetMs !== undefined) return budgetMs;\n\t\tconst configuration = owner.host.binding.tasks?.wait;\n\t\tif (configuration?.kind === \"until-settled\") return undefined;\n\t\treturn command\n\t\t\t? (configuration?.commandBudgetMs ?? COMMAND_FOREGROUND_BUDGET_MS)\n\t\t\t: (configuration?.agentBudgetMs ?? DEFAULT_AGENT_WAIT_BUDGET_MS);\n\t}\n\t#register(lease: native.WaitLease): WaitLease {\n\t\tconst wait = new WaitCapability();\n\t\tObject.freeze(wait);\n\t\tconst id = lease.waitId as C.WaitId;\n\t\tthis.#waitRegistry.set(id, wait);\n\t\tconst outcome = this.#native\n\t\t\t.observeTaskWait(lease)\n\t\t\t.then((result) => mapped(result, waitOutcome, waitErrors))\n\t\t\t.finally(() => {\n\t\t\t\tthis.#waitRegistry.delete(id);\n\t\t\t});\n\t\tthis.#waits.set(wait, { native: lease, outcome });\n\t\treturn wait;\n\t}\n\t#host(host: HostSession): HostState {\n\t\tconst state = this.#hosts.get(host);\n\t\tif (!state) throw new TypeError(\"Foreign host capability\");\n\t\treturn state;\n\t}\n\t#owner(owner: OwnerLease): OwnerState {\n\t\tconst state = this.#owners.get(owner);\n\t\tif (!state) throw new TypeError(\"Foreign owner capability\");\n\t\treturn state;\n\t}\n\t#task(task: TaskLease): TaskState {\n\t\tconst state = this.#tasks.get(task);\n\t\tif (!state) throw new TypeError(\"Foreign task capability\");\n\t\treturn state;\n\t}\n\t#wait(wait: WaitLease): WaitState {\n\t\tconst state = this.#waits.get(wait);\n\t\tif (!state) throw new TypeError(\"Foreign wait capability\");\n\t\treturn state;\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"supervisor.js","sourceRoot":"","sources":["../../../src/core/tasks/supervisor.ts"],"names":[],"mappings":"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","sourcesContent":["import { AsyncResource } from \"node:async_hooks\";\nimport type * as native from \"@bastani/atomic-natives\";\nimport type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport { createModuleRequire } from \"../../utils/module-require.ts\";\nimport type { AgentSessionEvent } from \"../agent-session.js\";\nimport type { SessionManager } from \"../session-manager.ts\";\nimport { COMMAND_FOREGROUND_BUDGET_MS } from \"./command-output.js\";\nimport type { TaskCompletionSource } from \"./completion-ordering.js\";\nimport type * as C from \"./contracts.js\";\n\nexport type TaskTranscriptSource = Pick<SessionManager, \"getSessionId\" | \"getEntries\"> & {\n\treadonly completionSource?: TaskCompletionSource;\n\t/** Viewer-only subscription; updates never publish task lifecycle events. */\n\tsubscribe?(listener: (event: AgentSessionEvent) => void): () => void;\n\tgetStreamingMessage?(): AgentMessage | undefined;\n};\n\nexport const DEFAULT_AGENT_WAIT_BUDGET_MS = 30000;\n/** These objects are live authority, not DTOs, restart tokens or model arguments. */\nclass Capability {\n\t#live = true;\n\ttoJSON(): never {\n\t\tthrow new TypeError(`Task capability is not serializable (${this.#live ? \"live\" : \"closed\"})`);\n\t}\n}\nclass HostCapability extends Capability {\n\treadonly kind = \"host\";\n}\nclass OwnerCapability extends Capability {\n\treadonly kind = \"owner\";\n}\nclass TaskCapability extends Capability {\n\treadonly kind = \"task\";\n}\nclass WaitCapability extends Capability {\n\treadonly kind = \"wait\";\n}\nclass SubscriptionCapability extends Capability {\n\treadonly kind = \"subscription\";\n}\nclass StdinCapability extends Capability {\n\treadonly kind = \"stdin\";\n}\nexport type StdinLease = StdinCapability;\nexport type HostSession = HostCapability;\nexport type OwnerLease = OwnerCapability;\nexport type TaskLease = TaskCapability;\nexport type WaitLease = WaitCapability;\nexport type SubscriptionLease = SubscriptionCapability;\n\nexport type FakeRunnerContext = {\n\tref: C.NativeTaskRef;\n\tsignal: AbortSignal;\n\treportActivity(report: C.ActivityReport): C.Result<C.ReportReceipt, C.ReportError>;\n\t/** Bind existing child history while holding the admitted runner authority. */\n\tbindTranscript(session: TaskTranscriptSource): void;\n};\n/** Independent cleanup evidence: an outcome alone never proves resource release. */\nexport type FakeExecution = { result: Promise<C.TaskResult>; cleanup: Promise<C.Cleanup> };\nexport type TrustedTaskHost = {\n\tscope: C.OwnerScope;\n\t/** Owner-host observation settings; never an execution deadline. */\n\ttasks?: { wait?: C.TaskWaitConfiguration };\n\t/** The existing host/tool refusal throws here, before native admission. */\n\tauthorizeCommandLaunch?(intent: C.CommandIntent): void;\n\tauthorizeLaunch(intent: C.AgentIntent): void;\n\tonTaskSettled?(ref: C.NativeTaskRef, receipt: C.SettlementReceipt): void;\n\tcreateRunner(context: FakeRunnerContext, intent: C.AgentIntent): FakeExecution;\n};\ntype HostState = { native: native.HostSession; binding: TrustedTaskHost };\ntype OwnerState = {\n\tnative: native.OwnerLease;\n\thost: HostState;\n\ttasks: Map<C.TaskId, TaskLease>;\n\twatches: Set<TaskSubscription>;\n\tsettledTasks: Set<C.TaskId>;\n\tcommandAdmissions: Set<Promise<void>>;\n};\ntype TaskState = {\n\tnative: native.TaskLease;\n\towner: OwnerState;\n\tref: C.NativeTaskRef;\n\tcontroller: AbortController;\n\tkind?: \"command\";\n\texecution?: Promise<C.Result<C.Cleanup, C.ReportError>>;\n\ttranscript?: TaskTranscriptSource;\n\tinheritedEntryCount?: number;\n};\ntype WaitState = { native: native.WaitLease; outcome: Promise<C.Result<C.WaitOutcome, C.WaitError>> };\n\n// Native supervisors share one actor per environment; their JS continuations must too.\nconst environment = {\n\thosts: new WeakMap<HostSession, HostState>(),\n\towners: new WeakMap<OwnerLease, OwnerState>(),\n\ttasks: new WeakMap<TaskLease, TaskState>(),\n\tinputs: new WeakMap<StdinLease, native.StdinLease>(),\n\twaits: new WeakMap<WaitLease, WaitState>(),\n\twaitRegistry: new Map<C.WaitId, WaitLease>(),\n\townerIds: new Map<C.OwnerId, OwnerLease>(),\n};\n\n/** Reads only history bound by the admitted runner, never a caller-selected session. */\nexport function taskTranscriptSource(\n\ttask: TaskLease,\n): C.Result<{ session: TaskTranscriptSource; taskId: C.TaskId }, C.Failure<\"UnknownTask\" | \"TranscriptUnavailable\">> {\n\tconst state = environment.tasks.get(task);\n\tif (!state) return { ok: false, error: { code: \"UnknownTask\", message: \"Unknown task\" } };\n\tif (!state.transcript)\n\t\treturn { ok: false, error: { code: \"TranscriptUnavailable\", message: \"Transcript unavailable\" } };\n\treturn { ok: true, value: { session: state.transcript, taskId: state.ref.taskId } };\n}\n\n/** History the runner produced; a forked child's inherited parent entries are excluded. */\nexport function taskOwnTranscriptEntries(task: TaskLease): ReturnType<TaskTranscriptSource[\"getEntries\"]> | undefined {\n\tconst state = environment.tasks.get(task);\n\treturn state?.transcript?.getEntries().slice(state.inheritedEntryCount ?? 0);\n}\n\n/** Promise rejections, setup throws and consumer exceptions may be arbitrary JavaScript values. */\nfunction rejectionMessage<T>(reason: T): string {\n\ttry {\n\t\tconst message = reason instanceof Error ? reason.message : reason;\n\t\treturn typeof message === \"string\" ? message : String(message);\n\t} catch {\n\t\treturn \"Unprintable JavaScript rejection\";\n\t}\n}\nfunction mapped<T, U, Code extends string>(\n\tresult: C.Result<T, native.TaskFailure>,\n\tconvert: (value: T) => U,\n\tcodes: readonly Code[],\n): C.Result<U, C.Failure<Code>> {\n\tif (result.ok) return { ok: true, value: convert(result.value) };\n\tconst code = codes.find((candidate) => candidate === result.error.code);\n\tif (!code) throw new Error(`Unexpected native task refusal: ${result.error.code}: ${result.error.message}`);\n\treturn { ok: false, error: { code, message: result.error.message } };\n}\nconst ownerErrors = [\"ScopeMismatch\", \"EnvironmentClosing\"] as const;\nconst startErrors = [\n\t\"OwnerClosing\",\n\t\"UnknownAgent\",\n\t\"InvalidCwd\",\n\t\"DepthExceeded\",\n\t\"CapacityExhausted\",\n\t\"DispatchGuardBusy\",\n\t\"OperationConflict\",\n\t\"RunnerUnavailable\",\n\t\"SpawnFailed\",\n\t\"ContainmentUnavailable\",\n] as const;\nconst waitErrors = [\"UnknownTask\", \"OwnerClosed\", \"EnvironmentClosing\", \"ScopeMismatch\", \"ObserverCancelled\"] as const;\nconst reportErrors = [\"StaleAttempt\", \"OwnerClosing\", \"TaskTerminal\", \"ReportConflict\"] as const;\nconst watchErrors = [\"OwnerClosed\", \"StaleGeneration\", \"EnvironmentClosing\"] as const;\nfunction reference(value: native.NativeTaskRef): C.NativeTaskRef {\n\treturn {\n\t\townerId: value.ownerId as C.OwnerId,\n\t\ttaskId: value.taskId as C.TaskId,\n\t\tattemptId: value.attemptId as C.AttemptId,\n\t\tgeneration: value.generation as C.Generation,\n\t};\n}\nfunction cursor(value: native.Cursor): C.Cursor {\n\treturn { generation: value.generation as C.Generation, sequence: value.sequence as C.Sequence };\n}\nfunction output(value: native.OutputRef): C.OutputRef {\n\treturn {\n\t\townerId: value.ownerId as C.OwnerId,\n\t\ttaskId: value.taskId as C.TaskId,\n\t\tartifactId: value.artifactId,\n\t\tbyteCount: value.byteCount,\n\t\tomittedRanges: value.omittedRanges.map(({ start, end }) => ({ start, end })),\n\t};\n}\nfunction taskResult(value: native.TaskResult): C.TaskResult {\n\tswitch (value.kind) {\n\t\tcase \"completed\":\n\t\t\treturn {\n\t\t\t\tkind: value.kind,\n\t\t\t\toutput: output(value.output),\n\t\t\t\t...(value.exitCode === undefined ? {} : { exitCode: value.exitCode }),\n\t\t\t};\n\t\tcase \"failed\":\n\t\t\treturn {\n\t\t\t\tkind: value.kind,\n\t\t\t\tcode: value.code,\n\t\t\t\tmessage: value.message,\n\t\t\t\t...(value.output === undefined ? {} : { output: output(value.output) }),\n\t\t\t\t...(value.exitCode === undefined ? {} : { exitCode: value.exitCode }),\n\t\t\t};\n\t\tcase \"cancelled\":\n\t\t\treturn {\n\t\t\t\tkind: value.kind,\n\t\t\t\tcause: value.cause,\n\t\t\t\t...(value.output === undefined ? {} : { output: output(value.output) }),\n\t\t\t};\n\t}\n}\nfunction execution(value: native.Execution): C.Execution {\n\treturn value.kind === \"settled\" ? { kind: \"settled\", result: taskResult(value.result) } : value;\n}\nfunction observation(value: native.HostObservation): C.HostObservation {\n\tif (value.kind === \"foreground\") return { kind: value.kind, waitId: value.waitId as C.WaitId };\n\tif (value.kind === \"none\" && (value.reason === \"task-settled\" || value.reason === \"owner-closing\"))\n\t\treturn { kind: value.kind, reason: value.reason };\n\tconst reasons = [\n\t\t\"explicit\",\n\t\t\"default-background\",\n\t\t\"elapsed\",\n\t\t\"intercom-coordination\",\n\t\t\"input-needed\",\n\t\t\"not-observed\",\n\t\t\"observer-cancelled\",\n\t] as const;\n\tconst reason = reasons.find((reason) => reason === value.reason);\n\tif (value.kind === \"background\" && reason) return { kind: value.kind, reason };\n\tthrow new Error(\"Invalid native host observation\");\n}\n// Native records own lifecycle and mutable execution metadata. Routing provenance is\n// immutable host metadata, retained for the same environment lifetime as task records.\nconst routerSelections = new Map<string, C.RouterSelection>();\nfunction record(value: native.TaskRecord): C.TaskRecord {\n\tif (value.kind !== \"agent\" && value.kind !== \"command\") throw new Error(`Invalid native task kind: ${value.kind}`);\n\tconst routerSelection = routerSelections.get(value.ref.taskId);\n\treturn {\n\t\tref: reference(value.ref),\n\t\tlaunchOperationId: value.launchOperationId as C.OperationId,\n\t\t...(value.parentTaskId === undefined ? {} : { parentTaskId: value.parentTaskId as C.TaskId }),\n\t\t...(value.launchGroupId === undefined ? {} : { launchGroupId: value.launchGroupId }),\n\t\tlaunchOrdinal: value.launchOrdinal,\n\t\tkind: value.kind,\n\t\ttitle: value.title,\n\t\t...(value.agentName === undefined ? {} : { agentName: value.agentName }),\n\t\t...(value.model === undefined ? {} : { model: value.model }),\n\t\t...(value.thinking === undefined ? {} : { thinking: value.thinking }),\n\t\t...(routerSelection ? { routerSelection } : {}),\n\t\texecution: execution(value.execution),\n\t\tobservation: observation(value.observation),\n\t\t...(value.wasBackground === undefined ? {} : { wasBackground: value.wasBackground }),\n\t\tattention: value.attention,\n\t\tcleanup: value.cleanup,\n\t\t...(value.currentAction === undefined\n\t\t\t? {}\n\t\t\t: { currentAction: { tool: value.currentAction.tool, text: value.currentAction.text } }),\n\t\t...(value.metrics === undefined\n\t\t\t? {}\n\t\t\t: {\n\t\t\t\t\tmetrics: {\n\t\t\t\t\t\t...(value.metrics.elapsedMs === undefined ? {} : { elapsedMs: value.metrics.elapsedMs }),\n\t\t\t\t\t\t...(value.metrics.toolCount === undefined ? {} : { toolCount: value.metrics.toolCount }),\n\t\t\t\t\t\t...(value.metrics.tokenCount === undefined ? {} : { tokenCount: value.metrics.tokenCount }),\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\toutput: output(value.output),\n\t};\n}\nfunction snapshot(value: native.OwnerSnapshot): C.OwnerSnapshot {\n\tif (value.state !== \"open\" && value.state !== \"closing\" && value.state !== \"closed\")\n\t\tthrow new Error(`Invalid native owner state: ${value.state}`);\n\treturn {\n\t\townerId: value.ownerId as C.OwnerId,\n\t\tscope: value.scope,\n\t\tgeneration: value.generation as C.Generation,\n\t\tstate: value.state,\n\t\ttasks: value.tasks.map(record),\n\t\tcursor: cursor(value.cursor),\n\t};\n}\nfunction activity(value: native.ActivityReport): C.ActivityReport {\n\tif (value.change.kind === \"attention-set\" && value.change.attention.kind === \"none\")\n\t\tthrow new Error(\"Native attention-set cannot clear attention\");\n\t// Native tagged variants are owned wire data; only attention-set has a wider generated declaration.\n\treturn value as C.ActivityReport;\n}\nfunction payload(value: native.TaskEvent): C.TaskEvent {\n\tswitch (value.kind) {\n\t\tcase \"task-admitted\":\n\t\t\treturn { kind: value.kind, task: record(value.task) };\n\t\tcase \"task-started\":\n\t\t\treturn { kind: value.kind, ref: reference(value.ref) };\n\t\tcase \"wait-started\": {\n\t\t\tif (value.observer !== \"sdk\" && value.observer !== \"host\") throw new Error(\"Invalid native observer\");\n\t\t\treturn {\n\t\t\t\tkind: value.kind,\n\t\t\t\tref: reference(value.ref),\n\t\t\t\twaitId: value.waitId as C.WaitId,\n\t\t\t\tobserver: value.observer,\n\t\t\t};\n\t\t}\n\t\tcase \"wait-yielded\":\n\t\t\treturn { kind: value.kind, ref: reference(value.ref), waitId: value.waitId as C.WaitId, reason: value.reason };\n\t\tcase \"host-observation-changed\":\n\t\t\treturn { kind: value.kind, ref: reference(value.ref), observation: observation(value.observation) };\n\t\tcase \"task-activity\":\n\t\t\treturn { kind: value.kind, ref: reference(value.ref), activity: activity(value.activity) };\n\t\tcase \"task-cancelling\":\n\t\t\treturn { kind: value.kind, ref: reference(value.ref), cause: value.cause };\n\t\tcase \"task-settled\":\n\t\t\treturn {\n\t\t\t\tkind: value.kind,\n\t\t\t\tref: reference(value.ref),\n\t\t\t\tresult: taskResult(value.result),\n\t\t\t\tcompletionId: value.completionId,\n\t\t\t};\n\t\tcase \"cleanup-changed\":\n\t\t\treturn { kind: value.kind, ref: reference(value.ref), cleanup: value.cleanup };\n\t\tcase \"owner-closing\":\n\t\tcase \"owner-closed\":\n\t\t\treturn { kind: value.kind };\n\t}\n}\nfunction event(value: native.NativeEvent): C.NativeEvent {\n\tif (value.schemaVersion !== 1) throw new Error(\"Unsupported native task event schema\");\n\treturn {\n\t\tschemaVersion: 1,\n\t\tcursor: cursor(value.cursor),\n\t\townerId: value.ownerId as C.OwnerId,\n\t\t...(value.taskId === undefined ? {} : { taskId: value.taskId as C.TaskId }),\n\t\tpayload: payload(value.payload),\n\t};\n}\nfunction waitOutcome(value: native.WaitOutcome): C.WaitOutcome {\n\treturn value.kind === \"settled\"\n\t\t? { kind: value.kind, taskId: value.taskId as C.TaskId, result: taskResult(value.result) }\n\t\t: { kind: value.kind, taskId: value.taskId as C.TaskId, waitId: value.waitId as C.WaitId, reason: value.reason };\n}\nfunction cancelReceipt(value: native.CancelReceipt): C.CancelReceipt {\n\tif (value.decision !== \"already-settled\" && value.decision !== \"cancellation-requested\")\n\t\tthrow new Error(\"Invalid cancellation decision\");\n\treturn {\n\t\ttaskId: value.taskId as C.TaskId,\n\t\tdecision: value.decision,\n\t\texecution: execution(value.execution),\n\t\tcleanup: value.cleanup,\n\t};\n}\n\nfunction reportReceipt(value: native.ReportReceipt): C.ReportReceipt {\n\tif (value.disposition !== \"accepted\" && value.disposition !== \"duplicate\")\n\t\tthrow new Error(\"Invalid report disposition\");\n\treturn { reportId: value.reportId, cursor: cursor(value.cursor), disposition: value.disposition };\n}\n/** Projection only: native ordering remains the sole lifecycle authority. */\nfunction applyEvent(current: C.OwnerSnapshot, value: C.NativeEvent): C.OwnerSnapshot {\n\tconst next: C.OwnerSnapshot = { ...current, tasks: [...current.tasks], cursor: value.cursor };\n\tconst change = value.payload;\n\tif (change.kind === \"owner-closing\") {\n\t\tnext.state = \"closing\";\n\t\tnext.tasks = next.tasks.map((task) =>\n\t\t\ttask.execution.kind === \"settled\" ? task : { ...task, attention: { kind: \"none\" } },\n\t\t);\n\t\treturn next;\n\t}\n\tif (change.kind === \"owner-closed\") {\n\t\tnext.state = \"closed\";\n\t\treturn next;\n\t}\n\tif (change.kind === \"task-admitted\") {\n\t\tnext.tasks.push(change.task);\n\t\treturn next;\n\t}\n\tconst index = next.tasks.findIndex((task) => task.ref.taskId === change.ref.taskId);\n\tif (index < 0) throw new Error(\"Native delta references a task absent from its snapshot\");\n\tconst task: C.TaskRecord = { ...next.tasks[index] };\n\tnext.tasks[index] = task;\n\tswitch (change.kind) {\n\t\tcase \"task-started\":\n\t\t\ttask.execution = { kind: \"running\" };\n\t\t\tbreak;\n\t\tcase \"host-observation-changed\":\n\t\t\ttask.observation = change.observation;\n\t\t\tif (change.observation.kind === \"background\" && change.observation.reason !== \"not-observed\")\n\t\t\t\ttask.wasBackground = true;\n\t\t\tbreak;\n\t\tcase \"task-cancelling\":\n\t\t\ttask.execution = { kind: \"cancelling\", cause: change.cause };\n\t\t\tbreak;\n\t\tcase \"task-settled\":\n\t\t\ttask.execution = { kind: \"settled\", result: change.result };\n\t\t\ttask.attention = { kind: \"none\" };\n\t\t\tif (change.result.output !== undefined) task.output = change.result.output;\n\t\t\tbreak;\n\t\tcase \"cleanup-changed\":\n\t\t\ttask.cleanup = change.cleanup;\n\t\t\tbreak;\n\t\tcase \"task-activity\": {\n\t\t\tconst activity = change.activity.change;\n\t\t\tswitch (activity.kind) {\n\t\t\t\tcase \"action\":\n\t\t\t\t\ttask.currentAction = { tool: activity.tool, text: activity.text };\n\t\t\t\t\tif (task.attention.kind === \"no-recent-activity\") task.attention = { kind: \"none\" };\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"model\":\n\t\t\t\t\ttask.model = activity.model;\n\t\t\t\t\ttask.thinking = activity.thinking;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"metrics\":\n\t\t\t\t\ttask.metrics = {\n\t\t\t\t\t\t...task.metrics,\n\t\t\t\t\t\t...(activity.elapsedMs === undefined ? {} : { elapsedMs: activity.elapsedMs }),\n\t\t\t\t\t\t...(activity.toolCount === undefined ? {} : { toolCount: activity.toolCount }),\n\t\t\t\t\t\t...(activity.tokenCount === undefined ? {} : { tokenCount: activity.tokenCount }),\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"attention-set\":\n\t\t\t\t\ttask.attention = activity.attention;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"attention-clear\":\n\t\t\t\t\tif (task.attention.kind === \"input-needed\" && task.attention.requestId === activity.requestId)\n\t\t\t\t\t\ttask.attention = { kind: \"none\" };\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"output\":\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tcase \"wait-started\":\n\t\tcase \"wait-yielded\":\n\t\t\tbreak;\n\t}\n\treturn next;\n}\n/** One bounded wake poll per live subscription, including a journal with no retained event. */\nconst RECONCILE_INTERVAL_MS = 25;\nconst MAX_PENDING_EVENTS = 64;\nexport class TaskSubscription {\n\t#native: native.TaskSupervisor;\n\t#lease: native.SubscriptionLease;\n\t#resource = new AsyncResource(\"TaskSubscription\");\n\t#timer?: ReturnType<typeof setTimeout>;\n\t#queue: C.NativeEvent[] = [];\n\t#epoch = 0;\n\t#next?: (value: IteratorResult<C.NativeEvent>) => void;\n\t#disposed = false;\n\t#snapshot: C.OwnerSnapshot;\n\t#cursor: C.Cursor;\n\t/** Reconciliation supplements the RFC snapshot/cursor/iterable contract with the events it applied. */\n\tonReconcile: (snapshot: C.OwnerSnapshot, events: readonly C.NativeEvent[]) => void = () => {};\n\t#onDispose: () => void;\n\t#failure?: Error;\n\treadonly events: AsyncIterable<C.NativeEvent>;\n\treadonly lease: SubscriptionLease = new SubscriptionCapability();\n\n\tconstructor(actor: native.TaskSupervisor, initial: native.NativeTaskSubscription, onDispose: () => void) {\n\t\tObject.freeze(this.lease);\n\t\tthis.#native = actor;\n\t\tthis.#lease = initial.lease;\n\t\tthis.#snapshot = snapshot(initial.snapshot);\n\t\tthis.#cursor = cursor(initial.cursor);\n\t\tthis.#onDispose = onDispose;\n\t\tthis.events = {\n\t\t\t[Symbol.asyncIterator]: () => {\n\t\t\t\tconst epoch = this.#epoch;\n\t\t\t\treturn {\n\t\t\t\t\tnext: () => {\n\t\t\t\t\t\tif (epoch !== this.#epoch) return Promise.resolve({ done: true, value: undefined });\n\t\t\t\t\t\tconst value = this.#queue.shift();\n\t\t\t\t\t\tif (value) return Promise.resolve({ done: false, value });\n\t\t\t\t\t\tif (this.#disposed) return Promise.resolve({ done: true, value: undefined });\n\t\t\t\t\t\tif (this.#next) return Promise.reject(new Error(\"Only one pending subscription read is supported\"));\n\t\t\t\t\t\treturn new Promise((resolve) => {\n\t\t\t\t\t\t\tthis.#next = resolve;\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\treturn: async () => {\n\t\t\t\t\t\tif (epoch === this.#epoch) this.dispose();\n\t\t\t\t\t\treturn { done: true, value: undefined };\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t},\n\t\t};\n\t\tthis.#arm();\n\t}\n\tget snapshot(): C.OwnerSnapshot {\n\t\treturn this.#snapshot;\n\t}\n\tget cursor(): C.Cursor {\n\t\treturn this.#cursor;\n\t}\n\t/** Consumer exceptions are observable without breaking the native wake or fallback poll. */\n\tget failure(): Error | undefined {\n\t\treturn this.#failure;\n\t}\n\t/** Callback payloads are authentic hints; only the journal/snapshot is authoritative. */\n\twake(_hint: native.NativeEvent): void {\n\t\tthis.#resource.runInAsyncScope(() => this.drain());\n\t}\n\t#arm(): void {\n\t\tif (this.#disposed || this.#timer) return;\n\t\tthis.#timer = setTimeout(() => {\n\t\t\tthis.#timer = undefined;\n\t\t\tthis.#resource.runInAsyncScope(() => this.drain());\n\t\t\tthis.#arm();\n\t\t}, RECONCILE_INTERVAL_MS);\n\t\tthis.#timer.unref();\n\t}\n\tdrain(): void {\n\t\tif (this.#disposed) return;\n\t\tconst drained = this.#native.drainOwnerTasks(this.#lease);\n\t\tif (!drained.ok) {\n\t\t\tthis.dispose();\n\t\t\treturn;\n\t\t}\n\t\tconst events = drained.value.events.map(event);\n\t\tif (drained.value.snapshot) this.#snapshot = snapshot(drained.value.snapshot);\n\t\tfor (const value of events) {\n\t\t\tif (BigInt(value.cursor.sequence) > BigInt(this.#snapshot.cursor.sequence))\n\t\t\t\tthis.#snapshot = applyEvent(this.#snapshot, value);\n\t\t}\n\t\tthis.#cursor = cursor(drained.value.cursor);\n\t\tthis.#snapshot = { ...this.#snapshot, cursor: this.#cursor };\n\t\tconst overflow = this.#queue.length + events.length > MAX_PENDING_EVENTS;\n\t\tconst reset = drained.value.reset || overflow;\n\t\tif (reset) {\n\t\t\tthis.#queue = [];\n\t\t\tthis.#epoch++;\n\t\t\t// End the old iterator only after publishing the authoritative snapshot/cursor.\n\t\t\t// A new iterator on the same iterable observes subsequent authentic deltas.\n\t\t\tthis.#next?.({ done: true, value: undefined });\n\t\t\tthis.#next = undefined;\n\t\t}\n\t\tif (drained.value.snapshot || events.length) {\n\t\t\ttry {\n\t\t\t\tthis.#resource.runInAsyncScope(this.onReconcile, undefined, this.#snapshot, events);\n\t\t\t} catch (error) {\n\t\t\t\tthis.#failure = new Error(rejectionMessage(error));\n\t\t\t}\n\t\t}\n\t\tif (this.#disposed) return;\n\t\tif (!reset)\n\t\t\tfor (const value of events) {\n\t\t\t\tif (this.#next) {\n\t\t\t\t\tconst next = this.#next;\n\t\t\t\t\tthis.#next = undefined;\n\t\t\t\t\tnext({ done: false, value });\n\t\t\t\t} else this.#queue.push(value);\n\t\t\t}\n\t\tif (this.#snapshot.state === \"closed\") this.dispose(false);\n\t}\n\tdispose(clear = true): void {\n\t\tif (this.#disposed) return;\n\t\tthis.#disposed = true;\n\t\tif (this.#timer) clearTimeout(this.#timer);\n\t\tthis.#timer = undefined;\n\t\tthis.#native.disposeSubscription(this.#lease);\n\t\tif (clear) this.#queue = [];\n\t\tthis.#next?.({ done: true, value: undefined });\n\t\tthis.#next = undefined;\n\t\tthis.#resource.emitDestroy();\n\t\tthis.#onDispose();\n\t}\n}\n\nfunction createNativeSupervisor(): native.TaskSupervisor {\n\t// Keep loading separate from `new`: type-assertion erasure in the build\n\t// must not move construction onto createModuleRequire instead of the class.\n\tconst binding = createModuleRequire(import.meta.url)(\"@bastani/atomic-natives\") as typeof native;\n\treturn new binding.TaskSupervisor();\n}\n\nexport class TaskSupervisor {\n\t#native = createNativeSupervisor();\n\t#hosts = environment.hosts;\n\t#owners = environment.owners;\n\t#tasks = environment.tasks;\n\t#waits = environment.waits;\n\t#waitRegistry = environment.waitRegistry;\n\t#ownerIds = environment.ownerIds;\n\tbindHostSession(binding: TrustedTaskHost): HostSession {\n\t\tconst host = new HostCapability();\n\t\tObject.freeze(host);\n\t\tthis.#hosts.set(host, { native: this.#native.bindHostSession(binding.scope), binding });\n\t\treturn host;\n\t}\n\topenTaskOwner(host: HostSession, scope: C.OwnerScope): C.Result<OwnerLease, C.OwnerError> {\n\t\tconst state = this.#host(host);\n\t\treturn mapped(\n\t\t\tthis.#native.openTaskOwner(state.native, scope),\n\t\t\t(lease) => {\n\t\t\t\tconst probe = this.#native.watchOwnerTasks(lease, (_hint) => {});\n\t\t\t\tif (!probe.ok) throw new Error(probe.error.message);\n\t\t\t\tconst id = probe.value.snapshot.ownerId as C.OwnerId;\n\t\t\t\tthis.#native.disposeSubscription(probe.value.lease);\n\t\t\t\tconst existing = this.#ownerIds.get(id);\n\t\t\t\tif (existing) return existing;\n\t\t\t\tconst owner = new OwnerCapability();\n\t\t\t\tObject.freeze(owner);\n\t\t\t\tconst ownerState: OwnerState = {\n\t\t\t\t\tnative: lease,\n\t\t\t\t\thost: state,\n\t\t\t\t\ttasks: new Map(),\n\t\t\t\t\twatches: new Set(),\n\t\t\t\t\tsettledTasks: new Set(),\n\t\t\t\t\tcommandAdmissions: new Set(),\n\t\t\t\t};\n\t\t\t\tthis.#owners.set(owner, ownerState);\n\t\t\t\tthis.#ownerIds.set(id, owner);\n\t\t\t\tconst watched = this.watchOwnerTasks(owner);\n\t\t\t\tif (!watched.ok) throw new Error(watched.error.message);\n\t\t\t\twatched.value.onReconcile = (projection) => {\n\t\t\t\t\tif (projection.state === \"closed\") this.#ownerIds.delete(projection.ownerId);\n\t\t\t\t\tfor (const record of projection.tasks) {\n\t\t\t\t\t\tconst cause =\n\t\t\t\t\t\t\trecord.execution.kind === \"cancelling\"\n\t\t\t\t\t\t\t\t? record.execution.cause\n\t\t\t\t\t\t\t\t: projection.state !== \"open\" && record.cleanup.kind !== \"reaped\"\n\t\t\t\t\t\t\t\t\t? \"owner-close\"\n\t\t\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\t\tif (!cause) continue;\n\t\t\t\t\t\tconst task = this.#owner(owner).tasks.get(record.ref.taskId);\n\t\t\t\t\t\tif (task) this.#task(task).controller.abort(cause);\n\t\t\t\t\t}\n\t\t\t\t\tlet failure: Error | undefined;\n\t\t\t\t\tfor (const record of projection.tasks) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\trecord.execution.kind !== \"settled\" ||\n\t\t\t\t\t\t\townerState.settledTasks.has(record.ref.taskId) ||\n\t\t\t\t\t\t\t!state.binding.onTaskSettled\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t// Cancellation settles at cleanup (or while queued), without a runner outcome.\n\t\t\t\t\t\t\t// Recover its authentic receipt even when the bounded journal has reset.\n\t\t\t\t\t\t\tconst task = this.#native.lookupTask(lease, record.ref.taskId);\n\t\t\t\t\t\t\tif (!task.ok) throw new Error(task.error.message);\n\t\t\t\t\t\t\tconst settled = this.#native.taskSettlement(task.value);\n\t\t\t\t\t\t\tif (!settled.ok) throw new Error(settled.error.message);\n\t\t\t\t\t\t\tthis.#notifyTaskSettled(ownerState, record.ref, settled.value);\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tfailure ??= new Error(rejectionMessage(error));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (failure) throw failure;\n\t\t\t\t};\n\t\t\t\twatched.value.onReconcile(watched.value.snapshot, []);\n\t\t\t\treturn owner;\n\t\t\t},\n\t\t\townerErrors,\n\t\t);\n\t}\n\t#notifyTaskSettled(state: OwnerState, ref: C.NativeTaskRef, receipt: native.SettlementReceipt): void {\n\t\tif (!state.host.binding.onTaskSettled || state.settledTasks.has(ref.taskId)) return;\n\t\t// Runner outcomes and snapshot recovery share one delivery door. Mark before\n\t\t// host code so reentrant drains or callback failures cannot redeliver.\n\t\tstate.settledTasks.add(ref.taskId);\n\t\tstate.host.binding.onTaskSettled(ref, {\n\t\t\ttaskId: receipt.taskId as C.TaskId,\n\t\t\tcursor: cursor(receipt.cursor),\n\t\t\tresult: taskResult(receipt.result),\n\t\t\tcompletionId: receipt.completionId,\n\t\t});\n\t}\n\tasync startCommandTask(\n\t\towner: OwnerLease,\n\t\tintent: C.CommandIntent,\n\t\toperation: C.OperationId,\n\t): Promise<C.Result<TaskLease, C.StartFailure>> {\n\t\tconst state = this.#owner(owner);\n\t\tstate.host.binding.authorizeCommandLaunch?.(intent);\n\t\t// Native command setup can be admitted before its task lease is visible in JS.\n\t\tlet finishAdmission!: () => void;\n\t\tconst admission = new Promise<void>((resolve) => {\n\t\t\tfinishAdmission = resolve;\n\t\t});\n\t\tstate.commandAdmissions.add(admission);\n\t\ttry {\n\t\t\tconst admitted = mapped(\n\t\t\t\tawait this.#native.startCommandTask(state.native, intent, operation),\n\t\t\t\t(lease) => lease,\n\t\t\t\tstartErrors,\n\t\t\t);\n\t\t\tif (!admitted.ok) return admitted;\n\t\t\tconst ref = this.#native.taskReference(admitted.value);\n\t\t\tif (!ref.ok) throw new Error(ref.error.message);\n\t\t\tconst id = ref.value.taskId as C.TaskId;\n\t\t\tconst existing = state.tasks.get(id);\n\t\t\tif (existing) return { ok: true, value: existing };\n\t\t\tconst task = new TaskCapability();\n\t\t\tthis.#tasks.set(task, {\n\t\t\t\tnative: admitted.value,\n\t\t\t\towner: state,\n\t\t\t\tref: reference(ref.value),\n\t\t\t\tcontroller: new AbortController(),\n\t\t\t\tkind: \"command\",\n\t\t\t});\n\t\t\tstate.tasks.set(id, task);\n\t\t\treturn { ok: true, value: task };\n\t\t} finally {\n\t\t\tstate.commandAdmissions.delete(admission);\n\t\t\tfinishAdmission();\n\t\t}\n\t}\n\t/** Caller must hold launch authorization closed while this snapshot drains. */\n\tasync drainCommandAdmissions(owner: OwnerLease): Promise<void> {\n\t\tawait Promise.all([...this.#owner(owner).commandAdmissions]);\n\t}\n\ttaskStdin(task: TaskLease): C.Result<StdinLease, C.InputError> {\n\t\treturn mapped(\n\t\t\tthis.#native.taskStdin(this.#task(task).native),\n\t\t\t(input) => {\n\t\t\t\tconst lease = new StdinCapability();\n\t\t\t\tenvironment.inputs.set(lease, input);\n\t\t\t\treturn lease;\n\t\t\t},\n\t\t\t[\"TaskTerminal\", \"StdinClosed\", \"UnknownTask\", \"OutputUnavailable\"] as const,\n\t\t);\n\t}\n\tasync writeTaskInput(\n\t\tinput: StdinLease,\n\t\toperation: C.OperationId,\n\t\tdata: C.InputData,\n\t): Promise<C.Result<C.InputReceipt, C.InputError>> {\n\t\tconst lease = environment.inputs.get(input);\n\t\tif (!lease) throw new TypeError(\"Foreign stdin capability\");\n\t\treturn mapped(\n\t\t\tawait this.#native.writeTaskInput(\n\t\t\t\tlease,\n\t\t\t\toperation,\n\t\t\t\tdata.kind === \"bytes\" ? { kind: \"bytes\", bytes: Buffer.from(data.bytes) } : data,\n\t\t\t),\n\t\t\t(value) => ({\n\t\t\t\toperationId: value.operationId as C.OperationId,\n\t\t\t\tacceptedBytes: value.acceptedBytes,\n\t\t\t\tkind: value.kind as \"bytes\" | \"eof\",\n\t\t\t}),\n\t\t\t[\"TaskTerminal\", \"StdinClosed\", \"InputBackpressure\", \"OperationConflict\", \"InputDeliveryUnknown\"] as const,\n\t\t);\n\t}\n\tasync readTaskOutput(task: TaskLease, range: C.OutputRange): Promise<C.Result<C.OutputPage, C.OutputError>> {\n\t\treturn mapped(\n\t\t\tawait this.#native.readTaskOutput(this.#task(task).native, range),\n\t\t\t(page) => ({\n\t\t\t\trequested: page.requested,\n\t\t\t\tchunks: page.chunks.map((chunk) => ({ offsets: chunk.offsets, bytes: new Uint8Array(chunk.bytes) })),\n\t\t\t\tomittedRanges: page.omittedRanges,\n\t\t\t\t...(page.nextOffset === undefined ? {} : { nextOffset: page.nextOffset }),\n\t\t\t}),\n\t\t\t[\"UnknownTask\", \"OutputUnavailable\"] as const,\n\t\t);\n\t}\n\tasync startAgentTask(\n\t\towner: OwnerLease,\n\t\tintent: C.AgentIntent,\n\t\toperation: C.OperationId,\n\t\tschedule?: (dispatch: () => Promise<void>) => void,\n\t): Promise<C.Result<TaskLease, C.StartFailure>> {\n\t\tconst state = this.#owner(owner);\n\t\tstate.host.binding.authorizeLaunch(intent);\n\t\tconst admitted = mapped(\n\t\t\tthis.#native.startAgentTask(state.native, intent, operation),\n\t\t\t(lease) => lease,\n\t\t\tstartErrors,\n\t\t);\n\t\tif (!admitted.ok) return admitted;\n\t\tconst ref = this.#native.taskReference(admitted.value);\n\t\tif (!ref.ok) throw new Error(ref.error.message);\n\t\tconst id = ref.value.taskId as C.TaskId;\n\t\tconst existing = state.tasks.get(id);\n\t\tif (existing) return { ok: true, value: existing };\n\t\tif (intent.routerSelection) routerSelections.set(id, Object.freeze({ ...intent.routerSelection }));\n\t\tconst task = new TaskCapability();\n\t\tObject.freeze(task);\n\t\tconst taskState: TaskState = {\n\t\t\tnative: admitted.value,\n\t\t\towner: state,\n\t\t\tref: reference(ref.value),\n\t\t\tcontroller: new AbortController(),\n\t\t};\n\t\tthis.#tasks.set(task, taskState);\n\t\tstate.tasks.set(id, task);\n\t\tconst dispatch = AsyncResource.bind(async () => {\n\t\t\tif (taskState.controller.signal.aborted) return;\n\t\t\tconst runner = mapped(this.#native.claimTaskRunner(admitted.value), (lease) => lease, startErrors);\n\t\t\tif (!runner.ok) throw new Error(`${runner.error.code}: ${runner.error.message}`);\n\t\t\tlet execution: FakeExecution;\n\t\t\ttry {\n\t\t\t\texecution = state.host.binding.createRunner(\n\t\t\t\t\t{\n\t\t\t\t\t\tref: reference(taskState.ref),\n\t\t\t\t\t\tsignal: taskState.controller.signal,\n\t\t\t\t\t\tbindTranscript: (session) => {\n\t\t\t\t\t\t\ttaskState.inheritedEntryCount ??= session.getEntries().length;\n\t\t\t\t\t\t\ttaskState.transcript = session;\n\t\t\t\t\t\t},\n\t\t\t\t\t\treportActivity: (report) =>\n\t\t\t\t\t\t\tmapped(this.#native.reportTaskActivity(runner.value, report), reportReceipt, reportErrors),\n\t\t\t\t\t},\n\t\t\t\t\tintent,\n\t\t\t\t);\n\t\t\t} catch (error) {\n\t\t\t\tconst message = rejectionMessage(error);\n\t\t\t\texecution = {\n\t\t\t\t\tresult: Promise.resolve({ kind: \"failed\", code: \"SpawnFailed\", message }),\n\t\t\t\t\tcleanup: Promise.resolve({\n\t\t\t\t\t\tkind: \"failed\",\n\t\t\t\t\t\tresources: [{ resource: \"fake-runner-setup\", code: \"CleanupUnconfirmed\", message }],\n\t\t\t\t\t}),\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst outcome = execution.result\n\t\t\t\t.catch((error) => ({ kind: \"failed\" as const, code: \"RunnerFailed\", message: rejectionMessage(error) }))\n\t\t\t\t.then((result) => {\n\t\t\t\t\treturn mapped(\n\t\t\t\t\t\tthis.#native.reportRunnerOutcome(runner.value, result),\n\t\t\t\t\t\t(receipt) => this.#notifyTaskSettled(state, taskState.ref, receipt),\n\t\t\t\t\t\treportErrors,\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\tconst cleanup = execution.cleanup.catch(\n\t\t\t\t(error): C.Cleanup => ({\n\t\t\t\t\tkind: \"failed\",\n\t\t\t\t\tresources: [{ resource: \"fake-runner\", code: \"CleanupFailed\", message: rejectionMessage(error) }],\n\t\t\t\t}),\n\t\t\t);\n\t\t\ttaskState.execution = cleanup.then(async (evidence) => {\n\t\t\t\t// Natural reaping follows its outcome; cancellation needs only confirmed stop.\n\t\t\t\t// A result may never arrive after abort, including when cleanup arrived first.\n\t\t\t\tconst signal = taskState.controller.signal;\n\t\t\t\tlet stopped!: () => void;\n\t\t\t\tconst cancelled = new Promise<undefined>((resolve) => {\n\t\t\t\t\tstopped = () => resolve(undefined);\n\t\t\t\t\tif (signal.aborted) stopped();\n\t\t\t\t\telse signal.addEventListener(\"abort\", stopped, { once: true });\n\t\t\t\t});\n\t\t\t\tconst reported = await Promise.race([outcome, cancelled]).finally(() => {\n\t\t\t\t\tsignal.removeEventListener(\"abort\", stopped);\n\t\t\t\t});\n\t\t\t\tconst acknowledged = mapped(\n\t\t\t\t\tthis.#native.acknowledgeTaskCleanup(runner.value, evidence),\n\t\t\t\t\t(cleanup) => cleanup,\n\t\t\t\t\treportErrors,\n\t\t\t\t);\n\t\t\t\tif (reported && !reported.ok && !(signal.aborted && reported.error.code === \"ReportConflict\"))\n\t\t\t\t\treturn reported;\n\t\t\t\treturn acknowledged;\n\t\t\t});\n\t\t\tawait taskState.execution;\n\t\t});\n\t\tif (schedule) schedule(dispatch);\n\t\telse void dispatch();\n\t\t// Setup is complete. Do not await execution; ready terminal microtasks may win observation.\n\t\tawait Promise.resolve();\n\t\treturn { ok: true, value: task };\n\t}\n\ttaskReference(task: TaskLease): C.NativeTaskRef {\n\t\treturn reference(this.#task(task).ref);\n\t}\n\tasync waitForTask(\n\t\ttask: TaskLease,\n\t\tbudgetMs?: number,\n\t\tdesignation?: HostSession,\n\t): Promise<C.Result<C.WaitOutcome, C.WaitError>> {\n\t\tconst registered = mapped(\n\t\t\tthis.#native.waitForTask(\n\t\t\t\tthis.#task(task).native,\n\t\t\t\tthis.#agentBudget(this.#task(task).owner, budgetMs, this.#task(task).kind === \"command\"),\n\t\t\t\tdesignation ? this.#host(designation).native : undefined,\n\t\t\t),\n\t\t\t(lease) => this.#register(lease),\n\t\t\twaitErrors,\n\t\t);\n\t\treturn registered.ok ? this.observeTaskWait(registered.value) : registered;\n\t}\n\t/** Resolve only a task admitted under this live owner; IDs alone confer no authority. */\n\tlookupTask(owner: OwnerLease, taskId: C.TaskId): C.Result<TaskLease, C.WaitError> {\n\t\tconst state = this.#owner(owner);\n\t\tconst found = mapped(this.#native.lookupTask(state.native, taskId), () => state.tasks.get(taskId), waitErrors);\n\t\tif (!found.ok) return found;\n\t\tif (!found.value) return { ok: false, error: { code: \"UnknownTask\", message: \"No agent runner bound to task\" } };\n\t\treturn { ok: true, value: found.value };\n\t}\n\n\tasync waitForTaskId(\n\t\towner: OwnerLease,\n\t\ttaskId: C.TaskId,\n\t\tbudgetMs?: number,\n\t\tonRegistered?: (wait: WaitLease) => void,\n\t): Promise<C.Result<C.WaitOutcome, C.WaitError>> {\n\t\tconst found = mapped(this.#native.lookupTask(this.#owner(owner).native, taskId), (lease) => lease, waitErrors);\n\t\tif (!found.ok) return found;\n\t\tconst known = this.#owner(owner).tasks.get(taskId);\n\t\tconst registered = mapped(\n\t\t\tthis.#native.waitForTask(\n\t\t\t\tfound.value,\n\t\t\t\tthis.#agentBudget(\n\t\t\t\t\tthis.#owner(owner),\n\t\t\t\t\tbudgetMs,\n\t\t\t\t\tknown !== undefined && this.#task(known).kind === \"command\",\n\t\t\t\t),\n\t\t\t),\n\t\t\t(lease) => this.#register(lease),\n\t\t\twaitErrors,\n\t\t);\n\t\tif (!registered.ok) return registered;\n\t\tonRegistered?.(registered.value);\n\t\treturn this.observeTaskWait(registered.value);\n\t}\n\tasync foregroundTask(task: TaskLease, budgetMs?: number): Promise<C.Result<C.WaitOutcome, C.ForegroundError>> {\n\t\tconst state = this.#task(task);\n\t\tconst errors = [\"TaskTerminal\", \"OwnerClosing\", \"UnknownTask\", \"ObserverCancelled\"] as const;\n\t\tconst registered = mapped(\n\t\t\tthis.#native.foregroundTask(\n\t\t\t\tstate.native,\n\t\t\t\tstate.owner.host.native,\n\t\t\t\tthis.#agentBudget(state.owner, budgetMs, state.kind === \"command\"),\n\t\t\t),\n\t\t\t(lease) => this.#register(lease),\n\t\t\terrors,\n\t\t);\n\t\treturn registered.ok\n\t\t\t? mapped(await this.observeTaskWait(registered.value), (outcome) => outcome, errors)\n\t\t\t: registered;\n\t}\n\twaitId(wait: WaitLease): C.WaitId {\n\t\treturn this.#wait(wait).native.waitId as C.WaitId;\n\t}\n\tfindWait(id: C.WaitId): WaitLease | undefined {\n\t\treturn this.#waitRegistry.get(id);\n\t}\n\tobserveTaskWait(wait: WaitLease): Promise<C.Result<C.WaitOutcome, C.WaitError>> {\n\t\treturn this.#wait(wait).outcome;\n\t}\n\tyieldTaskWait(wait: WaitLease, reason: C.YieldReason): C.Result<C.WaitOutcome, C.YieldError> {\n\t\treturn mapped(this.#native.yieldTaskWait(this.#wait(wait).native, reason), waitOutcome, [\n\t\t\t\"UnknownWait\",\n\t\t\t\"StaleGeneration\",\n\t\t\t\"ObserverCancelled\",\n\t\t]);\n\t}\n\tdisposeTaskWait(wait: WaitLease): C.Result<void, C.WaitError> {\n\t\treturn mapped(this.#native.disposeTaskWait(this.#wait(wait).native), () => undefined, waitErrors);\n\t}\n\tasync initialObservation(\n\t\ttask: TaskLease,\n\t\tpolicy?: C.WaitPolicy,\n\t\tonRegistered?: (wait: WaitLease) => void,\n\t): Promise<C.Result<C.WaitOutcome, C.WaitError>> {\n\t\tconst state = this.#task(task);\n\t\tpolicy ??= state.kind === \"command\" ? { kind: \"foreground\" } : undefined;\n\t\tconst registered = mapped(\n\t\t\tthis.#native.waitForTask(\n\t\t\t\tstate.native,\n\t\t\t\tpolicy?.kind === \"foreground\"\n\t\t\t\t\t? this.#agentBudget(state.owner, policy.budgetMs, state.kind === \"command\")\n\t\t\t\t\t: undefined,\n\t\t\t\tstate.owner.host.native,\n\t\t\t),\n\t\t\t(lease) => this.#register(lease),\n\t\t\twaitErrors,\n\t\t);\n\t\tif (!registered.ok) return registered;\n\t\tonRegistered?.(registered.value);\n\t\tif (policy?.kind !== \"foreground\")\n\t\t\tthis.yieldTaskWait(registered.value, policy ? \"explicit\" : \"default-background\");\n\t\treturn this.observeTaskWait(registered.value);\n\t}\n\tasync cancelTask(task: TaskLease, cause: C.CancelCause): Promise<C.Result<C.CancelReceipt, C.CancelError>> {\n\t\tconst state = this.#task(task);\n\t\tconst result = mapped(this.#native.cancelTask(state.native, cause), cancelReceipt, [\n\t\t\t\"UnknownTask\",\n\t\t\t\"CleanupFailed\",\n\t\t]);\n\t\tif (result.ok && result.value.decision === \"cancellation-requested\") state.controller.abort(cause);\n\t\treturn result;\n\t}\n\tasync closeTaskOwner(\n\t\towner: OwnerLease,\n\t\tcause: C.OwnerCloseCause,\n\t): Promise<C.Result<C.OwnerCloseReceipt, C.CloseError>> {\n\t\tconst state = this.#owner(owner);\n\t\tconst closing = this.#native.closeTaskOwner(state.native, cause);\n\t\tfor (const task of state.tasks.values()) this.#task(task).controller.abort(\"owner-close\");\n\t\tconst result = mapped(\n\t\t\tawait closing,\n\t\t\t(receipt): C.OwnerCloseReceipt => ({\n\t\t\t\townerId: receipt.ownerId as C.OwnerId,\n\t\t\t\tstate: \"closed\",\n\t\t\t\ttasks: receipt.tasks.map(cancelReceipt),\n\t\t\t}),\n\t\t\t[\"CleanupFailed\", \"EnvironmentClosing\"],\n\t\t);\n\t\tif (result.ok)\n\t\t\tfor (const task of state.tasks.values()) {\n\t\t\t\tconst completed = await this.#task(task).execution;\n\t\t\t\tif (completed && !completed.ok)\n\t\t\t\t\tthrow new Error(`Runner protocol failed: ${completed.error.code}: ${completed.error.message}`);\n\t\t\t}\n\t\tif (result.ok)\n\t\t\tfor (const watch of state.watches) {\n\t\t\t\twatch.drain();\n\t\t\t\twatch.dispose(false);\n\t\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t * The bounded stream carries only authentic deltas. Overflow/native reset publishes\n\t * snapshot/cursor then ends the current iterator, even with no surviving delta.\n\t * Reconcile on completion; obtain a new iterator on the same events iterable to\n\t * continue observing. Apply snapshots first and ignore deltas at/below their cursor.\n\t * onReconcile is optional; consumer failures never disable the fallback poll.\n\t */\n\twatchOwnerTasks(owner: OwnerLease, from?: C.Cursor): C.Result<TaskSubscription, C.WatchError> {\n\t\tconst state = this.#owner(owner);\n\t\tlet subscription: TaskSubscription | undefined;\n\t\treturn mapped(\n\t\t\tthis.#native.watchOwnerTasks(state.native, (hint) => subscription?.wake(hint), from),\n\t\t\t(initial) => {\n\t\t\t\tsubscription = new TaskSubscription(this.#native, initial, () => {\n\t\t\t\t\tif (subscription) state.watches.delete(subscription);\n\t\t\t\t});\n\t\t\t\tstate.watches.add(subscription);\n\t\t\t\treturn subscription;\n\t\t\t},\n\t\t\twatchErrors,\n\t\t);\n\t}\n\t#agentBudget(owner: OwnerState, budgetMs?: number, command = false): number | undefined {\n\t\tif (budgetMs !== undefined) return budgetMs;\n\t\tconst configuration = owner.host.binding.tasks?.wait;\n\t\tif (configuration?.kind === \"until-settled\") return undefined;\n\t\treturn command\n\t\t\t? (configuration?.commandBudgetMs ?? COMMAND_FOREGROUND_BUDGET_MS)\n\t\t\t: (configuration?.agentBudgetMs ?? DEFAULT_AGENT_WAIT_BUDGET_MS);\n\t}\n\t#register(lease: native.WaitLease): WaitLease {\n\t\tconst wait = new WaitCapability();\n\t\tObject.freeze(wait);\n\t\tconst id = lease.waitId as C.WaitId;\n\t\tthis.#waitRegistry.set(id, wait);\n\t\tconst outcome = this.#native\n\t\t\t.observeTaskWait(lease)\n\t\t\t.then((result) => mapped(result, waitOutcome, waitErrors))\n\t\t\t.finally(() => {\n\t\t\t\tthis.#waitRegistry.delete(id);\n\t\t\t});\n\t\tthis.#waits.set(wait, { native: lease, outcome });\n\t\treturn wait;\n\t}\n\t#host(host: HostSession): HostState {\n\t\tconst state = this.#hosts.get(host);\n\t\tif (!state) throw new TypeError(\"Foreign host capability\");\n\t\treturn state;\n\t}\n\t#owner(owner: OwnerLease): OwnerState {\n\t\tconst state = this.#owners.get(owner);\n\t\tif (!state) throw new TypeError(\"Foreign owner capability\");\n\t\treturn state;\n\t}\n\t#task(task: TaskLease): TaskState {\n\t\tconst state = this.#tasks.get(task);\n\t\tif (!state) throw new TypeError(\"Foreign task capability\");\n\t\treturn state;\n\t}\n\t#wait(wait: WaitLease): WaitState {\n\t\tconst state = this.#waits.get(wait);\n\t\tif (!state) throw new TypeError(\"Foreign wait capability\");\n\t\treturn state;\n\t}\n}\n"]}
|
|
@@ -43,11 +43,20 @@ export function buildQuestionnaire(config) {
|
|
|
43
43
|
* discarded once the handle is returned.
|
|
44
44
|
*/
|
|
45
45
|
class QuestionnaireBuilder {
|
|
46
|
+
tui;
|
|
47
|
+
theme;
|
|
48
|
+
questions;
|
|
49
|
+
itemsByTab;
|
|
50
|
+
isMulti;
|
|
51
|
+
initialState;
|
|
52
|
+
getCurrentTab;
|
|
53
|
+
selectTheme;
|
|
54
|
+
markdownTheme = getMarkdownTheme();
|
|
55
|
+
chatRow;
|
|
56
|
+
notesInput = new Input();
|
|
57
|
+
inlineInput = new Input();
|
|
58
|
+
getTerminalWidth = () => this.tui.terminal.columns;
|
|
46
59
|
constructor(config) {
|
|
47
|
-
this.markdownTheme = getMarkdownTheme();
|
|
48
|
-
this.notesInput = new Input();
|
|
49
|
-
this.inlineInput = new Input();
|
|
50
|
-
this.getTerminalWidth = () => this.tui.terminal.columns;
|
|
51
60
|
this.tui = config.tui;
|
|
52
61
|
this.theme = config.theme;
|
|
53
62
|
this.questions = config.questions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-questionnaire.js","sourceRoot":"","sources":["../../../../../src/core/tools/ask-user-question/state/build-questionnaire.ts"],"names":[],"mappings":"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","sourcesContent":["import { Input } from \"@earendil-works/pi-tui\";\nimport { getMarkdownTheme, type Theme } from \"../../../../modes/interactive/theme/theme.js\";\nimport type { QuestionData } from \"../tool/types.js\";\nimport {\n\ttype BoundGlobalBinding,\n\ttype BoundPerTabBinding,\n\tglobalBinding,\n\tperTabBinding,\n} from \"../view/component-binding.ts\";\nimport { ChatRowView } from \"../view/components/chat-row-view.ts\";\nimport { MultiSelectView } from \"../view/components/multi-select-view.ts\";\nimport { OptionListView } from \"../view/components/option-list-view.ts\";\nimport { PreviewBlockRenderer } from \"../view/components/preview/preview-block-renderer.ts\";\nimport { crossTabLeftWidthWithDonation } from \"../view/components/preview/preview-layout-decider.ts\";\nimport type { PreviewPaneProps } from \"../view/components/preview/preview-pane.ts\";\nimport { PreviewPane } from \"../view/components/preview/preview-pane.ts\";\nimport { SubmitPicker } from \"../view/components/submit-picker.ts\";\nimport { TabBar } from \"../view/components/tab-bar.ts\";\nimport type { WrappingSelectItem, WrappingSelectTheme } from \"../view/components/wrapping-select.ts\";\nimport { DialogView } from \"../view/dialog-builder.ts\";\nimport { QuestionnairePropsAdapter } from \"../view/props-adapter.ts\";\nimport type { StatefulView } from \"../view/stateful-view.ts\";\nimport type { TabBodyHeights, TabComponents } from \"../view/tab-components.ts\";\nimport { ROW_INTENT_META } from \"./row-intent.ts\";\nimport type { PerTabSelector } from \"./selectors/contract.ts\";\nimport { selectActivePreviewPaneIndex } from \"./selectors/derivations.ts\";\nimport {\n\tselectChatRowProps,\n\tselectDialogProps,\n\tselectMultiSelectProps,\n\tselectOptionListProps,\n\tselectPreviewPaneProps,\n\tselectSubmitPickerProps,\n\tselectTabBarProps,\n} from \"./selectors/projections.ts\";\nimport type { QuestionnaireState } from \"./state.ts\";\n\nexport interface QuestionnaireBuildConfig {\n\ttui: { terminal: { columns: number }; requestRender(): void };\n\ttheme: Theme;\n\tquestions: readonly QuestionData[];\n\titemsByTab: ReadonlyArray<readonly WrappingSelectItem[]>;\n\tisMulti: boolean;\n\tinitialState: QuestionnaireState;\n\tgetCurrentTab: () => number;\n\tchatAsOption?: boolean;\n}\n\nexport interface QuestionnaireBuilt {\n\tadapter: QuestionnairePropsAdapter;\n\tnotesInput: Input;\n\tinlineInput: Input;\n\trender: (width: number) => string[];\n\tinvalidate: () => void;\n}\n\ninterface HeightComputers {\n\tglobal: (width: number) => number;\n\tcurrent: (width: number) => number;\n}\n\nfunction previewBodyHeights(pane: PreviewPane): (width: number) => TabBodyHeights {\n\treturn (width) => ({\n\t\tcurrent: pane.naturalHeight(width),\n\t\tmax: pane.maxNaturalHeight(width),\n\t});\n}\n\nfunction multiSelectBodyHeights(view: MultiSelectView): (width: number) => TabBodyHeights {\n\treturn (width) => {\n\t\tconst h = view.naturalHeight(width);\n\t\treturn { current: h, max: h };\n\t};\n}\n\nconst isActiveTab: PerTabSelector<boolean> = (s, ctx) =>\n\tctx.i === selectActivePreviewPaneIndex(s.currentTab, ctx.totalQuestions);\n\n/**\n * Pure factory: assembles every TUI component, the props adapter, and a\n * lifecycle handle. Session-state dependencies arrive via `getCurrentTab` and\n * the `inputBuffer` cell. Initial paint is delegated to\n * `adapter.apply(initialState)` (called by the session at construction-end);\n * no selector is invoked here.\n */\nexport function buildQuestionnaire(config: QuestionnaireBuildConfig): QuestionnaireBuilt {\n\treturn new QuestionnaireBuilder(config).build();\n}\n\n/**\n * Programming-by-intention assembly: each private method names one\n * construction step from `build()`. Read top-down; the class is build-only and\n * discarded once the handle is returned.\n */\nclass QuestionnaireBuilder {\n\tprivate readonly tui: QuestionnaireBuildConfig[\"tui\"];\n\tprivate readonly theme: Theme;\n\tprivate readonly questions: readonly QuestionData[];\n\tprivate readonly itemsByTab: ReadonlyArray<readonly WrappingSelectItem[]>;\n\tprivate readonly isMulti: boolean;\n\tprivate readonly initialState: QuestionnaireState;\n\tprivate readonly getCurrentTab: () => number;\n\n\tprivate readonly selectTheme: WrappingSelectTheme;\n\tprivate readonly markdownTheme = getMarkdownTheme();\n\tprivate readonly chatRow: ChatRowView;\n\tprivate readonly notesInput = new Input();\n\tprivate readonly inlineInput = new Input();\n\tprivate readonly getTerminalWidth = () => this.tui.terminal.columns;\n\n\tconstructor(config: QuestionnaireBuildConfig) {\n\t\tthis.tui = config.tui;\n\t\tthis.theme = config.theme;\n\t\tthis.questions = config.questions;\n\t\tthis.itemsByTab = config.itemsByTab;\n\t\tthis.isMulti = config.isMulti;\n\t\tthis.initialState = config.initialState;\n\t\tthis.getCurrentTab = config.getCurrentTab;\n\n\t\tthis.selectTheme = this.makeSelectTheme();\n\t\tthis.chatRow = new ChatRowView({\n\t\t\titem: { kind: \"chat\", label: ROW_INTENT_META.chat.label },\n\t\t\ttheme: this.selectTheme,\n\t\t\tinlineInputEnabled: config.chatAsOption !== true,\n\t\t});\n\t}\n\n\tbuild(): QuestionnaireBuilt {\n\t\tconst tabs = this.buildTabComponents();\n\t\tthis.injectGlobalLeftWidth(tabs);\n\t\tconst submitPicker = this.buildSubmitPicker();\n\t\tconst tabBar = this.buildTabBar();\n\t\tconst heights = this.buildHeightComputers(tabs);\n\t\tconst dialog = this.buildDialog(tabs, submitPicker, tabBar, heights);\n\t\tconst globalBindings = this.buildGlobalBindings(dialog, submitPicker, tabBar);\n\t\tconst perTabBindings = this.buildPerTabBindings();\n\t\tconst adapter = this.buildAdapter(tabs, globalBindings, perTabBindings);\n\t\treturn this.handle(adapter, dialog);\n\t}\n\n\tprivate makeSelectTheme(): WrappingSelectTheme {\n\t\tconst t = this.theme;\n\t\treturn {\n\t\t\tselectedText: (s) => t.fg(\"accent\", t.bold(s)),\n\t\t\tdescription: (s) => t.fg(\"muted\", s),\n\t\t\tscrollInfo: (s) => t.fg(\"dim\", s),\n\t\t};\n\t}\n\n\tprivate buildTabComponents(): ReadonlyArray<TabComponents> {\n\t\treturn this.questions.map((q, i) => this.buildTabFor(q, i));\n\t}\n\n\tprivate buildTabFor(question: QuestionData, index: number): TabComponents {\n\t\tconst optionList = new OptionListView({\n\t\t\titems: this.itemsByTab[index] ?? [],\n\t\t\ttheme: this.selectTheme,\n\t\t});\n\t\tconst previewBlock = new PreviewBlockRenderer({\n\t\t\tquestion,\n\t\t\ttheme: this.theme,\n\t\t\tmarkdownTheme: this.markdownTheme,\n\t\t});\n\t\tconst preview = new PreviewPane({\n\t\t\tquestion,\n\t\t\tgetTerminalWidth: this.getTerminalWidth,\n\t\t\toptionListView: optionList,\n\t\t\tpreviewBlock,\n\t\t});\n\t\tconst multiSelect = question.multiSelect ? new MultiSelectView(this.theme, question) : undefined;\n\t\tconst bodyHeights = this.buildBodyHeights(question, preview, multiSelect);\n\t\treturn { optionList, preview, multiSelect, bodyHeights };\n\t}\n\n\tprivate buildBodyHeights(\n\t\tquestion: QuestionData,\n\t\tpreview: PreviewPane,\n\t\tmultiSelect: MultiSelectView | undefined,\n\t): (width: number) => TabBodyHeights {\n\t\treturn question.multiSelect ? multiSelectBodyHeights(multiSelect!) : previewBodyHeights(preview);\n\t}\n\n\t/**\n\t * Compute cross-tab max adaptive left width and inject into each PreviewPane.\n\t * Mirrors buildHeightComputers pattern — iterates all tabs, takes max.\n\t * Called after buildTabComponents, before buildDialog (so setGlobalLeftWidth\n\t * is set before any rendering occurs).\n\t */\n\tprivate injectGlobalLeftWidth(tabs: ReadonlyArray<TabComponents>): void {\n\t\tconst questions = this.questions;\n\t\tconst itemsByTab = this.itemsByTab;\n\t\tconst tabsDescriptor = questions.map((q) => ({ multiSelect: q.multiSelect }));\n\t\tconst globalLeftWidth = (paneWidth: number): number =>\n\t\t\tcrossTabLeftWidthWithDonation(tabsDescriptor, itemsByTab, questions, paneWidth);\n\t\tfor (const tab of tabs) {\n\t\t\ttab.preview.setGlobalLeftWidth(globalLeftWidth);\n\t\t}\n\t}\n\n\tprivate buildSubmitPicker(): SubmitPicker | undefined {\n\t\treturn this.isMulti ? new SubmitPicker(this.theme) : undefined;\n\t}\n\n\tprivate buildTabBar(): TabBar | undefined {\n\t\treturn this.isMulti ? new TabBar(this.theme) : undefined;\n\t}\n\n\tprivate buildHeightComputers(tabs: ReadonlyArray<TabComponents>): HeightComputers {\n\t\tconst global = (width: number): number => {\n\t\t\tlet max = 0;\n\t\t\tfor (const tab of tabs) {\n\t\t\t\tconst h = tab.bodyHeights(width).max;\n\t\t\t\tif (h > max) max = h;\n\t\t\t}\n\t\t\treturn Math.max(1, max);\n\t\t};\n\t\tconst current = (width: number): number => {\n\t\t\tconst idx = Math.min(this.getCurrentTab(), tabs.length - 1);\n\t\t\treturn Math.max(0, tabs[idx]?.bodyHeights(width).current ?? 0);\n\t\t};\n\t\treturn { global, current };\n\t}\n\n\tprivate pickInitialActivePreview(tabs: ReadonlyArray<TabComponents>): StatefulView<PreviewPaneProps> {\n\t\tconst idx = selectActivePreviewPaneIndex(this.initialState.currentTab, this.questions.length);\n\t\treturn tabs[idx]?.preview ?? tabs[0]!.preview;\n\t}\n\n\tprivate buildDialog(\n\t\ttabs: ReadonlyArray<TabComponents>,\n\t\tsubmitPicker: SubmitPicker | undefined,\n\t\ttabBar: TabBar | undefined,\n\t\theights: HeightComputers,\n\t): DialogView {\n\t\treturn new DialogView(\n\t\t\t{\n\t\t\t\ttheme: this.theme,\n\t\t\t\tquestions: this.questions,\n\t\t\t\ttabBar,\n\t\t\t\tnotesInput: this.notesInput,\n\t\t\t\tchatRow: this.chatRow,\n\t\t\t\tisMulti: this.isMulti,\n\t\t\t\ttabsByIndex: tabs,\n\t\t\t\tsubmitPicker,\n\t\t\t\tgetBodyHeight: heights.global,\n\t\t\t\tgetCurrentBodyHeight: heights.current,\n\t\t\t},\n\t\t\t{ state: this.initialState, activePreviewPane: this.pickInitialActivePreview(tabs) },\n\t\t);\n\t}\n\n\tprivate buildGlobalBindings(\n\t\tdialog: DialogView,\n\t\tsubmitPicker: SubmitPicker | undefined,\n\t\ttabBar: TabBar | undefined,\n\t): ReadonlyArray<BoundGlobalBinding> {\n\t\treturn [\n\t\t\tglobalBinding({ component: dialog, select: selectDialogProps }),\n\t\t\tglobalBinding({ component: this.chatRow, select: selectChatRowProps }),\n\t\t\t...(submitPicker ? [globalBinding({ component: submitPicker, select: selectSubmitPickerProps })] : []),\n\t\t\t...(tabBar ? [globalBinding({ component: tabBar, select: selectTabBarProps })] : []),\n\t\t];\n\t}\n\n\tprivate buildPerTabBindings(): ReadonlyArray<BoundPerTabBinding> {\n\t\treturn [\n\t\t\tperTabBinding({\n\t\t\t\tresolve: (tab) => tab.optionList,\n\t\t\t\tpredicate: isActiveTab,\n\t\t\t\tselect: selectOptionListProps,\n\t\t\t}),\n\t\t\tperTabBinding({\n\t\t\t\tresolve: (tab) => tab.preview,\n\t\t\t\tpredicate: isActiveTab,\n\t\t\t\tselect: selectPreviewPaneProps,\n\t\t\t}),\n\t\t\tperTabBinding({\n\t\t\t\tresolve: (tab) => tab.multiSelect,\n\t\t\t\tselect: selectMultiSelectProps,\n\t\t\t}),\n\t\t];\n\t}\n\n\tprivate buildAdapter(\n\t\ttabs: ReadonlyArray<TabComponents>,\n\t\tglobalBindings: ReadonlyArray<BoundGlobalBinding>,\n\t\tperTabBindings: ReadonlyArray<BoundPerTabBinding>,\n\t): QuestionnairePropsAdapter {\n\t\treturn new QuestionnairePropsAdapter({\n\t\t\ttui: this.tui,\n\t\t\tquestions: this.questions,\n\t\t\titemsByTab: this.itemsByTab,\n\t\t\ttabsByIndex: tabs,\n\t\t\tinlineInput: this.inlineInput,\n\t\t\tglobalBindings,\n\t\t\tperTabBindings,\n\t\t\textraInvalidatables: [this.notesInput],\n\t\t});\n\t}\n\n\tprivate handle(adapter: QuestionnairePropsAdapter, dialog: DialogView): QuestionnaireBuilt {\n\t\treturn {\n\t\t\tadapter,\n\t\t\tnotesInput: this.notesInput,\n\t\t\tinlineInput: this.inlineInput,\n\t\t\trender: (w) => dialog.render(w),\n\t\t\tinvalidate: () => adapter.invalidate(),\n\t\t};\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"build-questionnaire.js","sourceRoot":"","sources":["../../../../../src/core/tools/ask-user-question/state/build-questionnaire.ts"],"names":[],"mappings":"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","sourcesContent":["import { Input } from \"@earendil-works/pi-tui\";\nimport { getMarkdownTheme, type Theme } from \"../../../../modes/interactive/theme/theme.js\";\nimport type { QuestionData } from \"../tool/types.js\";\nimport {\n\ttype BoundGlobalBinding,\n\ttype BoundPerTabBinding,\n\tglobalBinding,\n\tperTabBinding,\n} from \"../view/component-binding.ts\";\nimport { ChatRowView } from \"../view/components/chat-row-view.ts\";\nimport { MultiSelectView } from \"../view/components/multi-select-view.ts\";\nimport { OptionListView } from \"../view/components/option-list-view.ts\";\nimport { PreviewBlockRenderer } from \"../view/components/preview/preview-block-renderer.ts\";\nimport { crossTabLeftWidthWithDonation } from \"../view/components/preview/preview-layout-decider.ts\";\nimport type { PreviewPaneProps } from \"../view/components/preview/preview-pane.ts\";\nimport { PreviewPane } from \"../view/components/preview/preview-pane.ts\";\nimport { SubmitPicker } from \"../view/components/submit-picker.ts\";\nimport { TabBar } from \"../view/components/tab-bar.ts\";\nimport type { WrappingSelectItem, WrappingSelectTheme } from \"../view/components/wrapping-select.ts\";\nimport { DialogView } from \"../view/dialog-builder.ts\";\nimport { QuestionnairePropsAdapter } from \"../view/props-adapter.ts\";\nimport type { StatefulView } from \"../view/stateful-view.ts\";\nimport type { TabBodyHeights, TabComponents } from \"../view/tab-components.ts\";\nimport { ROW_INTENT_META } from \"./row-intent.ts\";\nimport type { PerTabSelector } from \"./selectors/contract.ts\";\nimport { selectActivePreviewPaneIndex } from \"./selectors/derivations.ts\";\nimport {\n\tselectChatRowProps,\n\tselectDialogProps,\n\tselectMultiSelectProps,\n\tselectOptionListProps,\n\tselectPreviewPaneProps,\n\tselectSubmitPickerProps,\n\tselectTabBarProps,\n} from \"./selectors/projections.ts\";\nimport type { QuestionnaireState } from \"./state.ts\";\n\nexport interface QuestionnaireBuildConfig {\n\ttui: { terminal: { columns: number }; requestRender(): void };\n\ttheme: Theme;\n\tquestions: readonly QuestionData[];\n\titemsByTab: ReadonlyArray<readonly WrappingSelectItem[]>;\n\tisMulti: boolean;\n\tinitialState: QuestionnaireState;\n\tgetCurrentTab: () => number;\n\tchatAsOption?: boolean;\n}\n\nexport interface QuestionnaireBuilt {\n\tadapter: QuestionnairePropsAdapter;\n\tnotesInput: Input;\n\tinlineInput: Input;\n\trender: (width: number) => string[];\n\tinvalidate: () => void;\n}\n\ninterface HeightComputers {\n\tglobal: (width: number) => number;\n\tcurrent: (width: number) => number;\n}\n\nfunction previewBodyHeights(pane: PreviewPane): (width: number) => TabBodyHeights {\n\treturn (width) => ({\n\t\tcurrent: pane.naturalHeight(width),\n\t\tmax: pane.maxNaturalHeight(width),\n\t});\n}\n\nfunction multiSelectBodyHeights(view: MultiSelectView): (width: number) => TabBodyHeights {\n\treturn (width) => {\n\t\tconst h = view.naturalHeight(width);\n\t\treturn { current: h, max: h };\n\t};\n}\n\nconst isActiveTab: PerTabSelector<boolean> = (s, ctx) =>\n\tctx.i === selectActivePreviewPaneIndex(s.currentTab, ctx.totalQuestions);\n\n/**\n * Pure factory: assembles every TUI component, the props adapter, and a\n * lifecycle handle. Session-state dependencies arrive via `getCurrentTab` and\n * the `inputBuffer` cell. Initial paint is delegated to\n * `adapter.apply(initialState)` (called by the session at construction-end);\n * no selector is invoked here.\n */\nexport function buildQuestionnaire(config: QuestionnaireBuildConfig): QuestionnaireBuilt {\n\treturn new QuestionnaireBuilder(config).build();\n}\n\n/**\n * Programming-by-intention assembly: each private method names one\n * construction step from `build()`. Read top-down; the class is build-only and\n * discarded once the handle is returned.\n */\nclass QuestionnaireBuilder {\n\tprivate readonly tui: QuestionnaireBuildConfig[\"tui\"];\n\tprivate readonly theme: Theme;\n\tprivate readonly questions: readonly QuestionData[];\n\tprivate readonly itemsByTab: ReadonlyArray<readonly WrappingSelectItem[]>;\n\tprivate readonly isMulti: boolean;\n\tprivate readonly initialState: QuestionnaireState;\n\tprivate readonly getCurrentTab: () => number;\n\n\tprivate readonly selectTheme: WrappingSelectTheme;\n\tprivate readonly markdownTheme = getMarkdownTheme();\n\tprivate readonly chatRow: ChatRowView;\n\tprivate readonly notesInput = new Input();\n\tprivate readonly inlineInput = new Input();\n\tprivate readonly getTerminalWidth = () => this.tui.terminal.columns;\n\n\tconstructor(config: QuestionnaireBuildConfig) {\n\t\tthis.tui = config.tui;\n\t\tthis.theme = config.theme;\n\t\tthis.questions = config.questions;\n\t\tthis.itemsByTab = config.itemsByTab;\n\t\tthis.isMulti = config.isMulti;\n\t\tthis.initialState = config.initialState;\n\t\tthis.getCurrentTab = config.getCurrentTab;\n\n\t\tthis.selectTheme = this.makeSelectTheme();\n\t\tthis.chatRow = new ChatRowView({\n\t\t\titem: { kind: \"chat\", label: ROW_INTENT_META.chat.label },\n\t\t\ttheme: this.selectTheme,\n\t\t\tinlineInputEnabled: config.chatAsOption !== true,\n\t\t});\n\t}\n\n\tbuild(): QuestionnaireBuilt {\n\t\tconst tabs = this.buildTabComponents();\n\t\tthis.injectGlobalLeftWidth(tabs);\n\t\tconst submitPicker = this.buildSubmitPicker();\n\t\tconst tabBar = this.buildTabBar();\n\t\tconst heights = this.buildHeightComputers(tabs);\n\t\tconst dialog = this.buildDialog(tabs, submitPicker, tabBar, heights);\n\t\tconst globalBindings = this.buildGlobalBindings(dialog, submitPicker, tabBar);\n\t\tconst perTabBindings = this.buildPerTabBindings();\n\t\tconst adapter = this.buildAdapter(tabs, globalBindings, perTabBindings);\n\t\treturn this.handle(adapter, dialog);\n\t}\n\n\tprivate makeSelectTheme(): WrappingSelectTheme {\n\t\tconst t = this.theme;\n\t\treturn {\n\t\t\tselectedText: (s) => t.fg(\"accent\", t.bold(s)),\n\t\t\tdescription: (s) => t.fg(\"muted\", s),\n\t\t\tscrollInfo: (s) => t.fg(\"dim\", s),\n\t\t};\n\t}\n\n\tprivate buildTabComponents(): ReadonlyArray<TabComponents> {\n\t\treturn this.questions.map((q, i) => this.buildTabFor(q, i));\n\t}\n\n\tprivate buildTabFor(question: QuestionData, index: number): TabComponents {\n\t\tconst optionList = new OptionListView({\n\t\t\titems: this.itemsByTab[index] ?? [],\n\t\t\ttheme: this.selectTheme,\n\t\t});\n\t\tconst previewBlock = new PreviewBlockRenderer({\n\t\t\tquestion,\n\t\t\ttheme: this.theme,\n\t\t\tmarkdownTheme: this.markdownTheme,\n\t\t});\n\t\tconst preview = new PreviewPane({\n\t\t\tquestion,\n\t\t\tgetTerminalWidth: this.getTerminalWidth,\n\t\t\toptionListView: optionList,\n\t\t\tpreviewBlock,\n\t\t});\n\t\tconst multiSelect = question.multiSelect ? new MultiSelectView(this.theme, question) : undefined;\n\t\tconst bodyHeights = this.buildBodyHeights(question, preview, multiSelect);\n\t\treturn { optionList, preview, multiSelect, bodyHeights };\n\t}\n\n\tprivate buildBodyHeights(\n\t\tquestion: QuestionData,\n\t\tpreview: PreviewPane,\n\t\tmultiSelect: MultiSelectView | undefined,\n\t): (width: number) => TabBodyHeights {\n\t\treturn question.multiSelect ? multiSelectBodyHeights(multiSelect!) : previewBodyHeights(preview);\n\t}\n\n\t/**\n\t * Compute cross-tab max adaptive left width and inject into each PreviewPane.\n\t * Mirrors buildHeightComputers pattern — iterates all tabs, takes max.\n\t * Called after buildTabComponents, before buildDialog (so setGlobalLeftWidth\n\t * is set before any rendering occurs).\n\t */\n\tprivate injectGlobalLeftWidth(tabs: ReadonlyArray<TabComponents>): void {\n\t\tconst questions = this.questions;\n\t\tconst itemsByTab = this.itemsByTab;\n\t\tconst tabsDescriptor = questions.map((q) => ({ multiSelect: q.multiSelect }));\n\t\tconst globalLeftWidth = (paneWidth: number): number =>\n\t\t\tcrossTabLeftWidthWithDonation(tabsDescriptor, itemsByTab, questions, paneWidth);\n\t\tfor (const tab of tabs) {\n\t\t\ttab.preview.setGlobalLeftWidth(globalLeftWidth);\n\t\t}\n\t}\n\n\tprivate buildSubmitPicker(): SubmitPicker | undefined {\n\t\treturn this.isMulti ? new SubmitPicker(this.theme) : undefined;\n\t}\n\n\tprivate buildTabBar(): TabBar | undefined {\n\t\treturn this.isMulti ? new TabBar(this.theme) : undefined;\n\t}\n\n\tprivate buildHeightComputers(tabs: ReadonlyArray<TabComponents>): HeightComputers {\n\t\tconst global = (width: number): number => {\n\t\t\tlet max = 0;\n\t\t\tfor (const tab of tabs) {\n\t\t\t\tconst h = tab.bodyHeights(width).max;\n\t\t\t\tif (h > max) max = h;\n\t\t\t}\n\t\t\treturn Math.max(1, max);\n\t\t};\n\t\tconst current = (width: number): number => {\n\t\t\tconst idx = Math.min(this.getCurrentTab(), tabs.length - 1);\n\t\t\treturn Math.max(0, tabs[idx]?.bodyHeights(width).current ?? 0);\n\t\t};\n\t\treturn { global, current };\n\t}\n\n\tprivate pickInitialActivePreview(tabs: ReadonlyArray<TabComponents>): StatefulView<PreviewPaneProps> {\n\t\tconst idx = selectActivePreviewPaneIndex(this.initialState.currentTab, this.questions.length);\n\t\treturn tabs[idx]?.preview ?? tabs[0]!.preview;\n\t}\n\n\tprivate buildDialog(\n\t\ttabs: ReadonlyArray<TabComponents>,\n\t\tsubmitPicker: SubmitPicker | undefined,\n\t\ttabBar: TabBar | undefined,\n\t\theights: HeightComputers,\n\t): DialogView {\n\t\treturn new DialogView(\n\t\t\t{\n\t\t\t\ttheme: this.theme,\n\t\t\t\tquestions: this.questions,\n\t\t\t\ttabBar,\n\t\t\t\tnotesInput: this.notesInput,\n\t\t\t\tchatRow: this.chatRow,\n\t\t\t\tisMulti: this.isMulti,\n\t\t\t\ttabsByIndex: tabs,\n\t\t\t\tsubmitPicker,\n\t\t\t\tgetBodyHeight: heights.global,\n\t\t\t\tgetCurrentBodyHeight: heights.current,\n\t\t\t},\n\t\t\t{ state: this.initialState, activePreviewPane: this.pickInitialActivePreview(tabs) },\n\t\t);\n\t}\n\n\tprivate buildGlobalBindings(\n\t\tdialog: DialogView,\n\t\tsubmitPicker: SubmitPicker | undefined,\n\t\ttabBar: TabBar | undefined,\n\t): ReadonlyArray<BoundGlobalBinding> {\n\t\treturn [\n\t\t\tglobalBinding({ component: dialog, select: selectDialogProps }),\n\t\t\tglobalBinding({ component: this.chatRow, select: selectChatRowProps }),\n\t\t\t...(submitPicker ? [globalBinding({ component: submitPicker, select: selectSubmitPickerProps })] : []),\n\t\t\t...(tabBar ? [globalBinding({ component: tabBar, select: selectTabBarProps })] : []),\n\t\t];\n\t}\n\n\tprivate buildPerTabBindings(): ReadonlyArray<BoundPerTabBinding> {\n\t\treturn [\n\t\t\tperTabBinding({\n\t\t\t\tresolve: (tab) => tab.optionList,\n\t\t\t\tpredicate: isActiveTab,\n\t\t\t\tselect: selectOptionListProps,\n\t\t\t}),\n\t\t\tperTabBinding({\n\t\t\t\tresolve: (tab) => tab.preview,\n\t\t\t\tpredicate: isActiveTab,\n\t\t\t\tselect: selectPreviewPaneProps,\n\t\t\t}),\n\t\t\tperTabBinding({\n\t\t\t\tresolve: (tab) => tab.multiSelect,\n\t\t\t\tselect: selectMultiSelectProps,\n\t\t\t}),\n\t\t];\n\t}\n\n\tprivate buildAdapter(\n\t\ttabs: ReadonlyArray<TabComponents>,\n\t\tglobalBindings: ReadonlyArray<BoundGlobalBinding>,\n\t\tperTabBindings: ReadonlyArray<BoundPerTabBinding>,\n\t): QuestionnairePropsAdapter {\n\t\treturn new QuestionnairePropsAdapter({\n\t\t\ttui: this.tui,\n\t\t\tquestions: this.questions,\n\t\t\titemsByTab: this.itemsByTab,\n\t\t\ttabsByIndex: tabs,\n\t\t\tinlineInput: this.inlineInput,\n\t\t\tglobalBindings,\n\t\t\tperTabBindings,\n\t\t\textraInvalidatables: [this.notesInput],\n\t\t});\n\t}\n\n\tprivate handle(adapter: QuestionnairePropsAdapter, dialog: DialogView): QuestionnaireBuilt {\n\t\treturn {\n\t\t\tadapter,\n\t\t\tnotesInput: this.notesInput,\n\t\t\tinlineInput: this.inlineInput,\n\t\t\trender: (w) => dialog.render(w),\n\t\t\tinvalidate: () => adapter.invalidate(),\n\t\t};\n\t}\n}\n"]}
|
|
@@ -76,8 +76,18 @@ function initialState() {
|
|
|
76
76
|
* the `QuestionnairePropsAdapter` produced by `buildQuestionnaire`.
|
|
77
77
|
*/
|
|
78
78
|
export class QuestionnaireSession {
|
|
79
|
+
state = initialState();
|
|
80
|
+
questions;
|
|
81
|
+
isMulti;
|
|
82
|
+
itemsByTab;
|
|
83
|
+
chatAsOption;
|
|
84
|
+
notesInput;
|
|
85
|
+
inlineInput;
|
|
86
|
+
viewAdapter;
|
|
87
|
+
tui;
|
|
88
|
+
done;
|
|
89
|
+
component;
|
|
79
90
|
constructor(config) {
|
|
80
|
-
this.state = initialState();
|
|
81
91
|
this.tui = config.tui;
|
|
82
92
|
this.done = config.done;
|
|
83
93
|
this.questions = config.params.questions;
|