@caupulican/pi-adaptative 0.81.39 → 0.81.41
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 +77 -0
- package/README.md +2 -0
- package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.d.ts +2 -0
- package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.d.ts.map +1 -1
- package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.js +3 -0
- package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.js.map +1 -1
- package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.ts +4 -0
- package/dist/bundled-resources/extensions/tmux-agent-manager/index.d.ts +9 -0
- package/dist/bundled-resources/extensions/tmux-agent-manager/index.d.ts.map +1 -1
- package/dist/bundled-resources/extensions/tmux-agent-manager/index.js +290 -107
- package/dist/bundled-resources/extensions/tmux-agent-manager/index.js.map +1 -1
- package/dist/bundled-resources/extensions/tmux-agent-manager/index.ts +357 -122
- package/dist/bundled-resources/skills/tool-call-repair/references/repair-catalogue.md +2 -2
- package/dist/cli/args.d.ts +4 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +31 -1
- package/dist/cli/args.js.map +1 -1
- package/dist/core/agent-directory-layout.d.ts +15 -0
- package/dist/core/agent-directory-layout.d.ts.map +1 -0
- package/dist/core/agent-directory-layout.js +72 -0
- package/dist/core/agent-directory-layout.js.map +1 -0
- package/dist/core/agent-paths.d.ts +25 -2
- package/dist/core/agent-paths.d.ts.map +1 -1
- package/dist/core/agent-paths.js +79 -4
- package/dist/core/agent-paths.js.map +1 -1
- package/dist/core/agent-session-contracts.d.ts +293 -0
- package/dist/core/agent-session-contracts.d.ts.map +1 -0
- package/dist/core/agent-session-contracts.js +26 -0
- package/dist/core/agent-session-contracts.js.map +1 -0
- package/dist/core/agent-session-runtime.d.ts +52 -8
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +400 -79
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session-services.d.ts +1 -0
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +1 -0
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session.d.ts +74 -518
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +370 -1432
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +3 -1
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/autonomy/approval-gate.d.ts +3 -2
- package/dist/core/autonomy/approval-gate.d.ts.map +1 -1
- package/dist/core/autonomy/approval-gate.js +6 -28
- package/dist/core/autonomy/approval-gate.js.map +1 -1
- package/dist/core/autonomy/bounded-completion.d.ts +1 -1
- package/dist/core/autonomy/bounded-completion.d.ts.map +1 -1
- package/dist/core/autonomy/bounded-completion.js +1 -1
- package/dist/core/autonomy/bounded-completion.js.map +1 -1
- package/dist/core/autonomy/contracts.d.ts +20 -12
- package/dist/core/autonomy/contracts.d.ts.map +1 -1
- package/dist/core/autonomy/contracts.js.map +1 -1
- package/dist/core/autonomy/foreground-envelope.d.ts +8 -2
- package/dist/core/autonomy/foreground-envelope.d.ts.map +1 -1
- package/dist/core/autonomy/foreground-envelope.js +8 -25
- package/dist/core/autonomy/foreground-envelope.js.map +1 -1
- package/dist/core/autonomy/gates.d.ts.map +1 -1
- package/dist/core/autonomy/gates.js +8 -10
- package/dist/core/autonomy/gates.js.map +1 -1
- package/dist/core/autonomy/lane-private-paths.d.ts +2 -0
- package/dist/core/autonomy/lane-private-paths.d.ts.map +1 -0
- package/dist/core/autonomy/lane-private-paths.js +16 -0
- package/dist/core/autonomy/lane-private-paths.js.map +1 -0
- package/dist/core/autonomy/lane-tool-surface.d.ts +10 -0
- package/dist/core/autonomy/lane-tool-surface.d.ts.map +1 -1
- package/dist/core/autonomy/lane-tool-surface.js +48 -9
- package/dist/core/autonomy/lane-tool-surface.js.map +1 -1
- package/dist/core/autonomy/lane-tracker.d.ts +14 -0
- package/dist/core/autonomy/lane-tracker.d.ts.map +1 -1
- package/dist/core/autonomy/lane-tracker.js +38 -0
- package/dist/core/autonomy/lane-tracker.js.map +1 -1
- package/dist/core/autonomy/risk-assessment.d.ts +1 -2
- package/dist/core/autonomy/risk-assessment.d.ts.map +1 -1
- package/dist/core/autonomy/risk-assessment.js +1 -123
- package/dist/core/autonomy/risk-assessment.js.map +1 -1
- package/dist/core/autonomy/session-lane-record.d.ts +4 -4
- package/dist/core/autonomy/session-lane-record.d.ts.map +1 -1
- package/dist/core/autonomy/session-lane-record.js +16 -29
- package/dist/core/autonomy/session-lane-record.js.map +1 -1
- package/dist/core/autonomy/telemetry-events.d.ts +1 -1
- package/dist/core/autonomy/telemetry-events.d.ts.map +1 -1
- package/dist/core/autonomy/telemetry-events.js +1 -1
- package/dist/core/autonomy/telemetry-events.js.map +1 -1
- package/dist/core/autonomy-telemetry.d.ts +7 -7
- package/dist/core/autonomy-telemetry.d.ts.map +1 -1
- package/dist/core/autonomy-telemetry.js +9 -9
- package/dist/core/autonomy-telemetry.js.map +1 -1
- package/dist/core/background-lane-controller.d.ts +56 -236
- package/dist/core/background-lane-controller.d.ts.map +1 -1
- package/dist/core/background-lane-controller.js +141 -1273
- package/dist/core/background-lane-controller.js.map +1 -1
- package/dist/core/bedrock-sso-login.d.ts +16 -0
- package/dist/core/bedrock-sso-login.d.ts.map +1 -0
- package/dist/core/bedrock-sso-login.js +98 -0
- package/dist/core/bedrock-sso-login.js.map +1 -0
- package/dist/core/capability-contract.d.ts +4 -0
- package/dist/core/capability-contract.d.ts.map +1 -0
- package/dist/core/capability-contract.js +28 -0
- package/dist/core/capability-contract.js.map +1 -0
- package/dist/core/compaction-controller.d.ts +90 -0
- package/dist/core/compaction-controller.d.ts.map +1 -0
- package/dist/core/compaction-controller.js +452 -0
- package/dist/core/compaction-controller.js.map +1 -0
- package/dist/core/compaction-support.d.ts +13 -17
- package/dist/core/compaction-support.d.ts.map +1 -1
- package/dist/core/compaction-support.js +3 -3
- package/dist/core/compaction-support.js.map +1 -1
- package/dist/core/context/context-artifacts.d.ts +6 -2
- package/dist/core/context/context-artifacts.d.ts.map +1 -1
- package/dist/core/context/context-artifacts.js +34 -2
- package/dist/core/context/context-artifacts.js.map +1 -1
- package/dist/core/context/context-store-retention.d.ts +8 -2
- package/dist/core/context/context-store-retention.d.ts.map +1 -1
- package/dist/core/context/context-store-retention.js +158 -35
- package/dist/core/context/context-store-retention.js.map +1 -1
- package/dist/core/context/okf-memory.d.ts.map +1 -1
- package/dist/core/context/okf-memory.js +9 -11
- package/dist/core/context/okf-memory.js.map +1 -1
- package/dist/core/context/sqlite-runtime-index.d.ts.map +1 -1
- package/dist/core/context/sqlite-runtime-index.js +6 -8
- package/dist/core/context/sqlite-runtime-index.js.map +1 -1
- package/dist/core/context-gc.d.ts +3 -0
- package/dist/core/context-gc.d.ts.map +1 -1
- package/dist/core/context-gc.js +10 -5
- package/dist/core/context-gc.js.map +1 -1
- package/dist/core/context-pipeline.d.ts +1 -1
- package/dist/core/context-pipeline.d.ts.map +1 -1
- package/dist/core/context-pipeline.js +16 -37
- package/dist/core/context-pipeline.js.map +1 -1
- package/dist/core/cost/cost-summary.d.ts.map +1 -1
- package/dist/core/cost/cost-summary.js +5 -3
- package/dist/core/cost/cost-summary.js.map +1 -1
- package/dist/core/cost/daily-usage.d.ts.map +1 -1
- package/dist/core/cost/daily-usage.js +4 -5
- package/dist/core/cost/daily-usage.js.map +1 -1
- package/dist/core/default-tool-surface.d.ts.map +1 -1
- package/dist/core/default-tool-surface.js +2 -0
- package/dist/core/default-tool-surface.js.map +1 -1
- package/dist/core/delegation/managed-lane-controller.d.ts +34 -0
- package/dist/core/delegation/managed-lane-controller.d.ts.map +1 -0
- package/dist/core/delegation/managed-lane-controller.js +217 -0
- package/dist/core/delegation/managed-lane-controller.js.map +1 -0
- package/dist/core/delegation/session-worker-claim.d.ts +44 -0
- package/dist/core/delegation/session-worker-claim.d.ts.map +1 -0
- package/dist/core/delegation/session-worker-claim.js +98 -0
- package/dist/core/delegation/session-worker-claim.js.map +1 -0
- package/dist/core/delegation/worker-actions.d.ts +7 -5
- package/dist/core/delegation/worker-actions.d.ts.map +1 -1
- package/dist/core/delegation/worker-actions.js +20 -4
- package/dist/core/delegation/worker-actions.js.map +1 -1
- package/dist/core/delegation/{worker-result.d.ts → worker-claim.d.ts} +13 -13
- package/dist/core/delegation/worker-claim.d.ts.map +1 -0
- package/dist/core/delegation/{worker-result.js → worker-claim.js} +61 -51
- package/dist/core/delegation/worker-claim.js.map +1 -0
- package/dist/core/delegation/worker-delegation-controller.d.ts +110 -0
- package/dist/core/delegation/worker-delegation-controller.d.ts.map +1 -0
- package/dist/core/delegation/worker-delegation-controller.js +861 -0
- package/dist/core/delegation/worker-delegation-controller.js.map +1 -0
- package/dist/core/delegation/worker-delegation-request.d.ts +11 -0
- package/dist/core/delegation/worker-delegation-request.d.ts.map +1 -0
- package/dist/core/delegation/worker-delegation-request.js +2 -0
- package/dist/core/delegation/worker-delegation-request.js.map +1 -0
- package/dist/core/delegation/worker-dispatch-scheduler.d.ts +40 -0
- package/dist/core/delegation/worker-dispatch-scheduler.d.ts.map +1 -0
- package/dist/core/delegation/worker-dispatch-scheduler.js +93 -0
- package/dist/core/delegation/worker-dispatch-scheduler.js.map +1 -0
- package/dist/core/delegation/worker-execution-policy.d.ts +62 -0
- package/dist/core/delegation/worker-execution-policy.d.ts.map +1 -0
- package/dist/core/delegation/worker-execution-policy.js +160 -0
- package/dist/core/delegation/worker-execution-policy.js.map +1 -0
- package/dist/core/delegation/worker-lane-projection.d.ts +14 -0
- package/dist/core/delegation/worker-lane-projection.d.ts.map +1 -0
- package/dist/core/delegation/worker-lane-projection.js +100 -0
- package/dist/core/delegation/worker-lane-projection.js.map +1 -0
- package/dist/core/delegation/worker-lifecycle.d.ts +97 -0
- package/dist/core/delegation/worker-lifecycle.d.ts.map +1 -0
- package/dist/core/delegation/worker-lifecycle.js +339 -0
- package/dist/core/delegation/worker-lifecycle.js.map +1 -0
- package/dist/core/delegation/worker-notification-coordinator.d.ts +36 -0
- package/dist/core/delegation/worker-notification-coordinator.d.ts.map +1 -0
- package/dist/core/delegation/worker-notification-coordinator.js +90 -0
- package/dist/core/delegation/worker-notification-coordinator.js.map +1 -0
- package/dist/core/delegation/worker-profile-resolver.d.ts +55 -0
- package/dist/core/delegation/worker-profile-resolver.d.ts.map +1 -0
- package/dist/core/delegation/worker-profile-resolver.js +113 -0
- package/dist/core/delegation/worker-profile-resolver.js.map +1 -0
- package/dist/core/delegation/worker-runner.d.ts +25 -14
- package/dist/core/delegation/worker-runner.d.ts.map +1 -1
- package/dist/core/delegation/worker-runner.js +122 -53
- package/dist/core/delegation/worker-runner.js.map +1 -1
- package/dist/core/delegation/worker-task-label.d.ts +3 -0
- package/dist/core/delegation/worker-task-label.d.ts.map +1 -0
- package/dist/core/delegation/worker-task-label.js +11 -0
- package/dist/core/delegation/worker-task-label.js.map +1 -0
- package/dist/core/doctor.d.ts +8 -0
- package/dist/core/doctor.d.ts.map +1 -1
- package/dist/core/doctor.js +32 -1
- package/dist/core/doctor.js.map +1 -1
- package/dist/core/extension-import-authority.d.ts +6 -0
- package/dist/core/extension-import-authority.d.ts.map +1 -0
- package/dist/core/extension-import-authority.js +10 -0
- package/dist/core/extension-import-authority.js.map +1 -0
- package/dist/core/extensions/index.d.ts +1 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader.d.ts +5 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +52 -18
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +3 -0
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +20 -5
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/stale-context.d.ts +2 -0
- package/dist/core/extensions/stale-context.d.ts.map +1 -0
- package/dist/core/extensions/stale-context.js +2 -0
- package/dist/core/extensions/stale-context.js.map +1 -0
- package/dist/core/extensions/storage.d.ts +8 -0
- package/dist/core/extensions/storage.d.ts.map +1 -0
- package/dist/core/extensions/storage.js +28 -0
- package/dist/core/extensions/storage.js.map +1 -0
- package/dist/core/extensions/types.d.ts +78 -21
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/failure-corpus.d.ts +1 -15
- package/dist/core/failure-corpus.d.ts.map +1 -1
- package/dist/core/failure-corpus.js +9 -37
- package/dist/core/failure-corpus.js.map +1 -1
- package/dist/core/foreground-recovery-controller.d.ts +53 -0
- package/dist/core/foreground-recovery-controller.d.ts.map +1 -0
- package/dist/core/foreground-recovery-controller.js +111 -0
- package/dist/core/foreground-recovery-controller.js.map +1 -0
- package/dist/core/gateways/channel-provider.d.ts +3 -0
- package/dist/core/gateways/channel-provider.d.ts.map +1 -1
- package/dist/core/gateways/channel-provider.js +31 -6
- package/dist/core/gateways/channel-provider.js.map +1 -1
- package/dist/core/goal-loop-controller.d.ts +14 -9
- package/dist/core/goal-loop-controller.d.ts.map +1 -1
- package/dist/core/goal-loop-controller.js +47 -75
- package/dist/core/goal-loop-controller.js.map +1 -1
- package/dist/core/goals/compact-goal-context.d.ts +11 -0
- package/dist/core/goals/compact-goal-context.d.ts.map +1 -0
- package/dist/core/goals/compact-goal-context.js +59 -0
- package/dist/core/goals/compact-goal-context.js.map +1 -0
- package/dist/core/goals/goal-acceptance.d.ts +11 -0
- package/dist/core/goals/goal-acceptance.d.ts.map +1 -0
- package/dist/core/goals/goal-acceptance.js +27 -0
- package/dist/core/goals/goal-acceptance.js.map +1 -0
- package/dist/core/goals/goal-auto-continue-controller.d.ts +28 -0
- package/dist/core/goals/goal-auto-continue-controller.d.ts.map +1 -0
- package/dist/core/goals/goal-auto-continue-controller.js +90 -0
- package/dist/core/goals/goal-auto-continue-controller.js.map +1 -0
- package/dist/core/goals/goal-continuation-controller.d.ts +2 -2
- package/dist/core/goals/goal-continuation-controller.d.ts.map +1 -1
- package/dist/core/goals/goal-continuation-controller.js +52 -11
- package/dist/core/goals/goal-continuation-controller.js.map +1 -1
- package/dist/core/goals/goal-continuation-defaults.d.ts +4 -29
- package/dist/core/goals/goal-continuation-defaults.d.ts.map +1 -1
- package/dist/core/goals/goal-continuation-defaults.js +4 -32
- package/dist/core/goals/goal-continuation-defaults.js.map +1 -1
- package/dist/core/goals/goal-continuation-prompt.d.ts +8 -18
- package/dist/core/goals/goal-continuation-prompt.d.ts.map +1 -1
- package/dist/core/goals/goal-continuation-prompt.js +9 -179
- package/dist/core/goals/goal-continuation-prompt.js.map +1 -1
- package/dist/core/goals/goal-lifecycle.d.ts +43 -0
- package/dist/core/goals/goal-lifecycle.d.ts.map +1 -0
- package/dist/core/goals/goal-lifecycle.js +102 -0
- package/dist/core/goals/goal-lifecycle.js.map +1 -0
- package/dist/core/goals/goal-record.d.ts +17 -0
- package/dist/core/goals/goal-record.d.ts.map +1 -0
- package/dist/core/goals/goal-record.js +31 -0
- package/dist/core/goals/goal-record.js.map +1 -0
- package/dist/core/goals/goal-runtime-snapshot.d.ts +11 -9
- package/dist/core/goals/goal-runtime-snapshot.d.ts.map +1 -1
- package/dist/core/goals/goal-runtime-snapshot.js +10 -8
- package/dist/core/goals/goal-runtime-snapshot.js.map +1 -1
- package/dist/core/goals/goal-session-controller.d.ts +42 -0
- package/dist/core/goals/goal-session-controller.d.ts.map +1 -0
- package/dist/core/goals/goal-session-controller.js +128 -0
- package/dist/core/goals/goal-session-controller.js.map +1 -0
- package/dist/core/goals/goal-state.d.ts +46 -25
- package/dist/core/goals/goal-state.d.ts.map +1 -1
- package/dist/core/goals/goal-state.js +91 -24
- package/dist/core/goals/goal-state.js.map +1 -1
- package/dist/core/goals/goal-tool-core.d.ts +9 -10
- package/dist/core/goals/goal-tool-core.d.ts.map +1 -1
- package/dist/core/goals/goal-tool-core.js +60 -75
- package/dist/core/goals/goal-tool-core.js.map +1 -1
- package/dist/core/goals/session-goal-state.d.ts +20 -12
- package/dist/core/goals/session-goal-state.d.ts.map +1 -1
- package/dist/core/goals/session-goal-state.js +133 -33
- package/dist/core/goals/session-goal-state.js.map +1 -1
- package/dist/core/human-input-controller.d.ts +47 -0
- package/dist/core/human-input-controller.d.ts.map +1 -0
- package/dist/core/human-input-controller.js +181 -0
- package/dist/core/human-input-controller.js.map +1 -0
- package/dist/core/human-input.d.ts +100 -0
- package/dist/core/human-input.d.ts.map +1 -0
- package/dist/core/human-input.js +362 -0
- package/dist/core/human-input.js.map +1 -0
- package/dist/core/index.d.ts +9 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +9 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/{telemetry.d.ts → install-telemetry.d.ts} +1 -1
- package/dist/core/install-telemetry.d.ts.map +1 -0
- package/dist/core/{telemetry.js → install-telemetry.js} +1 -1
- package/dist/core/install-telemetry.js.map +1 -0
- package/dist/core/keybindings.d.ts +17 -1
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +24 -6
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/learning/learning-audit.d.ts +2 -4
- package/dist/core/learning/learning-audit.d.ts.map +1 -1
- package/dist/core/learning/learning-audit.js +9 -29
- package/dist/core/learning/learning-audit.js.map +1 -1
- package/dist/core/learning/learning-gate.d.ts.map +1 -1
- package/dist/core/learning/learning-gate.js +1 -6
- package/dist/core/learning/learning-gate.js.map +1 -1
- package/dist/core/learning/session-learning-decision.d.ts +2 -4
- package/dist/core/learning/session-learning-decision.d.ts.map +1 -1
- package/dist/core/learning/session-learning-decision.js +9 -29
- package/dist/core/learning/session-learning-decision.js.map +1 -1
- package/dist/core/local-runtime-controller.d.ts +1 -1
- package/dist/core/local-runtime-controller.d.ts.map +1 -1
- package/dist/core/local-runtime-controller.js.map +1 -1
- package/dist/core/memory-controller.d.ts.map +1 -1
- package/dist/core/memory-controller.js +4 -4
- package/dist/core/memory-controller.js.map +1 -1
- package/dist/core/model-capability.d.ts +0 -19
- package/dist/core/model-capability.d.ts.map +1 -1
- package/dist/core/model-capability.js +1 -19
- package/dist/core/model-capability.js.map +1 -1
- package/dist/core/model-registry.d.ts +6 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +13 -5
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver.d.ts +17 -2
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +38 -25
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/model-router/intent-classifier.d.ts +1 -4
- package/dist/core/model-router/intent-classifier.d.ts.map +1 -1
- package/dist/core/model-router/intent-classifier.js +1 -156
- package/dist/core/model-router/intent-classifier.js.map +1 -1
- package/dist/core/model-router-controller.d.ts +1 -1
- package/dist/core/model-router-controller.d.ts.map +1 -1
- package/dist/core/model-router-controller.js +2 -2
- package/dist/core/model-router-controller.js.map +1 -1
- package/dist/core/model-selection-controller.d.ts +5 -5
- package/dist/core/model-selection-controller.d.ts.map +1 -1
- package/dist/core/model-selection-controller.js.map +1 -1
- package/dist/core/model-tool-protocol.d.ts +23 -0
- package/dist/core/model-tool-protocol.d.ts.map +1 -0
- package/dist/core/model-tool-protocol.js +43 -0
- package/dist/core/model-tool-protocol.js.map +1 -0
- package/dist/core/models/adaptation-store.d.ts +4 -6
- package/dist/core/models/adaptation-store.d.ts.map +1 -1
- package/dist/core/models/adaptation-store.js +95 -83
- package/dist/core/models/adaptation-store.js.map +1 -1
- package/dist/core/models/fitness-store.d.ts +2 -12
- package/dist/core/models/fitness-store.d.ts.map +1 -1
- package/dist/core/models/fitness-store.js +84 -57
- package/dist/core/models/fitness-store.js.map +1 -1
- package/dist/core/models/host-state-store.d.ts +34 -0
- package/dist/core/models/host-state-store.d.ts.map +1 -0
- package/dist/core/models/host-state-store.js +86 -0
- package/dist/core/models/host-state-store.js.map +1 -0
- package/dist/core/orchestration/agent-resume.d.ts +24 -0
- package/dist/core/orchestration/agent-resume.d.ts.map +1 -0
- package/dist/core/orchestration/agent-resume.js +90 -0
- package/dist/core/orchestration/agent-resume.js.map +1 -0
- package/dist/core/orchestration/capability-gateway.d.ts +61 -0
- package/dist/core/orchestration/capability-gateway.d.ts.map +1 -0
- package/dist/core/orchestration/capability-gateway.js +152 -0
- package/dist/core/orchestration/capability-gateway.js.map +1 -0
- package/dist/core/orchestration/contracts.d.ts +343 -0
- package/dist/core/orchestration/contracts.d.ts.map +1 -0
- package/dist/core/orchestration/contracts.js +135 -0
- package/dist/core/orchestration/contracts.js.map +1 -0
- package/dist/core/orchestration/delegation-ledger.d.ts +56 -0
- package/dist/core/orchestration/delegation-ledger.d.ts.map +1 -0
- package/dist/core/orchestration/delegation-ledger.js +200 -0
- package/dist/core/orchestration/delegation-ledger.js.map +1 -0
- package/dist/core/orchestration/event-store.d.ts +83 -0
- package/dist/core/orchestration/event-store.d.ts.map +1 -0
- package/dist/core/orchestration/event-store.js +560 -0
- package/dist/core/orchestration/event-store.js.map +1 -0
- package/dist/core/orchestration/lane-tool-manifests.d.ts +9 -0
- package/dist/core/orchestration/lane-tool-manifests.d.ts.map +1 -0
- package/dist/core/orchestration/lane-tool-manifests.js +37 -0
- package/dist/core/orchestration/lane-tool-manifests.js.map +1 -0
- package/dist/core/orchestration/model-binding.d.ts +15 -0
- package/dist/core/orchestration/model-binding.d.ts.map +1 -0
- package/dist/core/orchestration/model-binding.js +29 -0
- package/dist/core/orchestration/model-binding.js.map +1 -0
- package/dist/core/orchestration/policy-compiler.d.ts +49 -0
- package/dist/core/orchestration/policy-compiler.d.ts.map +1 -0
- package/dist/core/orchestration/policy-compiler.js +191 -0
- package/dist/core/orchestration/policy-compiler.js.map +1 -0
- package/dist/core/orchestration/policy-gate.d.ts +18 -0
- package/dist/core/orchestration/policy-gate.d.ts.map +1 -0
- package/dist/core/orchestration/policy-gate.js +24 -0
- package/dist/core/orchestration/policy-gate.js.map +1 -0
- package/dist/core/orchestration/profile-registry.d.ts +51 -0
- package/dist/core/orchestration/profile-registry.d.ts.map +1 -0
- package/dist/core/orchestration/profile-registry.js +393 -0
- package/dist/core/orchestration/profile-registry.js.map +1 -0
- package/dist/core/orchestration/profile-store.d.ts +31 -0
- package/dist/core/orchestration/profile-store.d.ts.map +1 -0
- package/dist/core/orchestration/profile-store.js +136 -0
- package/dist/core/orchestration/profile-store.js.map +1 -0
- package/dist/core/orchestration/risk-budget.d.ts +9 -0
- package/dist/core/orchestration/risk-budget.d.ts.map +1 -0
- package/dist/core/orchestration/risk-budget.js +48 -0
- package/dist/core/orchestration/risk-budget.js.map +1 -0
- package/dist/core/orchestration/task-runtime.d.ts +168 -0
- package/dist/core/orchestration/task-runtime.d.ts.map +1 -0
- package/dist/core/orchestration/task-runtime.js +1600 -0
- package/dist/core/orchestration/task-runtime.js.map +1 -0
- package/dist/core/orchestration/work-state-projection.d.ts +32 -0
- package/dist/core/orchestration/work-state-projection.d.ts.map +1 -0
- package/dist/core/orchestration/work-state-projection.js +116 -0
- package/dist/core/orchestration/work-state-projection.js.map +1 -0
- package/dist/core/orchestration/worker-execution-contract.d.ts +21 -0
- package/dist/core/orchestration/worker-execution-contract.d.ts.map +1 -0
- package/dist/core/orchestration/worker-execution-contract.js +179 -0
- package/dist/core/orchestration/worker-execution-contract.js.map +1 -0
- package/dist/core/orchestration/worker-result-adapter.d.ts +21 -0
- package/dist/core/orchestration/worker-result-adapter.d.ts.map +1 -0
- package/dist/core/orchestration/worker-result-adapter.js +109 -0
- package/dist/core/orchestration/worker-result-adapter.js.map +1 -0
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +20 -3
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/process-identity.d.ts +11 -0
- package/dist/core/process-identity.d.ts.map +1 -0
- package/dist/core/process-identity.js +26 -0
- package/dist/core/process-identity.js.map +1 -0
- package/dist/core/process-matrix/codes.d.ts +14 -3
- package/dist/core/process-matrix/codes.d.ts.map +1 -1
- package/dist/core/process-matrix/codes.js.map +1 -1
- package/dist/core/process-matrix/resume-launcher.d.ts +26 -0
- package/dist/core/process-matrix/resume-launcher.d.ts.map +1 -0
- package/dist/core/process-matrix/resume-launcher.js +62 -0
- package/dist/core/process-matrix/resume-launcher.js.map +1 -0
- package/dist/core/process-matrix/runtime.d.ts +37 -22
- package/dist/core/process-matrix/runtime.d.ts.map +1 -1
- package/dist/core/process-matrix/runtime.js +399 -76
- package/dist/core/process-matrix/runtime.js.map +1 -1
- package/dist/core/process-matrix/store.d.ts +5 -2
- package/dist/core/process-matrix/store.d.ts.map +1 -1
- package/dist/core/process-matrix/store.js +123 -14
- package/dist/core/process-matrix/store.js.map +1 -1
- package/dist/core/process-matrix/supervisor.d.ts +10 -7
- package/dist/core/process-matrix/supervisor.d.ts.map +1 -1
- package/dist/core/process-matrix/supervisor.js +45 -14
- package/dist/core/process-matrix/supervisor.js.map +1 -1
- package/dist/core/profile-filter-controller.d.ts +8 -1
- package/dist/core/profile-filter-controller.d.ts.map +1 -1
- package/dist/core/profile-filter-controller.js +23 -5
- package/dist/core/profile-filter-controller.js.map +1 -1
- package/dist/core/profile-registry.d.ts.map +1 -1
- package/dist/core/profile-registry.js +6 -8
- package/dist/core/profile-registry.js.map +1 -1
- package/dist/core/prompt-templates.d.ts +1 -0
- package/dist/core/prompt-templates.d.ts.map +1 -1
- package/dist/core/prompt-templates.js +18 -29
- package/dist/core/prompt-templates.js.map +1 -1
- package/dist/core/reflection-controller.d.ts +5 -5
- package/dist/core/reflection-controller.d.ts.map +1 -1
- package/dist/core/reflection-controller.js +5 -2
- package/dist/core/reflection-controller.js.map +1 -1
- package/dist/core/reload-blockers.d.ts.map +1 -1
- package/dist/core/reload-blockers.js +6 -8
- package/dist/core/reload-blockers.js.map +1 -1
- package/dist/core/request-auth.d.ts +7 -0
- package/dist/core/request-auth.d.ts.map +1 -0
- package/dist/core/request-auth.js +8 -0
- package/dist/core/request-auth.js.map +1 -0
- package/dist/core/research/evidence-bundle.d.ts.map +1 -1
- package/dist/core/research/evidence-bundle.js +1 -6
- package/dist/core/research/evidence-bundle.js.map +1 -1
- package/dist/core/research/lane-model-resolver.d.ts +33 -0
- package/dist/core/research/lane-model-resolver.d.ts.map +1 -0
- package/dist/core/research/lane-model-resolver.js +65 -0
- package/dist/core/research/lane-model-resolver.js.map +1 -0
- package/dist/core/research/model-fitness-controller.d.ts +38 -0
- package/dist/core/research/model-fitness-controller.d.ts.map +1 -0
- package/dist/core/research/model-fitness-controller.js +106 -0
- package/dist/core/research/model-fitness-controller.js.map +1 -0
- package/dist/core/research/model-fitness.d.ts +1 -1
- package/dist/core/research/model-fitness.d.ts.map +1 -1
- package/dist/core/research/model-fitness.js +4 -4
- package/dist/core/research/model-fitness.js.map +1 -1
- package/dist/core/research/research-gate.d.ts.map +1 -1
- package/dist/core/research/research-gate.js +7 -7
- package/dist/core/research/research-gate.js.map +1 -1
- package/dist/core/research/research-lane-controller.d.ts +62 -0
- package/dist/core/research/research-lane-controller.d.ts.map +1 -0
- package/dist/core/research/research-lane-controller.js +292 -0
- package/dist/core/research/research-lane-controller.js.map +1 -0
- package/dist/core/research/session-evidence-bundle.d.ts +2 -4
- package/dist/core/research/session-evidence-bundle.d.ts.map +1 -1
- package/dist/core/research/session-evidence-bundle.js +10 -46
- package/dist/core/research/session-evidence-bundle.js.map +1 -1
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +23 -8
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/risk-classifier.d.ts +6 -0
- package/dist/core/risk-classifier.d.ts.map +1 -0
- package/dist/core/risk-classifier.js +233 -0
- package/dist/core/risk-classifier.js.map +1 -0
- package/dist/core/runtime-builder.d.ts +41 -23
- package/dist/core/runtime-builder.d.ts.map +1 -1
- package/dist/core/runtime-builder.js +365 -253
- package/dist/core/runtime-builder.js.map +1 -1
- package/dist/core/sdk.d.ts +6 -3
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +68 -25
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/secrets/credential-exposure-guard.d.ts +9 -0
- package/dist/core/secrets/credential-exposure-guard.d.ts.map +1 -0
- package/dist/core/secrets/credential-exposure-guard.js +241 -0
- package/dist/core/secrets/credential-exposure-guard.js.map +1 -0
- package/dist/core/secrets/secret-dotenv.d.ts +27 -0
- package/dist/core/secrets/secret-dotenv.d.ts.map +1 -0
- package/dist/core/secrets/secret-dotenv.js +183 -0
- package/dist/core/secrets/secret-dotenv.js.map +1 -0
- package/dist/core/secrets/secret-vault-format.d.ts +112 -0
- package/dist/core/secrets/secret-vault-format.d.ts.map +1 -0
- package/dist/core/secrets/secret-vault-format.js +397 -0
- package/dist/core/secrets/secret-vault-format.js.map +1 -0
- package/dist/core/secrets/secret-vault.d.ts +72 -0
- package/dist/core/secrets/secret-vault.d.ts.map +1 -0
- package/dist/core/secrets/secret-vault.js +671 -0
- package/dist/core/secrets/secret-vault.js.map +1 -0
- package/dist/core/session-analytics.d.ts +4 -23
- package/dist/core/session-analytics.d.ts.map +1 -1
- package/dist/core/session-analytics.js +67 -70
- package/dist/core/session-analytics.js.map +1 -1
- package/dist/core/session-image-store.d.ts +33 -0
- package/dist/core/session-image-store.d.ts.map +1 -0
- package/dist/core/session-image-store.js +283 -0
- package/dist/core/session-image-store.js.map +1 -0
- package/dist/core/session-role.d.ts +11 -4
- package/dist/core/session-role.d.ts.map +1 -1
- package/dist/core/session-role.js +24 -5
- package/dist/core/session-role.js.map +1 -1
- package/dist/core/session-snapshot.d.ts +34 -0
- package/dist/core/session-snapshot.d.ts.map +1 -0
- package/dist/core/session-snapshot.js +68 -0
- package/dist/core/session-snapshot.js.map +1 -0
- package/dist/core/session-supervision-runtime.d.ts +31 -0
- package/dist/core/session-supervision-runtime.d.ts.map +1 -0
- package/dist/core/session-supervision-runtime.js +97 -0
- package/dist/core/session-supervision-runtime.js.map +1 -0
- package/dist/core/session-tree-navigator.d.ts +4 -6
- package/dist/core/session-tree-navigator.d.ts.map +1 -1
- package/dist/core/session-tree-navigator.js +4 -1
- package/dist/core/session-tree-navigator.js.map +1 -1
- package/dist/core/settings-manager.d.ts +10 -5
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +81 -29
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +2 -2
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/tasks/session-task-state.d.ts +2 -4
- package/dist/core/tasks/session-task-state.d.ts.map +1 -1
- package/dist/core/tasks/session-task-state.js +10 -28
- package/dist/core/tasks/session-task-state.js.map +1 -1
- package/dist/core/tasks/task-projection.d.ts +20 -0
- package/dist/core/tasks/task-projection.d.ts.map +1 -0
- package/dist/core/tasks/task-projection.js +47 -0
- package/dist/core/tasks/task-projection.js.map +1 -0
- package/dist/core/tasks/task-state.d.ts +4 -0
- package/dist/core/tasks/task-state.d.ts.map +1 -1
- package/dist/core/tasks/task-state.js +28 -11
- package/dist/core/tasks/task-state.js.map +1 -1
- package/dist/core/tool-capability-policy.d.ts +13 -0
- package/dist/core/tool-capability-policy.d.ts.map +1 -0
- package/dist/core/tool-capability-policy.js +86 -0
- package/dist/core/tool-capability-policy.js.map +1 -0
- package/dist/core/tool-gate-controller.d.ts.map +1 -1
- package/dist/core/tool-gate-controller.js +8 -2
- package/dist/core/tool-gate-controller.js.map +1 -1
- package/dist/core/tool-protocol-controller.d.ts +89 -0
- package/dist/core/tool-protocol-controller.d.ts.map +1 -0
- package/dist/core/tool-protocol-controller.js +512 -0
- package/dist/core/tool-protocol-controller.js.map +1 -0
- package/dist/core/tool-recovery-log-records.d.ts +2 -3
- package/dist/core/tool-recovery-log-records.d.ts.map +1 -1
- package/dist/core/tool-recovery-log-records.js +9 -35
- package/dist/core/tool-recovery-log-records.js.map +1 -1
- package/dist/core/tool-recovery-stats.d.ts +21 -1
- package/dist/core/tool-recovery-stats.d.ts.map +1 -1
- package/dist/core/tool-recovery-stats.js.map +1 -1
- package/dist/core/tool-selection/tool-performance-store.d.ts +3 -7
- package/dist/core/tool-selection/tool-performance-store.d.ts.map +1 -1
- package/dist/core/tool-selection/tool-performance-store.js +97 -138
- package/dist/core/tool-selection/tool-performance-store.js.map +1 -1
- package/dist/core/tools/ask-question.d.ts +124 -0
- package/dist/core/tools/ask-question.d.ts.map +1 -0
- package/dist/core/tools/ask-question.js +693 -0
- package/dist/core/tools/ask-question.js.map +1 -0
- package/dist/core/tools/bash.d.ts +5 -0
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +59 -5
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/delegate-status.d.ts +31 -3
- package/dist/core/tools/delegate-status.d.ts.map +1 -1
- package/dist/core/tools/delegate-status.js +148 -29
- package/dist/core/tools/delegate-status.js.map +1 -1
- package/dist/core/tools/delegate.d.ts +15 -13
- package/dist/core/tools/delegate.d.ts.map +1 -1
- package/dist/core/tools/delegate.js +106 -23
- package/dist/core/tools/delegate.js.map +1 -1
- package/dist/core/tools/extensionify.d.ts.map +1 -1
- package/dist/core/tools/extensionify.js +1 -0
- package/dist/core/tools/extensionify.js.map +1 -1
- package/dist/core/tools/git-filter.d.ts +1 -8
- package/dist/core/tools/git-filter.d.ts.map +1 -1
- package/dist/core/tools/git-filter.js +2 -63
- package/dist/core/tools/git-filter.js.map +1 -1
- package/dist/core/tools/goal.d.ts +10 -8
- package/dist/core/tools/goal.d.ts.map +1 -1
- package/dist/core/tools/goal.js +106 -28
- package/dist/core/tools/goal.js.map +1 -1
- package/dist/core/tools/index.d.ts +1 -0
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +1 -0
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/model-fitness.d.ts.map +1 -1
- package/dist/core/tools/model-fitness.js +2 -2
- package/dist/core/tools/model-fitness.js.map +1 -1
- package/dist/core/tools/orchestration-panel.d.ts +40 -0
- package/dist/core/tools/orchestration-panel.d.ts.map +1 -0
- package/dist/core/tools/orchestration-panel.js +124 -0
- package/dist/core/tools/orchestration-panel.js.map +1 -0
- package/dist/core/tools/output-accumulator.d.ts +11 -0
- package/dist/core/tools/output-accumulator.d.ts.map +1 -1
- package/dist/core/tools/output-accumulator.js +36 -3
- package/dist/core/tools/output-accumulator.js.map +1 -1
- package/dist/core/tools/python.d.ts +2 -0
- package/dist/core/tools/python.d.ts.map +1 -1
- package/dist/core/tools/python.js +3 -1
- package/dist/core/tools/python.js.map +1 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +1 -1
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/run-process.d.ts +26 -0
- package/dist/core/tools/run-process.d.ts.map +1 -0
- package/dist/core/tools/run-process.js +138 -0
- package/dist/core/tools/run-process.js.map +1 -0
- package/dist/core/tools/search-command-guard.d.ts +14 -0
- package/dist/core/tools/search-command-guard.d.ts.map +1 -0
- package/dist/core/tools/search-command-guard.js +333 -0
- package/dist/core/tools/search-command-guard.js.map +1 -0
- package/dist/core/tools/secret-store.d.ts +38 -0
- package/dist/core/tools/secret-store.d.ts.map +1 -0
- package/dist/core/tools/secret-store.js +412 -0
- package/dist/core/tools/secret-store.js.map +1 -0
- package/dist/core/tools/shell-command-parser.d.ts +16 -0
- package/dist/core/tools/shell-command-parser.d.ts.map +1 -0
- package/dist/core/tools/shell-command-parser.js +113 -0
- package/dist/core/tools/shell-command-parser.js.map +1 -0
- package/dist/core/tools/task-steps.d.ts +2 -0
- package/dist/core/tools/task-steps.d.ts.map +1 -1
- package/dist/core/tools/task-steps.js +99 -0
- package/dist/core/tools/task-steps.js.map +1 -1
- package/dist/core/tools/tmux-dispatch.d.ts +3 -5
- package/dist/core/tools/tmux-dispatch.d.ts.map +1 -1
- package/dist/core/tools/tmux-dispatch.js +4 -4
- package/dist/core/tools/tmux-dispatch.js.map +1 -1
- package/dist/core/tools/windows-shell-engine.d.ts.map +1 -1
- package/dist/core/tools/windows-shell-engine.js +4 -6
- package/dist/core/tools/windows-shell-engine.js.map +1 -1
- package/dist/core/util/atomic-file.d.ts +6 -2
- package/dist/core/util/atomic-file.d.ts.map +1 -1
- package/dist/core/util/atomic-file.js +4 -4
- package/dist/core/util/atomic-file.js.map +1 -1
- package/dist/core/util/bounded-jsonl.d.ts +10 -0
- package/dist/core/util/bounded-jsonl.d.ts.map +1 -0
- package/dist/core/util/bounded-jsonl.js +75 -0
- package/dist/core/util/bounded-jsonl.js.map +1 -0
- package/dist/core/util/value-guards.d.ts +5 -0
- package/dist/core/util/value-guards.d.ts.map +1 -0
- package/dist/core/util/value-guards.js +12 -0
- package/dist/core/util/value-guards.js.map +1 -0
- package/dist/core/worktree-sync/store.d.ts +3 -3
- package/dist/core/worktree-sync/store.d.ts.map +1 -1
- package/dist/core/worktree-sync/store.js +10 -5
- package/dist/core/worktree-sync/store.js.map +1 -1
- package/dist/index.d.ts +15 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -3
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +149 -51
- package/dist/main.js.map +1 -1
- package/dist/migrations.d.ts +4 -6
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +186 -28
- package/dist/migrations.js.map +1 -1
- package/dist/modes/interactive/auth-dialogs-controller.d.ts +4 -0
- package/dist/modes/interactive/auth-dialogs-controller.d.ts.map +1 -1
- package/dist/modes/interactive/auth-dialogs-controller.js +60 -1
- package/dist/modes/interactive/auth-dialogs-controller.js.map +1 -1
- package/dist/modes/interactive/clipboard-input.d.ts +7 -1
- package/dist/modes/interactive/clipboard-input.d.ts.map +1 -1
- package/dist/modes/interactive/clipboard-input.js +44 -6
- package/dist/modes/interactive/clipboard-input.js.map +1 -1
- package/dist/modes/interactive/components/activity-lane.d.ts +55 -0
- package/dist/modes/interactive/components/activity-lane.d.ts.map +1 -0
- package/dist/modes/interactive/components/activity-lane.js +304 -0
- package/dist/modes/interactive/components/activity-lane.js.map +1 -0
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js +19 -10
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/expandable-text.d.ts +12 -0
- package/dist/modes/interactive/components/expandable-text.d.ts.map +1 -0
- package/dist/modes/interactive/components/expandable-text.js +17 -0
- package/dist/modes/interactive/components/expandable-text.js.map +1 -0
- package/dist/modes/interactive/components/extension-editor.d.ts +15 -1
- package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-editor.js +30 -21
- package/dist/modes/interactive/components/extension-editor.js.map +1 -1
- package/dist/modes/interactive/components/extension-input.d.ts +1 -0
- package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-input.js +6 -1
- package/dist/modes/interactive/components/extension-input.js.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.d.ts +2 -2
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.js +23 -14
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +6 -6
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts +19 -11
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +53 -20
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/components/tool-group.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-group.js +3 -0
- package/dist/modes/interactive/components/tool-group.js.map +1 -1
- package/dist/modes/interactive/components/usage-action-selector.d.ts +16 -0
- package/dist/modes/interactive/components/usage-action-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/usage-action-selector.js +46 -0
- package/dist/modes/interactive/components/usage-action-selector.js.map +1 -0
- package/dist/modes/interactive/config-backup.d.ts.map +1 -1
- package/dist/modes/interactive/config-backup.js +5 -4
- package/dist/modes/interactive/config-backup.js.map +1 -1
- package/dist/modes/interactive/extension-ui-host.d.ts +14 -0
- package/dist/modes/interactive/extension-ui-host.d.ts.map +1 -1
- package/dist/modes/interactive/extension-ui-host.js +77 -15
- package/dist/modes/interactive/extension-ui-host.js.map +1 -1
- package/dist/modes/interactive/external-editor.d.ts +15 -0
- package/dist/modes/interactive/external-editor.d.ts.map +1 -1
- package/dist/modes/interactive/external-editor.js +27 -19
- package/dist/modes/interactive/external-editor.js.map +1 -1
- package/dist/modes/interactive/history-reload-math.d.ts +6 -2
- package/dist/modes/interactive/history-reload-math.d.ts.map +1 -1
- package/dist/modes/interactive/history-reload-math.js +10 -5
- package/dist/modes/interactive/history-reload-math.js.map +1 -1
- package/dist/modes/interactive/interactive-event-controller.d.ts +74 -0
- package/dist/modes/interactive/interactive-event-controller.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-event-controller.js +328 -0
- package/dist/modes/interactive/interactive-event-controller.js.map +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts +22 -24
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +245 -595
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/key-handlers.d.ts.map +1 -1
- package/dist/modes/interactive/key-handlers.js +1 -1
- package/dist/modes/interactive/key-handlers.js.map +1 -1
- package/dist/modes/interactive/loaded-resources-view.d.ts +20 -0
- package/dist/modes/interactive/loaded-resources-view.d.ts.map +1 -0
- package/dist/modes/interactive/loaded-resources-view.js +147 -0
- package/dist/modes/interactive/loaded-resources-view.js.map +1 -0
- package/dist/modes/interactive/profile-menu-controller.d.ts.map +1 -1
- package/dist/modes/interactive/profile-menu-controller.js +7 -7
- package/dist/modes/interactive/profile-menu-controller.js.map +1 -1
- package/dist/modes/interactive/report-commands.d.ts.map +1 -1
- package/dist/modes/interactive/report-commands.js +21 -0
- package/dist/modes/interactive/report-commands.js.map +1 -1
- package/dist/modes/interactive/resource-display.d.ts.map +1 -1
- package/dist/modes/interactive/resource-display.js +8 -2
- package/dist/modes/interactive/resource-display.js.map +1 -1
- package/dist/modes/interactive/resource-shell-commands.d.ts +1 -5
- package/dist/modes/interactive/resource-shell-commands.d.ts.map +1 -1
- package/dist/modes/interactive/resource-shell-commands.js +0 -5
- package/dist/modes/interactive/resource-shell-commands.js.map +1 -1
- package/dist/modes/interactive/session-flow-commands.d.ts +27 -8
- package/dist/modes/interactive/session-flow-commands.d.ts.map +1 -1
- package/dist/modes/interactive/session-flow-commands.js +150 -64
- package/dist/modes/interactive/session-flow-commands.js.map +1 -1
- package/dist/modes/interactive/session-io-commands.d.ts.map +1 -1
- package/dist/modes/interactive/session-io-commands.js +16 -6
- package/dist/modes/interactive/session-io-commands.js.map +1 -1
- package/dist/modes/interactive/session-replacement-errors.d.ts +7 -0
- package/dist/modes/interactive/session-replacement-errors.d.ts.map +1 -0
- package/dist/modes/interactive/session-replacement-errors.js +15 -0
- package/dist/modes/interactive/session-replacement-errors.js.map +1 -0
- package/dist/modes/interactive/startup-checks.d.ts.map +1 -1
- package/dist/modes/interactive/startup-checks.js +1 -1
- package/dist/modes/interactive/startup-checks.js.map +1 -1
- package/dist/modes/interactive/usage-commands.d.ts +34 -0
- package/dist/modes/interactive/usage-commands.d.ts.map +1 -0
- package/dist/modes/interactive/usage-commands.js +225 -0
- package/dist/modes/interactive/usage-commands.js.map +1 -0
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +82 -23
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +15 -0
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js +138 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/utils/clipboard-image.d.ts.map +1 -1
- package/dist/utils/clipboard-image.js +2 -13
- package/dist/utils/clipboard-image.js.map +1 -1
- package/dist/utils/clipboard-native.d.ts +1 -0
- package/dist/utils/clipboard-native.d.ts.map +1 -1
- package/dist/utils/clipboard-native.js.map +1 -1
- package/dist/utils/clipboard.d.ts +1 -0
- package/dist/utils/clipboard.d.ts.map +1 -1
- package/dist/utils/clipboard.js +52 -1
- package/dist/utils/clipboard.js.map +1 -1
- package/dist/utils/platform.d.ts +3 -0
- package/dist/utils/platform.d.ts.map +1 -0
- package/dist/utils/platform.js +8 -0
- package/dist/utils/platform.js.map +1 -0
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +5 -3
- package/dist/utils/shell.js.map +1 -1
- package/dist/utils/version-check.d.ts.map +1 -1
- package/dist/utils/version-check.js +3 -1
- package/dist/utils/version-check.js.map +1 -1
- package/dist/utils/work-directory.d.ts +11 -0
- package/dist/utils/work-directory.d.ts.map +1 -1
- package/dist/utils/work-directory.js +30 -9
- package/dist/utils/work-directory.js.map +1 -1
- package/docs/UI_POLISH_ORCHESTRATION.md +38 -0
- package/docs/UI_QUALITY_ORCHESTRATION.md +28 -0
- package/docs/docs.json +4 -0
- package/docs/extensions.md +62 -2
- package/docs/harness-architecture.md +156 -0
- package/docs/keybindings.md +11 -1
- package/docs/process-matrix.md +59 -26
- package/docs/providers.md +9 -1
- package/docs/rpc.md +45 -2
- package/docs/sessions.md +15 -0
- package/docs/settings.md +125 -11
- package/docs/task-steps.md +8 -0
- package/docs/telemetry.md +19 -0
- package/docs/tmux-agent-manager.md +10 -3
- package/docs/ui-reference/README.md +9 -0
- package/docs/ui-reference/orchestration-after.txt +14 -0
- package/docs/ui-reference/orchestration-before.txt +13 -0
- package/docs/ui-reference/orchestration-reference.txt +16 -0
- package/docs/usage.md +22 -2
- package/docs/work-directory.md +19 -8
- 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/question.ts +34 -245
- package/examples/extensions/questionnaire.ts +41 -407
- 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 +13 -13
- package/package.json +4 -4
- package/dist/core/delegation/session-worker-result.d.ts +0 -46
- package/dist/core/delegation/session-worker-result.d.ts.map +0 -1
- package/dist/core/delegation/session-worker-result.js +0 -113
- package/dist/core/delegation/session-worker-result.js.map +0 -1
- package/dist/core/delegation/worker-result.d.ts.map +0 -1
- package/dist/core/delegation/worker-result.js.map +0 -1
- package/dist/core/telemetry.d.ts.map +0 -1
- package/dist/core/telemetry.js.map +0 -1
|
@@ -36,7 +36,7 @@ import { createHash } from "node:crypto";
|
|
|
36
36
|
import { existsSync, readFileSync } from "node:fs";
|
|
37
37
|
import { isAbsolute, join } from "node:path";
|
|
38
38
|
import { DEFAULT_ACTIVE_TOOL_NAMES, mapToolNamesForPlatform } from "./default-tool-surface.js";
|
|
39
|
-
import {
|
|
39
|
+
import { acknowledgeWorkerClaimReview } from "./delegation/session-worker-claim.js";
|
|
40
40
|
import { createCoreDiagnosticsToolDefinitions } from "./extensions/builtin.js";
|
|
41
41
|
import { ExtensionRunner, wrapRegisteredTools, } from "./extensions/index.js";
|
|
42
42
|
import { disposeExtensionEventSubscriptions } from "./extensions/loader.js";
|
|
@@ -46,25 +46,33 @@ import { evaluateSurfaceFitness } from "./model-router/fitness-gate.js";
|
|
|
46
46
|
import { FitnessStore } from "./models/fitness-store.js";
|
|
47
47
|
import { describeInFlightWorkUnit, getInFlightWorkUnits } from "./reload-blockers.js";
|
|
48
48
|
import { ScoutController } from "./scout-controller.js";
|
|
49
|
+
import { wrapToolWithCredentialExposureGuard } from "./secrets/credential-exposure-guard.js";
|
|
50
|
+
import { SecretVault } from "./secrets/secret-vault.js";
|
|
49
51
|
import { getSessionRole, isWorkerSession, WORKER_FORBIDDEN_TOOLS } from "./session-role.js";
|
|
50
52
|
import { matchesResourceProfilePattern, } from "./settings-manager.js";
|
|
51
53
|
import { createSyntheticSourceInfo } from "./source-info.js";
|
|
54
|
+
import { projectOpenTaskSteps } from "./tasks/task-projection.js";
|
|
52
55
|
import { buildReflexUserPrompt, parseReflexPlan, REFLEX_INTERPRETER_SYSTEM_PROMPT, } from "./toolkit/reflex-interpreter.js";
|
|
53
56
|
import { executeToolkitScript } from "./toolkit/script-runner.js";
|
|
57
|
+
import { createAskQuestionToolDefinition } from "./tools/ask-question.js";
|
|
54
58
|
import { createContextScoutToolDefinition } from "./tools/context-scout.js";
|
|
55
59
|
import { createDelegateToolDefinition } from "./tools/delegate.js";
|
|
56
60
|
import { createDelegateStatusToolDefinition } from "./tools/delegate-status.js";
|
|
57
61
|
import { createFindTool } from "./tools/find.js";
|
|
58
62
|
import { createGoalToolDefinition } from "./tools/goal.js";
|
|
59
63
|
import { createGrepTool } from "./tools/grep.js";
|
|
60
|
-
import {
|
|
64
|
+
import { allToolNames, createToolDefinition } from "./tools/index.js";
|
|
61
65
|
import { createModelFitnessToolDefinition } from "./tools/model-fitness.js";
|
|
62
66
|
import { resolveToCwd } from "./tools/path-utils.js";
|
|
63
67
|
import { createReadTool } from "./tools/read.js";
|
|
68
|
+
import { createRunProcessToolDefinition } from "./tools/run-process.js";
|
|
64
69
|
import { createRunToolkitScriptToolDefinition } from "./tools/run-toolkit-script.js";
|
|
70
|
+
import { createSecretStoreToolDefinition } from "./tools/secret-store.js";
|
|
71
|
+
import { disposePersistentShellSession } from "./tools/shell-session.js";
|
|
65
72
|
import { createTaskStepsToolDefinition } from "./tools/task-steps.js";
|
|
66
73
|
import { dispatchTmuxWorker } from "./tools/tmux-dispatch.js";
|
|
67
74
|
import { createToolDefinitionFromAgentTool } from "./tools/tool-definition-wrapper.js";
|
|
75
|
+
import { disposeWindowsShellState } from "./tools/windows-shell-state.js";
|
|
68
76
|
import { createWorktreeSyncToolDefinition } from "./tools/worktree-sync.js";
|
|
69
77
|
import { createLane } from "./worktree-sync/git-engine.js";
|
|
70
78
|
import { WorktreeLaneGate } from "./worktree-sync/lane-gate.js";
|
|
@@ -93,16 +101,15 @@ export function hasAnsweredToolCallOnBranch(sessionManager, toolCallId) {
|
|
|
93
101
|
.some((entry) => entry.type === "message" && entry.message.role === "toolResult" && entry.message.toolCallId === toolCallId);
|
|
94
102
|
}
|
|
95
103
|
/**
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
* (status not "completed"/"cancelled", `activeForm || content`) so the two read the same
|
|
99
|
-
* "open" definition, narrowed to `OpenTaskStepRef`'s id+content shape. Exported (pure, no
|
|
100
|
-
* `this`) so the goal tool's `getOpenTaskSteps` wiring below is directly testable.
|
|
104
|
+
* Goal-tool adapter over the canonical open-task projection. Exported (pure, no `this`) so the
|
|
105
|
+
* production `getOpenTaskSteps` wiring below remains directly testable without another filter.
|
|
101
106
|
*/
|
|
102
107
|
export function deriveOpenTaskStepRefs(taskStepsState) {
|
|
103
|
-
return (taskStepsState
|
|
104
|
-
|
|
105
|
-
|
|
108
|
+
return projectOpenTaskSteps(taskStepsState).map((step) => ({
|
|
109
|
+
id: step.id,
|
|
110
|
+
content: step.content,
|
|
111
|
+
...(step.requirementIds?.length ? { requirementIds: step.requirementIds } : {}),
|
|
112
|
+
}));
|
|
106
113
|
}
|
|
107
114
|
/**
|
|
108
115
|
* Owns the tool-registry build and the self-modification-safe extension reload extracted from
|
|
@@ -115,11 +122,66 @@ export class RuntimeBuilder {
|
|
|
115
122
|
_toolPromptSnippets = new Map();
|
|
116
123
|
_toolPromptGuidelines = new Map();
|
|
117
124
|
_baseToolDefinitions = new Map();
|
|
125
|
+
/** Exact extensions the owner approved through the live-load API. Discovery never populates this set. */
|
|
126
|
+
_explicitLiveExtensionPaths = new Set();
|
|
118
127
|
_reloadPromise;
|
|
119
128
|
_reloadRequested = false;
|
|
129
|
+
_secretVault;
|
|
120
130
|
deps;
|
|
121
131
|
constructor(deps) {
|
|
122
132
|
this.deps = deps;
|
|
133
|
+
this._secretVault = new SecretVault({
|
|
134
|
+
agentDir: deps.getAgentDir(),
|
|
135
|
+
onEnvironmentChanged: () => {
|
|
136
|
+
const sessionKey = deps.getShellSessionKey();
|
|
137
|
+
disposePersistentShellSession(sessionKey);
|
|
138
|
+
disposeWindowsShellState(sessionKey);
|
|
139
|
+
},
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Resolve the construction and activation policy once for a runtime generation. This is the
|
|
144
|
+
* UAC choke point: callers must consult it before invoking a tool factory, not merely before
|
|
145
|
+
* placing an already-created definition in the live registry.
|
|
146
|
+
*/
|
|
147
|
+
_createToolAccessPolicy() {
|
|
148
|
+
const role = getSessionRole();
|
|
149
|
+
const configuredAllowedToolNames = this.deps.getAllowedToolNames();
|
|
150
|
+
const allowedToolNames = configuredAllowedToolNames
|
|
151
|
+
? new Set(mapToolNamesForPlatform([...configuredAllowedToolNames]))
|
|
152
|
+
: undefined;
|
|
153
|
+
const configuredExcludedToolNames = this.deps.getExcludedToolNames();
|
|
154
|
+
const excludedToolNames = configuredExcludedToolNames
|
|
155
|
+
? new Set(mapToolNamesForPlatform([...configuredExcludedToolNames]))
|
|
156
|
+
: undefined;
|
|
157
|
+
const configuredToolProfileFilter = this.deps.getToolProfileFilter();
|
|
158
|
+
const toolProfileFilter = configuredToolProfileFilter
|
|
159
|
+
? {
|
|
160
|
+
allow: mapToolNamesForPlatform(configuredToolProfileFilter.allow),
|
|
161
|
+
block: mapToolNamesForPlatform(configuredToolProfileFilter.block),
|
|
162
|
+
}
|
|
163
|
+
: undefined;
|
|
164
|
+
return {
|
|
165
|
+
allowedToolNames,
|
|
166
|
+
toolProfileFilter,
|
|
167
|
+
allows: (name) => {
|
|
168
|
+
// Strict worker UAC ceiling wins over every explicit grant.
|
|
169
|
+
if (role === "worker" && WORKER_FORBIDDEN_TOOLS.has(name))
|
|
170
|
+
return false;
|
|
171
|
+
if (allowedToolNames && !allowedToolNames.has(name))
|
|
172
|
+
return false;
|
|
173
|
+
if (excludedToolNames?.has(name))
|
|
174
|
+
return false;
|
|
175
|
+
if (!toolProfileFilter)
|
|
176
|
+
return true;
|
|
177
|
+
if (toolProfileFilter.allow.length > 0 && !matchesResourceProfilePattern(name, toolProfileFilter.allow)) {
|
|
178
|
+
return false;
|
|
179
|
+
}
|
|
180
|
+
if (matchesResourceProfilePattern(name, toolProfileFilter.block))
|
|
181
|
+
return false;
|
|
182
|
+
return true;
|
|
183
|
+
},
|
|
184
|
+
};
|
|
123
185
|
}
|
|
124
186
|
async _runContextScout(query, maxTurns, artifactStore) {
|
|
125
187
|
const cwd = this.deps.getCwd();
|
|
@@ -127,9 +189,9 @@ export class RuntimeBuilder {
|
|
|
127
189
|
resolveScoutModel: async () => resolveScoutModel(this.deps.getModelRegistry(), this.deps.getSettingsManager().getScoutSettings().model, this.deps.getAgentDir(), (model) => this.deps.isModelExhausted(model)),
|
|
128
190
|
getCwd: () => cwd,
|
|
129
191
|
buildReadOnlyTools: (toolCwd) => [
|
|
130
|
-
createReadTool(toolCwd),
|
|
131
|
-
createGrepTool(toolCwd, { artifactStore }),
|
|
132
|
-
createFindTool(toolCwd, { artifactStore }),
|
|
192
|
+
wrapToolWithCredentialExposureGuard(createReadTool(toolCwd), toolCwd, this._secretVault),
|
|
193
|
+
wrapToolWithCredentialExposureGuard(createGrepTool(toolCwd, { artifactStore }), toolCwd, this._secretVault),
|
|
194
|
+
wrapToolWithCredentialExposureGuard(createFindTool(toolCwd, { artifactStore }), toolCwd, this._secretVault),
|
|
133
195
|
],
|
|
134
196
|
streamFn: this.deps.getAgent().streamFn,
|
|
135
197
|
fileExists: (path) => existsSync(resolveCwdPath(cwd, path)),
|
|
@@ -172,46 +234,14 @@ export class RuntimeBuilder {
|
|
|
172
234
|
return this._toolDefinitions.get(name)?.definition;
|
|
173
235
|
}
|
|
174
236
|
refreshToolRegistry(options) {
|
|
175
|
-
const role = getSessionRole();
|
|
176
237
|
const previousRegistryNames = new Set(this._toolRegistry.keys());
|
|
177
238
|
// Re-derive from the pre-filter REQUEST, never from agent.state.tools: the active set is
|
|
178
239
|
// capability/profile-filtered, so feeding it back through setActiveToolsByName would
|
|
179
240
|
// permanently shrink what a later switch to a larger model (or permissive profile) restores.
|
|
180
241
|
const previousActiveToolNames = mapToolNamesForPlatform(this.deps.getRequestedActiveToolNames() ?? this.deps.getActiveToolNames());
|
|
181
|
-
const
|
|
182
|
-
const allowedToolNames =
|
|
183
|
-
|
|
184
|
-
: undefined;
|
|
185
|
-
const configuredExcludedToolNames = this.deps.getExcludedToolNames();
|
|
186
|
-
const excludedToolNames = configuredExcludedToolNames
|
|
187
|
-
? new Set(mapToolNamesForPlatform([...configuredExcludedToolNames]))
|
|
188
|
-
: undefined;
|
|
189
|
-
const configuredToolProfileFilter = this.deps.getToolProfileFilter();
|
|
190
|
-
const toolProfileFilter = configuredToolProfileFilter
|
|
191
|
-
? {
|
|
192
|
-
allow: mapToolNamesForPlatform(configuredToolProfileFilter.allow),
|
|
193
|
-
block: mapToolNamesForPlatform(configuredToolProfileFilter.block),
|
|
194
|
-
}
|
|
195
|
-
: undefined;
|
|
196
|
-
const isAllowedTool = (name) => {
|
|
197
|
-
// Strict worker UAC ceiling: wins over allow-list/exclude/profile -- a worker session
|
|
198
|
-
// (lane-bound or dispatched) can never activate this tool no matter how permissively the
|
|
199
|
-
// active profile or an explicit request names it. See session-role.ts.
|
|
200
|
-
if (role === "worker" && WORKER_FORBIDDEN_TOOLS.has(name))
|
|
201
|
-
return false;
|
|
202
|
-
if (allowedToolNames && !allowedToolNames.has(name))
|
|
203
|
-
return false;
|
|
204
|
-
if (excludedToolNames?.has(name))
|
|
205
|
-
return false;
|
|
206
|
-
if (!toolProfileFilter)
|
|
207
|
-
return true;
|
|
208
|
-
if (toolProfileFilter.allow.length > 0 && !matchesResourceProfilePattern(name, toolProfileFilter.allow)) {
|
|
209
|
-
return false;
|
|
210
|
-
}
|
|
211
|
-
if (matchesResourceProfilePattern(name, toolProfileFilter.block))
|
|
212
|
-
return false;
|
|
213
|
-
return true;
|
|
214
|
-
};
|
|
242
|
+
const toolAccess = this._createToolAccessPolicy();
|
|
243
|
+
const { allowedToolNames, toolProfileFilter } = toolAccess;
|
|
244
|
+
const isAllowedTool = toolAccess.allows;
|
|
215
245
|
const registeredTools = this.deps.getExtensionRunner().getAllRegisteredTools();
|
|
216
246
|
const allCustomTools = [
|
|
217
247
|
...registeredTools,
|
|
@@ -264,9 +294,13 @@ export class RuntimeBuilder {
|
|
|
264
294
|
definition,
|
|
265
295
|
sourceInfo: createSyntheticSourceInfo(`<builtin:${definition.name}>`, { source: "builtin" }),
|
|
266
296
|
})), runner);
|
|
267
|
-
const toolRegistry = new Map(wrappedBuiltInTools.map((tool) =>
|
|
297
|
+
const toolRegistry = new Map(wrappedBuiltInTools.map((tool) => {
|
|
298
|
+
const guarded = wrapToolWithCredentialExposureGuard(tool, this.deps.getCwd(), this._secretVault);
|
|
299
|
+
return [guarded.name, guarded];
|
|
300
|
+
}));
|
|
268
301
|
for (const tool of wrappedExtensionTools) {
|
|
269
|
-
|
|
302
|
+
const guarded = wrapToolWithCredentialExposureGuard(tool, this.deps.getCwd(), this._secretVault);
|
|
303
|
+
toolRegistry.set(guarded.name, guarded);
|
|
270
304
|
}
|
|
271
305
|
this._toolRegistry = toolRegistry;
|
|
272
306
|
const requestedBase = options?.activeToolNames
|
|
@@ -425,169 +459,220 @@ export class RuntimeBuilder {
|
|
|
425
459
|
const shellCommandPrefix = settingsManager.getShellCommandPrefix();
|
|
426
460
|
const shellPath = settingsManager.getShellPath();
|
|
427
461
|
const baseToolsOverride = this.deps.getBaseToolsOverride();
|
|
462
|
+
const toolAccess = this._createToolAccessPolicy();
|
|
428
463
|
// Artifact-producing tools must not emit a "Full output: artifact tool-output:<id>" handle
|
|
429
464
|
// that nothing can resolve. If artifact_retrieve is explicitly excluded/blocked/outside
|
|
430
465
|
// an active allowlist, don't hand grep/find/run_toolkit_script an artifact store at all:
|
|
431
466
|
// they fall back to their bounded preview/truncation behavior, with no payload/meta files
|
|
432
467
|
// ever written and no retrieval promise made.
|
|
433
|
-
const toolArtifactStore =
|
|
434
|
-
|
|
435
|
-
:
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
468
|
+
const toolArtifactStore = !baseToolsOverride && toolAccess.allows("artifact_retrieve") ? this.deps.getToolArtifactStore() : undefined;
|
|
469
|
+
const toolOptions = {
|
|
470
|
+
read: { autoResizeImages },
|
|
471
|
+
bash: {
|
|
472
|
+
commandPrefix: shellCommandPrefix,
|
|
473
|
+
shellPath,
|
|
474
|
+
sessionKey: this.deps.getShellSessionKey(),
|
|
475
|
+
platform: process.platform,
|
|
476
|
+
spawnHook: (context) => ({
|
|
477
|
+
...context,
|
|
478
|
+
env: { ...context.env, ...this._secretVault.getEnvironmentForCwd(context.cwd) },
|
|
479
|
+
}),
|
|
480
|
+
},
|
|
481
|
+
python: { environment: (cwd) => this._secretVault.getEnvironmentForCwd(cwd) },
|
|
482
|
+
grep: { artifactStore: toolArtifactStore },
|
|
483
|
+
find: { artifactStore: toolArtifactStore },
|
|
484
|
+
artifact_retrieve: { artifactStore: toolArtifactStore },
|
|
485
|
+
};
|
|
486
|
+
this._baseToolDefinitions = baseToolsOverride
|
|
487
|
+
? new Map(Object.entries(baseToolsOverride)
|
|
488
|
+
.filter(([name]) => toolAccess.allows(name))
|
|
489
|
+
.map(([name, tool]) => [name, createToolDefinitionFromAgentTool(tool)]))
|
|
490
|
+
: new Map([...allToolNames]
|
|
491
|
+
.filter((name) => toolAccess.allows(name))
|
|
492
|
+
.map((name) => [name, createToolDefinition(name, this.deps.getCwd(), toolOptions)]));
|
|
446
493
|
if (!baseToolsOverride) {
|
|
447
|
-
|
|
448
|
-
this.
|
|
494
|
+
if (toolAccess.allows("run_process")) {
|
|
495
|
+
const orchestrationProfile = this.deps.getOrchestrationProfile?.();
|
|
496
|
+
if (orchestrationProfile?.executionPolicy) {
|
|
497
|
+
this._baseToolDefinitions.set("run_process", createRunProcessToolDefinition(this.deps.getCwd(), {
|
|
498
|
+
policy: orchestrationProfile.executionPolicy,
|
|
499
|
+
maxWallClockMs: orchestrationProfile.budget.maxWallClockMs ?? 0,
|
|
500
|
+
}));
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
if (toolAccess.allows("context_audit")) {
|
|
504
|
+
for (const definition of createCoreDiagnosticsToolDefinitions(() => this.deps.getActiveToolNames(), () => this.getAllTools(), (messages) => this.deps.getContextGcReport(messages), () => this.deps.getMemoryAuditDiagnostics())) {
|
|
505
|
+
this._baseToolDefinitions.set(definition.name, definition);
|
|
506
|
+
}
|
|
449
507
|
}
|
|
450
508
|
// Hoisted above the goal-tool registration (rather than declared only inside the
|
|
451
509
|
// worktreeSync-enabled block further below) so the SAME settings/deps factory backs both
|
|
452
510
|
// the goal->tmux lane-first dispatch dep (`createLaneWorktree`, immediately below) and the
|
|
453
511
|
// `worktree_sync` tool registration later in this method -- one source of truth, no drift.
|
|
454
|
-
const worktreeSyncSettings =
|
|
512
|
+
const worktreeSyncSettings = toolAccess.allows("goal") || toolAccess.allows("worktree_sync")
|
|
513
|
+
? settingsManager.getWorktreeSyncSettings()
|
|
514
|
+
: undefined;
|
|
455
515
|
const worktreeSyncEngineDeps = () => buildWorktreeSyncEngineDeps({
|
|
456
516
|
cwd: this.deps.getCwd(),
|
|
457
517
|
agentDir: this.deps.getAgentDir(),
|
|
458
518
|
settingsManager: this.deps.getSettingsManager(),
|
|
459
519
|
sessionId: this.deps.getSessionManager().getSessionId(),
|
|
460
520
|
});
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
}
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
}
|
|
532
|
-
|
|
533
|
-
|
|
521
|
+
if (toolAccess.allows("goal")) {
|
|
522
|
+
const goalToolDefinition = createGoalToolDefinition({
|
|
523
|
+
getGoalState: () => this.deps.getGoalStateSnapshot(),
|
|
524
|
+
saveGoalState: (state, expected) => {
|
|
525
|
+
this.deps.saveGoalStateSnapshot(state, expected);
|
|
526
|
+
},
|
|
527
|
+
// kind:"tool" evidence refs verify against real session records.
|
|
528
|
+
hasToolCallId: (toolCallId) => hasAnsweredToolCallOnBranch(this.deps.getSessionManager(), toolCallId),
|
|
529
|
+
// kind:"worker" evidence refs verify against the SAME live lane/claim accessors the
|
|
530
|
+
// delegate_status tool already uses below -- live wiring (these were declared optional
|
|
531
|
+
// and read-defensive on the goal-tool deps type).
|
|
532
|
+
getLaneRecords: () => this.deps.getWorkerLaneRecords(),
|
|
533
|
+
getWorkerClaimSnapshots: () => this.deps.getWorkerClaimSnapshots(),
|
|
534
|
+
// dispatch_worker's tool-layer side effect for the default (in_process) route: starts a
|
|
535
|
+
// real in-process worker lane through the SAME starter the delegate tool uses (below),
|
|
536
|
+
// adapted from its `{started:true;record}|{started:false;skipReason}` shape onto this
|
|
537
|
+
// tool's narrower `{laneId}|{skipReason}` shape.
|
|
538
|
+
startWorkerDelegation: (args) => {
|
|
539
|
+
const outcome = this.deps.startWorkerDelegation({ instructions: args.instructions });
|
|
540
|
+
return outcome.started ? { laneId: outcome.record.laneId } : { skipReason: outcome.skipReason };
|
|
541
|
+
},
|
|
542
|
+
// dispatch_worker's tool-layer side effect for `dispatchTarget:"tmux"`: core structurally
|
|
543
|
+
// invokes the SAME tmux_agent_manager fire_task call the model itself would make (no
|
|
544
|
+
// extension change, no faked launch/laneId) -- see tmux-dispatch.ts's doc comment.
|
|
545
|
+
dispatchTmuxWorker: (args) => dispatchTmuxWorker({
|
|
546
|
+
getToolDefinition: (name) => this.getToolDefinition(name),
|
|
547
|
+
createExtensionContext: () => this.deps.getExtensionRunner().createContext(),
|
|
548
|
+
resolveManagedLaneId: (id) => this.deps.resolveManagedLaneId(id),
|
|
549
|
+
getGoalId: () => this.deps.getGoalStateSnapshot()?.goalId,
|
|
550
|
+
evaluateWorkerLaneRefusal: () => this.deps.getLaneWorkerRefusal(),
|
|
551
|
+
// Lane-first dispatch, wired ONLY when worktree-sync is enabled -- absent otherwise,
|
|
552
|
+
// so a disabled/default session gets the existing byte-identical fire_task params.
|
|
553
|
+
createLaneWorktree: worktreeSyncSettings?.enabled
|
|
554
|
+
? async (laneArgs) => {
|
|
555
|
+
const created = await createLane(worktreeSyncEngineDeps(), {
|
|
556
|
+
...(laneArgs.goalId !== undefined ? { goalId: laneArgs.goalId } : {}),
|
|
557
|
+
requirementId: laneArgs.requirementId,
|
|
558
|
+
});
|
|
559
|
+
// Never fake a lane: any non-"ok" engine code (max lanes, invalid key, git
|
|
560
|
+
// error, ...) is refused, mapped by the caller onto the stable
|
|
561
|
+
// "worktree_create_failed" skip reason before any fire_task call runs.
|
|
562
|
+
if (created.code !== "ok")
|
|
563
|
+
return { skipReason: created.code };
|
|
564
|
+
return { laneKey: created.lane.laneKey, worktreePath: created.lane.worktreePath };
|
|
565
|
+
}
|
|
566
|
+
: undefined,
|
|
567
|
+
}, args),
|
|
568
|
+
cwd: () => this.deps.getCwd(),
|
|
569
|
+
// Reuses the already branch-scoped getTaskStepsStateSnapshot dep -- no new
|
|
570
|
+
// SessionManager access needed for the cross-visibility nudge.
|
|
571
|
+
getOpenTaskSteps: () => deriveOpenTaskStepRefs(this.deps.getTaskStepsStateSnapshot()),
|
|
572
|
+
});
|
|
573
|
+
this._baseToolDefinitions.set(goalToolDefinition.name, goalToolDefinition);
|
|
574
|
+
}
|
|
575
|
+
if (toolAccess.allows("task_steps")) {
|
|
576
|
+
const taskStepsToolDefinition = createTaskStepsToolDefinition({
|
|
577
|
+
getTaskStepsState: () => this.deps.getTaskStepsStateSnapshot(),
|
|
578
|
+
saveTaskStepsState: (state) => {
|
|
579
|
+
this.deps.saveTaskStepsStateSnapshot(state);
|
|
580
|
+
},
|
|
581
|
+
});
|
|
582
|
+
this._baseToolDefinitions.set(taskStepsToolDefinition.name, taskStepsToolDefinition);
|
|
583
|
+
}
|
|
584
|
+
if (toolAccess.allows("ask_question")) {
|
|
585
|
+
const askQuestionToolDefinition = createAskQuestionToolDefinition({
|
|
586
|
+
sessionManager: this.deps.getSessionManager(),
|
|
587
|
+
artifactStore: toolArtifactStore,
|
|
588
|
+
getImageStore: () => this.deps.getSessionImageStore(),
|
|
589
|
+
});
|
|
590
|
+
this._baseToolDefinitions.set(askQuestionToolDefinition.name, askQuestionToolDefinition);
|
|
591
|
+
}
|
|
592
|
+
if (toolAccess.allows("secret_store")) {
|
|
593
|
+
const secretStoreToolDefinition = createSecretStoreToolDefinition({ vault: this._secretVault });
|
|
594
|
+
this._baseToolDefinitions.set(secretStoreToolDefinition.name, secretStoreToolDefinition);
|
|
595
|
+
}
|
|
596
|
+
if (toolAccess.allows("delegate")) {
|
|
597
|
+
const delegateToolDefinition = createDelegateToolDefinition({
|
|
598
|
+
startWorkerDelegation: (args) => this.deps.startWorkerDelegation(args),
|
|
599
|
+
runWorkerDelegation: (args) => this.deps.runWorkerDelegationOnce(args),
|
|
600
|
+
orchestrationProfiles: this.deps.getOrchestrationProfileCatalog(),
|
|
601
|
+
});
|
|
602
|
+
this._baseToolDefinitions.set(delegateToolDefinition.name, delegateToolDefinition);
|
|
603
|
+
}
|
|
604
|
+
if (toolAccess.allows("delegate_status")) {
|
|
605
|
+
const delegateStatusToolDefinition = createDelegateStatusToolDefinition({
|
|
606
|
+
getLaneRecords: () => this.deps.getWorkerLaneRecords(),
|
|
607
|
+
getWorkerClaimSnapshots: () => this.deps.getWorkerClaimSnapshots(),
|
|
608
|
+
// Durable ack persists straight through the session log; routed here (rather than
|
|
609
|
+
// a new agent-session dep) because getSessionManager() is already a stable, generic
|
|
610
|
+
// passthrough dep, so no other package needs to change for this to work.
|
|
611
|
+
acknowledgeWorkerReview: (requestId) => acknowledgeWorkerClaimReview(this.deps.getSessionManager(), requestId),
|
|
612
|
+
});
|
|
613
|
+
this._baseToolDefinitions.set(delegateStatusToolDefinition.name, delegateStatusToolDefinition);
|
|
614
|
+
}
|
|
534
615
|
// Registered but not default-active: probes spend tokens on the probed model, so
|
|
535
616
|
// activation is an explicit choice (settings/profile/setActiveTools or /autonomy fitness).
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
617
|
+
if (toolAccess.allows("model_fitness")) {
|
|
618
|
+
const modelFitnessToolDefinition = createModelFitnessToolDefinition({
|
|
619
|
+
runProbe: (args) => this.deps.runModelFitness(args),
|
|
620
|
+
});
|
|
621
|
+
this._baseToolDefinitions.set(modelFitnessToolDefinition.name, modelFitnessToolDefinition);
|
|
622
|
+
}
|
|
623
|
+
if (toolAccess.allows("context_scout") && settingsManager.getScoutSettings().enabled) {
|
|
541
624
|
const contextScoutToolDefinition = createContextScoutToolDefinition({
|
|
542
625
|
runScout: (input) => this._runContextScout(input.query, input.maxTurns, toolArtifactStore),
|
|
543
626
|
});
|
|
544
627
|
this._baseToolDefinitions.set(contextScoutToolDefinition.name, contextScoutToolDefinition);
|
|
545
628
|
}
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
629
|
+
if (toolAccess.allows("run_toolkit_script")) {
|
|
630
|
+
const runToolkitScriptToolDefinition = createRunToolkitScriptToolDefinition({
|
|
631
|
+
getScripts: () => this.deps.getSettingsManager().getToolkitScripts(),
|
|
632
|
+
execute: (script, scriptArgs) => executeToolkitScript({ script, scriptArgs, cwd: this.deps.getCwd() }),
|
|
633
|
+
artifactStore: toolArtifactStore,
|
|
634
|
+
// Reflex brain (fitness-gated local model): resolves ambiguous requests into a
|
|
635
|
+
// registry pick. Best-effort — absent/unfit brain keeps the shortlist behavior.
|
|
636
|
+
interpret: async (request, scripts) => {
|
|
637
|
+
const model = this.deps.resolveCurationModelIfFit();
|
|
638
|
+
if (!model)
|
|
639
|
+
return undefined;
|
|
640
|
+
const completion = await this.deps.runIsolatedCompletion({
|
|
641
|
+
systemPrompt: REFLEX_INTERPRETER_SYSTEM_PROMPT,
|
|
642
|
+
messages: [
|
|
643
|
+
{
|
|
644
|
+
role: "user",
|
|
645
|
+
content: [{ type: "text", text: buildReflexUserPrompt(request, scripts) }],
|
|
646
|
+
timestamp: Date.now(),
|
|
647
|
+
},
|
|
648
|
+
],
|
|
649
|
+
model,
|
|
650
|
+
thinkingLevel: "off",
|
|
651
|
+
maxTokens: 256,
|
|
652
|
+
cacheRetention: "short",
|
|
653
|
+
// Stable per-lane synthetic affinity key so repeat ambiguous-request
|
|
654
|
+
// interpretations hit the same cache-warm backend.
|
|
655
|
+
laneKind: "toolkit-brain",
|
|
656
|
+
});
|
|
657
|
+
if (completion.usage.cost.total > 0 || completion.usage.totalTokens > 0) {
|
|
658
|
+
// `reportId` keyed on the ambiguous request text driving THIS interpretation —
|
|
659
|
+
// stable across a retry of the same tool call, distinct across genuinely
|
|
660
|
+
// different requests.
|
|
661
|
+
const reportId = deriveSpawnedUsageReportId("toolkit-brain", this.deps.getSessionManager().getSessionId(), request);
|
|
662
|
+
this.deps.addSpawnedUsage(completion.usage, { label: "toolkit-brain", reportId });
|
|
663
|
+
}
|
|
664
|
+
return parseReflexPlan(completion.text);
|
|
665
|
+
},
|
|
666
|
+
});
|
|
667
|
+
this._baseToolDefinitions.set(runToolkitScriptToolDefinition.name, runToolkitScriptToolDefinition);
|
|
668
|
+
}
|
|
584
669
|
// Worktree-sync (opt-in): the closed-action lane workflow tool, plus -- for a session
|
|
585
670
|
// launched lane-bound (PI_WORKTREE_LANE) -- the G8/G10 lane gate wrapped UNDER the
|
|
586
671
|
// file-mutation tools (edit/write, plus cooperative bash only for interactive lanes), so a sync_required lane fails closed with the
|
|
587
672
|
// exact recovery step rather than relying on prompt compliance. `worktreeSyncSettings` /
|
|
588
673
|
// `worktreeSyncEngineDeps` are hoisted above (declared before the goal-tool registration)
|
|
589
674
|
// so the goal->tmux lane-first dispatch dep and this tool share one settings/deps source.
|
|
590
|
-
if (worktreeSyncSettings
|
|
675
|
+
if (toolAccess.allows("worktree_sync") && worktreeSyncSettings?.enabled) {
|
|
591
676
|
const worktreeSyncToolDefinition = createWorktreeSyncToolDefinition({
|
|
592
677
|
engineDeps: worktreeSyncEngineDeps,
|
|
593
678
|
settings: () => this.deps.getSettingsManager().getWorktreeSyncSettings(),
|
|
@@ -636,7 +721,7 @@ export class RuntimeBuilder {
|
|
|
636
721
|
extensionsResult.runtime.flagValues.set(name, value);
|
|
637
722
|
}
|
|
638
723
|
}
|
|
639
|
-
const extensions = this.deps.filterExtensionsForRuntime(extensionsResult.extensions);
|
|
724
|
+
const extensions = this.deps.filterExtensionsForRuntime(extensionsResult.extensions, this._explicitLiveExtensionPaths);
|
|
640
725
|
const runtimeExtensionPaths = new Set(extensions.map((extension) => extension.path));
|
|
641
726
|
extensionsResult.runtime.pendingProviderRegistrations =
|
|
642
727
|
extensionsResult.runtime.pendingProviderRegistrations.filter((registration) => runtimeExtensionPaths.has(registration.extensionPath));
|
|
@@ -753,6 +838,15 @@ export class RuntimeBuilder {
|
|
|
753
838
|
deferExtensionDispose: true,
|
|
754
839
|
skipSettingsReload: true,
|
|
755
840
|
});
|
|
841
|
+
// A live-load call is an exact session-owned grant. Resource discovery deliberately cannot
|
|
842
|
+
// recreate it without a profile, so restore only those approved paths into the new runtime
|
|
843
|
+
// generation before binding it.
|
|
844
|
+
for (const extensionPath of this._explicitLiveExtensionPaths) {
|
|
845
|
+
if (this.deps.isExtensionPathAllowed(extensionPath, "explicit") &&
|
|
846
|
+
!this.deps.getResourceLoader().getLoadedExtension(extensionPath)) {
|
|
847
|
+
await this._importExtension(extensionPath);
|
|
848
|
+
}
|
|
849
|
+
}
|
|
756
850
|
// Replace the previous extension-owned provider generation before binding the new one. The
|
|
757
851
|
// bulk refresh also preserves API/OAuth streams for surviving non-extension providers.
|
|
758
852
|
this.deps.getModelRegistry().unregisterProviders(previousExtensionProviderNames);
|
|
@@ -818,9 +912,23 @@ export class RuntimeBuilder {
|
|
|
818
912
|
*/
|
|
819
913
|
async unloadExtensionLive(extensionPath) {
|
|
820
914
|
this._assertReloadQuiescent("unload extension");
|
|
915
|
+
try {
|
|
916
|
+
await this._unloadExtensionLive(extensionPath, true, true);
|
|
917
|
+
}
|
|
918
|
+
catch (error) {
|
|
919
|
+
await this._recoverLiveExtensionFailure();
|
|
920
|
+
throw error;
|
|
921
|
+
}
|
|
922
|
+
}
|
|
923
|
+
async _unloadExtensionLive(extensionPath, revokeExplicitGrant, notify) {
|
|
821
924
|
const ext = this.deps.getResourceLoader().getLoadedExtension(extensionPath);
|
|
925
|
+
const explicitGrantPath = ext?.path ?? extensionPath;
|
|
926
|
+
const hadExplicitGrant = this._explicitLiveExtensionPaths.has(explicitGrantPath);
|
|
927
|
+
if (revokeExplicitGrant) {
|
|
928
|
+
this._explicitLiveExtensionPaths.delete(explicitGrantPath);
|
|
929
|
+
}
|
|
822
930
|
if (!ext) {
|
|
823
|
-
return;
|
|
931
|
+
return;
|
|
824
932
|
}
|
|
825
933
|
const previousRunner = this.deps.getExtensionRunner();
|
|
826
934
|
try {
|
|
@@ -845,7 +953,7 @@ export class RuntimeBuilder {
|
|
|
845
953
|
flagValues: previousFlagValues,
|
|
846
954
|
includeAllExtensionTools: true,
|
|
847
955
|
});
|
|
848
|
-
previousRunner.
|
|
956
|
+
previousRunner.retire();
|
|
849
957
|
const memorySnapshot = this.deps.createMemoryReloadSnapshot();
|
|
850
958
|
this.deps.restoreMemoryReloadSnapshot({
|
|
851
959
|
...memorySnapshot,
|
|
@@ -855,16 +963,13 @@ export class RuntimeBuilder {
|
|
|
855
963
|
runtime.memoryProvidersByExtension.delete(ext.path);
|
|
856
964
|
runtime.contextMemoryProvidersByExtension.delete(ext.path);
|
|
857
965
|
await this.deps.initializeMemory();
|
|
858
|
-
|
|
859
|
-
|
|
966
|
+
if (notify) {
|
|
967
|
+
this.deps.notifyExtensionsChanged();
|
|
968
|
+
}
|
|
860
969
|
}
|
|
861
970
|
catch (error) {
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
await this.reload();
|
|
865
|
-
}
|
|
866
|
-
catch {
|
|
867
|
-
// Suppress nested error; original error will be thrown below
|
|
971
|
+
if (revokeExplicitGrant && hadExplicitGrant) {
|
|
972
|
+
this._explicitLiveExtensionPaths.add(explicitGrantPath);
|
|
868
973
|
}
|
|
869
974
|
throw error;
|
|
870
975
|
}
|
|
@@ -877,12 +982,26 @@ export class RuntimeBuilder {
|
|
|
877
982
|
*/
|
|
878
983
|
async loadExtensionLive(extensionPath) {
|
|
879
984
|
this._assertReloadQuiescent("load extension");
|
|
985
|
+
this._assertExtensionLoadAllowed(extensionPath, "explicit");
|
|
986
|
+
try {
|
|
987
|
+
await this._loadExtensionLive(extensionPath, "explicit", true);
|
|
988
|
+
}
|
|
989
|
+
catch (error) {
|
|
990
|
+
await this._recoverLiveExtensionFailure();
|
|
991
|
+
throw error;
|
|
992
|
+
}
|
|
993
|
+
}
|
|
994
|
+
async _loadExtensionLive(extensionPath, authority, notify) {
|
|
880
995
|
const previousRunner = this.deps.getExtensionRunner();
|
|
996
|
+
let explicitGrantPath;
|
|
997
|
+
let hadExplicitGrant = false;
|
|
881
998
|
try {
|
|
882
999
|
// Load the extension with fresh import
|
|
883
|
-
const
|
|
884
|
-
if (
|
|
885
|
-
|
|
1000
|
+
const extension = await this._importExtension(extensionPath);
|
|
1001
|
+
if (authority === "explicit") {
|
|
1002
|
+
explicitGrantPath = extension.path;
|
|
1003
|
+
hadExplicitGrant = this._explicitLiveExtensionPaths.has(explicitGrantPath);
|
|
1004
|
+
this._explicitLiveExtensionPaths.add(explicitGrantPath);
|
|
886
1005
|
}
|
|
887
1006
|
// Rebuild runtime to aggregate tools/commands/handlers/providers
|
|
888
1007
|
const activeToolNames = this.deps.getRequestedActiveToolNames() ?? this.deps.getActiveToolNames();
|
|
@@ -897,20 +1016,38 @@ export class RuntimeBuilder {
|
|
|
897
1016
|
// Activate newly registered legacy/context providers immediately. Reinitialization also
|
|
898
1017
|
// refreshes provider tools and preserves all providers owned by existing extensions.
|
|
899
1018
|
await this.deps.initializeMemory();
|
|
900
|
-
|
|
901
|
-
|
|
1019
|
+
previousRunner.retire();
|
|
1020
|
+
if (notify) {
|
|
1021
|
+
this.deps.notifyExtensionsChanged();
|
|
1022
|
+
}
|
|
902
1023
|
}
|
|
903
1024
|
catch (error) {
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
await this.reload();
|
|
907
|
-
}
|
|
908
|
-
catch {
|
|
909
|
-
// Suppress nested error; original error will be thrown below
|
|
1025
|
+
if (explicitGrantPath && !hadExplicitGrant) {
|
|
1026
|
+
this._explicitLiveExtensionPaths.delete(explicitGrantPath);
|
|
910
1027
|
}
|
|
911
1028
|
throw error;
|
|
912
1029
|
}
|
|
913
1030
|
}
|
|
1031
|
+
async _importExtension(extensionPath) {
|
|
1032
|
+
const { extension, error } = await this.deps.getResourceLoader().loadSingleExtension(extensionPath);
|
|
1033
|
+
if (error || !extension) {
|
|
1034
|
+
throw new Error(error || `Failed to load extension: ${extensionPath}`);
|
|
1035
|
+
}
|
|
1036
|
+
return extension;
|
|
1037
|
+
}
|
|
1038
|
+
_assertExtensionLoadAllowed(extensionPath, authority) {
|
|
1039
|
+
if (!this.deps.isExtensionPathAllowed(extensionPath, authority)) {
|
|
1040
|
+
throw new Error(`Cannot load extension outside the active resource profile: ${extensionPath}`);
|
|
1041
|
+
}
|
|
1042
|
+
}
|
|
1043
|
+
async _recoverLiveExtensionFailure() {
|
|
1044
|
+
try {
|
|
1045
|
+
await this.reload();
|
|
1046
|
+
}
|
|
1047
|
+
catch {
|
|
1048
|
+
// Preserve the original live-operation error; recovery is best effort.
|
|
1049
|
+
}
|
|
1050
|
+
}
|
|
914
1051
|
/**
|
|
915
1052
|
* Reconcile loaded extensions with the active profile.
|
|
916
1053
|
* Loads extensions that should be enabled but aren't, and unloads extensions that shouldn't be.
|
|
@@ -921,66 +1058,41 @@ export class RuntimeBuilder {
|
|
|
921
1058
|
try {
|
|
922
1059
|
// Get all discoverable extension paths
|
|
923
1060
|
const allDiscoverablePaths = await this.deps.getResourceLoader().getDiscoverableExtensionPaths();
|
|
924
|
-
// Get the target enabled set based on profile filters
|
|
925
|
-
const targetEnabledSet = new Set();
|
|
926
|
-
for (const path of allDiscoverablePaths) {
|
|
927
|
-
if (this.deps.getSettingsManager().isResourceAllowedByProfile("extensions", path)) {
|
|
928
|
-
targetEnabledSet.add(path);
|
|
929
|
-
}
|
|
930
|
-
}
|
|
931
|
-
// Get currently loaded set
|
|
932
1061
|
const loadedExtensions = this.deps.getResourceLoader().getExtensions().extensions;
|
|
933
|
-
const
|
|
934
|
-
for (const
|
|
935
|
-
|
|
936
|
-
}
|
|
937
|
-
// Collect unloads and loads
|
|
938
|
-
const toUnload = [];
|
|
939
|
-
const toLoad = [];
|
|
940
|
-
for (const path of loadedSet) {
|
|
941
|
-
if (!targetEnabledSet.has(path)) {
|
|
942
|
-
toUnload.push(path);
|
|
943
|
-
}
|
|
1062
|
+
const targetAuthorities = new Map();
|
|
1063
|
+
for (const extension of this.deps.filterExtensionsForRuntime(loadedExtensions, this._explicitLiveExtensionPaths)) {
|
|
1064
|
+
targetAuthorities.set(extension.path, "loaded");
|
|
944
1065
|
}
|
|
945
|
-
for (const path of
|
|
946
|
-
if (
|
|
947
|
-
|
|
1066
|
+
for (const path of this._explicitLiveExtensionPaths) {
|
|
1067
|
+
if (this.deps.isExtensionPathAllowed(path, "explicit")) {
|
|
1068
|
+
targetAuthorities.set(path, "explicit");
|
|
948
1069
|
}
|
|
949
1070
|
}
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
for (const path of toUnload) {
|
|
954
|
-
try {
|
|
955
|
-
await this.unloadExtensionLive(path);
|
|
956
|
-
}
|
|
957
|
-
catch (error) {
|
|
958
|
-
errors.push(error instanceof Error ? error : new Error(String(error)));
|
|
1071
|
+
for (const path of allDiscoverablePaths) {
|
|
1072
|
+
if (this.deps.isExtensionPathAllowed(path, "profile") && !targetAuthorities.has(path)) {
|
|
1073
|
+
targetAuthorities.set(path, "profile");
|
|
959
1074
|
}
|
|
960
1075
|
}
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
1076
|
+
// Apply unloads first, then loads. A failed mutation stops the generation immediately; the
|
|
1077
|
+
// outer recovery reload restores one coherent runtime instead of compounding partial changes.
|
|
1078
|
+
for (const extension of [...loadedExtensions]) {
|
|
1079
|
+
if (targetAuthorities.has(extension.path) || targetAuthorities.has(extension.resolvedPath))
|
|
1080
|
+
continue;
|
|
1081
|
+
this._assertReloadQuiescent("reconcile extensions");
|
|
1082
|
+
await this._unloadExtensionLive(extension.path, false, false);
|
|
968
1083
|
}
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
1084
|
+
for (const [path, authority] of targetAuthorities) {
|
|
1085
|
+
if (authority === "loaded" || this.deps.getResourceLoader().getLoadedExtension(path))
|
|
1086
|
+
continue;
|
|
1087
|
+
this._assertReloadQuiescent("reconcile extensions");
|
|
1088
|
+
this._assertExtensionLoadAllowed(path, authority);
|
|
1089
|
+
await this._loadExtensionLive(path, authority, false);
|
|
972
1090
|
}
|
|
973
1091
|
// Single notification at the end
|
|
974
1092
|
this.deps.notifyExtensionsChanged();
|
|
975
1093
|
}
|
|
976
1094
|
catch (error) {
|
|
977
|
-
|
|
978
|
-
try {
|
|
979
|
-
await this.reload();
|
|
980
|
-
}
|
|
981
|
-
catch {
|
|
982
|
-
// Suppress nested error; original error will be thrown below
|
|
983
|
-
}
|
|
1095
|
+
await this._recoverLiveExtensionFailure();
|
|
984
1096
|
throw error;
|
|
985
1097
|
}
|
|
986
1098
|
}
|