@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
|
@@ -1,5 +1,77 @@
|
|
|
1
1
|
/** SDK-owned platform module. This implementation is maintained in goodvibes-sdk. */
|
|
2
|
+
/**
|
|
3
|
+
* Orchestration-engine fleet adapters — Workstream/Phase/
|
|
4
|
+
* WorkItem -> ProcessNode, mirroring adapters/wrfc.ts's chain/subtask
|
|
5
|
+
* pattern: a workstream is a root node (no native cancel of its own, so kill
|
|
6
|
+
* is DERIVED — cascades AgentManager.cancel over every agent any item ever
|
|
7
|
+
* spawned, same shape as adaptChain/cancelAgents), a phase is a pure grouping
|
|
8
|
+
* node (no lifecycle, no usage — same "report nothing" choice adaptSubtask
|
|
9
|
+
* makes, since attributing a work-item's CUMULATIVE usage to whichever phase
|
|
10
|
+
* it currently sits in would double-count across phases), and a work-item is
|
|
11
|
+
* the WRFC-subtask analogue: it delegates interrupt/kill/steer to its
|
|
12
|
+
* current live agent when it has one.
|
|
13
|
+
*/
|
|
14
|
+
import { mergeWorkItemUsage } from '../../../orchestration/types.js';
|
|
2
15
|
import { workItemNodeId } from './agent.js';
|
|
16
|
+
/** True once a ProcessUsage carries any non-zero count worth surfacing. */
|
|
17
|
+
function hasAnyUsage(u) {
|
|
18
|
+
return u !== undefined && (u.inputTokens > 0 || u.outputTokens > 0 || u.cacheReadTokens > 0 || u.cacheWriteTokens > 0
|
|
19
|
+
|| u.llmCallCount > 0 || u.turnCount > 0 || u.toolCallCount > 0);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* True when a committed WorkItemUsage carries no real data yet (the untouched
|
|
23
|
+
* emptyWorkItemUsage placeholder — zero counts, unpriced, no cost). Such a
|
|
24
|
+
* placeholder must NOT be folded into a live overlay: merging an 'unpriced'
|
|
25
|
+
* zero into a priced overlay would honestly-but-uselessly degrade the result to
|
|
26
|
+
* 'estimated' and drop it from the priced cost rollup (aggregateWorkItemCost),
|
|
27
|
+
* re-introducing the very n/a this overlay removes. When committed is empty the
|
|
28
|
+
* overlay stands alone.
|
|
29
|
+
*/
|
|
30
|
+
function isEmptyCommittedUsage(u) {
|
|
31
|
+
return u.costUsd === null && !hasAnyUsage(u);
|
|
32
|
+
}
|
|
33
|
+
/** Convert a live overlay into WorkItemUsage shape, or undefined when it carries nothing real yet. */
|
|
34
|
+
function liveOverlayUsage(live) {
|
|
35
|
+
if (!live)
|
|
36
|
+
return undefined;
|
|
37
|
+
const u = live.usage;
|
|
38
|
+
const hasCost = live.costUsd !== undefined && live.costUsd !== null;
|
|
39
|
+
if (!hasAnyUsage(u) && !hasCost)
|
|
40
|
+
return undefined;
|
|
41
|
+
return {
|
|
42
|
+
inputTokens: u?.inputTokens ?? 0,
|
|
43
|
+
outputTokens: u?.outputTokens ?? 0,
|
|
44
|
+
cacheReadTokens: u?.cacheReadTokens ?? 0,
|
|
45
|
+
cacheWriteTokens: u?.cacheWriteTokens ?? 0,
|
|
46
|
+
reasoningTokens: u?.reasoningTokens,
|
|
47
|
+
llmCallCount: u?.llmCallCount ?? 0,
|
|
48
|
+
turnCount: u?.turnCount ?? 0,
|
|
49
|
+
toolCallCount: u?.toolCallCount ?? 0,
|
|
50
|
+
costUsd: live.costUsd ?? null,
|
|
51
|
+
costState: live.costState ?? (hasCost ? 'priced' : 'unpriced'),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* The usage the fleet DISPLAYS for a work-item: its committed phase-boundary
|
|
56
|
+
* total, plus — only while it is actively 'in-phase' — the live in-flight
|
|
57
|
+
* usage of its current agent. The overlay is applied ONLY for an 'in-phase'
|
|
58
|
+
* item, which is exactly the window in which `item.usage` does NOT yet include
|
|
59
|
+
* the running phase (the engine folds that in at completion — see
|
|
60
|
+
* runItemPhase), so committed + live never double-counts and the two hand off
|
|
61
|
+
* atomically at the phase boundary. Because both operands only ever grow and
|
|
62
|
+
* merge through {@link mergeWorkItemUsage}, presence is MONOTONE: once usage
|
|
63
|
+
* has appeared for an item it never blinks back to n/a (DEBT-4 item 2).
|
|
64
|
+
*/
|
|
65
|
+
export function displayWorkItemUsage(item, live) {
|
|
66
|
+
const overlay = item.state === 'in-phase' ? liveOverlayUsage(live) : undefined;
|
|
67
|
+
if (!overlay)
|
|
68
|
+
return item.usage;
|
|
69
|
+
// First-phase window: no committed usage yet, so the live overlay is the
|
|
70
|
+
// whole truth — don't let the empty 'unpriced' placeholder degrade it.
|
|
71
|
+
if (isEmptyCommittedUsage(item.usage))
|
|
72
|
+
return overlay;
|
|
73
|
+
return mergeWorkItemUsage(item.usage, overlay);
|
|
74
|
+
}
|
|
3
75
|
/** Workstream node ids are namespaced to avoid colliding with agent/process ids. */
|
|
4
76
|
export function workstreamNodeId(workstreamId) {
|
|
5
77
|
return `workstream:${workstreamId}`;
|
|
@@ -37,6 +109,14 @@ function workItemState(item) {
|
|
|
37
109
|
// reconsideration is automatic the instant the ceiling changes, but a
|
|
38
110
|
// fixed ceiling on its own never lifts the block (usage only grows).
|
|
39
111
|
return 'stalled';
|
|
112
|
+
case 'blocked-dependency':
|
|
113
|
+
// Same "stuck, not progressing" signal as blocked-budget, for the same
|
|
114
|
+
// reason (BIG-3 item 2): the item is out of the claimable set until every
|
|
115
|
+
// dependency reaches 'passed'. Distinct from 'queued' (which WILL be
|
|
116
|
+
// claimed by free capacity) — a dependency-blocked item waits on other
|
|
117
|
+
// items, or on engine.retryItem reviving a failed dependency. blockedReason
|
|
118
|
+
// carries the honest 'waiting on: …' / 'dependency failed: …' detail.
|
|
119
|
+
return 'stalled';
|
|
40
120
|
case 'in-phase':
|
|
41
121
|
return 'executing-tool';
|
|
42
122
|
}
|
|
@@ -48,7 +128,7 @@ function workstreamState(workstream) {
|
|
|
48
128
|
return 'executing-tool';
|
|
49
129
|
if (workstream.items.some((item) => item.state === 'pending' || item.state === 'awaiting-capacity'))
|
|
50
130
|
return 'queued';
|
|
51
|
-
if (workstream.items.some((item) => item.state === 'blocked-budget'))
|
|
131
|
+
if (workstream.items.some((item) => item.state === 'blocked-budget' || item.state === 'blocked-dependency'))
|
|
52
132
|
return 'stalled';
|
|
53
133
|
return workstream.items.some((item) => item.state === 'failed') ? 'failed' : 'done';
|
|
54
134
|
}
|
|
@@ -62,9 +142,15 @@ function phaseState(workstream, phase) {
|
|
|
62
142
|
const allTerminal = workstream.items.every((item) => TERMINAL_ITEM_STATES.has(item.state));
|
|
63
143
|
return allTerminal ? 'done' : 'idle';
|
|
64
144
|
}
|
|
65
|
-
/**
|
|
66
|
-
|
|
67
|
-
|
|
145
|
+
/**
|
|
146
|
+
* token-count-only rollup over a workstream's per-item DISPLAY usages (cost
|
|
147
|
+
* handled separately — see aggregateWorkItemCost). Takes resolved display
|
|
148
|
+
* usages (committed + any live overlay) rather than raw items so the workstream
|
|
149
|
+
* total reflects live in-flight work, not just phase-boundary snapshots
|
|
150
|
+
* (DEBT-4 item 2).
|
|
151
|
+
*/
|
|
152
|
+
function sumWorkItemUsage(usages) {
|
|
153
|
+
if (usages.length === 0)
|
|
68
154
|
return undefined;
|
|
69
155
|
const total = {
|
|
70
156
|
inputTokens: 0,
|
|
@@ -77,8 +163,7 @@ function sumWorkItemUsage(items) {
|
|
|
77
163
|
toolCallCount: 0,
|
|
78
164
|
};
|
|
79
165
|
let sawReasoning = false;
|
|
80
|
-
for (const
|
|
81
|
-
const usage = item.usage;
|
|
166
|
+
for (const usage of usages) {
|
|
82
167
|
total.inputTokens += usage.inputTokens;
|
|
83
168
|
total.outputTokens += usage.outputTokens;
|
|
84
169
|
total.cacheReadTokens += usage.cacheReadTokens;
|
|
@@ -102,22 +187,29 @@ function sumWorkItemUsage(items) {
|
|
|
102
187
|
toolCallCount: total.toolCallCount,
|
|
103
188
|
};
|
|
104
189
|
}
|
|
105
|
-
/** Honest cost rollup: all-priced -> 'priced'; none -> null/'unpriced'; mixed -> summed subset, 'estimated'. Mirrors adapters/wrfc.ts aggregateCost. */
|
|
106
|
-
function aggregateWorkItemCost(
|
|
107
|
-
const withUsage =
|
|
190
|
+
/** Honest cost rollup: all-priced -> 'priced'; none -> null/'unpriced'; mixed -> summed subset, 'estimated'. Mirrors adapters/wrfc.ts aggregateCost. Operates on resolved display usages (committed + live overlay). */
|
|
191
|
+
function aggregateWorkItemCost(usages) {
|
|
192
|
+
const withUsage = usages.filter((usage) => usage.costState !== 'unpriced' || usage.inputTokens > 0 || usage.outputTokens > 0);
|
|
108
193
|
if (withUsage.length === 0)
|
|
109
194
|
return { costUsd: null, costState: 'unpriced' };
|
|
110
|
-
const priced = withUsage.filter((
|
|
195
|
+
const priced = withUsage.filter((usage) => usage.costState === 'priced' && usage.costUsd !== null);
|
|
111
196
|
if (priced.length === 0)
|
|
112
197
|
return { costUsd: null, costState: 'unpriced' };
|
|
113
|
-
const total = priced.reduce((sum,
|
|
198
|
+
const total = priced.reduce((sum, usage) => sum + usage.costUsd, 0);
|
|
114
199
|
return { costUsd: total, costState: priced.length === withUsage.length ? 'priced' : 'estimated' };
|
|
115
200
|
}
|
|
116
|
-
/**
|
|
201
|
+
/**
|
|
202
|
+
* WorkItem -> ProcessNode. Delegates interruptible/killable/steerable to its
|
|
203
|
+
* currently-active agent, mirroring adaptSubtask. `opts.live` supplies the
|
|
204
|
+
* currently-active agent's in-flight usage so a running phase shows real,
|
|
205
|
+
* growing numbers instead of n/a until it completes (DEBT-4 item 2); omit it
|
|
206
|
+
* (or pass undefined) for the committed-only view.
|
|
207
|
+
*/
|
|
117
208
|
export function adaptWorkItem(item, workstreamId, parentId, opts) {
|
|
118
209
|
const state = workItemState(item);
|
|
119
210
|
const killable = !TERMINAL_ITEM_STATES.has(item.state);
|
|
120
211
|
const activeAgentId = activeWorkItemAgentId(item);
|
|
212
|
+
const usage = displayWorkItemUsage(item, opts.live);
|
|
121
213
|
return {
|
|
122
214
|
id: workItemNodeId(item.id),
|
|
123
215
|
kind: 'work-item',
|
|
@@ -128,26 +220,33 @@ export function adaptWorkItem(item, workstreamId, parentId, opts) {
|
|
|
128
220
|
startedAt: item.createdAt,
|
|
129
221
|
completedAt: item.completedAt,
|
|
130
222
|
elapsedMs: Math.max(0, (item.completedAt ?? Date.now()) - item.createdAt),
|
|
131
|
-
usage:
|
|
223
|
+
usage: usage.inputTokens > 0 || usage.outputTokens > 0
|
|
132
224
|
? {
|
|
133
|
-
inputTokens:
|
|
134
|
-
outputTokens:
|
|
135
|
-
cacheReadTokens:
|
|
136
|
-
cacheWriteTokens:
|
|
137
|
-
reasoningTokens:
|
|
138
|
-
llmCallCount:
|
|
139
|
-
turnCount:
|
|
140
|
-
toolCallCount:
|
|
225
|
+
inputTokens: usage.inputTokens,
|
|
226
|
+
outputTokens: usage.outputTokens,
|
|
227
|
+
cacheReadTokens: usage.cacheReadTokens,
|
|
228
|
+
cacheWriteTokens: usage.cacheWriteTokens,
|
|
229
|
+
reasoningTokens: usage.reasoningTokens,
|
|
230
|
+
llmCallCount: usage.llmCallCount,
|
|
231
|
+
turnCount: usage.turnCount,
|
|
232
|
+
toolCallCount: usage.toolCallCount,
|
|
141
233
|
}
|
|
142
234
|
: undefined,
|
|
143
|
-
costUsd:
|
|
144
|
-
costState:
|
|
145
|
-
// Blocked
|
|
146
|
-
//
|
|
147
|
-
//
|
|
148
|
-
//
|
|
235
|
+
costUsd: usage.costUsd,
|
|
236
|
+
costState: usage.costState,
|
|
237
|
+
// Blocked items surface their reason (set/cleared by the engine alongside
|
|
238
|
+
// the state transition, types.ts WorkItem.blockedReason) in place of the
|
|
239
|
+
// bare phase id — the phase id alone doesn't tell an operator WHY the item
|
|
240
|
+
// stopped moving. Covers both budget blocks and dependency blocks (BIG-3
|
|
241
|
+
// item 2: 'waiting on: …' / 'dependency failed: …').
|
|
149
242
|
currentActivity: item.currentPhaseId
|
|
150
|
-
? {
|
|
243
|
+
? {
|
|
244
|
+
kind: 'phase',
|
|
245
|
+
text: (item.state === 'blocked-budget' || item.state === 'blocked-dependency') && item.blockedReason
|
|
246
|
+
? item.blockedReason
|
|
247
|
+
: item.currentPhaseId,
|
|
248
|
+
at: item.createdAt,
|
|
249
|
+
}
|
|
151
250
|
: undefined,
|
|
152
251
|
capabilities: {
|
|
153
252
|
interruptible: activeAgentId !== undefined,
|
|
@@ -190,17 +289,22 @@ export function adaptPhase(phase, workstream) {
|
|
|
190
289
|
};
|
|
191
290
|
}
|
|
192
291
|
/**
|
|
193
|
-
* Workstream -> ProcessNode. Root node (no parentId). Sums every item's
|
|
194
|
-
* usage/cost
|
|
195
|
-
*
|
|
292
|
+
* Workstream -> ProcessNode. Root node (no parentId). Sums every item's DISPLAY
|
|
293
|
+
* usage/cost (committed total + any live in-flight overlay, resolved once per
|
|
294
|
+
* item) exactly once — never through an intermediate phase bucket (see
|
|
295
|
+
* adaptPhase) — so this total can never double-count and never shows n/a while
|
|
296
|
+
* an item is actively producing usage (DEBT-4 item 2). `liveByItemId` supplies
|
|
297
|
+
* the active agents' in-flight usage keyed by item id; omit it for the
|
|
298
|
+
* committed-only view.
|
|
196
299
|
*/
|
|
197
|
-
export function adaptWorkstream(workstream, now) {
|
|
300
|
+
export function adaptWorkstream(workstream, now, liveByItemId) {
|
|
198
301
|
const state = workstreamState(workstream);
|
|
199
302
|
const killable = state !== 'done' && state !== 'failed';
|
|
200
303
|
const completedAt = (state === 'done' || state === 'failed')
|
|
201
304
|
? workstream.items.reduce((latest, item) => (item.completedAt !== undefined && (latest === undefined || item.completedAt > latest) ? item.completedAt : latest), undefined)
|
|
202
305
|
: undefined;
|
|
203
|
-
const
|
|
306
|
+
const displayUsages = workstream.items.map((item) => displayWorkItemUsage(item, liveByItemId?.get(item.id)));
|
|
307
|
+
const { costUsd, costState } = aggregateWorkItemCost(displayUsages);
|
|
204
308
|
return {
|
|
205
309
|
id: workstreamNodeId(workstream.id),
|
|
206
310
|
kind: 'workstream',
|
|
@@ -210,7 +314,7 @@ export function adaptWorkstream(workstream, now) {
|
|
|
210
314
|
startedAt: workstream.createdAt,
|
|
211
315
|
completedAt,
|
|
212
316
|
elapsedMs: Math.max(0, (completedAt ?? now) - workstream.createdAt),
|
|
213
|
-
usage: sumWorkItemUsage(
|
|
317
|
+
usage: sumWorkItemUsage(displayUsages),
|
|
214
318
|
costUsd,
|
|
215
319
|
costState,
|
|
216
320
|
currentActivity: undefined,
|
|
@@ -5,10 +5,10 @@ import type { ProcessNode } from '../types.js';
|
|
|
5
5
|
export declare function scheduleNodeId(name: string): string;
|
|
6
6
|
/**
|
|
7
7
|
* ScheduleEntry → ProcessNode. A schedule between runs is honestly 'idle'
|
|
8
|
-
* (not force-fit into an active state); disabled maps to 'paused' (
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
8
|
+
* (not force-fit into an active state); disabled maps to 'paused' (NOT
|
|
9
|
+
* 'killed': the entry still exists and ScheduleManager.enable() can re-arm
|
|
10
|
+
* it, so collapsing it into a terminal state was dishonest). resumable
|
|
11
|
+
* mirrors the inverse of pausable.
|
|
12
12
|
*/
|
|
13
13
|
export declare function adaptSchedule(entry: ScheduleEntry): ProcessNode;
|
|
14
14
|
//# sourceMappingURL=schedule.d.ts.map
|
|
@@ -5,10 +5,10 @@ export function scheduleNodeId(name) {
|
|
|
5
5
|
}
|
|
6
6
|
/**
|
|
7
7
|
* ScheduleEntry → ProcessNode. A schedule between runs is honestly 'idle'
|
|
8
|
-
* (not force-fit into an active state); disabled maps to 'paused' (
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
8
|
+
* (not force-fit into an active state); disabled maps to 'paused' (NOT
|
|
9
|
+
* 'killed': the entry still exists and ScheduleManager.enable() can re-arm
|
|
10
|
+
* it, so collapsing it into a terminal state was dishonest). resumable
|
|
11
|
+
* mirrors the inverse of pausable.
|
|
12
12
|
*/
|
|
13
13
|
export function adaptSchedule(entry) {
|
|
14
14
|
return {
|
|
@@ -3,10 +3,9 @@ import type { TriggerDefinition } from '../../../tools/workflow/index.js';
|
|
|
3
3
|
import type { ProcessNode } from '../types.js';
|
|
4
4
|
/**
|
|
5
5
|
* TriggerDefinition → ProcessNode. Triggers have no timestamps and no run
|
|
6
|
-
* state — enabled means armed ('idle'), disabled maps to 'paused' (
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* pausable.
|
|
6
|
+
* state — enabled means armed ('idle'), disabled maps to 'paused' (NOT
|
|
7
|
+
* 'killed': the definition still exists and TriggerManager.enable() can
|
|
8
|
+
* re-arm it). resumable mirrors the inverse of pausable.
|
|
10
9
|
*/
|
|
11
10
|
export declare function adaptTrigger(def: TriggerDefinition): ProcessNode;
|
|
12
11
|
//# sourceMappingURL=trigger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trigger.d.ts","sourceRoot":"","sources":["../../../../../src/platform/runtime/fleet/adapters/trigger.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAErF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C
|
|
1
|
+
{"version":3,"file":"trigger.d.ts","sourceRoot":"","sources":["../../../../../src/platform/runtime/fleet/adapters/trigger.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAErF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,iBAAiB,GAAG,WAAW,CAahE"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
/** SDK-owned platform module. This implementation is maintained in goodvibes-sdk. */
|
|
2
2
|
/**
|
|
3
3
|
* TriggerDefinition → ProcessNode. Triggers have no timestamps and no run
|
|
4
|
-
* state — enabled means armed ('idle'), disabled maps to 'paused' (
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* pausable.
|
|
4
|
+
* state — enabled means armed ('idle'), disabled maps to 'paused' (NOT
|
|
5
|
+
* 'killed': the definition still exists and TriggerManager.enable() can
|
|
6
|
+
* re-arm it). resumable mirrors the inverse of pausable.
|
|
8
7
|
*/
|
|
9
8
|
export function adaptTrigger(def) {
|
|
10
9
|
return {
|
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
/** SDK-owned platform module. This implementation is maintained in goodvibes-sdk. */
|
|
2
2
|
import type { WrfcChain, WrfcSubtask } from '../../../agents/wrfc-types.js';
|
|
3
3
|
import type { ProcessNode } from '../types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Reprice a WRFC owner agent node for honest DISPLAY. The owner runs no LLM turn
|
|
6
|
+
* itself; at completion its usage is backfilled from aggregateChainUsage — a
|
|
7
|
+
* mixed-model rollup of its children — so pricing it with a single owner model is
|
|
8
|
+
* wrong and leaving it "unpriced" while its children priced fine is misleading.
|
|
9
|
+
* Instead adopt the chain node's per-child-summed cost (and its model descriptor).
|
|
10
|
+
*
|
|
11
|
+
* Returns the SAME node reference when no reprice applies (owner already priced, or
|
|
12
|
+
* the chain has no priced cost), so callers can skip untouched nodes. The owner is
|
|
13
|
+
* excluded from every leaf-sum (registry aggregateCost / isWrfcOwnerAgentNode), so
|
|
14
|
+
* adopting the chain total here can never double-count.
|
|
15
|
+
*/
|
|
16
|
+
export declare function repriceWrfcOwnerNode(ownerNode: ProcessNode, chainNode: ProcessNode): ProcessNode;
|
|
4
17
|
/**
|
|
5
18
|
* The subtask's currently-active member agent, i.e. whichever role is
|
|
6
19
|
* driving its current phase. Undefined when the subtask has no phase
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrfc.d.ts","sourceRoot":"","sources":["../../../../../src/platform/runtime/fleet/adapters/wrfc.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAErF,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,KAAK,EAAE,WAAW,EAA8B,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"wrfc.d.ts","sourceRoot":"","sources":["../../../../../src/platform/runtime/fleet/adapters/wrfc.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAErF,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,KAAK,EAAE,WAAW,EAA8B,MAAM,aAAa,CAAC;AAuK3E;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,GAAG,WAAW,CAShG;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAWnF;AAED,2DAA2D;AAC3D,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,GAAG,WAAW,CAwB9G;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,WAAW,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW,CAiC1G"}
|
|
@@ -11,7 +11,11 @@ function chainState(chain, memberNodes) {
|
|
|
11
11
|
case 'passed':
|
|
12
12
|
return { state: 'done' };
|
|
13
13
|
case 'failed':
|
|
14
|
-
|
|
14
|
+
// An operator-cancelled chain is terminal-'failed' internally but must read
|
|
15
|
+
// as cancelled, not a failure — map it to 'killed' (⊘) so the chain row and
|
|
16
|
+
// the cohort tally match the cancelled owner/leaf agents instead of showing
|
|
17
|
+
// '✗ failed' for an intended stop.
|
|
18
|
+
return chain.failureKind === 'cancelled' ? { state: 'killed' } : { state: 'failed' };
|
|
15
19
|
case 'pending':
|
|
16
20
|
return { state: 'queued' };
|
|
17
21
|
case 'awaiting_gates':
|
|
@@ -131,7 +135,7 @@ function sumUsage(nodes) {
|
|
|
131
135
|
*
|
|
132
136
|
* The owner agent is EXCLUDED from aggregation: it runs no LLM turns itself —
|
|
133
137
|
* its AgentRecord.usage is populated FROM the phase children at completion
|
|
134
|
-
* time
|
|
138
|
+
* time, so including it would double-count.
|
|
135
139
|
*/
|
|
136
140
|
function aggregateCost(members) {
|
|
137
141
|
const withUsage = members.filter((node) => node.usage !== undefined);
|
|
@@ -143,6 +147,48 @@ function aggregateCost(members) {
|
|
|
143
147
|
const total = priced.reduce((sum, node) => sum + node.costUsd, 0);
|
|
144
148
|
return { costUsd: total, costState: priced.length === withUsage.length ? 'priced' : 'estimated' };
|
|
145
149
|
}
|
|
150
|
+
/**
|
|
151
|
+
* An honest model descriptor for a chain node, derived from its member agents
|
|
152
|
+
* (which carry the real model that ran each phase — the owner itself often has no
|
|
153
|
+
* resolved model). One distinct model → that model; several → "N models"; none →
|
|
154
|
+
* undefined. Fixes the "model unknown" chain-detail readout.
|
|
155
|
+
*/
|
|
156
|
+
function chainModelDescriptor(members) {
|
|
157
|
+
const models = new Set();
|
|
158
|
+
for (const node of members) {
|
|
159
|
+
if (typeof node.model === 'string' && node.model.length > 0)
|
|
160
|
+
models.add(node.model);
|
|
161
|
+
}
|
|
162
|
+
if (models.size === 0)
|
|
163
|
+
return undefined;
|
|
164
|
+
if (models.size === 1)
|
|
165
|
+
return [...models][0];
|
|
166
|
+
return `${models.size} models`;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Reprice a WRFC owner agent node for honest DISPLAY. The owner runs no LLM turn
|
|
170
|
+
* itself; at completion its usage is backfilled from aggregateChainUsage — a
|
|
171
|
+
* mixed-model rollup of its children — so pricing it with a single owner model is
|
|
172
|
+
* wrong and leaving it "unpriced" while its children priced fine is misleading.
|
|
173
|
+
* Instead adopt the chain node's per-child-summed cost (and its model descriptor).
|
|
174
|
+
*
|
|
175
|
+
* Returns the SAME node reference when no reprice applies (owner already priced, or
|
|
176
|
+
* the chain has no priced cost), so callers can skip untouched nodes. The owner is
|
|
177
|
+
* excluded from every leaf-sum (registry aggregateCost / isWrfcOwnerAgentNode), so
|
|
178
|
+
* adopting the chain total here can never double-count.
|
|
179
|
+
*/
|
|
180
|
+
export function repriceWrfcOwnerNode(ownerNode, chainNode) {
|
|
181
|
+
if (ownerNode.costState !== 'unpriced')
|
|
182
|
+
return ownerNode;
|
|
183
|
+
if (chainNode.costUsd === null || chainNode.costUsd === undefined)
|
|
184
|
+
return ownerNode;
|
|
185
|
+
return {
|
|
186
|
+
...ownerNode,
|
|
187
|
+
costUsd: chainNode.costUsd,
|
|
188
|
+
costState: chainNode.costState,
|
|
189
|
+
model: ownerNode.model ?? chainNode.model,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
146
192
|
/**
|
|
147
193
|
* The subtask's currently-active member agent, i.e. whichever role is
|
|
148
194
|
* driving its current phase. Undefined when the subtask has no phase
|
|
@@ -215,6 +261,7 @@ export function adaptChain(chain, memberNodes, now) {
|
|
|
215
261
|
completedAt,
|
|
216
262
|
elapsedMs: Math.max(0, (completedAt ?? now) - chain.createdAt),
|
|
217
263
|
usage: sumUsage(memberNodes),
|
|
264
|
+
model: chainModelDescriptor(memberNodes),
|
|
218
265
|
costUsd,
|
|
219
266
|
costState,
|
|
220
267
|
// Silent source: anchored to createdAt (no phase-transition timestamp).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** SDK-owned platform module. This implementation is maintained in goodvibes-sdk. */
|
|
2
2
|
/**
|
|
3
|
-
* Live process registry
|
|
3
|
+
* Live process registry — one queryable + subscribable aggregation
|
|
4
4
|
* surface over the already-composed runtime managers. ZERO new store state:
|
|
5
5
|
* every query is an aggregate-on-read over the managers' in-memory maps, and
|
|
6
6
|
* the only registry-owned mutable state is the agent activity side-table fed
|
|
@@ -49,7 +49,7 @@ export interface ProcessRegistryDeps {
|
|
|
49
49
|
readonly agentManager: Pick<AgentManager, 'list' | 'cancel'>;
|
|
50
50
|
readonly wrfcController: Pick<WrfcController, 'listChains'>;
|
|
51
51
|
/**
|
|
52
|
-
* Optional
|
|
52
|
+
* Optional: folds workstream/phase/work-item nodes into
|
|
53
53
|
* the fleet, nested workstream -> phase -> work-item, mirroring the
|
|
54
54
|
* wrfc-chain/subtask nesting. Without this dep the registry degrades to
|
|
55
55
|
* exactly today's behavior — no orchestration nodes, no new capability.
|
|
@@ -67,23 +67,23 @@ export interface ProcessRegistryDeps {
|
|
|
67
67
|
readonly watcherRegistry: Pick<WatcherRegistry, 'list' | 'stopWatcher'>;
|
|
68
68
|
readonly workflow: {
|
|
69
69
|
readonly workflowManager: Pick<WorkflowManager, 'list' | 'cancel'>;
|
|
70
|
-
/** `enable`
|
|
70
|
+
/** `enable` backs ProcessRegistry.resume() — the inverse of `disable`'s interrupt/pause. */
|
|
71
71
|
readonly triggerManager: Pick<TriggerManager, 'list' | 'remove' | 'disable' | 'enable'>;
|
|
72
72
|
readonly scheduleManager: Pick<ScheduleManager, 'list' | 'remove' | 'disable' | 'enable'>;
|
|
73
73
|
};
|
|
74
74
|
/** Optional: awaiting-approval derivation. Non-control-plane runtimes still build a fleet. */
|
|
75
75
|
readonly approvalBroker?: Pick<ApprovalBroker, 'listApprovals'> | undefined;
|
|
76
|
-
/** Optional: populates ProcessNode.sessionRef.sessionId (
|
|
76
|
+
/** Optional: populates ProcessNode.sessionRef.sessionId (tab attach point). */
|
|
77
77
|
readonly sessionBroker?: Pick<SharedSessionBroker, 'listSessions'> | undefined;
|
|
78
78
|
/**
|
|
79
|
-
* Optional: the repo source-tree code index (
|
|
79
|
+
* Optional: the repo source-tree code index (Stage A).
|
|
80
80
|
* When present, its build/idle state surfaces as a single 'code-index'
|
|
81
81
|
* ProcessNode. Without this dep the fleet degrades to exactly today's
|
|
82
82
|
* behavior — zero code-index nodes, no new capability.
|
|
83
83
|
*/
|
|
84
84
|
readonly codeIndexService?: CodeIndexProcessSource | undefined;
|
|
85
85
|
/**
|
|
86
|
-
* Optional
|
|
86
|
+
* Optional: folds `/schedule` automation jobs
|
|
87
87
|
* (platform/automation, a SEPARATE subsystem from the workflow-tool's
|
|
88
88
|
* ScheduleManager above) into the fleet as 'schedule'-kind nodes — see
|
|
89
89
|
* adapters/automation.ts. Without this dep the fleet degrades to exactly
|
|
@@ -91,7 +91,7 @@ export interface ProcessRegistryDeps {
|
|
|
91
91
|
*/
|
|
92
92
|
readonly automationManager?: Pick<AutomationManager, 'listJobs' | 'setEnabled' | 'removeJob'> | undefined;
|
|
93
93
|
/**
|
|
94
|
-
* Optional: backs `steer()` and the `steerable` capability
|
|
94
|
+
* Optional: backs `steer()` and the `steerable` capability. The
|
|
95
95
|
* bus already exists in the composed runtime and already feeds every
|
|
96
96
|
* in-process agent's per-turn inbox drain (orchestrator-runner.ts) — this
|
|
97
97
|
* just hands the registry a narrow `send`-only pick of it. Without this
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/platform/runtime/fleet/registry.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAErF;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAe,MAAM,8BAA8B,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAEV,eAAe,EACf,cAAc,EACd,eAAe,EAChB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAwB,MAAM,oBAAoB,CAAC;AAEhF,OAAO,KAAK,EAKV,eAAe,EACf,YAAY,EAEb,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/platform/runtime/fleet/registry.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAErF;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAe,MAAM,8BAA8B,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAEV,eAAe,EACf,cAAc,EACd,eAAe,EAChB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAwB,MAAM,oBAAoB,CAAC;AAEhF,OAAO,KAAK,EAKV,eAAe,EACf,YAAY,EAEb,MAAM,YAAY,CAAC;AAoBpB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAIzE,+FAA+F;AAC/F,eAAO,MAAM,4BAA4B,QAAS,CAAC;AACnD,mEAAmE;AACnE,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAC5C;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,QAAiB,CAAC;AAE3C,2EAA2E;AAC3E,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/D,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;CACtC;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC;IAC7D,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IAC5D;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,iBAAiB,GAAG,MAAM,CAAC,GAAG,SAAS,CAAC;IACjG,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC,CAAC;IAC7E,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC;IACxE,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC;QACnE,4FAA4F;QAC5F,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC;QACxF,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC;KAC3F,CAAC;IACF,8FAA8F;IAC9F,QAAQ,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,GAAG,SAAS,CAAC;IAC5E,+EAA+E;IAC/E,QAAQ,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,cAAc,CAAC,GAAG,SAAS,CAAC;IAC/E;;;;;OAKG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAC/D;;;;;;OAMG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,UAAU,GAAG,YAAY,GAAG,WAAW,CAAC,GAAG,SAAS,CAAC;IAC1G;;;;;;;OAOG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAChE,qHAAqH;IACrH,QAAQ,CAAC,UAAU,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IAClD,8FAA8F;IAC9F,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,YAAY,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;IACtG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,MAAM,CAAC,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;CAC9C;AAkDD,2EAA2E;AAC3E,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,mBAAmB,GAAG,eAAe,CA0lBhF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** SDK-owned platform module. This implementation is maintained in goodvibes-sdk. */
|
|
2
2
|
import { adaptAgent } from './adapters/agent.js';
|
|
3
|
-
import { activeSubtaskMemberAgentId, adaptChain, adaptSubtask } from './adapters/wrfc.js';
|
|
3
|
+
import { activeSubtaskMemberAgentId, adaptChain, adaptSubtask, repriceWrfcOwnerNode } from './adapters/wrfc.js';
|
|
4
4
|
import { adaptWorkflow } from './adapters/workflow.js';
|
|
5
5
|
import { adaptTrigger } from './adapters/trigger.js';
|
|
6
6
|
import { adaptSchedule } from './adapters/schedule.js';
|
|
@@ -204,6 +204,9 @@ export function createProcessRegistry(deps) {
|
|
|
204
204
|
agentNodeById.set(node.id, node);
|
|
205
205
|
nodes.push(node);
|
|
206
206
|
}
|
|
207
|
+
// Owner agent nodes to replace with a repriced copy after the chain loop
|
|
208
|
+
// (ProcessNode is readonly — collect overrides, apply in one pass at the end).
|
|
209
|
+
const ownerNodeOverrides = new Map();
|
|
207
210
|
for (const chain of chains) {
|
|
208
211
|
// Members exclude the owner: its usage is populated FROM phase children
|
|
209
212
|
// at completion time, so including it would double-count (see wrfc.ts).
|
|
@@ -215,7 +218,18 @@ export function createProcessRegistry(deps) {
|
|
|
215
218
|
if (node)
|
|
216
219
|
memberNodes.push(node);
|
|
217
220
|
}
|
|
218
|
-
|
|
221
|
+
const chainNode = adaptChain(chain, memberNodes, capturedAt);
|
|
222
|
+
nodes.push(chainNode);
|
|
223
|
+
// Owner cost honesty: a WRFC owner runs no LLM turn itself, so its own model
|
|
224
|
+
// is often unresolved and it prices as "unpriced" even though its children
|
|
225
|
+
// priced fine. Adopt the chain's per-child-summed cost + model descriptor for
|
|
226
|
+
// the owner ROW. Excluded from every leaf-sum, so this never double-counts.
|
|
227
|
+
const ownerNode = agentNodeById.get(chain.ownerAgentId);
|
|
228
|
+
if (ownerNode) {
|
|
229
|
+
const repriced = repriceWrfcOwnerNode(ownerNode, chainNode);
|
|
230
|
+
if (repriced !== ownerNode)
|
|
231
|
+
ownerNodeOverrides.set(ownerNode.id, repriced);
|
|
232
|
+
}
|
|
219
233
|
for (const subtask of chain.subtasks ?? []) {
|
|
220
234
|
// Steerable only when the subtask's currently-active member agent is
|
|
221
235
|
// both present in this snapshot and not terminal, AND a messageBus
|
|
@@ -230,7 +244,24 @@ export function createProcessRegistry(deps) {
|
|
|
230
244
|
}
|
|
231
245
|
}
|
|
232
246
|
for (const workstream of workstreams) {
|
|
233
|
-
|
|
247
|
+
// Resolve each item's active-agent in-flight usage ONCE up front, keyed
|
|
248
|
+
// by item id, so both the workstream rollup and the per-item nodes show
|
|
249
|
+
// live mid-phase usage instead of n/a until the phase boundary lands
|
|
250
|
+
// (DEBT-4 item 2). displayWorkItemUsage applies the overlay only while an
|
|
251
|
+
// item is 'in-phase', so this never double-counts committed usage.
|
|
252
|
+
const liveByItemId = new Map();
|
|
253
|
+
for (const item of workstream.items) {
|
|
254
|
+
const activeAgentId = activeWorkItemAgentId(item);
|
|
255
|
+
const activeAgentNode = activeAgentId ? agentNodeById.get(activeAgentId) : undefined;
|
|
256
|
+
if (activeAgentNode) {
|
|
257
|
+
liveByItemId.set(item.id, {
|
|
258
|
+
usage: activeAgentNode.usage,
|
|
259
|
+
costUsd: activeAgentNode.costUsd ?? null,
|
|
260
|
+
costState: activeAgentNode.costState,
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
nodes.push(adaptWorkstream(workstream, capturedAt, liveByItemId));
|
|
234
265
|
for (const phase of workstream.phases) {
|
|
235
266
|
nodes.push(adaptPhase(phase, workstream));
|
|
236
267
|
}
|
|
@@ -244,7 +275,7 @@ export function createProcessRegistry(deps) {
|
|
|
244
275
|
const parentId = item.currentPhaseId
|
|
245
276
|
? phaseNodeId(workstream.id, item.currentPhaseId)
|
|
246
277
|
: workstreamNodeId(workstream.id);
|
|
247
|
-
nodes.push(adaptWorkItem(item, workstream.id, parentId, { steerable: deps.messageBus !== undefined && memberLive }));
|
|
278
|
+
nodes.push(adaptWorkItem(item, workstream.id, parentId, { steerable: deps.messageBus !== undefined && memberLive, live: liveByItemId.get(item.id) }));
|
|
248
279
|
}
|
|
249
280
|
}
|
|
250
281
|
for (const instance of deps.workflow.workflowManager.list()) {
|
|
@@ -272,6 +303,9 @@ export function createProcessRegistry(deps) {
|
|
|
272
303
|
if (deps.codeIndexService) {
|
|
273
304
|
nodes.push(adaptCodeIndex(deps.codeIndexService, capturedAt));
|
|
274
305
|
}
|
|
306
|
+
if (ownerNodeOverrides.size > 0) {
|
|
307
|
+
return { capturedAt, nodes: nodes.map((node) => ownerNodeOverrides.get(node.id) ?? node) };
|
|
308
|
+
}
|
|
275
309
|
return { capturedAt, nodes };
|
|
276
310
|
}
|
|
277
311
|
function query(filter) {
|
|
@@ -353,8 +387,8 @@ export function createProcessRegistry(deps) {
|
|
|
353
387
|
return affected;
|
|
354
388
|
}
|
|
355
389
|
/**
|
|
356
|
-
* Fire-and-forget an AutomationManager async control call
|
|
357
|
-
*
|
|
390
|
+
* Fire-and-forget an AutomationManager async control call: the
|
|
391
|
+
* registry's own kill/interrupt/resume verbs are
|
|
358
392
|
* synchronous, but AutomationManager.removeJob/setEnabled are Promises —
|
|
359
393
|
* dispatch without awaiting rather than making every registry verb async,
|
|
360
394
|
* but never let a rejection vanish silently. The next tick's assemble()
|
|
@@ -511,7 +545,7 @@ export function createProcessRegistry(deps) {
|
|
|
511
545
|
}
|
|
512
546
|
}
|
|
513
547
|
/**
|
|
514
|
-
*
|
|
548
|
+
* Re-arm a `paused` trigger/schedule via the owning
|
|
515
549
|
* manager's `enable()` — the inverse of interrupt()'s disable. Re-assemble
|
|
516
550
|
* + dispatch-by-kind mirrors interrupt()/kill()'s own shape exactly (same
|
|
517
551
|
* synchronous, no-owned-state pattern as every other control verb here).
|