@caupulican/pi-adaptative 0.94.1 → 0.96.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +58 -0
- package/dist/bundled-resources/extensions/tmux-agent-manager/README.md +32 -13
- package/dist/bundled-resources/extensions/tmux-agent-manager/index.d.ts +7 -4
- package/dist/bundled-resources/extensions/tmux-agent-manager/index.d.ts.map +1 -1
- package/dist/bundled-resources/extensions/tmux-agent-manager/index.js +201 -293
- package/dist/bundled-resources/extensions/tmux-agent-manager/index.js.map +1 -1
- package/dist/bundled-resources/extensions/tmux-agent-manager/index.ts +272 -392
- package/dist/bundled-resources/extensions/tmux-agent-manager/launch-profile.d.ts +52 -0
- package/dist/bundled-resources/extensions/tmux-agent-manager/launch-profile.d.ts.map +1 -0
- package/dist/bundled-resources/extensions/tmux-agent-manager/launch-profile.js +118 -0
- package/dist/bundled-resources/extensions/tmux-agent-manager/launch-profile.js.map +1 -0
- package/dist/bundled-resources/extensions/tmux-agent-manager/launch-profile.ts +169 -0
- package/dist/bundled-resources/extensions/tmux-agent-manager/templates/builder-validator.json +1 -1
- package/dist/bundled-resources/extensions/tmux-agent-manager/templates/provider-prompt-smoke.json +1 -1
- package/dist/bundled-resources/extensions/tps/index.d.ts +3 -0
- package/dist/bundled-resources/extensions/tps/index.d.ts.map +1 -0
- package/dist/bundled-resources/extensions/tps/index.js +44 -0
- package/dist/bundled-resources/extensions/tps/index.js.map +1 -0
- package/dist/bundled-resources/extensions/tps/index.ts +48 -0
- package/dist/bundled-resources/skills/pi-harness-learning/SKILL.md +13 -7
- package/dist/bundled-resources/skills/worker-profile-writer/SKILL.md +11 -11
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +12 -3
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session.d.ts +11 -41
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +93 -160
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/autonomy/envelope-enforcement.d.ts +6 -1
- package/dist/core/autonomy/envelope-enforcement.d.ts.map +1 -1
- package/dist/core/autonomy/envelope-enforcement.js +26 -25
- package/dist/core/autonomy/envelope-enforcement.js.map +1 -1
- package/dist/core/autonomy/lane-private-paths.d.ts.map +1 -1
- package/dist/core/autonomy/lane-private-paths.js +2 -1
- package/dist/core/autonomy/lane-private-paths.js.map +1 -1
- package/dist/core/autonomy/lane-tool-surface.d.ts +8 -8
- package/dist/core/autonomy/lane-tool-surface.d.ts.map +1 -1
- package/dist/core/autonomy/lane-tool-surface.js +45 -30
- package/dist/core/autonomy/lane-tool-surface.js.map +1 -1
- package/dist/core/autonomy/worker-session-private-scope.d.ts +12 -0
- package/dist/core/autonomy/worker-session-private-scope.d.ts.map +1 -0
- package/dist/core/autonomy/worker-session-private-scope.js +42 -0
- package/dist/core/autonomy/worker-session-private-scope.js.map +1 -0
- package/dist/core/autonomy/worker-tool-adapter-registry.d.ts +65 -0
- package/dist/core/autonomy/worker-tool-adapter-registry.d.ts.map +1 -0
- package/dist/core/autonomy/worker-tool-adapter-registry.js +145 -0
- package/dist/core/autonomy/worker-tool-adapter-registry.js.map +1 -0
- package/dist/core/background-lane-controller.d.ts +1 -1
- package/dist/core/background-lane-controller.d.ts.map +1 -1
- package/dist/core/background-lane-controller.js +1 -1
- package/dist/core/background-lane-controller.js.map +1 -1
- package/dist/core/background-tool-task-controller.d.ts +8 -2
- package/dist/core/background-tool-task-controller.d.ts.map +1 -1
- package/dist/core/background-tool-task-controller.js +10 -2
- package/dist/core/background-tool-task-controller.js.map +1 -1
- package/dist/core/compaction-controller.d.ts +3 -0
- package/dist/core/compaction-controller.d.ts.map +1 -1
- package/dist/core/compaction-controller.js +12 -1
- package/dist/core/compaction-controller.js.map +1 -1
- package/dist/core/cost-guard-controller.d.ts +37 -0
- package/dist/core/cost-guard-controller.d.ts.map +1 -0
- package/dist/core/cost-guard-controller.js +71 -0
- package/dist/core/cost-guard-controller.js.map +1 -0
- package/dist/core/cost-guard.d.ts +9 -4
- package/dist/core/cost-guard.d.ts.map +1 -1
- package/dist/core/cost-guard.js +7 -3
- package/dist/core/cost-guard.js.map +1 -1
- package/dist/core/delegation/worker-attempt-executor.d.ts +1 -1
- package/dist/core/delegation/worker-attempt-executor.d.ts.map +1 -1
- package/dist/core/delegation/worker-attempt-executor.js +0 -1
- package/dist/core/delegation/worker-attempt-executor.js.map +1 -1
- package/dist/core/delegation/worker-authority-resolver.d.ts +16 -3
- package/dist/core/delegation/worker-authority-resolver.d.ts.map +1 -1
- package/dist/core/delegation/worker-authority-resolver.js +114 -55
- package/dist/core/delegation/worker-authority-resolver.js.map +1 -1
- package/dist/core/delegation/worker-claim.d.ts +1 -2
- package/dist/core/delegation/worker-claim.d.ts.map +1 -1
- package/dist/core/delegation/worker-claim.js.map +1 -1
- package/dist/core/delegation/worker-delegation-controller.d.ts +19 -6
- package/dist/core/delegation/worker-delegation-controller.d.ts.map +1 -1
- package/dist/core/delegation/worker-delegation-controller.js +125 -40
- package/dist/core/delegation/worker-delegation-controller.js.map +1 -1
- package/dist/core/delegation/worker-delegation-request.d.ts +3 -3
- package/dist/core/delegation/worker-delegation-request.d.ts.map +1 -1
- package/dist/core/delegation/worker-delegation-request.js +13 -19
- package/dist/core/delegation/worker-delegation-request.js.map +1 -1
- package/dist/core/delegation/worker-execution-policy.d.ts +3 -2
- package/dist/core/delegation/worker-execution-policy.d.ts.map +1 -1
- package/dist/core/delegation/worker-execution-policy.js +54 -39
- package/dist/core/delegation/worker-execution-policy.js.map +1 -1
- package/dist/core/delegation/worker-fleet-limits.d.ts +3 -3
- package/dist/core/delegation/worker-fleet-limits.d.ts.map +1 -1
- package/dist/core/delegation/worker-fleet-limits.js +7 -7
- package/dist/core/delegation/worker-fleet-limits.js.map +1 -1
- package/dist/core/delegation/worker-machine-scope.d.ts +12 -0
- package/dist/core/delegation/worker-machine-scope.d.ts.map +1 -0
- package/dist/core/delegation/worker-machine-scope.js +38 -0
- package/dist/core/delegation/worker-machine-scope.js.map +1 -0
- package/dist/core/delegation/worker-recovery-coordinator.d.ts.map +1 -1
- package/dist/core/delegation/worker-recovery-coordinator.js +6 -1
- package/dist/core/delegation/worker-recovery-coordinator.js.map +1 -1
- package/dist/core/delegation/worker-runner.d.ts +5 -7
- package/dist/core/delegation/worker-runner.d.ts.map +1 -1
- package/dist/core/delegation/worker-runner.js +1 -4
- package/dist/core/delegation/worker-runner.js.map +1 -1
- package/dist/core/delegation/worker-write-reservation-coordinator.d.ts +3 -2
- package/dist/core/delegation/worker-write-reservation-coordinator.d.ts.map +1 -1
- package/dist/core/delegation/worker-write-reservation-coordinator.js +50 -25
- package/dist/core/delegation/worker-write-reservation-coordinator.js.map +1 -1
- package/dist/core/durable-custom-message-turn-controller.d.ts +6 -0
- package/dist/core/durable-custom-message-turn-controller.d.ts.map +1 -1
- package/dist/core/durable-custom-message-turn-controller.js +38 -15
- package/dist/core/durable-custom-message-turn-controller.js.map +1 -1
- package/dist/core/extension-binding-controller.d.ts +5 -1
- package/dist/core/extension-binding-controller.d.ts.map +1 -1
- package/dist/core/extension-binding-controller.js +15 -0
- package/dist/core/extension-binding-controller.js.map +1 -1
- package/dist/core/extension-import-authority.d.ts +3 -1
- package/dist/core/extension-import-authority.d.ts.map +1 -1
- package/dist/core/extension-import-authority.js +15 -0
- package/dist/core/extension-import-authority.js.map +1 -1
- package/dist/core/extensions/factory-runtime.d.ts.map +1 -1
- package/dist/core/extensions/factory-runtime.js +5 -0
- package/dist/core/extensions/factory-runtime.js.map +1 -1
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +1 -0
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +8 -4
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/foreground-terminal-handoff-controller.d.ts +14 -0
- package/dist/core/foreground-terminal-handoff-controller.d.ts.map +1 -1
- package/dist/core/foreground-terminal-handoff-controller.js +188 -72
- package/dist/core/foreground-terminal-handoff-controller.js.map +1 -1
- package/dist/core/goals/goal-session-controller.d.ts +2 -0
- package/dist/core/goals/goal-session-controller.d.ts.map +1 -1
- package/dist/core/goals/goal-session-controller.js +8 -0
- package/dist/core/goals/goal-session-controller.js.map +1 -1
- package/dist/core/goals/goal-tool-core.d.ts +5 -4
- package/dist/core/goals/goal-tool-core.d.ts.map +1 -1
- package/dist/core/goals/goal-tool-core.js +23 -19
- package/dist/core/goals/goal-tool-core.js.map +1 -1
- package/dist/core/keybindings.d.ts +2 -2
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +2 -2
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/learning/auto-learn-settings.d.ts +84 -0
- package/dist/core/learning/auto-learn-settings.d.ts.map +1 -0
- package/dist/core/learning/auto-learn-settings.js +66 -0
- package/dist/core/learning/auto-learn-settings.js.map +1 -0
- package/dist/core/learning/reflection-engine.d.ts +4 -0
- package/dist/core/learning/reflection-engine.d.ts.map +1 -1
- package/dist/core/learning/reflection-engine.js +48 -10
- package/dist/core/learning/reflection-engine.js.map +1 -1
- package/dist/core/local-prefix-warm-controller.d.ts +24 -0
- package/dist/core/local-prefix-warm-controller.d.ts.map +1 -0
- package/dist/core/local-prefix-warm-controller.js +79 -0
- package/dist/core/local-prefix-warm-controller.js.map +1 -0
- package/dist/core/memory/providers/file-store.d.ts +2 -0
- package/dist/core/memory/providers/file-store.d.ts.map +1 -1
- package/dist/core/memory/providers/file-store.js +71 -15
- package/dist/core/memory/providers/file-store.js.map +1 -1
- package/dist/core/memory/worker-memory-tools.d.ts +5 -0
- package/dist/core/memory/worker-memory-tools.d.ts.map +1 -0
- package/dist/core/memory/worker-memory-tools.js +5 -0
- package/dist/core/memory/worker-memory-tools.js.map +1 -0
- package/dist/core/model-capability.d.ts +7 -0
- package/dist/core/model-capability.d.ts.map +1 -1
- package/dist/core/model-capability.js +12 -0
- package/dist/core/model-capability.js.map +1 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +2 -10
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-router-controller.d.ts +3 -2
- package/dist/core/model-router-controller.d.ts.map +1 -1
- package/dist/core/model-router-controller.js +3 -2
- package/dist/core/model-router-controller.js.map +1 -1
- package/dist/core/orchestration/contracts.d.ts +16 -12
- package/dist/core/orchestration/contracts.d.ts.map +1 -1
- package/dist/core/orchestration/contracts.js +2 -2
- package/dist/core/orchestration/contracts.js.map +1 -1
- package/dist/core/orchestration/lane-tool-manifests.d.ts +2 -2
- package/dist/core/orchestration/lane-tool-manifests.d.ts.map +1 -1
- package/dist/core/orchestration/lane-tool-manifests.js +6 -1
- package/dist/core/orchestration/lane-tool-manifests.js.map +1 -1
- package/dist/core/orchestration/profile-registry.d.ts.map +1 -1
- package/dist/core/orchestration/profile-registry.js +14 -0
- package/dist/core/orchestration/profile-registry.js.map +1 -1
- package/dist/core/orchestration/task-profile-writer.d.ts +7 -4
- package/dist/core/orchestration/task-profile-writer.d.ts.map +1 -1
- package/dist/core/orchestration/task-profile-writer.js +71 -59
- package/dist/core/orchestration/task-profile-writer.js.map +1 -1
- package/dist/core/orchestration/thinking-level-schema.d.ts +7 -0
- package/dist/core/orchestration/thinking-level-schema.d.ts.map +1 -0
- package/dist/core/orchestration/thinking-level-schema.js +19 -0
- package/dist/core/orchestration/thinking-level-schema.js.map +1 -0
- package/dist/core/orchestration/worker-execution-contract.d.ts.map +1 -1
- package/dist/core/orchestration/worker-execution-contract.js +12 -5
- package/dist/core/orchestration/worker-execution-contract.js.map +1 -1
- package/dist/core/profile-filter-controller.d.ts.map +1 -1
- package/dist/core/profile-filter-controller.js +5 -2
- package/dist/core/profile-filter-controller.js.map +1 -1
- package/dist/core/provider-prompt-contracts.d.ts +6 -5
- package/dist/core/provider-prompt-contracts.d.ts.map +1 -1
- package/dist/core/provider-prompt-contracts.js +9 -11
- package/dist/core/provider-prompt-contracts.js.map +1 -1
- package/dist/core/provider-request-context-controller.d.ts +2 -0
- package/dist/core/provider-request-context-controller.d.ts.map +1 -1
- package/dist/core/provider-request-context-controller.js +10 -3
- package/dist/core/provider-request-context-controller.js.map +1 -1
- package/dist/core/reflection-controller.d.ts +56 -27
- package/dist/core/reflection-controller.d.ts.map +1 -1
- package/dist/core/reflection-controller.js +206 -117
- package/dist/core/reflection-controller.js.map +1 -1
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +6 -2
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/risk-classifier.d.ts.map +1 -1
- package/dist/core/risk-classifier.js +22 -2
- package/dist/core/risk-classifier.js.map +1 -1
- package/dist/core/runtime-builder.d.ts +1 -0
- package/dist/core/runtime-builder.d.ts.map +1 -1
- package/dist/core/runtime-builder.js +25 -14
- package/dist/core/runtime-builder.js.map +1 -1
- package/dist/core/secrets/credential-exposure-guard.d.ts.map +1 -1
- package/dist/core/secrets/credential-exposure-guard.js +55 -10
- package/dist/core/secrets/credential-exposure-guard.js.map +1 -1
- package/dist/core/session-role.d.ts +6 -8
- package/dist/core/session-role.d.ts.map +1 -1
- package/dist/core/session-role.js +8 -18
- package/dist/core/session-role.js.map +1 -1
- package/dist/core/settings-manager.d.ts +20 -16
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +75 -50
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/skill-vault.d.ts +15 -0
- package/dist/core/skill-vault.d.ts.map +1 -1
- package/dist/core/skill-vault.js +79 -45
- package/dist/core/skill-vault.js.map +1 -1
- package/dist/core/skills.d.ts +3 -0
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +6 -6
- package/dist/core/skills.js.map +1 -1
- package/dist/core/system-prompt-builder.d.ts +3 -0
- package/dist/core/system-prompt-builder.d.ts.map +1 -1
- package/dist/core/system-prompt-builder.js +73 -13
- package/dist/core/system-prompt-builder.js.map +1 -1
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +6 -2
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/tool-capability-policy.d.ts +3 -0
- package/dist/core/tool-capability-policy.d.ts.map +1 -1
- package/dist/core/tool-capability-policy.js +13 -2
- package/dist/core/tool-capability-policy.js.map +1 -1
- package/dist/core/toolkit/script-runner.d.ts +2 -1
- package/dist/core/toolkit/script-runner.d.ts.map +1 -1
- package/dist/core/toolkit/script-runner.js +10 -2
- package/dist/core/toolkit/script-runner.js.map +1 -1
- package/dist/core/tools/delegate-status.d.ts +1 -1
- package/dist/core/tools/delegate-status.d.ts.map +1 -1
- package/dist/core/tools/delegate-status.js +1 -1
- package/dist/core/tools/delegate-status.js.map +1 -1
- package/dist/core/tools/delegate.d.ts +4 -15
- package/dist/core/tools/delegate.d.ts.map +1 -1
- package/dist/core/tools/delegate.js +111 -73
- package/dist/core/tools/delegate.js.map +1 -1
- package/dist/core/tools/goal.d.ts +3 -4
- package/dist/core/tools/goal.d.ts.map +1 -1
- package/dist/core/tools/goal.js +30 -23
- package/dist/core/tools/goal.js.map +1 -1
- package/dist/core/tools/orchestration-panel.d.ts +7 -0
- package/dist/core/tools/orchestration-panel.d.ts.map +1 -1
- package/dist/core/tools/orchestration-panel.js +58 -9
- package/dist/core/tools/orchestration-panel.js.map +1 -1
- package/dist/core/tools/profile-writer.d.ts +2 -8
- package/dist/core/tools/profile-writer.d.ts.map +1 -1
- package/dist/core/tools/profile-writer.js +6 -18
- package/dist/core/tools/profile-writer.js.map +1 -1
- package/dist/core/tools/run-toolkit-script.d.ts +1 -1
- package/dist/core/tools/run-toolkit-script.d.ts.map +1 -1
- package/dist/core/tools/run-toolkit-script.js +2 -2
- package/dist/core/tools/run-toolkit-script.js.map +1 -1
- package/dist/core/tools/skill-audit.d.ts +28 -1
- package/dist/core/tools/skill-audit.d.ts.map +1 -1
- package/dist/core/tools/skill-audit.js +56 -12
- package/dist/core/tools/skill-audit.js.map +1 -1
- package/dist/core/tools/skill.d.ts +12 -1
- package/dist/core/tools/skill.d.ts.map +1 -1
- package/dist/core/tools/skill.js +52 -0
- package/dist/core/tools/skill.js.map +1 -1
- package/dist/core/tools/skillify.d.ts.map +1 -1
- package/dist/core/tools/skillify.js +16 -7
- package/dist/core/tools/skillify.js.map +1 -1
- package/dist/core/tools/task-steps.d.ts.map +1 -1
- package/dist/core/tools/task-steps.js +2 -1
- package/dist/core/tools/task-steps.js.map +1 -1
- package/dist/core/tools/tmux-dispatch.d.ts +4 -16
- package/dist/core/tools/tmux-dispatch.d.ts.map +1 -1
- package/dist/core/tools/tmux-dispatch.js +5 -20
- package/dist/core/tools/tmux-dispatch.js.map +1 -1
- package/dist/core/worktree-sync/codes.d.ts +1 -2
- package/dist/core/worktree-sync/codes.d.ts.map +1 -1
- package/dist/core/worktree-sync/codes.js +1 -2
- package/dist/core/worktree-sync/codes.js.map +1 -1
- package/dist/core/worktree-sync/lane-gate.d.ts +4 -8
- package/dist/core/worktree-sync/lane-gate.d.ts.map +1 -1
- package/dist/core/worktree-sync/lane-gate.js +5 -51
- package/dist/core/worktree-sync/lane-gate.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/modes/interactive/auto-learn-controller.d.ts +6 -7
- package/dist/modes/interactive/auto-learn-controller.d.ts.map +1 -1
- package/dist/modes/interactive/auto-learn-controller.js +30 -207
- package/dist/modes/interactive/auto-learn-controller.js.map +1 -1
- package/dist/modes/interactive/autonomy-commands.js +2 -2
- package/dist/modes/interactive/autonomy-commands.js.map +1 -1
- package/dist/modes/interactive/components/agents-overlay.d.ts +16 -4
- package/dist/modes/interactive/components/agents-overlay.d.ts.map +1 -1
- package/dist/modes/interactive/components/agents-overlay.js +108 -29
- package/dist/modes/interactive/components/agents-overlay.js.map +1 -1
- package/dist/modes/interactive/components/custom-message.js +17 -0
- package/dist/modes/interactive/components/custom-message.js.map +1 -1
- package/dist/modes/interactive/components/fitness-role-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/fitness-role-selector.js +2 -2
- package/dist/modes/interactive/components/fitness-role-selector.js.map +1 -1
- package/dist/modes/interactive/components/footer.js +1 -1
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +4 -0
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +150 -73
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +5 -4
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/report-commands.d.ts.map +1 -1
- package/dist/modes/interactive/report-commands.js +8 -4
- package/dist/modes/interactive/report-commands.js.map +1 -1
- package/dist/modes/interactive/settings-selector-flow.d.ts.map +1 -1
- package/dist/modes/interactive/settings-selector-flow.js +10 -0
- package/dist/modes/interactive/settings-selector-flow.js.map +1 -1
- package/docs/extensions.md +10 -0
- package/docs/harness-architecture.md +28 -32
- package/docs/index.md +2 -1
- package/docs/keybindings.md +2 -0
- package/docs/process-matrix.md +8 -6
- package/docs/resources.md +1 -1
- package/docs/settings.md +61 -51
- package/docs/task-steps.md +2 -0
- package/docs/tmux-agent-manager.md +48 -41
- package/docs/usage.md +1 -1
- package/docs/work-lifecycle.md +137 -0
- package/docs/worker-profiles.md +8 -6
- package/docs/worktree-sync.md +26 -20
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/npm-shrinkwrap.json +12 -12
- package/package.json +4 -4
- package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.d.ts +0 -133
- package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.d.ts.map +0 -1
- package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.js +0 -199
- package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.js.map +0 -1
- package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.ts +0 -312
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"durable-custom-message-turn-controller.js","sourceRoot":"","sources":["../../src/core/durable-custom-message-turn-controller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"durable-custom-message-turn-controller.js","sourceRoot":"","sources":["../../src/core/durable-custom-message-turn-controller.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CustomMessage } from \"@caupulican/pi-agent-core\";\nimport type { ForegroundRecoveryController, ForegroundSubmissionLease } from \"./foreground-recovery-controller.ts\";\nimport type { GoalExecutionLease, GoalSessionController } from \"./goals/goal-session-controller.ts\";\n\ninterface DurableCustomMessageTurnControllerDeps {\n\tforeground: ForegroundRecoveryController;\n\tgoals: Pick<GoalSessionController, \"beginExecution\" | \"endExecution\">;\n\tenqueueSteeringMessage(message: CustomMessage<unknown>): void;\n}\n\n/**\n * Starts an internal custom-message turn and separates durable input acceptance from full model-run\n * completion. Notification outboxes may acknowledge after `start` resolves, while the foreground\n * owner retains its lease until the returned completion settles.\n */\nexport class DurableCustomMessageTurnController {\n\tprivate readonly deps: DurableCustomMessageTurnControllerDeps;\n\tprivate readonly pending = new Map<CustomMessage<unknown>, { resolve(): void; reject(error: unknown): void }>();\n\n\tconstructor(deps: DurableCustomMessageTurnControllerDeps) {\n\t\tthis.deps = deps;\n\t}\n\n\t/** Accept only the exact custom-message object after SessionManager append succeeds. */\n\tnotePersisted(message: CustomMessage<unknown>): boolean {\n\t\tconst acceptance = this.pending.get(message);\n\t\tif (!acceptance) return false;\n\t\tthis.pending.delete(message);\n\t\tacceptance.resolve();\n\t\treturn true;\n\t}\n\n\t/** Reject queued delivery receipts that can no longer reach persistence during session shutdown. */\n\tshutdown(): void {\n\t\tconst error = new Error(\"Session disposed before a custom message was persisted\");\n\t\tfor (const acceptance of this.pending.values()) acceptance.reject(error);\n\t\tthis.pending.clear();\n\t}\n\n\t/** Queue a custom message for the next provider boundary and resolve only after durable append. */\n\tasync enqueue<T>(message: Pick<CustomMessage<T>, \"customType\" | \"content\" | \"display\" | \"details\">): Promise<void> {\n\t\tconst { appMessage, acceptedPromise } = this.prepare(message);\n\t\ttry {\n\t\t\tthis.deps.enqueueSteeringMessage(appMessage);\n\t\t} catch (error) {\n\t\t\tthis.pending.delete(appMessage);\n\t\t\tthrow error;\n\t\t}\n\t\tawait acceptedPromise;\n\t}\n\n\tasync start<T>(\n\t\tmessage: Pick<CustomMessage<T>, \"customType\" | \"content\" | \"display\" | \"details\">,\n\t\tsubmissionLease: ForegroundSubmissionLease,\n\t\tgoalId?: string,\n\t): Promise<{ completion: Promise<void> }> {\n\t\tconst { appMessage, acceptedPromise, rejectAccepted } = this.prepare(message);\n\t\tlet goalExecutionLease: GoalExecutionLease | undefined;\n\t\ttry {\n\t\t\tgoalExecutionLease = this.deps.goals.beginExecution(goalId);\n\t\t} catch (error) {\n\t\t\tthis.pending.delete(appMessage);\n\t\t\tthrow error;\n\t\t}\n\t\tlet completion: Promise<void>;\n\t\ttry {\n\t\t\tcompletion = this.deps.foreground\n\t\t\t\t.runAgentPrompt(appMessage, submissionLease)\n\t\t\t\t.finally(() => this.deps.goals.endExecution(goalExecutionLease));\n\t\t} catch (error) {\n\t\t\t// runAgentPrompt is expected to report failure through its returned promise, but if it\n\t\t\t// throws SYNCHRONOUSLY instead, the .finally() above never attaches and the goal\n\t\t\t// execution lease acquired above leaks forever. Every exit path must release it.\n\t\t\tthis.deps.goals.endExecution(goalExecutionLease);\n\t\t\tthis.pending.delete(appMessage);\n\t\t\tthrow error;\n\t\t}\n\t\tvoid completion.then(\n\t\t\t() => {\n\t\t\t\tif (!this.pending.delete(appMessage)) return;\n\t\t\t\trejectAccepted(new Error(\"Custom-message turn ended before its input was persisted\"));\n\t\t\t},\n\t\t\t(error: unknown) => {\n\t\t\t\tif (!this.pending.delete(appMessage)) return;\n\t\t\t\trejectAccepted(error);\n\t\t\t},\n\t\t);\n\t\tawait acceptedPromise;\n\t\treturn { completion };\n\t}\n\n\tprivate prepare<T>(message: Pick<CustomMessage<T>, \"customType\" | \"content\" | \"display\" | \"details\">): {\n\t\tappMessage: CustomMessage<T>;\n\t\tacceptedPromise: Promise<void>;\n\t\trejectAccepted(error: unknown): void;\n\t} {\n\t\tconst appMessage = {\n\t\t\trole: \"custom\" as const,\n\t\t\tcustomType: message.customType,\n\t\t\tcontent: message.content,\n\t\t\tdisplay: message.display,\n\t\t\tdetails: message.details,\n\t\t\ttimestamp: Date.now(),\n\t\t} satisfies CustomMessage<T>;\n\t\tlet resolveAccepted!: () => void;\n\t\tlet rejectAccepted!: (error: unknown) => void;\n\t\tconst acceptedPromise = new Promise<void>((resolve, reject) => {\n\t\t\tresolveAccepted = resolve;\n\t\t\trejectAccepted = reject;\n\t\t});\n\t\tthis.pending.set(appMessage, { resolve: resolveAccepted, reject: rejectAccepted });\n\t\treturn { appMessage, acceptedPromise, rejectAccepted };\n\t}\n}\n"]}
|
|
@@ -32,7 +32,7 @@ import type { MemoryProvider } from "./memory/memory-provider.ts";
|
|
|
32
32
|
import type { ModelRegistry } from "./model-registry.ts";
|
|
33
33
|
import type { PromptTemplate } from "./prompt-templates.ts";
|
|
34
34
|
import type { ResourceLoader } from "./resource-loader.ts";
|
|
35
|
-
import type { SettingsManager } from "./settings-manager.ts";
|
|
35
|
+
import type { ResourceProfileSettings, SettingsManager } from "./settings-manager.ts";
|
|
36
36
|
export interface ExtensionBindingControllerDeps {
|
|
37
37
|
getAgent(): Agent;
|
|
38
38
|
getExtensionRunner(): ExtensionRunner;
|
|
@@ -92,6 +92,10 @@ export interface ExtensionBindingControllerDeps {
|
|
|
92
92
|
getExtensionErrorListener(): ExtensionErrorListener | undefined;
|
|
93
93
|
setExtensionErrorListener(listener: ExtensionErrorListener | undefined): void;
|
|
94
94
|
}
|
|
95
|
+
/** Compile the current session's effective resource authority into a self-contained profile.
|
|
96
|
+
* Empty allows become explicit wildcards so activating this snapshot in a child preserves the
|
|
97
|
+
* parent's unrestricted kinds instead of triggering strict-profile deny-all semantics. */
|
|
98
|
+
export declare function compileEffectiveResourceProfileSnapshot(settingsManager: Pick<SettingsManager, "getResourceProfileFilter">): ResourceProfileSettings;
|
|
95
99
|
export declare class ExtensionBindingController {
|
|
96
100
|
private readonly deps;
|
|
97
101
|
private extensionAbortHandler?;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extension-binding-controller.d.ts","sourceRoot":"","sources":["../../src/core/extension-binding-controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACtF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,IAAI,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AACrG,OAAO,KAAK,EACX,cAAc,EACd,YAAY,EACZ,8BAA8B,EAC9B,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,QAAQ,EACR,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAA0B,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"extension-binding-controller.d.ts","sourceRoot":"","sources":["../../src/core/extension-binding-controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,20 @@
|
|
|
21
21
|
* / `extendResourcesFromExtensions`) through {@link RuntimeBuilderDeps}, one level further delegated.
|
|
22
22
|
*/
|
|
23
23
|
import { basename, dirname } from "node:path";
|
|
24
|
+
/** Compile the current session's effective resource authority into a self-contained profile.
|
|
25
|
+
* Empty allows become explicit wildcards so activating this snapshot in a child preserves the
|
|
26
|
+
* parent's unrestricted kinds instead of triggering strict-profile deny-all semantics. */
|
|
27
|
+
export function compileEffectiveResourceProfileSnapshot(settingsManager) {
|
|
28
|
+
const snapshot = {};
|
|
29
|
+
for (const kind of ["extensions", "skills", "prompts", "themes", "agents", "tools"]) {
|
|
30
|
+
const filter = settingsManager.getResourceProfileFilter(kind);
|
|
31
|
+
snapshot[kind] = {
|
|
32
|
+
allow: filter.allow.length > 0 ? [...filter.allow] : ["*"],
|
|
33
|
+
block: [...filter.block],
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
return snapshot;
|
|
37
|
+
}
|
|
24
38
|
export class ExtensionBindingController {
|
|
25
39
|
constructor(deps) {
|
|
26
40
|
this.deps = deps;
|
|
@@ -170,6 +184,7 @@ export class ExtensionBindingController {
|
|
|
170
184
|
getThinkingLevel: () => this.deps.getThinkingLevel(),
|
|
171
185
|
setThinkingLevel: (level) => this.deps.setThinkingLevel(level),
|
|
172
186
|
getExternalResourceRoots: () => this.deps.getSettingsManager().getEffectiveExternalResourceRoots(),
|
|
187
|
+
getEffectiveResourceProfile: () => compileEffectiveResourceProfileSnapshot(this.deps.getSettingsManager()),
|
|
173
188
|
registerMemoryProvider: (provider) => this.deps.registerMemoryProvider(provider),
|
|
174
189
|
registerContextMemoryProvider: (provider) => this.deps.registerContextMemoryProvider(provider),
|
|
175
190
|
reportSpawnedUsage: (usage, opts) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extension-binding-controller.js","sourceRoot":"","sources":["../../src/core/extension-binding-controller.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Extension runtime binding: the boundary between {@link AgentSession} and the {@link\n * ExtensionRunner} it hosts. Owns the public `bindExtensions()` entry point (stores the\n * host-supplied UI/mode/callback bindings, applies them to the runner, fires the session-start\n * event, discovers extension-contributed resources, and initializes memory), the resource\n * discovery pass that turns extension-reported skill/prompt/theme paths into labeled {@link\n * ResourceExtensionPaths}, and `bindExtensionCore` — the ~30-method translation of the session's\n * own public surface (send message, set model, compact, abort, reload, …) into the `ExtensionActions`\n * / `ExtensionContextActions` shape `ExtensionRunner.bindCore` expects.\n *\n * Extracted verbatim from agent-session.ts (god-file decomposition). All logic here is pure code\n * motion — no behavior changes. State that other collaborators (RuntimeBuilder, LocalRuntimeController,\n * HumanInputController) also read (`_extensionUIContext`, `_extensionMode`, `_extensionCommandContextActions`,\n * `_extensionShutdownHandler`, `_extensionErrorListener`) stays host-owned and is reached through the\n * same get/set deps accessors those collaborators already use; `_extensionAbortHandler` and the\n * error-unsubscribe callback are touched only within this binding boundary, so they are owned here.\n *\n * Host-binding boundary note (see runtime-builder.ts): `bindExtensionCore` exposes session identity\n * to the extension runner, not tool-registry build logic, which is why it lives in its own dedicated\n * module rather than inside RuntimeBuilder; RuntimeBuilder still invokes it (and `applyExtensionBindings`\n * / `extendResourcesFromExtensions`) through {@link RuntimeBuilderDeps}, one level further delegated.\n */\n\nimport { basename, dirname } from \"node:path\";\nimport type { Agent, ThinkingLevel } from \"@caupulican/pi-agent-core\";\nimport type { CustomMessage } from \"@caupulican/pi-agent-core/messages\";\nimport type { SessionManager } from \"@caupulican/pi-agent-core/node\";\nimport type { Api, ImageContent, Model, TextContent, Usage } from \"@caupulican/pi-ai\";\nimport type { ExtensionBindings } from \"./agent-session-contracts.ts\";\nimport type { MemoryProvider as ContextMemoryProvider } from \"./context/memory-provider-contract.ts\";\nimport type {\n\tCompactOptions,\n\tContextUsage,\n\tExtensionCommandContextActions,\n\tExtensionContext,\n\tExtensionErrorListener,\n\tExtensionRunner,\n\tExtensionUIContext,\n\tSessionStartEvent,\n\tShutdownHandler,\n\tToolInfo,\n} from \"./extensions/index.ts\";\nimport type { ManagedLaneEvent } from \"./extensions/types.ts\";\nimport type { MemoryProvider } from \"./memory/memory-provider.ts\";\nimport type { ModelRegistry } from \"./model-registry.ts\";\nimport type { PromptTemplate } from \"./prompt-templates.ts\";\nimport type { ResourceExtensionPaths, ResourceLoader } from \"./resource-loader.ts\";\nimport type { SettingsManager } from \"./settings-manager.ts\";\nimport type { SlashCommandInfo } from \"./slash-commands.ts\";\n\nexport interface ExtensionBindingControllerDeps {\n\tgetAgent(): Agent;\n\tgetExtensionRunner(): ExtensionRunner;\n\tgetSessionStartEvent(): SessionStartEvent;\n\tgetCwd(): string;\n\tgetResourceLoader(): ResourceLoader;\n\tgetSessionManager(): SessionManager;\n\tgetSettingsManager(): SettingsManager;\n\tgetModelRegistry(): ModelRegistry;\n\tgetModel(): Model<Api> | undefined;\n\tgetActiveToolNames(): string[];\n\tgetAllTools(): ToolInfo[];\n\tsetActiveToolsByName(toolNames: string[]): void;\n\trefreshToolRegistry(): void;\n\trebuildSystemPrompt(toolNames: string[]): string;\n\tsetBaseSystemPrompt(prompt: string): void;\n\tgetPromptTemplates(): ReadonlyArray<PromptTemplate>;\n\tgetThinkingLevel(): ThinkingLevel;\n\tsetThinkingLevel(level: ThinkingLevel): void;\n\tsetModel(model: Model<Api>): Promise<void>;\n\tsendCustomMessage(\n\t\tmessage: Pick<CustomMessage, \"customType\" | \"content\" | \"display\" | \"details\">,\n\t\toptions?: { triggerTurn?: boolean; deliverAs?: \"steer\" | \"followUp\" | \"nextTurn\" },\n\t): Promise<void>;\n\tsendUserMessage(\n\t\tcontent: string | (TextContent | ImageContent)[],\n\t\toptions?: { deliverAs?: \"steer\" | \"followUp\"; processSlashCommands?: boolean },\n\t): Promise<void>;\n\tsetSessionName(name: string): void;\n\tregisterMemoryProvider(provider: MemoryProvider): void;\n\tregisterContextMemoryProvider(provider: ContextMemoryProvider): void;\n\taddSpawnedUsage(\n\t\tusage: Usage,\n\t\topts?: { label?: string; sourceSessionId?: string; reportId?: string },\n\t): string | undefined;\n\trecordManagedLane(event: ManagedLaneEvent): void;\n\tisForegroundBusy(): boolean;\n\tgetPendingMessageCount(): number;\n\tisStreaming(): boolean;\n\tisCompacting(): boolean;\n\tgetContextUsage(): ContextUsage | undefined;\n\tcompactForExtension(options?: CompactOptions): void;\n\treload(): Promise<void>;\n\tabort(): Promise<void>;\n\tgetSystemPrompt(): string;\n\tgetExtensionCommandContextActions(): ExtensionCommandContextActions | undefined;\n\trefreshCurrentModelFromRegistry(): void;\n\tinitializeMemory(): Promise<void>;\n\tgetExtensionUIContext(): ExtensionUIContext | undefined;\n\tsetExtensionUIContext(uiContext: ExtensionUIContext | undefined): void;\n\tgetExtensionMode(): ExtensionContext[\"mode\"];\n\tsetExtensionMode(mode: ExtensionContext[\"mode\"]): void;\n\tsetExtensionCommandContextActions(actions: ExtensionCommandContextActions | undefined): void;\n\tgetExtensionShutdownHandler(): ShutdownHandler | undefined;\n\tsetExtensionShutdownHandler(handler: ShutdownHandler | undefined): void;\n\tgetExtensionErrorListener(): ExtensionErrorListener | undefined;\n\tsetExtensionErrorListener(listener: ExtensionErrorListener | undefined): void;\n}\n\nexport class ExtensionBindingController {\n\tprivate readonly deps: ExtensionBindingControllerDeps;\n\tprivate extensionAbortHandler?: () => void;\n\tprivate extensionErrorUnsubscriber?: () => void;\n\n\tconstructor(deps: ExtensionBindingControllerDeps) {\n\t\tthis.deps = deps;\n\t}\n\n\tasync bindExtensions(bindings: ExtensionBindings): Promise<void> {\n\t\tif (bindings.uiContext !== undefined) {\n\t\t\tthis.deps.setExtensionUIContext(bindings.uiContext);\n\t\t}\n\t\tif (bindings.mode !== undefined) {\n\t\t\tthis.deps.setExtensionMode(bindings.mode);\n\t\t}\n\t\tif (bindings.commandContextActions !== undefined) {\n\t\t\tthis.deps.setExtensionCommandContextActions(bindings.commandContextActions);\n\t\t}\n\t\tif (bindings.abortHandler !== undefined) {\n\t\t\tthis.extensionAbortHandler = bindings.abortHandler;\n\t\t}\n\t\tif (bindings.shutdownHandler !== undefined) {\n\t\t\tthis.deps.setExtensionShutdownHandler(bindings.shutdownHandler);\n\t\t}\n\t\tif (bindings.onError !== undefined) {\n\t\t\tthis.deps.setExtensionErrorListener(bindings.onError);\n\t\t}\n\n\t\tthis.applyExtensionBindings(this.deps.getExtensionRunner());\n\t\tawait this.deps.getExtensionRunner().emit(this.deps.getSessionStartEvent());\n\t\tawait this.extendResourcesFromExtensions(\n\t\t\tthis.deps.getSessionStartEvent().reason === \"reload\" ? \"reload\" : \"startup\",\n\t\t);\n\t\t// Initialize the memory subsystem after extensions have had a chance to register providers.\n\t\tawait this.deps.initializeMemory();\n\t}\n\n\tasync extendResourcesFromExtensions(reason: \"startup\" | \"reload\"): Promise<void> {\n\t\tconst runner = this.deps.getExtensionRunner();\n\t\tif (!runner.hasHandlers(\"resources_discover\")) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { skillPaths, promptPaths, themePaths } = await runner.emitResourcesDiscover(this.deps.getCwd(), reason);\n\n\t\tif (skillPaths.length === 0 && promptPaths.length === 0 && themePaths.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst extensionPaths: ResourceExtensionPaths = {\n\t\t\tskillPaths: this.buildExtensionResourcePaths(skillPaths),\n\t\t\tpromptPaths: this.buildExtensionResourcePaths(promptPaths),\n\t\t\tthemePaths: this.buildExtensionResourcePaths(themePaths),\n\t\t};\n\n\t\tthis.deps.getResourceLoader().extendResources(extensionPaths);\n\t\tconst rebuiltSystemPrompt = this.deps.rebuildSystemPrompt(this.deps.getActiveToolNames());\n\t\tthis.deps.setBaseSystemPrompt(rebuiltSystemPrompt);\n\t\tthis.deps.getAgent().state.systemPrompt = rebuiltSystemPrompt;\n\t}\n\n\tprivate buildExtensionResourcePaths(entries: Array<{ path: string; extensionPath: string }>): Array<{\n\t\tpath: string;\n\t\tmetadata: { source: string; scope: \"temporary\"; origin: \"top-level\"; baseDir?: string };\n\t}> {\n\t\treturn entries.map((entry) => {\n\t\t\tconst source = this.getExtensionSourceLabel(entry.extensionPath);\n\t\t\tconst baseDir = entry.extensionPath.startsWith(\"<\") ? undefined : dirname(entry.extensionPath);\n\t\t\treturn {\n\t\t\t\tpath: entry.path,\n\t\t\t\tmetadata: {\n\t\t\t\t\tsource,\n\t\t\t\t\tscope: \"temporary\",\n\t\t\t\t\torigin: \"top-level\",\n\t\t\t\t\tbaseDir,\n\t\t\t\t},\n\t\t\t};\n\t\t});\n\t}\n\n\tprivate getExtensionSourceLabel(extensionPath: string): string {\n\t\tif (extensionPath.startsWith(\"<\")) {\n\t\t\treturn `extension:${extensionPath.replace(/[<>]/g, \"\")}`;\n\t\t}\n\t\tconst base = basename(extensionPath);\n\t\tconst name = base.replace(/\\.(ts|js)$/, \"\");\n\t\treturn `extension:${name}`;\n\t}\n\n\tapplyExtensionBindings(runner: ExtensionRunner): void {\n\t\trunner.setUIContext(this.deps.getExtensionUIContext());\n\t\trunner.setMode(this.deps.getExtensionMode());\n\t\trunner.bindCommandContext(this.deps.getExtensionCommandContextActions());\n\n\t\tthis.extensionErrorUnsubscriber?.();\n\t\tconst errorListener = this.deps.getExtensionErrorListener();\n\t\tthis.extensionErrorUnsubscriber = errorListener ? runner.onError(errorListener) : undefined;\n\t}\n\n\tbindExtensionCore(runner: ExtensionRunner): void {\n\t\tconst getCommands = (): SlashCommandInfo[] => {\n\t\t\tconst extensionCommands: SlashCommandInfo[] = runner.getRegisteredCommands().map((command) => ({\n\t\t\t\tname: command.invocationName,\n\t\t\t\tdescription: command.description,\n\t\t\t\tsource: \"extension\",\n\t\t\t\tsourceInfo: command.sourceInfo,\n\t\t\t}));\n\n\t\t\tconst templates: SlashCommandInfo[] = this.deps.getPromptTemplates().map((template) => ({\n\t\t\t\tname: template.name,\n\t\t\t\tdescription: template.description,\n\t\t\t\tsource: \"prompt\",\n\t\t\t\tsourceInfo: template.sourceInfo,\n\t\t\t}));\n\n\t\t\tconst skills: SlashCommandInfo[] = this.deps\n\t\t\t\t.getResourceLoader()\n\t\t\t\t.getActiveSkills()\n\t\t\t\t.map((skill) => ({\n\t\t\t\t\tname: `skill:${skill.name}`,\n\t\t\t\t\tdescription: skill.description,\n\t\t\t\t\tsource: \"skill\",\n\t\t\t\t\tsourceInfo: skill.sourceInfo,\n\t\t\t\t}));\n\n\t\t\treturn [...extensionCommands, ...templates, ...skills];\n\t\t};\n\n\t\trunner.bindCore(\n\t\t\t{\n\t\t\t\tsendMessage: (message, options) => {\n\t\t\t\t\tthis.deps.sendCustomMessage(message, options).catch((err) => {\n\t\t\t\t\t\trunner.emitError({\n\t\t\t\t\t\t\textensionPath: \"<runtime>\",\n\t\t\t\t\t\t\tevent: \"send_message\",\n\t\t\t\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tsendUserMessage: (content, options) => {\n\t\t\t\t\tthis.deps.sendUserMessage(content, options).catch((err) => {\n\t\t\t\t\t\trunner.emitError({\n\t\t\t\t\t\t\textensionPath: \"<runtime>\",\n\t\t\t\t\t\t\tevent: \"send_user_message\",\n\t\t\t\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tappendEntry: (customType, data) => {\n\t\t\t\t\tthis.deps.getSessionManager().appendCustomEntry(customType, data);\n\t\t\t\t},\n\t\t\t\tsetSessionName: (name) => {\n\t\t\t\t\tthis.deps.setSessionName(name);\n\t\t\t\t},\n\t\t\t\tgetSessionName: () => {\n\t\t\t\t\treturn this.deps.getSessionManager().getSessionName();\n\t\t\t\t},\n\t\t\t\tsetLabel: (entryId, label) => {\n\t\t\t\t\tthis.deps.getSessionManager().appendLabelChange(entryId, label);\n\t\t\t\t},\n\t\t\t\tgetActiveTools: () => this.deps.getActiveToolNames(),\n\t\t\t\tgetAllTools: () => this.deps.getAllTools(),\n\t\t\t\tsetActiveTools: (toolNames) => this.deps.setActiveToolsByName(toolNames),\n\t\t\t\trefreshTools: () => this.deps.refreshToolRegistry(),\n\t\t\t\tgetCommands,\n\t\t\t\tsetModel: async (model) => {\n\t\t\t\t\tif (!this.deps.getModelRegistry().hasConfiguredAuth(model)) return false;\n\t\t\t\t\tawait this.deps.setModel(model);\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t\tgetThinkingLevel: () => this.deps.getThinkingLevel(),\n\t\t\t\tsetThinkingLevel: (level) => this.deps.setThinkingLevel(level),\n\t\t\t\tgetExternalResourceRoots: () => this.deps.getSettingsManager().getEffectiveExternalResourceRoots(),\n\t\t\t\tregisterMemoryProvider: (provider) => this.deps.registerMemoryProvider(provider),\n\t\t\t\tregisterContextMemoryProvider: (provider) => this.deps.registerContextMemoryProvider(provider),\n\t\t\t\treportSpawnedUsage: (usage, opts) => {\n\t\t\t\t\tthis.deps.addSpawnedUsage(usage, opts);\n\t\t\t\t},\n\t\t\t\treportManagedLane: (event) => {\n\t\t\t\t\tthis.deps.recordManagedLane(event);\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tgetModel: () => this.deps.getModel(),\n\t\t\t\tisIdle: () => !this.deps.isForegroundBusy(),\n\t\t\t\tgetSignal: () => this.deps.getAgent().signal,\n\t\t\t\tabort: () => {\n\t\t\t\t\tif (this.extensionAbortHandler) {\n\t\t\t\t\t\tthis.extensionAbortHandler();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tvoid this.deps.abort();\n\t\t\t\t},\n\t\t\t\thasPendingMessages: () => this.deps.getPendingMessageCount() > 0,\n\t\t\t\tshutdown: () => {\n\t\t\t\t\tthis.deps.getExtensionShutdownHandler()?.();\n\t\t\t\t},\n\t\t\t\tgetContextUsage: () => this.deps.getContextUsage(),\n\t\t\t\tcompact: (options) => this.deps.compactForExtension(options),\n\t\t\t\treload: () => {\n\t\t\t\t\tif (this.deps.isStreaming()) {\n\t\t\t\t\t\treturn Promise.reject(\n\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t\"ctx.reload() cannot run while the agent is streaming or a tool call is active. Wait for ctx.isIdle(), queue a follow-up /reload, or use an idle command/event handler so hot reload cannot destabilize the UI.\",\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (this.deps.isCompacting()) {\n\t\t\t\t\t\treturn Promise.reject(\n\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t\"ctx.reload() cannot run during context compaction or branch summarization. Let compaction finish before reloading so the session tree and UI remain stable.\",\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tconst actions = this.deps.getExtensionCommandContextActions();\n\t\t\t\t\tif (!actions) {\n\t\t\t\t\t\treturn this.deps.reload();\n\t\t\t\t\t}\n\t\t\t\t\treturn actions.reload();\n\t\t\t\t},\n\t\t\t\tgetSystemPrompt: () => this.deps.getSystemPrompt(),\n\t\t\t},\n\t\t\t{\n\t\t\t\tregisterProvider: (name, config) => {\n\t\t\t\t\tthis.deps.getModelRegistry().registerProvider(name, config);\n\t\t\t\t\tthis.deps.refreshCurrentModelFromRegistry();\n\t\t\t\t},\n\t\t\t\tunregisterProvider: (name) => {\n\t\t\t\t\tthis.deps.getModelRegistry().unregisterProvider(name);\n\t\t\t\t\tthis.deps.refreshCurrentModelFromRegistry();\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"extension-binding-controller.js","sourceRoot":"","sources":["../../src/core/extension-binding-controller.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Extension runtime binding: the boundary between {@link AgentSession} and the {@link\n * ExtensionRunner} it hosts. Owns the public `bindExtensions()` entry point (stores the\n * host-supplied UI/mode/callback bindings, applies them to the runner, fires the session-start\n * event, discovers extension-contributed resources, and initializes memory), the resource\n * discovery pass that turns extension-reported skill/prompt/theme paths into labeled {@link\n * ResourceExtensionPaths}, and `bindExtensionCore` — the ~30-method translation of the session's\n * own public surface (send message, set model, compact, abort, reload, …) into the `ExtensionActions`\n * / `ExtensionContextActions` shape `ExtensionRunner.bindCore` expects.\n *\n * Extracted verbatim from agent-session.ts (god-file decomposition). All logic here is pure code\n * motion — no behavior changes. State that other collaborators (RuntimeBuilder, LocalRuntimeController,\n * HumanInputController) also read (`_extensionUIContext`, `_extensionMode`, `_extensionCommandContextActions`,\n * `_extensionShutdownHandler`, `_extensionErrorListener`) stays host-owned and is reached through the\n * same get/set deps accessors those collaborators already use; `_extensionAbortHandler` and the\n * error-unsubscribe callback are touched only within this binding boundary, so they are owned here.\n *\n * Host-binding boundary note (see runtime-builder.ts): `bindExtensionCore` exposes session identity\n * to the extension runner, not tool-registry build logic, which is why it lives in its own dedicated\n * module rather than inside RuntimeBuilder; RuntimeBuilder still invokes it (and `applyExtensionBindings`\n * / `extendResourcesFromExtensions`) through {@link RuntimeBuilderDeps}, one level further delegated.\n */\n\nimport { basename, dirname } from \"node:path\";\nimport type { Agent, ThinkingLevel } from \"@caupulican/pi-agent-core\";\nimport type { CustomMessage } from \"@caupulican/pi-agent-core/messages\";\nimport type { SessionManager } from \"@caupulican/pi-agent-core/node\";\nimport type { Api, ImageContent, Model, TextContent, Usage } from \"@caupulican/pi-ai\";\nimport type { ExtensionBindings } from \"./agent-session-contracts.ts\";\nimport type { MemoryProvider as ContextMemoryProvider } from \"./context/memory-provider-contract.ts\";\nimport type {\n\tCompactOptions,\n\tContextUsage,\n\tExtensionCommandContextActions,\n\tExtensionContext,\n\tExtensionErrorListener,\n\tExtensionRunner,\n\tExtensionUIContext,\n\tSessionStartEvent,\n\tShutdownHandler,\n\tToolInfo,\n} from \"./extensions/index.ts\";\nimport type { ManagedLaneEvent } from \"./extensions/types.ts\";\nimport type { MemoryProvider } from \"./memory/memory-provider.ts\";\nimport type { ModelRegistry } from \"./model-registry.ts\";\nimport type { PromptTemplate } from \"./prompt-templates.ts\";\nimport type { ResourceExtensionPaths, ResourceLoader } from \"./resource-loader.ts\";\nimport type { ResourceProfileSettings, SettingsManager } from \"./settings-manager.ts\";\nimport type { SlashCommandInfo } from \"./slash-commands.ts\";\n\nexport interface ExtensionBindingControllerDeps {\n\tgetAgent(): Agent;\n\tgetExtensionRunner(): ExtensionRunner;\n\tgetSessionStartEvent(): SessionStartEvent;\n\tgetCwd(): string;\n\tgetResourceLoader(): ResourceLoader;\n\tgetSessionManager(): SessionManager;\n\tgetSettingsManager(): SettingsManager;\n\tgetModelRegistry(): ModelRegistry;\n\tgetModel(): Model<Api> | undefined;\n\tgetActiveToolNames(): string[];\n\tgetAllTools(): ToolInfo[];\n\tsetActiveToolsByName(toolNames: string[]): void;\n\trefreshToolRegistry(): void;\n\trebuildSystemPrompt(toolNames: string[]): string;\n\tsetBaseSystemPrompt(prompt: string): void;\n\tgetPromptTemplates(): ReadonlyArray<PromptTemplate>;\n\tgetThinkingLevel(): ThinkingLevel;\n\tsetThinkingLevel(level: ThinkingLevel): void;\n\tsetModel(model: Model<Api>): Promise<void>;\n\tsendCustomMessage(\n\t\tmessage: Pick<CustomMessage, \"customType\" | \"content\" | \"display\" | \"details\">,\n\t\toptions?: { triggerTurn?: boolean; deliverAs?: \"steer\" | \"followUp\" | \"nextTurn\" },\n\t): Promise<void>;\n\tsendUserMessage(\n\t\tcontent: string | (TextContent | ImageContent)[],\n\t\toptions?: { deliverAs?: \"steer\" | \"followUp\"; processSlashCommands?: boolean },\n\t): Promise<void>;\n\tsetSessionName(name: string): void;\n\tregisterMemoryProvider(provider: MemoryProvider): void;\n\tregisterContextMemoryProvider(provider: ContextMemoryProvider): void;\n\taddSpawnedUsage(\n\t\tusage: Usage,\n\t\topts?: { label?: string; sourceSessionId?: string; reportId?: string },\n\t): string | undefined;\n\trecordManagedLane(event: ManagedLaneEvent): void;\n\tisForegroundBusy(): boolean;\n\tgetPendingMessageCount(): number;\n\tisStreaming(): boolean;\n\tisCompacting(): boolean;\n\tgetContextUsage(): ContextUsage | undefined;\n\tcompactForExtension(options?: CompactOptions): void;\n\treload(): Promise<void>;\n\tabort(): Promise<void>;\n\tgetSystemPrompt(): string;\n\tgetExtensionCommandContextActions(): ExtensionCommandContextActions | undefined;\n\trefreshCurrentModelFromRegistry(): void;\n\tinitializeMemory(): Promise<void>;\n\tgetExtensionUIContext(): ExtensionUIContext | undefined;\n\tsetExtensionUIContext(uiContext: ExtensionUIContext | undefined): void;\n\tgetExtensionMode(): ExtensionContext[\"mode\"];\n\tsetExtensionMode(mode: ExtensionContext[\"mode\"]): void;\n\tsetExtensionCommandContextActions(actions: ExtensionCommandContextActions | undefined): void;\n\tgetExtensionShutdownHandler(): ShutdownHandler | undefined;\n\tsetExtensionShutdownHandler(handler: ShutdownHandler | undefined): void;\n\tgetExtensionErrorListener(): ExtensionErrorListener | undefined;\n\tsetExtensionErrorListener(listener: ExtensionErrorListener | undefined): void;\n}\n\n/** Compile the current session's effective resource authority into a self-contained profile.\n * Empty allows become explicit wildcards so activating this snapshot in a child preserves the\n * parent's unrestricted kinds instead of triggering strict-profile deny-all semantics. */\nexport function compileEffectiveResourceProfileSnapshot(\n\tsettingsManager: Pick<SettingsManager, \"getResourceProfileFilter\">,\n): ResourceProfileSettings {\n\tconst snapshot: ResourceProfileSettings = {};\n\tfor (const kind of [\"extensions\", \"skills\", \"prompts\", \"themes\", \"agents\", \"tools\"] as const) {\n\t\tconst filter = settingsManager.getResourceProfileFilter(kind);\n\t\tsnapshot[kind] = {\n\t\t\tallow: filter.allow.length > 0 ? [...filter.allow] : [\"*\"],\n\t\t\tblock: [...filter.block],\n\t\t};\n\t}\n\treturn snapshot;\n}\n\nexport class ExtensionBindingController {\n\tprivate readonly deps: ExtensionBindingControllerDeps;\n\tprivate extensionAbortHandler?: () => void;\n\tprivate extensionErrorUnsubscriber?: () => void;\n\n\tconstructor(deps: ExtensionBindingControllerDeps) {\n\t\tthis.deps = deps;\n\t}\n\n\tasync bindExtensions(bindings: ExtensionBindings): Promise<void> {\n\t\tif (bindings.uiContext !== undefined) {\n\t\t\tthis.deps.setExtensionUIContext(bindings.uiContext);\n\t\t}\n\t\tif (bindings.mode !== undefined) {\n\t\t\tthis.deps.setExtensionMode(bindings.mode);\n\t\t}\n\t\tif (bindings.commandContextActions !== undefined) {\n\t\t\tthis.deps.setExtensionCommandContextActions(bindings.commandContextActions);\n\t\t}\n\t\tif (bindings.abortHandler !== undefined) {\n\t\t\tthis.extensionAbortHandler = bindings.abortHandler;\n\t\t}\n\t\tif (bindings.shutdownHandler !== undefined) {\n\t\t\tthis.deps.setExtensionShutdownHandler(bindings.shutdownHandler);\n\t\t}\n\t\tif (bindings.onError !== undefined) {\n\t\t\tthis.deps.setExtensionErrorListener(bindings.onError);\n\t\t}\n\n\t\tthis.applyExtensionBindings(this.deps.getExtensionRunner());\n\t\tawait this.deps.getExtensionRunner().emit(this.deps.getSessionStartEvent());\n\t\tawait this.extendResourcesFromExtensions(\n\t\t\tthis.deps.getSessionStartEvent().reason === \"reload\" ? \"reload\" : \"startup\",\n\t\t);\n\t\t// Initialize the memory subsystem after extensions have had a chance to register providers.\n\t\tawait this.deps.initializeMemory();\n\t}\n\n\tasync extendResourcesFromExtensions(reason: \"startup\" | \"reload\"): Promise<void> {\n\t\tconst runner = this.deps.getExtensionRunner();\n\t\tif (!runner.hasHandlers(\"resources_discover\")) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { skillPaths, promptPaths, themePaths } = await runner.emitResourcesDiscover(this.deps.getCwd(), reason);\n\n\t\tif (skillPaths.length === 0 && promptPaths.length === 0 && themePaths.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst extensionPaths: ResourceExtensionPaths = {\n\t\t\tskillPaths: this.buildExtensionResourcePaths(skillPaths),\n\t\t\tpromptPaths: this.buildExtensionResourcePaths(promptPaths),\n\t\t\tthemePaths: this.buildExtensionResourcePaths(themePaths),\n\t\t};\n\n\t\tthis.deps.getResourceLoader().extendResources(extensionPaths);\n\t\tconst rebuiltSystemPrompt = this.deps.rebuildSystemPrompt(this.deps.getActiveToolNames());\n\t\tthis.deps.setBaseSystemPrompt(rebuiltSystemPrompt);\n\t\tthis.deps.getAgent().state.systemPrompt = rebuiltSystemPrompt;\n\t}\n\n\tprivate buildExtensionResourcePaths(entries: Array<{ path: string; extensionPath: string }>): Array<{\n\t\tpath: string;\n\t\tmetadata: { source: string; scope: \"temporary\"; origin: \"top-level\"; baseDir?: string };\n\t}> {\n\t\treturn entries.map((entry) => {\n\t\t\tconst source = this.getExtensionSourceLabel(entry.extensionPath);\n\t\t\tconst baseDir = entry.extensionPath.startsWith(\"<\") ? undefined : dirname(entry.extensionPath);\n\t\t\treturn {\n\t\t\t\tpath: entry.path,\n\t\t\t\tmetadata: {\n\t\t\t\t\tsource,\n\t\t\t\t\tscope: \"temporary\",\n\t\t\t\t\torigin: \"top-level\",\n\t\t\t\t\tbaseDir,\n\t\t\t\t},\n\t\t\t};\n\t\t});\n\t}\n\n\tprivate getExtensionSourceLabel(extensionPath: string): string {\n\t\tif (extensionPath.startsWith(\"<\")) {\n\t\t\treturn `extension:${extensionPath.replace(/[<>]/g, \"\")}`;\n\t\t}\n\t\tconst base = basename(extensionPath);\n\t\tconst name = base.replace(/\\.(ts|js)$/, \"\");\n\t\treturn `extension:${name}`;\n\t}\n\n\tapplyExtensionBindings(runner: ExtensionRunner): void {\n\t\trunner.setUIContext(this.deps.getExtensionUIContext());\n\t\trunner.setMode(this.deps.getExtensionMode());\n\t\trunner.bindCommandContext(this.deps.getExtensionCommandContextActions());\n\n\t\tthis.extensionErrorUnsubscriber?.();\n\t\tconst errorListener = this.deps.getExtensionErrorListener();\n\t\tthis.extensionErrorUnsubscriber = errorListener ? runner.onError(errorListener) : undefined;\n\t}\n\n\tbindExtensionCore(runner: ExtensionRunner): void {\n\t\tconst getCommands = (): SlashCommandInfo[] => {\n\t\t\tconst extensionCommands: SlashCommandInfo[] = runner.getRegisteredCommands().map((command) => ({\n\t\t\t\tname: command.invocationName,\n\t\t\t\tdescription: command.description,\n\t\t\t\tsource: \"extension\",\n\t\t\t\tsourceInfo: command.sourceInfo,\n\t\t\t}));\n\n\t\t\tconst templates: SlashCommandInfo[] = this.deps.getPromptTemplates().map((template) => ({\n\t\t\t\tname: template.name,\n\t\t\t\tdescription: template.description,\n\t\t\t\tsource: \"prompt\",\n\t\t\t\tsourceInfo: template.sourceInfo,\n\t\t\t}));\n\n\t\t\tconst skills: SlashCommandInfo[] = this.deps\n\t\t\t\t.getResourceLoader()\n\t\t\t\t.getActiveSkills()\n\t\t\t\t.map((skill) => ({\n\t\t\t\t\tname: `skill:${skill.name}`,\n\t\t\t\t\tdescription: skill.description,\n\t\t\t\t\tsource: \"skill\",\n\t\t\t\t\tsourceInfo: skill.sourceInfo,\n\t\t\t\t}));\n\n\t\t\treturn [...extensionCommands, ...templates, ...skills];\n\t\t};\n\n\t\trunner.bindCore(\n\t\t\t{\n\t\t\t\tsendMessage: (message, options) => {\n\t\t\t\t\tthis.deps.sendCustomMessage(message, options).catch((err) => {\n\t\t\t\t\t\trunner.emitError({\n\t\t\t\t\t\t\textensionPath: \"<runtime>\",\n\t\t\t\t\t\t\tevent: \"send_message\",\n\t\t\t\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tsendUserMessage: (content, options) => {\n\t\t\t\t\tthis.deps.sendUserMessage(content, options).catch((err) => {\n\t\t\t\t\t\trunner.emitError({\n\t\t\t\t\t\t\textensionPath: \"<runtime>\",\n\t\t\t\t\t\t\tevent: \"send_user_message\",\n\t\t\t\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tappendEntry: (customType, data) => {\n\t\t\t\t\tthis.deps.getSessionManager().appendCustomEntry(customType, data);\n\t\t\t\t},\n\t\t\t\tsetSessionName: (name) => {\n\t\t\t\t\tthis.deps.setSessionName(name);\n\t\t\t\t},\n\t\t\t\tgetSessionName: () => {\n\t\t\t\t\treturn this.deps.getSessionManager().getSessionName();\n\t\t\t\t},\n\t\t\t\tsetLabel: (entryId, label) => {\n\t\t\t\t\tthis.deps.getSessionManager().appendLabelChange(entryId, label);\n\t\t\t\t},\n\t\t\t\tgetActiveTools: () => this.deps.getActiveToolNames(),\n\t\t\t\tgetAllTools: () => this.deps.getAllTools(),\n\t\t\t\tsetActiveTools: (toolNames) => this.deps.setActiveToolsByName(toolNames),\n\t\t\t\trefreshTools: () => this.deps.refreshToolRegistry(),\n\t\t\t\tgetCommands,\n\t\t\t\tsetModel: async (model) => {\n\t\t\t\t\tif (!this.deps.getModelRegistry().hasConfiguredAuth(model)) return false;\n\t\t\t\t\tawait this.deps.setModel(model);\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t\tgetThinkingLevel: () => this.deps.getThinkingLevel(),\n\t\t\t\tsetThinkingLevel: (level) => this.deps.setThinkingLevel(level),\n\t\t\t\tgetExternalResourceRoots: () => this.deps.getSettingsManager().getEffectiveExternalResourceRoots(),\n\t\t\t\tgetEffectiveResourceProfile: () => compileEffectiveResourceProfileSnapshot(this.deps.getSettingsManager()),\n\t\t\t\tregisterMemoryProvider: (provider) => this.deps.registerMemoryProvider(provider),\n\t\t\t\tregisterContextMemoryProvider: (provider) => this.deps.registerContextMemoryProvider(provider),\n\t\t\t\treportSpawnedUsage: (usage, opts) => {\n\t\t\t\t\tthis.deps.addSpawnedUsage(usage, opts);\n\t\t\t\t},\n\t\t\t\treportManagedLane: (event) => {\n\t\t\t\t\tthis.deps.recordManagedLane(event);\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tgetModel: () => this.deps.getModel(),\n\t\t\t\tisIdle: () => !this.deps.isForegroundBusy(),\n\t\t\t\tgetSignal: () => this.deps.getAgent().signal,\n\t\t\t\tabort: () => {\n\t\t\t\t\tif (this.extensionAbortHandler) {\n\t\t\t\t\t\tthis.extensionAbortHandler();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tvoid this.deps.abort();\n\t\t\t\t},\n\t\t\t\thasPendingMessages: () => this.deps.getPendingMessageCount() > 0,\n\t\t\t\tshutdown: () => {\n\t\t\t\t\tthis.deps.getExtensionShutdownHandler()?.();\n\t\t\t\t},\n\t\t\t\tgetContextUsage: () => this.deps.getContextUsage(),\n\t\t\t\tcompact: (options) => this.deps.compactForExtension(options),\n\t\t\t\treload: () => {\n\t\t\t\t\tif (this.deps.isStreaming()) {\n\t\t\t\t\t\treturn Promise.reject(\n\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t\"ctx.reload() cannot run while the agent is streaming or a tool call is active. Wait for ctx.isIdle(), queue a follow-up /reload, or use an idle command/event handler so hot reload cannot destabilize the UI.\",\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (this.deps.isCompacting()) {\n\t\t\t\t\t\treturn Promise.reject(\n\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t\"ctx.reload() cannot run during context compaction or branch summarization. Let compaction finish before reloading so the session tree and UI remain stable.\",\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tconst actions = this.deps.getExtensionCommandContextActions();\n\t\t\t\t\tif (!actions) {\n\t\t\t\t\t\treturn this.deps.reload();\n\t\t\t\t\t}\n\t\t\t\t\treturn actions.reload();\n\t\t\t\t},\n\t\t\t\tgetSystemPrompt: () => this.deps.getSystemPrompt(),\n\t\t\t},\n\t\t\t{\n\t\t\t\tregisterProvider: (name, config) => {\n\t\t\t\t\tthis.deps.getModelRegistry().registerProvider(name, config);\n\t\t\t\t\tthis.deps.refreshCurrentModelFromRegistry();\n\t\t\t\t},\n\t\t\t\tunregisterProvider: (name) => {\n\t\t\t\t\tthis.deps.getModelRegistry().unregisterProvider(name);\n\t\t\t\t\tthis.deps.refreshCurrentModelFromRegistry();\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\t}\n}\n"]}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { SettingsManager } from "./settings-manager.ts";
|
|
2
|
-
export type ExtensionImportAuthority = "explicit" | "profile";
|
|
2
|
+
export type ExtensionImportAuthority = "explicit" | "profile" | "default-on";
|
|
3
|
+
/** Passive bundled extensions that carry no tools/providers and are safe as UI defaults. */
|
|
4
|
+
export declare function isDefaultOnBundledExtension(extensionPath: string, source: string): boolean;
|
|
3
5
|
export declare function hasProfileExtensionImportAuthority(settingsManager: SettingsManager): boolean;
|
|
4
6
|
/** Single import-boundary policy shared by startup discovery, reconciliation, and live loading. */
|
|
5
7
|
export declare function isExtensionPathAllowedForImport(settingsManager: SettingsManager, extensionPath: string, authority: ExtensionImportAuthority, baseDir?: string): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extension-import-authority.d.ts","sourceRoot":"","sources":["../../src/core/extension-import-authority.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"extension-import-authority.d.ts","sourceRoot":"","sources":["../../src/core/extension-import-authority.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,MAAM,MAAM,wBAAwB,GAAG,UAAU,GAAG,SAAS,GAAG,YAAY,CAAC;AAU7E,4FAA4F;AAC5F,wBAAgB,2BAA2B,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAE1F;AAED,wBAAgB,kCAAkC,CAAC,eAAe,EAAE,eAAe,GAAG,OAAO,CAE5F;AAED,mGAAmG;AACnG,wBAAgB,+BAA+B,CAC9C,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,wBAAwB,EACnC,OAAO,SAAK,GACV,OAAO,CAMT"}
|
|
@@ -1,8 +1,23 @@
|
|
|
1
|
+
import { basename, dirname, extname } from "node:path";
|
|
2
|
+
const DEFAULT_ON_BUNDLED_EXTENSION_NAMES = new Set(["tps"]);
|
|
3
|
+
function extensionName(extensionPath) {
|
|
4
|
+
const file = basename(extensionPath);
|
|
5
|
+
if (/^index\.[cm]?[jt]sx?$/.test(file))
|
|
6
|
+
return basename(dirname(extensionPath));
|
|
7
|
+
return basename(file, extname(file));
|
|
8
|
+
}
|
|
9
|
+
/** Passive bundled extensions that carry no tools/providers and are safe as UI defaults. */
|
|
10
|
+
export function isDefaultOnBundledExtension(extensionPath, source) {
|
|
11
|
+
return source === "bundled" && DEFAULT_ON_BUNDLED_EXTENSION_NAMES.has(extensionName(extensionPath));
|
|
12
|
+
}
|
|
1
13
|
export function hasProfileExtensionImportAuthority(settingsManager) {
|
|
2
14
|
return settingsManager.getActiveResourceProfileNames().length > 0;
|
|
3
15
|
}
|
|
4
16
|
/** Single import-boundary policy shared by startup discovery, reconciliation, and live loading. */
|
|
5
17
|
export function isExtensionPathAllowedForImport(settingsManager, extensionPath, authority, baseDir = "") {
|
|
18
|
+
if (authority === "default-on") {
|
|
19
|
+
return !settingsManager.isResourceExplicitlyDisabled("extensions", extensionPath, baseDir);
|
|
20
|
+
}
|
|
6
21
|
if (authority === "profile" && !hasProfileExtensionImportAuthority(settingsManager))
|
|
7
22
|
return false;
|
|
8
23
|
return settingsManager.isResourceAllowedByProfile("extensions", extensionPath, baseDir);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extension-import-authority.js","sourceRoot":"","sources":["../../src/core/extension-import-authority.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"extension-import-authority.js","sourceRoot":"","sources":["../../src/core/extension-import-authority.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKvD,MAAM,kCAAkC,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAE5D,SAAS,aAAa,CAAC,aAAqB;IAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;IACrC,IAAI,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;IAChF,OAAO,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,2BAA2B,CAAC,aAAqB,EAAE,MAAc;IAChF,OAAO,MAAM,KAAK,SAAS,IAAI,kCAAkC,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;AACrG,CAAC;AAED,MAAM,UAAU,kCAAkC,CAAC,eAAgC;IAClF,OAAO,eAAe,CAAC,6BAA6B,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AACnE,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,+BAA+B,CAC9C,eAAgC,EAChC,aAAqB,EACrB,SAAmC,EACnC,OAAO,GAAG,EAAE;IAEZ,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;QAChC,OAAO,CAAC,eAAe,CAAC,4BAA4B,CAAC,YAAY,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IAC5F,CAAC;IACD,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,kCAAkC,CAAC,eAAe,CAAC;QAAE,OAAO,KAAK,CAAC;IAClG,OAAO,eAAe,CAAC,0BAA0B,CAAC,YAAY,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;AACzF,CAAC","sourcesContent":["import { basename, dirname, extname } from \"node:path\";\nimport type { SettingsManager } from \"./settings-manager.ts\";\n\nexport type ExtensionImportAuthority = \"explicit\" | \"profile\" | \"default-on\";\n\nconst DEFAULT_ON_BUNDLED_EXTENSION_NAMES = new Set([\"tps\"]);\n\nfunction extensionName(extensionPath: string): string {\n\tconst file = basename(extensionPath);\n\tif (/^index\\.[cm]?[jt]sx?$/.test(file)) return basename(dirname(extensionPath));\n\treturn basename(file, extname(file));\n}\n\n/** Passive bundled extensions that carry no tools/providers and are safe as UI defaults. */\nexport function isDefaultOnBundledExtension(extensionPath: string, source: string): boolean {\n\treturn source === \"bundled\" && DEFAULT_ON_BUNDLED_EXTENSION_NAMES.has(extensionName(extensionPath));\n}\n\nexport function hasProfileExtensionImportAuthority(settingsManager: SettingsManager): boolean {\n\treturn settingsManager.getActiveResourceProfileNames().length > 0;\n}\n\n/** Single import-boundary policy shared by startup discovery, reconciliation, and live loading. */\nexport function isExtensionPathAllowedForImport(\n\tsettingsManager: SettingsManager,\n\textensionPath: string,\n\tauthority: ExtensionImportAuthority,\n\tbaseDir = \"\",\n): boolean {\n\tif (authority === \"default-on\") {\n\t\treturn !settingsManager.isResourceExplicitlyDisabled(\"extensions\", extensionPath, baseDir);\n\t}\n\tif (authority === \"profile\" && !hasProfileExtensionImportAuthority(settingsManager)) return false;\n\treturn settingsManager.isResourceAllowedByProfile(\"extensions\", extensionPath, baseDir);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory-runtime.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/factory-runtime.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAOhD,OAAO,KAAK,EACX,SAAS,EACT,YAAY,EAEZ,gBAAgB,EAChB,gBAAgB,EAKhB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,4BAA4B,QAAS,CAAC;AAEnD,qBAAa,4BAA6B,SAAQ,KAAK;CAAG;AAI1D,gGAAgG;AAChG,wBAAgB,sBAAsB,IAAI,gBAAgB,
|
|
1
|
+
{"version":3,"file":"factory-runtime.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/factory-runtime.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAOhD,OAAO,KAAK,EACX,SAAS,EACT,YAAY,EAEZ,gBAAgB,EAChB,gBAAgB,EAKhB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,4BAA4B,QAAS,CAAC;AAEnD,qBAAa,4BAA6B,SAAQ,KAAK;CAAG;AAI1D,gGAAgG;AAChG,wBAAgB,sBAAsB,IAAI,gBAAgB,CA2DzD;AAED,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,SAAS,CAmBtF;AAED,wBAAgB,kBAAkB,CACjC,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,gBAAgB,EACzB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,GACd,YAAY,CAyMd;AAED,wBAAsB,mBAAmB,CACxC,OAAO,EAAE,gBAAgB,EACzB,GAAG,EAAE,YAAY,EACjB,SAAS,GAAE,MAAqC,GAC9C,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED,MAAM,WAAW,4BAA4B;IAC5C,4BAA4B,EAAE,gBAAgB,CAAC,8BAA8B,CAAC,CAAC;IAC/E,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC;IAC1C,qBAAqB,EAAE,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;CACjE;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,gBAAgB,GAAG,4BAA4B,CAMpG;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,4BAA4B,GAAG,IAAI,CAmBnH;AAED,wBAAsB,wBAAwB,CAC7C,OAAO,EAAE,gBAAgB,EACzB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,gBAAgB,EACzB,aAAa,SAAa,EAC1B,OAAO,GAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAC5D,OAAO,CAAC,SAAS,CAAC,CAcpB"}
|
|
@@ -40,6 +40,7 @@ export function createExtensionRuntime() {
|
|
|
40
40
|
getThinkingLevel: notInitialized,
|
|
41
41
|
setThinkingLevel: notInitialized,
|
|
42
42
|
getExternalResourceRoots: notInitialized,
|
|
43
|
+
getEffectiveResourceProfile: notInitialized,
|
|
43
44
|
registerMemoryProvider: notInitialized,
|
|
44
45
|
registerContextMemoryProvider: notInitialized,
|
|
45
46
|
reportSpawnedUsage: notInitialized,
|
|
@@ -208,6 +209,10 @@ export function createExtensionAPI(extension, runtime, cwd, eventBus, agentDir)
|
|
|
208
209
|
runtime.assertActive();
|
|
209
210
|
return runtime.getExternalResourceRoots();
|
|
210
211
|
},
|
|
212
|
+
getEffectiveResourceProfile() {
|
|
213
|
+
runtime.assertActive();
|
|
214
|
+
return runtime.getEffectiveResourceProfile();
|
|
215
|
+
},
|
|
211
216
|
registerMemoryProvider(provider) {
|
|
212
217
|
runtime.assertActive();
|
|
213
218
|
runtime.registerMemoryProvider(provider);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory-runtime.js","sourceRoot":"","sources":["../../../src/core/extensions/factory-runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import * as path from \"node:path\";\nimport type { KeyId } from \"@caupulican/pi-tui\";\nimport { getAgentDir } from \"../../config.ts\";\nimport { resolvePath } from \"../../utils/paths.ts\";\nimport type { EventBus } from \"../event-bus.ts\";\nimport type { ExecOptions } from \"../exec.ts\";\nimport { execCommand } from \"../exec.ts\";\nimport { createSyntheticSourceInfo } from \"../source-info.ts\";\nimport { disposeExtensionEventSubscriptions, isExtensionGenerationInactive } from \"./lifecycle.ts\";\nimport { DEFAULT_STALE_EXTENSION_CONTEXT_MESSAGE } from \"./stale-context.ts\";\nimport { createExtensionStorage } from \"./storage.ts\";\nimport type {\n\tExtension,\n\tExtensionAPI,\n\tExtensionContext,\n\tExtensionFactory,\n\tExtensionRuntime,\n\tMessageRenderer,\n\tProviderConfig,\n\tRegisteredCommand,\n\tToolDefinition,\n} from \"./types.ts\";\n\nexport const EXTENSION_FACTORY_TIMEOUT_MS = 30_000;\n\nexport class ExtensionFactoryTimeoutError extends Error {}\n\ntype HandlerFn = (...args: unknown[]) => Promise<unknown>;\n\n/** Create the shared pre-bind state used by both file-backed and inline extension factories. */\nexport function createExtensionRuntime(): ExtensionRuntime {\n\tconst notInitialized = () => {\n\t\tthrow new Error(\"Extension runtime not initialized. Action methods cannot be called during extension loading.\");\n\t};\n\tconst state: { staleMessage?: string } = {};\n\tconst assertActive = () => {\n\t\tif (state.staleMessage) throw new Error(state.staleMessage);\n\t};\n\tconst providersByExtension = new Map<string, Set<string>>();\n\tconst providerRegistrations = new Map<string, { config: ProviderConfig; extensionPath?: string }>();\n\tconst memoryProvidersByExtension = new Map<string, Set<Parameters<ExtensionRuntime[\"registerMemoryProvider\"]>[0]>>();\n\tconst contextMemoryProvidersByExtension = new Map<\n\t\tstring,\n\t\tSet<Parameters<ExtensionRuntime[\"registerContextMemoryProvider\"]>[0]>\n\t>();\n\tconst extensionStorageOwners = new Map<string, Extension>();\n\tconst runtime: ExtensionRuntime = {\n\t\tsendMessage: notInitialized,\n\t\tsendUserMessage: notInitialized,\n\t\tappendEntry: notInitialized,\n\t\tsetSessionName: notInitialized,\n\t\tgetSessionName: notInitialized,\n\t\tsetLabel: notInitialized,\n\t\tgetActiveTools: notInitialized,\n\t\tgetAllTools: notInitialized,\n\t\tsetActiveTools: notInitialized,\n\t\trefreshTools: () => {},\n\t\tgetCommands: notInitialized,\n\t\tsetModel: notInitialized,\n\t\tgetThinkingLevel: notInitialized,\n\t\tsetThinkingLevel: notInitialized,\n\t\tgetExternalResourceRoots: notInitialized,\n\t\tregisterMemoryProvider: notInitialized,\n\t\tregisterContextMemoryProvider: notInitialized,\n\t\treportSpawnedUsage: notInitialized,\n\t\treportManagedLane: notInitialized,\n\t\tflagValues: new Map(),\n\t\tpendingProviderRegistrations: [],\n\t\tassertActive,\n\t\tinvalidate: (message) => {\n\t\t\tstate.staleMessage ??= message ?? DEFAULT_STALE_EXTENSION_CONTEXT_MESSAGE;\n\t\t},\n\t\tregisterProvider: (name, config, extensionPath = \"<unknown>\") => {\n\t\t\truntime.pendingProviderRegistrations.push({ name, config, extensionPath });\n\t\t},\n\t\tunregisterProvider: (name) => {\n\t\t\truntime.pendingProviderRegistrations = runtime.pendingProviderRegistrations.filter(\n\t\t\t\t(entry) => entry.name !== name,\n\t\t\t);\n\t\t},\n\t\tprovidersByExtension,\n\t\tproviderRegistrations,\n\t\tgetProvidersForExtension: (extensionPath) => [...(providersByExtension.get(extensionPath) ?? [])],\n\t\tmemoryProvidersByExtension,\n\t\tcontextMemoryProvidersByExtension,\n\t\textensionStorageOwners,\n\t};\n\treturn runtime;\n}\n\nexport function createExtension(extensionPath: string, resolvedPath: string): Extension {\n\tconst source =\n\t\textensionPath.startsWith(\"<\") && extensionPath.endsWith(\">\")\n\t\t\t? extensionPath.slice(1, -1).split(\":\")[0] || \"temporary\"\n\t\t\t: \"local\";\n\tconst baseDir = extensionPath.startsWith(\"<\") ? undefined : path.dirname(resolvedPath);\n\treturn {\n\t\tpath: extensionPath,\n\t\tresolvedPath,\n\t\tsourceInfo: createSyntheticSourceInfo(extensionPath, { source, baseDir }),\n\t\thandlers: new Map(),\n\t\ttools: new Map(),\n\t\tmessageRenderers: new Map(),\n\t\tcommands: new Map(),\n\t\tflags: new Map(),\n\t\tshortcuts: new Map(),\n\t\teventUnsubscribes: [],\n\t\tdisposers: [],\n\t};\n}\n\nexport function createExtensionAPI(\n\textension: Extension,\n\truntime: ExtensionRuntime,\n\tcwd: string,\n\teventBus: EventBus,\n\tagentDir: string,\n): ExtensionAPI {\n\tconst sharedRuntime = runtime;\n\truntime = new Proxy(sharedRuntime, {\n\t\tget(target, property, receiver) {\n\t\t\tif (property === \"assertActive\") {\n\t\t\t\treturn () => {\n\t\t\t\t\ttarget.assertActive();\n\t\t\t\t\tif (isExtensionGenerationInactive(extension)) {\n\t\t\t\t\t\tthrow new Error(`Extension generation is no longer active: ${extension.path}`);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn Reflect.get(target, property, receiver);\n\t\t},\n\t});\n\n\treturn {\n\t\tgetStorage(namespace: string) {\n\t\t\truntime.assertActive();\n\t\t\tif (extension.storage) {\n\t\t\t\tif (extension.storage.namespace !== namespace) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Extension ${extension.path} already owns storage namespace ${extension.storage.namespace}; cannot also use ${namespace}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn extension.storage;\n\t\t\t}\n\t\t\tconst storage = createExtensionStorage(agentDir, namespace, runtime.assertActive, (disposer) =>\n\t\t\t\textension.disposers.push(disposer),\n\t\t\t);\n\t\t\tconst previousOwner = runtime.extensionStorageOwners.get(namespace);\n\t\t\tif (previousOwner && previousOwner.path !== extension.path) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Extension storage namespace ${namespace} is already owned by ${previousOwner.path}; ${extension.path} cannot also use it`,\n\t\t\t\t);\n\t\t\t}\n\t\t\truntime.extensionStorageOwners.set(namespace, extension);\n\t\t\textension.disposers.push(() => {\n\t\t\t\tif (runtime.extensionStorageOwners.get(namespace) !== extension) return;\n\t\t\t\tif (previousOwner && !isExtensionGenerationInactive(previousOwner)) {\n\t\t\t\t\truntime.extensionStorageOwners.set(namespace, previousOwner);\n\t\t\t\t} else {\n\t\t\t\t\truntime.extensionStorageOwners.delete(namespace);\n\t\t\t\t}\n\t\t\t});\n\t\t\textension.storage = storage;\n\t\t\treturn storage;\n\t\t},\n\t\ton(event: string, handler: HandlerFn): void {\n\t\t\truntime.assertActive();\n\t\t\tconst handlers = extension.handlers.get(event) ?? [];\n\t\t\thandlers.push(handler);\n\t\t\textension.handlers.set(event, handlers);\n\t\t},\n\t\tregisterTool(tool: ToolDefinition): void {\n\t\t\truntime.assertActive();\n\t\t\textension.tools.set(tool.name, { definition: tool, sourceInfo: extension.sourceInfo });\n\t\t\truntime.refreshTools();\n\t\t},\n\t\tregisterCommand(name: string, options: Omit<RegisteredCommand, \"name\" | \"sourceInfo\">): void {\n\t\t\truntime.assertActive();\n\t\t\textension.commands.set(name, { name, sourceInfo: extension.sourceInfo, ...options });\n\t\t},\n\t\tregisterShortcut(\n\t\t\tshortcut: KeyId,\n\t\t\toptions: {\n\t\t\t\tdescription?: string;\n\t\t\t\thandler: (ctx: ExtensionContext) => Promise<void> | void;\n\t\t\t},\n\t\t): void {\n\t\t\truntime.assertActive();\n\t\t\textension.shortcuts.set(shortcut, { shortcut, extensionPath: extension.path, ...options });\n\t\t},\n\t\tregisterFlag(\n\t\t\tname: string,\n\t\t\toptions: { description?: string; type: \"boolean\" | \"string\"; default?: boolean | string },\n\t\t): void {\n\t\t\truntime.assertActive();\n\t\t\textension.flags.set(name, { name, extensionPath: extension.path, ...options });\n\t\t\tif (options.default !== undefined && !runtime.flagValues.has(name))\n\t\t\t\truntime.flagValues.set(name, options.default);\n\t\t},\n\t\tregisterMessageRenderer<T>(customType: string, renderer: MessageRenderer<T>): void {\n\t\t\truntime.assertActive();\n\t\t\textension.messageRenderers.set(customType, renderer as MessageRenderer);\n\t\t},\n\t\tgetFlag(name: string) {\n\t\t\truntime.assertActive();\n\t\t\treturn extension.flags.has(name) ? runtime.flagValues.get(name) : undefined;\n\t\t},\n\t\tsendMessage(message, options): void {\n\t\t\truntime.assertActive();\n\t\t\truntime.sendMessage(message, options);\n\t\t},\n\t\tsendUserMessage(content, options): void {\n\t\t\truntime.assertActive();\n\t\t\truntime.sendUserMessage(content, options);\n\t\t},\n\t\tappendEntry(customType, data): void {\n\t\t\truntime.assertActive();\n\t\t\truntime.appendEntry(customType, data);\n\t\t},\n\t\tsetSessionName(name): void {\n\t\t\truntime.assertActive();\n\t\t\truntime.setSessionName(name);\n\t\t},\n\t\tgetSessionName() {\n\t\t\truntime.assertActive();\n\t\t\treturn runtime.getSessionName();\n\t\t},\n\t\tsetLabel(entryId, label): void {\n\t\t\truntime.assertActive();\n\t\t\truntime.setLabel(entryId, label);\n\t\t},\n\t\texec(command: string, args: string[], options?: ExecOptions) {\n\t\t\truntime.assertActive();\n\t\t\treturn execCommand(command, args, options?.cwd ?? cwd, options);\n\t\t},\n\t\tgetActiveTools() {\n\t\t\truntime.assertActive();\n\t\t\treturn runtime.getActiveTools();\n\t\t},\n\t\tgetAllTools() {\n\t\t\truntime.assertActive();\n\t\t\treturn runtime.getAllTools();\n\t\t},\n\t\tsetActiveTools(toolNames): void {\n\t\t\truntime.assertActive();\n\t\t\truntime.setActiveTools(toolNames);\n\t\t},\n\t\tgetCommands() {\n\t\t\truntime.assertActive();\n\t\t\treturn runtime.getCommands();\n\t\t},\n\t\tgetExternalResourceRoots() {\n\t\t\truntime.assertActive();\n\t\t\treturn runtime.getExternalResourceRoots();\n\t\t},\n\t\tregisterMemoryProvider(provider): void {\n\t\t\truntime.assertActive();\n\t\t\truntime.registerMemoryProvider(provider);\n\t\t\tconst providers = runtime.memoryProvidersByExtension.get(extension.path) ?? new Set();\n\t\t\tproviders.add(provider);\n\t\t\truntime.memoryProvidersByExtension.set(extension.path, providers);\n\t\t},\n\t\tregisterContextMemoryProvider(provider): void {\n\t\t\truntime.assertActive();\n\t\t\truntime.registerContextMemoryProvider(provider);\n\t\t\tconst providers = runtime.contextMemoryProvidersByExtension.get(extension.path) ?? new Set();\n\t\t\tproviders.add(provider);\n\t\t\truntime.contextMemoryProvidersByExtension.set(extension.path, providers);\n\t\t},\n\t\treportSpawnedUsage(usage, options): void {\n\t\t\truntime.assertActive();\n\t\t\truntime.reportSpawnedUsage(usage, options);\n\t\t},\n\t\treportManagedLane(event): void {\n\t\t\truntime.assertActive();\n\t\t\truntime.reportManagedLane(event);\n\t\t},\n\t\tsetModel(model) {\n\t\t\truntime.assertActive();\n\t\t\treturn runtime.setModel(model);\n\t\t},\n\t\tgetThinkingLevel() {\n\t\t\truntime.assertActive();\n\t\t\treturn runtime.getThinkingLevel();\n\t\t},\n\t\tsetThinkingLevel(level): void {\n\t\t\truntime.assertActive();\n\t\t\truntime.setThinkingLevel(level);\n\t\t},\n\t\tregisterProvider(name, config): void {\n\t\t\truntime.assertActive();\n\t\t\truntime.registerProvider(name, config, extension.path);\n\t\t},\n\t\tunregisterProvider(name): void {\n\t\t\truntime.assertActive();\n\t\t\truntime.unregisterProvider(name, extension.path);\n\t\t},\n\t\tonDispose(disposer): void {\n\t\t\truntime.assertActive();\n\t\t\textension.disposers.push(disposer);\n\t\t},\n\t\tevents: {\n\t\t\temit: (channel, data) => {\n\t\t\t\truntime.assertActive();\n\t\t\t\teventBus.emit(channel, data);\n\t\t\t},\n\t\t\ton: (channel, handler) => {\n\t\t\t\truntime.assertActive();\n\t\t\t\tconst unsubscribe = eventBus.on(channel, handler);\n\t\t\t\textension.eventUnsubscribes.push(unsubscribe);\n\t\t\t\treturn unsubscribe;\n\t\t\t},\n\t\t},\n\t} as ExtensionAPI;\n}\n\nexport async function runExtensionFactory(\n\tfactory: ExtensionFactory,\n\tapi: ExtensionAPI,\n\ttimeoutMs: number = EXTENSION_FACTORY_TIMEOUT_MS,\n): Promise<void> {\n\tlet timeout: ReturnType<typeof setTimeout> | undefined;\n\tconst completion = Promise.resolve().then(() => factory(api));\n\ttry {\n\t\tawait Promise.race([\n\t\t\tcompletion,\n\t\t\tnew Promise<never>((_resolve, reject) => {\n\t\t\t\ttimeout = setTimeout(\n\t\t\t\t\t() => reject(new ExtensionFactoryTimeoutError(`Extension factory timed out after ${timeoutMs}ms`)),\n\t\t\t\t\tMath.max(0, timeoutMs),\n\t\t\t\t);\n\t\t\t}),\n\t\t]);\n\t} finally {\n\t\tif (timeout) clearTimeout(timeout);\n\t}\n}\n\nexport interface ExtensionLoadRuntimeSnapshot {\n\tpendingProviderRegistrations: ExtensionRuntime[\"pendingProviderRegistrations\"];\n\tflagValues: Map<string, boolean | string>;\n\tproviderRegistrations: ExtensionRuntime[\"providerRegistrations\"];\n}\n\nexport function snapshotExtensionLoadRuntime(runtime: ExtensionRuntime): ExtensionLoadRuntimeSnapshot {\n\treturn {\n\t\tpendingProviderRegistrations: [...runtime.pendingProviderRegistrations],\n\t\tflagValues: new Map(runtime.flagValues),\n\t\tproviderRegistrations: new Map(runtime.providerRegistrations),\n\t};\n}\n\nexport function restoreExtensionLoadRuntime(runtime: ExtensionRuntime, snapshot: ExtensionLoadRuntimeSnapshot): void {\n\tfor (const [name, current] of runtime.providerRegistrations) {\n\t\tconst previous = snapshot.providerRegistrations.get(name);\n\t\tif (!previous || previous.config !== current.config || previous.extensionPath !== current.extensionPath) {\n\t\t\ttry {\n\t\t\t\truntime.unregisterProvider(name, current.extensionPath);\n\t\t\t} catch {}\n\t\t}\n\t}\n\tfor (const [name, previous] of snapshot.providerRegistrations) {\n\t\tconst current = runtime.providerRegistrations.get(name);\n\t\tif (current?.config === previous.config && current.extensionPath === previous.extensionPath) continue;\n\t\ttry {\n\t\t\truntime.registerProvider(name, previous.config, previous.extensionPath);\n\t\t} catch {}\n\t}\n\truntime.pendingProviderRegistrations = snapshot.pendingProviderRegistrations;\n\truntime.flagValues.clear();\n\tfor (const [name, value] of snapshot.flagValues) runtime.flagValues.set(name, value);\n}\n\nexport async function loadExtensionFromFactory(\n\tfactory: ExtensionFactory,\n\tcwd: string,\n\teventBus: EventBus,\n\truntime: ExtensionRuntime,\n\textensionPath = \"<inline>\",\n\toptions: { factoryTimeoutMs?: number; agentDir?: string } = {},\n): Promise<Extension> {\n\tconst extension = createExtension(extensionPath, extensionPath);\n\tconst resolvedCwd = resolvePath(cwd);\n\tconst resolvedAgentDir = resolvePath(options.agentDir ?? getAgentDir());\n\tconst api = createExtensionAPI(extension, runtime, resolvedCwd, eventBus, resolvedAgentDir);\n\tconst runtimeSnapshot = snapshotExtensionLoadRuntime(runtime);\n\ttry {\n\t\tawait runExtensionFactory(factory, api, options.factoryTimeoutMs);\n\t} catch (error) {\n\t\tawait disposeExtensionEventSubscriptions([extension]);\n\t\trestoreExtensionLoadRuntime(runtime, runtimeSnapshot);\n\t\tthrow error;\n\t}\n\treturn extension;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"factory-runtime.js","sourceRoot":"","sources":["../../../src/core/extensions/factory-runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import * as path from \"node:path\";\nimport type { KeyId } from \"@caupulican/pi-tui\";\nimport { getAgentDir } from \"../../config.ts\";\nimport { resolvePath } from \"../../utils/paths.ts\";\nimport type { EventBus } from \"../event-bus.ts\";\nimport type { ExecOptions } from \"../exec.ts\";\nimport { execCommand } from \"../exec.ts\";\nimport { createSyntheticSourceInfo } from \"../source-info.ts\";\nimport { disposeExtensionEventSubscriptions, isExtensionGenerationInactive } from \"./lifecycle.ts\";\nimport { DEFAULT_STALE_EXTENSION_CONTEXT_MESSAGE } from \"./stale-context.ts\";\nimport { createExtensionStorage } from \"./storage.ts\";\nimport type {\n\tExtension,\n\tExtensionAPI,\n\tExtensionContext,\n\tExtensionFactory,\n\tExtensionRuntime,\n\tMessageRenderer,\n\tProviderConfig,\n\tRegisteredCommand,\n\tToolDefinition,\n} from \"./types.ts\";\n\nexport const EXTENSION_FACTORY_TIMEOUT_MS = 30_000;\n\nexport class ExtensionFactoryTimeoutError extends Error {}\n\ntype HandlerFn = (...args: unknown[]) => Promise<unknown>;\n\n/** Create the shared pre-bind state used by both file-backed and inline extension factories. */\nexport function createExtensionRuntime(): ExtensionRuntime {\n\tconst notInitialized = () => {\n\t\tthrow new Error(\"Extension runtime not initialized. Action methods cannot be called during extension loading.\");\n\t};\n\tconst state: { staleMessage?: string } = {};\n\tconst assertActive = () => {\n\t\tif (state.staleMessage) throw new Error(state.staleMessage);\n\t};\n\tconst providersByExtension = new Map<string, Set<string>>();\n\tconst providerRegistrations = new Map<string, { config: ProviderConfig; extensionPath?: string }>();\n\tconst memoryProvidersByExtension = new Map<string, Set<Parameters<ExtensionRuntime[\"registerMemoryProvider\"]>[0]>>();\n\tconst contextMemoryProvidersByExtension = new Map<\n\t\tstring,\n\t\tSet<Parameters<ExtensionRuntime[\"registerContextMemoryProvider\"]>[0]>\n\t>();\n\tconst extensionStorageOwners = new Map<string, Extension>();\n\tconst runtime: ExtensionRuntime = {\n\t\tsendMessage: notInitialized,\n\t\tsendUserMessage: notInitialized,\n\t\tappendEntry: notInitialized,\n\t\tsetSessionName: notInitialized,\n\t\tgetSessionName: notInitialized,\n\t\tsetLabel: notInitialized,\n\t\tgetActiveTools: notInitialized,\n\t\tgetAllTools: notInitialized,\n\t\tsetActiveTools: notInitialized,\n\t\trefreshTools: () => {},\n\t\tgetCommands: notInitialized,\n\t\tsetModel: notInitialized,\n\t\tgetThinkingLevel: notInitialized,\n\t\tsetThinkingLevel: notInitialized,\n\t\tgetExternalResourceRoots: notInitialized,\n\t\tgetEffectiveResourceProfile: notInitialized,\n\t\tregisterMemoryProvider: notInitialized,\n\t\tregisterContextMemoryProvider: notInitialized,\n\t\treportSpawnedUsage: notInitialized,\n\t\treportManagedLane: notInitialized,\n\t\tflagValues: new Map(),\n\t\tpendingProviderRegistrations: [],\n\t\tassertActive,\n\t\tinvalidate: (message) => {\n\t\t\tstate.staleMessage ??= message ?? DEFAULT_STALE_EXTENSION_CONTEXT_MESSAGE;\n\t\t},\n\t\tregisterProvider: (name, config, extensionPath = \"<unknown>\") => {\n\t\t\truntime.pendingProviderRegistrations.push({ name, config, extensionPath });\n\t\t},\n\t\tunregisterProvider: (name) => {\n\t\t\truntime.pendingProviderRegistrations = runtime.pendingProviderRegistrations.filter(\n\t\t\t\t(entry) => entry.name !== name,\n\t\t\t);\n\t\t},\n\t\tprovidersByExtension,\n\t\tproviderRegistrations,\n\t\tgetProvidersForExtension: (extensionPath) => [...(providersByExtension.get(extensionPath) ?? [])],\n\t\tmemoryProvidersByExtension,\n\t\tcontextMemoryProvidersByExtension,\n\t\textensionStorageOwners,\n\t};\n\treturn runtime;\n}\n\nexport function createExtension(extensionPath: string, resolvedPath: string): Extension {\n\tconst source =\n\t\textensionPath.startsWith(\"<\") && extensionPath.endsWith(\">\")\n\t\t\t? extensionPath.slice(1, -1).split(\":\")[0] || \"temporary\"\n\t\t\t: \"local\";\n\tconst baseDir = extensionPath.startsWith(\"<\") ? undefined : path.dirname(resolvedPath);\n\treturn {\n\t\tpath: extensionPath,\n\t\tresolvedPath,\n\t\tsourceInfo: createSyntheticSourceInfo(extensionPath, { source, baseDir }),\n\t\thandlers: new Map(),\n\t\ttools: new Map(),\n\t\tmessageRenderers: new Map(),\n\t\tcommands: new Map(),\n\t\tflags: new Map(),\n\t\tshortcuts: new Map(),\n\t\teventUnsubscribes: [],\n\t\tdisposers: [],\n\t};\n}\n\nexport function createExtensionAPI(\n\textension: Extension,\n\truntime: ExtensionRuntime,\n\tcwd: string,\n\teventBus: EventBus,\n\tagentDir: string,\n): ExtensionAPI {\n\tconst sharedRuntime = runtime;\n\truntime = new Proxy(sharedRuntime, {\n\t\tget(target, property, receiver) {\n\t\t\tif (property === \"assertActive\") {\n\t\t\t\treturn () => {\n\t\t\t\t\ttarget.assertActive();\n\t\t\t\t\tif (isExtensionGenerationInactive(extension)) {\n\t\t\t\t\t\tthrow new Error(`Extension generation is no longer active: ${extension.path}`);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn Reflect.get(target, property, receiver);\n\t\t},\n\t});\n\n\treturn {\n\t\tgetStorage(namespace: string) {\n\t\t\truntime.assertActive();\n\t\t\tif (extension.storage) {\n\t\t\t\tif (extension.storage.namespace !== namespace) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Extension ${extension.path} already owns storage namespace ${extension.storage.namespace}; cannot also use ${namespace}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn extension.storage;\n\t\t\t}\n\t\t\tconst storage = createExtensionStorage(agentDir, namespace, runtime.assertActive, (disposer) =>\n\t\t\t\textension.disposers.push(disposer),\n\t\t\t);\n\t\t\tconst previousOwner = runtime.extensionStorageOwners.get(namespace);\n\t\t\tif (previousOwner && previousOwner.path !== extension.path) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Extension storage namespace ${namespace} is already owned by ${previousOwner.path}; ${extension.path} cannot also use it`,\n\t\t\t\t);\n\t\t\t}\n\t\t\truntime.extensionStorageOwners.set(namespace, extension);\n\t\t\textension.disposers.push(() => {\n\t\t\t\tif (runtime.extensionStorageOwners.get(namespace) !== extension) return;\n\t\t\t\tif (previousOwner && !isExtensionGenerationInactive(previousOwner)) {\n\t\t\t\t\truntime.extensionStorageOwners.set(namespace, previousOwner);\n\t\t\t\t} else {\n\t\t\t\t\truntime.extensionStorageOwners.delete(namespace);\n\t\t\t\t}\n\t\t\t});\n\t\t\textension.storage = storage;\n\t\t\treturn storage;\n\t\t},\n\t\ton(event: string, handler: HandlerFn): void {\n\t\t\truntime.assertActive();\n\t\t\tconst handlers = extension.handlers.get(event) ?? [];\n\t\t\thandlers.push(handler);\n\t\t\textension.handlers.set(event, handlers);\n\t\t},\n\t\tregisterTool(tool: ToolDefinition): void {\n\t\t\truntime.assertActive();\n\t\t\textension.tools.set(tool.name, { definition: tool, sourceInfo: extension.sourceInfo });\n\t\t\truntime.refreshTools();\n\t\t},\n\t\tregisterCommand(name: string, options: Omit<RegisteredCommand, \"name\" | \"sourceInfo\">): void {\n\t\t\truntime.assertActive();\n\t\t\textension.commands.set(name, { name, sourceInfo: extension.sourceInfo, ...options });\n\t\t},\n\t\tregisterShortcut(\n\t\t\tshortcut: KeyId,\n\t\t\toptions: {\n\t\t\t\tdescription?: string;\n\t\t\t\thandler: (ctx: ExtensionContext) => Promise<void> | void;\n\t\t\t},\n\t\t): void {\n\t\t\truntime.assertActive();\n\t\t\textension.shortcuts.set(shortcut, { shortcut, extensionPath: extension.path, ...options });\n\t\t},\n\t\tregisterFlag(\n\t\t\tname: string,\n\t\t\toptions: { description?: string; type: \"boolean\" | \"string\"; default?: boolean | string },\n\t\t): void {\n\t\t\truntime.assertActive();\n\t\t\textension.flags.set(name, { name, extensionPath: extension.path, ...options });\n\t\t\tif (options.default !== undefined && !runtime.flagValues.has(name))\n\t\t\t\truntime.flagValues.set(name, options.default);\n\t\t},\n\t\tregisterMessageRenderer<T>(customType: string, renderer: MessageRenderer<T>): void {\n\t\t\truntime.assertActive();\n\t\t\textension.messageRenderers.set(customType, renderer as MessageRenderer);\n\t\t},\n\t\tgetFlag(name: string) {\n\t\t\truntime.assertActive();\n\t\t\treturn extension.flags.has(name) ? runtime.flagValues.get(name) : undefined;\n\t\t},\n\t\tsendMessage(message, options): void {\n\t\t\truntime.assertActive();\n\t\t\truntime.sendMessage(message, options);\n\t\t},\n\t\tsendUserMessage(content, options): void {\n\t\t\truntime.assertActive();\n\t\t\truntime.sendUserMessage(content, options);\n\t\t},\n\t\tappendEntry(customType, data): void {\n\t\t\truntime.assertActive();\n\t\t\truntime.appendEntry(customType, data);\n\t\t},\n\t\tsetSessionName(name): void {\n\t\t\truntime.assertActive();\n\t\t\truntime.setSessionName(name);\n\t\t},\n\t\tgetSessionName() {\n\t\t\truntime.assertActive();\n\t\t\treturn runtime.getSessionName();\n\t\t},\n\t\tsetLabel(entryId, label): void {\n\t\t\truntime.assertActive();\n\t\t\truntime.setLabel(entryId, label);\n\t\t},\n\t\texec(command: string, args: string[], options?: ExecOptions) {\n\t\t\truntime.assertActive();\n\t\t\treturn execCommand(command, args, options?.cwd ?? cwd, options);\n\t\t},\n\t\tgetActiveTools() {\n\t\t\truntime.assertActive();\n\t\t\treturn runtime.getActiveTools();\n\t\t},\n\t\tgetAllTools() {\n\t\t\truntime.assertActive();\n\t\t\treturn runtime.getAllTools();\n\t\t},\n\t\tsetActiveTools(toolNames): void {\n\t\t\truntime.assertActive();\n\t\t\truntime.setActiveTools(toolNames);\n\t\t},\n\t\tgetCommands() {\n\t\t\truntime.assertActive();\n\t\t\treturn runtime.getCommands();\n\t\t},\n\t\tgetExternalResourceRoots() {\n\t\t\truntime.assertActive();\n\t\t\treturn runtime.getExternalResourceRoots();\n\t\t},\n\t\tgetEffectiveResourceProfile() {\n\t\t\truntime.assertActive();\n\t\t\treturn runtime.getEffectiveResourceProfile();\n\t\t},\n\t\tregisterMemoryProvider(provider): void {\n\t\t\truntime.assertActive();\n\t\t\truntime.registerMemoryProvider(provider);\n\t\t\tconst providers = runtime.memoryProvidersByExtension.get(extension.path) ?? new Set();\n\t\t\tproviders.add(provider);\n\t\t\truntime.memoryProvidersByExtension.set(extension.path, providers);\n\t\t},\n\t\tregisterContextMemoryProvider(provider): void {\n\t\t\truntime.assertActive();\n\t\t\truntime.registerContextMemoryProvider(provider);\n\t\t\tconst providers = runtime.contextMemoryProvidersByExtension.get(extension.path) ?? new Set();\n\t\t\tproviders.add(provider);\n\t\t\truntime.contextMemoryProvidersByExtension.set(extension.path, providers);\n\t\t},\n\t\treportSpawnedUsage(usage, options): void {\n\t\t\truntime.assertActive();\n\t\t\truntime.reportSpawnedUsage(usage, options);\n\t\t},\n\t\treportManagedLane(event): void {\n\t\t\truntime.assertActive();\n\t\t\truntime.reportManagedLane(event);\n\t\t},\n\t\tsetModel(model) {\n\t\t\truntime.assertActive();\n\t\t\treturn runtime.setModel(model);\n\t\t},\n\t\tgetThinkingLevel() {\n\t\t\truntime.assertActive();\n\t\t\treturn runtime.getThinkingLevel();\n\t\t},\n\t\tsetThinkingLevel(level): void {\n\t\t\truntime.assertActive();\n\t\t\truntime.setThinkingLevel(level);\n\t\t},\n\t\tregisterProvider(name, config): void {\n\t\t\truntime.assertActive();\n\t\t\truntime.registerProvider(name, config, extension.path);\n\t\t},\n\t\tunregisterProvider(name): void {\n\t\t\truntime.assertActive();\n\t\t\truntime.unregisterProvider(name, extension.path);\n\t\t},\n\t\tonDispose(disposer): void {\n\t\t\truntime.assertActive();\n\t\t\textension.disposers.push(disposer);\n\t\t},\n\t\tevents: {\n\t\t\temit: (channel, data) => {\n\t\t\t\truntime.assertActive();\n\t\t\t\teventBus.emit(channel, data);\n\t\t\t},\n\t\t\ton: (channel, handler) => {\n\t\t\t\truntime.assertActive();\n\t\t\t\tconst unsubscribe = eventBus.on(channel, handler);\n\t\t\t\textension.eventUnsubscribes.push(unsubscribe);\n\t\t\t\treturn unsubscribe;\n\t\t\t},\n\t\t},\n\t} as ExtensionAPI;\n}\n\nexport async function runExtensionFactory(\n\tfactory: ExtensionFactory,\n\tapi: ExtensionAPI,\n\ttimeoutMs: number = EXTENSION_FACTORY_TIMEOUT_MS,\n): Promise<void> {\n\tlet timeout: ReturnType<typeof setTimeout> | undefined;\n\tconst completion = Promise.resolve().then(() => factory(api));\n\ttry {\n\t\tawait Promise.race([\n\t\t\tcompletion,\n\t\t\tnew Promise<never>((_resolve, reject) => {\n\t\t\t\ttimeout = setTimeout(\n\t\t\t\t\t() => reject(new ExtensionFactoryTimeoutError(`Extension factory timed out after ${timeoutMs}ms`)),\n\t\t\t\t\tMath.max(0, timeoutMs),\n\t\t\t\t);\n\t\t\t}),\n\t\t]);\n\t} finally {\n\t\tif (timeout) clearTimeout(timeout);\n\t}\n}\n\nexport interface ExtensionLoadRuntimeSnapshot {\n\tpendingProviderRegistrations: ExtensionRuntime[\"pendingProviderRegistrations\"];\n\tflagValues: Map<string, boolean | string>;\n\tproviderRegistrations: ExtensionRuntime[\"providerRegistrations\"];\n}\n\nexport function snapshotExtensionLoadRuntime(runtime: ExtensionRuntime): ExtensionLoadRuntimeSnapshot {\n\treturn {\n\t\tpendingProviderRegistrations: [...runtime.pendingProviderRegistrations],\n\t\tflagValues: new Map(runtime.flagValues),\n\t\tproviderRegistrations: new Map(runtime.providerRegistrations),\n\t};\n}\n\nexport function restoreExtensionLoadRuntime(runtime: ExtensionRuntime, snapshot: ExtensionLoadRuntimeSnapshot): void {\n\tfor (const [name, current] of runtime.providerRegistrations) {\n\t\tconst previous = snapshot.providerRegistrations.get(name);\n\t\tif (!previous || previous.config !== current.config || previous.extensionPath !== current.extensionPath) {\n\t\t\ttry {\n\t\t\t\truntime.unregisterProvider(name, current.extensionPath);\n\t\t\t} catch {}\n\t\t}\n\t}\n\tfor (const [name, previous] of snapshot.providerRegistrations) {\n\t\tconst current = runtime.providerRegistrations.get(name);\n\t\tif (current?.config === previous.config && current.extensionPath === previous.extensionPath) continue;\n\t\ttry {\n\t\t\truntime.registerProvider(name, previous.config, previous.extensionPath);\n\t\t} catch {}\n\t}\n\truntime.pendingProviderRegistrations = snapshot.pendingProviderRegistrations;\n\truntime.flagValues.clear();\n\tfor (const [name, value] of snapshot.flagValues) runtime.flagValues.set(name, value);\n}\n\nexport async function loadExtensionFromFactory(\n\tfactory: ExtensionFactory,\n\tcwd: string,\n\teventBus: EventBus,\n\truntime: ExtensionRuntime,\n\textensionPath = \"<inline>\",\n\toptions: { factoryTimeoutMs?: number; agentDir?: string } = {},\n): Promise<Extension> {\n\tconst extension = createExtension(extensionPath, extensionPath);\n\tconst resolvedCwd = resolvePath(cwd);\n\tconst resolvedAgentDir = resolvePath(options.agentDir ?? getAgentDir());\n\tconst api = createExtensionAPI(extension, runtime, resolvedCwd, eventBus, resolvedAgentDir);\n\tconst runtimeSnapshot = snapshotExtensionLoadRuntime(runtime);\n\ttry {\n\t\tawait runExtensionFactory(factory, api, options.factoryTimeoutMs);\n\t} catch (error) {\n\t\tawait disposeExtensionEventSubscriptions([extension]);\n\t\trestoreExtensionLoadRuntime(runtime, runtimeSnapshot);\n\t\tthrow error;\n\t}\n\treturn extension;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/runner.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -159,6 +159,7 @@ export class ExtensionRunner {
|
|
|
159
159
|
this.runtime.getThinkingLevel = actions.getThinkingLevel;
|
|
160
160
|
this.runtime.setThinkingLevel = actions.setThinkingLevel;
|
|
161
161
|
this.runtime.getExternalResourceRoots = actions.getExternalResourceRoots;
|
|
162
|
+
this.runtime.getEffectiveResourceProfile = actions.getEffectiveResourceProfile;
|
|
162
163
|
this.runtime.registerMemoryProvider = actions.registerMemoryProvider;
|
|
163
164
|
this.runtime.registerContextMemoryProvider = actions.registerContextMemoryProvider;
|
|
164
165
|
this.runtime.reportSpawnedUsage = actions.reportSpawnedUsage;
|