@pellux/goodvibes-sdk 0.38.0 → 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/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/orchestrator-runner.d.ts +13 -0
- package/dist/platform/agents/orchestrator-runner.d.ts.map +1 -1
- package/dist/platform/agents/orchestrator-runner.js +14 -0
- package/dist/platform/agents/orchestrator.d.ts +38 -6
- package/dist/platform/agents/orchestrator.d.ts.map +1 -1
- package/dist/platform/agents/orchestrator.js +66 -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 +88 -3
- package/dist/platform/agents/turn-knowledge-injection.d.ts.map +1 -1
- package/dist/platform/agents/turn-knowledge-injection.js +147 -30
- 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 +23 -0
- package/dist/platform/agents/wrfc-controller.d.ts.map +1 -1
- package/dist/platform/agents/wrfc-controller.js +158 -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 +9 -0
- package/dist/platform/config/manager.d.ts.map +1 -1
- package/dist/platform/config/manager.js +21 -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/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 +1 -0
- package/dist/platform/core/index.d.ts.map +1 -1
- package/dist/platform/core/index.js +1 -0
- package/dist/platform/core/orchestrator-runtime.d.ts +21 -1
- 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 +8 -1
- package/dist/platform/core/orchestrator-turn-loop.d.ts.map +1 -1
- package/dist/platform/core/orchestrator-turn-loop.js +6 -0
- package/dist/platform/core/orchestrator.d.ts +6 -0
- package/dist/platform/core/orchestrator.d.ts.map +1 -1
- package/dist/platform/core/orchestrator.js +15 -0
- 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 +39 -0
- package/dist/platform/core/plan-proposal.d.ts.map +1 -1
- 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/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/controller-compat.d.ts +14 -0
- package/dist/platform/orchestration/controller-compat.d.ts.map +1 -1
- package/dist/platform/orchestration/controller-compat.js +18 -4
- package/dist/platform/orchestration/engine.d.ts +26 -1
- package/dist/platform/orchestration/engine.d.ts.map +1 -1
- package/dist/platform/orchestration/engine.js +226 -21
- package/dist/platform/orchestration/index.d.ts +6 -4
- package/dist/platform/orchestration/index.d.ts.map +1 -1
- package/dist/platform/orchestration/index.js +3 -2
- package/dist/platform/orchestration/persistence.d.ts.map +1 -1
- package/dist/platform/orchestration/persistence.js +4 -1
- package/dist/platform/orchestration/phase-runner.d.ts +29 -2
- package/dist/platform/orchestration/phase-runner.d.ts.map +1 -1
- package/dist/platform/orchestration/phase-runner.js +98 -25
- 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 +19 -0
- package/dist/platform/orchestration/scheduler.d.ts.map +1 -1
- package/dist/platform/orchestration/scheduler.js +16 -0
- package/dist/platform/orchestration/types.d.ts +286 -1
- package/dist/platform/orchestration/types.d.ts.map +1 -1
- package/dist/platform/orchestration/types.js +32 -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/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 +39 -1
- package/dist/platform/runtime/fleet/adapters/orchestration.d.ts +40 -18
- package/dist/platform/runtime/fleet/adapters/orchestration.d.ts.map +1 -1
- package/dist/platform/runtime/fleet/adapters/orchestration.js +138 -34
- package/dist/platform/runtime/fleet/adapters/wrfc.d.ts +13 -0
- package/dist/platform/runtime/fleet/adapters/wrfc.d.ts.map +1 -1
- package/dist/platform/runtime/fleet/adapters/wrfc.js +48 -1
- package/dist/platform/runtime/fleet/registry.d.ts.map +1 -1
- package/dist/platform/runtime/fleet/registry.js +38 -4
- 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/services.d.ts +9 -7
- package/dist/platform/runtime/services.d.ts.map +1 -1
- package/dist/platform/runtime/services.js +19 -4
- 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-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.map +1 -1
- package/dist/platform/state/code-index-store.js +10 -2
- package/dist/platform/state/index.d.ts +8 -0
- package/dist/platform/state/index.d.ts.map +1 -1
- package/dist/platform/state/index.js +4 -0
- 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.map +1 -1
- package/dist/platform/state/memory-vector-store.js +13 -2
- 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/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 +12 -0
- package/dist/platform/tools/agent/manager.d.ts.map +1 -1
- package/dist/platform/tools/agent/manager.js +6 -0
- 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 +22 -5
- package/dist/platform/tools/exec/schema.d.ts +1 -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/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/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/version.js +1 -1
- package/package.json +21 -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
|
@@ -17,9 +17,10 @@ import { checkBudget } from './budget.js';
|
|
|
17
17
|
import { createCancellationRegistry } from './cancellation.js';
|
|
18
18
|
import { runPhase } from './phase-runner.js';
|
|
19
19
|
import { snapshotDirtyTree } from './dirty-guard.js';
|
|
20
|
+
import { createWorktreeIsolationManager } from './worktree-isolation.js';
|
|
20
21
|
import { deserializeWorkstream as deserializeWorkstreamModel, deserializeWorkstreamSnapshot, attachDebouncedWriter, listSnapshotWorkstreamIds, loadWorkstreamSnapshot, serializeWorkstreamSnapshot, } from './persistence.js';
|
|
21
|
-
import { computeClaims, firstPhase, nextPhaseAfter, reviewPhaseBefore, sortedPhases } from './scheduler.js';
|
|
22
|
-
import { CURRENT_WORKSTREAM_SCHEMA_VERSION, emptyWorkItemUsage, } from './types.js';
|
|
22
|
+
import { computeClaims, dependencyStatus, firstPhase, nextPhaseAfter, reviewPhaseBefore, sortedPhases } from './scheduler.js';
|
|
23
|
+
import { CURRENT_WORKSTREAM_SCHEMA_VERSION, emptyWorkItemUsage, mergeWorkItemUsage, } from './types.js';
|
|
23
24
|
import { logger } from '../utils/logger.js';
|
|
24
25
|
import { summarizeError } from '../utils/error-display.js';
|
|
25
26
|
function generateId(prefix) {
|
|
@@ -61,6 +62,16 @@ export function createOrchestrationEngine(deps) {
|
|
|
61
62
|
if (launchDirtySnapshot.size > 0) {
|
|
62
63
|
emit({ type: 'dirty-tree-at-launch', paths: [...launchDirtySnapshot.keys()] });
|
|
63
64
|
}
|
|
65
|
+
// Worktree-isolation lane (only ever exercised by a workstream created with
|
|
66
|
+
// isolation: 'worktree' — see createWorkstream/runItemPhase/failItem below).
|
|
67
|
+
// Constructing this unconditionally is cheap: it does no I/O until a
|
|
68
|
+
// worktree-mode workstream actually calls into it.
|
|
69
|
+
const worktreeIsolation = createWorktreeIsolationManager({
|
|
70
|
+
projectRoot: deps.projectRoot,
|
|
71
|
+
emit,
|
|
72
|
+
now,
|
|
73
|
+
keptWorktreeCap: deps.keptWorktreeCap,
|
|
74
|
+
});
|
|
64
75
|
function getWorkstream(id) {
|
|
65
76
|
return workstreams.get(id) ?? null;
|
|
66
77
|
}
|
|
@@ -89,6 +100,7 @@ export function createOrchestrationEngine(deps) {
|
|
|
89
100
|
id: spec.id ?? generateId('item'),
|
|
90
101
|
title: spec.title,
|
|
91
102
|
task: spec.task,
|
|
103
|
+
dependsOn: spec.dependsOn ? [...spec.dependsOn] : [],
|
|
92
104
|
currentPhaseId: startPhaseId,
|
|
93
105
|
state: startPhaseId ? 'pending' : 'passed',
|
|
94
106
|
allAgentIds: [],
|
|
@@ -109,6 +121,8 @@ export function createOrchestrationEngine(deps) {
|
|
|
109
121
|
phases,
|
|
110
122
|
items: [],
|
|
111
123
|
budget: input.budget,
|
|
124
|
+
isolation: input.isolation,
|
|
125
|
+
provenance: input.provenance,
|
|
112
126
|
createdAt: now(),
|
|
113
127
|
};
|
|
114
128
|
const first = firstPhase(workstream)?.id ?? null;
|
|
@@ -156,7 +170,12 @@ export function createOrchestrationEngine(deps) {
|
|
|
156
170
|
item.currentPhaseId = null;
|
|
157
171
|
item.state = 'passed';
|
|
158
172
|
item.completedAt = now();
|
|
159
|
-
emit({
|
|
173
|
+
emit({
|
|
174
|
+
type: 'item-passed',
|
|
175
|
+
workstreamId: workstream.id,
|
|
176
|
+
itemId: item.id,
|
|
177
|
+
...(item.warnings && item.warnings.length > 0 ? { warnings: [...item.warnings] } : {}),
|
|
178
|
+
});
|
|
160
179
|
}
|
|
161
180
|
}
|
|
162
181
|
function failItem(workstream, item, reason) {
|
|
@@ -164,6 +183,33 @@ export function createOrchestrationEngine(deps) {
|
|
|
164
183
|
item.completedAt = now();
|
|
165
184
|
item.failureReason = reason;
|
|
166
185
|
emit({ type: 'item-failed', workstreamId: workstream.id, itemId: item.id, reason });
|
|
186
|
+
// Worktree-mode fail/kill cleanup rule (remove only if clean, else KEEP —
|
|
187
|
+
// data safety): covers every failItem call site uniformly, including
|
|
188
|
+
// kill() and the tick()-catch path for a throw before any phase outcome.
|
|
189
|
+
// No-op (instantly resolves) for a shared-isolation workstream, or an
|
|
190
|
+
// item that never reached a claim and therefore never got a worktree.
|
|
191
|
+
if (workstream.isolation === 'worktree') {
|
|
192
|
+
void worktreeIsolation.cleanupTerminated(workstream, item).catch((error) => {
|
|
193
|
+
logger.error('orchestration engine: worktree cleanup after item failure did not complete', {
|
|
194
|
+
itemId: item.id, error: summarizeError(error),
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Record a NON-FATAL bookkeeping note on an item without touching its
|
|
201
|
+
* terminal status (DEBT-4 item 1). Used for post-gate faults that do not
|
|
202
|
+
* negate the phase's passed work — e.g. a scoped commit that could not
|
|
203
|
+
* complete. The item still passes/advances; the warning rides along on
|
|
204
|
+
* `item.warnings` and, for a terminal pass, in the `item-passed` event, so a
|
|
205
|
+
* passed-with-caveats outcome is visible instead of hidden or mislabelled.
|
|
206
|
+
*/
|
|
207
|
+
function warnItem(item, note) {
|
|
208
|
+
(item.warnings ??= []).push(note);
|
|
209
|
+
logger.warn('orchestration engine: non-fatal bookkeeping warning on a passed work item', {
|
|
210
|
+
itemId: item.id,
|
|
211
|
+
note,
|
|
212
|
+
});
|
|
167
213
|
}
|
|
168
214
|
/** Indirection to defeat TS's cross-await narrowing of item.state — see the call site below. */
|
|
169
215
|
function currentState(item) {
|
|
@@ -174,6 +220,24 @@ export function createOrchestrationEngine(deps) {
|
|
|
174
220
|
item.state = 'in-phase';
|
|
175
221
|
item.currentPhaseId = phase.id;
|
|
176
222
|
item.blockedReason = undefined;
|
|
223
|
+
// Worktree mode: ensure this item has its dedicated worktree BEFORE
|
|
224
|
+
// spawning its phase agent (idempotent — a no-op from the item's second
|
|
225
|
+
// phase onward, since the worktree persists across the item's whole run;
|
|
226
|
+
// see WorktreeIsolationManager.ensureWorktree). A setup failure here is a
|
|
227
|
+
// genuine phase-run failure (there is nowhere isolated for the agent to
|
|
228
|
+
// work) — fail the item honestly rather than silently falling back to the
|
|
229
|
+
// shared tree, which would defeat isolation's whole purpose.
|
|
230
|
+
let itemWorktree;
|
|
231
|
+
if (workstream.isolation === 'worktree') {
|
|
232
|
+
try {
|
|
233
|
+
itemWorktree = await worktreeIsolation.ensureWorktree(workstream, item);
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
logger.error('orchestration engine: failed to prepare item worktree', { itemId: item.id, error: summarizeError(error) });
|
|
237
|
+
failItem(workstream, item, `worktree isolation setup failed: ${summarizeError(error)}`);
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
177
241
|
const priorReports = getPhaseResults(workstream.id).filter((r) => r.itemId === item.id);
|
|
178
242
|
const outcome = await runPhase(workstream, item, phase, priorReports, {
|
|
179
243
|
agentManager: deps.agentManager,
|
|
@@ -186,8 +250,26 @@ export function createOrchestrationEngine(deps) {
|
|
|
186
250
|
priceUsage: deps.priceUsage,
|
|
187
251
|
skipClaimVerification: deps.skipClaimVerification,
|
|
188
252
|
launchDirtySnapshot,
|
|
253
|
+
itemWorktree,
|
|
189
254
|
});
|
|
190
|
-
|
|
255
|
+
// ── Bookkeeping region (AFTER the phase produced its outcome) ───────────
|
|
256
|
+
// From here on everything is bookkeeping layered on top of a verdict the
|
|
257
|
+
// phase has ALREADY reached (outcome.result.gate + agentStatus). It must
|
|
258
|
+
// never be able to turn a passed phase into a failed item: the item's
|
|
259
|
+
// terminal status derives ONLY from that phase outcome, plus the narrow
|
|
260
|
+
// negating set (bookkeeping.ts). A bookkeeping fault becomes a warning on a
|
|
261
|
+
// passed item (warnItem), never a failure — that is what makes "item failed
|
|
262
|
+
// while every phase passed and the commit landed" unrepresentable
|
|
263
|
+
// (DEBT-4 item 1). A throw BEFORE this point — inside runPhase, e.g. a gate
|
|
264
|
+
// subprocess that never yielded a verdict — legitimately reaches tick()'s
|
|
265
|
+
// catch and fails the item, because there is then no phase outcome to
|
|
266
|
+
// stand on.
|
|
267
|
+
try {
|
|
268
|
+
item.usage = mergeWorkItemUsage(item.usage, outcome.result.usage);
|
|
269
|
+
}
|
|
270
|
+
catch (error) {
|
|
271
|
+
warnItem(item, `usage rollup skipped: ${summarizeError(error)}`);
|
|
272
|
+
}
|
|
191
273
|
const results = completedResults.get(workstream.id) ?? [];
|
|
192
274
|
results.push(outcome.result);
|
|
193
275
|
completedResults.set(workstream.id, results);
|
|
@@ -209,6 +291,22 @@ export function createOrchestrationEngine(deps) {
|
|
|
209
291
|
return;
|
|
210
292
|
}
|
|
211
293
|
if (outcome.result.gate.passed) {
|
|
294
|
+
// The PHASE PASSED. Post-gate commit bookkeeping can only WARN this item
|
|
295
|
+
// (or, for the narrow negating set, fail it) — it can never contradict
|
|
296
|
+
// the passed verdict the gate already reached.
|
|
297
|
+
const commit = outcome.result.commit;
|
|
298
|
+
if (commit?.status === 'failed' && commit.negating) {
|
|
299
|
+
// Negating set: the commit/merge left the workspace corrupted, so the
|
|
300
|
+
// recorded pass can no longer be trusted — this is the one post-gate
|
|
301
|
+
// condition that genuinely fails the item.
|
|
302
|
+
failItem(workstream, item, `phase gate passed but the workspace was left unrecorded/corrupted: ${commit.reason ?? 'commit failed'}`);
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
305
|
+
if (commit?.status === 'failed') {
|
|
306
|
+
// Non-negating: the gate passed and the workspace is coherent, so the
|
|
307
|
+
// work stands. Surface the miss as a warning, never a failure.
|
|
308
|
+
warnItem(item, `scoped commit did not complete (non-fatal): ${commit.reason ?? 'commit failed'}`);
|
|
309
|
+
}
|
|
212
310
|
// A fix phase's PASSING gate routes BACK to the review phase it was
|
|
213
311
|
// inserted after (dynamic insertion places 'fix' at an ordinal AFTER
|
|
214
312
|
// its review, per design (b) — "inserts a fix phase after review and
|
|
@@ -218,6 +316,16 @@ export function createOrchestrationEngine(deps) {
|
|
|
218
316
|
? (reviewPhaseBefore(workstream, phase) ?? nextPhaseAfter(workstream, phase.ordinal) ?? null)
|
|
219
317
|
: (nextPhaseAfter(workstream, phase.ordinal) ?? null);
|
|
220
318
|
routeItem(workstream, item, forwardTarget, phase.id);
|
|
319
|
+
// The item just terminated PASSED (no further phase) — in worktree mode
|
|
320
|
+
// its branch now enters the single sequential integration lane
|
|
321
|
+
// (completion order, not claim order). Fire-and-forget: the lane
|
|
322
|
+
// manages its own ordering and never rejects (see
|
|
323
|
+
// WorktreeIsolationManager.enqueueIntegration), so tick() is never
|
|
324
|
+
// blocked waiting on a merge that may itself await a sibling ahead of
|
|
325
|
+
// it in the lane.
|
|
326
|
+
if (forwardTarget === null && workstream.isolation === 'worktree') {
|
|
327
|
+
void worktreeIsolation.enqueueIntegration(workstream, item);
|
|
328
|
+
}
|
|
221
329
|
return;
|
|
222
330
|
}
|
|
223
331
|
// A review's FAILING gate with unsatisfied constraints gets one more
|
|
@@ -233,22 +341,66 @@ export function createOrchestrationEngine(deps) {
|
|
|
233
341
|
}
|
|
234
342
|
failItem(workstream, item, outcome.result.gate.results.filter((r) => !r.passed).map((r) => `${r.gate}: ${r.output}`).join('; ') || 'gate failed');
|
|
235
343
|
}
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
344
|
+
/**
|
|
345
|
+
* Dependency-gate pre-pass (BIG-3 item 2), run at the top of every tick
|
|
346
|
+
* BEFORE computeClaims. For each item still sitting at its FIRST phase in a
|
|
347
|
+
* pre-claim state (pending / awaiting-capacity / blocked-dependency) with
|
|
348
|
+
* declared dependencies, classify those dependencies and either release or
|
|
349
|
+
* refuse the item:
|
|
350
|
+
* - every dependency 'passed' → RELEASE: if it was 'blocked-dependency',
|
|
351
|
+
* restore it to 'pending' and clear blockedReason (emit
|
|
352
|
+
* item-dependency-cleared) so computeClaims can pick it up this same tick.
|
|
353
|
+
* - any dependency unmet → REFUSE: set 'blocked-dependency' with an honest
|
|
354
|
+
* blockedReason ('waiting on: …' or 'dependency failed: …'), recomputed
|
|
355
|
+
* every tick so it stays current as dependencies change; emit
|
|
356
|
+
* item-blocked-dependency only on a NEW block (never once per idle tick).
|
|
357
|
+
*
|
|
358
|
+
* Only FIRST-phase items are gated. Once an item's dependencies are all
|
|
359
|
+
* passed at its first claim they stay passed (passed is terminal), so a
|
|
360
|
+
* mid-pipeline item (currentPhaseId past the first phase) is never re-gated.
|
|
361
|
+
* A retried item (engine.retryItem) is reset back to the first phase and is
|
|
362
|
+
* therefore re-gated here — which is exactly why a failed dependency's
|
|
363
|
+
* dependents recover only once the dependency is retried AND passes.
|
|
364
|
+
* A FAILED dependency keeps the dependent blocked (recoverable), never fails
|
|
365
|
+
* it — refuse-not-kill.
|
|
366
|
+
*/
|
|
367
|
+
function applyDependencyGates(workstream) {
|
|
368
|
+
const first = firstPhase(workstream);
|
|
369
|
+
if (!first)
|
|
370
|
+
return;
|
|
371
|
+
for (const item of workstream.items) {
|
|
372
|
+
if (item.dependsOn.length === 0)
|
|
373
|
+
continue;
|
|
374
|
+
if (item.currentPhaseId !== first.id)
|
|
375
|
+
continue; // only gate at entry (first phase)
|
|
376
|
+
if (item.state !== 'pending' && item.state !== 'awaiting-capacity' && item.state !== 'blocked-dependency')
|
|
377
|
+
continue;
|
|
378
|
+
const status = dependencyStatus(workstream, item);
|
|
379
|
+
if (status.ready) {
|
|
380
|
+
if (item.state === 'blocked-dependency') {
|
|
381
|
+
item.state = 'pending';
|
|
382
|
+
item.blockedReason = undefined;
|
|
383
|
+
emit({ type: 'item-dependency-cleared', workstreamId: workstream.id, itemId: item.id });
|
|
384
|
+
}
|
|
385
|
+
continue;
|
|
386
|
+
}
|
|
387
|
+
const reason = status.failed.length > 0
|
|
388
|
+
? `dependency failed: ${status.failed.join(', ')}`
|
|
389
|
+
: `waiting on: ${status.waiting.join(', ')}`;
|
|
390
|
+
const wasAlreadyBlocked = item.state === 'blocked-dependency';
|
|
391
|
+
item.state = 'blocked-dependency';
|
|
392
|
+
item.blockedReason = reason;
|
|
393
|
+
if (!wasAlreadyBlocked) {
|
|
394
|
+
emit({
|
|
395
|
+
type: 'item-blocked-dependency',
|
|
396
|
+
workstreamId: workstream.id,
|
|
397
|
+
itemId: item.id,
|
|
398
|
+
phaseId: item.currentPhaseId ?? '',
|
|
399
|
+
reason,
|
|
400
|
+
deps: [...item.dependsOn],
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
}
|
|
252
404
|
}
|
|
253
405
|
function tick(workstreamId) {
|
|
254
406
|
if (disposed)
|
|
@@ -256,6 +408,10 @@ export function createOrchestrationEngine(deps) {
|
|
|
256
408
|
const workstream = workstreams.get(workstreamId);
|
|
257
409
|
if (!workstream)
|
|
258
410
|
return;
|
|
411
|
+
// Dependency gate FIRST — release/refuse first-phase items by their
|
|
412
|
+
// dependencies before computeClaims decides capacity (which never sees a
|
|
413
|
+
// 'blocked-dependency' item, see scheduler.ts computeClaims).
|
|
414
|
+
applyDependencyGates(workstream);
|
|
259
415
|
const claims = computeClaims(workstream);
|
|
260
416
|
for (const { item, phase } of claims) {
|
|
261
417
|
const budgetCheck = checkBudget(workstream);
|
|
@@ -276,7 +432,14 @@ export function createOrchestrationEngine(deps) {
|
|
|
276
432
|
}
|
|
277
433
|
void runItemPhase(workstream, item, phase)
|
|
278
434
|
.catch((error) => {
|
|
279
|
-
|
|
435
|
+
// Reaching here means runItemPhase rejected BEFORE the phase produced
|
|
436
|
+
// an outcome — the run threw inside runPhase (spawn, gate execution,
|
|
437
|
+
// etc.) with no gate verdict to stand on. That is a genuine phase
|
|
438
|
+
// failure, so failing the item is honest. Post-outcome bookkeeping
|
|
439
|
+
// faults never reach here: runItemPhase converts them to warnings on
|
|
440
|
+
// a passed item (or, for the negating set, an explicit failItem) —
|
|
441
|
+
// see its bookkeeping region (DEBT-4 item 1).
|
|
442
|
+
logger.error('orchestration engine: phase run threw before producing an outcome', {
|
|
280
443
|
workstreamId, itemId: item.id, phaseId: phase.id, error: summarizeError(error),
|
|
281
444
|
});
|
|
282
445
|
failItem(workstream, item, summarizeError(error));
|
|
@@ -320,6 +483,35 @@ export function createOrchestrationEngine(deps) {
|
|
|
320
483
|
tick(workstreamId);
|
|
321
484
|
return true;
|
|
322
485
|
}
|
|
486
|
+
/**
|
|
487
|
+
* See the OrchestrationEngine.retryItem doc. Resets a failed item to
|
|
488
|
+
* 'pending' at the first phase; clears the terminal fields and the per-phase
|
|
489
|
+
* visit budget (a fresh fix-cycle allowance for the retry) but RETAINS
|
|
490
|
+
* accumulated `usage` (monotone — a retry adds to the tally, never wipes it).
|
|
491
|
+
* In worktree mode a still-present KEPT worktree is reused (ensureWorktree is
|
|
492
|
+
* idempotent on worktreePath); a worktree already removed after the failure
|
|
493
|
+
* is recreated at the next first claim.
|
|
494
|
+
*/
|
|
495
|
+
function retryItem(itemId) {
|
|
496
|
+
const found = findItemAndWorkstream(itemId);
|
|
497
|
+
if (!found)
|
|
498
|
+
return false;
|
|
499
|
+
const { workstream, item } = found;
|
|
500
|
+
if (item.state !== 'failed')
|
|
501
|
+
return false;
|
|
502
|
+
const first = firstPhase(workstream);
|
|
503
|
+
if (!first)
|
|
504
|
+
return false;
|
|
505
|
+
item.state = 'pending';
|
|
506
|
+
item.currentPhaseId = first.id;
|
|
507
|
+
item.failureReason = undefined;
|
|
508
|
+
item.completedAt = undefined;
|
|
509
|
+
item.blockedReason = undefined;
|
|
510
|
+
item.visits.clear();
|
|
511
|
+
emit({ type: 'item-retried', workstreamId: workstream.id, itemId, reason: 'reset to re-run after failure' });
|
|
512
|
+
tick(workstream.id);
|
|
513
|
+
return true;
|
|
514
|
+
}
|
|
323
515
|
function serializeWorkstream(workstreamId) {
|
|
324
516
|
const workstream = workstreams.get(workstreamId);
|
|
325
517
|
if (!workstream)
|
|
@@ -371,6 +563,18 @@ export function createOrchestrationEngine(deps) {
|
|
|
371
563
|
reconcileImportedItems(workstream);
|
|
372
564
|
workstreams.set(workstream.id, workstream);
|
|
373
565
|
completedResults.set(workstream.id, [...snapshot.completedResults]);
|
|
566
|
+
// Orphan worktree reconciliation (worktree mode only) — SYNCHRONOUS and
|
|
567
|
+
// done BEFORE this function returns, i.e. before any caller can call
|
|
568
|
+
// start()/tick() on this workstream. An on-disk `ws/<wsShort>/*` worktree
|
|
569
|
+
// not already recorded on one of the just-imported items is a crash
|
|
570
|
+
// artifact from a prior process; adopt it onto a matching unresolved item
|
|
571
|
+
// or report it for the operator (NEVER deleted on sight) — see
|
|
572
|
+
// WorktreeIsolationManager.reconcileOrphans for why this must not race
|
|
573
|
+
// the first tick()'s claim (it would otherwise risk creating a second
|
|
574
|
+
// worktree at the same deterministic path).
|
|
575
|
+
if (workstream.isolation === 'worktree') {
|
|
576
|
+
worktreeIsolation.reconcileOrphans(workstream);
|
|
577
|
+
}
|
|
374
578
|
return true;
|
|
375
579
|
}
|
|
376
580
|
function resumeWorkstream(workstreamId) {
|
|
@@ -407,6 +611,7 @@ export function createOrchestrationEngine(deps) {
|
|
|
407
611
|
start,
|
|
408
612
|
kill,
|
|
409
613
|
updateBudget,
|
|
614
|
+
retryItem,
|
|
410
615
|
getPhaseResults,
|
|
411
616
|
serializeWorkstream,
|
|
412
617
|
importWorkstream,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** SDK-owned platform module. This implementation is maintained in goodvibes-sdk. */
|
|
2
|
-
export type { BudgetCeiling, CommitExclusion, GateOutcome, OrchestrationEvent, OrchestrationEventListener, Phase, PhaseGateSpec, PhaseKind, PhaseResult, PhaseRole, PhaseSpec, SerializedWorkItem, SerializedWorkstream, WorkItem, WorkItemSpec, WorkItemState, WorkItemUsage, Workstream, WorkstreamSnapshot, } from './types.js';
|
|
2
|
+
export type { BudgetCeiling, CommitExclusion, GateOutcome, ItemMergeState, OrchestrationEvent, OrchestrationEventListener, Phase, PhaseGateSpec, PhaseKind, PhaseResult, PhaseRole, PhaseSpec, SerializedWorkItem, SerializedWorkstream, WorkItem, WorkItemSpec, WorkItemState, WorkItemUsage, Workstream, WorkstreamIsolation, WorkstreamProvenance, WorkstreamSnapshot, } from './types.js';
|
|
3
3
|
export { CURRENT_WORKSTREAM_SCHEMA_VERSION, emptyWorkItemUsage } from './types.js';
|
|
4
4
|
export type { CreateWorkstreamInput, OrchestrationEngine, OrchestrationEngineDeps } from './engine.js';
|
|
5
5
|
export { createOrchestrationEngine } from './engine.js';
|
|
@@ -8,11 +8,13 @@ export { createCancellationRegistry } from './cancellation.js';
|
|
|
8
8
|
export type { BudgetCheck } from './budget.js';
|
|
9
9
|
export { checkBudget } from './budget.js';
|
|
10
10
|
export { deserializeWorkstream, deserializeWorkstreamSnapshot, listSnapshotWorkstreamIds, loadWorkstreamSnapshot, serializeWorkstream, serializeWorkstreamSnapshot, writeWorkstreamSnapshot, } from './persistence.js';
|
|
11
|
-
export { fromChainSpec } from './controller-compat.js';
|
|
11
|
+
export { engineerReviewPhases, fromChainSpec } from './controller-compat.js';
|
|
12
|
+
export { fromPlanProposal } from './proposal-workstream.js';
|
|
13
|
+
export type { FromPlanProposalOptions } from './proposal-workstream.js';
|
|
12
14
|
export type { PhaseRunnerAgentManagerLike, PhaseRunnerDeps, PhaseRunOutcome, WrfcWorktreeOps } from './phase-runner.js';
|
|
13
15
|
export { runPhase } from './phase-runner.js';
|
|
14
16
|
export type { DirtyLaunchSnapshot, ScopedCommitExclusion } from './dirty-guard.js';
|
|
15
17
|
export { excludeUntouchedLaunchResidue, hashWorkingTreeFile, snapshotDirtyTree } from './dirty-guard.js';
|
|
16
|
-
export { computeClaims, firstPhase, nextPhaseAfter, phaseById, reviewPhaseBefore, sortedPhases, } from './scheduler.js';
|
|
17
|
-
export type { PhaseClaim } from './scheduler.js';
|
|
18
|
+
export { computeClaims, dependencyStatus, firstPhase, nextPhaseAfter, phaseById, reviewPhaseBefore, sortedPhases, } from './scheduler.js';
|
|
19
|
+
export type { DependencyStatus, PhaseClaim } from './scheduler.js';
|
|
18
20
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/platform/orchestration/index.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAMrF,YAAY,EACV,aAAa,EACb,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,0BAA0B,EAC1B,KAAK,EACL,aAAa,EACb,SAAS,EACT,WAAW,EACX,SAAS,EACT,SAAS,EACT,kBAAkB,EAClB,oBAAoB,EACpB,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,aAAa,EACb,UAAU,EACV,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,iCAAiC,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEnF,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACvG,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAExD,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAE/D,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EACL,qBAAqB,EACrB,6BAA6B,EAC7B,yBAAyB,EACzB,sBAAsB,EACtB,mBAAmB,EACnB,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/platform/orchestration/index.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAMrF,YAAY,EACV,aAAa,EACb,eAAe,EACf,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,0BAA0B,EAC1B,KAAK,EACL,aAAa,EACb,SAAS,EACT,WAAW,EACX,SAAS,EACT,SAAS,EACT,kBAAkB,EAClB,oBAAoB,EACpB,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,aAAa,EACb,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,iCAAiC,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEnF,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACvG,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAExD,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAE/D,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EACL,qBAAqB,EACrB,6BAA6B,EAC7B,yBAAyB,EACzB,sBAAsB,EACtB,mBAAmB,EACnB,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,YAAY,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAExE,YAAY,EAAE,2BAA2B,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACxH,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,YAAY,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAE,6BAA6B,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEzG,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,SAAS,EACT,iBAAiB,EACjB,YAAY,GACb,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -4,7 +4,8 @@ export { createOrchestrationEngine } from './engine.js';
|
|
|
4
4
|
export { createCancellationRegistry } from './cancellation.js';
|
|
5
5
|
export { checkBudget } from './budget.js';
|
|
6
6
|
export { deserializeWorkstream, deserializeWorkstreamSnapshot, listSnapshotWorkstreamIds, loadWorkstreamSnapshot, serializeWorkstream, serializeWorkstreamSnapshot, writeWorkstreamSnapshot, } from './persistence.js';
|
|
7
|
-
export { fromChainSpec } from './controller-compat.js';
|
|
7
|
+
export { engineerReviewPhases, fromChainSpec } from './controller-compat.js';
|
|
8
|
+
export { fromPlanProposal } from './proposal-workstream.js';
|
|
8
9
|
export { runPhase } from './phase-runner.js';
|
|
9
10
|
export { excludeUntouchedLaunchResidue, hashWorkingTreeFile, snapshotDirtyTree } from './dirty-guard.js';
|
|
10
|
-
export { computeClaims, firstPhase, nextPhaseAfter, phaseById, reviewPhaseBefore, sortedPhases, } from './scheduler.js';
|
|
11
|
+
export { computeClaims, dependencyStatus, firstPhase, nextPhaseAfter, phaseById, reviewPhaseBefore, sortedPhases, } from './scheduler.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../../src/platform/orchestration/persistence.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAerF,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAEhB,KAAK,oBAAoB,EAEzB,KAAK,UAAU,EACf,KAAK,kBAAkB,EACxB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../../src/platform/orchestration/persistence.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAerF,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAEhB,KAAK,oBAAoB,EAEzB,KAAK,UAAU,EACf,KAAK,kBAAkB,EACxB,MAAM,YAAY,CAAC;AAepB,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,UAAU,GAAG,oBAAoB,CAEhF;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,oBAAoB,GAAG,UAAU,CAElF;AAED,qJAAqJ;AACrJ,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,SAAS,WAAW,EAAE,GAAG,MAAM,GAAG,IAAI,CAa3H;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CA6BrF;AAUD,2FAA2F;AAC3F,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAsB3G;AAED,uHAAuH;AACvH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAWvE;AAED,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,SAAS,WAAW,EAAE,GAAG,IAAI,CAUnI;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,UAAU,GAAG,IAAI,EAC1D,mBAAmB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,SAAS,WAAW,EAAE,EACrE,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,KAAK,MAAM,IAAI,GACvE,MAAM,IAAI,CA4BZ"}
|
|
@@ -18,7 +18,10 @@ function serializeWorkItem(item) {
|
|
|
18
18
|
return { ...item, visits: Object.fromEntries(item.visits) };
|
|
19
19
|
}
|
|
20
20
|
function deserializeWorkItem(raw) {
|
|
21
|
-
|
|
21
|
+
// `dependsOn` (BIG-3 item 2) defaults to [] for snapshots written before the
|
|
22
|
+
// field existed, so an older snapshot deserializes as an un-gated item rather
|
|
23
|
+
// than crashing the dependency pre-pass on an undefined array.
|
|
24
|
+
return { ...raw, dependsOn: raw.dependsOn ?? [], visits: new Map(Object.entries(raw.visits)) };
|
|
22
25
|
}
|
|
23
26
|
export function serializeWorkstream(workstream) {
|
|
24
27
|
return { ...workstream, items: workstream.items.map(serializeWorkItem) };
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
import type { AgentManager } from '../tools/agent/manager.js';
|
|
48
48
|
import type { ConfigManager } from '../config/manager.js';
|
|
49
49
|
import type { RuntimeEventBus } from '../runtime/events/index.js';
|
|
50
|
+
import { type CommitWorkingTreeResult } from '../agents/worktree.js';
|
|
50
51
|
import type { CancellationRegistry } from './cancellation.js';
|
|
51
52
|
import { type DirtyLaunchSnapshot } from './dirty-guard.js';
|
|
52
53
|
import type { Phase, PhaseResult, WorkItem, WorkItemUsage, Workstream } from './types.js';
|
|
@@ -56,9 +57,22 @@ export type PhaseRunnerAgentManagerLike = Pick<AgentManager, 'spawn' | 'getStatu
|
|
|
56
57
|
export interface WrfcWorktreeOps {
|
|
57
58
|
merge(agentId: string): Promise<boolean>;
|
|
58
59
|
cleanup(agentId: string): Promise<void>;
|
|
59
|
-
commitWorkingTree(message: string, paths?: string[]): Promise<
|
|
60
|
+
commitWorkingTree(message: string, paths?: string[]): Promise<CommitWorkingTreeResult>;
|
|
60
61
|
currentHead(): Promise<string | null>;
|
|
61
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* The minimal surface of an item's IsolatedWorktree (worktree.ts) that the
|
|
65
|
+
* phase-runner needs in `worktree` isolation mode: the on-disk `path` (used as
|
|
66
|
+
* the spawned agent's working directory) and a scoped `commit` onto the item
|
|
67
|
+
* branch. Notably NOT merge/cleanup — in worktree mode the item worktree
|
|
68
|
+
* persists across the item's phases and the engine's sequential integration
|
|
69
|
+
* lane owns the merge-back and cleanup, so a phase NEVER merges to base or
|
|
70
|
+
* removes the worktree.
|
|
71
|
+
*/
|
|
72
|
+
export interface PhaseItemWorktree {
|
|
73
|
+
readonly path: string;
|
|
74
|
+
commit(message: string, paths?: string[]): Promise<CommitWorkingTreeResult>;
|
|
75
|
+
}
|
|
62
76
|
export interface PhaseRunnerDeps {
|
|
63
77
|
readonly agentManager: PhaseRunnerAgentManagerLike;
|
|
64
78
|
readonly configManager: Pick<ConfigManager, 'get' | 'getCategory'>;
|
|
@@ -75,12 +89,25 @@ export interface PhaseRunnerDeps {
|
|
|
75
89
|
* today's behavior: no exclusion, every candidate path is committed.
|
|
76
90
|
*/
|
|
77
91
|
readonly launchDirtySnapshot?: DirtyLaunchSnapshot | undefined;
|
|
92
|
+
/**
|
|
93
|
+
* Present ONLY in `worktree` isolation mode: this item's dedicated worktree
|
|
94
|
+
* (created by the engine at first claim). When set, the phase's scoped commit
|
|
95
|
+
* lands on the item branch INSIDE this worktree (not the shared projectRoot),
|
|
96
|
+
* and the spawned agent runs with its working directory set to the worktree
|
|
97
|
+
* path. Absent ⇒ shared mode, every existing behavior unchanged.
|
|
98
|
+
*/
|
|
99
|
+
readonly itemWorktree?: PhaseItemWorktree | undefined;
|
|
78
100
|
}
|
|
79
101
|
export interface PhaseRunOutcome {
|
|
80
102
|
readonly result: PhaseResult;
|
|
81
103
|
readonly agentStatus: 'completed' | 'failed' | 'cancelled';
|
|
82
104
|
}
|
|
83
|
-
/**
|
|
105
|
+
/**
|
|
106
|
+
* Combines a new phase's usage into a work item's running total. Single-source
|
|
107
|
+
* cost (never independently re-priced here). Thin alias over the canonical
|
|
108
|
+
* {@link mergeWorkItemUsage} (types.ts) so the phase-runner, the engine, and
|
|
109
|
+
* the fleet rollup adapters all fold usage through exactly one implementation.
|
|
110
|
+
*/
|
|
84
111
|
export declare function mergeUsage(a: WorkItemUsage, b: WorkItemUsage): WorkItemUsage;
|
|
85
112
|
/** Runs one WorkItem through one Phase to completion (or cancellation/failure). Recurses (bounded by transportRetryLimit) on a transport-classified spawn failure. */
|
|
86
113
|
export declare function runPhase(workstream: Workstream, item: WorkItem, phase: Phase, priorReports: readonly PhaseResult[], deps: PhaseRunnerDeps): Promise<PhaseRunOutcome>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phase-runner.d.ts","sourceRoot":"","sources":["../../../src/platform/orchestration/phase-runner.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAErF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,OAAO,KAAK,EAAE,YAAY,EAAe,MAAM,2BAA2B,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"phase-runner.d.ts","sourceRoot":"","sources":["../../../src/platform/orchestration/phase-runner.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAErF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,OAAO,KAAK,EAAE,YAAY,EAAe,MAAM,2BAA2B,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAiB,KAAK,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAcpF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAiC,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAG3F,OAAO,KAAK,EAAgC,KAAK,EAAsB,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE5I,+FAA+F;AAC/F,MAAM,MAAM,2BAA2B,GAAG,IAAI,CAC5C,YAAY,EACZ,OAAO,GAAG,WAAW,GAAG,QAAQ,GAAG,4BAA4B,GAAG,2BAA2B,CAC9F,CAAC;AAEF,4JAA4J;AAC5J,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACvF,WAAW,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CACvC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;CAC7E;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,YAAY,EAAE,2BAA2B,CAAC;IACnD,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,GAAG,aAAa,CAAC,CAAC;IACnE,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,MAAM,eAAe,CAAC,GAAG,SAAS,CAAC;IAC9D,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC;IAC5C,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,aAAa,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;IACvG,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACrD;;;;OAIG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAC/D;;;;;;OAMG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;CACvD;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;CAC5D;AA8ED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,aAAa,CAE5E;AAkLD,sKAAsK;AACtK,wBAAsB,QAAQ,CAC5B,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,SAAS,WAAW,EAAE,EACpC,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,eAAe,CAAC,CAqH1B"}
|