@pellux/goodvibes-sdk 0.37.2 → 1.0.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/dist/contracts/artifacts/operator-contract.json +3171 -929
- package/dist/daemon.d.ts +2 -0
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +4 -0
- package/dist/events/communication.d.ts +21 -1
- package/dist/events/communication.d.ts.map +1 -1
- package/dist/events/surfaces.d.ts +25 -3
- package/dist/events/surfaces.d.ts.map +1 -1
- package/dist/events/surfaces.js +22 -1
- package/dist/events/workflows.d.ts +7 -6
- package/dist/events/workflows.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/platform/agents/archetypes.d.ts.map +1 -1
- package/dist/platform/agents/archetypes.js +7 -0
- package/dist/platform/agents/index.d.ts +1 -0
- package/dist/platform/agents/index.d.ts.map +1 -1
- package/dist/platform/agents/index.js +1 -0
- package/dist/platform/agents/message-bus-core.d.ts +7 -0
- package/dist/platform/agents/message-bus-core.d.ts.map +1 -1
- package/dist/platform/agents/message-bus-core.js +2 -1
- package/dist/platform/agents/orchestrator-runner.d.ts +50 -1
- package/dist/platform/agents/orchestrator-runner.d.ts.map +1 -1
- package/dist/platform/agents/orchestrator-runner.js +172 -7
- package/dist/platform/agents/orchestrator.d.ts +78 -6
- package/dist/platform/agents/orchestrator.d.ts.map +1 -1
- package/dist/platform/agents/orchestrator.js +95 -18
- package/dist/platform/agents/planner-decomposition-runner.d.ts +38 -0
- package/dist/platform/agents/planner-decomposition-runner.d.ts.map +1 -0
- package/dist/platform/agents/planner-decomposition-runner.js +113 -0
- package/dist/platform/agents/turn-knowledge-injection.d.ts +192 -0
- package/dist/platform/agents/turn-knowledge-injection.d.ts.map +1 -0
- package/dist/platform/agents/turn-knowledge-injection.js +269 -0
- package/dist/platform/agents/worktree.d.ts +126 -8
- package/dist/platform/agents/worktree.d.ts.map +1 -1
- package/dist/platform/agents/worktree.js +240 -19
- package/dist/platform/agents/wrfc-controller.d.ts +46 -0
- package/dist/platform/agents/wrfc-controller.d.ts.map +1 -1
- package/dist/platform/agents/wrfc-controller.js +213 -32
- package/dist/platform/agents/wrfc-gate-runtime.d.ts +9 -0
- package/dist/platform/agents/wrfc-gate-runtime.d.ts.map +1 -1
- package/dist/platform/agents/wrfc-gate-runtime.js +7 -3
- package/dist/platform/agents/wrfc-gates.d.ts +1 -1
- package/dist/platform/agents/wrfc-gates.d.ts.map +1 -1
- package/dist/platform/agents/wrfc-gates.js +7 -1
- package/dist/platform/agents/wrfc-types.d.ts +23 -3
- package/dist/platform/agents/wrfc-types.d.ts.map +1 -1
- package/dist/platform/automation/types.d.ts +9 -1
- package/dist/platform/automation/types.d.ts.map +1 -1
- package/dist/platform/calendar/calendar-api-shared.d.ts +25 -0
- package/dist/platform/calendar/calendar-api-shared.d.ts.map +1 -0
- package/dist/platform/calendar/calendar-api-shared.js +100 -0
- package/dist/platform/calendar/calendar-connector.d.ts +79 -0
- package/dist/platform/calendar/calendar-connector.d.ts.map +1 -0
- package/dist/platform/calendar/calendar-connector.js +155 -0
- package/dist/platform/calendar/google-calendar-api.d.ts +25 -0
- package/dist/platform/calendar/google-calendar-api.d.ts.map +1 -0
- package/dist/platform/calendar/google-calendar-api.js +89 -0
- package/dist/platform/calendar/http-fetch-adapter.d.ts +25 -0
- package/dist/platform/calendar/http-fetch-adapter.d.ts.map +1 -0
- package/dist/platform/calendar/http-fetch-adapter.js +25 -0
- package/dist/platform/calendar/ics-parser.d.ts +35 -0
- package/dist/platform/calendar/ics-parser.d.ts.map +1 -0
- package/dist/platform/calendar/ics-parser.js +236 -0
- package/dist/platform/calendar/index.d.ts +41 -0
- package/dist/platform/calendar/index.d.ts.map +1 -0
- package/dist/platform/calendar/index.js +49 -0
- package/dist/platform/calendar/merged-calendar-model.d.ts +67 -0
- package/dist/platform/calendar/merged-calendar-model.d.ts.map +1 -0
- package/dist/platform/calendar/merged-calendar-model.js +181 -0
- package/dist/platform/calendar/microsoft-graph-api.d.ts +25 -0
- package/dist/platform/calendar/microsoft-graph-api.d.ts.map +1 -0
- package/dist/platform/calendar/microsoft-graph-api.js +95 -0
- package/dist/platform/calendar/oauth-flow.d.ts +62 -0
- package/dist/platform/calendar/oauth-flow.d.ts.map +1 -0
- package/dist/platform/calendar/oauth-flow.js +305 -0
- package/dist/platform/calendar/oauth-providers.d.ts +43 -0
- package/dist/platform/calendar/oauth-providers.d.ts.map +1 -0
- package/dist/platform/calendar/oauth-providers.js +120 -0
- package/dist/platform/calendar/oauth-token-store.d.ts +72 -0
- package/dist/platform/calendar/oauth-token-store.d.ts.map +1 -0
- package/dist/platform/calendar/oauth-token-store.js +189 -0
- package/dist/platform/calendar/oauth-types.d.ts +274 -0
- package/dist/platform/calendar/oauth-types.d.ts.map +1 -0
- package/dist/platform/calendar/oauth-types.js +22 -0
- package/dist/platform/calendar/rrule.d.ts +39 -0
- package/dist/platform/calendar/rrule.d.ts.map +1 -0
- package/dist/platform/calendar/rrule.js +261 -0
- package/dist/platform/calendar/subscription-store.d.ts +118 -0
- package/dist/platform/calendar/subscription-store.d.ts.map +1 -0
- package/dist/platform/calendar/subscription-store.js +293 -0
- package/dist/platform/calendar/types.d.ts +170 -0
- package/dist/platform/calendar/types.d.ts.map +1 -0
- package/dist/platform/calendar/types.js +21 -0
- package/dist/platform/companion/companion-chat-attachments.d.ts +29 -0
- package/dist/platform/companion/companion-chat-attachments.d.ts.map +1 -0
- package/dist/platform/companion/companion-chat-attachments.js +121 -0
- package/dist/platform/companion/companion-chat-broker-bridge.d.ts +40 -0
- package/dist/platform/companion/companion-chat-broker-bridge.d.ts.map +1 -0
- package/dist/platform/companion/companion-chat-broker-bridge.js +14 -0
- package/dist/platform/companion/companion-chat-broker-sync.d.ts +38 -0
- package/dist/platform/companion/companion-chat-broker-sync.d.ts.map +1 -0
- package/dist/platform/companion/companion-chat-broker-sync.js +80 -0
- package/dist/platform/companion/companion-chat-gc.d.ts +63 -0
- package/dist/platform/companion/companion-chat-gc.d.ts.map +1 -0
- package/dist/platform/companion/companion-chat-gc.js +38 -0
- package/dist/platform/companion/companion-chat-manager.d.ts +67 -20
- package/dist/platform/companion/companion-chat-manager.d.ts.map +1 -1
- package/dist/platform/companion/companion-chat-manager.js +130 -144
- package/dist/platform/companion/companion-chat-persistence.d.ts +9 -1
- package/dist/platform/companion/companion-chat-persistence.d.ts.map +1 -1
- package/dist/platform/companion/companion-chat-persistence.js +10 -2
- package/dist/platform/companion/companion-chat-routes.d.ts +2 -1
- package/dist/platform/companion/companion-chat-routes.d.ts.map +1 -1
- package/dist/platform/companion/companion-chat-routes.js +37 -4
- package/dist/platform/config/credential-status.d.ts +28 -0
- package/dist/platform/config/credential-status.d.ts.map +1 -0
- package/dist/platform/config/credential-status.js +75 -0
- package/dist/platform/config/index.d.ts +25 -0
- package/dist/platform/config/index.d.ts.map +1 -1
- package/dist/platform/config/index.js +18 -0
- package/dist/platform/config/manager.d.ts +18 -0
- package/dist/platform/config/manager.d.ts.map +1 -1
- package/dist/platform/config/manager.js +36 -2
- package/dist/platform/config/migrations.d.ts +48 -0
- package/dist/platform/config/migrations.d.ts.map +1 -0
- package/dist/platform/config/migrations.js +54 -0
- package/dist/platform/config/schema-domain-core.d.ts +10 -1
- package/dist/platform/config/schema-domain-core.d.ts.map +1 -1
- package/dist/platform/config/schema-domain-core.js +46 -3
- package/dist/platform/config/schema-types.d.ts +13 -7
- package/dist/platform/config/schema-types.d.ts.map +1 -1
- package/dist/platform/config/schema.d.ts.map +1 -1
- package/dist/platform/config/schema.js +2 -0
- package/dist/platform/control-plane/approval-broker.d.ts +11 -0
- package/dist/platform/control-plane/approval-broker.d.ts.map +1 -1
- package/dist/platform/control-plane/approval-broker.js +17 -1
- package/dist/platform/control-plane/approval-hunk-apply.d.ts +77 -0
- package/dist/platform/control-plane/approval-hunk-apply.d.ts.map +1 -0
- package/dist/platform/control-plane/approval-hunk-apply.js +80 -0
- package/dist/platform/control-plane/gateway-disabled-response.d.ts +20 -0
- package/dist/platform/control-plane/gateway-disabled-response.d.ts.map +1 -0
- package/dist/platform/control-plane/gateway-disabled-response.js +24 -0
- package/dist/platform/control-plane/gateway-scope-enforcement.d.ts +68 -0
- package/dist/platform/control-plane/gateway-scope-enforcement.d.ts.map +1 -0
- package/dist/platform/control-plane/gateway-scope-enforcement.js +91 -0
- package/dist/platform/control-plane/gateway-utils.d.ts +17 -0
- package/dist/platform/control-plane/gateway-utils.d.ts.map +1 -1
- package/dist/platform/control-plane/gateway-utils.js +30 -0
- package/dist/platform/control-plane/gateway.d.ts +12 -2
- package/dist/platform/control-plane/gateway.d.ts.map +1 -1
- package/dist/platform/control-plane/gateway.js +27 -31
- package/dist/platform/control-plane/index.d.ts +6 -1
- package/dist/platform/control-plane/index.d.ts.map +1 -1
- package/dist/platform/control-plane/index.js +4 -0
- package/dist/platform/control-plane/invoke-input-validation.d.ts +56 -0
- package/dist/platform/control-plane/invoke-input-validation.d.ts.map +1 -0
- package/dist/platform/control-plane/invoke-input-validation.js +163 -0
- package/dist/platform/control-plane/method-catalog-admin.d.ts.map +1 -1
- package/dist/platform/control-plane/method-catalog-admin.js +12 -1
- package/dist/platform/control-plane/method-catalog-calendar.d.ts +16 -0
- package/dist/platform/control-plane/method-catalog-calendar.d.ts.map +1 -1
- package/dist/platform/control-plane/method-catalog-calendar.js +21 -0
- package/dist/platform/control-plane/method-catalog-channels.d.ts.map +1 -1
- package/dist/platform/control-plane/method-catalog-channels.js +32 -3
- package/dist/platform/control-plane/method-catalog-control-automation.d.ts.map +1 -1
- package/dist/platform/control-plane/method-catalog-control-automation.js +19 -34
- package/dist/platform/control-plane/method-catalog-control-companion.d.ts +15 -0
- package/dist/platform/control-plane/method-catalog-control-companion.d.ts.map +1 -0
- package/dist/platform/control-plane/method-catalog-control-companion.js +133 -0
- package/dist/platform/control-plane/method-catalog-control-core.d.ts.map +1 -1
- package/dist/platform/control-plane/method-catalog-control-core.js +104 -122
- package/dist/platform/control-plane/method-catalog-control.d.ts.map +1 -1
- package/dist/platform/control-plane/method-catalog-control.js +4 -0
- package/dist/platform/control-plane/method-catalog-email.d.ts +17 -0
- package/dist/platform/control-plane/method-catalog-email.d.ts.map +1 -1
- package/dist/platform/control-plane/method-catalog-email.js +21 -0
- package/dist/platform/control-plane/method-catalog-events.d.ts +28 -0
- package/dist/platform/control-plane/method-catalog-events.d.ts.map +1 -1
- package/dist/platform/control-plane/method-catalog-events.js +74 -1
- package/dist/platform/control-plane/method-catalog-fleet.d.ts +24 -0
- package/dist/platform/control-plane/method-catalog-fleet.d.ts.map +1 -0
- package/dist/platform/control-plane/method-catalog-fleet.js +65 -0
- package/dist/platform/control-plane/method-catalog-route-reconcile.d.ts +84 -0
- package/dist/platform/control-plane/method-catalog-route-reconcile.d.ts.map +1 -0
- package/dist/platform/control-plane/method-catalog-route-reconcile.js +103 -0
- package/dist/platform/control-plane/method-catalog-shared.d.ts +29 -0
- package/dist/platform/control-plane/method-catalog-shared.d.ts.map +1 -1
- package/dist/platform/control-plane/method-catalog.d.ts +9 -0
- package/dist/platform/control-plane/method-catalog.d.ts.map +1 -1
- package/dist/platform/control-plane/method-catalog.js +32 -3
- package/dist/platform/control-plane/operator-contract-schemas-admin.d.ts +8 -0
- package/dist/platform/control-plane/operator-contract-schemas-admin.d.ts.map +1 -1
- package/dist/platform/control-plane/operator-contract-schemas-admin.js +22 -1
- package/dist/platform/control-plane/operator-contract-schemas-fleet.d.ts +18 -0
- package/dist/platform/control-plane/operator-contract-schemas-fleet.d.ts.map +1 -0
- package/dist/platform/control-plane/operator-contract-schemas-fleet.js +182 -0
- package/dist/platform/control-plane/operator-contract-schemas-permissions.d.ts.map +1 -1
- package/dist/platform/control-plane/operator-contract-schemas-permissions.js +5 -0
- package/dist/platform/control-plane/operator-contract-schemas-runtime.d.ts +29 -0
- package/dist/platform/control-plane/operator-contract-schemas-runtime.d.ts.map +1 -1
- package/dist/platform/control-plane/operator-contract-schemas-runtime.js +57 -3
- package/dist/platform/control-plane/operator-contract-schemas.d.ts +1 -0
- package/dist/platform/control-plane/operator-contract-schemas.d.ts.map +1 -1
- package/dist/platform/control-plane/operator-contract-schemas.js +1 -0
- package/dist/platform/control-plane/operator-contract.d.ts.map +1 -1
- package/dist/platform/control-plane/operator-contract.js +8 -0
- package/dist/platform/control-plane/routes/checkpoints.d.ts +39 -0
- package/dist/platform/control-plane/routes/checkpoints.d.ts.map +1 -0
- package/dist/platform/control-plane/routes/checkpoints.js +166 -0
- package/dist/platform/control-plane/routes/fleet.d.ts +53 -0
- package/dist/platform/control-plane/routes/fleet.d.ts.map +1 -0
- package/dist/platform/control-plane/routes/fleet.js +153 -0
- package/dist/platform/control-plane/routes/gateway-verb-error.d.ts +30 -0
- package/dist/platform/control-plane/routes/gateway-verb-error.d.ts.map +1 -0
- package/dist/platform/control-plane/routes/gateway-verb-error.js +36 -0
- package/dist/platform/control-plane/routes/index.d.ts +0 -6
- package/dist/platform/control-plane/routes/index.d.ts.map +1 -1
- package/dist/platform/control-plane/routes/index.js +5 -5
- package/dist/platform/control-plane/routes/invocation-params.d.ts +23 -0
- package/dist/platform/control-plane/routes/invocation-params.d.ts.map +1 -0
- package/dist/platform/control-plane/routes/invocation-params.js +9 -0
- package/dist/platform/control-plane/routes/register-w3-s2.d.ts +26 -0
- package/dist/platform/control-plane/routes/register-w3-s2.d.ts.map +1 -0
- package/dist/platform/control-plane/routes/register-w3-s2.js +8 -0
- package/dist/platform/control-plane/routes/session-search.d.ts +37 -0
- package/dist/platform/control-plane/routes/session-search.d.ts.map +1 -0
- package/dist/platform/control-plane/routes/session-search.js +113 -0
- package/dist/platform/control-plane/session-broker-gc.d.ts +16 -0
- package/dist/platform/control-plane/session-broker-gc.d.ts.map +1 -1
- package/dist/platform/control-plane/session-broker-gc.js +23 -6
- package/dist/platform/control-plane/session-broker-helpers.d.ts +3 -3
- package/dist/platform/control-plane/session-broker-helpers.d.ts.map +1 -1
- package/dist/platform/control-plane/session-broker-inputs.d.ts +18 -0
- package/dist/platform/control-plane/session-broker-inputs.d.ts.map +1 -1
- package/dist/platform/control-plane/session-broker-inputs.js +34 -0
- package/dist/platform/control-plane/session-broker-sessions.d.ts +102 -3
- package/dist/platform/control-plane/session-broker-sessions.d.ts.map +1 -1
- package/dist/platform/control-plane/session-broker-sessions.js +179 -5
- package/dist/platform/control-plane/session-broker-state.d.ts +20 -1
- package/dist/platform/control-plane/session-broker-state.d.ts.map +1 -1
- package/dist/platform/control-plane/session-broker-state.js +67 -5
- package/dist/platform/control-plane/session-broker.d.ts +51 -38
- package/dist/platform/control-plane/session-broker.d.ts.map +1 -1
- package/dist/platform/control-plane/session-broker.js +183 -75
- package/dist/platform/control-plane/session-store-importer.d.ts +57 -0
- package/dist/platform/control-plane/session-store-importer.d.ts.map +1 -0
- package/dist/platform/control-plane/session-store-importer.js +227 -0
- package/dist/platform/control-plane/session-types.d.ts +142 -7
- package/dist/platform/control-plane/session-types.d.ts.map +1 -1
- package/dist/platform/core/adaptive-planner.d.ts +50 -0
- package/dist/platform/core/adaptive-planner.d.ts.map +1 -1
- package/dist/platform/core/adaptive-planner.js +49 -0
- package/dist/platform/core/execution-plan.d.ts +43 -1
- package/dist/platform/core/execution-plan.d.ts.map +1 -1
- package/dist/platform/core/execution-plan.js +46 -10
- package/dist/platform/core/index.d.ts +2 -0
- package/dist/platform/core/index.d.ts.map +1 -1
- package/dist/platform/core/index.js +2 -0
- package/dist/platform/core/orchestrator-runtime.d.ts +31 -0
- package/dist/platform/core/orchestrator-runtime.d.ts.map +1 -1
- package/dist/platform/core/orchestrator-tool-runtime.d.ts +7 -0
- package/dist/platform/core/orchestrator-tool-runtime.d.ts.map +1 -1
- package/dist/platform/core/orchestrator-tool-runtime.js +10 -0
- package/dist/platform/core/orchestrator-turn-loop.d.ts +35 -1
- package/dist/platform/core/orchestrator-turn-loop.d.ts.map +1 -1
- package/dist/platform/core/orchestrator-turn-loop.js +121 -3
- package/dist/platform/core/orchestrator.d.ts +67 -0
- package/dist/platform/core/orchestrator.d.ts.map +1 -1
- package/dist/platform/core/orchestrator.js +89 -1
- package/dist/platform/core/plan-decomposition.d.ts +196 -0
- package/dist/platform/core/plan-decomposition.d.ts.map +1 -0
- package/dist/platform/core/plan-decomposition.js +417 -0
- package/dist/platform/core/plan-proposal.d.ts +204 -0
- package/dist/platform/core/plan-proposal.d.ts.map +1 -0
- package/dist/platform/core/plan-proposal.js +296 -0
- package/dist/platform/core/wrfc-routing.d.ts +1 -0
- package/dist/platform/core/wrfc-routing.d.ts.map +1 -1
- package/dist/platform/core/wrfc-routing.js +51 -1
- package/dist/platform/daemon/boot.d.ts +63 -0
- package/dist/platform/daemon/boot.d.ts.map +1 -0
- package/dist/platform/daemon/boot.js +60 -0
- package/dist/platform/daemon/cli.js +2 -1
- package/dist/platform/daemon/control-plane.d.ts.map +1 -1
- package/dist/platform/daemon/control-plane.js +50 -1
- package/dist/platform/daemon/facade-composition.d.ts.map +1 -1
- package/dist/platform/daemon/facade-composition.js +6 -0
- package/dist/platform/daemon/facade.d.ts +18 -6
- package/dist/platform/daemon/facade.d.ts.map +1 -1
- package/dist/platform/daemon/facade.js +50 -43
- package/dist/platform/daemon/http/router-route-contexts.d.ts +1 -0
- package/dist/platform/daemon/http/router-route-contexts.d.ts.map +1 -1
- package/dist/platform/daemon/http/router-route-contexts.js +1 -0
- package/dist/platform/daemon/http/router-session-broker-adapter.d.ts +13 -0
- package/dist/platform/daemon/http/router-session-broker-adapter.d.ts.map +1 -0
- package/dist/platform/daemon/http/router-session-broker-adapter.js +27 -0
- package/dist/platform/daemon/http/router.d.ts +1 -1
- package/dist/platform/daemon/http/router.d.ts.map +1 -1
- package/dist/platform/daemon/http/router.js +7 -22
- package/dist/platform/daemon/http/runtime-route-types.d.ts +42 -4
- package/dist/platform/daemon/http/runtime-route-types.d.ts.map +1 -1
- package/dist/platform/daemon/index.d.ts +2 -0
- package/dist/platform/daemon/index.d.ts.map +1 -1
- package/dist/platform/daemon/index.js +1 -0
- package/dist/platform/daemon/service-manager.d.ts +16 -0
- package/dist/platform/daemon/service-manager.d.ts.map +1 -1
- package/dist/platform/daemon/service-manager.js +79 -15
- package/dist/platform/intelligence/tree-sitter/service.d.ts.map +1 -1
- package/dist/platform/intelligence/tree-sitter/service.js +16 -2
- package/dist/platform/knowledge/browser-history/readers.d.ts.map +1 -1
- package/dist/platform/knowledge/browser-history/readers.js +15 -5
- package/dist/platform/knowledge/knowledge-api.d.ts +26 -0
- package/dist/platform/knowledge/knowledge-api.d.ts.map +1 -1
- package/dist/platform/knowledge/knowledge-api.js +11 -0
- package/dist/platform/knowledge/project-planning/service.d.ts +14 -1
- package/dist/platform/knowledge/project-planning/service.d.ts.map +1 -1
- package/dist/platform/knowledge/project-planning/service.js +77 -0
- package/dist/platform/knowledge/project-planning/types.d.ts +32 -0
- package/dist/platform/knowledge/project-planning/types.d.ts.map +1 -1
- package/dist/platform/orchestration/bookkeeping.d.ts +12 -0
- package/dist/platform/orchestration/bookkeeping.d.ts.map +1 -0
- package/dist/platform/orchestration/bookkeeping.js +91 -0
- package/dist/platform/orchestration/budget.d.ts +22 -0
- package/dist/platform/orchestration/budget.d.ts.map +1 -0
- package/dist/platform/orchestration/budget.js +35 -0
- package/dist/platform/orchestration/cancellation.d.ts +31 -0
- package/dist/platform/orchestration/cancellation.d.ts.map +1 -0
- package/dist/platform/orchestration/cancellation.js +25 -0
- package/dist/platform/orchestration/controller-compat.d.ts +46 -0
- package/dist/platform/orchestration/controller-compat.d.ts.map +1 -0
- package/dist/platform/orchestration/controller-compat.js +27 -0
- package/dist/platform/orchestration/dirty-guard.d.ts +32 -0
- package/dist/platform/orchestration/dirty-guard.d.ts.map +1 -0
- package/dist/platform/orchestration/dirty-guard.js +147 -0
- package/dist/platform/orchestration/engine.d.ts +82 -0
- package/dist/platform/orchestration/engine.d.ts.map +1 -0
- package/dist/platform/orchestration/engine.js +623 -0
- package/dist/platform/orchestration/index.d.ts +20 -0
- package/dist/platform/orchestration/index.d.ts.map +1 -0
- package/dist/platform/orchestration/index.js +11 -0
- package/dist/platform/orchestration/persistence.d.ts +24 -0
- package/dist/platform/orchestration/persistence.d.ts.map +1 -0
- package/dist/platform/orchestration/persistence.js +179 -0
- package/dist/platform/orchestration/phase-runner.d.ts +114 -0
- package/dist/platform/orchestration/phase-runner.d.ts.map +1 -0
- package/dist/platform/orchestration/phase-runner.js +347 -0
- package/dist/platform/orchestration/proposal-workstream.d.ts +56 -0
- package/dist/platform/orchestration/proposal-workstream.d.ts.map +1 -0
- package/dist/platform/orchestration/proposal-workstream.js +76 -0
- package/dist/platform/orchestration/scheduler.d.ts +64 -0
- package/dist/platform/orchestration/scheduler.d.ts.map +1 -0
- package/dist/platform/orchestration/scheduler.js +73 -0
- package/dist/platform/orchestration/types.d.ts +535 -0
- package/dist/platform/orchestration/types.d.ts.map +1 -0
- package/dist/platform/orchestration/types.js +47 -0
- package/dist/platform/orchestration/worktree-isolation.d.ts +33 -0
- package/dist/platform/orchestration/worktree-isolation.d.ts.map +1 -0
- package/dist/platform/orchestration/worktree-isolation.js +248 -0
- package/dist/platform/presentation/glyphs.d.ts +91 -0
- package/dist/platform/presentation/glyphs.d.ts.map +1 -0
- package/dist/platform/presentation/glyphs.js +93 -0
- package/dist/platform/presentation/index.d.ts +28 -0
- package/dist/platform/presentation/index.d.ts.map +1 -0
- package/dist/platform/presentation/index.js +27 -0
- package/dist/platform/presentation/thinking-phrases.d.ts +12 -0
- package/dist/platform/presentation/thinking-phrases.d.ts.map +1 -0
- package/dist/platform/presentation/thinking-phrases.js +32 -0
- package/dist/platform/presentation/tones.d.ts +121 -0
- package/dist/platform/presentation/tones.d.ts.map +1 -0
- package/dist/platform/presentation/tones.js +145 -0
- package/dist/platform/presentation/waiting-wording.d.ts +54 -0
- package/dist/platform/presentation/waiting-wording.d.ts.map +1 -0
- package/dist/platform/presentation/waiting-wording.js +51 -0
- package/dist/platform/providers/runtime-snapshot.d.ts.map +1 -1
- package/dist/platform/providers/runtime-snapshot.js +12 -2
- package/dist/platform/runtime/bootstrap-services.d.ts +62 -2
- package/dist/platform/runtime/bootstrap-services.d.ts.map +1 -1
- package/dist/platform/runtime/bootstrap-services.js +217 -50
- package/dist/platform/runtime/daemon-version-compat.d.ts +39 -0
- package/dist/platform/runtime/daemon-version-compat.d.ts.map +1 -0
- package/dist/platform/runtime/daemon-version-compat.js +75 -0
- package/dist/platform/runtime/detached-daemon-runtime.d.ts +26 -0
- package/dist/platform/runtime/detached-daemon-runtime.d.ts.map +1 -0
- package/dist/platform/runtime/detached-daemon-runtime.js +49 -0
- package/dist/platform/runtime/emitters/communication.d.ts +11 -0
- package/dist/platform/runtime/emitters/communication.d.ts.map +1 -1
- package/dist/platform/runtime/emitters/communication.js +9 -0
- package/dist/platform/runtime/emitters/workflows.d.ts +1 -1
- package/dist/platform/runtime/emitters/workflows.d.ts.map +1 -1
- package/dist/platform/runtime/events/index.d.ts +13 -0
- package/dist/platform/runtime/events/index.d.ts.map +1 -1
- package/dist/platform/runtime/events/index.js +13 -0
- package/dist/platform/runtime/feature-flags/flags.d.ts.map +1 -1
- package/dist/platform/runtime/feature-flags/flags.js +56 -1
- package/dist/platform/runtime/fleet/adapters/agent.d.ts +56 -0
- package/dist/platform/runtime/fleet/adapters/agent.d.ts.map +1 -0
- package/dist/platform/runtime/fleet/adapters/agent.js +143 -0
- package/dist/platform/runtime/fleet/adapters/automation.d.ts +30 -0
- package/dist/platform/runtime/fleet/adapters/automation.d.ts.map +1 -0
- package/dist/platform/runtime/fleet/adapters/automation.js +41 -0
- package/dist/platform/runtime/fleet/adapters/background-process.d.ts +12 -0
- package/dist/platform/runtime/fleet/adapters/background-process.d.ts.map +1 -0
- package/dist/platform/runtime/fleet/adapters/background-process.js +46 -0
- package/dist/platform/runtime/fleet/adapters/code-index.d.ts +21 -0
- package/dist/platform/runtime/fleet/adapters/code-index.d.ts.map +1 -0
- package/dist/platform/runtime/fleet/adapters/code-index.js +44 -0
- package/dist/platform/runtime/fleet/adapters/orchestration.d.ts +69 -0
- package/dist/platform/runtime/fleet/adapters/orchestration.d.ts.map +1 -0
- package/dist/platform/runtime/fleet/adapters/orchestration.js +329 -0
- package/dist/platform/runtime/fleet/adapters/schedule.d.ts +14 -0
- package/dist/platform/runtime/fleet/adapters/schedule.d.ts.map +1 -0
- package/dist/platform/runtime/fleet/adapters/schedule.js +28 -0
- package/dist/platform/runtime/fleet/adapters/trigger.d.ts +12 -0
- package/dist/platform/runtime/fleet/adapters/trigger.d.ts.map +1 -0
- package/dist/platform/runtime/fleet/adapters/trigger.js +22 -0
- package/dist/platform/runtime/fleet/adapters/watcher.d.ts +13 -0
- package/dist/platform/runtime/fleet/adapters/watcher.d.ts.map +1 -0
- package/dist/platform/runtime/fleet/adapters/watcher.js +47 -0
- package/dist/platform/runtime/fleet/adapters/workflow.d.ts +11 -0
- package/dist/platform/runtime/fleet/adapters/workflow.d.ts.map +1 -0
- package/dist/platform/runtime/fleet/adapters/workflow.js +34 -0
- package/dist/platform/runtime/fleet/adapters/wrfc.d.ts +35 -0
- package/dist/platform/runtime/fleet/adapters/wrfc.d.ts.map +1 -0
- package/dist/platform/runtime/fleet/adapters/wrfc.js +275 -0
- package/dist/platform/runtime/fleet/index.d.ts +10 -0
- package/dist/platform/runtime/fleet/index.d.ts.map +1 -0
- package/dist/platform/runtime/fleet/index.js +6 -0
- package/dist/platform/runtime/fleet/registry.d.ts +113 -0
- package/dist/platform/runtime/fleet/registry.d.ts.map +1 -0
- package/dist/platform/runtime/fleet/registry.js +664 -0
- package/dist/platform/runtime/fleet/types.d.ts +199 -0
- package/dist/platform/runtime/fleet/types.d.ts.map +1 -0
- package/dist/platform/runtime/fleet/types.js +2 -0
- package/dist/platform/runtime/operator-client.d.ts +20 -2
- package/dist/platform/runtime/operator-client.d.ts.map +1 -1
- package/dist/platform/runtime/operator-client.js +11 -1
- package/dist/platform/runtime/provider-accounts/registry.d.ts.map +1 -1
- package/dist/platform/runtime/provider-accounts/registry.js +11 -1
- package/dist/platform/runtime/runtime-knowledge-api.d.ts +1 -1
- package/dist/platform/runtime/runtime-knowledge-api.d.ts.map +1 -1
- package/dist/platform/runtime/runtime-knowledge-api.js +1 -0
- package/dist/platform/runtime/services.d.ts +48 -0
- package/dist/platform/runtime/services.d.ts.map +1 -1
- package/dist/platform/runtime/services.js +95 -2
- package/dist/platform/runtime/session-spine/client.d.ts +234 -0
- package/dist/platform/runtime/session-spine/client.d.ts.map +1 -0
- package/dist/platform/runtime/session-spine/client.js +449 -0
- package/dist/platform/runtime/session-spine/index.d.ts +12 -0
- package/dist/platform/runtime/session-spine/index.d.ts.map +1 -0
- package/dist/platform/runtime/session-spine/index.js +11 -0
- package/dist/platform/runtime/session-spine/union-cache.d.ts +225 -0
- package/dist/platform/runtime/session-spine/union-cache.d.ts.map +1 -0
- package/dist/platform/runtime/session-spine/union-cache.js +333 -0
- package/dist/platform/runtime/shell-command-ops.d.ts +3 -1
- package/dist/platform/runtime/shell-command-ops.d.ts.map +1 -1
- package/dist/platform/runtime/transports/daemon-http-client-validators.d.ts.map +1 -1
- package/dist/platform/runtime/transports/daemon-http-client-validators.js +22 -0
- package/dist/platform/runtime/transports/daemon-http-client.d.ts.map +1 -1
- package/dist/platform/runtime/transports/daemon-http-client.js +25 -2
- package/dist/platform/runtime/transports/http-types.d.ts +9 -2
- package/dist/platform/runtime/transports/http-types.d.ts.map +1 -1
- package/dist/platform/state/canonical-memory.d.ts +95 -0
- package/dist/platform/state/canonical-memory.d.ts.map +1 -0
- package/dist/platform/state/canonical-memory.js +155 -0
- package/dist/platform/state/code-index-chunking.d.ts +49 -0
- package/dist/platform/state/code-index-chunking.d.ts.map +1 -0
- package/dist/platform/state/code-index-chunking.js +111 -0
- package/dist/platform/state/code-index-db.d.ts +53 -0
- package/dist/platform/state/code-index-db.d.ts.map +1 -0
- package/dist/platform/state/code-index-db.js +101 -0
- package/dist/platform/state/code-index-reindex.d.ts +73 -0
- package/dist/platform/state/code-index-reindex.d.ts.map +1 -0
- package/dist/platform/state/code-index-reindex.js +156 -0
- package/dist/platform/state/code-index-store.d.ts +175 -0
- package/dist/platform/state/code-index-store.d.ts.map +1 -0
- package/dist/platform/state/code-index-store.js +620 -0
- package/dist/platform/state/index.d.ts +12 -2
- package/dist/platform/state/index.d.ts.map +1 -1
- package/dist/platform/state/index.js +6 -1
- package/dist/platform/state/knowledge-injection.d.ts +23 -0
- package/dist/platform/state/knowledge-injection.d.ts.map +1 -1
- package/dist/platform/state/knowledge-injection.js +34 -19
- package/dist/platform/state/memory-recall-contract.d.ts +63 -0
- package/dist/platform/state/memory-recall-contract.d.ts.map +1 -0
- package/dist/platform/state/memory-recall-contract.js +94 -0
- package/dist/platform/state/memory-store.d.ts +2 -0
- package/dist/platform/state/memory-store.d.ts.map +1 -1
- package/dist/platform/state/memory-store.js +4 -0
- package/dist/platform/state/memory-vector-store.d.ts +1 -13
- package/dist/platform/state/memory-vector-store.d.ts.map +1 -1
- package/dist/platform/state/memory-vector-store.js +18 -39
- package/dist/platform/state/sqlite-store.d.ts +2 -0
- package/dist/platform/state/sqlite-store.d.ts.map +1 -1
- package/dist/platform/state/sqlite-store.js +4 -0
- package/dist/platform/state/sqlite-vec-loader.d.ts +25 -0
- package/dist/platform/state/sqlite-vec-loader.d.ts.map +1 -0
- package/dist/platform/state/sqlite-vec-loader.js +43 -0
- package/dist/platform/state/vibe-projection.d.ts +67 -0
- package/dist/platform/state/vibe-projection.d.ts.map +1 -0
- package/dist/platform/state/vibe-projection.js +115 -0
- package/dist/platform/tools/agent/index.d.ts.map +1 -1
- package/dist/platform/tools/agent/index.js +8 -0
- package/dist/platform/tools/agent/manager.d.ts +140 -1
- package/dist/platform/tools/agent/manager.d.ts.map +1 -1
- package/dist/platform/tools/agent/manager.js +143 -1
- package/dist/platform/tools/agent/schema.d.ts +26 -0
- package/dist/platform/tools/agent/schema.d.ts.map +1 -1
- package/dist/platform/tools/agent/schema.js +2 -2
- package/dist/platform/tools/agent/wrfc-batch-policy.d.ts +13 -0
- package/dist/platform/tools/agent/wrfc-batch-policy.d.ts.map +1 -1
- package/dist/platform/tools/agent/wrfc-batch-policy.js +60 -0
- package/dist/platform/tools/exec/runtime.d.ts +10 -0
- package/dist/platform/tools/exec/runtime.d.ts.map +1 -1
- package/dist/platform/tools/exec/runtime.js +161 -49
- package/dist/platform/tools/exec/schema.d.ts +3 -1
- package/dist/platform/tools/exec/schema.d.ts.map +1 -1
- package/dist/platform/tools/exec/schema.js +2 -1
- package/dist/platform/tools/fetch/runtime.d.ts +7 -0
- package/dist/platform/tools/fetch/runtime.d.ts.map +1 -1
- package/dist/platform/tools/fetch/runtime.js +8 -6
- package/dist/platform/tools/index.d.ts +2 -0
- package/dist/platform/tools/index.d.ts.map +1 -1
- package/dist/platform/tools/index.js +2 -0
- package/dist/platform/tools/registry.d.ts +9 -3
- package/dist/platform/tools/registry.d.ts.map +1 -1
- package/dist/platform/tools/registry.js +9 -3
- package/dist/platform/tools/state/index.d.ts +9 -0
- package/dist/platform/tools/state/index.d.ts.map +1 -1
- package/dist/platform/tools/state/index.js +60 -3
- package/dist/platform/types/foundation-contract.d.ts +1 -1
- package/dist/platform/types/foundation-contract.d.ts.map +1 -1
- package/dist/platform/types/index.d.ts +1 -1
- package/dist/platform/types/index.d.ts.map +1 -1
- package/dist/platform/types/tools.d.ts +14 -1
- package/dist/platform/types/tools.d.ts.map +1 -1
- package/dist/platform/version.js +1 -1
- package/package.json +29 -9
- package/dist/platform/control-plane/routes/automation.d.ts +0 -3
- package/dist/platform/control-plane/routes/automation.d.ts.map +0 -1
- package/dist/platform/control-plane/routes/automation.js +0 -63
- package/dist/platform/control-plane/routes/context.d.ts +0 -2
- package/dist/platform/control-plane/routes/context.d.ts.map +0 -1
- package/dist/platform/control-plane/routes/context.js +0 -1
- package/dist/platform/control-plane/routes/operator.d.ts +0 -8
- package/dist/platform/control-plane/routes/operator.d.ts.map +0 -1
- package/dist/platform/control-plane/routes/operator.js +0 -415
- package/dist/platform/control-plane/routes/remote.d.ts +0 -3
- package/dist/platform/control-plane/routes/remote.d.ts.map +0 -1
- package/dist/platform/control-plane/routes/remote.js +0 -35
- package/dist/platform/control-plane/routes/sessions.d.ts +0 -3
- package/dist/platform/control-plane/routes/sessions.d.ts.map +0 -1
- package/dist/platform/control-plane/routes/sessions.js +0 -43
- package/dist/platform/control-plane/routes/tasks.d.ts +0 -3
- package/dist/platform/control-plane/routes/tasks.d.ts.map +0 -1
- package/dist/platform/control-plane/routes/tasks.js +0 -22
|
@@ -13,8 +13,10 @@ import { ConsecutiveErrorBreaker } from '../core/circuit-breaker.js';
|
|
|
13
13
|
import { isRateLimitOrQuotaError, isContextSizeExceededError, isNetworkTransportError } from '../types/errors.js';
|
|
14
14
|
import { AgentSession } from './session.js';
|
|
15
15
|
import { estimateTokens, estimateConversationTokens, compactSmallWindow, } from '../core/context-compaction.js';
|
|
16
|
+
import { emitCommunicationConsumed } from '../runtime/emitters/index.js';
|
|
16
17
|
import { summarizeToolArgs } from './orchestrator-utils.js';
|
|
17
18
|
import { buildLayeredOrchestratorSystemPrompt, buildOrchestratorSystemPrompt } from './orchestrator-prompts.js';
|
|
19
|
+
import { buildPerTurnKnowledgeInjection, defaultTurnKnowledgeBudgetTokens, recordTurnInjection, DEFAULT_TURN_KNOWLEDGE_RELEVANCE_FLOOR, } from './turn-knowledge-injection.js';
|
|
18
20
|
import { summarizeError } from '../utils/error-display.js';
|
|
19
21
|
import { resolveScopedDirectory } from '../runtime/surface-root.js';
|
|
20
22
|
import { appendGoodVibesRuntimeAwarenessPrompt } from '../tools/goodvibes-runtime/index.js';
|
|
@@ -133,8 +135,16 @@ async function executeToolCalls(toolCalls, toolRegistry, session, turn, record,
|
|
|
133
135
|
}
|
|
134
136
|
const callSig = `${call.name}::${JSON.stringify(call.arguments)}`;
|
|
135
137
|
try {
|
|
136
|
-
const
|
|
138
|
+
const signal = context.getCancellationSignal?.(record.id);
|
|
139
|
+
const result = await toolRegistry.execute(call.id, call.name, call.arguments, signal ? { signal } : undefined);
|
|
137
140
|
results.push({ ...result, callId: call.id });
|
|
141
|
+
// Stage B: schedule a debounced reindex of any touched file(s). Never awaited.
|
|
142
|
+
try {
|
|
143
|
+
context.onToolExecuted?.(call.name, call.arguments, result.success !== false);
|
|
144
|
+
}
|
|
145
|
+
catch (hookErr) {
|
|
146
|
+
logger.warn('onToolExecuted hook error', { tool: call.name, error: summarizeError(hookErr) });
|
|
147
|
+
}
|
|
138
148
|
session.appendMessage({
|
|
139
149
|
type: 'tool_execution',
|
|
140
150
|
turn,
|
|
@@ -291,7 +301,23 @@ export async function runAgentTask(context, record) {
|
|
|
291
301
|
: 0;
|
|
292
302
|
conversation = new ConversationManager();
|
|
293
303
|
conversation.addUserMessage(record.task);
|
|
304
|
+
// Wave-3 Part C6 bridge: hand AgentManager a live accessor onto THIS
|
|
305
|
+
// ConversationManager instance so a fleet tab can render a full-fidelity
|
|
306
|
+
// transcript while the agent runs. `activeConversation` is a separate
|
|
307
|
+
// const (rather than closing over the outer `let conversation`) so the
|
|
308
|
+
// closure's type is non-nullable without a runtime assertion.
|
|
309
|
+
const activeConversation = conversation;
|
|
310
|
+
context.registerConversationSource?.(record.id, () => activeConversation.getMessageSnapshot());
|
|
294
311
|
let systemPrompt = buildOrchestratorSystemPrompt(record, undefined, context);
|
|
312
|
+
// Wave-5 (wo801, W5.1) per-turn passive-injection state. `knowledgeIdsAlreadySurfaced`
|
|
313
|
+
// seeds from the spawn-time baseline (record.knowledgeInjections, just populated by the
|
|
314
|
+
// call above) and grows with every id a later turn injects, so no record is ever listed
|
|
315
|
+
// twice across the whole run. `priorTurnKnowledgeBlock` is the last successfully-built
|
|
316
|
+
// block, reused verbatim on turns where nothing new arrived (see newUserInputThisTurn
|
|
317
|
+
// below) — it is composed onto the CURRENT `systemPrompt` fresh every turn (see
|
|
318
|
+
// composeTurnSystemPrompt), never written back into the cached `systemPrompt` let itself.
|
|
319
|
+
const knowledgeIdsAlreadySurfaced = new Set((record.knowledgeInjections ?? []).map((entry) => entry.id));
|
|
320
|
+
let priorTurnKnowledgeBlock = null;
|
|
295
321
|
let continueLoop = true;
|
|
296
322
|
let turn = 0;
|
|
297
323
|
record.progress = 'Turn 1 · Thinking…';
|
|
@@ -338,6 +364,16 @@ export async function runAgentTask(context, record) {
|
|
|
338
364
|
}
|
|
339
365
|
session.appendMessage({ type: 'llm_request', turn, messageCount: conversation.getMessagesForLLM().length, timestamp: new Date().toISOString() });
|
|
340
366
|
const pending = context.messageBus.getMessages(record.id);
|
|
367
|
+
// Steers drained into the conversation THIS turn, awaiting the "consumed"
|
|
368
|
+
// signal below — deferred until the turn's chat call actually succeeds.
|
|
369
|
+
// See the comment at the emission site for why this can't fire here.
|
|
370
|
+
const drainedSteerMessageIds = [];
|
|
371
|
+
// Wave-5 (wo801, W5.1): true when this turn actually added new content to the
|
|
372
|
+
// conversation the model will see — turn 1 (the initial task) or any steer/directive
|
|
373
|
+
// drained just above. Gates per-turn knowledge re-retrieval: no new input means the
|
|
374
|
+
// evolving-conversation query would be identical to last turn's, so the prior turn's
|
|
375
|
+
// block is reused verbatim instead of re-running retrieval for no behavioral gain.
|
|
376
|
+
let newUserInputThisTurn = turn === 1;
|
|
341
377
|
for (const msg of pending) {
|
|
342
378
|
// Skip the agent's own broadcasts and any message already injected on a
|
|
343
379
|
// prior turn so each directive is surfaced to the model exactly once.
|
|
@@ -346,14 +382,116 @@ export async function runAgentTask(context, record) {
|
|
|
346
382
|
if (injectedMessageIds.has(msg.id))
|
|
347
383
|
continue;
|
|
348
384
|
injectedMessageIds.add(msg.id);
|
|
349
|
-
|
|
350
|
-
|
|
385
|
+
newUserInputThisTurn = true;
|
|
386
|
+
if (msg.kind === 'steer') {
|
|
387
|
+
// A human steer (ProcessRegistry.steer) is a genuine user turn, not
|
|
388
|
+
// an inter-agent directive — inject it verbatim, with none of the
|
|
389
|
+
// "[Kind from sender]" framing used for agent-to-agent messages.
|
|
390
|
+
conversation.addUserMessage(msg.content);
|
|
391
|
+
drainedSteerMessageIds.push(msg.id);
|
|
392
|
+
}
|
|
393
|
+
else {
|
|
394
|
+
const kindLabel = (msg.kind[0] ?? '').toUpperCase() + msg.kind.slice(1);
|
|
395
|
+
conversation.addUserMessage(`[${kindLabel} from ${msg.from}]: ${msg.content}`);
|
|
396
|
+
}
|
|
351
397
|
}
|
|
352
|
-
|
|
398
|
+
const contextWindowAwarenessEnabled = context.featureFlagManager?.isEnabled('agent-context-window-awareness') ?? true;
|
|
399
|
+
const passiveKnowledgeInjectionEnabled = context.featureFlagManager?.isEnabled('agent-passive-knowledge-injection') ?? true;
|
|
400
|
+
// Resolved once per turn (used by both the awareness check below and the per-turn
|
|
401
|
+
// knowledge budget), rather than only inside the awareness branch, so the passive-
|
|
402
|
+
// injection budget can derive "3% of context window" even when context-window
|
|
403
|
+
// awareness itself is disabled.
|
|
404
|
+
let contextWindowForTurn = 0;
|
|
405
|
+
if (contextWindowAwarenessEnabled || passiveKnowledgeInjectionEnabled) {
|
|
353
406
|
const modelDef = resolveContextWindowModelDefinition(providerRegistry, activeRoute);
|
|
354
|
-
|
|
355
|
-
systemPrompt = applyContextWindowAwareness(context, record, activeRoute.modelId, contextWindow, conversation, systemPrompt, toolTokens, turn);
|
|
407
|
+
contextWindowForTurn = context.providerRegistry.getContextWindowForModel(modelDef);
|
|
356
408
|
}
|
|
409
|
+
if (contextWindowAwarenessEnabled) {
|
|
410
|
+
systemPrompt = applyContextWindowAwareness(context, record, activeRoute.modelId, contextWindowForTurn, conversation, systemPrompt, toolTokens, turn);
|
|
411
|
+
}
|
|
412
|
+
// Wave-5 (wo801, W5.1): per-turn passive knowledge injection. Gated on the feature
|
|
413
|
+
// flag AND on there being new conversation input this turn; otherwise
|
|
414
|
+
// priorTurnKnowledgeBlock (unchanged) is reused. `priorTurnKnowledgeBlock` and
|
|
415
|
+
// `systemPrompt` are combined into a request-time-only string just below
|
|
416
|
+
// (composeTurnSystemPrompt) — the block is NEVER written back into the `systemPrompt`
|
|
417
|
+
// let, so it cannot compound turn over turn even across the emergency-compaction
|
|
418
|
+
// retry path (which DOES reassign `systemPrompt`) inside the chat-retry loop.
|
|
419
|
+
if (passiveKnowledgeInjectionEnabled && newUserInputThisTurn && context.memoryRegistry) {
|
|
420
|
+
const configuredBudget = context.passiveKnowledgeInjectionBudgetTokens
|
|
421
|
+
?? defaultTurnKnowledgeBudgetTokens(contextWindowForTurn);
|
|
422
|
+
let turnBudgetTokens = configuredBudget;
|
|
423
|
+
if (contextWindowAwarenessEnabled && contextWindowForTurn > 0) {
|
|
424
|
+
// Clamp the block's budget to whatever headroom is left under the SAME 85%
|
|
425
|
+
// compaction threshold applyContextWindowAwareness just enforced on the base
|
|
426
|
+
// prompt, so base+block can never silently exceed it even though the block is
|
|
427
|
+
// composed after that check ran (risk: B-tier token dishonesty otherwise).
|
|
428
|
+
const msgTokensForBudget = estimateConversationTokens(conversation.getMessagesForLLM());
|
|
429
|
+
const sysTokensForBudget = estimateTokens(systemPrompt);
|
|
430
|
+
const threshold = Math.floor(contextWindowForTurn * CONTEXT_COMPACT_THRESHOLD);
|
|
431
|
+
const headroomTokens = threshold - msgTokensForBudget - sysTokensForBudget - toolTokens;
|
|
432
|
+
turnBudgetTokens = Math.max(0, Math.min(configuredBudget, headroomTokens));
|
|
433
|
+
}
|
|
434
|
+
if (turnBudgetTokens > 0) {
|
|
435
|
+
const relevanceFloor = context.passiveKnowledgeInjectionRelevanceFloor ?? DEFAULT_TURN_KNOWLEDGE_RELEVANCE_FLOOR;
|
|
436
|
+
// Stage B: code hits share this turn's SAME budget/floor. Gated on the separate
|
|
437
|
+
// (default-off) code-injection flag AND the embedder's storage.codeIndexEnabled setting.
|
|
438
|
+
const codeInjectionEnabled = !!context.codeIndex
|
|
439
|
+
&& (context.featureFlagManager?.isEnabled('agent-passive-code-injection') ?? false)
|
|
440
|
+
&& (context.isCodeInjectionSettingEnabled?.() ?? true);
|
|
441
|
+
const { block, record: turnInjectionRecord } = buildPerTurnKnowledgeInjection({
|
|
442
|
+
memoryRegistry: context.memoryRegistry,
|
|
443
|
+
task: record.task,
|
|
444
|
+
writeScope: record.writeScope ?? [],
|
|
445
|
+
conversationTail: conversation.getMessagesForLLM(),
|
|
446
|
+
budgetTokens: turnBudgetTokens,
|
|
447
|
+
relevanceFloor,
|
|
448
|
+
alreadyInjectedIds: [...knowledgeIdsAlreadySurfaced],
|
|
449
|
+
turn,
|
|
450
|
+
codeIndex: context.codeIndex,
|
|
451
|
+
codeInjectionEnabled,
|
|
452
|
+
});
|
|
453
|
+
priorTurnKnowledgeBlock = block;
|
|
454
|
+
for (const id of turnInjectionRecord.injectedIds)
|
|
455
|
+
knowledgeIdsAlreadySurfaced.add(id);
|
|
456
|
+
record.turnInjections = recordTurnInjection(record.turnInjections, turnInjectionRecord);
|
|
457
|
+
session.appendMessage({ type: 'knowledge_injection', ...turnInjectionRecord });
|
|
458
|
+
}
|
|
459
|
+
else {
|
|
460
|
+
// Hard no-op: no budget headroom this turn. Never call into retrieval for a
|
|
461
|
+
// budget that's already known to be zero, and never claim a block that can't
|
|
462
|
+
// exist — no record, no session message, prior block cleared so the composed
|
|
463
|
+
// prompt below falls back to the base systemPrompt exactly.
|
|
464
|
+
priorTurnKnowledgeBlock = null;
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
// Wave-5 (wo801, W5.1): compose the per-turn knowledge block onto the base
|
|
468
|
+
// systemPrompt fresh at EVERY call site (including each chat-retry iteration below),
|
|
469
|
+
// instead of hoisting a single `const turnSystemPrompt` computed once before the
|
|
470
|
+
// retry loop. This matters because the emergency-compaction retry path inside that
|
|
471
|
+
// loop reassigns the outer `systemPrompt` let (buildLayeredOrchestratorSystemPrompt)
|
|
472
|
+
// — a hoisted const would go stale and keep resubmitting the pre-compaction prompt,
|
|
473
|
+
// silently defeating that retry. Composing here also re-validates fit on every call:
|
|
474
|
+
// if base+block would exceed the SAME 85% compaction threshold applyContextWindowAwareness
|
|
475
|
+
// enforces (using live, current-call token counts, not turn-start estimates), the block
|
|
476
|
+
// is dropped for that call only — this is the safety net for a REUSED block (one that
|
|
477
|
+
// was sized against a headroom estimate one or more turns ago and may no longer fit,
|
|
478
|
+
// e.g. after several no-new-input turns of tool-result growth). It never mutates
|
|
479
|
+
// `priorTurnKnowledgeBlock` or the stored TurnInjectionRecord, both of which honestly
|
|
480
|
+
// reflect what retrieval computed at the time it ran.
|
|
481
|
+
const composeTurnSystemPrompt = (base) => {
|
|
482
|
+
if (!priorTurnKnowledgeBlock)
|
|
483
|
+
return base;
|
|
484
|
+
if (contextWindowAwarenessEnabled && contextWindowForTurn > 0) {
|
|
485
|
+
const liveMsgTokens = estimateConversationTokens(activeConversation.getMessagesForLLM());
|
|
486
|
+
const liveSysTokens = estimateTokens(base);
|
|
487
|
+
const liveBlockTokens = estimateTokens(priorTurnKnowledgeBlock);
|
|
488
|
+
const threshold = Math.floor(contextWindowForTurn * CONTEXT_COMPACT_THRESHOLD);
|
|
489
|
+
if (liveMsgTokens + liveSysTokens + liveBlockTokens + toolTokens > threshold) {
|
|
490
|
+
return base;
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
return `${base}\n\n${priorTurnKnowledgeBlock}`;
|
|
494
|
+
};
|
|
357
495
|
let response;
|
|
358
496
|
{
|
|
359
497
|
let networkAttempt = 0;
|
|
@@ -380,7 +518,7 @@ export async function runAgentTask(context, record) {
|
|
|
380
518
|
model: activeRoute.modelId,
|
|
381
519
|
messages: conversation.getMessagesForLLM(),
|
|
382
520
|
tools: toolDefinitions.length > 0 ? toolDefinitions : undefined,
|
|
383
|
-
systemPrompt: appendGoodVibesRuntimeAwarenessPrompt(systemPrompt),
|
|
521
|
+
systemPrompt: appendGoodVibesRuntimeAwarenessPrompt(composeTurnSystemPrompt(systemPrompt)),
|
|
384
522
|
...(record.reasoningEffort ? { reasoningEffort: record.reasoningEffort } : {}),
|
|
385
523
|
onDelta,
|
|
386
524
|
});
|
|
@@ -461,6 +599,24 @@ export async function runAgentTask(context, record) {
|
|
|
461
599
|
record.streamingContent = undefined;
|
|
462
600
|
record.progress = `Turn ${turn} · Thinking…`;
|
|
463
601
|
}
|
|
602
|
+
// Honest "consumed at boundary" signal, emitted here (not at drain time
|
|
603
|
+
// above) because this is the first point in the turn where the chat
|
|
604
|
+
// call is KNOWN to have succeeded. If the call above exhausted its
|
|
605
|
+
// retries/fallbacks, it throws and unwinds out of this function (caught
|
|
606
|
+
// by the outer try/catch → handleAgentRunFailure) without ever reaching
|
|
607
|
+
// this line — so a steer drained into a turn whose chat then fails
|
|
608
|
+
// never gets a consumed signal it didn't earn. Never emit this from
|
|
609
|
+
// AgentMessageBus.send() itself — that fires eagerly, before the agent
|
|
610
|
+
// has any chance to see the message.
|
|
611
|
+
if (context.runtimeBus) {
|
|
612
|
+
for (const messageId of drainedSteerMessageIds) {
|
|
613
|
+
emitCommunicationConsumed(context.runtimeBus, context.emitterContext(record.id), {
|
|
614
|
+
messageId,
|
|
615
|
+
agentId: record.id,
|
|
616
|
+
turn,
|
|
617
|
+
});
|
|
618
|
+
}
|
|
619
|
+
}
|
|
464
620
|
session.appendMessage({ type: 'llm_response', turn, contentLength: response.content.length, toolCallCount: response.toolCalls.length, usage: response.usage, timestamp: new Date().toISOString() });
|
|
465
621
|
record.usage = {
|
|
466
622
|
inputTokens: (record.usage?.inputTokens ?? 0) + response.usage.inputTokens,
|
|
@@ -539,4 +695,13 @@ export async function runAgentTask(context, record) {
|
|
|
539
695
|
catch (err) {
|
|
540
696
|
await handleAgentRunFailure(context, record, conversation, session, preAgentProcessIds, err);
|
|
541
697
|
}
|
|
698
|
+
finally {
|
|
699
|
+
// Wave-3 Part C6 bridge: release on EVERY exit path (normal completion,
|
|
700
|
+
// the mid-loop cancellation/MAX_TURNS early returns above, and the catch
|
|
701
|
+
// above) so the live source is never retained past the run and a final
|
|
702
|
+
// snapshot always lands in AgentManager's retention ring. A no-op when
|
|
703
|
+
// register was never called (e.g. failure before the ConversationManager
|
|
704
|
+
// was created).
|
|
705
|
+
context.releaseConversationSource?.(record.id);
|
|
706
|
+
}
|
|
542
707
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ToolRegistry } from '../tools/registry.js';
|
|
2
2
|
import type { ConfigManager } from '../config/manager.js';
|
|
3
|
+
import type { ConversationMessageSnapshot } from '../core/conversation.js';
|
|
3
4
|
import type { ProviderRegistry } from '../providers/registry.js';
|
|
4
5
|
import { AgentMessageBus } from './message-bus.js';
|
|
5
6
|
import type { ChannelPluginRegistry } from '../channels/index.js';
|
|
@@ -10,6 +11,29 @@ import type { ToolLLM } from '../config/tool-llm.js';
|
|
|
10
11
|
import type { FeatureFlagManager } from '../runtime/feature-flags/manager.js';
|
|
11
12
|
import type { RuntimeEventBus } from '../runtime/events/index.js';
|
|
12
13
|
export { summarizeToolArgs } from './orchestrator-utils.js';
|
|
14
|
+
/**
|
|
15
|
+
* Wave-3 Part C6 bridge: where AgentOrchestrator forwards a running agent's
|
|
16
|
+
* live conversation-snapshot accessor. In production this is AgentManager's
|
|
17
|
+
* registerConversationSource/releaseConversationSource, wired post-
|
|
18
|
+
* construction in runtime/services.ts (AgentOrchestrator is constructed
|
|
19
|
+
* before AgentManager there, so this is a setter rather than a constructor
|
|
20
|
+
* dependency — same pattern as setRuntimeBus).
|
|
21
|
+
*/
|
|
22
|
+
export interface AgentConversationSink {
|
|
23
|
+
readonly register: (agentId: string, source: () => ConversationMessageSnapshot[]) => void;
|
|
24
|
+
readonly release: (agentId: string) => void;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Wave-4 cooperative cancellation bridge (wo701): where AgentOrchestrator
|
|
28
|
+
* looks up a per-agent AbortSignal registered by an orchestration engine's
|
|
29
|
+
* work-item run. Same shape/wiring precedent as AgentConversationSink — a
|
|
30
|
+
* setter rather than a constructor dependency, wired post-construction in
|
|
31
|
+
* runtime/services.ts (production backing is
|
|
32
|
+
* AgentManager.registerCancellationSignal/getCancellationSignal).
|
|
33
|
+
*/
|
|
34
|
+
export interface AgentCancellationSource {
|
|
35
|
+
readonly get: (agentId: string) => AbortSignal | undefined;
|
|
36
|
+
}
|
|
13
37
|
type AgentOrchestratorToolDeps = {
|
|
14
38
|
readonly fileCache: FileStateCache;
|
|
15
39
|
readonly projectIndex: ProjectIndex;
|
|
@@ -24,6 +48,9 @@ type AgentOrchestratorToolDeps = {
|
|
|
24
48
|
readonly remoteRunnerRegistry?: import('../runtime/remote/index.js').RemoteRunnerRegistry | undefined;
|
|
25
49
|
readonly knowledgeService?: import('../knowledge/index.js').KnowledgeService | undefined;
|
|
26
50
|
readonly memoryRegistry?: import('../state/index.js').MemoryRegistry | undefined;
|
|
51
|
+
readonly codeIndex?: import('./turn-knowledge-injection.js').TurnCodeIndexSource | undefined;
|
|
52
|
+
readonly isCodeInjectionSettingEnabled?: (() => boolean) | undefined;
|
|
53
|
+
readonly codeIndexReindexScheduler?: Pick<import('../state/code-index-reindex.js').CodeIndexReindexScheduler, 'onToolExecuted'> | undefined;
|
|
27
54
|
readonly sessionOrchestration: import('../sessions/orchestration/index.js').CrossSessionTaskRegistry;
|
|
28
55
|
readonly archetypeLoader?: import('./archetypes.js').ArchetypeLoader | undefined;
|
|
29
56
|
readonly configManager?: ConfigManager | undefined;
|
|
@@ -45,11 +72,22 @@ type AgentOrchestratorToolDeps = {
|
|
|
45
72
|
* `orchestrator-runner.ts`; this class owns shared registry/state wiring.
|
|
46
73
|
*/
|
|
47
74
|
export declare class AgentOrchestrator {
|
|
48
|
-
|
|
75
|
+
/**
|
|
76
|
+
* Keyed by working directory. A ToolRegistry is permanently bound to one
|
|
77
|
+
* cwd at construction (every tool factory closes over it — see
|
|
78
|
+
* tools/index.ts registerAllTools), so a distinct cwd genuinely needs its
|
|
79
|
+
* own registry, not a mutable field. The default cwd
|
|
80
|
+
* (`this.toolDeps.workingDirectory`) is cached under its own key exactly
|
|
81
|
+
* like the single `fullRegistry` field this replaces — same lazy-build,
|
|
82
|
+
* same channel-version invalidation, same object identity once built.
|
|
83
|
+
*/
|
|
84
|
+
private fullRegistries;
|
|
49
85
|
private fullRegistryChannelVersion;
|
|
50
86
|
private toolDeps;
|
|
51
87
|
private featureFlagManager;
|
|
52
88
|
private runtimeBus;
|
|
89
|
+
private conversationSink;
|
|
90
|
+
private cancellationSource;
|
|
53
91
|
private readonly channelRegistry;
|
|
54
92
|
private readonly messageBus;
|
|
55
93
|
constructor(config?: {
|
|
@@ -59,6 +97,20 @@ export declare class AgentOrchestrator {
|
|
|
59
97
|
setRuntimeBus(runtimeBus: RuntimeEventBus | null): void;
|
|
60
98
|
/** Set the FeatureFlagManager for context-window awareness gating. */
|
|
61
99
|
setFeatureFlagManager(manager: FeatureFlagManager): void;
|
|
100
|
+
/**
|
|
101
|
+
* Wire the Wave-3 Part C6 conversation-snapshot bridge (see
|
|
102
|
+
* AgentConversationSink). Pass null to detach — createRunContext() then
|
|
103
|
+
* omits the register/release callbacks entirely and orchestrator-runner's
|
|
104
|
+
* `?.()` calls become no-ops.
|
|
105
|
+
*/
|
|
106
|
+
setConversationSink(sink: AgentConversationSink | null): void;
|
|
107
|
+
/**
|
|
108
|
+
* Wire the Wave-4 cancellation bridge (see AgentCancellationSource). Pass
|
|
109
|
+
* null to detach — createRunContext() then omits getCancellationSignal
|
|
110
|
+
* entirely and orchestrator-runner's `?.()` call becomes a no-op, so every
|
|
111
|
+
* tool call runs with `opts` undefined exactly as before this change.
|
|
112
|
+
*/
|
|
113
|
+
setCancellationSource(source: AgentCancellationSource | null): void;
|
|
62
114
|
private emitterContext;
|
|
63
115
|
private emitAgentProgress;
|
|
64
116
|
private emitOrchestrationProgress;
|
|
@@ -76,12 +128,22 @@ export declare class AgentOrchestrator {
|
|
|
76
128
|
*/
|
|
77
129
|
setDependencies(toolDeps: AgentOrchestratorToolDeps): void;
|
|
78
130
|
/**
|
|
79
|
-
* Returns the fully-populated ToolRegistry for this orchestrator
|
|
80
|
-
* Used by companion chat to execute tool calls emitted
|
|
81
|
-
*
|
|
131
|
+
* Returns the fully-populated ToolRegistry for this orchestrator's DEFAULT
|
|
132
|
+
* working directory. Used by companion chat to execute tool calls emitted
|
|
133
|
+
* by the LLM — companion chat has no per-call cwd override, so this always
|
|
134
|
+
* resolves to `this.toolDeps.workingDirectory`. Delegates to the
|
|
135
|
+
* lazy-initialized internal registry cache.
|
|
82
136
|
*/
|
|
83
137
|
getToolRegistry(): ToolRegistry;
|
|
84
|
-
/**
|
|
138
|
+
/**
|
|
139
|
+
* Lazily build and cache the full ToolRegistry for `workingDirectory`
|
|
140
|
+
* (default: `this.toolDeps.workingDirectory`, unchanged from before this
|
|
141
|
+
* cache became keyed). A non-default cwd — a spawned agent's dedicated
|
|
142
|
+
* worktree (AgentRecord.workingDirectory, see AgentInput.workingDirectory)
|
|
143
|
+
* — gets its OWN fresh fileCache/projectIndex rather than reusing the
|
|
144
|
+
* shared session's: those are scoped to the default cwd and would
|
|
145
|
+
* otherwise silently index/search the wrong directory.
|
|
146
|
+
*/
|
|
85
147
|
private getFullRegistry;
|
|
86
148
|
/**
|
|
87
149
|
* Build a ToolRegistry containing only the tools whose names appear in
|
|
@@ -97,8 +159,18 @@ export declare class AgentOrchestrator {
|
|
|
97
159
|
private assertProviderQualifiedModel;
|
|
98
160
|
private resolveChatModelId;
|
|
99
161
|
private resolveFallbackModelRoutes;
|
|
162
|
+
/**
|
|
163
|
+
* @param workingDirectory Per-call cwd override (AgentRecord.workingDirectory).
|
|
164
|
+
* Absent ⇒ `this.toolDeps.workingDirectory`, byte-identical to every run
|
|
165
|
+
* context built before this parameter existed.
|
|
166
|
+
*/
|
|
100
167
|
private createRunContext;
|
|
101
|
-
/**
|
|
168
|
+
/**
|
|
169
|
+
* Run an agent task described by the given record. Honors
|
|
170
|
+
* `record.workingDirectory` when set (see AgentInput.workingDirectory) —
|
|
171
|
+
* every tool this run's registry exposes is bound to that cwd instead of
|
|
172
|
+
* the orchestrator's default.
|
|
173
|
+
*/
|
|
102
174
|
runAgent(record: AgentRecord): Promise<void>;
|
|
103
175
|
}
|
|
104
176
|
//# sourceMappingURL=orchestrator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../src/platform/agents/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGjE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAGlE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAIrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAgBlE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../src/platform/agents/orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,11 +19,22 @@ export { summarizeToolArgs } from './orchestrator-utils.js';
|
|
|
19
19
|
* `orchestrator-runner.ts`; this class owns shared registry/state wiring.
|
|
20
20
|
*/
|
|
21
21
|
export class AgentOrchestrator {
|
|
22
|
-
|
|
22
|
+
/**
|
|
23
|
+
* Keyed by working directory. A ToolRegistry is permanently bound to one
|
|
24
|
+
* cwd at construction (every tool factory closes over it — see
|
|
25
|
+
* tools/index.ts registerAllTools), so a distinct cwd genuinely needs its
|
|
26
|
+
* own registry, not a mutable field. The default cwd
|
|
27
|
+
* (`this.toolDeps.workingDirectory`) is cached under its own key exactly
|
|
28
|
+
* like the single `fullRegistry` field this replaces — same lazy-build,
|
|
29
|
+
* same channel-version invalidation, same object identity once built.
|
|
30
|
+
*/
|
|
31
|
+
fullRegistries = new Map();
|
|
23
32
|
fullRegistryChannelVersion = -2;
|
|
24
33
|
toolDeps = null;
|
|
25
34
|
featureFlagManager = null;
|
|
26
35
|
runtimeBus = null;
|
|
36
|
+
conversationSink = null;
|
|
37
|
+
cancellationSource = null;
|
|
27
38
|
channelRegistry;
|
|
28
39
|
messageBus;
|
|
29
40
|
constructor(config = {
|
|
@@ -39,6 +50,24 @@ export class AgentOrchestrator {
|
|
|
39
50
|
setFeatureFlagManager(manager) {
|
|
40
51
|
this.featureFlagManager = manager;
|
|
41
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Wire the Wave-3 Part C6 conversation-snapshot bridge (see
|
|
55
|
+
* AgentConversationSink). Pass null to detach — createRunContext() then
|
|
56
|
+
* omits the register/release callbacks entirely and orchestrator-runner's
|
|
57
|
+
* `?.()` calls become no-ops.
|
|
58
|
+
*/
|
|
59
|
+
setConversationSink(sink) {
|
|
60
|
+
this.conversationSink = sink;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Wire the Wave-4 cancellation bridge (see AgentCancellationSource). Pass
|
|
64
|
+
* null to detach — createRunContext() then omits getCancellationSignal
|
|
65
|
+
* entirely and orchestrator-runner's `?.()` call becomes a no-op, so every
|
|
66
|
+
* tool call runs with `opts` undefined exactly as before this change.
|
|
67
|
+
*/
|
|
68
|
+
setCancellationSource(source) {
|
|
69
|
+
this.cancellationSource = source;
|
|
70
|
+
}
|
|
42
71
|
emitterContext(agentId) {
|
|
43
72
|
return {
|
|
44
73
|
sessionId: 'agent-orchestrator',
|
|
@@ -138,30 +167,53 @@ export class AgentOrchestrator {
|
|
|
138
167
|
*/
|
|
139
168
|
setDependencies(toolDeps) {
|
|
140
169
|
this.toolDeps = toolDeps;
|
|
141
|
-
this.
|
|
170
|
+
this.fullRegistries = new Map();
|
|
142
171
|
this.fullRegistryChannelVersion = -2;
|
|
143
172
|
}
|
|
144
173
|
/**
|
|
145
|
-
* Returns the fully-populated ToolRegistry for this orchestrator
|
|
146
|
-
* Used by companion chat to execute tool calls emitted
|
|
147
|
-
*
|
|
174
|
+
* Returns the fully-populated ToolRegistry for this orchestrator's DEFAULT
|
|
175
|
+
* working directory. Used by companion chat to execute tool calls emitted
|
|
176
|
+
* by the LLM — companion chat has no per-call cwd override, so this always
|
|
177
|
+
* resolves to `this.toolDeps.workingDirectory`. Delegates to the
|
|
178
|
+
* lazy-initialized internal registry cache.
|
|
148
179
|
*/
|
|
149
180
|
getToolRegistry() {
|
|
150
181
|
return this.getFullRegistry();
|
|
151
182
|
}
|
|
152
|
-
/**
|
|
153
|
-
|
|
183
|
+
/**
|
|
184
|
+
* Lazily build and cache the full ToolRegistry for `workingDirectory`
|
|
185
|
+
* (default: `this.toolDeps.workingDirectory`, unchanged from before this
|
|
186
|
+
* cache became keyed). A non-default cwd — a spawned agent's dedicated
|
|
187
|
+
* worktree (AgentRecord.workingDirectory, see AgentInput.workingDirectory)
|
|
188
|
+
* — gets its OWN fresh fileCache/projectIndex rather than reusing the
|
|
189
|
+
* shared session's: those are scoped to the default cwd and would
|
|
190
|
+
* otherwise silently index/search the wrong directory.
|
|
191
|
+
*/
|
|
192
|
+
getFullRegistry(workingDirectory) {
|
|
154
193
|
const channelVersion = this.channelRegistry?.getVersion() ?? -1;
|
|
155
|
-
if (
|
|
194
|
+
if (this.fullRegistryChannelVersion !== channelVersion) {
|
|
195
|
+
this.fullRegistries.clear();
|
|
196
|
+
this.fullRegistryChannelVersion = channelVersion;
|
|
197
|
+
}
|
|
198
|
+
const defaultCwd = this.toolDeps?.workingDirectory ?? '';
|
|
199
|
+
const cwd = workingDirectory ?? defaultCwd;
|
|
200
|
+
let registry = this.fullRegistries.get(cwd);
|
|
201
|
+
if (!registry) {
|
|
156
202
|
if (!this.toolDeps?.configManager || !this.toolDeps?.providerRegistry || !this.toolDeps?.toolLLM) {
|
|
157
203
|
throw new Error('AgentOrchestrator requires configManager, providerRegistry, and toolLLM dependencies before tool registration');
|
|
158
204
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
205
|
+
registry = new ToolRegistry();
|
|
206
|
+
const isDefaultCwd = cwd === defaultCwd;
|
|
207
|
+
registerAllTools(registry, {
|
|
208
|
+
...this.toolDeps,
|
|
209
|
+
workingDirectory: cwd,
|
|
210
|
+
fileCache: isDefaultCwd ? this.toolDeps.fileCache : undefined,
|
|
211
|
+
projectIndex: isDefaultCwd ? this.toolDeps.projectIndex : undefined,
|
|
212
|
+
});
|
|
213
|
+
registerChannelAgentTools(registry, this.toolDeps?.channelRegistry ?? this.channelRegistry);
|
|
214
|
+
this.fullRegistries.set(cwd, registry);
|
|
163
215
|
}
|
|
164
|
-
return
|
|
216
|
+
return registry;
|
|
165
217
|
}
|
|
166
218
|
/**
|
|
167
219
|
* Build a ToolRegistry containing only the tools whose names appear in
|
|
@@ -327,9 +379,15 @@ export class AgentOrchestrator {
|
|
|
327
379
|
}
|
|
328
380
|
return routes;
|
|
329
381
|
}
|
|
330
|
-
|
|
382
|
+
/**
|
|
383
|
+
* @param workingDirectory Per-call cwd override (AgentRecord.workingDirectory).
|
|
384
|
+
* Absent ⇒ `this.toolDeps.workingDirectory`, byte-identical to every run
|
|
385
|
+
* context built before this parameter existed.
|
|
386
|
+
*/
|
|
387
|
+
createRunContext(workingDirectory) {
|
|
388
|
+
const cwd = workingDirectory ?? this.toolDeps?.workingDirectory ?? '';
|
|
331
389
|
return {
|
|
332
|
-
workingDirectory:
|
|
390
|
+
workingDirectory: cwd,
|
|
333
391
|
surfaceRoot: this.toolDeps?.surfaceRoot ?? '',
|
|
334
392
|
runtimeBus: this.runtimeBus,
|
|
335
393
|
featureFlagManager: this.featureFlagManager,
|
|
@@ -344,21 +402,40 @@ export class AgentOrchestrator {
|
|
|
344
402
|
emitAgentCompletedEvent: (recordId, durationMs, output, toolCallsMade, usage) => this.emitAgentCompletedEvent(recordId, durationMs, output, toolCallsMade, usage),
|
|
345
403
|
emitOrchestrationCompleted: (record, output) => this.emitOrchestrationCompleted(record, output),
|
|
346
404
|
emitStreamDelta: (recordId, content, accumulated) => this.emitStreamDelta(recordId, content, accumulated),
|
|
405
|
+
registerConversationSource: this.conversationSink
|
|
406
|
+
? (agentId, source) => this.conversationSink.register(agentId, source)
|
|
407
|
+
: undefined,
|
|
408
|
+
releaseConversationSource: this.conversationSink
|
|
409
|
+
? (agentId) => this.conversationSink.release(agentId)
|
|
410
|
+
: undefined,
|
|
411
|
+
getCancellationSignal: this.cancellationSource
|
|
412
|
+
? (agentId) => this.cancellationSource.get(agentId)
|
|
413
|
+
: undefined,
|
|
347
414
|
processManager: this.toolDeps?.processManager,
|
|
348
415
|
messageBus: this.messageBus,
|
|
349
416
|
knowledgeService: this.toolDeps?.knowledgeService,
|
|
350
417
|
memoryRegistry: this.toolDeps?.memoryRegistry,
|
|
418
|
+
codeIndex: this.toolDeps?.codeIndex,
|
|
419
|
+
isCodeInjectionSettingEnabled: this.toolDeps?.isCodeInjectionSettingEnabled,
|
|
420
|
+
onToolExecuted: this.toolDeps?.codeIndexReindexScheduler
|
|
421
|
+
? (toolName, args, success) => this.toolDeps.codeIndexReindexScheduler.onToolExecuted(toolName, args, success)
|
|
422
|
+
: undefined,
|
|
351
423
|
archetypeLoader: this.toolDeps?.archetypeLoader,
|
|
352
424
|
providerOptimizer: this.toolDeps?.providerOptimizer,
|
|
353
425
|
providerRegistry: this.toolDeps.providerRegistry,
|
|
354
|
-
getFullRegistry: () => this.getFullRegistry(),
|
|
426
|
+
getFullRegistry: () => this.getFullRegistry(cwd),
|
|
355
427
|
buildScopedRegistry: (allowedNames, fullRegistry) => this.buildScopedRegistry(allowedNames, fullRegistry),
|
|
356
428
|
resolveProviderForRecord: (providerRegistry, record, currentModel) => this.resolveProviderForRecord(providerRegistry, record, currentModel),
|
|
357
429
|
resolveFallbackModelRoutes: (providerRegistry, record, currentModel, primaryRequestedModelId) => this.resolveFallbackModelRoutes(providerRegistry, record, currentModel, primaryRequestedModelId),
|
|
358
430
|
};
|
|
359
431
|
}
|
|
360
|
-
/**
|
|
432
|
+
/**
|
|
433
|
+
* Run an agent task described by the given record. Honors
|
|
434
|
+
* `record.workingDirectory` when set (see AgentInput.workingDirectory) —
|
|
435
|
+
* every tool this run's registry exposes is bound to that cwd instead of
|
|
436
|
+
* the orchestrator's default.
|
|
437
|
+
*/
|
|
361
438
|
async runAgent(record) {
|
|
362
|
-
await runAgentTask(this.createRunContext(), record);
|
|
439
|
+
await runAgentTask(this.createRunContext(record.workingDirectory), record);
|
|
363
440
|
}
|
|
364
441
|
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Production `DecompositionRunner` backed by the real `AgentManager`.
|
|
3
|
+
*
|
|
4
|
+
* This is the concrete driver that spawns a bounded, READ-ONLY `planner`
|
|
5
|
+
* agent through the existing agents machinery and polls it to completion. It
|
|
6
|
+
* lives in the agents layer (not `core`) precisely so `core/plan-decomposition.ts`
|
|
7
|
+
* can stay free of any agent-machinery import and be unit-tested against a
|
|
8
|
+
* stubbed runner. The planning agent it spawns is an ordinary `AgentManager`
|
|
9
|
+
* agent, so it surfaces in the fleet like any other and honours kill/steer;
|
|
10
|
+
* an external kill lands here as a `'cancelled'` result → heuristic fallback.
|
|
11
|
+
*
|
|
12
|
+
* Bounds are enforced cooperatively by polling `AgentRecord.usage`:
|
|
13
|
+
* - wall-clock: `cancel()` once `now() >= start + wallTimeoutMs`
|
|
14
|
+
* - token ceiling: `cancel()` once input+output tokens exceed the ceiling
|
|
15
|
+
* - turns: `cancel()` once `usage.turnCount` exceeds `maxTurns`
|
|
16
|
+
* All three collapse to a `'cancelled'` run result (with a `detail`), which the
|
|
17
|
+
* service turns into an honest `fallbackReason`.
|
|
18
|
+
*/
|
|
19
|
+
import type { AgentManager } from '../tools/agent/manager.js';
|
|
20
|
+
import type { DecompositionRunner } from '../core/plan-decomposition.js';
|
|
21
|
+
/** The read-only tool set the planner template resolves to. Kept in lockstep
|
|
22
|
+
* with AGENT_TEMPLATES.planner and passed with restrictTools for a hard cap. */
|
|
23
|
+
export declare const PLANNER_DECOMPOSITION_TOOLS: readonly ["read", "find", "analyze", "inspect"];
|
|
24
|
+
export interface AgentManagerDecompositionRunnerDeps {
|
|
25
|
+
agentManager: Pick<AgentManager, 'spawn' | 'getStatus' | 'cancel'>;
|
|
26
|
+
/** Injectable clock (tests). */
|
|
27
|
+
now?: () => number;
|
|
28
|
+
/** Injectable sleep (tests). */
|
|
29
|
+
sleep?: (ms: number) => Promise<void>;
|
|
30
|
+
/** Poll interval in ms (default 50). */
|
|
31
|
+
pollIntervalMs?: number;
|
|
32
|
+
/** Optional model registry key override for the planner agent. */
|
|
33
|
+
model?: string | undefined;
|
|
34
|
+
/** Optional provider override for the planner agent. */
|
|
35
|
+
provider?: string | undefined;
|
|
36
|
+
}
|
|
37
|
+
export declare function createAgentManagerDecompositionRunner(deps: AgentManagerDecompositionRunnerDeps): DecompositionRunner;
|
|
38
|
+
//# sourceMappingURL=planner-decomposition-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planner-decomposition-runner.d.ts","sourceRoot":"","sources":["../../../src/platform/agents/planner-decomposition-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAG9D,OAAO,KAAK,EACV,mBAAmB,EAGpB,MAAM,+BAA+B,CAAC;AAGvC;iFACiF;AACjF,eAAO,MAAM,2BAA2B,iDAAkD,CAAC;AAE3F,MAAM,WAAW,mCAAmC;IAClD,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,GAAG,WAAW,GAAG,QAAQ,CAAC,CAAC;IACnE,gCAAgC;IAChC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,gCAAgC;IAChC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,wCAAwC;IACxC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAyBD,wBAAgB,qCAAqC,CACnD,IAAI,EAAE,mCAAmC,GACxC,mBAAmB,CA+ErB"}
|