@pellux/goodvibes-sdk 0.38.0 → 1.1.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 +4468 -916
- 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 +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/orchestrator-runner.d.ts +16 -3
- package/dist/platform/agents/orchestrator-runner.d.ts.map +1 -1
- package/dist/platform/agents/orchestrator-runner.js +20 -6
- package/dist/platform/agents/orchestrator.d.ts +42 -10
- package/dist/platform/agents/orchestrator.d.ts.map +1 -1
- package/dist/platform/agents/orchestrator.js +68 -20
- 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 +24 -1
- package/dist/platform/agents/wrfc-controller.d.ts.map +1 -1
- package/dist/platform/agents/wrfc-controller.js +161 -35
- 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-branching.d.ts +66 -0
- package/dist/platform/companion/companion-chat-branching.d.ts.map +1 -0
- package/dist/platform/companion/companion-chat-branching.js +142 -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 +91 -23
- package/dist/platform/companion/companion-chat-manager.d.ts.map +1 -1
- package/dist/platform/companion/companion-chat-manager.js +195 -223
- 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 +113 -4
- package/dist/platform/companion/companion-chat-turn-execution.d.ts +61 -0
- package/dist/platform/companion/companion-chat-turn-execution.d.ts.map +1 -0
- package/dist/platform/companion/companion-chat-turn-execution.js +107 -0
- package/dist/platform/companion/companion-chat-types.d.ts +67 -0
- package/dist/platform/companion/companion-chat-types.d.ts.map +1 -1
- 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-domain-runtime.d.ts +8 -0
- package/dist/platform/config/schema-domain-runtime.d.ts.map +1 -1
- package/dist/platform/config/schema-domain-runtime.js +32 -0
- package/dist/platform/config/schema-types.d.ts +21 -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 +8 -1
- package/dist/platform/control-plane/index.d.ts.map +1 -1
- package/dist/platform/control-plane/index.js +8 -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 +176 -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-push.d.ts +30 -0
- package/dist/platform/control-plane/method-catalog-push.d.ts.map +1 -0
- package/dist/platform/control-plane/method-catalog-push.js +80 -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-runtime.d.ts.map +1 -1
- package/dist/platform/control-plane/method-catalog-runtime.js +83 -1
- 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 +34 -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 +37 -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 +100 -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/push.d.ts +26 -0
- package/dist/platform/control-plane/routes/push.d.ts.map +1 -0
- package/dist/platform/control-plane/routes/push.js +104 -0
- package/dist/platform/control-plane/routes/register-gateway-verb-groups.d.ts +31 -0
- package/dist/platform/control-plane/routes/register-gateway-verb-groups.d.ts.map +1 -0
- package/dist/platform/control-plane/routes/register-gateway-verb-groups.js +16 -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 +23 -3
- 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 +13 -6
- package/dist/platform/core/orchestrator-turn-loop.d.ts.map +1 -1
- package/dist/platform/core/orchestrator-turn-loop.js +29 -22
- package/dist/platform/core/orchestrator.d.ts +16 -10
- package/dist/platform/core/orchestrator.d.ts.map +1 -1
- package/dist/platform/core/orchestrator.js +23 -8
- 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 +69 -0
- package/dist/platform/daemon/boot.d.ts.map +1 -0
- package/dist/platform/daemon/boot.js +61 -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 +15 -6
- package/dist/platform/daemon/facade.d.ts.map +1 -1
- package/dist/platform/daemon/facade.js +48 -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 +2 -1
- package/dist/platform/daemon/http/router.d.ts.map +1 -1
- package/dist/platform/daemon/http/router.js +42 -40
- 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/http/webui-serving.d.ts +68 -0
- package/dist/platform/daemon/http/webui-serving.d.ts.map +1 -0
- package/dist/platform/daemon/http/webui-serving.js +230 -0
- 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 +1 -1
- 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 +2 -2
- package/dist/platform/orchestration/cancellation.d.ts +2 -2
- package/dist/platform/orchestration/controller-compat.d.ts +16 -3
- package/dist/platform/orchestration/controller-compat.d.ts.map +1 -1
- package/dist/platform/orchestration/controller-compat.js +18 -4
- package/dist/platform/orchestration/dirty-guard.js +1 -1
- 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 +229 -25
- 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 +6 -3
- package/dist/platform/orchestration/phase-runner.d.ts +33 -6
- 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 +20 -1
- 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 +289 -4
- 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/push/delivery.d.ts +48 -0
- package/dist/platform/push/delivery.d.ts.map +1 -0
- package/dist/platform/push/delivery.js +117 -0
- package/dist/platform/push/encryption.d.ts +41 -0
- package/dist/platform/push/encryption.d.ts.map +1 -0
- package/dist/platform/push/encryption.js +82 -0
- package/dist/platform/push/index.d.ts +17 -0
- package/dist/platform/push/index.d.ts.map +1 -0
- package/dist/platform/push/index.js +10 -0
- package/dist/platform/push/service.d.ts +75 -0
- package/dist/platform/push/service.d.ts.map +1 -0
- package/dist/platform/push/service.js +95 -0
- package/dist/platform/push/subscription-store.d.ts +50 -0
- package/dist/platform/push/subscription-store.d.ts.map +1 -0
- package/dist/platform/push/subscription-store.js +123 -0
- package/dist/platform/push/types.d.ts +68 -0
- package/dist/platform/push/types.d.ts.map +1 -0
- package/dist/platform/push/types.js +13 -0
- package/dist/platform/push/vapid.d.ts +54 -0
- package/dist/platform/push/vapid.d.ts.map +1 -0
- package/dist/platform/push/vapid.js +113 -0
- 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/agent.d.ts +2 -2
- package/dist/platform/runtime/fleet/adapters/agent.d.ts.map +1 -1
- package/dist/platform/runtime/fleet/adapters/agent.js +4 -4
- package/dist/platform/runtime/fleet/adapters/automation.d.ts +1 -1
- package/dist/platform/runtime/fleet/adapters/automation.js +1 -1
- package/dist/platform/runtime/fleet/adapters/code-index.d.ts +1 -1
- package/dist/platform/runtime/fleet/adapters/code-index.js +1 -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/schedule.d.ts +4 -4
- package/dist/platform/runtime/fleet/adapters/schedule.js +4 -4
- package/dist/platform/runtime/fleet/adapters/trigger.d.ts +3 -4
- package/dist/platform/runtime/fleet/adapters/trigger.d.ts.map +1 -1
- package/dist/platform/runtime/fleet/adapters/trigger.js +3 -4
- 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 +49 -2
- package/dist/platform/runtime/fleet/registry.d.ts +7 -7
- package/dist/platform/runtime/fleet/registry.d.ts.map +1 -1
- package/dist/platform/runtime/fleet/registry.js +41 -7
- package/dist/platform/runtime/fleet/types.d.ts +9 -9
- package/dist/platform/runtime/fleet/types.d.ts.map +1 -1
- package/dist/platform/runtime/memory-spine/client.d.ts +127 -0
- package/dist/platform/runtime/memory-spine/client.d.ts.map +1 -0
- package/dist/platform/runtime/memory-spine/client.js +113 -0
- package/dist/platform/runtime/memory-spine/index.d.ts +11 -0
- package/dist/platform/runtime/memory-spine/index.d.ts.map +1 -0
- package/dist/platform/runtime/memory-spine/index.js +10 -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/services.d.ts +11 -9
- package/dist/platform/runtime/services.d.ts.map +1 -1
- package/dist/platform/runtime/services.js +24 -9
- 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.js +1 -1
- package/dist/platform/state/code-index-db.d.ts +1 -1
- 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 +11 -3
- 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 +118 -0
- package/dist/platform/state/memory-recall-contract.d.ts.map +1 -0
- package/dist/platform/state/memory-recall-contract.js +170 -0
- package/dist/platform/state/memory-registry.d.ts +8 -0
- package/dist/platform/state/memory-registry.d.ts.map +1 -1
- package/dist/platform/state/memory-registry.js +10 -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 +14 -3
- 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 +1 -1
- package/dist/platform/state/sqlite-vec-loader.js +1 -1
- 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 +22 -10
- package/dist/platform/tools/agent/manager.d.ts.map +1 -1
- package/dist/platform/tools/agent/manager.js +13 -7
- 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 +27 -10
- package/dist/platform/tools/exec/schema.d.ts +2 -2
- 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 +1 -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/registry.d.ts +1 -1
- package/dist/platform/tools/registry.js +1 -1
- 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 +1 -1
- package/dist/platform/utils/request-body.d.ts.map +1 -1
- package/dist/platform/utils/request-body.js +50 -5
- package/dist/platform/version.js +1 -1
- package/package.json +25 -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
|
@@ -8,6 +8,8 @@ import { isTransportFailureMessage } from '../types/errors.js';
|
|
|
8
8
|
import { logger } from '../utils/logger.js';
|
|
9
9
|
import { summarizeError } from '../utils/error-display.js';
|
|
10
10
|
import { excludeUntouchedLaunchResidue } from './dirty-guard.js';
|
|
11
|
+
import { classifyBookkeepingFailure } from './bookkeeping.js';
|
|
12
|
+
import { mergeWorkItemUsage } from './types.js';
|
|
11
13
|
function templateForPhase(phase) {
|
|
12
14
|
return phase.kind === 'review' || phase.kind === 'gate' ? 'general' : 'engineer';
|
|
13
15
|
}
|
|
@@ -74,23 +76,14 @@ function usageFromRecord(record, priceUsage) {
|
|
|
74
76
|
}
|
|
75
77
|
return { ...base, costUsd, costState };
|
|
76
78
|
}
|
|
77
|
-
/**
|
|
79
|
+
/**
|
|
80
|
+
* Combines a new phase's usage into a work item's running total. Single-source
|
|
81
|
+
* cost (never independently re-priced here). Thin alias over the canonical
|
|
82
|
+
* {@link mergeWorkItemUsage} (types.ts) so the phase-runner, the engine, and
|
|
83
|
+
* the fleet rollup adapters all fold usage through exactly one implementation.
|
|
84
|
+
*/
|
|
78
85
|
export function mergeUsage(a, b) {
|
|
79
|
-
|
|
80
|
-
const bothPriced = a.costState === 'priced' && b.costState === 'priced';
|
|
81
|
-
const neitherPriced = a.costUsd === null && b.costUsd === null;
|
|
82
|
-
return {
|
|
83
|
-
inputTokens: a.inputTokens + b.inputTokens,
|
|
84
|
-
outputTokens: a.outputTokens + b.outputTokens,
|
|
85
|
-
cacheReadTokens: a.cacheReadTokens + b.cacheReadTokens,
|
|
86
|
-
cacheWriteTokens: a.cacheWriteTokens + b.cacheWriteTokens,
|
|
87
|
-
reasoningTokens: sawReasoning ? (a.reasoningTokens ?? 0) + (b.reasoningTokens ?? 0) : undefined,
|
|
88
|
-
llmCallCount: a.llmCallCount + b.llmCallCount,
|
|
89
|
-
turnCount: a.turnCount + b.turnCount,
|
|
90
|
-
toolCallCount: a.toolCallCount + b.toolCallCount,
|
|
91
|
-
costUsd: a.costUsd !== null && b.costUsd !== null ? a.costUsd + b.costUsd : (a.costUsd ?? b.costUsd),
|
|
92
|
-
costState: bothPriced ? 'priced' : neitherPriced ? 'unpriced' : 'estimated',
|
|
93
|
-
};
|
|
86
|
+
return mergeWorkItemUsage(a, b);
|
|
94
87
|
}
|
|
95
88
|
/** Quality gates (global-config-driven, reused VERBATIM) + phase-required-gate assertion + phantom guard + reviewer constraint findings. */
|
|
96
89
|
async function evaluateGate(workstream, phase, report, deps) {
|
|
@@ -100,6 +93,13 @@ async function evaluateGate(workstream, phase, report, deps) {
|
|
|
100
93
|
runtimeBus: deps.runtimeBus,
|
|
101
94
|
sessionId: deps.sessionId,
|
|
102
95
|
chainId: workstream.id,
|
|
96
|
+
// Worktree mode (BIG-3 item 5): run the configured quality gates INSIDE the
|
|
97
|
+
// item's isolated worktree, the same way the phantom-work guard above
|
|
98
|
+
// verifies claims against that worktree path. BIG-1 fixed only the phantom
|
|
99
|
+
// check; without this, gates (typecheck/lint/test) would run against the
|
|
100
|
+
// shared projectRoot and never see the item's isolated changes. Absent
|
|
101
|
+
// (shared mode) ⇒ runWrfcGateChecks defaults cwd to projectRoot — unchanged.
|
|
102
|
+
...(deps.itemWorktree ? { cwd: deps.itemWorktree.path } : {}),
|
|
103
103
|
})];
|
|
104
104
|
const ranNames = new Set(results.map((r) => r.gate));
|
|
105
105
|
const missingRequired = phase.gate.gates.filter((name) => !ranNames.has(name));
|
|
@@ -107,7 +107,11 @@ async function evaluateGate(workstream, phase, report, deps) {
|
|
|
107
107
|
results.push({ gate: name, passed: false, output: 'required gate is not configured/enabled', durationMs: 0 });
|
|
108
108
|
}
|
|
109
109
|
if (report.archetype === 'engineer' && !deps.skipClaimVerification) {
|
|
110
|
-
|
|
110
|
+
// Worktree mode: the agent's files landed in the item's OWN worktree, not
|
|
111
|
+
// the shared projectRoot — verify claims (existence + `git diff`) against
|
|
112
|
+
// that worktree path, or every real change would be falsely flagged as
|
|
113
|
+
// phantom work (nothing to find at projectRoot).
|
|
114
|
+
const verification = verifyEngineerClaims(report, deps.itemWorktree?.path ?? deps.projectRoot);
|
|
111
115
|
if (verification.kind === 'unverified' || verification.kind === 'unverifiable_no_claims') {
|
|
112
116
|
results.push({ gate: 'phantom-work-guard', passed: false, output: verification.summary, durationMs: 0 });
|
|
113
117
|
}
|
|
@@ -137,11 +141,48 @@ async function evaluateGate(workstream, phase, report, deps) {
|
|
|
137
141
|
unsatisfiedConstraintIds,
|
|
138
142
|
};
|
|
139
143
|
}
|
|
144
|
+
/**
|
|
145
|
+
* Runs the POST-gate scoped-commit + merge for a passed phase and reports its
|
|
146
|
+
* outcome HONESTLY rather than swallowing failures. The gate has already
|
|
147
|
+
* decided the phase passed; this step only records the changes, so its result
|
|
148
|
+
* is bookkeeping: a failure surfaces to the engine as a warning on a passed
|
|
149
|
+
* item (or, for the narrow negating set — workspace corruption, see
|
|
150
|
+
* bookkeeping.ts — as an item failure), never as a silent no-op that lets the
|
|
151
|
+
* fleet imply a commit happened when it did not (DEBT-4 item 1).
|
|
152
|
+
*/
|
|
140
153
|
async function commitPhaseWork(item, phase, agentId, worktree, deps) {
|
|
141
|
-
if (phase.gate.scope === 'off')
|
|
142
|
-
return
|
|
154
|
+
if (phase.gate.scope === 'off') {
|
|
155
|
+
return { commit: { status: 'skipped', reason: 'commit disabled for this phase (gate scope: off)' } };
|
|
156
|
+
}
|
|
143
157
|
let paths = phase.gate.scope === 'scoped' ? item.touchedPaths : undefined;
|
|
144
158
|
let exclusion;
|
|
159
|
+
// Worktree mode: the item commits onto its own branch INSIDE its dedicated
|
|
160
|
+
// worktree, which the engine created fresh (and therefore clean) at claim.
|
|
161
|
+
// The launch-dirty snapshot is taken against the SHARED projectRoot, so it
|
|
162
|
+
// has nothing to say about a just-created worktree — a fresh worktree starts
|
|
163
|
+
// clean, so its launch-dirty residue is trivially empty. Skip the residue
|
|
164
|
+
// exclusion entirely and commit straight onto the item branch; NO merge to
|
|
165
|
+
// base (the sequential integration lane owns that at item termination).
|
|
166
|
+
if (deps.itemWorktree) {
|
|
167
|
+
try {
|
|
168
|
+
const result = await deps.itemWorktree.commit(`orchestration: ${item.title} — ${phase.kind} phase`, paths);
|
|
169
|
+
const ignoredNote = result.skippedIgnored.length > 0
|
|
170
|
+
? `${result.skippedIgnored.length} ignored path${result.skippedIgnored.length === 1 ? '' : 's'} skipped`
|
|
171
|
+
: undefined;
|
|
172
|
+
if (result.hash === null) {
|
|
173
|
+
return { commit: { status: 'skipped', reason: ignoredNote ? `nothing to stage (${ignoredNote})` : 'nothing to stage' } };
|
|
174
|
+
}
|
|
175
|
+
return { commit: { status: 'committed', hash: result.hash, ...(ignoredNote ? { reason: ignoredNote } : {}) } };
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
const reason = summarizeError(error);
|
|
179
|
+
const negating = classifyBookkeepingFailure(error) === 'negating';
|
|
180
|
+
logger.warn('orchestration phase-runner: worktree scoped commit did not complete', {
|
|
181
|
+
itemId: item.id, phaseId: phase.id, worktreePath: deps.itemWorktree.path, error: reason, negating,
|
|
182
|
+
});
|
|
183
|
+
return { commit: { status: 'failed', reason, negating } };
|
|
184
|
+
}
|
|
185
|
+
}
|
|
145
186
|
if (paths && paths.length > 0 && deps.launchDirtySnapshot) {
|
|
146
187
|
const launchSnapshot = deps.launchDirtySnapshot;
|
|
147
188
|
if (launchSnapshot.size > 0) {
|
|
@@ -157,7 +198,7 @@ async function commitPhaseWork(item, phase, agentId, worktree, deps) {
|
|
|
157
198
|
phaseId: phase.id,
|
|
158
199
|
excludedPaths: excluded,
|
|
159
200
|
});
|
|
160
|
-
return exclusion;
|
|
201
|
+
return { exclusion, commit: { status: 'skipped', reason: 'every candidate path was untouched launch-dirty residue' } };
|
|
161
202
|
}
|
|
162
203
|
logger.info('orchestration phase-runner: excluded untouched launch-dirty residue from scoped commit', {
|
|
163
204
|
itemId: item.id,
|
|
@@ -169,13 +210,31 @@ async function commitPhaseWork(item, phase, agentId, worktree, deps) {
|
|
|
169
210
|
}
|
|
170
211
|
}
|
|
171
212
|
try {
|
|
172
|
-
await worktree.commitWorkingTree(`orchestration: ${item.title} — ${phase.kind} phase`, paths);
|
|
213
|
+
const result = await worktree.commitWorkingTree(`orchestration: ${item.title} — ${phase.kind} phase`, paths);
|
|
173
214
|
await worktree.merge(agentId);
|
|
215
|
+
const ignoredNote = result.skippedIgnored.length > 0
|
|
216
|
+
? `${result.skippedIgnored.length} ignored path${result.skippedIgnored.length === 1 ? '' : 's'} skipped`
|
|
217
|
+
: undefined;
|
|
218
|
+
if (result.hash === null) {
|
|
219
|
+
// A null hash is "nothing was staged" — an honest skip, not a landed commit.
|
|
220
|
+
return { exclusion, commit: { status: 'skipped', reason: ignoredNote ? `nothing to stage (${ignoredNote})` : 'nothing to stage' } };
|
|
221
|
+
}
|
|
222
|
+
return {
|
|
223
|
+
exclusion,
|
|
224
|
+
commit: { status: 'committed', hash: result.hash, ...(ignoredNote ? { reason: ignoredNote } : {}) },
|
|
225
|
+
};
|
|
174
226
|
}
|
|
175
227
|
catch (error) {
|
|
176
|
-
|
|
228
|
+
const reason = summarizeError(error);
|
|
229
|
+
const negating = classifyBookkeepingFailure(error) === 'negating';
|
|
230
|
+
// Non-fatal by default: the gate already passed, so the engine treats this
|
|
231
|
+
// as a warning on a passed item. Only a NEGATING failure (workspace
|
|
232
|
+
// corruption — bookkeeping.ts) flips the item to failed.
|
|
233
|
+
logger.warn('orchestration phase-runner: scoped commit/merge did not complete', {
|
|
234
|
+
itemId: item.id, phaseId: phase.id, error: reason, negating,
|
|
235
|
+
});
|
|
236
|
+
return { exclusion, commit: { status: 'failed', reason, negating } };
|
|
177
237
|
}
|
|
178
|
-
return exclusion;
|
|
179
238
|
}
|
|
180
239
|
/** Runs one WorkItem through one Phase to completion (or cancellation/failure). Recurses (bounded by transportRetryLimit) on a transport-classified spawn failure. */
|
|
181
240
|
export async function runPhase(workstream, item, phase, priorReports, deps) {
|
|
@@ -187,6 +246,11 @@ export async function runPhase(workstream, item, phase, priorReports, deps) {
|
|
|
187
246
|
task: buildPhaseTask(item, phase, priorReports),
|
|
188
247
|
template: templateForPhase(phase),
|
|
189
248
|
dangerously_disable_wrfc: true,
|
|
249
|
+
// Worktree mode: run the agent's tools with their working directory set to
|
|
250
|
+
// the item's isolated worktree, so its file edits land there instead of the
|
|
251
|
+
// shared projectRoot. Omitted (undefined) in shared mode ⇒ agent uses the
|
|
252
|
+
// orchestrator's default working directory exactly as before.
|
|
253
|
+
...(deps.itemWorktree ? { workingDirectory: deps.itemWorktree.path } : {}),
|
|
190
254
|
});
|
|
191
255
|
record.workItemId = item.id;
|
|
192
256
|
item.agentId = record.id;
|
|
@@ -253,10 +317,18 @@ export async function runPhase(workstream, item, phase, priorReports, deps) {
|
|
|
253
317
|
}
|
|
254
318
|
const gate = await evaluateGate(workstream, phase, report, deps);
|
|
255
319
|
let commitExclusion;
|
|
320
|
+
let commit;
|
|
256
321
|
if (gate.passed) {
|
|
257
|
-
|
|
322
|
+
const committed = await commitPhaseWork(item, phase, record.id, worktree, deps);
|
|
323
|
+
commitExclusion = committed.exclusion;
|
|
324
|
+
commit = committed.commit;
|
|
325
|
+
}
|
|
326
|
+
// In worktree mode the item worktree persists across phases (the engine's
|
|
327
|
+
// integration lane owns its teardown), so only the shared-mode transient
|
|
328
|
+
// worktree gets cleaned up here.
|
|
329
|
+
if (!deps.itemWorktree) {
|
|
330
|
+
await worktree.cleanup(record.id).catch(() => undefined);
|
|
258
331
|
}
|
|
259
|
-
await worktree.cleanup(record.id).catch(() => undefined);
|
|
260
332
|
return {
|
|
261
333
|
agentStatus: 'completed',
|
|
262
334
|
result: {
|
|
@@ -269,6 +341,7 @@ export async function runPhase(workstream, item, phase, priorReports, deps) {
|
|
|
269
341
|
completedAt: Date.now(),
|
|
270
342
|
usage,
|
|
271
343
|
...(commitExclusion ? { commitExclusion } : {}),
|
|
344
|
+
...(commit ? { commit } : {}),
|
|
272
345
|
},
|
|
273
346
|
};
|
|
274
347
|
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/** SDK-owned platform module. This implementation is maintained in goodvibes-sdk. */
|
|
2
|
+
/**
|
|
3
|
+
* Proposal → workstream assembly (BIG-3 item 1) — the final stage of the
|
|
4
|
+
* WRFC→orchestration migration. `fromPlanProposal()` maps an APPROVED
|
|
5
|
+
* PlanProposal (platform/core/plan-proposal.ts, produced by the BIG-2 planner
|
|
6
|
+
* decomposition pipeline) into a `CreateWorkstreamInput` the engine can run
|
|
7
|
+
* directly, so `/workstream launch` executes the REAL multi-item plan instead
|
|
8
|
+
* of flattening it through the `fromChainSpec` compat path.
|
|
9
|
+
*
|
|
10
|
+
* The mapping, one honest step at a time:
|
|
11
|
+
* - ONE work item per proposal work item. The proposal item's `title` becomes
|
|
12
|
+
* the work item's title and its `brief` becomes the work item's `task` — the
|
|
13
|
+
* prompt/context the phase agents actually run against (the phase-runner
|
|
14
|
+
* prepends "Work item: <title>" to review/fix prompts, so both survive into
|
|
15
|
+
* the agent's context). The proposal item's id is preserved so provenance,
|
|
16
|
+
* dependencies, and fleet nodes all line up 1:1.
|
|
17
|
+
* - Every item runs the SAME standard role-phase pipeline — engineer→review,
|
|
18
|
+
* the exact `engineerReviewPhases` template `fromChainSpec` uses
|
|
19
|
+
* (controller-compat.ts). The only per-assembly parameter is phase
|
|
20
|
+
* `capacity`: it defaults to the item count so independent items run
|
|
21
|
+
* concurrently (bounded only by their dependencies), where a single compat
|
|
22
|
+
* chain stays at capacity 1. Callers may cap concurrency via `opts.capacity`.
|
|
23
|
+
* - Inter-item dependencies carry over verbatim: `workItem.dependsOn` (already
|
|
24
|
+
* resolved to item ids by assemblePlanProposal) becomes the engine work
|
|
25
|
+
* item's `dependsOn`, which the scheduler gates the claim path on (an item
|
|
26
|
+
* is not claimable until every dependency reaches 'passed'; see the
|
|
27
|
+
* 'blocked-dependency' state and applyDependencyGates).
|
|
28
|
+
* - Workstream-level provenance records where the plan came from
|
|
29
|
+
* (decomposedBy, proposalId, strategy, agent cost/elapsed).
|
|
30
|
+
*
|
|
31
|
+
* ASSERT-AT-ASSEMBLY (BIG-3 item 2): even though `assemblePlanProposal` already
|
|
32
|
+
* rejects dangling dependencies and cycles, this function re-checks both and
|
|
33
|
+
* THROWS on violation rather than quietly building a broken workstream — a
|
|
34
|
+
* dangling dependency would gate an item on nothing, and a cycle would deadlock
|
|
35
|
+
* every item in it forever in 'blocked-dependency'. Belt-and-braces, because a
|
|
36
|
+
* caller could hand us a hand-built or mutated proposal that never went through
|
|
37
|
+
* the assembler.
|
|
38
|
+
*/
|
|
39
|
+
import type { ConfigManager } from '../config/manager.js';
|
|
40
|
+
import type { PlanProposal } from '../core/plan-proposal.js';
|
|
41
|
+
import type { CreateWorkstreamInput } from './engine.js';
|
|
42
|
+
export interface FromPlanProposalOptions {
|
|
43
|
+
/**
|
|
44
|
+
* Per-phase capacity for the engineer/review phases. Defaults to the number
|
|
45
|
+
* of work items, so all independent items can run concurrently (dependencies
|
|
46
|
+
* still gate the rest). Set a lower value to cap concurrency; clamped to at
|
|
47
|
+
* least 1.
|
|
48
|
+
*/
|
|
49
|
+
readonly capacity?: number | undefined;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Assemble a `CreateWorkstreamInput` from an approved multi-item PlanProposal.
|
|
53
|
+
* See the module doc for the full mapping and the assembly-time assertions.
|
|
54
|
+
*/
|
|
55
|
+
export declare function fromPlanProposal(proposal: PlanProposal, configManager: Pick<ConfigManager, 'get' | 'getCategory'>, opts?: FromPlanProposalOptions): CreateWorkstreamInput;
|
|
56
|
+
//# sourceMappingURL=proposal-workstream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proposal-workstream.d.ts","sourceRoot":"","sources":["../../../src/platform/orchestration/proposal-workstream.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAErF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAGzD,MAAM,WAAW,uBAAuB;IACtC;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACxC;AA8CD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,YAAY,EACtB,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,GAAG,aAAa,CAAC,EACzD,IAAI,GAAE,uBAA4B,GACjC,qBAAqB,CA8BvB"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/** SDK-owned platform module. This implementation is maintained in goodvibes-sdk. */
|
|
2
|
+
import { getWrfcCommitScope } from '../agents/wrfc-config.js';
|
|
3
|
+
import { engineerReviewPhases } from './controller-compat.js';
|
|
4
|
+
/** Throws if any item's `dependsOn` references an unknown item, or if the dependency graph contains a cycle. */
|
|
5
|
+
function assertAcyclicAndResolved(proposal) {
|
|
6
|
+
const ids = new Set(proposal.workItems.map((wi) => wi.id));
|
|
7
|
+
const byId = new Map(proposal.workItems.map((wi) => [wi.id, wi]));
|
|
8
|
+
for (const wi of proposal.workItems) {
|
|
9
|
+
for (const dep of wi.dependsOn) {
|
|
10
|
+
if (!ids.has(dep)) {
|
|
11
|
+
throw new Error(`fromPlanProposal: work item "${wi.title}" (${wi.id}) depends on unknown item id "${dep}" — the proposal is not internally consistent`);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
// Iterative DFS cycle detection over ids (white/grey/black).
|
|
16
|
+
const state = new Map();
|
|
17
|
+
const onCycle = (id) => {
|
|
18
|
+
const title = byId.get(id)?.title ?? id;
|
|
19
|
+
throw new Error(`fromPlanProposal: dependency cycle detected involving work item "${title}" (${id}) — cannot assemble a workstream that would deadlock`);
|
|
20
|
+
};
|
|
21
|
+
const visit = (start) => {
|
|
22
|
+
const stack = [{ id: start, deps: byId.get(start)?.dependsOn ?? [], i: 0 }];
|
|
23
|
+
state.set(start, 'visiting');
|
|
24
|
+
while (stack.length > 0) {
|
|
25
|
+
const frame = stack[stack.length - 1];
|
|
26
|
+
if (frame.i >= frame.deps.length) {
|
|
27
|
+
state.set(frame.id, 'done');
|
|
28
|
+
stack.pop();
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
const next = frame.deps[frame.i++];
|
|
32
|
+
const seen = state.get(next);
|
|
33
|
+
if (seen === 'visiting')
|
|
34
|
+
onCycle(next);
|
|
35
|
+
if (seen === 'done')
|
|
36
|
+
continue;
|
|
37
|
+
state.set(next, 'visiting');
|
|
38
|
+
stack.push({ id: next, deps: byId.get(next)?.dependsOn ?? [], i: 0 });
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
for (const wi of proposal.workItems) {
|
|
42
|
+
if (!state.has(wi.id))
|
|
43
|
+
visit(wi.id);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Assemble a `CreateWorkstreamInput` from an approved multi-item PlanProposal.
|
|
48
|
+
* See the module doc for the full mapping and the assembly-time assertions.
|
|
49
|
+
*/
|
|
50
|
+
export function fromPlanProposal(proposal, configManager, opts = {}) {
|
|
51
|
+
assertAcyclicAndResolved(proposal);
|
|
52
|
+
const commitScope = getWrfcCommitScope(configManager);
|
|
53
|
+
const capacity = Math.max(1, opts.capacity ?? proposal.workItems.length);
|
|
54
|
+
const items = proposal.workItems.map((wi) => ({
|
|
55
|
+
id: wi.id,
|
|
56
|
+
title: wi.title,
|
|
57
|
+
// The brief IS the actionable prompt context; the engineer phase runs it
|
|
58
|
+
// verbatim as the item's task, and review/fix phases see it alongside the
|
|
59
|
+
// title (buildPhaseTask, phase-runner.ts).
|
|
60
|
+
task: wi.brief,
|
|
61
|
+
...(wi.dependsOn.length > 0 ? { dependsOn: [...wi.dependsOn] } : {}),
|
|
62
|
+
}));
|
|
63
|
+
const provenance = {
|
|
64
|
+
...(proposal.decomposedBy ? { decomposedBy: proposal.decomposedBy } : {}),
|
|
65
|
+
proposalId: proposal.id,
|
|
66
|
+
strategy: proposal.strategy,
|
|
67
|
+
...(proposal.agentCostUsd !== undefined ? { agentCostUsd: proposal.agentCostUsd } : {}),
|
|
68
|
+
...(proposal.elapsedMs !== undefined ? { elapsedMs: proposal.elapsedMs } : {}),
|
|
69
|
+
};
|
|
70
|
+
return {
|
|
71
|
+
title: proposal.task,
|
|
72
|
+
phases: engineerReviewPhases(commitScope, capacity),
|
|
73
|
+
items,
|
|
74
|
+
provenance,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** SDK-owned platform module. This implementation is maintained in goodvibes-sdk. */
|
|
2
2
|
/**
|
|
3
|
-
* Scheduler (
|
|
3
|
+
* Scheduler (see CHANGELOG 0.38.0) — pure capacity-matching helpers, no side
|
|
4
4
|
* effects. The hard departure from WrfcController's pairwise
|
|
5
5
|
* engineer<->reviewer binding (startReview:883/startFix:1042): each tick,
|
|
6
6
|
* for every phase in ordinal order, free capacity slots (capacity minus
|
|
@@ -27,6 +27,25 @@ export interface PhaseClaim {
|
|
|
27
27
|
readonly item: WorkItem;
|
|
28
28
|
readonly phase: Phase;
|
|
29
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Whether an item's inter-item dependencies (BIG-3 item 2) are all satisfied,
|
|
32
|
+
* and — when not — WHY, split into dependencies still in flight vs. ones that
|
|
33
|
+
* have terminally failed. Pure (no side effects): the engine's per-tick
|
|
34
|
+
* dependency pre-pass (applyDependencyGates, engine.ts) calls this and applies
|
|
35
|
+
* the state/blockedReason transition. Missing dependency ids (no item in the
|
|
36
|
+
* workstream matches) are ignored here — assembly (fromPlanProposal) already
|
|
37
|
+
* asserts referential integrity, so a dangling id at runtime is treated as
|
|
38
|
+
* "not blocking" rather than an eternal block.
|
|
39
|
+
*/
|
|
40
|
+
export interface DependencyStatus {
|
|
41
|
+
/** True when every dependency has reached 'passed' (or there are none). */
|
|
42
|
+
readonly ready: boolean;
|
|
43
|
+
/** Titles of dependencies still pending/in flight (neither passed nor failed). */
|
|
44
|
+
readonly waiting: string[];
|
|
45
|
+
/** Titles of dependencies that have terminally FAILED — a recoverable block, not a terminal one for the dependent. */
|
|
46
|
+
readonly failed: string[];
|
|
47
|
+
}
|
|
48
|
+
export declare function dependencyStatus(workstream: Workstream, item: WorkItem): DependencyStatus;
|
|
30
49
|
/**
|
|
31
50
|
* Which (item, phase) pairs have free capacity to claim RIGHT NOW. Pure —
|
|
32
51
|
* no side effects, no budget check (the caller applies budget.checkBudget
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../../src/platform/orchestration/scheduler.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAErF;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE9D,wBAAgB,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,KAAK,EAAE,CAE5D;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,UAAU,GAAG,KAAK,GAAG,SAAS,CAEpE;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAEzF;AAED,wBAAgB,SAAS,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAEpF;AAED,gMAAgM;AAChM,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS,CAEzF;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;CACvB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,EAAE,CAiBlE"}
|
|
1
|
+
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../../src/platform/orchestration/scheduler.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAErF;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE9D,wBAAgB,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,KAAK,EAAE,CAE5D;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,UAAU,GAAG,KAAK,GAAG,SAAS,CAEpE;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAEzF;AAED,wBAAgB,SAAS,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAEpF;AAED,gMAAgM;AAChM,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS,CAEzF;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;CACvB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,kFAAkF;IAClF,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3B,sHAAsH;IACtH,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,GAAG,gBAAgB,CAWzF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,EAAE,CAiBlE"}
|
|
@@ -23,6 +23,22 @@ export function phaseById(workstream, phaseId) {
|
|
|
23
23
|
export function reviewPhaseBefore(workstream, phase) {
|
|
24
24
|
return sortedPhases(workstream).filter((p) => p.ordinal < phase.ordinal && p.kind === 'review').pop();
|
|
25
25
|
}
|
|
26
|
+
export function dependencyStatus(workstream, item) {
|
|
27
|
+
const waiting = [];
|
|
28
|
+
const failed = [];
|
|
29
|
+
for (const depId of item.dependsOn) {
|
|
30
|
+
const dep = workstream.items.find((i) => i.id === depId);
|
|
31
|
+
if (!dep)
|
|
32
|
+
continue; // dangling id — assembly guarantees this can't happen; ignore rather than block forever
|
|
33
|
+
if (dep.state === 'passed')
|
|
34
|
+
continue;
|
|
35
|
+
if (dep.state === 'failed')
|
|
36
|
+
failed.push(dep.title);
|
|
37
|
+
else
|
|
38
|
+
waiting.push(dep.title);
|
|
39
|
+
}
|
|
40
|
+
return { ready: waiting.length === 0 && failed.length === 0, waiting, failed };
|
|
41
|
+
}
|
|
26
42
|
/**
|
|
27
43
|
* Which (item, phase) pairs have free capacity to claim RIGHT NOW. Pure —
|
|
28
44
|
* no side effects, no budget check (the caller applies budget.checkBudget
|