@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,156 @@
|
|
|
1
|
+
/** SDK-owned platform module. This implementation is maintained in goodvibes-sdk. */
|
|
2
|
+
/**
|
|
3
|
+
* CodeIndexReindexScheduler — Stage B tool-site reindex hooks.
|
|
4
|
+
*
|
|
5
|
+
* After a successful file-writing tool call (write / edit, including the edit
|
|
6
|
+
* tool's notebook operations), the touched path(s) are scheduled for an
|
|
7
|
+
* incremental `CodeIndexStore.reindexFile()`. Three properties the brief asks
|
|
8
|
+
* for, all enforced here rather than at the (two) tool-execution call sites:
|
|
9
|
+
*
|
|
10
|
+
* 1. NEVER BLOCKS THE TURN. `onToolExecuted` only records paths and arms a
|
|
11
|
+
* timer; the reindex runs later, off the tool-result path. Nothing here is
|
|
12
|
+
* awaited by the caller.
|
|
13
|
+
*
|
|
14
|
+
* 2. DEBOUNCED + COALESCED, per path. Each touched path gets its own timer;
|
|
15
|
+
* re-touching the same path before its quiet window elapses resets that
|
|
16
|
+
* path's timer, so a phased edit or several edits to one file in a turn
|
|
17
|
+
* collapse to a SINGLE reindex. Distinct paths reindex independently, each
|
|
18
|
+
* after its own quiet window. Timers are `unref()`'d so a pending reindex
|
|
19
|
+
* never keeps the process alive.
|
|
20
|
+
*
|
|
21
|
+
* 3. NO-OP WHEN THERE IS NOTHING TO MAINTAIN, and CONTAINED FAILURE. At fire
|
|
22
|
+
* time the scheduler re-checks (live, so a runtime toggle is respected)
|
|
23
|
+
* that the code index is enabled AND already built (available &&
|
|
24
|
+
* indexedChunks > 0) — reindexing a single file into an index that was
|
|
25
|
+
* never built would fabricate a misleading one-file index, so that case is
|
|
26
|
+
* a silent no-op. `reindexFile` is cheap when the file is unchanged
|
|
27
|
+
* (hash-gated). Any error is caught, logged, and recorded as the last
|
|
28
|
+
* activity — it never rethrows into the turn.
|
|
29
|
+
*
|
|
30
|
+
* The most-recent completed reindex is exposed via `lastActivity()` for honest
|
|
31
|
+
* surfacing (e.g. TUI `/codebase status`).
|
|
32
|
+
*/
|
|
33
|
+
import { resolve as resolvePathAbsolute } from 'node:path';
|
|
34
|
+
import { logger } from '../utils/logger.js';
|
|
35
|
+
import { summarizeError } from '../utils/error-display.js';
|
|
36
|
+
/** Default per-path debounce window: long enough to coalesce a burst of edits to one file, short enough that the index trails the working tree by well under a second. */
|
|
37
|
+
export const DEFAULT_REINDEX_DEBOUNCE_MS = 300;
|
|
38
|
+
/**
|
|
39
|
+
* Tool names whose successful execution touches files worth reindexing, and the
|
|
40
|
+
* argument shapes that carry the touched path(s). `write` carries `files[].path`;
|
|
41
|
+
* `edit` carries `edits[].path` plus an optional `notebook_operations.path`. A
|
|
42
|
+
* top-level `path`/`file_path` is also honored for robustness against tool
|
|
43
|
+
* variants. Anything else yields no paths (no-op).
|
|
44
|
+
*/
|
|
45
|
+
export function extractReindexPaths(toolName, args) {
|
|
46
|
+
if (toolName !== 'write' && toolName !== 'edit')
|
|
47
|
+
return [];
|
|
48
|
+
const paths = new Set();
|
|
49
|
+
const addIfString = (value) => {
|
|
50
|
+
if (typeof value === 'string' && value.trim().length > 0)
|
|
51
|
+
paths.add(value);
|
|
52
|
+
};
|
|
53
|
+
addIfString(args['path']);
|
|
54
|
+
addIfString(args['file_path']);
|
|
55
|
+
const files = args['files'];
|
|
56
|
+
if (Array.isArray(files)) {
|
|
57
|
+
for (const file of files) {
|
|
58
|
+
if (file && typeof file === 'object')
|
|
59
|
+
addIfString(file['path']);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
const edits = args['edits'];
|
|
63
|
+
if (Array.isArray(edits)) {
|
|
64
|
+
for (const edit of edits) {
|
|
65
|
+
if (edit && typeof edit === 'object')
|
|
66
|
+
addIfString(edit['path']);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
const notebookOps = args['notebook_operations'];
|
|
70
|
+
if (notebookOps && typeof notebookOps === 'object') {
|
|
71
|
+
addIfString(notebookOps['path']);
|
|
72
|
+
}
|
|
73
|
+
return [...paths];
|
|
74
|
+
}
|
|
75
|
+
export class CodeIndexReindexScheduler {
|
|
76
|
+
deps;
|
|
77
|
+
timers = new Map();
|
|
78
|
+
inFlight = new Set();
|
|
79
|
+
last = null;
|
|
80
|
+
debounceMs;
|
|
81
|
+
now;
|
|
82
|
+
constructor(deps) {
|
|
83
|
+
this.deps = deps;
|
|
84
|
+
this.debounceMs = deps.debounceMs ?? DEFAULT_REINDEX_DEBOUNCE_MS;
|
|
85
|
+
this.now = deps.now ?? Date.now;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Entry point wired into both tool-execution loops. A no-op for a failed call
|
|
89
|
+
* or a non-file tool. Extracts touched paths and schedules each (debounced).
|
|
90
|
+
* Returns immediately — never awaits a reindex.
|
|
91
|
+
*/
|
|
92
|
+
onToolExecuted(toolName, args, success) {
|
|
93
|
+
if (!success)
|
|
94
|
+
return;
|
|
95
|
+
for (const p of extractReindexPaths(toolName, args)) {
|
|
96
|
+
this.schedule(resolvePathAbsolute(this.deps.workingDirectory, p));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/** Arm (or reset) the per-path debounce timer for one absolute path. */
|
|
100
|
+
schedule(absPath) {
|
|
101
|
+
const existing = this.timers.get(absPath);
|
|
102
|
+
if (existing)
|
|
103
|
+
clearTimeout(existing);
|
|
104
|
+
const timer = setTimeout(() => {
|
|
105
|
+
this.timers.delete(absPath);
|
|
106
|
+
this.track(this.runReindex(absPath));
|
|
107
|
+
}, this.debounceMs);
|
|
108
|
+
timer.unref?.();
|
|
109
|
+
this.timers.set(absPath, timer);
|
|
110
|
+
}
|
|
111
|
+
/** The most recent reindex the scheduler actually ran, or null if none has completed. */
|
|
112
|
+
lastActivity() {
|
|
113
|
+
return this.last;
|
|
114
|
+
}
|
|
115
|
+
/** Count of paths with a pending (debouncing) reindex. */
|
|
116
|
+
pendingCount() {
|
|
117
|
+
return this.timers.size;
|
|
118
|
+
}
|
|
119
|
+
/** Test/shutdown helper: fire every pending debounce timer now and await all in-flight reindexes. */
|
|
120
|
+
async flush() {
|
|
121
|
+
for (const [path, timer] of [...this.timers]) {
|
|
122
|
+
clearTimeout(timer);
|
|
123
|
+
this.timers.delete(path);
|
|
124
|
+
this.track(this.runReindex(path));
|
|
125
|
+
}
|
|
126
|
+
await Promise.allSettled([...this.inFlight]);
|
|
127
|
+
}
|
|
128
|
+
/** Cancel every pending timer (does not touch in-flight reindexes). */
|
|
129
|
+
dispose() {
|
|
130
|
+
for (const timer of this.timers.values())
|
|
131
|
+
clearTimeout(timer);
|
|
132
|
+
this.timers.clear();
|
|
133
|
+
}
|
|
134
|
+
track(promise) {
|
|
135
|
+
this.inFlight.add(promise);
|
|
136
|
+
void promise.finally(() => this.inFlight.delete(promise));
|
|
137
|
+
}
|
|
138
|
+
async runReindex(absPath) {
|
|
139
|
+
// Live gates — respect a runtime toggle of the setting and never fabricate a
|
|
140
|
+
// one-file index when nothing was ever built.
|
|
141
|
+
if (this.deps.isEnabled && !this.deps.isEnabled())
|
|
142
|
+
return;
|
|
143
|
+
const stats = this.deps.target.stats();
|
|
144
|
+
if (!stats.available || stats.indexedChunks === 0)
|
|
145
|
+
return;
|
|
146
|
+
try {
|
|
147
|
+
const { indexed, mode } = await this.deps.target.reindexFile(absPath);
|
|
148
|
+
this.last = { path: absPath, at: this.now(), status: indexed ? 'indexed' : 'skipped', mode };
|
|
149
|
+
}
|
|
150
|
+
catch (err) {
|
|
151
|
+
const error = summarizeError(err);
|
|
152
|
+
logger.warn('Code index incremental reindex failed', { path: absPath, error });
|
|
153
|
+
this.last = { path: absPath, at: this.now(), status: 'error', error };
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-index-store.d.ts","sourceRoot":"","sources":["../../../src/platform/state/code-index-store.ts"],"names":[],"mappings":"AAAA,qFAAqF;
|
|
1
|
+
{"version":3,"file":"code-index-store.d.ts","sourceRoot":"","sources":["../../../src/platform/state/code-index-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** SDK-owned platform module. This implementation is maintained in goodvibes-sdk. */
|
|
2
2
|
/**
|
|
3
3
|
* CodeIndexStore — an incremental, tree-sitter-chunked, embedding-backed index
|
|
4
|
-
* of a repo's source tree (
|
|
4
|
+
* of a repo's source tree (Stage A; see CHANGELOG 0.38.0).
|
|
5
5
|
*
|
|
6
6
|
* Deliberately MIRRORS MemoryStore + SqliteVecMemoryIndex (state/memory-store.ts,
|
|
7
7
|
* state/memory-vector-store.ts) rather than reusing them: those classes are
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
*/
|
|
55
55
|
import { dirname, join, relative, sep } from 'node:path';
|
|
56
56
|
import { mkdirSync, statSync } from 'node:fs';
|
|
57
|
-
import {
|
|
57
|
+
import { createRequire } from 'node:module';
|
|
58
58
|
import { loadSqliteVecExtension } from './sqlite-vec-loader.js';
|
|
59
59
|
import { HASHED_MEMORY_EMBEDDING_PROVIDER, MemoryEmbeddingProviderRegistry, normalizeMemoryEmbeddingVector, } from './memory-embeddings.js';
|
|
60
60
|
import { MEMORY_VECTOR_DIMS } from './memory-vector-store.js';
|
|
@@ -64,6 +64,14 @@ import { CHUNK_ROW_COLUMNS, EMBEDDING_PROVIDER_META_KEY, createCodeIndexSchema,
|
|
|
64
64
|
import { buildGitignoreMatcher, collectGlobFiles, createFindDiagnostics, findNestedGitignoreFiles, isBinary, readTextFile, } from '../tools/find/shared.js';
|
|
65
65
|
import { logger } from '../utils/logger.js';
|
|
66
66
|
import { summarizeError } from '../utils/error-display.js';
|
|
67
|
+
// bun:sqlite is a Bun-only builtin; a static import makes this module unloadable
|
|
68
|
+
// under Node (breaks the release install-smoke check). Lazily require the ctor so
|
|
69
|
+
// the `bun:` specifier stays off the static graph — only pulled on the Bun-only
|
|
70
|
+
// path that opens a database.
|
|
71
|
+
let bunDatabaseCtor = null;
|
|
72
|
+
function bunSqliteDatabase() {
|
|
73
|
+
return (bunDatabaseCtor ??= createRequire(import.meta.url)('bun:sqlite').Database);
|
|
74
|
+
}
|
|
67
75
|
const DEFAULT_MAX_FILES = 5000;
|
|
68
76
|
const DEFAULT_MAX_FILE_BYTES = 512 * 1024;
|
|
69
77
|
const DEFAULT_MAX_TOTAL_BYTES = 256 * 1024 * 1024;
|
|
@@ -122,7 +130,7 @@ export class CodeIndexStore {
|
|
|
122
130
|
if (this.dbPath !== ':memory:') {
|
|
123
131
|
mkdirSync(dirname(this.dbPath), { recursive: true });
|
|
124
132
|
}
|
|
125
|
-
this.db = new
|
|
133
|
+
this.db = new (bunSqliteDatabase())(this.dbPath);
|
|
126
134
|
loadSqliteVecExtension(this.db);
|
|
127
135
|
this.available = true;
|
|
128
136
|
createCodeIndexSchema(this.db);
|
|
@@ -19,6 +19,12 @@ export { MemoryStore } from './memory-store.js';
|
|
|
19
19
|
export { MemoryRegistry } from './memory-registry.js';
|
|
20
20
|
export type { MemoryBundle, MemoryClass, MemoryRecord, MemoryLink, MemoryAddOptions, MemorySearchFilter, MemorySemanticSearchResult, MemoryStoreOptions, MemoryDoctorReport, MemoryScope, MemoryReviewState, ProvenanceLink, ProvenanceLinkKind, } from './memory-store.js';
|
|
21
21
|
export { buildIncidentMemoryAddOptions, buildMcpSecurityMemoryAddOptions, buildPluginSecurityMemoryAddOptions, buildPolicyPreflightMemoryAddOptions, } from './memory-ingest.js';
|
|
22
|
+
export { resolveCanonicalMemoryDbPath, foldMemoryStores, formatMemoryFoldReport, } from './canonical-memory.js';
|
|
23
|
+
export type { LegacyMemorySource, MemoryFoldSourceReport, MemoryFoldReport, FoldMemoryStoresOptions, } from './canonical-memory.js';
|
|
24
|
+
export { MIN_PROMPT_MEMORY_CONFIDENCE, describeMemoryPromptEligibility, isPromptActiveMemory, describeMemoryIndexUnavailable, describeMemoryIndexCaveat, runHonestMemorySearch, } from './memory-recall-contract.js';
|
|
25
|
+
export type { MemoryPromptEligibility, HonestSearchStore, HonestMemorySearchOptions, HonestMemorySearchResult, } from './memory-recall-contract.js';
|
|
26
|
+
export { VIBE_PERSONA_TAG, VIBE_PROJECTION_HEADING, VIBE_PROJECTION_CAVEAT, selectVibeRecords, renderVibeProjection, vibeBodyToConstraintOptions, } from './vibe-projection.js';
|
|
27
|
+
export type { VibeProjectionOptions, VibeImportOptions } from './vibe-projection.js';
|
|
22
28
|
export { MEMORY_VECTOR_DIMS, embedMemoryText, resolveMemoryVectorDbPath, SqliteVecMemoryIndex, } from './memory-vector-store.js';
|
|
23
29
|
export type { MemoryVectorCandidate, MemoryVectorStats } from './memory-vector-store.js';
|
|
24
30
|
export { DEFAULT_MEMORY_EMBEDDING_DIMS, HASHED_MEMORY_EMBEDDING_PROVIDER, MemoryEmbeddingProviderRegistry, normalizeMemoryEmbeddingVector, } from './memory-embeddings.js';
|
|
@@ -28,4 +34,6 @@ export type { KnowledgeInjection, ScoredKnowledgeInjection } from './knowledge-i
|
|
|
28
34
|
export { selectKnowledgeForTask, selectKnowledgeForTaskScored, buildKnowledgeInjectionPrompt } from './knowledge-injection.js';
|
|
29
35
|
export { CodeIndexStore } from './code-index-store.js';
|
|
30
36
|
export type { CodeChunk, CodeChunkMode, CodeContextResult, CodeIndexBuildProgress, CodeIndexBuildStats, CodeIndexOptions, CodeIndexSkipReport, CodeIndexStats, } from './code-index-store.js';
|
|
37
|
+
export { CodeIndexReindexScheduler, extractReindexPaths, DEFAULT_REINDEX_DEBOUNCE_MS, } from './code-index-reindex.js';
|
|
38
|
+
export type { CodeIndexReindexActivity, CodeIndexReindexTarget, CodeIndexReindexSchedulerDeps, } from './code-index-reindex.js';
|
|
31
39
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/platform/state/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,0BAA0B,EAC1B,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,6BAA6B,EAC7B,gCAAgC,EAChC,mCAAmC,EACnC,oCAAoC,GACrC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACzF,OAAO,EACL,6BAA6B,EAC7B,gCAAgC,EAChC,+BAA+B,EAC/B,8BAA8B,GAC/B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,qCAAqC,EAAE,MAAM,4BAA4B,CAAC;AACnF,YAAY,EACV,2BAA2B,EAC3B,uBAAuB,EACvB,4BAA4B,EAC5B,6BAA6B,EAC7B,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAC7F,OAAO,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AAC/H,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,YAAY,EACV,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,GACf,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/platform/state/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,8 +12,12 @@ export { FileUndoManager } from './file-undo.js';
|
|
|
12
12
|
export { MemoryStore } from './memory-store.js';
|
|
13
13
|
export { MemoryRegistry } from './memory-registry.js';
|
|
14
14
|
export { buildIncidentMemoryAddOptions, buildMcpSecurityMemoryAddOptions, buildPluginSecurityMemoryAddOptions, buildPolicyPreflightMemoryAddOptions, } from './memory-ingest.js';
|
|
15
|
+
export { resolveCanonicalMemoryDbPath, foldMemoryStores, formatMemoryFoldReport, } from './canonical-memory.js';
|
|
16
|
+
export { MIN_PROMPT_MEMORY_CONFIDENCE, describeMemoryPromptEligibility, isPromptActiveMemory, describeMemoryIndexUnavailable, describeMemoryIndexCaveat, runHonestMemorySearch, } from './memory-recall-contract.js';
|
|
17
|
+
export { VIBE_PERSONA_TAG, VIBE_PROJECTION_HEADING, VIBE_PROJECTION_CAVEAT, selectVibeRecords, renderVibeProjection, vibeBodyToConstraintOptions, } from './vibe-projection.js';
|
|
15
18
|
export { MEMORY_VECTOR_DIMS, embedMemoryText, resolveMemoryVectorDbPath, SqliteVecMemoryIndex, } from './memory-vector-store.js';
|
|
16
19
|
export { DEFAULT_MEMORY_EMBEDDING_DIMS, HASHED_MEMORY_EMBEDDING_PROVIDER, MemoryEmbeddingProviderRegistry, normalizeMemoryEmbeddingVector, } from './memory-embeddings.js';
|
|
17
20
|
export { createBuiltinMemoryEmbeddingProviders } from './memory-embedding-http.js';
|
|
18
21
|
export { selectKnowledgeForTask, selectKnowledgeForTaskScored, buildKnowledgeInjectionPrompt } from './knowledge-injection.js';
|
|
19
22
|
export { CodeIndexStore } from './code-index-store.js';
|
|
23
|
+
export { CodeIndexReindexScheduler, extractReindexPaths, DEFAULT_REINDEX_DEBOUNCE_MS, } from './code-index-reindex.js';
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* memory-recall-contract.ts — the CROSS-SURFACE recall-honesty contract (see CHANGELOG 1.0.0).
|
|
3
|
+
*
|
|
4
|
+
* PROVENANCE. This is the agent's memory-honesty discipline, promoted
|
|
5
|
+
* verbatim from a single surface (the agent's memory-prompt.ts) into the SDK so it
|
|
6
|
+
* is ONE shared contract, not a discipline re-derived (and re-weakened) per surface.
|
|
7
|
+
* Under memory unification the store is unified and cross-surface, which multiplies the cost of a
|
|
8
|
+
* dishonest recall — so this discipline becomes MORE load-bearing, not less. A
|
|
9
|
+
* unified store must not be able to lie more loudly than the siloed one did.
|
|
10
|
+
*
|
|
11
|
+
* The contract is three rules:
|
|
12
|
+
* 1. INJECTION FLOOR = the store's own declared baseline trust (60), never higher.
|
|
13
|
+
* MemoryStore.add() stamps every new record at confidence 60 unless the caller
|
|
14
|
+
* says otherwise. A floor above 60 would starve every honestly-stored fact — a
|
|
15
|
+
* freshly-learned fact could never clear recall on its own. The floor trusts a
|
|
16
|
+
* record exactly as much as the store already vouches for it; anything stored
|
|
17
|
+
* BELOW 60 (explicitly marked less certain) still does not qualify.
|
|
18
|
+
* 2. FLAGGED RECORDS ARE NEVER INJECTED. stale/contradicted records are excluded
|
|
19
|
+
* outright, regardless of confidence — the surface already knows they are wrong
|
|
20
|
+
* or superseded, so no confidence number buys them back into a prompt.
|
|
21
|
+
* 3. DEGRADED STATES ARE HONEST, NOT SILENT. an unavailable semantic index yields
|
|
22
|
+
* a STATED reason and a literal fallback — never a silent empty result that
|
|
23
|
+
* reads as "nothing was ever stored." 'no match' and 'index unavailable' are
|
|
24
|
+
* distinct and both said out loud.
|
|
25
|
+
*/
|
|
26
|
+
import type { MemoryRecord, MemorySearchFilter, MemorySemanticSearchResult } from './memory-store.js';
|
|
27
|
+
import type { MemoryVectorStats } from './memory-vector-store.js';
|
|
28
|
+
/**
|
|
29
|
+
* Recall-prompt confidence floor. Tied to the store's own baseline: MemoryStore.add
|
|
30
|
+
* stamps new records at confidence 60. This is NOT a number chosen to make things
|
|
31
|
+
* pass — it is the store's own definition of "a real, usable fact."
|
|
32
|
+
*/
|
|
33
|
+
export declare const MIN_PROMPT_MEMORY_CONFIDENCE = 60;
|
|
34
|
+
export interface MemoryPromptEligibility {
|
|
35
|
+
readonly eligible: boolean;
|
|
36
|
+
/** Why this record did or did not clear the recall floor — confidence, review state, and provenance, never silent. */
|
|
37
|
+
readonly reason: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Recall-eligibility decision for one record, with an honest human-readable reason
|
|
41
|
+
* attached (never a silent yes/no). This is the receipt every surface surfaces.
|
|
42
|
+
*
|
|
43
|
+
* Flagged records (stale/contradicted) are excluded outright regardless of
|
|
44
|
+
* confidence. Everything else is judged on its own stored confidence against
|
|
45
|
+
* MIN_PROMPT_MEMORY_CONFIDENCE — the store's own baseline. Nothing is blanket-boosted.
|
|
46
|
+
*/
|
|
47
|
+
export declare function describeMemoryPromptEligibility(record: MemoryRecord): MemoryPromptEligibility;
|
|
48
|
+
export declare function isPromptActiveMemory(record: MemoryRecord): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* A HARD unavailable reason: the semantic index cannot be consulted at all, so a
|
|
51
|
+
* search must fall back to a literal scan and SAY SO — never a silent empty result
|
|
52
|
+
* that reads as "no memory matches" when the index was never asked. Returns null
|
|
53
|
+
* when the index is available and can be consulted.
|
|
54
|
+
*/
|
|
55
|
+
export declare function describeMemoryIndexUnavailable(stats: MemoryVectorStats): string | null;
|
|
56
|
+
/**
|
|
57
|
+
* A SOFT caveat: the index is up and consulted, but running on the built-in
|
|
58
|
+
* hashed-only fallback embedding provider rather than a modeled semantic provider.
|
|
59
|
+
* Still ranks real matches better than a literal scan, but say so rather than
|
|
60
|
+
* presenting it as equivalent. Returns null when a real provider is configured.
|
|
61
|
+
*/
|
|
62
|
+
export declare function describeMemoryIndexCaveat(stats: MemoryVectorStats): string | null;
|
|
63
|
+
/**
|
|
64
|
+
* The minimal read surface a honest search needs. MemoryStore (and MemoryRegistry)
|
|
65
|
+
* satisfy this structurally — the function stays decoupled from either concrete
|
|
66
|
+
* class so it can run over any store that exposes the three read paths.
|
|
67
|
+
*/
|
|
68
|
+
export interface HonestSearchStore {
|
|
69
|
+
search(filter: MemorySearchFilter): MemoryRecord[];
|
|
70
|
+
searchSemantic(filter: MemorySearchFilter): MemorySemanticSearchResult[];
|
|
71
|
+
vectorStats(): MemoryVectorStats;
|
|
72
|
+
}
|
|
73
|
+
export interface HonestMemorySearchOptions {
|
|
74
|
+
/**
|
|
75
|
+
* Apply the recall-INJECTION contract to the result set: exclude flagged
|
|
76
|
+
* (stale/contradicted) records outright and drop records below the confidence
|
|
77
|
+
* floor, counting each exclusion honestly. Off by default — a review/browse
|
|
78
|
+
* caller wants to SEE flagged and low-confidence records; only a prompt-recall
|
|
79
|
+
* caller filters them out.
|
|
80
|
+
*/
|
|
81
|
+
readonly recall?: boolean | undefined;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* The honest search envelope. `records` is what a caller should use; the rest is
|
|
85
|
+
* the receipt: which path actually ran, and — when a degraded path was taken —
|
|
86
|
+
* WHY, out loud. A wire client and a local surface serialize the SAME envelope, so
|
|
87
|
+
* the honesty contract cannot be re-weakened per surface.
|
|
88
|
+
*/
|
|
89
|
+
export interface HonestMemorySearchResult {
|
|
90
|
+
readonly records: readonly MemoryRecord[];
|
|
91
|
+
/** The path that actually ran. `'literal'` even when semantic was requested but the index could not be consulted. */
|
|
92
|
+
readonly mode: 'literal' | 'semantic';
|
|
93
|
+
readonly requestedSemantic: boolean;
|
|
94
|
+
/** Non-null ONLY when semantic was requested and the index could not be consulted, forcing the literal fallback. The stated reason — never a silent empty. */
|
|
95
|
+
readonly indexUnavailableReason: string | null;
|
|
96
|
+
/** Soft caveat when the semantic path ran on the hashed-only fallback provider. */
|
|
97
|
+
readonly caveat: string | null;
|
|
98
|
+
/** Whether the recall-injection contract filtered the set (options.recall). */
|
|
99
|
+
readonly recallFiltered: boolean;
|
|
100
|
+
readonly excludedFlaggedCount: number;
|
|
101
|
+
readonly excludedBelowFloorCount: number;
|
|
102
|
+
/** Result count BEFORE any recall-injection filtering — so a caller can tell "index empty" from "everything filtered out". */
|
|
103
|
+
readonly totalBeforeRecallFilter: number;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Run a search that HONORS the recall-honesty contract end to end:
|
|
107
|
+
* - semantic requested + index consultable → semantic ranking (+ soft caveat when
|
|
108
|
+
* on the hashed fallback provider);
|
|
109
|
+
* - semantic requested + index NOT consultable → literal scan WITH the stated
|
|
110
|
+
* `indexUnavailableReason`, never a silent empty that reads as "nothing stored";
|
|
111
|
+
* - `recall: true` → flagged records excluded outright and sub-floor records
|
|
112
|
+
* dropped, each exclusion counted rather than silently vanished.
|
|
113
|
+
*
|
|
114
|
+
* This is the ONE composition every surface (daemon route, wire client, offline
|
|
115
|
+
* local store) calls, so the contract is applied identically everywhere.
|
|
116
|
+
*/
|
|
117
|
+
export declare function runHonestMemorySearch(store: HonestSearchStore, filter?: MemorySearchFilter, options?: HonestMemorySearchOptions): HonestMemorySearchResult;
|
|
118
|
+
//# sourceMappingURL=memory-recall-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-recall-contract.d.ts","sourceRoot":"","sources":["../../../src/platform/state/memory-recall-contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AACtG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAGlE;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAE/C,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,sHAAsH;IACtH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAOD;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,YAAY,GAAG,uBAAuB,CAkB7F;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAElE;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI,CAKtF;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI,CAKjF;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY,EAAE,CAAC;IACnD,cAAc,CAAC,MAAM,EAAE,kBAAkB,GAAG,0BAA0B,EAAE,CAAC;IACzE,WAAW,IAAI,iBAAiB,CAAC;CAClC;AAED,MAAM,WAAW,yBAAyB;IACxC;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACvC;AAED;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;IAC1C,qHAAqH;IACrH,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,UAAU,CAAC;IACtC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC,8JAA8J;IAC9J,QAAQ,CAAC,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/C,mFAAmF;IACnF,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,+EAA+E;IAC/E,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC,8HAA8H;IAC9H,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;CAC1C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,iBAAiB,EACxB,MAAM,GAAE,kBAAuB,EAC/B,OAAO,GAAE,yBAA8B,GACtC,wBAAwB,CA+D1B"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* memory-recall-contract.ts — the CROSS-SURFACE recall-honesty contract (see CHANGELOG 1.0.0).
|
|
3
|
+
*
|
|
4
|
+
* PROVENANCE. This is the agent's memory-honesty discipline, promoted
|
|
5
|
+
* verbatim from a single surface (the agent's memory-prompt.ts) into the SDK so it
|
|
6
|
+
* is ONE shared contract, not a discipline re-derived (and re-weakened) per surface.
|
|
7
|
+
* Under memory unification the store is unified and cross-surface, which multiplies the cost of a
|
|
8
|
+
* dishonest recall — so this discipline becomes MORE load-bearing, not less. A
|
|
9
|
+
* unified store must not be able to lie more loudly than the siloed one did.
|
|
10
|
+
*
|
|
11
|
+
* The contract is three rules:
|
|
12
|
+
* 1. INJECTION FLOOR = the store's own declared baseline trust (60), never higher.
|
|
13
|
+
* MemoryStore.add() stamps every new record at confidence 60 unless the caller
|
|
14
|
+
* says otherwise. A floor above 60 would starve every honestly-stored fact — a
|
|
15
|
+
* freshly-learned fact could never clear recall on its own. The floor trusts a
|
|
16
|
+
* record exactly as much as the store already vouches for it; anything stored
|
|
17
|
+
* BELOW 60 (explicitly marked less certain) still does not qualify.
|
|
18
|
+
* 2. FLAGGED RECORDS ARE NEVER INJECTED. stale/contradicted records are excluded
|
|
19
|
+
* outright, regardless of confidence — the surface already knows they are wrong
|
|
20
|
+
* or superseded, so no confidence number buys them back into a prompt.
|
|
21
|
+
* 3. DEGRADED STATES ARE HONEST, NOT SILENT. an unavailable semantic index yields
|
|
22
|
+
* a STATED reason and a literal fallback — never a silent empty result that
|
|
23
|
+
* reads as "nothing was ever stored." 'no match' and 'index unavailable' are
|
|
24
|
+
* distinct and both said out loud.
|
|
25
|
+
*/
|
|
26
|
+
import { HASHED_MEMORY_EMBEDDING_PROVIDER } from './memory-embeddings.js';
|
|
27
|
+
/**
|
|
28
|
+
* Recall-prompt confidence floor. Tied to the store's own baseline: MemoryStore.add
|
|
29
|
+
* stamps new records at confidence 60. This is NOT a number chosen to make things
|
|
30
|
+
* pass — it is the store's own definition of "a real, usable fact."
|
|
31
|
+
*/
|
|
32
|
+
export const MIN_PROMPT_MEMORY_CONFIDENCE = 60;
|
|
33
|
+
function provenanceSummary(record) {
|
|
34
|
+
if (record.provenance.length === 0)
|
|
35
|
+
return 'no provenance recorded';
|
|
36
|
+
return `provenance ${record.provenance.slice(0, 2).map((entry) => `${entry.kind}:${entry.ref}`).join(', ')}`;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Recall-eligibility decision for one record, with an honest human-readable reason
|
|
40
|
+
* attached (never a silent yes/no). This is the receipt every surface surfaces.
|
|
41
|
+
*
|
|
42
|
+
* Flagged records (stale/contradicted) are excluded outright regardless of
|
|
43
|
+
* confidence. Everything else is judged on its own stored confidence against
|
|
44
|
+
* MIN_PROMPT_MEMORY_CONFIDENCE — the store's own baseline. Nothing is blanket-boosted.
|
|
45
|
+
*/
|
|
46
|
+
export function describeMemoryPromptEligibility(record) {
|
|
47
|
+
const provenance = provenanceSummary(record);
|
|
48
|
+
if (record.reviewState === 'stale' || record.reviewState === 'contradicted') {
|
|
49
|
+
return {
|
|
50
|
+
eligible: false,
|
|
51
|
+
reason: `reviewState is ${record.reviewState} — flagged memory is never injected regardless of confidence (${provenance})`,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
if (record.confidence < MIN_PROMPT_MEMORY_CONFIDENCE) {
|
|
55
|
+
return {
|
|
56
|
+
eligible: false,
|
|
57
|
+
reason: `confidence ${record.confidence}% is below the ${MIN_PROMPT_MEMORY_CONFIDENCE}% recall floor (${provenance})`,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
return {
|
|
61
|
+
eligible: true,
|
|
62
|
+
reason: `confidence ${record.confidence}% clears the ${MIN_PROMPT_MEMORY_CONFIDENCE}% recall floor, reviewState ${record.reviewState} (${provenance})`,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
export function isPromptActiveMemory(record) {
|
|
66
|
+
return describeMemoryPromptEligibility(record).eligible;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* A HARD unavailable reason: the semantic index cannot be consulted at all, so a
|
|
70
|
+
* search must fall back to a literal scan and SAY SO — never a silent empty result
|
|
71
|
+
* that reads as "no memory matches" when the index was never asked. Returns null
|
|
72
|
+
* when the index is available and can be consulted.
|
|
73
|
+
*/
|
|
74
|
+
export function describeMemoryIndexUnavailable(stats) {
|
|
75
|
+
if (!stats.enabled)
|
|
76
|
+
return 'the semantic memory index is disabled for this store';
|
|
77
|
+
if (!stats.available)
|
|
78
|
+
return `the semantic memory index is unavailable${stats.error ? `: ${stats.error}` : ''}`;
|
|
79
|
+
if (stats.indexedRecords === 0)
|
|
80
|
+
return 'the semantic memory index has no indexed records yet';
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* A SOFT caveat: the index is up and consulted, but running on the built-in
|
|
85
|
+
* hashed-only fallback embedding provider rather than a modeled semantic provider.
|
|
86
|
+
* Still ranks real matches better than a literal scan, but say so rather than
|
|
87
|
+
* presenting it as equivalent. Returns null when a real provider is configured.
|
|
88
|
+
*/
|
|
89
|
+
export function describeMemoryIndexCaveat(stats) {
|
|
90
|
+
if (stats.embeddingProviderId === HASHED_MEMORY_EMBEDDING_PROVIDER.id) {
|
|
91
|
+
return 'running on the hashed-only fallback embedding provider (no dedicated semantic model configured) — ranking is approximate, not modeled semantic understanding';
|
|
92
|
+
}
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Run a search that HONORS the recall-honesty contract end to end:
|
|
97
|
+
* - semantic requested + index consultable → semantic ranking (+ soft caveat when
|
|
98
|
+
* on the hashed fallback provider);
|
|
99
|
+
* - semantic requested + index NOT consultable → literal scan WITH the stated
|
|
100
|
+
* `indexUnavailableReason`, never a silent empty that reads as "nothing stored";
|
|
101
|
+
* - `recall: true` → flagged records excluded outright and sub-floor records
|
|
102
|
+
* dropped, each exclusion counted rather than silently vanished.
|
|
103
|
+
*
|
|
104
|
+
* This is the ONE composition every surface (daemon route, wire client, offline
|
|
105
|
+
* local store) calls, so the contract is applied identically everywhere.
|
|
106
|
+
*/
|
|
107
|
+
export function runHonestMemorySearch(store, filter = {}, options = {}) {
|
|
108
|
+
const requestedSemantic = filter.semantic === true;
|
|
109
|
+
let mode = 'literal';
|
|
110
|
+
let indexUnavailableReason = null;
|
|
111
|
+
let caveat = null;
|
|
112
|
+
let baseRecords;
|
|
113
|
+
if (requestedSemantic) {
|
|
114
|
+
const stats = store.vectorStats();
|
|
115
|
+
indexUnavailableReason = describeMemoryIndexUnavailable(stats);
|
|
116
|
+
if (indexUnavailableReason !== null) {
|
|
117
|
+
// Honest degrade: the index cannot be consulted, so fall back to a literal
|
|
118
|
+
// scan and SAY SO via indexUnavailableReason.
|
|
119
|
+
baseRecords = store.search({ ...filter, semantic: false });
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
mode = 'semantic';
|
|
123
|
+
caveat = describeMemoryIndexCaveat(stats);
|
|
124
|
+
baseRecords = store.searchSemantic(filter).map((entry) => entry.record);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
baseRecords = store.search(filter);
|
|
129
|
+
}
|
|
130
|
+
const totalBeforeRecallFilter = baseRecords.length;
|
|
131
|
+
if (!options.recall) {
|
|
132
|
+
return {
|
|
133
|
+
records: baseRecords,
|
|
134
|
+
mode,
|
|
135
|
+
requestedSemantic,
|
|
136
|
+
indexUnavailableReason,
|
|
137
|
+
caveat,
|
|
138
|
+
recallFiltered: false,
|
|
139
|
+
excludedFlaggedCount: 0,
|
|
140
|
+
excludedBelowFloorCount: 0,
|
|
141
|
+
totalBeforeRecallFilter,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
const kept = [];
|
|
145
|
+
let excludedFlaggedCount = 0;
|
|
146
|
+
let excludedBelowFloorCount = 0;
|
|
147
|
+
for (const record of baseRecords) {
|
|
148
|
+
if (isPromptActiveMemory(record)) {
|
|
149
|
+
kept.push(record);
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
if (record.reviewState === 'stale' || record.reviewState === 'contradicted') {
|
|
153
|
+
excludedFlaggedCount += 1;
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
excludedBelowFloorCount += 1;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return {
|
|
160
|
+
records: kept,
|
|
161
|
+
mode,
|
|
162
|
+
requestedSemantic,
|
|
163
|
+
indexUnavailableReason,
|
|
164
|
+
caveat,
|
|
165
|
+
recallFiltered: true,
|
|
166
|
+
excludedFlaggedCount,
|
|
167
|
+
excludedBelowFloorCount,
|
|
168
|
+
totalBeforeRecallFilter,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { MemoryAddOptions, MemoryBundle, MemoryDoctorReport, MemoryLink, MemoryRecord, MemoryReviewPatch, MemoryScope, MemorySearchFilter, MemorySemanticSearchResult, MemoryStore } from './memory-store.js';
|
|
2
2
|
import type { MemoryVectorStats } from './memory-vector-store.js';
|
|
3
3
|
import type { MemoryImportResult } from './memory-store.js';
|
|
4
|
+
import { type HonestMemorySearchOptions, type HonestMemorySearchResult } from './memory-recall-contract.js';
|
|
4
5
|
/**
|
|
5
6
|
* MemoryRegistry — thin observable wrapper around the MemoryStore.
|
|
6
7
|
* Panels subscribe via listeners; commands push/retrieve through this.
|
|
@@ -15,6 +16,13 @@ export declare class MemoryRegistry {
|
|
|
15
16
|
add(opts: MemoryAddOptions): Promise<MemoryRecord>;
|
|
16
17
|
search(filter?: MemorySearchFilter): MemoryRecord[];
|
|
17
18
|
searchSemantic(filter?: MemorySearchFilter): MemorySemanticSearchResult[];
|
|
19
|
+
/**
|
|
20
|
+
* Search honoring the recall-honesty contract: semantic-or-literal with a stated
|
|
21
|
+
* fallback reason when the index is unavailable, and (with `options.recall`) the
|
|
22
|
+
* flagged/confidence-floor exclusion. This is the method a wire client and an
|
|
23
|
+
* offline surface both route through, so the honesty is identical either way.
|
|
24
|
+
*/
|
|
25
|
+
honestSearch(filter?: MemorySearchFilter, options?: HonestMemorySearchOptions): HonestMemorySearchResult;
|
|
18
26
|
rebuildVectors(): MemoryVectorStats;
|
|
19
27
|
rebuildVectorsAsync(): Promise<MemoryVectorStats>;
|
|
20
28
|
vectorStats(): MemoryVectorStats;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-registry.d.ts","sourceRoot":"","sources":["../../../src/platform/state/memory-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACnN,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"memory-registry.d.ts","sourceRoot":"","sources":["../../../src/platform/state/memory-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACnN,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAyB,KAAK,yBAAyB,EAAE,KAAK,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAEnI;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,SAAS,CAAyB;gBAE9B,KAAK,EAAE,WAAW;IAI9B,QAAQ,IAAI,WAAW;IAIvB,SAAS,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAOrC,OAAO,CAAC,MAAM;IAIR,GAAG,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC;IAMxD,MAAM,CAAC,MAAM,GAAE,kBAAuB,GAAG,YAAY,EAAE;IAIvD,cAAc,CAAC,MAAM,GAAE,kBAAuB,GAAG,0BAA0B,EAAE;IAI7E;;;;;OAKG;IACH,YAAY,CAAC,MAAM,GAAE,kBAAuB,EAAE,OAAO,GAAE,yBAA8B,GAAG,wBAAwB;IAIhH,cAAc,IAAI,iBAAiB;IAI7B,mBAAmB,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAIvD,WAAW,IAAI,iBAAiB;IAI1B,MAAM,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAI3C,WAAW,CAAC,KAAK,SAAK,EAAE,KAAK,CAAC,EAAE,WAAW,GAAG,YAAY,EAAE;IAI5D,YAAY,CAAC,MAAM,GAAE,kBAAuB,GAAG,YAAY;IAIrD,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAMrE,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAI9B,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAMtF,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,EAAE;IAIlC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,KAAK,CAAC,EAAE,WAAW,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,YAAY,GAAG,IAAI;IAM3H,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,YAAY,GAAG,IAAI;IAMjE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAM3B,MAAM,IAAI,YAAY,EAAE;CAGzB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { runHonestMemorySearch } from './memory-recall-contract.js';
|
|
1
2
|
/**
|
|
2
3
|
* MemoryRegistry — thin observable wrapper around the MemoryStore.
|
|
3
4
|
* Panels subscribe via listeners; commands push/retrieve through this.
|
|
@@ -32,6 +33,15 @@ export class MemoryRegistry {
|
|
|
32
33
|
searchSemantic(filter = {}) {
|
|
33
34
|
return this.store.searchSemantic(filter);
|
|
34
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Search honoring the recall-honesty contract: semantic-or-literal with a stated
|
|
38
|
+
* fallback reason when the index is unavailable, and (with `options.recall`) the
|
|
39
|
+
* flagged/confidence-floor exclusion. This is the method a wire client and an
|
|
40
|
+
* offline surface both route through, so the honesty is identical either way.
|
|
41
|
+
*/
|
|
42
|
+
honestSearch(filter = {}, options = {}) {
|
|
43
|
+
return runHonestMemorySearch(this.store, filter, options);
|
|
44
|
+
}
|
|
35
45
|
rebuildVectors() {
|
|
36
46
|
return this.store.rebuildVectorIndex();
|
|
37
47
|
}
|
|
@@ -141,6 +141,8 @@ export declare class MemoryStore {
|
|
|
141
141
|
constructor(dbPath: string | undefined, options: MemoryStoreOptions);
|
|
142
142
|
init(): Promise<void>;
|
|
143
143
|
get isReady(): boolean;
|
|
144
|
+
/** The on-disk database path backing this store, or null when ephemeral. */
|
|
145
|
+
get dbPath(): string | null;
|
|
144
146
|
/** Add a new memory record. Returns the created record. */
|
|
145
147
|
add(opts: MemoryAddOptions): Promise<MemoryRecord>;
|
|
146
148
|
/** Retrieve a single record by ID. */
|