@pellux/goodvibes-sdk 0.37.2 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/contracts/artifacts/operator-contract.json +3171 -929
- package/dist/daemon.d.ts +2 -0
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +4 -0
- package/dist/events/communication.d.ts +21 -1
- package/dist/events/communication.d.ts.map +1 -1
- package/dist/events/surfaces.d.ts +25 -3
- package/dist/events/surfaces.d.ts.map +1 -1
- package/dist/events/surfaces.js +22 -1
- package/dist/events/workflows.d.ts +7 -6
- package/dist/events/workflows.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/platform/agents/archetypes.d.ts.map +1 -1
- package/dist/platform/agents/archetypes.js +7 -0
- package/dist/platform/agents/index.d.ts +1 -0
- package/dist/platform/agents/index.d.ts.map +1 -1
- package/dist/platform/agents/index.js +1 -0
- package/dist/platform/agents/message-bus-core.d.ts +7 -0
- package/dist/platform/agents/message-bus-core.d.ts.map +1 -1
- package/dist/platform/agents/message-bus-core.js +2 -1
- package/dist/platform/agents/orchestrator-runner.d.ts +50 -1
- package/dist/platform/agents/orchestrator-runner.d.ts.map +1 -1
- package/dist/platform/agents/orchestrator-runner.js +172 -7
- package/dist/platform/agents/orchestrator.d.ts +78 -6
- package/dist/platform/agents/orchestrator.d.ts.map +1 -1
- package/dist/platform/agents/orchestrator.js +95 -18
- package/dist/platform/agents/planner-decomposition-runner.d.ts +38 -0
- package/dist/platform/agents/planner-decomposition-runner.d.ts.map +1 -0
- package/dist/platform/agents/planner-decomposition-runner.js +113 -0
- package/dist/platform/agents/turn-knowledge-injection.d.ts +192 -0
- package/dist/platform/agents/turn-knowledge-injection.d.ts.map +1 -0
- package/dist/platform/agents/turn-knowledge-injection.js +269 -0
- package/dist/platform/agents/worktree.d.ts +126 -8
- package/dist/platform/agents/worktree.d.ts.map +1 -1
- package/dist/platform/agents/worktree.js +240 -19
- package/dist/platform/agents/wrfc-controller.d.ts +46 -0
- package/dist/platform/agents/wrfc-controller.d.ts.map +1 -1
- package/dist/platform/agents/wrfc-controller.js +213 -32
- package/dist/platform/agents/wrfc-gate-runtime.d.ts +9 -0
- package/dist/platform/agents/wrfc-gate-runtime.d.ts.map +1 -1
- package/dist/platform/agents/wrfc-gate-runtime.js +7 -3
- package/dist/platform/agents/wrfc-gates.d.ts +1 -1
- package/dist/platform/agents/wrfc-gates.d.ts.map +1 -1
- package/dist/platform/agents/wrfc-gates.js +7 -1
- package/dist/platform/agents/wrfc-types.d.ts +23 -3
- package/dist/platform/agents/wrfc-types.d.ts.map +1 -1
- package/dist/platform/automation/types.d.ts +9 -1
- package/dist/platform/automation/types.d.ts.map +1 -1
- package/dist/platform/calendar/calendar-api-shared.d.ts +25 -0
- package/dist/platform/calendar/calendar-api-shared.d.ts.map +1 -0
- package/dist/platform/calendar/calendar-api-shared.js +100 -0
- package/dist/platform/calendar/calendar-connector.d.ts +79 -0
- package/dist/platform/calendar/calendar-connector.d.ts.map +1 -0
- package/dist/platform/calendar/calendar-connector.js +155 -0
- package/dist/platform/calendar/google-calendar-api.d.ts +25 -0
- package/dist/platform/calendar/google-calendar-api.d.ts.map +1 -0
- package/dist/platform/calendar/google-calendar-api.js +89 -0
- package/dist/platform/calendar/http-fetch-adapter.d.ts +25 -0
- package/dist/platform/calendar/http-fetch-adapter.d.ts.map +1 -0
- package/dist/platform/calendar/http-fetch-adapter.js +25 -0
- package/dist/platform/calendar/ics-parser.d.ts +35 -0
- package/dist/platform/calendar/ics-parser.d.ts.map +1 -0
- package/dist/platform/calendar/ics-parser.js +236 -0
- package/dist/platform/calendar/index.d.ts +41 -0
- package/dist/platform/calendar/index.d.ts.map +1 -0
- package/dist/platform/calendar/index.js +49 -0
- package/dist/platform/calendar/merged-calendar-model.d.ts +67 -0
- package/dist/platform/calendar/merged-calendar-model.d.ts.map +1 -0
- package/dist/platform/calendar/merged-calendar-model.js +181 -0
- package/dist/platform/calendar/microsoft-graph-api.d.ts +25 -0
- package/dist/platform/calendar/microsoft-graph-api.d.ts.map +1 -0
- package/dist/platform/calendar/microsoft-graph-api.js +95 -0
- package/dist/platform/calendar/oauth-flow.d.ts +62 -0
- package/dist/platform/calendar/oauth-flow.d.ts.map +1 -0
- package/dist/platform/calendar/oauth-flow.js +305 -0
- package/dist/platform/calendar/oauth-providers.d.ts +43 -0
- package/dist/platform/calendar/oauth-providers.d.ts.map +1 -0
- package/dist/platform/calendar/oauth-providers.js +120 -0
- package/dist/platform/calendar/oauth-token-store.d.ts +72 -0
- package/dist/platform/calendar/oauth-token-store.d.ts.map +1 -0
- package/dist/platform/calendar/oauth-token-store.js +189 -0
- package/dist/platform/calendar/oauth-types.d.ts +274 -0
- package/dist/platform/calendar/oauth-types.d.ts.map +1 -0
- package/dist/platform/calendar/oauth-types.js +22 -0
- package/dist/platform/calendar/rrule.d.ts +39 -0
- package/dist/platform/calendar/rrule.d.ts.map +1 -0
- package/dist/platform/calendar/rrule.js +261 -0
- package/dist/platform/calendar/subscription-store.d.ts +118 -0
- package/dist/platform/calendar/subscription-store.d.ts.map +1 -0
- package/dist/platform/calendar/subscription-store.js +293 -0
- package/dist/platform/calendar/types.d.ts +170 -0
- package/dist/platform/calendar/types.d.ts.map +1 -0
- package/dist/platform/calendar/types.js +21 -0
- package/dist/platform/companion/companion-chat-attachments.d.ts +29 -0
- package/dist/platform/companion/companion-chat-attachments.d.ts.map +1 -0
- package/dist/platform/companion/companion-chat-attachments.js +121 -0
- package/dist/platform/companion/companion-chat-broker-bridge.d.ts +40 -0
- package/dist/platform/companion/companion-chat-broker-bridge.d.ts.map +1 -0
- package/dist/platform/companion/companion-chat-broker-bridge.js +14 -0
- package/dist/platform/companion/companion-chat-broker-sync.d.ts +38 -0
- package/dist/platform/companion/companion-chat-broker-sync.d.ts.map +1 -0
- package/dist/platform/companion/companion-chat-broker-sync.js +80 -0
- package/dist/platform/companion/companion-chat-gc.d.ts +63 -0
- package/dist/platform/companion/companion-chat-gc.d.ts.map +1 -0
- package/dist/platform/companion/companion-chat-gc.js +38 -0
- package/dist/platform/companion/companion-chat-manager.d.ts +67 -20
- package/dist/platform/companion/companion-chat-manager.d.ts.map +1 -1
- package/dist/platform/companion/companion-chat-manager.js +130 -144
- package/dist/platform/companion/companion-chat-persistence.d.ts +9 -1
- package/dist/platform/companion/companion-chat-persistence.d.ts.map +1 -1
- package/dist/platform/companion/companion-chat-persistence.js +10 -2
- package/dist/platform/companion/companion-chat-routes.d.ts +2 -1
- package/dist/platform/companion/companion-chat-routes.d.ts.map +1 -1
- package/dist/platform/companion/companion-chat-routes.js +37 -4
- package/dist/platform/config/credential-status.d.ts +28 -0
- package/dist/platform/config/credential-status.d.ts.map +1 -0
- package/dist/platform/config/credential-status.js +75 -0
- package/dist/platform/config/index.d.ts +25 -0
- package/dist/platform/config/index.d.ts.map +1 -1
- package/dist/platform/config/index.js +18 -0
- package/dist/platform/config/manager.d.ts +18 -0
- package/dist/platform/config/manager.d.ts.map +1 -1
- package/dist/platform/config/manager.js +36 -2
- package/dist/platform/config/migrations.d.ts +48 -0
- package/dist/platform/config/migrations.d.ts.map +1 -0
- package/dist/platform/config/migrations.js +54 -0
- package/dist/platform/config/schema-domain-core.d.ts +10 -1
- package/dist/platform/config/schema-domain-core.d.ts.map +1 -1
- package/dist/platform/config/schema-domain-core.js +46 -3
- package/dist/platform/config/schema-types.d.ts +13 -7
- package/dist/platform/config/schema-types.d.ts.map +1 -1
- package/dist/platform/config/schema.d.ts.map +1 -1
- package/dist/platform/config/schema.js +2 -0
- package/dist/platform/control-plane/approval-broker.d.ts +11 -0
- package/dist/platform/control-plane/approval-broker.d.ts.map +1 -1
- package/dist/platform/control-plane/approval-broker.js +17 -1
- package/dist/platform/control-plane/approval-hunk-apply.d.ts +77 -0
- package/dist/platform/control-plane/approval-hunk-apply.d.ts.map +1 -0
- package/dist/platform/control-plane/approval-hunk-apply.js +80 -0
- package/dist/platform/control-plane/gateway-disabled-response.d.ts +20 -0
- package/dist/platform/control-plane/gateway-disabled-response.d.ts.map +1 -0
- package/dist/platform/control-plane/gateway-disabled-response.js +24 -0
- package/dist/platform/control-plane/gateway-scope-enforcement.d.ts +68 -0
- package/dist/platform/control-plane/gateway-scope-enforcement.d.ts.map +1 -0
- package/dist/platform/control-plane/gateway-scope-enforcement.js +91 -0
- package/dist/platform/control-plane/gateway-utils.d.ts +17 -0
- package/dist/platform/control-plane/gateway-utils.d.ts.map +1 -1
- package/dist/platform/control-plane/gateway-utils.js +30 -0
- package/dist/platform/control-plane/gateway.d.ts +12 -2
- package/dist/platform/control-plane/gateway.d.ts.map +1 -1
- package/dist/platform/control-plane/gateway.js +27 -31
- package/dist/platform/control-plane/index.d.ts +6 -1
- package/dist/platform/control-plane/index.d.ts.map +1 -1
- package/dist/platform/control-plane/index.js +4 -0
- package/dist/platform/control-plane/invoke-input-validation.d.ts +56 -0
- package/dist/platform/control-plane/invoke-input-validation.d.ts.map +1 -0
- package/dist/platform/control-plane/invoke-input-validation.js +163 -0
- package/dist/platform/control-plane/method-catalog-admin.d.ts.map +1 -1
- package/dist/platform/control-plane/method-catalog-admin.js +12 -1
- package/dist/platform/control-plane/method-catalog-calendar.d.ts +16 -0
- package/dist/platform/control-plane/method-catalog-calendar.d.ts.map +1 -1
- package/dist/platform/control-plane/method-catalog-calendar.js +21 -0
- package/dist/platform/control-plane/method-catalog-channels.d.ts.map +1 -1
- package/dist/platform/control-plane/method-catalog-channels.js +32 -3
- package/dist/platform/control-plane/method-catalog-control-automation.d.ts.map +1 -1
- package/dist/platform/control-plane/method-catalog-control-automation.js +19 -34
- package/dist/platform/control-plane/method-catalog-control-companion.d.ts +15 -0
- package/dist/platform/control-plane/method-catalog-control-companion.d.ts.map +1 -0
- package/dist/platform/control-plane/method-catalog-control-companion.js +133 -0
- package/dist/platform/control-plane/method-catalog-control-core.d.ts.map +1 -1
- package/dist/platform/control-plane/method-catalog-control-core.js +104 -122
- package/dist/platform/control-plane/method-catalog-control.d.ts.map +1 -1
- package/dist/platform/control-plane/method-catalog-control.js +4 -0
- package/dist/platform/control-plane/method-catalog-email.d.ts +17 -0
- package/dist/platform/control-plane/method-catalog-email.d.ts.map +1 -1
- package/dist/platform/control-plane/method-catalog-email.js +21 -0
- package/dist/platform/control-plane/method-catalog-events.d.ts +28 -0
- package/dist/platform/control-plane/method-catalog-events.d.ts.map +1 -1
- package/dist/platform/control-plane/method-catalog-events.js +74 -1
- package/dist/platform/control-plane/method-catalog-fleet.d.ts +24 -0
- package/dist/platform/control-plane/method-catalog-fleet.d.ts.map +1 -0
- package/dist/platform/control-plane/method-catalog-fleet.js +65 -0
- package/dist/platform/control-plane/method-catalog-route-reconcile.d.ts +84 -0
- package/dist/platform/control-plane/method-catalog-route-reconcile.d.ts.map +1 -0
- package/dist/platform/control-plane/method-catalog-route-reconcile.js +103 -0
- package/dist/platform/control-plane/method-catalog-shared.d.ts +29 -0
- package/dist/platform/control-plane/method-catalog-shared.d.ts.map +1 -1
- package/dist/platform/control-plane/method-catalog.d.ts +9 -0
- package/dist/platform/control-plane/method-catalog.d.ts.map +1 -1
- package/dist/platform/control-plane/method-catalog.js +32 -3
- package/dist/platform/control-plane/operator-contract-schemas-admin.d.ts +8 -0
- package/dist/platform/control-plane/operator-contract-schemas-admin.d.ts.map +1 -1
- package/dist/platform/control-plane/operator-contract-schemas-admin.js +22 -1
- package/dist/platform/control-plane/operator-contract-schemas-fleet.d.ts +18 -0
- package/dist/platform/control-plane/operator-contract-schemas-fleet.d.ts.map +1 -0
- package/dist/platform/control-plane/operator-contract-schemas-fleet.js +182 -0
- package/dist/platform/control-plane/operator-contract-schemas-permissions.d.ts.map +1 -1
- package/dist/platform/control-plane/operator-contract-schemas-permissions.js +5 -0
- package/dist/platform/control-plane/operator-contract-schemas-runtime.d.ts +29 -0
- package/dist/platform/control-plane/operator-contract-schemas-runtime.d.ts.map +1 -1
- package/dist/platform/control-plane/operator-contract-schemas-runtime.js +57 -3
- package/dist/platform/control-plane/operator-contract-schemas.d.ts +1 -0
- package/dist/platform/control-plane/operator-contract-schemas.d.ts.map +1 -1
- package/dist/platform/control-plane/operator-contract-schemas.js +1 -0
- package/dist/platform/control-plane/operator-contract.d.ts.map +1 -1
- package/dist/platform/control-plane/operator-contract.js +8 -0
- package/dist/platform/control-plane/routes/checkpoints.d.ts +39 -0
- package/dist/platform/control-plane/routes/checkpoints.d.ts.map +1 -0
- package/dist/platform/control-plane/routes/checkpoints.js +166 -0
- package/dist/platform/control-plane/routes/fleet.d.ts +53 -0
- package/dist/platform/control-plane/routes/fleet.d.ts.map +1 -0
- package/dist/platform/control-plane/routes/fleet.js +153 -0
- package/dist/platform/control-plane/routes/gateway-verb-error.d.ts +30 -0
- package/dist/platform/control-plane/routes/gateway-verb-error.d.ts.map +1 -0
- package/dist/platform/control-plane/routes/gateway-verb-error.js +36 -0
- package/dist/platform/control-plane/routes/index.d.ts +0 -6
- package/dist/platform/control-plane/routes/index.d.ts.map +1 -1
- package/dist/platform/control-plane/routes/index.js +5 -5
- package/dist/platform/control-plane/routes/invocation-params.d.ts +23 -0
- package/dist/platform/control-plane/routes/invocation-params.d.ts.map +1 -0
- package/dist/platform/control-plane/routes/invocation-params.js +9 -0
- package/dist/platform/control-plane/routes/register-w3-s2.d.ts +26 -0
- package/dist/platform/control-plane/routes/register-w3-s2.d.ts.map +1 -0
- package/dist/platform/control-plane/routes/register-w3-s2.js +8 -0
- package/dist/platform/control-plane/routes/session-search.d.ts +37 -0
- package/dist/platform/control-plane/routes/session-search.d.ts.map +1 -0
- package/dist/platform/control-plane/routes/session-search.js +113 -0
- package/dist/platform/control-plane/session-broker-gc.d.ts +16 -0
- package/dist/platform/control-plane/session-broker-gc.d.ts.map +1 -1
- package/dist/platform/control-plane/session-broker-gc.js +23 -6
- package/dist/platform/control-plane/session-broker-helpers.d.ts +3 -3
- package/dist/platform/control-plane/session-broker-helpers.d.ts.map +1 -1
- package/dist/platform/control-plane/session-broker-inputs.d.ts +18 -0
- package/dist/platform/control-plane/session-broker-inputs.d.ts.map +1 -1
- package/dist/platform/control-plane/session-broker-inputs.js +34 -0
- package/dist/platform/control-plane/session-broker-sessions.d.ts +102 -3
- package/dist/platform/control-plane/session-broker-sessions.d.ts.map +1 -1
- package/dist/platform/control-plane/session-broker-sessions.js +179 -5
- package/dist/platform/control-plane/session-broker-state.d.ts +20 -1
- package/dist/platform/control-plane/session-broker-state.d.ts.map +1 -1
- package/dist/platform/control-plane/session-broker-state.js +67 -5
- package/dist/platform/control-plane/session-broker.d.ts +51 -38
- package/dist/platform/control-plane/session-broker.d.ts.map +1 -1
- package/dist/platform/control-plane/session-broker.js +183 -75
- package/dist/platform/control-plane/session-store-importer.d.ts +57 -0
- package/dist/platform/control-plane/session-store-importer.d.ts.map +1 -0
- package/dist/platform/control-plane/session-store-importer.js +227 -0
- package/dist/platform/control-plane/session-types.d.ts +142 -7
- package/dist/platform/control-plane/session-types.d.ts.map +1 -1
- package/dist/platform/core/adaptive-planner.d.ts +50 -0
- package/dist/platform/core/adaptive-planner.d.ts.map +1 -1
- package/dist/platform/core/adaptive-planner.js +49 -0
- package/dist/platform/core/execution-plan.d.ts +43 -1
- package/dist/platform/core/execution-plan.d.ts.map +1 -1
- package/dist/platform/core/execution-plan.js +46 -10
- package/dist/platform/core/index.d.ts +2 -0
- package/dist/platform/core/index.d.ts.map +1 -1
- package/dist/platform/core/index.js +2 -0
- package/dist/platform/core/orchestrator-runtime.d.ts +31 -0
- package/dist/platform/core/orchestrator-runtime.d.ts.map +1 -1
- package/dist/platform/core/orchestrator-tool-runtime.d.ts +7 -0
- package/dist/platform/core/orchestrator-tool-runtime.d.ts.map +1 -1
- package/dist/platform/core/orchestrator-tool-runtime.js +10 -0
- package/dist/platform/core/orchestrator-turn-loop.d.ts +35 -1
- package/dist/platform/core/orchestrator-turn-loop.d.ts.map +1 -1
- package/dist/platform/core/orchestrator-turn-loop.js +121 -3
- package/dist/platform/core/orchestrator.d.ts +67 -0
- package/dist/platform/core/orchestrator.d.ts.map +1 -1
- package/dist/platform/core/orchestrator.js +89 -1
- package/dist/platform/core/plan-decomposition.d.ts +196 -0
- package/dist/platform/core/plan-decomposition.d.ts.map +1 -0
- package/dist/platform/core/plan-decomposition.js +417 -0
- package/dist/platform/core/plan-proposal.d.ts +204 -0
- package/dist/platform/core/plan-proposal.d.ts.map +1 -0
- package/dist/platform/core/plan-proposal.js +296 -0
- package/dist/platform/core/wrfc-routing.d.ts +1 -0
- package/dist/platform/core/wrfc-routing.d.ts.map +1 -1
- package/dist/platform/core/wrfc-routing.js +51 -1
- package/dist/platform/daemon/boot.d.ts +63 -0
- package/dist/platform/daemon/boot.d.ts.map +1 -0
- package/dist/platform/daemon/boot.js +60 -0
- package/dist/platform/daemon/cli.js +2 -1
- package/dist/platform/daemon/control-plane.d.ts.map +1 -1
- package/dist/platform/daemon/control-plane.js +50 -1
- package/dist/platform/daemon/facade-composition.d.ts.map +1 -1
- package/dist/platform/daemon/facade-composition.js +6 -0
- package/dist/platform/daemon/facade.d.ts +18 -6
- package/dist/platform/daemon/facade.d.ts.map +1 -1
- package/dist/platform/daemon/facade.js +50 -43
- package/dist/platform/daemon/http/router-route-contexts.d.ts +1 -0
- package/dist/platform/daemon/http/router-route-contexts.d.ts.map +1 -1
- package/dist/platform/daemon/http/router-route-contexts.js +1 -0
- package/dist/platform/daemon/http/router-session-broker-adapter.d.ts +13 -0
- package/dist/platform/daemon/http/router-session-broker-adapter.d.ts.map +1 -0
- package/dist/platform/daemon/http/router-session-broker-adapter.js +27 -0
- package/dist/platform/daemon/http/router.d.ts +1 -1
- package/dist/platform/daemon/http/router.d.ts.map +1 -1
- package/dist/platform/daemon/http/router.js +7 -22
- package/dist/platform/daemon/http/runtime-route-types.d.ts +42 -4
- package/dist/platform/daemon/http/runtime-route-types.d.ts.map +1 -1
- package/dist/platform/daemon/index.d.ts +2 -0
- package/dist/platform/daemon/index.d.ts.map +1 -1
- package/dist/platform/daemon/index.js +1 -0
- package/dist/platform/daemon/service-manager.d.ts +16 -0
- package/dist/platform/daemon/service-manager.d.ts.map +1 -1
- package/dist/platform/daemon/service-manager.js +79 -15
- package/dist/platform/intelligence/tree-sitter/service.d.ts.map +1 -1
- package/dist/platform/intelligence/tree-sitter/service.js +16 -2
- package/dist/platform/knowledge/browser-history/readers.d.ts.map +1 -1
- package/dist/platform/knowledge/browser-history/readers.js +15 -5
- package/dist/platform/knowledge/knowledge-api.d.ts +26 -0
- package/dist/platform/knowledge/knowledge-api.d.ts.map +1 -1
- package/dist/platform/knowledge/knowledge-api.js +11 -0
- package/dist/platform/knowledge/project-planning/service.d.ts +14 -1
- package/dist/platform/knowledge/project-planning/service.d.ts.map +1 -1
- package/dist/platform/knowledge/project-planning/service.js +77 -0
- package/dist/platform/knowledge/project-planning/types.d.ts +32 -0
- package/dist/platform/knowledge/project-planning/types.d.ts.map +1 -1
- package/dist/platform/orchestration/bookkeeping.d.ts +12 -0
- package/dist/platform/orchestration/bookkeeping.d.ts.map +1 -0
- package/dist/platform/orchestration/bookkeeping.js +91 -0
- package/dist/platform/orchestration/budget.d.ts +22 -0
- package/dist/platform/orchestration/budget.d.ts.map +1 -0
- package/dist/platform/orchestration/budget.js +35 -0
- package/dist/platform/orchestration/cancellation.d.ts +31 -0
- package/dist/platform/orchestration/cancellation.d.ts.map +1 -0
- package/dist/platform/orchestration/cancellation.js +25 -0
- package/dist/platform/orchestration/controller-compat.d.ts +46 -0
- package/dist/platform/orchestration/controller-compat.d.ts.map +1 -0
- package/dist/platform/orchestration/controller-compat.js +27 -0
- package/dist/platform/orchestration/dirty-guard.d.ts +32 -0
- package/dist/platform/orchestration/dirty-guard.d.ts.map +1 -0
- package/dist/platform/orchestration/dirty-guard.js +147 -0
- package/dist/platform/orchestration/engine.d.ts +82 -0
- package/dist/platform/orchestration/engine.d.ts.map +1 -0
- package/dist/platform/orchestration/engine.js +623 -0
- package/dist/platform/orchestration/index.d.ts +20 -0
- package/dist/platform/orchestration/index.d.ts.map +1 -0
- package/dist/platform/orchestration/index.js +11 -0
- package/dist/platform/orchestration/persistence.d.ts +24 -0
- package/dist/platform/orchestration/persistence.d.ts.map +1 -0
- package/dist/platform/orchestration/persistence.js +179 -0
- package/dist/platform/orchestration/phase-runner.d.ts +114 -0
- package/dist/platform/orchestration/phase-runner.d.ts.map +1 -0
- package/dist/platform/orchestration/phase-runner.js +347 -0
- package/dist/platform/orchestration/proposal-workstream.d.ts +56 -0
- package/dist/platform/orchestration/proposal-workstream.d.ts.map +1 -0
- package/dist/platform/orchestration/proposal-workstream.js +76 -0
- package/dist/platform/orchestration/scheduler.d.ts +64 -0
- package/dist/platform/orchestration/scheduler.d.ts.map +1 -0
- package/dist/platform/orchestration/scheduler.js +73 -0
- package/dist/platform/orchestration/types.d.ts +535 -0
- package/dist/platform/orchestration/types.d.ts.map +1 -0
- package/dist/platform/orchestration/types.js +47 -0
- package/dist/platform/orchestration/worktree-isolation.d.ts +33 -0
- package/dist/platform/orchestration/worktree-isolation.d.ts.map +1 -0
- package/dist/platform/orchestration/worktree-isolation.js +248 -0
- package/dist/platform/presentation/glyphs.d.ts +91 -0
- package/dist/platform/presentation/glyphs.d.ts.map +1 -0
- package/dist/platform/presentation/glyphs.js +93 -0
- package/dist/platform/presentation/index.d.ts +28 -0
- package/dist/platform/presentation/index.d.ts.map +1 -0
- package/dist/platform/presentation/index.js +27 -0
- package/dist/platform/presentation/thinking-phrases.d.ts +12 -0
- package/dist/platform/presentation/thinking-phrases.d.ts.map +1 -0
- package/dist/platform/presentation/thinking-phrases.js +32 -0
- package/dist/platform/presentation/tones.d.ts +121 -0
- package/dist/platform/presentation/tones.d.ts.map +1 -0
- package/dist/platform/presentation/tones.js +145 -0
- package/dist/platform/presentation/waiting-wording.d.ts +54 -0
- package/dist/platform/presentation/waiting-wording.d.ts.map +1 -0
- package/dist/platform/presentation/waiting-wording.js +51 -0
- package/dist/platform/providers/runtime-snapshot.d.ts.map +1 -1
- package/dist/platform/providers/runtime-snapshot.js +12 -2
- package/dist/platform/runtime/bootstrap-services.d.ts +62 -2
- package/dist/platform/runtime/bootstrap-services.d.ts.map +1 -1
- package/dist/platform/runtime/bootstrap-services.js +217 -50
- package/dist/platform/runtime/daemon-version-compat.d.ts +39 -0
- package/dist/platform/runtime/daemon-version-compat.d.ts.map +1 -0
- package/dist/platform/runtime/daemon-version-compat.js +75 -0
- package/dist/platform/runtime/detached-daemon-runtime.d.ts +26 -0
- package/dist/platform/runtime/detached-daemon-runtime.d.ts.map +1 -0
- package/dist/platform/runtime/detached-daemon-runtime.js +49 -0
- package/dist/platform/runtime/emitters/communication.d.ts +11 -0
- package/dist/platform/runtime/emitters/communication.d.ts.map +1 -1
- package/dist/platform/runtime/emitters/communication.js +9 -0
- package/dist/platform/runtime/emitters/workflows.d.ts +1 -1
- package/dist/platform/runtime/emitters/workflows.d.ts.map +1 -1
- package/dist/platform/runtime/events/index.d.ts +13 -0
- package/dist/platform/runtime/events/index.d.ts.map +1 -1
- package/dist/platform/runtime/events/index.js +13 -0
- package/dist/platform/runtime/feature-flags/flags.d.ts.map +1 -1
- package/dist/platform/runtime/feature-flags/flags.js +56 -1
- package/dist/platform/runtime/fleet/adapters/agent.d.ts +56 -0
- package/dist/platform/runtime/fleet/adapters/agent.d.ts.map +1 -0
- package/dist/platform/runtime/fleet/adapters/agent.js +143 -0
- package/dist/platform/runtime/fleet/adapters/automation.d.ts +30 -0
- package/dist/platform/runtime/fleet/adapters/automation.d.ts.map +1 -0
- package/dist/platform/runtime/fleet/adapters/automation.js +41 -0
- package/dist/platform/runtime/fleet/adapters/background-process.d.ts +12 -0
- package/dist/platform/runtime/fleet/adapters/background-process.d.ts.map +1 -0
- package/dist/platform/runtime/fleet/adapters/background-process.js +46 -0
- package/dist/platform/runtime/fleet/adapters/code-index.d.ts +21 -0
- package/dist/platform/runtime/fleet/adapters/code-index.d.ts.map +1 -0
- package/dist/platform/runtime/fleet/adapters/code-index.js +44 -0
- package/dist/platform/runtime/fleet/adapters/orchestration.d.ts +69 -0
- package/dist/platform/runtime/fleet/adapters/orchestration.d.ts.map +1 -0
- package/dist/platform/runtime/fleet/adapters/orchestration.js +329 -0
- package/dist/platform/runtime/fleet/adapters/schedule.d.ts +14 -0
- package/dist/platform/runtime/fleet/adapters/schedule.d.ts.map +1 -0
- package/dist/platform/runtime/fleet/adapters/schedule.js +28 -0
- package/dist/platform/runtime/fleet/adapters/trigger.d.ts +12 -0
- package/dist/platform/runtime/fleet/adapters/trigger.d.ts.map +1 -0
- package/dist/platform/runtime/fleet/adapters/trigger.js +22 -0
- package/dist/platform/runtime/fleet/adapters/watcher.d.ts +13 -0
- package/dist/platform/runtime/fleet/adapters/watcher.d.ts.map +1 -0
- package/dist/platform/runtime/fleet/adapters/watcher.js +47 -0
- package/dist/platform/runtime/fleet/adapters/workflow.d.ts +11 -0
- package/dist/platform/runtime/fleet/adapters/workflow.d.ts.map +1 -0
- package/dist/platform/runtime/fleet/adapters/workflow.js +34 -0
- package/dist/platform/runtime/fleet/adapters/wrfc.d.ts +35 -0
- package/dist/platform/runtime/fleet/adapters/wrfc.d.ts.map +1 -0
- package/dist/platform/runtime/fleet/adapters/wrfc.js +275 -0
- package/dist/platform/runtime/fleet/index.d.ts +10 -0
- package/dist/platform/runtime/fleet/index.d.ts.map +1 -0
- package/dist/platform/runtime/fleet/index.js +6 -0
- package/dist/platform/runtime/fleet/registry.d.ts +113 -0
- package/dist/platform/runtime/fleet/registry.d.ts.map +1 -0
- package/dist/platform/runtime/fleet/registry.js +664 -0
- package/dist/platform/runtime/fleet/types.d.ts +199 -0
- package/dist/platform/runtime/fleet/types.d.ts.map +1 -0
- package/dist/platform/runtime/fleet/types.js +2 -0
- package/dist/platform/runtime/operator-client.d.ts +20 -2
- package/dist/platform/runtime/operator-client.d.ts.map +1 -1
- package/dist/platform/runtime/operator-client.js +11 -1
- package/dist/platform/runtime/provider-accounts/registry.d.ts.map +1 -1
- package/dist/platform/runtime/provider-accounts/registry.js +11 -1
- package/dist/platform/runtime/runtime-knowledge-api.d.ts +1 -1
- package/dist/platform/runtime/runtime-knowledge-api.d.ts.map +1 -1
- package/dist/platform/runtime/runtime-knowledge-api.js +1 -0
- package/dist/platform/runtime/services.d.ts +48 -0
- package/dist/platform/runtime/services.d.ts.map +1 -1
- package/dist/platform/runtime/services.js +95 -2
- package/dist/platform/runtime/session-spine/client.d.ts +234 -0
- package/dist/platform/runtime/session-spine/client.d.ts.map +1 -0
- package/dist/platform/runtime/session-spine/client.js +449 -0
- package/dist/platform/runtime/session-spine/index.d.ts +12 -0
- package/dist/platform/runtime/session-spine/index.d.ts.map +1 -0
- package/dist/platform/runtime/session-spine/index.js +11 -0
- package/dist/platform/runtime/session-spine/union-cache.d.ts +225 -0
- package/dist/platform/runtime/session-spine/union-cache.d.ts.map +1 -0
- package/dist/platform/runtime/session-spine/union-cache.js +333 -0
- package/dist/platform/runtime/shell-command-ops.d.ts +3 -1
- package/dist/platform/runtime/shell-command-ops.d.ts.map +1 -1
- package/dist/platform/runtime/transports/daemon-http-client-validators.d.ts.map +1 -1
- package/dist/platform/runtime/transports/daemon-http-client-validators.js +22 -0
- package/dist/platform/runtime/transports/daemon-http-client.d.ts.map +1 -1
- package/dist/platform/runtime/transports/daemon-http-client.js +25 -2
- package/dist/platform/runtime/transports/http-types.d.ts +9 -2
- package/dist/platform/runtime/transports/http-types.d.ts.map +1 -1
- package/dist/platform/state/canonical-memory.d.ts +95 -0
- package/dist/platform/state/canonical-memory.d.ts.map +1 -0
- package/dist/platform/state/canonical-memory.js +155 -0
- package/dist/platform/state/code-index-chunking.d.ts +49 -0
- package/dist/platform/state/code-index-chunking.d.ts.map +1 -0
- package/dist/platform/state/code-index-chunking.js +111 -0
- package/dist/platform/state/code-index-db.d.ts +53 -0
- package/dist/platform/state/code-index-db.d.ts.map +1 -0
- package/dist/platform/state/code-index-db.js +101 -0
- package/dist/platform/state/code-index-reindex.d.ts +73 -0
- package/dist/platform/state/code-index-reindex.d.ts.map +1 -0
- package/dist/platform/state/code-index-reindex.js +156 -0
- package/dist/platform/state/code-index-store.d.ts +175 -0
- package/dist/platform/state/code-index-store.d.ts.map +1 -0
- package/dist/platform/state/code-index-store.js +620 -0
- package/dist/platform/state/index.d.ts +12 -2
- package/dist/platform/state/index.d.ts.map +1 -1
- package/dist/platform/state/index.js +6 -1
- package/dist/platform/state/knowledge-injection.d.ts +23 -0
- package/dist/platform/state/knowledge-injection.d.ts.map +1 -1
- package/dist/platform/state/knowledge-injection.js +34 -19
- package/dist/platform/state/memory-recall-contract.d.ts +63 -0
- package/dist/platform/state/memory-recall-contract.d.ts.map +1 -0
- package/dist/platform/state/memory-recall-contract.js +94 -0
- package/dist/platform/state/memory-store.d.ts +2 -0
- package/dist/platform/state/memory-store.d.ts.map +1 -1
- package/dist/platform/state/memory-store.js +4 -0
- package/dist/platform/state/memory-vector-store.d.ts +1 -13
- package/dist/platform/state/memory-vector-store.d.ts.map +1 -1
- package/dist/platform/state/memory-vector-store.js +18 -39
- package/dist/platform/state/sqlite-store.d.ts +2 -0
- package/dist/platform/state/sqlite-store.d.ts.map +1 -1
- package/dist/platform/state/sqlite-store.js +4 -0
- package/dist/platform/state/sqlite-vec-loader.d.ts +25 -0
- package/dist/platform/state/sqlite-vec-loader.d.ts.map +1 -0
- package/dist/platform/state/sqlite-vec-loader.js +43 -0
- package/dist/platform/state/vibe-projection.d.ts +67 -0
- package/dist/platform/state/vibe-projection.d.ts.map +1 -0
- package/dist/platform/state/vibe-projection.js +115 -0
- package/dist/platform/tools/agent/index.d.ts.map +1 -1
- package/dist/platform/tools/agent/index.js +8 -0
- package/dist/platform/tools/agent/manager.d.ts +140 -1
- package/dist/platform/tools/agent/manager.d.ts.map +1 -1
- package/dist/platform/tools/agent/manager.js +143 -1
- package/dist/platform/tools/agent/schema.d.ts +26 -0
- package/dist/platform/tools/agent/schema.d.ts.map +1 -1
- package/dist/platform/tools/agent/schema.js +2 -2
- package/dist/platform/tools/agent/wrfc-batch-policy.d.ts +13 -0
- package/dist/platform/tools/agent/wrfc-batch-policy.d.ts.map +1 -1
- package/dist/platform/tools/agent/wrfc-batch-policy.js +60 -0
- package/dist/platform/tools/exec/runtime.d.ts +10 -0
- package/dist/platform/tools/exec/runtime.d.ts.map +1 -1
- package/dist/platform/tools/exec/runtime.js +161 -49
- package/dist/platform/tools/exec/schema.d.ts +3 -1
- package/dist/platform/tools/exec/schema.d.ts.map +1 -1
- package/dist/platform/tools/exec/schema.js +2 -1
- package/dist/platform/tools/fetch/runtime.d.ts +7 -0
- package/dist/platform/tools/fetch/runtime.d.ts.map +1 -1
- package/dist/platform/tools/fetch/runtime.js +8 -6
- package/dist/platform/tools/index.d.ts +2 -0
- package/dist/platform/tools/index.d.ts.map +1 -1
- package/dist/platform/tools/index.js +2 -0
- package/dist/platform/tools/registry.d.ts +9 -3
- package/dist/platform/tools/registry.d.ts.map +1 -1
- package/dist/platform/tools/registry.js +9 -3
- package/dist/platform/tools/state/index.d.ts +9 -0
- package/dist/platform/tools/state/index.d.ts.map +1 -1
- package/dist/platform/tools/state/index.js +60 -3
- package/dist/platform/types/foundation-contract.d.ts +1 -1
- package/dist/platform/types/foundation-contract.d.ts.map +1 -1
- package/dist/platform/types/index.d.ts +1 -1
- package/dist/platform/types/index.d.ts.map +1 -1
- package/dist/platform/types/tools.d.ts +14 -1
- package/dist/platform/types/tools.d.ts.map +1 -1
- package/dist/platform/version.js +1 -1
- package/package.json +29 -9
- package/dist/platform/control-plane/routes/automation.d.ts +0 -3
- package/dist/platform/control-plane/routes/automation.d.ts.map +0 -1
- package/dist/platform/control-plane/routes/automation.js +0 -63
- package/dist/platform/control-plane/routes/context.d.ts +0 -2
- package/dist/platform/control-plane/routes/context.d.ts.map +0 -1
- package/dist/platform/control-plane/routes/context.js +0 -1
- package/dist/platform/control-plane/routes/operator.d.ts +0 -8
- package/dist/platform/control-plane/routes/operator.d.ts.map +0 -1
- package/dist/platform/control-plane/routes/operator.js +0 -415
- package/dist/platform/control-plane/routes/remote.d.ts +0 -3
- package/dist/platform/control-plane/routes/remote.d.ts.map +0 -1
- package/dist/platform/control-plane/routes/remote.js +0 -35
- package/dist/platform/control-plane/routes/sessions.d.ts +0 -3
- package/dist/platform/control-plane/routes/sessions.d.ts.map +0 -1
- package/dist/platform/control-plane/routes/sessions.js +0 -43
- package/dist/platform/control-plane/routes/tasks.d.ts +0 -3
- package/dist/platform/control-plane/routes/tasks.d.ts.map +0 -1
- package/dist/platform/control-plane/routes/tasks.js +0 -22
|
@@ -1,8 +1,18 @@
|
|
|
1
1
|
import { ConfigurationError } from '@pellux/goodvibes-errors';
|
|
2
2
|
import { logger } from '../utils/logger.js';
|
|
3
3
|
import net from 'node:net';
|
|
4
|
+
import os from 'node:os';
|
|
5
|
+
import { closeSync, mkdirSync, openSync } from 'node:fs';
|
|
6
|
+
import { join } from 'node:path';
|
|
7
|
+
import { spawn } from 'node:child_process';
|
|
4
8
|
import { summarizeError } from '../utils/error-display.js';
|
|
5
9
|
import { createTimeoutController } from '../utils/fetch-with-timeout.js';
|
|
10
|
+
import { VERSION } from '../version.js';
|
|
11
|
+
import { isDaemonVersionCompatible, describeVersionIncompatibility } from './daemon-version-compat.js';
|
|
12
|
+
import { resolveDaemonEnabled } from '../config/index.js';
|
|
13
|
+
import { recordDetachedDaemonRuntime } from './detached-daemon-runtime.js';
|
|
14
|
+
/** One-time hint surfaced ONCE by the TUI after a successful detached spawn. */
|
|
15
|
+
export const DETACHED_DAEMON_INSTALL_HINT = 'daemon started for this session — install it as a service so it survives reboots: POST /api/service/install on the daemon HTTP API (admin token required)';
|
|
6
16
|
const DEFAULT_SERVICE_START_TIMEOUT_MS = 1500;
|
|
7
17
|
const TCP_PORT_PROBE_TIMEOUT_MS = 250;
|
|
8
18
|
const DAEMON_IDENTITY_PROBE_TIMEOUT_MS = 750;
|
|
@@ -13,6 +23,14 @@ function readBooleanSetting(config, key) {
|
|
|
13
23
|
}
|
|
14
24
|
return value;
|
|
15
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Whether the daemon should be hosted IN THIS PROCESS (Layer 3 opt-in). Default
|
|
28
|
+
* false: the surface spawns a detached daemon instead. Reads leniently so an
|
|
29
|
+
* unset value (undefined) means false rather than throwing.
|
|
30
|
+
*/
|
|
31
|
+
function readDaemonEmbedInProcess(config) {
|
|
32
|
+
return config.get('daemon.embedInProcess') === true;
|
|
33
|
+
}
|
|
16
34
|
function readHostSetting(config, key, fallback) {
|
|
17
35
|
const value = config.get(key);
|
|
18
36
|
if (value === undefined || value === null)
|
|
@@ -201,27 +219,152 @@ export async function startHostServices(config, runtimeBus, hookDispatcher, runt
|
|
|
201
219
|
const probeDaemonPortInUse = factories.probeDaemonPortInUse ?? ((host, port) => isTcpPortInUse(host, port));
|
|
202
220
|
const probeDaemonIdentity = factories.probeDaemonIdentity ?? probeGoodVibesDaemonIdentity;
|
|
203
221
|
const probeHttpListenerPortInUse = factories.probeHttpListenerPortInUse ?? ((host, port) => isTcpPortInUse(host, port));
|
|
222
|
+
const localDaemonVersion = factories.localDaemonVersion ?? VERSION;
|
|
223
|
+
const versionCompatible = factories.isDaemonVersionCompatible ?? isDaemonVersionCompatible;
|
|
224
|
+
// A daemon whose identity probe says `goodvibes` has only proven it IS a
|
|
225
|
+
// GoodVibes daemon — not that it speaks a wire version this surface can adopt.
|
|
226
|
+
// Band-check the reported version and produce an honest `incompatible` status
|
|
227
|
+
// (never a second competing daemon) when it does not match this surface's band.
|
|
228
|
+
const resolveVerifiedDaemonStatus = (identity, reasonAdopted) => {
|
|
229
|
+
if (versionCompatible(localDaemonVersion, identity.version)) {
|
|
230
|
+
return createServiceStatus('external', daemonHost, daemonPort, {
|
|
231
|
+
authenticated: true,
|
|
232
|
+
status: identity.status,
|
|
233
|
+
version: identity.version,
|
|
234
|
+
reason: reasonAdopted,
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
const reason = describeVersionIncompatibility(daemonHost, daemonPort, localDaemonVersion, identity.version);
|
|
238
|
+
logger.warn('Daemon on configured port reports an incompatible version; refusing to adopt or start a competing daemon', {
|
|
239
|
+
host: daemonHost,
|
|
240
|
+
port: daemonPort,
|
|
241
|
+
foundVersion: identity.version,
|
|
242
|
+
localVersion: localDaemonVersion,
|
|
243
|
+
});
|
|
244
|
+
return createServiceStatus('incompatible', daemonHost, daemonPort, {
|
|
245
|
+
authenticated: true,
|
|
246
|
+
status: identity.status,
|
|
247
|
+
version: identity.version,
|
|
248
|
+
reason,
|
|
249
|
+
});
|
|
250
|
+
};
|
|
251
|
+
// Layer 2: spawn the daemon as a DETACHED standalone process (default), then
|
|
252
|
+
// poll (bounded) for it to bind and pass the identity probe. On success adopt
|
|
253
|
+
// it as 'external' with a one-time install-service hint. Returns an honest
|
|
254
|
+
// failure reason otherwise so the caller can fall back.
|
|
255
|
+
const attemptDetachedDaemonSpawn = async () => {
|
|
256
|
+
const spawnDetached = factories.spawnDetachedDaemon
|
|
257
|
+
?? ((command, args, options) => spawn(command, [...args], {
|
|
258
|
+
detached: options.detached,
|
|
259
|
+
stdio: options.stdio,
|
|
260
|
+
...(options.cwd !== undefined ? { cwd: options.cwd } : {}),
|
|
261
|
+
...(options.env !== undefined ? { env: options.env } : {}),
|
|
262
|
+
}));
|
|
263
|
+
const command = (factories.daemonLaunchCommand ?? process.env.GOODVIBES_DAEMON_BINARY ?? 'goodvibes-daemon').trim()
|
|
264
|
+
|| 'goodvibes-daemon';
|
|
265
|
+
const daemonHomeDir = factories.daemonHomeDir ?? os.homedir();
|
|
266
|
+
const runtimeDir = factories.daemonRuntimeDir ?? join(daemonHomeDir, '.goodvibes', 'daemon');
|
|
267
|
+
const logFilePath = join(runtimeDir, 'detached-daemon.log');
|
|
268
|
+
const args = [
|
|
269
|
+
'--daemon-home', daemonHomeDir,
|
|
270
|
+
'--hostname', daemonHost,
|
|
271
|
+
'--port', String(daemonPort),
|
|
272
|
+
...(factories.daemonLaunchArgs ?? []),
|
|
273
|
+
];
|
|
274
|
+
let stdio = 'ignore';
|
|
275
|
+
let closeStdio = null;
|
|
276
|
+
try {
|
|
277
|
+
mkdirSync(runtimeDir, { recursive: true });
|
|
278
|
+
const out = openSync(logFilePath, 'a');
|
|
279
|
+
const err = openSync(logFilePath, 'a');
|
|
280
|
+
stdio = ['ignore', out, err];
|
|
281
|
+
closeStdio = () => {
|
|
282
|
+
try {
|
|
283
|
+
closeSync(out);
|
|
284
|
+
}
|
|
285
|
+
catch { /* already closed */ }
|
|
286
|
+
try {
|
|
287
|
+
closeSync(err);
|
|
288
|
+
}
|
|
289
|
+
catch { /* already closed */ }
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
catch {
|
|
293
|
+
stdio = 'ignore';
|
|
294
|
+
}
|
|
295
|
+
let child;
|
|
296
|
+
try {
|
|
297
|
+
child = spawnDetached(command, args, {
|
|
298
|
+
detached: true,
|
|
299
|
+
stdio,
|
|
300
|
+
cwd: daemonHomeDir,
|
|
301
|
+
env: { ...process.env, GOODVIBES_DAEMON_HOME: daemonHomeDir },
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
catch (error) {
|
|
305
|
+
return { reason: `Detached daemon spawn failed to launch: ${summarizeError(error)}` };
|
|
306
|
+
}
|
|
307
|
+
finally {
|
|
308
|
+
// The child has inherited the fds; the parent's copies can be closed now.
|
|
309
|
+
closeStdio?.();
|
|
310
|
+
}
|
|
311
|
+
child.unref();
|
|
312
|
+
let processError = null;
|
|
313
|
+
child.once?.('error', (err) => { processError = summarizeError(err); });
|
|
314
|
+
recordDetachedDaemonRuntime(runtimeDir, {
|
|
315
|
+
pid: child.pid,
|
|
316
|
+
host: daemonHost,
|
|
317
|
+
port: daemonPort,
|
|
318
|
+
command,
|
|
319
|
+
startedAt: new Date().toISOString(),
|
|
320
|
+
logFilePath,
|
|
321
|
+
});
|
|
322
|
+
const timeoutMs = factories.detachedSpawnProbeTimeoutMs ?? 5000;
|
|
323
|
+
const intervalMs = factories.detachedSpawnProbeIntervalMs ?? 150;
|
|
324
|
+
const sleep = factories.sleep ?? ((ms) => new Promise((resolve) => {
|
|
325
|
+
const timer = setTimeout(resolve, ms);
|
|
326
|
+
timer.unref?.();
|
|
327
|
+
}));
|
|
328
|
+
const deadline = Date.now() + timeoutMs;
|
|
329
|
+
let lastReason = 'Detached daemon did not become reachable before timeout';
|
|
330
|
+
// Probe at least once, then poll until the deadline.
|
|
331
|
+
for (;;) {
|
|
332
|
+
if (processError)
|
|
333
|
+
return { reason: `Detached daemon process error: ${processError}` };
|
|
334
|
+
const identity = await probeDaemonIdentity(daemonHost, daemonPort, factories.sharedDaemonToken);
|
|
335
|
+
if (identity.kind === 'goodvibes') {
|
|
336
|
+
const verified = resolveVerifiedDaemonStatus(identity, 'Spawned detached daemon for this session');
|
|
337
|
+
if (verified.mode === 'external') {
|
|
338
|
+
return { status: verified, hint: DETACHED_DAEMON_INSTALL_HINT };
|
|
339
|
+
}
|
|
340
|
+
// Incompatible: do not keep a competing daemon around; report honestly.
|
|
341
|
+
return { reason: verified.reason ?? 'Spawned daemon reported an incompatible version' };
|
|
342
|
+
}
|
|
343
|
+
lastReason = identity.reason ?? lastReason;
|
|
344
|
+
if (Date.now() >= deadline)
|
|
345
|
+
return { reason: lastReason };
|
|
346
|
+
await sleep(intervalMs);
|
|
347
|
+
}
|
|
348
|
+
};
|
|
204
349
|
let embeddedDaemonServer = null;
|
|
205
350
|
let embeddedHttpListener = null;
|
|
206
|
-
let
|
|
351
|
+
let daemonStartHint;
|
|
352
|
+
let daemonStatus = createServiceStatus('disabled', daemonHost, daemonPort, { reason: 'daemon.enabled is false' });
|
|
207
353
|
let httpListenerStatus = createServiceStatus('disabled', httpListenerHost, httpListenerPort, {
|
|
208
354
|
reason: 'danger.httpListener is disabled',
|
|
209
355
|
});
|
|
210
|
-
if (
|
|
356
|
+
if (resolveDaemonEnabled(config)) {
|
|
211
357
|
if (await probeDaemonPortInUse(daemonHost, daemonPort)) {
|
|
212
358
|
const identity = await probeDaemonIdentity(daemonHost, daemonPort, factories.sharedDaemonToken);
|
|
213
359
|
if (identity.kind === 'goodvibes') {
|
|
214
|
-
daemonStatus =
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
port: daemonPort,
|
|
223
|
-
version: identity.version,
|
|
224
|
-
});
|
|
360
|
+
daemonStatus = resolveVerifiedDaemonStatus(identity, 'Existing GoodVibes daemon verified on configured host/port');
|
|
361
|
+
if (daemonStatus.mode === 'external') {
|
|
362
|
+
logger.info('Existing GoodVibes daemon detected; continuing without embedded daemon in this host instance', {
|
|
363
|
+
host: daemonHost,
|
|
364
|
+
port: daemonPort,
|
|
365
|
+
version: identity.version,
|
|
366
|
+
});
|
|
367
|
+
}
|
|
225
368
|
}
|
|
226
369
|
else {
|
|
227
370
|
daemonStatus = createServiceStatus('blocked', daemonHost, daemonPort, {
|
|
@@ -236,45 +379,68 @@ export async function startHostServices(config, runtimeBus, hookDispatcher, runt
|
|
|
236
379
|
}
|
|
237
380
|
}
|
|
238
381
|
else {
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
const
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
382
|
+
// Port is free. Owner ruling (D7a): the daemon is a SYSTEM SERVICE, so
|
|
383
|
+
// starting a surface must NOT couple the daemon's lifetime to this process.
|
|
384
|
+
// DEFAULT (Layer 2): spawn the daemon as a detached standalone process and
|
|
385
|
+
// adopt it as 'external'. In-process embedding is an explicit opt-in
|
|
386
|
+
// (Layer 3: daemon.embedInProcess).
|
|
387
|
+
const startEmbeddedDaemon = async () => {
|
|
388
|
+
const pendingDaemonServer = factories.createDaemonServer
|
|
389
|
+
? factories.createDaemonServer(runtimeBus, sharedUserAuth, runtimeServices)
|
|
390
|
+
: await createDefaultDaemonServer(runtimeBus, sharedUserAuth, runtimeServices);
|
|
391
|
+
const service = pendingDaemonServer;
|
|
392
|
+
service.enable({ daemon: true }, factories.sharedDaemonToken);
|
|
393
|
+
return startGuardedService({
|
|
394
|
+
label: 'Daemon server',
|
|
395
|
+
service,
|
|
396
|
+
timeoutMs: startupTimeoutMs,
|
|
397
|
+
timedOutStatus: () => createServiceStatus('unavailable', daemonHost, daemonPort, {
|
|
398
|
+
reason: 'Daemon server startup timed out',
|
|
399
|
+
}),
|
|
400
|
+
startedStatus: () => createServiceStatus('embedded', daemonHost, daemonPort, {
|
|
401
|
+
reason: 'Embedded daemon started in this host instance (daemon.embedInProcess opt-in)',
|
|
402
|
+
}),
|
|
403
|
+
bindConflictStatus: async (message) => {
|
|
404
|
+
const identity = await probeDaemonIdentity(daemonHost, daemonPort, factories.sharedDaemonToken);
|
|
405
|
+
if (identity.kind === 'goodvibes') {
|
|
406
|
+
const verified = resolveVerifiedDaemonStatus(identity, 'Existing GoodVibes daemon verified after bind conflict');
|
|
407
|
+
if (verified.mode === 'external') {
|
|
408
|
+
logger.info('Existing GoodVibes daemon detected after bind conflict; continuing without embedded daemon in this host instance', { host: daemonHost, port: daemonPort, version: identity.version });
|
|
409
|
+
}
|
|
410
|
+
return verified;
|
|
411
|
+
}
|
|
412
|
+
logger.warn('Daemon server port already in use; continuing without local daemon in this host instance', { error: message });
|
|
413
|
+
return createServiceStatus('blocked', daemonHost, daemonPort, {
|
|
414
|
+
authenticated: identity.kind !== 'unauthorized' ? undefined : false,
|
|
415
|
+
reason: identity.reason ?? message,
|
|
267
416
|
});
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
417
|
+
},
|
|
418
|
+
});
|
|
419
|
+
};
|
|
420
|
+
if (readDaemonEmbedInProcess(config)) {
|
|
421
|
+
logger.warn('daemon.embedInProcess is enabled: hosting the daemon in-process couples its lifetime to this surface (single point of failure)');
|
|
422
|
+
const started = await startEmbeddedDaemon();
|
|
423
|
+
embeddedDaemonServer = started.service;
|
|
424
|
+
daemonStatus = started.status;
|
|
425
|
+
}
|
|
426
|
+
else {
|
|
427
|
+
const detached = await attemptDetachedDaemonSpawn();
|
|
428
|
+
if ('status' in detached) {
|
|
429
|
+
daemonStatus = detached.status;
|
|
430
|
+
daemonStartHint = detached.hint;
|
|
431
|
+
logger.info('Spawned detached GoodVibes daemon for this session', {
|
|
432
|
+
host: daemonHost,
|
|
433
|
+
port: daemonPort,
|
|
434
|
+
version: detached.status.version,
|
|
273
435
|
});
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
436
|
+
}
|
|
437
|
+
else {
|
|
438
|
+
logger.warn('Detached daemon spawn did not become reachable; falling back to in-process embedded daemon for this session', { reason: detached.reason });
|
|
439
|
+
const started = await startEmbeddedDaemon();
|
|
440
|
+
embeddedDaemonServer = started.service;
|
|
441
|
+
daemonStatus = started.status;
|
|
442
|
+
}
|
|
443
|
+
}
|
|
278
444
|
}
|
|
279
445
|
}
|
|
280
446
|
if (readBooleanSetting(config, 'danger.httpListener')) {
|
|
@@ -317,6 +483,7 @@ export async function startHostServices(config, runtimeBus, hookDispatcher, runt
|
|
|
317
483
|
httpListener: embeddedHttpListener,
|
|
318
484
|
daemonStatus,
|
|
319
485
|
httpListenerStatus,
|
|
486
|
+
...(daemonStartHint !== undefined ? { daemonStartHint } : {}),
|
|
320
487
|
listRecentControlPlaneEvents(limit) {
|
|
321
488
|
return embeddedDaemonServer?.listRecentControlPlaneEvents(limit) ?? [];
|
|
322
489
|
},
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* daemon-version-compat.ts
|
|
3
|
+
*
|
|
4
|
+
* The adopt-or-start path (bootstrap-services.ts) verifies that a daemon found
|
|
5
|
+
* on the configured port is a GoodVibes daemon via its `/status` identity probe,
|
|
6
|
+
* which reports the daemon's SDK `version`. Verifying identity is NOT the same as
|
|
7
|
+
* verifying that the daemon speaks the SAME wire shape this surface expects:
|
|
8
|
+
* adopting a daemon built from an incompatible SDK band produces silent
|
|
9
|
+
* wire-shape failures (a session method the surface calls that the daemon does
|
|
10
|
+
* not serve, a payload field that moved). This module answers the one question
|
|
11
|
+
* the probe leaves open — "may this surface safely adopt a daemon reporting
|
|
12
|
+
* version X?" — so the adopt path can refuse an incompatible occupant honestly
|
|
13
|
+
* instead of adopting it and failing later, and without ever starting a second
|
|
14
|
+
* competing daemon on an occupied port.
|
|
15
|
+
*
|
|
16
|
+
* Compatibility band policy (semver, https://semver.org/#spec-item-4):
|
|
17
|
+
* - `0.y.z` releases treat the MINOR position as the breaking axis, so two
|
|
18
|
+
* `0.y` versions are compatible only when `y` matches (0.38.x adopts 0.38.*
|
|
19
|
+
* but not 0.37.*).
|
|
20
|
+
* - `>=1.0.0` releases treat MAJOR as the breaking axis, so major must match
|
|
21
|
+
* (1.4.x adopts any 1.*.* but not 2.*.*).
|
|
22
|
+
* - A version string that cannot be parsed is treated as INCOMPATIBLE — the
|
|
23
|
+
* conservative, honest default. An empty/absent remote version is likewise
|
|
24
|
+
* incompatible: the surface must not adopt something it cannot band-check.
|
|
25
|
+
* Prerelease and build metadata (`-rc.1`, `+sha`) are ignored for banding.
|
|
26
|
+
*/
|
|
27
|
+
/**
|
|
28
|
+
* True when a surface reporting `localVersion` may safely adopt a daemon
|
|
29
|
+
* reporting `remoteVersion` — see the band policy in the file header.
|
|
30
|
+
* Unparseable or absent versions are never compatible.
|
|
31
|
+
*/
|
|
32
|
+
export declare function isDaemonVersionCompatible(localVersion: string | undefined | null, remoteVersion: string | undefined | null): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Human-readable reason string for an incompatible adoption refusal, naming
|
|
35
|
+
* both the occupied endpoint's version and this surface's version so the
|
|
36
|
+
* operator can see the skew without guessing.
|
|
37
|
+
*/
|
|
38
|
+
export declare function describeVersionIncompatibility(host: string, port: number, localVersion: string | undefined | null, remoteVersion: string | undefined | null): string;
|
|
39
|
+
//# sourceMappingURL=daemon-version-compat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon-version-compat.d.ts","sourceRoot":"","sources":["../../../src/platform/runtime/daemon-version-compat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AA0BH;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EACvC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GACvC,OAAO,CAQT;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EACvC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GACvC,MAAM,CAIR"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* daemon-version-compat.ts
|
|
3
|
+
*
|
|
4
|
+
* The adopt-or-start path (bootstrap-services.ts) verifies that a daemon found
|
|
5
|
+
* on the configured port is a GoodVibes daemon via its `/status` identity probe,
|
|
6
|
+
* which reports the daemon's SDK `version`. Verifying identity is NOT the same as
|
|
7
|
+
* verifying that the daemon speaks the SAME wire shape this surface expects:
|
|
8
|
+
* adopting a daemon built from an incompatible SDK band produces silent
|
|
9
|
+
* wire-shape failures (a session method the surface calls that the daemon does
|
|
10
|
+
* not serve, a payload field that moved). This module answers the one question
|
|
11
|
+
* the probe leaves open — "may this surface safely adopt a daemon reporting
|
|
12
|
+
* version X?" — so the adopt path can refuse an incompatible occupant honestly
|
|
13
|
+
* instead of adopting it and failing later, and without ever starting a second
|
|
14
|
+
* competing daemon on an occupied port.
|
|
15
|
+
*
|
|
16
|
+
* Compatibility band policy (semver, https://semver.org/#spec-item-4):
|
|
17
|
+
* - `0.y.z` releases treat the MINOR position as the breaking axis, so two
|
|
18
|
+
* `0.y` versions are compatible only when `y` matches (0.38.x adopts 0.38.*
|
|
19
|
+
* but not 0.37.*).
|
|
20
|
+
* - `>=1.0.0` releases treat MAJOR as the breaking axis, so major must match
|
|
21
|
+
* (1.4.x adopts any 1.*.* but not 2.*.*).
|
|
22
|
+
* - A version string that cannot be parsed is treated as INCOMPATIBLE — the
|
|
23
|
+
* conservative, honest default. An empty/absent remote version is likewise
|
|
24
|
+
* incompatible: the surface must not adopt something it cannot band-check.
|
|
25
|
+
* Prerelease and build metadata (`-rc.1`, `+sha`) are ignored for banding.
|
|
26
|
+
*/
|
|
27
|
+
/**
|
|
28
|
+
* Parse the leading `major.minor` of a semver string, ignoring patch,
|
|
29
|
+
* prerelease, and build metadata. Returns null when the leading two numeric
|
|
30
|
+
* positions cannot be read.
|
|
31
|
+
*/
|
|
32
|
+
function parseVersionBand(version) {
|
|
33
|
+
if (typeof version !== 'string')
|
|
34
|
+
return null;
|
|
35
|
+
const trimmed = version.trim();
|
|
36
|
+
if (!trimmed)
|
|
37
|
+
return null;
|
|
38
|
+
// Strip a leading `v`, then take the core before any `-` (prerelease) or `+` (build).
|
|
39
|
+
const core = trimmed.replace(/^v/i, '').split(/[-+]/, 1)[0] ?? '';
|
|
40
|
+
const parts = core.split('.');
|
|
41
|
+
if (parts.length < 2)
|
|
42
|
+
return null;
|
|
43
|
+
const major = Number(parts[0]);
|
|
44
|
+
const minor = Number(parts[1]);
|
|
45
|
+
if (!Number.isInteger(major) || !Number.isInteger(minor) || major < 0 || minor < 0)
|
|
46
|
+
return null;
|
|
47
|
+
return { major, minor };
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* True when a surface reporting `localVersion` may safely adopt a daemon
|
|
51
|
+
* reporting `remoteVersion` — see the band policy in the file header.
|
|
52
|
+
* Unparseable or absent versions are never compatible.
|
|
53
|
+
*/
|
|
54
|
+
export function isDaemonVersionCompatible(localVersion, remoteVersion) {
|
|
55
|
+
const local = parseVersionBand(localVersion);
|
|
56
|
+
const remote = parseVersionBand(remoteVersion);
|
|
57
|
+
if (local === null || remote === null)
|
|
58
|
+
return false;
|
|
59
|
+
if (local.major !== remote.major)
|
|
60
|
+
return false;
|
|
61
|
+
// For the 0.y band the minor position is the breaking axis; for >=1 it is not.
|
|
62
|
+
if (local.major === 0)
|
|
63
|
+
return local.minor === remote.minor;
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Human-readable reason string for an incompatible adoption refusal, naming
|
|
68
|
+
* both the occupied endpoint's version and this surface's version so the
|
|
69
|
+
* operator can see the skew without guessing.
|
|
70
|
+
*/
|
|
71
|
+
export function describeVersionIncompatibility(host, port, localVersion, remoteVersion) {
|
|
72
|
+
const found = (typeof remoteVersion === 'string' && remoteVersion.trim()) ? remoteVersion.trim() : 'unknown';
|
|
73
|
+
const mine = (typeof localVersion === 'string' && localVersion.trim()) ? localVersion.trim() : 'unknown';
|
|
74
|
+
return `A GoodVibes daemon (version ${found}) is running on ${host}:${port}, but this surface (version ${mine}) speaks an incompatible wire version — not adopting, and not starting a second daemon on the occupied port.`;
|
|
75
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* D7a Layer 2 — pid/port discovery for the detached daemon.
|
|
3
|
+
*
|
|
4
|
+
* When a surface spawns the daemon as a detached, standalone process, it records
|
|
5
|
+
* the pid/host/port to a small JSON file under the daemon home so a later surface
|
|
6
|
+
* (or a `GET /api/service/status` call against the daemon HTTP API) can discover and adopt it without a fresh
|
|
7
|
+
* spawn. This is deliberately a plain record — not a lock — since the daemon's own
|
|
8
|
+
* identity probe is the source of truth for "is it actually alive and mine".
|
|
9
|
+
*/
|
|
10
|
+
/** File name of the detached-daemon runtime record within the daemon home dir. */
|
|
11
|
+
export declare const DETACHED_DAEMON_RUNTIME_FILE = "detached-daemon.json";
|
|
12
|
+
export interface DetachedDaemonRuntimeRecord {
|
|
13
|
+
readonly pid: number | undefined;
|
|
14
|
+
readonly host: string;
|
|
15
|
+
readonly port: number;
|
|
16
|
+
readonly command: string;
|
|
17
|
+
readonly startedAt: string;
|
|
18
|
+
readonly logFilePath?: string | undefined;
|
|
19
|
+
}
|
|
20
|
+
/** Absolute path of the runtime record file for a given daemon runtime dir. */
|
|
21
|
+
export declare function detachedDaemonRuntimePath(runtimeDir: string): string;
|
|
22
|
+
/** Write (or overwrite) the detached-daemon runtime record. Best-effort; never throws. */
|
|
23
|
+
export declare function recordDetachedDaemonRuntime(runtimeDir: string, record: DetachedDaemonRuntimeRecord): string | null;
|
|
24
|
+
/** Read the detached-daemon runtime record, or null if missing/unparseable. */
|
|
25
|
+
export declare function readDetachedDaemonRuntime(runtimeDir: string): DetachedDaemonRuntimeRecord | null;
|
|
26
|
+
//# sourceMappingURL=detached-daemon-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detached-daemon-runtime.d.ts","sourceRoot":"","sources":["../../../src/platform/runtime/detached-daemon-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,kFAAkF;AAClF,eAAO,MAAM,4BAA4B,yBAAyB,CAAC;AAEnE,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3C;AAED,+EAA+E;AAC/E,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,0FAA0F;AAC1F,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,2BAA2B,GAClC,MAAM,GAAG,IAAI,CASf;AAED,+EAA+E;AAC/E,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,2BAA2B,GAAG,IAAI,CAgBhG"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* D7a Layer 2 — pid/port discovery for the detached daemon.
|
|
3
|
+
*
|
|
4
|
+
* When a surface spawns the daemon as a detached, standalone process, it records
|
|
5
|
+
* the pid/host/port to a small JSON file under the daemon home so a later surface
|
|
6
|
+
* (or a `GET /api/service/status` call against the daemon HTTP API) can discover and adopt it without a fresh
|
|
7
|
+
* spawn. This is deliberately a plain record — not a lock — since the daemon's own
|
|
8
|
+
* identity probe is the source of truth for "is it actually alive and mine".
|
|
9
|
+
*/
|
|
10
|
+
import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
11
|
+
import { dirname, join } from 'node:path';
|
|
12
|
+
/** File name of the detached-daemon runtime record within the daemon home dir. */
|
|
13
|
+
export const DETACHED_DAEMON_RUNTIME_FILE = 'detached-daemon.json';
|
|
14
|
+
/** Absolute path of the runtime record file for a given daemon runtime dir. */
|
|
15
|
+
export function detachedDaemonRuntimePath(runtimeDir) {
|
|
16
|
+
return join(runtimeDir, DETACHED_DAEMON_RUNTIME_FILE);
|
|
17
|
+
}
|
|
18
|
+
/** Write (or overwrite) the detached-daemon runtime record. Best-effort; never throws. */
|
|
19
|
+
export function recordDetachedDaemonRuntime(runtimeDir, record) {
|
|
20
|
+
const path = detachedDaemonRuntimePath(runtimeDir);
|
|
21
|
+
try {
|
|
22
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
23
|
+
writeFileSync(path, `${JSON.stringify(record, null, 2)}\n`, 'utf-8');
|
|
24
|
+
return path;
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/** Read the detached-daemon runtime record, or null if missing/unparseable. */
|
|
31
|
+
export function readDetachedDaemonRuntime(runtimeDir) {
|
|
32
|
+
try {
|
|
33
|
+
const raw = readFileSync(detachedDaemonRuntimePath(runtimeDir), 'utf-8');
|
|
34
|
+
const parsed = JSON.parse(raw);
|
|
35
|
+
if (typeof parsed.port !== 'number' || typeof parsed.host !== 'string')
|
|
36
|
+
return null;
|
|
37
|
+
return {
|
|
38
|
+
pid: typeof parsed.pid === 'number' ? parsed.pid : undefined,
|
|
39
|
+
host: parsed.host,
|
|
40
|
+
port: parsed.port,
|
|
41
|
+
command: typeof parsed.command === 'string' ? parsed.command : '',
|
|
42
|
+
startedAt: typeof parsed.startedAt === 'string' ? parsed.startedAt : '',
|
|
43
|
+
logFilePath: typeof parsed.logFilePath === 'string' ? parsed.logFilePath : undefined,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -17,6 +17,17 @@ export declare function emitCommunicationSent(bus: RuntimeEventBus, ctx: Emitter
|
|
|
17
17
|
parentAgentId?: string | undefined;
|
|
18
18
|
}): void;
|
|
19
19
|
export declare function emitCommunicationDelivered(bus: RuntimeEventBus, ctx: EmitterContext, data: BaseCommunication): void;
|
|
20
|
+
/**
|
|
21
|
+
* The honest "consumed at boundary" signal — emitted once, at the drain
|
|
22
|
+
* site (orchestrator-runner.ts), the turn a queued message is actually
|
|
23
|
+
* injected into the target agent's conversation. Never repurpose
|
|
24
|
+
* `emitCommunicationDelivered` for this: it fires eagerly at send() time.
|
|
25
|
+
*/
|
|
26
|
+
export declare function emitCommunicationConsumed(bus: RuntimeEventBus, ctx: EmitterContext, data: {
|
|
27
|
+
messageId: string;
|
|
28
|
+
agentId: string;
|
|
29
|
+
turn: number;
|
|
30
|
+
}): void;
|
|
20
31
|
export declare function emitCommunicationBlocked(bus: RuntimeEventBus, ctx: EmitterContext, data: BaseCommunication & {
|
|
21
32
|
reason: string;
|
|
22
33
|
fromRole?: string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"communication.d.ts","sourceRoot":"","sources":["../../../../src/platform/runtime/emitters/communication.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAE9F,KAAK,iBAAiB,GAAG;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,kBAAkB,CAAC;IAC1B,IAAI,EAAE,iBAAiB,CAAC;CACzB,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,iBAAiB,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC,GACA,IAAI,CAEN;AAED,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,iBAAiB,GACtB,IAAI,CAEN;AAED,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,iBAAiB,GAAG;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC,GACA,IAAI,CAEN"}
|
|
1
|
+
{"version":3,"file":"communication.d.ts","sourceRoot":"","sources":["../../../../src/platform/runtime/emitters/communication.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAE9F,KAAK,iBAAiB,GAAG;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,kBAAkB,CAAC;IAC1B,IAAI,EAAE,iBAAiB,CAAC;CACzB,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,iBAAiB,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC,GACA,IAAI,CAEN;AAED,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,iBAAiB,GACtB,IAAI,CAEN;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzD,IAAI,CAEN;AAED,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,iBAAiB,GAAG;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC,GACA,IAAI,CAEN"}
|
|
@@ -8,6 +8,15 @@ export function emitCommunicationSent(bus, ctx, data) {
|
|
|
8
8
|
export function emitCommunicationDelivered(bus, ctx, data) {
|
|
9
9
|
bus.emit('communication', createEventEnvelope('COMMUNICATION_DELIVERED', { type: 'COMMUNICATION_DELIVERED', ...data }, ctx));
|
|
10
10
|
}
|
|
11
|
+
/**
|
|
12
|
+
* The honest "consumed at boundary" signal — emitted once, at the drain
|
|
13
|
+
* site (orchestrator-runner.ts), the turn a queued message is actually
|
|
14
|
+
* injected into the target agent's conversation. Never repurpose
|
|
15
|
+
* `emitCommunicationDelivered` for this: it fires eagerly at send() time.
|
|
16
|
+
*/
|
|
17
|
+
export function emitCommunicationConsumed(bus, ctx, data) {
|
|
18
|
+
bus.emit('communication', createEventEnvelope('COMMUNICATION_CONSUMED', { type: 'COMMUNICATION_CONSUMED', ...data }, ctx));
|
|
19
|
+
}
|
|
11
20
|
export function emitCommunicationBlocked(bus, ctx, data) {
|
|
12
21
|
bus.emit('communication', createEventEnvelope('COMMUNICATION_BLOCKED', { type: 'COMMUNICATION_BLOCKED', ...data }, ctx));
|
|
13
22
|
}
|
|
@@ -36,7 +36,7 @@ export declare function emitWorkflowChainPassed(bus: RuntimeEventBus, ctx: Emitt
|
|
|
36
36
|
export declare function emitWorkflowChainFailed(bus: RuntimeEventBus, ctx: EmitterContext, data: {
|
|
37
37
|
chainId: string;
|
|
38
38
|
reason: string;
|
|
39
|
-
failureKind?: 'transport' | 'other' | undefined;
|
|
39
|
+
failureKind?: 'transport' | 'other' | 'cancelled' | undefined;
|
|
40
40
|
}): void;
|
|
41
41
|
export declare function emitWorkflowAutoCommitted(bus: RuntimeEventBus, ctx: EmitterContext, data: {
|
|
42
42
|
chainId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../../../src/platform/runtime/emitters/workflows.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACtC,IAAI,CAEN;AAED,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,SAAS,CAAC;IAAC,EAAE,EAAE,SAAS,CAAA;CAAE,GACxD,IAAI,CAEN;AAED,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE;IACJ,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,oBAAoB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,wBAAwB,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CACjD,GACA,IAAI,CAEN;AAED,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAC9F,IAAI,CAEN;AAED,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GACvD,IAAI,CAEN;AAED,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GACxB,IAAI,CAEN;AAED,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,GAAG,SAAS,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../../../src/platform/runtime/emitters/workflows.ts"],"names":[],"mappings":"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"}
|
|
@@ -69,6 +69,19 @@ export interface RuntimeEventBusOptions {
|
|
|
69
69
|
* sessionId, timestamps, and source context.
|
|
70
70
|
*
|
|
71
71
|
* This is the authoritative event transport for runtime domain signaling.
|
|
72
|
+
*
|
|
73
|
+
* DISPATCH ORDERING GUARANTEE (contract — pinned by
|
|
74
|
+
* test/runtime-event-bus-dispatch-contract.test.ts): {@link emit} NEVER invokes
|
|
75
|
+
* a subscriber synchronously. Each matching handler is deferred to its own
|
|
76
|
+
* `queueMicrotask`, so emit() always returns to its caller — and the caller's
|
|
77
|
+
* remaining synchronous statements run — BEFORE any listener fires. A component
|
|
78
|
+
* may therefore emit an event from the MIDDLE of a state mutation without risk
|
|
79
|
+
* that a subscriber observes the half-applied state: by the time a listener
|
|
80
|
+
* runs, the mutating call has already completed and the state has settled. This
|
|
81
|
+
* asynchronous-dispatch ordering is load-bearing for event-ordering safety
|
|
82
|
+
* across the runtime (e.g. the orchestration zombie-reap path relies on
|
|
83
|
+
* listeners never seeing a mutation mid-flight) — do NOT replace queueMicrotask
|
|
84
|
+
* with synchronous invocation.
|
|
72
85
|
*/
|
|
73
86
|
export declare class RuntimeEventBus {
|
|
74
87
|
/** Per-event-type listener sets. Keyed by the exact event type string. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/platform/runtime/events/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/platform/runtime/events/index.ts"],"names":[],"mappings":"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"}
|