@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
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* routes/register-gateway-verb-groups.ts
|
|
3
|
+
*
|
|
4
|
+
* One entry point the runtime-services composition root calls to attach every
|
|
5
|
+
* handler-registered gateway verb group, so services.ts needs a single import
|
|
6
|
+
* and a single call regardless of how many groups exist.
|
|
7
|
+
*
|
|
8
|
+
* It folds in the pre-existing fleet / checkpoints / sessions.search group
|
|
9
|
+
* (registerW3S2GatewayMethods, unchanged) and constructs + wires the browser-
|
|
10
|
+
* push group: a PushService over the subscription store and VAPID key custody,
|
|
11
|
+
* its verb handlers, and — the real event source — a subscription to the
|
|
12
|
+
* approval broker so an approval that needs a decision fans out as a push to the
|
|
13
|
+
* operator's registered devices.
|
|
14
|
+
*/
|
|
15
|
+
import type { GatewayMethodCatalog } from '../method-catalog.js';
|
|
16
|
+
import { type W3S2GatewayDeps } from './register-w3-s2.js';
|
|
17
|
+
import { type ApprovalSource, type VapidSecretStore } from '../../push/index.js';
|
|
18
|
+
export interface GatewayVerbGroupDeps extends W3S2GatewayDeps {
|
|
19
|
+
/** SecretsManager (get/set) — VAPID keypair custody lives here, never in config. */
|
|
20
|
+
readonly secretsManager: VapidSecretStore;
|
|
21
|
+
/** The approval broker — the real event source push fans out from. */
|
|
22
|
+
readonly approvalBroker: ApprovalSource;
|
|
23
|
+
/** Home-scoped path service; the subscription store file resolves under it. */
|
|
24
|
+
readonly shellPaths: {
|
|
25
|
+
resolveUserPath(...segments: string[]): string;
|
|
26
|
+
};
|
|
27
|
+
/** Optional VAPID JWT `sub` contact. */
|
|
28
|
+
readonly vapidSubject?: string | undefined;
|
|
29
|
+
}
|
|
30
|
+
export declare function registerGatewayVerbGroups(catalog: GatewayMethodCatalog, deps: GatewayVerbGroupDeps): void;
|
|
31
|
+
//# sourceMappingURL=register-gateway-verb-groups.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-gateway-verb-groups.d.ts","sourceRoot":"","sources":["../../../../src/platform/control-plane/routes/register-gateway-verb-groups.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAA8B,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEvF,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IAC3D,oFAAoF;IACpF,QAAQ,CAAC,cAAc,EAAE,gBAAgB,CAAC;IAC1C,sEAAsE;IACtE,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,+EAA+E;IAC/E,QAAQ,CAAC,UAAU,EAAE;QAAE,eAAe,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;KAAE,CAAC;IACxE,wCAAwC;IACxC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5C;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,oBAAoB,EAAE,IAAI,EAAE,oBAAoB,GAAG,IAAI,CAezG"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { registerW3S2GatewayMethods } from './register-w3-s2.js';
|
|
2
|
+
import { registerPushGatewayMethods } from './push.js';
|
|
3
|
+
import { PushService, PushSubscriptionStore, VapidManager, } from '../../push/index.js';
|
|
4
|
+
export function registerGatewayVerbGroups(catalog, deps) {
|
|
5
|
+
registerW3S2GatewayMethods(catalog, deps);
|
|
6
|
+
const pushService = new PushService({
|
|
7
|
+
vapid: new VapidManager(deps.secretsManager, { subject: deps.vapidSubject }),
|
|
8
|
+
store: new PushSubscriptionStore(deps.shellPaths.resolveUserPath('control-plane', 'push-subscriptions.json')),
|
|
9
|
+
});
|
|
10
|
+
registerPushGatewayMethods(catalog, pushService);
|
|
11
|
+
// Real event source: approvals-needed -> push to every registered device.
|
|
12
|
+
// The unsubscribe handle is intentionally not retained — the subscription
|
|
13
|
+
// lives for the daemon's lifetime, exactly like the fleet/checkpoint verb
|
|
14
|
+
// registrations above (there is no RuntimeServices-wide shutdown seam yet).
|
|
15
|
+
pushService.attachApprovalSource(deps.approvalBroker);
|
|
16
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* routes/register-w3-s2.ts
|
|
3
|
+
*
|
|
4
|
+
* Single composite entry point for the fleet.*, checkpoints.*, sessions.search
|
|
5
|
+
* verb-registration calls (see CHANGELOG 1.0.0), so ../../runtime/services.ts —
|
|
6
|
+
* already at its line-cap ceiling — only needs one import and one call
|
|
7
|
+
* instead of three of each. See routes/fleet.ts, routes/checkpoints.ts, and
|
|
8
|
+
* routes/session-search.ts for what each registration actually does and why
|
|
9
|
+
* it's a catalog.register(descriptor, handler) call rather than a daemon-sdk
|
|
10
|
+
* REST route or a router.ts change.
|
|
11
|
+
*
|
|
12
|
+
* Call once, at RuntimeServices construction time, after processRegistry,
|
|
13
|
+
* workspaceCheckpointManager, and sessionBroker all exist (processRegistry
|
|
14
|
+
* is constructed last of the three, so the call site is right after it).
|
|
15
|
+
*/
|
|
16
|
+
import type { GatewayMethodCatalog } from '../method-catalog.js';
|
|
17
|
+
import { type FleetQueryOnlyRegistry } from './fleet.js';
|
|
18
|
+
import { type CheckpointsGatewayManager } from './checkpoints.js';
|
|
19
|
+
import { type SessionSearchBroker } from './session-search.js';
|
|
20
|
+
export interface W3S2GatewayDeps {
|
|
21
|
+
readonly processRegistry: FleetQueryOnlyRegistry;
|
|
22
|
+
readonly workspaceCheckpointManager: CheckpointsGatewayManager;
|
|
23
|
+
readonly sessionBroker: SessionSearchBroker;
|
|
24
|
+
}
|
|
25
|
+
export declare function registerW3S2GatewayMethods(catalog: GatewayMethodCatalog, deps: W3S2GatewayDeps): void;
|
|
26
|
+
//# sourceMappingURL=register-w3-s2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-w3-s2.d.ts","sourceRoot":"","sources":["../../../../src/platform/control-plane/routes/register-w3-s2.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAA+B,KAAK,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACtF,OAAO,EAAoC,KAAK,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AACpG,OAAO,EAAsC,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAEnG,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,eAAe,EAAE,sBAAsB,CAAC;IACjD,QAAQ,CAAC,0BAA0B,EAAE,yBAAyB,CAAC;IAC/D,QAAQ,CAAC,aAAa,EAAE,mBAAmB,CAAC;CAC7C;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,oBAAoB,EAAE,IAAI,EAAE,eAAe,GAAG,IAAI,CAIrG"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { registerFleetGatewayMethods } from './fleet.js';
|
|
2
|
+
import { registerCheckpointGatewayMethods } from './checkpoints.js';
|
|
3
|
+
import { registerSessionSearchGatewayMethod } from './session-search.js';
|
|
4
|
+
export function registerW3S2GatewayMethods(catalog, deps) {
|
|
5
|
+
registerFleetGatewayMethods(catalog, deps.processRegistry);
|
|
6
|
+
registerCheckpointGatewayMethods(catalog, deps.workspaceCheckpointManager);
|
|
7
|
+
registerSessionSearchGatewayMethod(catalog, deps.sessionBroker);
|
|
8
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* routes/session-search.ts
|
|
3
|
+
*
|
|
4
|
+
* `sessions.search` (see CHANGELOG 1.0.0): a paginated/filtered query over the
|
|
5
|
+
* ALREADY-daemon-resident `SharedSessionBroker`'s home-scoped store,
|
|
6
|
+
* extending the session-spine list-filter shape (`ListSharedSessionsOptions`:
|
|
7
|
+
* project/kind/includeClosed) with a free-text `query`, `surfaceKind`,
|
|
8
|
+
* `status`, and opaque cursor pagination (mirrors the
|
|
9
|
+
* daemon-sdk `paginateItems` convention already used by
|
|
10
|
+
* automation-jobs/runs and knowledge listings).
|
|
11
|
+
*
|
|
12
|
+
* DELIBERATELY a standalone read-only helper, NOT a `SharedSessionBroker`
|
|
13
|
+
* method: the brief's file_ownership marks session-broker.ts read-only for
|
|
14
|
+
* S2 ("add a search method only if unavoidable — prefer a read-only query
|
|
15
|
+
* helper; coordinate with S3 which also reads the broker"). Everything here
|
|
16
|
+
* is built from the broker's existing public `listSessions()` — no new
|
|
17
|
+
* broker state, no new broker method.
|
|
18
|
+
*
|
|
19
|
+
* Bounded in-memory filter+sort: the store is
|
|
20
|
+
* single-user scale, so a full unbounded scan per call is intentional (no
|
|
21
|
+
* index) — this ceiling is a deliberate, documented decision.
|
|
22
|
+
*/
|
|
23
|
+
import type { GatewayMethodCatalog } from '../method-catalog.js';
|
|
24
|
+
import type { GatewayMethodHandler } from '../method-catalog-shared.js';
|
|
25
|
+
import type { SharedSessionBroker } from '../session-broker.js';
|
|
26
|
+
/** Structural dep — only the read surface `sessions.search` needs. */
|
|
27
|
+
export type SessionSearchBroker = Pick<SharedSessionBroker, 'listSessions'>;
|
|
28
|
+
export declare function createSessionsSearchHandler(broker: SessionSearchBroker): GatewayMethodHandler;
|
|
29
|
+
/**
|
|
30
|
+
* Attach the `sessions.search` handler to the descriptor already registered
|
|
31
|
+
* (without a handler) from ../method-catalog-control-core.ts's static
|
|
32
|
+
* builtin array. Call once, at RuntimeServices construction time. A missing
|
|
33
|
+
* descriptor is a silent no-op — see routes/fleet.ts's
|
|
34
|
+
* `registerFleetGatewayMethods` for the same rationale.
|
|
35
|
+
*/
|
|
36
|
+
export declare function registerSessionSearchGatewayMethod(catalog: GatewayMethodCatalog, broker: SessionSearchBroker): void;
|
|
37
|
+
//# sourceMappingURL=session-search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-search.d.ts","sourceRoot":"","sources":["../../../../src/platform/control-plane/routes/session-search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAkEhE,sEAAsE;AACtE,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;AAE5E,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,mBAAmB,GAAG,oBAAoB,CAuD7F;AAED;;;;;;GAMG;AACH,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAKnH"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { SURFACE_KINDS } from '../../../events/surfaces.js';
|
|
2
|
+
import { paginateItems } from '@pellux/goodvibes-daemon-sdk';
|
|
3
|
+
import { GatewayVerbError } from './gateway-verb-error.js';
|
|
4
|
+
import { readInvocationParams } from './invocation-params.js';
|
|
5
|
+
const SHARED_SESSION_KINDS = [
|
|
6
|
+
'tui',
|
|
7
|
+
'agent',
|
|
8
|
+
'webui',
|
|
9
|
+
'companion-task',
|
|
10
|
+
'companion-chat',
|
|
11
|
+
'automation',
|
|
12
|
+
];
|
|
13
|
+
const SHARED_SESSION_STATUSES = ['active', 'closed'];
|
|
14
|
+
const SESSIONS_SEARCH_DEFAULT_LIMIT = 50;
|
|
15
|
+
const SESSIONS_SEARCH_MAX_LIMIT = 200;
|
|
16
|
+
function optionalString(value) {
|
|
17
|
+
return typeof value === 'string' && value.length > 0 ? value : undefined;
|
|
18
|
+
}
|
|
19
|
+
function validateKind(value) {
|
|
20
|
+
if (value === undefined || value === null)
|
|
21
|
+
return undefined;
|
|
22
|
+
if (typeof value !== 'string' || !SHARED_SESSION_KINDS.includes(value)) {
|
|
23
|
+
throw new GatewayVerbError(`Invalid kind: ${String(value)} (expected one of ${SHARED_SESSION_KINDS.join(', ')})`, 'INVALID_ARGUMENT', 400);
|
|
24
|
+
}
|
|
25
|
+
return value;
|
|
26
|
+
}
|
|
27
|
+
function validateStatus(value) {
|
|
28
|
+
if (value === undefined || value === null)
|
|
29
|
+
return undefined;
|
|
30
|
+
if (typeof value !== 'string' || !SHARED_SESSION_STATUSES.includes(value)) {
|
|
31
|
+
throw new GatewayVerbError(`Invalid status: ${String(value)} (expected one of ${SHARED_SESSION_STATUSES.join(', ')})`, 'INVALID_ARGUMENT', 400);
|
|
32
|
+
}
|
|
33
|
+
return value;
|
|
34
|
+
}
|
|
35
|
+
function validateSurfaceKind(value) {
|
|
36
|
+
if (value === undefined || value === null)
|
|
37
|
+
return undefined;
|
|
38
|
+
if (typeof value !== 'string' || !SURFACE_KINDS.includes(value)) {
|
|
39
|
+
throw new GatewayVerbError(`Invalid surfaceKind: ${String(value)}`, 'INVALID_ARGUMENT', 400);
|
|
40
|
+
}
|
|
41
|
+
return value;
|
|
42
|
+
}
|
|
43
|
+
function clampLimit(raw) {
|
|
44
|
+
if (raw === undefined || raw === null)
|
|
45
|
+
return SESSIONS_SEARCH_DEFAULT_LIMIT;
|
|
46
|
+
const n = typeof raw === 'number' ? raw : Number(raw);
|
|
47
|
+
if (!Number.isFinite(n) || n <= 0) {
|
|
48
|
+
throw new GatewayVerbError(`Invalid limit: ${String(raw)}`, 'INVALID_ARGUMENT', 400);
|
|
49
|
+
}
|
|
50
|
+
return Math.min(Math.floor(n), SESSIONS_SEARCH_MAX_LIMIT);
|
|
51
|
+
}
|
|
52
|
+
export function createSessionsSearchHandler(broker) {
|
|
53
|
+
return (invocation) => {
|
|
54
|
+
const params = readInvocationParams(invocation);
|
|
55
|
+
const textQuery = optionalString(params.query)?.toLowerCase();
|
|
56
|
+
const project = optionalString(params.project);
|
|
57
|
+
const kind = validateKind(params.kind);
|
|
58
|
+
const surfaceKind = validateSurfaceKind(params.surfaceKind);
|
|
59
|
+
const status = validateStatus(params.status);
|
|
60
|
+
const includeClosed = params.includeClosed === true || params.includeClosed === 'true';
|
|
61
|
+
const limit = clampLimit(params.limit);
|
|
62
|
+
const rawCursor = typeof params.cursor === 'string' ? params.cursor : null;
|
|
63
|
+
// Always fetch WITH closed sessions from the broker (its own default),
|
|
64
|
+
// then apply the wire-level closed policy ourselves below: sessions.search
|
|
65
|
+
// deliberately defaults to EXCLUDING closed sessions unless
|
|
66
|
+
// includeClosed:true is explicit — the opposite of
|
|
67
|
+
// SharedSessionBroker.listSessions' own default — because a "search"
|
|
68
|
+
// surface should not surface dead sessions by default.
|
|
69
|
+
const all = broker.listSessions(Number.MAX_SAFE_INTEGER, {
|
|
70
|
+
project,
|
|
71
|
+
kind,
|
|
72
|
+
includeClosed: true,
|
|
73
|
+
});
|
|
74
|
+
const filtered = all.filter((session) => {
|
|
75
|
+
if (!includeClosed && session.status === 'closed')
|
|
76
|
+
return false;
|
|
77
|
+
if (status !== undefined && session.status !== status)
|
|
78
|
+
return false;
|
|
79
|
+
if (surfaceKind !== undefined && !session.surfaceKinds.includes(surfaceKind))
|
|
80
|
+
return false;
|
|
81
|
+
if (textQuery !== undefined) {
|
|
82
|
+
const haystack = `${session.id} ${session.title}`.toLowerCase();
|
|
83
|
+
if (!haystack.includes(textQuery))
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
return true;
|
|
87
|
+
});
|
|
88
|
+
// Mirrors sortSessions (session-broker-state.ts): updatedAt desc, id asc tiebreak.
|
|
89
|
+
const sorted = [...filtered].sort((a, b) => b.updatedAt - a.updatedAt || a.id.localeCompare(b.id));
|
|
90
|
+
const page = paginateItems(sorted, limit, rawCursor, (session) => session.id, (session) => session.updatedAt, { descending: true });
|
|
91
|
+
if ('error' in page) {
|
|
92
|
+
throw new GatewayVerbError(page.error, 'INVALID_CURSOR', 400);
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
sessions: page.items,
|
|
96
|
+
nextCursor: page.nextCursor,
|
|
97
|
+
hasMore: page.hasMore,
|
|
98
|
+
};
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Attach the `sessions.search` handler to the descriptor already registered
|
|
103
|
+
* (without a handler) from ../method-catalog-control-core.ts's static
|
|
104
|
+
* builtin array. Call once, at RuntimeServices construction time. A missing
|
|
105
|
+
* descriptor is a silent no-op — see routes/fleet.ts's
|
|
106
|
+
* `registerFleetGatewayMethods` for the same rationale.
|
|
107
|
+
*/
|
|
108
|
+
export function registerSessionSearchGatewayMethod(catalog, broker) {
|
|
109
|
+
const descriptor = catalog.get('sessions.search');
|
|
110
|
+
if (descriptor) {
|
|
111
|
+
catalog.register(descriptor, createSessionsSearchHandler(broker), { replace: true });
|
|
112
|
+
}
|
|
113
|
+
}
|
|
@@ -8,6 +8,22 @@ export interface SharedSessionGcStore {
|
|
|
8
8
|
export interface SharedSessionGcOptions {
|
|
9
9
|
readonly idleEmptyMs: number;
|
|
10
10
|
readonly idleLongMs: number;
|
|
11
|
+
/**
|
|
12
|
+
* Age (ms since closedAt) at which a CLOSED session's record + bodies are
|
|
13
|
+
* PERMANENTLY deleted from the store. Closed sessions are HISTORY: by default
|
|
14
|
+
* this is `Number.POSITIVE_INFINITY` (retain indefinitely — a closed session
|
|
15
|
+
* is never swept off disk), and deletion happens only when a caller opts into
|
|
16
|
+
* a finite retention window or invokes an explicit delete verb.
|
|
17
|
+
*
|
|
18
|
+
* NOTE ON MEMORY vs PERSISTENCE (divergence from the companion manager):
|
|
19
|
+
* the broker's durable store is a FULL SNAPSHOT of these in-memory maps
|
|
20
|
+
* (createSessionBrokerSnapshot), so there is no separate "memory handle" to
|
|
21
|
+
* evict independently of disk — dropping a closed session's bodies from these
|
|
22
|
+
* maps would also drop them from the next persisted snapshot. Retention is
|
|
23
|
+
* therefore all-or-nothing here: retained closed sessions stay both listable
|
|
24
|
+
* and on disk; memory stays bounded by the per-session message cap
|
|
25
|
+
* (MAX_PERSISTED_MESSAGES_PER_SESSION) rather than by body eviction.
|
|
26
|
+
*/
|
|
11
27
|
readonly deletionRetentionMs: number;
|
|
12
28
|
readonly publishUpdate: (event: string, payload: unknown) => void;
|
|
13
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-broker-gc.d.ts","sourceRoot":"","sources":["../../../src/platform/control-plane/session-broker-gc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"session-broker-gc.d.ts","sourceRoot":"","sources":["../../../src/platform/control-plane/session-broker-gc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAGpF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACpD,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;IACvD,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,wBAAwB,EAAE,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACnE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAmCzG"}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
+
import { withSessionCloseReason } from './session-broker-sessions.js';
|
|
1
2
|
export function sweepSharedSessions(store, options) {
|
|
2
3
|
const now = Date.now();
|
|
3
4
|
let anyChanged = false;
|
|
4
5
|
for (const [sessionId, session] of store.sessions.entries()) {
|
|
5
6
|
if (session.status === 'closed') {
|
|
7
|
+
// History by default. Only an explicit FINITE retention window authorizes
|
|
8
|
+
// permanent deletion; the default POSITIVE_INFINITY never trips this and
|
|
9
|
+
// the closed record stays listable (includeClosed) and on disk forever.
|
|
6
10
|
const closedAt = session.closedAt ?? session.updatedAt;
|
|
7
|
-
if (now - closedAt >= options.deletionRetentionMs) {
|
|
11
|
+
if (Number.isFinite(options.deletionRetentionMs) && now - closedAt >= options.deletionRetentionMs) {
|
|
8
12
|
store.sessions.delete(sessionId);
|
|
9
13
|
store.messages.delete(sessionId);
|
|
10
14
|
store.inputs.delete(sessionId);
|
|
@@ -12,8 +16,6 @@ export function sweepSharedSessions(store, options) {
|
|
|
12
16
|
}
|
|
13
17
|
continue;
|
|
14
18
|
}
|
|
15
|
-
if (!shouldCloseIdleSession(session, now, options))
|
|
16
|
-
continue;
|
|
17
19
|
const reason = idleCloseReason(session, now, options);
|
|
18
20
|
if (!reason)
|
|
19
21
|
continue;
|
|
@@ -23,6 +25,9 @@ export function sweepSharedSessions(store, options) {
|
|
|
23
25
|
activeAgentId: undefined,
|
|
24
26
|
updatedAt: now,
|
|
25
27
|
closedAt: now,
|
|
28
|
+
// Record that the SYSTEM reaper closed this (not a user/surface action) so a
|
|
29
|
+
// subsequent register heartbeat auto-reopens it (honest reopen semantics).
|
|
30
|
+
metadata: withSessionCloseReason(session.metadata, 'idle-reaped'),
|
|
26
31
|
};
|
|
27
32
|
store.sessions.set(sessionId, closed);
|
|
28
33
|
options.publishUpdate('session-closed', { ...closed, reason });
|
|
@@ -30,8 +35,15 @@ export function sweepSharedSessions(store, options) {
|
|
|
30
35
|
}
|
|
31
36
|
return anyChanged;
|
|
32
37
|
}
|
|
33
|
-
|
|
34
|
-
|
|
38
|
+
/**
|
|
39
|
+
* True when any participant was seen within the idle-empty window — i.e. a
|
|
40
|
+
* surface is actively holding this session open. A live participant IS activity,
|
|
41
|
+
* so an empty session with a fresh heartbeat must NOT be idle-empty reaped even
|
|
42
|
+
* if `lastActivityAt` has drifted (defense-in-depth alongside the register path
|
|
43
|
+
* advancing lastActivityAt).
|
|
44
|
+
*/
|
|
45
|
+
function hasFreshParticipant(session, now, idleEmptyMs) {
|
|
46
|
+
return session.participants.some((participant) => now - participant.lastSeenAt < idleEmptyMs);
|
|
35
47
|
}
|
|
36
48
|
function idleCloseReason(session, now, options) {
|
|
37
49
|
if (session.status !== 'active')
|
|
@@ -41,8 +53,13 @@ function idleCloseReason(session, now, options) {
|
|
|
41
53
|
if (session.pendingInputCount > 0)
|
|
42
54
|
return null;
|
|
43
55
|
const idle = now - session.lastActivityAt;
|
|
44
|
-
if (session.messageCount === 0 && idle >= options.idleEmptyMs)
|
|
56
|
+
if (session.messageCount === 0 && idle >= options.idleEmptyMs) {
|
|
57
|
+
// A surface holding the session open (fresh participant heartbeat) exempts it
|
|
58
|
+
// from idle-empty reaping — closing it would kill a LIVE, message-less session.
|
|
59
|
+
if (hasFreshParticipant(session, now, options.idleEmptyMs))
|
|
60
|
+
return null;
|
|
45
61
|
return 'idle-empty';
|
|
62
|
+
}
|
|
46
63
|
if (session.messageCount > 0 && idle >= options.idleLongMs)
|
|
47
64
|
return 'idle-long';
|
|
48
65
|
return null;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { SurfaceKind } from '../../events/surfaces.js';
|
|
2
2
|
import type { SharedSessionMessage, SharedSessionRecord } from './session-types.js';
|
|
3
3
|
import type { SharedSessionInputRecord } from './session-intents.js';
|
|
4
4
|
export interface SharedSessionStoreSnapshot extends Record<string, unknown> {
|
|
@@ -20,6 +20,6 @@ export type SharedSessionMessageSender = {
|
|
|
20
20
|
};
|
|
21
21
|
export type SharedSessionEventPublisher = (event: string, payload: unknown) => void;
|
|
22
22
|
export declare function dedupeSessionSurfaceKinds(participants: readonly {
|
|
23
|
-
readonly surfaceKind:
|
|
24
|
-
}[]):
|
|
23
|
+
readonly surfaceKind: SurfaceKind;
|
|
24
|
+
}[]): SurfaceKind[];
|
|
25
25
|
//# sourceMappingURL=session-broker-helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-broker-helpers.d.ts","sourceRoot":"","sources":["../../../src/platform/control-plane/session-broker-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"session-broker-helpers.d.ts","sourceRoot":"","sources":["../../../src/platform/control-plane/session-broker-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAErE,MAAM,WAAW,0BAA2B,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACzE,QAAQ,CAAC,QAAQ,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAClD,QAAQ,CAAC,QAAQ,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACnD,QAAQ,CAAC,MAAM,EAAE,SAAS,wBAAwB,EAAE,CAAC;CACtD;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;CAC/E,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,wBAAwB,GAAG,IAAI,GAAG,SAAS,CAAC;CACzE,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC;CAChG,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;AAEpF,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,SAAS;IAAE,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;CAAE,EAAE,GAC7D,WAAW,EAAE,CAEf"}
|
|
@@ -17,5 +17,23 @@ export declare function recordSharedSessionInput(store: SharedSessionInputStore,
|
|
|
17
17
|
}): SharedSessionInputRecord;
|
|
18
18
|
export declare function updateSharedSessionInput(store: SharedSessionInputStore, sessionId: string, inputId: string, transform: (input: SharedSessionInputRecord) => SharedSessionInputRecord): SharedSessionInputRecord | null;
|
|
19
19
|
export declare function claimNextQueuedSessionInput(store: SharedSessionInputStore, sessionId: string, agentId: string): SharedSessionInputRecord | null;
|
|
20
|
+
/**
|
|
21
|
+
* Collection read for a live surface: filter a session's inputs by state and/or a
|
|
22
|
+
* `since` cursor (createdAt, exclusive), oldest-first, capped to `limit`. With
|
|
23
|
+
* `state: 'queued'` + the last-seen cursor this yields exactly the PENDING inputs
|
|
24
|
+
* a surface has not collected yet (see SharedSessionBroker.getInputsSince).
|
|
25
|
+
*/
|
|
26
|
+
export declare function filterSessionInputsSince(bucket: readonly SharedSessionInputRecord[], options: {
|
|
27
|
+
readonly state?: SharedSessionInputRecord['state'] | undefined;
|
|
28
|
+
readonly since?: number | undefined;
|
|
29
|
+
readonly limit?: number | undefined;
|
|
30
|
+
}): SharedSessionInputRecord[];
|
|
31
|
+
/**
|
|
32
|
+
* Surface delivery marking: advance a queued/delivered input as a live surface
|
|
33
|
+
* collects it (`consumed:false` → 'delivered') or finishes acting on it
|
|
34
|
+
* (`consumed:true` → 'completed'). Only queued/delivered inputs advance; anything
|
|
35
|
+
* else is returned unchanged. Returns null when the input is unknown.
|
|
36
|
+
*/
|
|
37
|
+
export declare function markSurfaceInputDelivered(store: SharedSessionInputStore, sessionId: string, inputId: string, consumed: boolean): SharedSessionInputRecord | null;
|
|
20
38
|
export declare function finalizeAgentSessionInputs(store: SharedSessionInputStore, sessionId: string, agentId: string, nextState: Extract<SharedSessionInputRecord['state'], 'completed' | 'failed' | 'cancelled'>, error?: string): SharedSessionInputRecord[];
|
|
21
39
|
//# sourceMappingURL=session-broker-inputs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-broker-inputs.d.ts","sourceRoot":"","sources":["../../../src/platform/control-plane/session-broker-inputs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAC/F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG9D,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACpD,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,wBAAwB,EAAE,CAAC,CAAC;CAC1D;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAK1F;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAShG;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,uBAAuB,EAC9B,KAAK,EAAE;IACL,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,wBAAwB,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,+BAA+B,CAAC;IAClD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC,GACA,wBAAwB,CAkC1B;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,uBAAuB,EAC9B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,wBAAwB,GACvE,wBAAwB,GAAG,IAAI,CAWjC;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,uBAAuB,EAC9B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,wBAAwB,GAAG,IAAI,CAYjC;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,uBAAuB,EAC9B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC,EAC3F,KAAK,CAAC,EAAE,MAAM,GACb,wBAAwB,EAAE,CAwB5B"}
|
|
1
|
+
{"version":3,"file":"session-broker-inputs.d.ts","sourceRoot":"","sources":["../../../src/platform/control-plane/session-broker-inputs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAC/F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG9D,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACpD,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,wBAAwB,EAAE,CAAC,CAAC;CAC1D;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAK1F;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAShG;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,uBAAuB,EAC9B,KAAK,EAAE;IACL,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,wBAAwB,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,+BAA+B,CAAC;IAClD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC,GACA,wBAAwB,CAkC1B;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,uBAAuB,EAC9B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,wBAAwB,GACvE,wBAAwB,GAAG,IAAI,CAWjC;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,uBAAuB,EAC9B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,wBAAwB,GAAG,IAAI,CAYjC;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,SAAS,wBAAwB,EAAE,EAC3C,OAAO,EAAE;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,wBAAwB,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GACpJ,wBAAwB,EAAE,CAO5B;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,uBAAuB,EAC9B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,OAAO,GAChB,wBAAwB,GAAG,IAAI,CASjC;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,uBAAuB,EAC9B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC,EAC3F,KAAK,CAAC,EAAE,MAAM,GACb,wBAAwB,EAAE,CAwB5B"}
|
|
@@ -81,6 +81,40 @@ export function claimNextQueuedSessionInput(store, sessionId, agentId) {
|
|
|
81
81
|
touchSharedSession(store, sessionId);
|
|
82
82
|
return result;
|
|
83
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* Collection read for a live surface: filter a session's inputs by state and/or a
|
|
86
|
+
* `since` cursor (createdAt, exclusive), oldest-first, capped to `limit`. With
|
|
87
|
+
* `state: 'queued'` + the last-seen cursor this yields exactly the PENDING inputs
|
|
88
|
+
* a surface has not collected yet (see SharedSessionBroker.getInputsSince).
|
|
89
|
+
*/
|
|
90
|
+
export function filterSessionInputsSince(bucket, options) {
|
|
91
|
+
const filtered = bucket.filter((entry) => {
|
|
92
|
+
if (options.state !== undefined && entry.state !== options.state)
|
|
93
|
+
return false;
|
|
94
|
+
if (options.since !== undefined && entry.createdAt <= options.since)
|
|
95
|
+
return false;
|
|
96
|
+
return true;
|
|
97
|
+
});
|
|
98
|
+
return filtered.slice(-Math.max(1, options.limit ?? 100));
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Surface delivery marking: advance a queued/delivered input as a live surface
|
|
102
|
+
* collects it (`consumed:false` → 'delivered') or finishes acting on it
|
|
103
|
+
* (`consumed:true` → 'completed'). Only queued/delivered inputs advance; anything
|
|
104
|
+
* else is returned unchanged. Returns null when the input is unknown.
|
|
105
|
+
*/
|
|
106
|
+
export function markSurfaceInputDelivered(store, sessionId, inputId, consumed) {
|
|
107
|
+
return updateSharedSessionInput(store, sessionId, inputId, (entry) => {
|
|
108
|
+
if (consumed) {
|
|
109
|
+
if (entry.state !== 'queued' && entry.state !== 'delivered')
|
|
110
|
+
return entry;
|
|
111
|
+
return { ...entry, state: 'completed', updatedAt: Date.now() };
|
|
112
|
+
}
|
|
113
|
+
if (entry.state !== 'queued')
|
|
114
|
+
return entry;
|
|
115
|
+
return { ...entry, state: 'delivered', updatedAt: Date.now() };
|
|
116
|
+
});
|
|
117
|
+
}
|
|
84
118
|
export function finalizeAgentSessionInputs(store, sessionId, agentId, nextState, error) {
|
|
85
119
|
const bucket = store.inputs.get(sessionId);
|
|
86
120
|
if (!bucket)
|
|
@@ -1,6 +1,47 @@
|
|
|
1
1
|
import type { AutomationRouteBinding } from '../automation/routes.js';
|
|
2
|
-
import type { SharedSessionParticipant, SharedSessionRecord,
|
|
2
|
+
import type { CreateSharedSessionInput, ParticipantRouteAttachInput, RegisterSharedSessionInput, SharedSessionCloseReason, SharedSessionParticipant, SharedSessionRecord, SharedSessionRegisterResult } from './session-types.js';
|
|
3
3
|
export declare const RESERVED_SHARED_SESSION_IDS: Set<string>;
|
|
4
|
+
/**
|
|
5
|
+
* Metadata key under which a closed session records WHY it was closed. Kept in
|
|
6
|
+
* `metadata` (not a first-class field) so it rides the wire without a schema
|
|
7
|
+
* change and 0.38 readers ignore it. See {@link SharedSessionCloseReason}.
|
|
8
|
+
*/
|
|
9
|
+
export declare const SESSION_CLOSE_REASON_METADATA_KEY = "closeReason";
|
|
10
|
+
/** Read the close reason off a record's metadata, or undefined when unset/unknown. */
|
|
11
|
+
export declare function readSessionCloseReason(session: SharedSessionRecord): SharedSessionCloseReason | undefined;
|
|
12
|
+
/** Stamp a close reason onto a metadata bag (returns a new object). */
|
|
13
|
+
export declare function withSessionCloseReason(metadata: Record<string, unknown>, reason: SharedSessionCloseReason): Record<string, unknown>;
|
|
14
|
+
/** Strip any close reason from a metadata bag (returns a new object only if needed). */
|
|
15
|
+
export declare function withoutSessionCloseReason(metadata: Record<string, unknown>): Record<string, unknown>;
|
|
16
|
+
/**
|
|
17
|
+
* Metadata flag marking a session as SURFACE-MANAGED: a spine-registered surface
|
|
18
|
+
* (via `sessions.register`) owns turn execution and input collection for it. Set
|
|
19
|
+
* on every register/heartbeat. Steer/follow-up inputs to such a session (when no
|
|
20
|
+
* daemon agent is live) route to the surface as a queued input the surface
|
|
21
|
+
* collects — NOT a daemon executor spawn. Kept in metadata (open record) so it
|
|
22
|
+
* needs no schema change. Daemon-run origins (companion-task/automation, or a
|
|
23
|
+
* plain /task session) never call register and stay executor-routed.
|
|
24
|
+
*/
|
|
25
|
+
export declare const SESSION_SURFACE_MANAGED_METADATA_KEY = "surfaceManaged";
|
|
26
|
+
/** How recently a participant must have been seen to count as a LIVE surface for
|
|
27
|
+
* steer/follow-up routing. A surface heartbeats via `sessions.register`; if the
|
|
28
|
+
* newest heartbeat is older than this, the surface is treated as gone and inputs
|
|
29
|
+
* fall back to the daemon executor path. */
|
|
30
|
+
export declare const SURFACE_ROUTE_FRESHNESS_MS: number;
|
|
31
|
+
export declare function isSurfaceManagedSession(session: SharedSessionRecord): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* True when a participant OTHER than `exclude` (the current input's own surface)
|
|
34
|
+
* was seen within `freshnessMs`. Excluding the sender prevents a steer's own
|
|
35
|
+
* just-attached participant from making a surfaceless session look live.
|
|
36
|
+
*/
|
|
37
|
+
export declare function hasFreshSurfaceParticipant(session: SharedSessionRecord, now: number, freshnessMs: number, exclude?: {
|
|
38
|
+
readonly surfaceId?: string | undefined;
|
|
39
|
+
}): boolean;
|
|
40
|
+
/** Steer/follow-up to this session should route to a live surface (queue-for-surface)
|
|
41
|
+
* rather than spawn a daemon executor. */
|
|
42
|
+
export declare function shouldRouteInputToSurface(session: SharedSessionRecord, now: number, freshnessMs: number, exclude?: {
|
|
43
|
+
readonly surfaceId?: string | undefined;
|
|
44
|
+
}): boolean;
|
|
4
45
|
export interface CreateSharedSessionRecordInput {
|
|
5
46
|
readonly id?: string | undefined;
|
|
6
47
|
readonly title?: string | undefined;
|
|
@@ -8,15 +49,73 @@ export interface CreateSharedSessionRecordInput {
|
|
|
8
49
|
readonly routeBinding?: AutomationRouteBinding | undefined;
|
|
9
50
|
readonly participant?: SharedSessionParticipant | undefined;
|
|
10
51
|
readonly kind?: SharedSessionRecord['kind'] | undefined;
|
|
52
|
+
readonly project?: string | undefined;
|
|
11
53
|
}
|
|
12
54
|
export declare function assertSharedSessionIdAllowed(id: string | undefined): void;
|
|
13
55
|
export declare function createSharedSessionRecord(input: CreateSharedSessionRecordInput): SharedSessionRecord;
|
|
14
|
-
|
|
56
|
+
/**
|
|
57
|
+
* Shape a participant triple into the attach-input the broker's
|
|
58
|
+
* participant/route merge expects. Used by `register` so a heartbeat re-attaches
|
|
59
|
+
* the participant (advancing `lastSeenAt`) without carrying a message body.
|
|
60
|
+
*/
|
|
61
|
+
/** The broker operations {@link registerSharedSession} needs, injected so the
|
|
62
|
+
* register control-flow lives here instead of bloating the broker class. */
|
|
63
|
+
export interface RegisterBrokerOps {
|
|
64
|
+
getSession(id: string): SharedSessionRecord | null;
|
|
65
|
+
createSession(input: CreateSharedSessionInput): Promise<SharedSessionRecord>;
|
|
66
|
+
reopenSession(id: string): Promise<SharedSessionRecord | null>;
|
|
67
|
+
attachParticipant(session: SharedSessionRecord, attach: ParticipantRouteAttachInput): Promise<SharedSessionRecord>;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* The idempotent register/heartbeat control-flow with HONEST closed semantics:
|
|
71
|
+
* a brand-new id is created; an existing OPEN id adopts the participant; an
|
|
72
|
+
* existing CLOSED id records the heartbeat but stays closed (returning a conflict
|
|
73
|
+
* marker) UNLESS `reopen: true` is passed. A titled session is never renamed by
|
|
74
|
+
* the heartbeat (that rule lives in {@link attachSharedSessionParticipantAndRoute}).
|
|
75
|
+
*/
|
|
76
|
+
export declare function registerSharedSession(ops: RegisterBrokerOps, input: RegisterSharedSessionInput): Promise<SharedSessionRegisterResult>;
|
|
77
|
+
export declare function participantToAttachInput(participant: SharedSessionParticipant, title?: string): ParticipantRouteAttachInput;
|
|
78
|
+
/** Close a session, recording WHY. Defaults to 'user' — the explicit close verb
|
|
79
|
+
* (daemon `sessions.close`) is a deliberate user/surface action, which does NOT
|
|
80
|
+
* auto-reopen on heartbeat. The reaper passes 'idle-reaped'. */
|
|
81
|
+
export declare function closeSharedSessionRecord(session: SharedSessionRecord, reason?: SharedSessionCloseReason): SharedSessionRecord;
|
|
15
82
|
export declare function reopenSharedSessionRecord(session: SharedSessionRecord): SharedSessionRecord;
|
|
16
83
|
export declare function bindSharedSessionAgent(session: SharedSessionRecord, agentId: string): SharedSessionRecord;
|
|
84
|
+
/**
|
|
85
|
+
* True when a session title is still the auto-generated placeholder (empty or
|
|
86
|
+
* `Session <id>`) and can be named by an incoming register/attach. A real,
|
|
87
|
+
* user-supplied title is never overwritten by this path.
|
|
88
|
+
*/
|
|
89
|
+
export declare function isPlaceholderSessionTitle(title: string, id: string): boolean;
|
|
90
|
+
/**
|
|
91
|
+
* Merge a participant + optional route onto a session. This is the HEARTBEAT
|
|
92
|
+
* path — it records the participant and advances lastSeenAt, but it must NOT by
|
|
93
|
+
* itself change lifecycle status (a closed session stays closed; reopening is an
|
|
94
|
+
* explicit verb) and must NOT overwrite a real title (only names a placeholder).
|
|
95
|
+
*/
|
|
17
96
|
export declare function attachSharedSessionParticipantAndRoute(input: {
|
|
18
97
|
readonly session: SharedSessionRecord;
|
|
19
|
-
readonly message:
|
|
98
|
+
readonly message: ParticipantRouteAttachInput;
|
|
20
99
|
readonly binding?: AutomationRouteBinding | undefined;
|
|
21
100
|
}): SharedSessionRecord;
|
|
101
|
+
/**
|
|
102
|
+
* The inverse of {@link attachSharedSessionParticipantAndRoute}: remove EVERY
|
|
103
|
+
* participant bound to `surfaceId` and unbind the route bindings those
|
|
104
|
+
* participants alone held. This is "detach != close != kill" — the session and
|
|
105
|
+
* all other participants keep running; the detached surface simply stops being a
|
|
106
|
+
* routing target (and, filtered by domain, stops receiving session updates).
|
|
107
|
+
*
|
|
108
|
+
* Route pruning is conservative: a routeId is dropped from the session only when
|
|
109
|
+
* NO surviving participant still references it, so detaching one surface never
|
|
110
|
+
* severs another surface's live binding.
|
|
111
|
+
*
|
|
112
|
+
* Returns `{ session, changed }`. `changed` is false when no participant matched
|
|
113
|
+
* `surfaceId` (the caller can treat a no-match detach as an idempotent no-op and
|
|
114
|
+
* skip persistence/emit). Status, title, and closedAt are preserved untouched —
|
|
115
|
+
* detach is never a lifecycle transition.
|
|
116
|
+
*/
|
|
117
|
+
export declare function detachSharedSessionParticipant(session: SharedSessionRecord, surfaceId: string): {
|
|
118
|
+
readonly session: SharedSessionRecord;
|
|
119
|
+
readonly changed: boolean;
|
|
120
|
+
};
|
|
22
121
|
//# sourceMappingURL=session-broker-sessions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-broker-sessions.d.ts","sourceRoot":"","sources":["../../../src/platform/control-plane/session-broker-sessions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EACV,wBAAwB,EACxB,mBAAmB,EACnB
|
|
1
|
+
{"version":3,"file":"session-broker-sessions.d.ts","sourceRoot":"","sources":["../../../src/platform/control-plane/session-broker-sessions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EACV,wBAAwB,EACxB,2BAA2B,EAC3B,0BAA0B,EAC1B,wBAAwB,EACxB,wBAAwB,EACxB,mBAAmB,EACnB,2BAA2B,EAC5B,MAAM,oBAAoB,CAAC;AAI5B,eAAO,MAAM,2BAA2B,aAA0B,CAAC;AAEnE;;;;GAIG;AACH,eAAO,MAAM,iCAAiC,gBAAgB,CAAC;AAE/D,sFAAsF;AACtF,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,mBAAmB,GAAG,wBAAwB,GAAG,SAAS,CAGzG;AAED,uEAAuE;AACvE,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,MAAM,EAAE,wBAAwB,GAC/B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzB;AAED,wFAAwF;AACxF,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKpG;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,oCAAoC,mBAAmB,CAAC;AAErE;;;4CAG4C;AAC5C,eAAO,MAAM,0BAA0B,QAAgB,CAAC;AAExD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAE7E;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,mBAAmB,EAC5B,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GACpD,OAAO,CAKT;AAED;0CAC0C;AAC1C,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,mBAAmB,EAC5B,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GACpD,OAAO,CAET;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IACxD,QAAQ,CAAC,YAAY,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAC3D,QAAQ,CAAC,WAAW,CAAC,EAAE,wBAAwB,GAAG,SAAS,CAAC;IAC5D,QAAQ,CAAC,IAAI,CAAC,EAAE,mBAAmB,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IACxD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAED,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAMzE;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,8BAA8B,GAAG,mBAAmB,CA8BpG;AAED;;;;GAIG;AACH;4EAC4E;AAC5E,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAAC;IACnD,aAAa,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC7E,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;IAC/D,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,2BAA2B,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACpH;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,iBAAiB,EACtB,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC,2BAA2B,CAAC,CA0BtC;AAED,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,wBAAwB,EACrC,KAAK,CAAC,EAAE,MAAM,GACb,2BAA2B,CAW7B;AAED;;gEAEgE;AAChE,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,mBAAmB,EAC5B,MAAM,GAAE,wBAAiC,GACxC,mBAAmB,CAUrB;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,mBAAmB,GAAG,mBAAmB,CAU3F;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,GAAG,mBAAmB,CASzG;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAG5E;AAED;;;;;GAKG;AACH,wBAAgB,sCAAsC,CAAC,KAAK,EAAE;IAC5D,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,2BAA2B,CAAC;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;CACvD,GAAG,mBAAmB,CAqCtB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,mBAAmB,EAC5B,SAAS,EAAE,MAAM,GAChB;IAAE,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAqBtE"}
|