@cleocode/core 2026.4.31 → 2026.4.36
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/adapters/adapter-registry.js +64 -0
- package/dist/adapters/adapter-registry.js.map +1 -0
- package/dist/adapters/discovery.js +83 -0
- package/dist/adapters/discovery.js.map +1 -0
- package/dist/adapters/index.js +9 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/manager.js +260 -0
- package/dist/adapters/manager.js.map +1 -0
- package/dist/admin/export-tasks.js +171 -0
- package/dist/admin/export-tasks.js.map +1 -0
- package/dist/admin/export.js +103 -0
- package/dist/admin/export.js.map +1 -0
- package/dist/admin/help.js +106 -0
- package/dist/admin/help.js.map +1 -0
- package/dist/admin/import-tasks.js +182 -0
- package/dist/admin/import-tasks.js.map +1 -0
- package/dist/admin/import.js +129 -0
- package/dist/admin/import.js.map +1 -0
- package/dist/admin/index.js +13 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/adrs/find.js +134 -0
- package/dist/adrs/find.js.map +1 -0
- package/dist/adrs/index.js +15 -0
- package/dist/adrs/index.js.map +1 -0
- package/dist/adrs/link-pipeline.js +160 -0
- package/dist/adrs/link-pipeline.js.map +1 -0
- package/dist/adrs/list.js +43 -0
- package/dist/adrs/list.js.map +1 -0
- package/dist/adrs/parse.js +51 -0
- package/dist/adrs/parse.js.map +1 -0
- package/dist/adrs/show.js +22 -0
- package/dist/adrs/show.js.map +1 -0
- package/dist/adrs/sync.js +232 -0
- package/dist/adrs/sync.js.map +1 -0
- package/dist/adrs/types.js +9 -0
- package/dist/adrs/types.js.map +1 -0
- package/dist/adrs/validate.js +57 -0
- package/dist/adrs/validate.js.map +1 -0
- package/dist/agents/agent-registry.js +288 -0
- package/dist/agents/agent-registry.js.map +1 -0
- package/dist/agents/agent-schema.js +82 -0
- package/dist/agents/agent-schema.js.map +1 -0
- package/dist/agents/capacity.js +116 -0
- package/dist/agents/capacity.js.map +1 -0
- package/dist/agents/execution-learning.js +474 -0
- package/dist/agents/execution-learning.js.map +1 -0
- package/dist/agents/health-monitor.js +217 -0
- package/dist/agents/health-monitor.js.map +1 -0
- package/dist/agents/index.js +29 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/registry.js +314 -0
- package/dist/agents/registry.js.map +1 -0
- package/dist/agents/retry.js +215 -0
- package/dist/agents/retry.js.map +1 -0
- package/dist/audit-prune.js +94 -0
- package/dist/audit-prune.js.map +1 -0
- package/dist/audit.js +68 -0
- package/dist/audit.js.map +1 -0
- package/dist/backfill/index.js +229 -0
- package/dist/backfill/index.js.map +1 -0
- package/dist/bootstrap.js +435 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/caamp/adapter.js +259 -0
- package/dist/caamp/adapter.js.map +1 -0
- package/dist/caamp/capability-check.js +38 -0
- package/dist/caamp/capability-check.js.map +1 -0
- package/dist/caamp/index.js +21 -0
- package/dist/caamp/index.js.map +1 -0
- package/dist/caamp-init.js +16 -0
- package/dist/caamp-init.js.map +1 -0
- package/dist/cleo.js +322 -0
- package/dist/cleo.js.map +1 -0
- package/dist/code/index.js +14 -0
- package/dist/code/index.js.map +1 -0
- package/dist/code/outline.js +165 -0
- package/dist/code/outline.js.map +1 -0
- package/dist/code/parser.js +420 -0
- package/dist/code/parser.js.map +1 -0
- package/dist/code/search.js +135 -0
- package/dist/code/search.js.map +1 -0
- package/dist/code/unfold.js +155 -0
- package/dist/code/unfold.js.map +1 -0
- package/dist/codebase-map/analyzers/architecture.js +129 -0
- package/dist/codebase-map/analyzers/architecture.js.map +1 -0
- package/dist/codebase-map/analyzers/concerns.js +122 -0
- package/dist/codebase-map/analyzers/concerns.js.map +1 -0
- package/dist/codebase-map/analyzers/conventions.js +149 -0
- package/dist/codebase-map/analyzers/conventions.js.map +1 -0
- package/dist/codebase-map/analyzers/integrations.js +108 -0
- package/dist/codebase-map/analyzers/integrations.js.map +1 -0
- package/dist/codebase-map/analyzers/stack.js +117 -0
- package/dist/codebase-map/analyzers/stack.js.map +1 -0
- package/dist/codebase-map/analyzers/structure.js +137 -0
- package/dist/codebase-map/analyzers/structure.js.map +1 -0
- package/dist/codebase-map/analyzers/testing.js +118 -0
- package/dist/codebase-map/analyzers/testing.js.map +1 -0
- package/dist/codebase-map/index.js +57 -0
- package/dist/codebase-map/index.js.map +1 -0
- package/dist/codebase-map/store.js +122 -0
- package/dist/codebase-map/store.js.map +1 -0
- package/dist/codebase-map/summary.js +152 -0
- package/dist/codebase-map/summary.js.map +1 -0
- package/dist/compliance/index.js +288 -0
- package/dist/compliance/index.js.map +1 -0
- package/dist/compliance/protocol-enforcement.js +332 -0
- package/dist/compliance/protocol-enforcement.js.map +1 -0
- package/dist/compliance/protocol-rules.js +786 -0
- package/dist/compliance/protocol-rules.js.map +1 -0
- package/dist/compliance/protocol-types.js +79 -0
- package/dist/compliance/protocol-types.js.map +1 -0
- package/dist/compliance/store.js +53 -0
- package/dist/compliance/store.js.map +1 -0
- package/dist/conduit/conduit-client.js +107 -0
- package/dist/conduit/conduit-client.js.map +1 -0
- package/dist/conduit/factory.js +52 -0
- package/dist/conduit/factory.js.map +1 -0
- package/dist/conduit/http-transport.js +155 -0
- package/dist/conduit/http-transport.js.map +1 -0
- package/dist/conduit/index.js +15 -0
- package/dist/conduit/index.js.map +1 -0
- package/dist/conduit/local-transport.js +255 -0
- package/dist/conduit/local-transport.js.map +1 -0
- package/dist/conduit/sse-transport.js +299 -0
- package/dist/conduit/sse-transport.js.map +1 -0
- package/dist/config/build-config.js +29 -0
- package/dist/config/build-config.js.map +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +407 -0
- package/dist/config.js.map +1 -0
- package/dist/constants.js +18 -0
- package/dist/constants.js.map +1 -0
- package/dist/context/index.js +137 -0
- package/dist/context/index.js.map +1 -0
- package/dist/crypto/credentials.js +219 -0
- package/dist/crypto/credentials.js.map +1 -0
- package/dist/discovery.js +182 -0
- package/dist/discovery.js.map +1 -0
- package/dist/engine-result.js +12 -0
- package/dist/engine-result.js.map +1 -0
- package/dist/error-catalog.js +404 -0
- package/dist/error-catalog.js.map +1 -0
- package/dist/error-registry.js +393 -0
- package/dist/error-registry.js.map +1 -0
- package/dist/errors.js +173 -0
- package/dist/errors.js.map +1 -0
- package/dist/hooks/handlers/agent-hooks.js +106 -0
- package/dist/hooks/handlers/agent-hooks.js.map +1 -0
- package/dist/hooks/handlers/conduit-hooks.d.ts +72 -0
- package/dist/hooks/handlers/conduit-hooks.d.ts.map +1 -0
- package/dist/hooks/handlers/conduit-hooks.js +229 -0
- package/dist/hooks/handlers/conduit-hooks.js.map +1 -0
- package/dist/hooks/handlers/context-hooks.js +111 -0
- package/dist/hooks/handlers/context-hooks.js.map +1 -0
- package/dist/hooks/handlers/error-hooks.js +52 -0
- package/dist/hooks/handlers/error-hooks.js.map +1 -0
- package/dist/hooks/handlers/file-hooks.js +104 -0
- package/dist/hooks/handlers/file-hooks.js.map +1 -0
- package/dist/hooks/handlers/handler-helpers.js +61 -0
- package/dist/hooks/handlers/handler-helpers.js.map +1 -0
- package/dist/hooks/handlers/index.d.ts +6 -0
- package/dist/hooks/handlers/index.d.ts.map +1 -1
- package/dist/hooks/handlers/index.js +37 -0
- package/dist/hooks/handlers/index.js.map +1 -0
- package/dist/hooks/handlers/intelligence-hooks.d.ts +26 -0
- package/dist/hooks/handlers/intelligence-hooks.d.ts.map +1 -0
- package/dist/hooks/handlers/intelligence-hooks.js +69 -0
- package/dist/hooks/handlers/intelligence-hooks.js.map +1 -0
- package/dist/hooks/handlers/memory-bridge-refresh.js +42 -0
- package/dist/hooks/handlers/memory-bridge-refresh.js.map +1 -0
- package/dist/hooks/handlers/notification-hooks.js +62 -0
- package/dist/hooks/handlers/notification-hooks.js.map +1 -0
- package/dist/hooks/handlers/session-hooks.d.ts +30 -0
- package/dist/hooks/handlers/session-hooks.d.ts.map +1 -1
- package/dist/hooks/handlers/session-hooks.js +190 -0
- package/dist/hooks/handlers/session-hooks.js.map +1 -0
- package/dist/hooks/handlers/task-hooks.d.ts +2 -0
- package/dist/hooks/handlers/task-hooks.d.ts.map +1 -1
- package/dist/hooks/handlers/task-hooks.js +79 -0
- package/dist/hooks/handlers/task-hooks.js.map +1 -0
- package/dist/hooks/handlers/watchdog-hooks.d.ts +49 -0
- package/dist/hooks/handlers/watchdog-hooks.d.ts.map +1 -0
- package/dist/hooks/handlers/watchdog-hooks.js +162 -0
- package/dist/hooks/handlers/watchdog-hooks.js.map +1 -0
- package/dist/hooks/handlers/work-capture-hooks.js +165 -0
- package/dist/hooks/handlers/work-capture-hooks.js.map +1 -0
- package/dist/hooks/index.js +13 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/payload-schemas.js +220 -0
- package/dist/hooks/payload-schemas.js.map +1 -0
- package/dist/hooks/provider-hooks.js +66 -0
- package/dist/hooks/provider-hooks.js.map +1 -0
- package/dist/hooks/registry.js +229 -0
- package/dist/hooks/registry.js.map +1 -0
- package/dist/hooks/types.js +66 -0
- package/dist/hooks/types.js.map +1 -0
- package/dist/hooks.js +136 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.js +56736 -47002
- package/dist/index.js.map +4 -4
- package/dist/init.js +920 -0
- package/dist/init.js.map +1 -0
- package/dist/inject/index.js +82 -0
- package/dist/inject/index.js.map +1 -0
- package/dist/injection.d.ts +13 -1
- package/dist/injection.d.ts.map +1 -1
- package/dist/injection.js +377 -0
- package/dist/injection.js.map +1 -0
- package/dist/intelligence/adaptive-validation.js +497 -0
- package/dist/intelligence/adaptive-validation.js.map +1 -0
- package/dist/intelligence/impact.js +675 -0
- package/dist/intelligence/impact.js.map +1 -0
- package/dist/intelligence/index.js +22 -0
- package/dist/intelligence/index.js.map +1 -0
- package/dist/intelligence/patterns.js +492 -0
- package/dist/intelligence/patterns.js.map +1 -0
- package/dist/intelligence/prediction.js +499 -0
- package/dist/intelligence/prediction.js.map +1 -0
- package/dist/intelligence/types.js +13 -0
- package/dist/intelligence/types.js.map +1 -0
- package/dist/internal.d.ts +10 -3
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +321 -0
- package/dist/internal.js.map +1 -0
- package/dist/issue/create.js +121 -0
- package/dist/issue/create.js.map +1 -0
- package/dist/issue/diagnostics.js +59 -0
- package/dist/issue/diagnostics.js.map +1 -0
- package/dist/issue/index.js +10 -0
- package/dist/issue/index.js.map +1 -0
- package/dist/issue/template-parser.js +267 -0
- package/dist/issue/template-parser.js.map +1 -0
- package/dist/json-schema-validator.js +76 -0
- package/dist/json-schema-validator.js.map +1 -0
- package/dist/lib/index.js +11 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/retry.js +152 -0
- package/dist/lib/retry.js.map +1 -0
- package/dist/lib/tree-sitter-languages.js +75 -0
- package/dist/lib/tree-sitter-languages.js.map +1 -0
- package/dist/lifecycle/chain-composition.js +152 -0
- package/dist/lifecycle/chain-composition.js.map +1 -0
- package/dist/lifecycle/chain-store.js +246 -0
- package/dist/lifecycle/chain-store.js.map +1 -0
- package/dist/lifecycle/consolidate-rcasd.js +352 -0
- package/dist/lifecycle/consolidate-rcasd.js.map +1 -0
- package/dist/lifecycle/default-chain.js +176 -0
- package/dist/lifecycle/default-chain.js.map +1 -0
- package/dist/lifecycle/evidence.js +180 -0
- package/dist/lifecycle/evidence.js.map +1 -0
- package/dist/lifecycle/frontmatter.js +363 -0
- package/dist/lifecycle/frontmatter.js.map +1 -0
- package/dist/lifecycle/index.js +756 -0
- package/dist/lifecycle/index.js.map +1 -0
- package/dist/lifecycle/pipeline.js +656 -0
- package/dist/lifecycle/pipeline.js.map +1 -0
- package/dist/lifecycle/rcasd-index.js +326 -0
- package/dist/lifecycle/rcasd-index.js.map +1 -0
- package/dist/lifecycle/rcasd-paths.js +220 -0
- package/dist/lifecycle/rcasd-paths.js.map +1 -0
- package/dist/lifecycle/resume.js +864 -0
- package/dist/lifecycle/resume.js.map +1 -0
- package/dist/lifecycle/stage-artifacts.js +94 -0
- package/dist/lifecycle/stage-artifacts.js.map +1 -0
- package/dist/lifecycle/stage-guidance.js +234 -0
- package/dist/lifecycle/stage-guidance.js.map +1 -0
- package/dist/lifecycle/stages.js +534 -0
- package/dist/lifecycle/stages.js.map +1 -0
- package/dist/lifecycle/state-machine.js +516 -0
- package/dist/lifecycle/state-machine.js.map +1 -0
- package/dist/lifecycle/tessera-engine.js +249 -0
- package/dist/lifecycle/tessera-engine.js.map +1 -0
- package/dist/logger.js +140 -0
- package/dist/logger.js.map +1 -0
- package/dist/memory/anthropic-key-resolver.d.ts +35 -0
- package/dist/memory/anthropic-key-resolver.d.ts.map +1 -0
- package/dist/memory/anthropic-key-resolver.js +105 -0
- package/dist/memory/anthropic-key-resolver.js.map +1 -0
- package/dist/memory/auto-extract.d.ts +38 -42
- package/dist/memory/auto-extract.d.ts.map +1 -1
- package/dist/memory/auto-extract.js +77 -0
- package/dist/memory/auto-extract.js.map +1 -0
- package/dist/memory/brain-backfill.js +389 -0
- package/dist/memory/brain-backfill.js.map +1 -0
- package/dist/memory/brain-consolidator.d.ts +48 -0
- package/dist/memory/brain-consolidator.d.ts.map +1 -0
- package/dist/memory/brain-consolidator.js +294 -0
- package/dist/memory/brain-consolidator.js.map +1 -0
- package/dist/memory/brain-embedding.js +66 -0
- package/dist/memory/brain-embedding.js.map +1 -0
- package/dist/memory/brain-lifecycle.d.ts +83 -2
- package/dist/memory/brain-lifecycle.d.ts.map +1 -1
- package/dist/memory/brain-lifecycle.js +807 -0
- package/dist/memory/brain-lifecycle.js.map +1 -0
- package/dist/memory/brain-links.js +161 -0
- package/dist/memory/brain-links.js.map +1 -0
- package/dist/memory/brain-maintenance.js +114 -0
- package/dist/memory/brain-maintenance.js.map +1 -0
- package/dist/memory/brain-migration.js +149 -0
- package/dist/memory/brain-migration.js.map +1 -0
- package/dist/memory/brain-purge.js +243 -0
- package/dist/memory/brain-purge.js.map +1 -0
- package/dist/memory/brain-reasoning.js +215 -0
- package/dist/memory/brain-reasoning.js.map +1 -0
- package/dist/memory/brain-retrieval.d.ts +75 -1
- package/dist/memory/brain-retrieval.d.ts.map +1 -1
- package/dist/memory/brain-retrieval.js +1044 -0
- package/dist/memory/brain-retrieval.js.map +1 -0
- package/dist/memory/brain-row-types.js +10 -0
- package/dist/memory/brain-row-types.js.map +1 -0
- package/dist/memory/brain-search.d.ts +82 -15
- package/dist/memory/brain-search.d.ts.map +1 -1
- package/dist/memory/brain-search.js +613 -0
- package/dist/memory/brain-search.js.map +1 -0
- package/dist/memory/brain-similarity.js +145 -0
- package/dist/memory/brain-similarity.js.map +1 -0
- package/dist/memory/claude-mem-migration.js +277 -0
- package/dist/memory/claude-mem-migration.js.map +1 -0
- package/dist/memory/decisions.d.ts.map +1 -1
- package/dist/memory/decisions.js +218 -0
- package/dist/memory/decisions.js.map +1 -0
- package/dist/memory/embedding-local.js +102 -0
- package/dist/memory/embedding-local.js.map +1 -0
- package/dist/memory/embedding-queue.js +271 -0
- package/dist/memory/embedding-queue.js.map +1 -0
- package/dist/memory/embedding-worker.js +58 -0
- package/dist/memory/embedding-worker.js.map +1 -0
- package/dist/memory/engine-compat.d.ts +16 -1
- package/dist/memory/engine-compat.d.ts.map +1 -1
- package/dist/memory/engine-compat.js +1561 -0
- package/dist/memory/engine-compat.js.map +1 -0
- package/dist/memory/extraction-gate.d.ts +139 -0
- package/dist/memory/extraction-gate.d.ts.map +1 -0
- package/dist/memory/extraction-gate.js +459 -0
- package/dist/memory/extraction-gate.js.map +1 -0
- package/dist/memory/graph-auto-populate.js +148 -0
- package/dist/memory/graph-auto-populate.js.map +1 -0
- package/dist/memory/graph-queries.js +290 -0
- package/dist/memory/graph-queries.js.map +1 -0
- package/dist/memory/index.d.ts +2 -0
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +1144 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/learnings.d.ts +14 -0
- package/dist/memory/learnings.d.ts.map +1 -1
- package/dist/memory/learnings.js +179 -0
- package/dist/memory/learnings.js.map +1 -0
- package/dist/memory/llm-extraction.d.ts +107 -0
- package/dist/memory/llm-extraction.d.ts.map +1 -0
- package/dist/memory/llm-extraction.js +425 -0
- package/dist/memory/llm-extraction.js.map +1 -0
- package/dist/memory/memory-bridge.js +382 -0
- package/dist/memory/memory-bridge.js.map +1 -0
- package/dist/memory/mental-model-injection.js +61 -0
- package/dist/memory/mental-model-injection.js.map +1 -0
- package/dist/memory/mental-model-queue.js +211 -0
- package/dist/memory/mental-model-queue.js.map +1 -0
- package/dist/memory/observer-reflector.d.ts +157 -0
- package/dist/memory/observer-reflector.d.ts.map +1 -0
- package/dist/memory/observer-reflector.js +626 -0
- package/dist/memory/observer-reflector.js.map +1 -0
- package/dist/memory/patterns.d.ts +24 -4
- package/dist/memory/patterns.d.ts.map +1 -1
- package/dist/memory/patterns.js +174 -0
- package/dist/memory/patterns.js.map +1 -0
- package/dist/memory/pipeline-manifest-sqlite.js +975 -0
- package/dist/memory/pipeline-manifest-sqlite.js.map +1 -0
- package/dist/memory/quality-scoring.d.ts +42 -5
- package/dist/memory/quality-scoring.d.ts.map +1 -1
- package/dist/memory/quality-scoring.js +182 -0
- package/dist/memory/quality-scoring.js.map +1 -0
- package/dist/memory/session-memory.js +331 -0
- package/dist/memory/session-memory.js.map +1 -0
- package/dist/metrics/ab-test.js +260 -0
- package/dist/metrics/ab-test.js.map +1 -0
- package/dist/metrics/aggregation.js +363 -0
- package/dist/metrics/aggregation.js.map +1 -0
- package/dist/metrics/common.js +64 -0
- package/dist/metrics/common.js.map +1 -0
- package/dist/metrics/enums.js +78 -0
- package/dist/metrics/enums.js.map +1 -0
- package/dist/metrics/index.js +19 -0
- package/dist/metrics/index.js.map +1 -0
- package/dist/metrics/model-provider-registry.js +88 -0
- package/dist/metrics/model-provider-registry.js.map +1 -0
- package/dist/metrics/otel-integration.js +263 -0
- package/dist/metrics/otel-integration.js.map +1 -0
- package/dist/metrics/provider-detection.js +103 -0
- package/dist/metrics/provider-detection.js.map +1 -0
- package/dist/metrics/token-estimation.js +253 -0
- package/dist/metrics/token-estimation.js.map +1 -0
- package/dist/metrics/token-service.js +450 -0
- package/dist/metrics/token-service.js.map +1 -0
- package/dist/migration/agent-outputs.js +316 -0
- package/dist/migration/agent-outputs.js.map +1 -0
- package/dist/migration/checksum.js +92 -0
- package/dist/migration/checksum.js.map +1 -0
- package/dist/migration/index.js +282 -0
- package/dist/migration/index.js.map +1 -0
- package/dist/migration/logger.js +360 -0
- package/dist/migration/logger.js.map +1 -0
- package/dist/migration/preflight.js +9 -0
- package/dist/migration/preflight.js.map +1 -0
- package/dist/migration/state.js +421 -0
- package/dist/migration/state.js.map +1 -0
- package/dist/migration/validate.js +241 -0
- package/dist/migration/validate.js.map +1 -0
- package/dist/mvi-helpers.js +73 -0
- package/dist/mvi-helpers.js.map +1 -0
- package/dist/nexus/deps.js +375 -0
- package/dist/nexus/deps.js.map +1 -0
- package/dist/nexus/discover.js +288 -0
- package/dist/nexus/discover.js.map +1 -0
- package/dist/nexus/hash.js +10 -0
- package/dist/nexus/hash.js.map +1 -0
- package/dist/nexus/index.js +40 -0
- package/dist/nexus/index.js.map +1 -0
- package/dist/nexus/migrate-json-to-sqlite.js +115 -0
- package/dist/nexus/migrate-json-to-sqlite.js.map +1 -0
- package/dist/nexus/nexus-bridge.d.ts +51 -0
- package/dist/nexus/nexus-bridge.d.ts.map +1 -0
- package/dist/nexus/nexus-bridge.js +321 -0
- package/dist/nexus/nexus-bridge.js.map +1 -0
- package/dist/nexus/permissions.js +105 -0
- package/dist/nexus/permissions.js.map +1 -0
- package/dist/nexus/query.js +175 -0
- package/dist/nexus/query.js.map +1 -0
- package/dist/nexus/registry.js +584 -0
- package/dist/nexus/registry.js.map +1 -0
- package/dist/nexus/sharing/index.js +288 -0
- package/dist/nexus/sharing/index.js.map +1 -0
- package/dist/nexus/transfer-types.js +8 -0
- package/dist/nexus/transfer-types.js.map +1 -0
- package/dist/nexus/transfer.js +271 -0
- package/dist/nexus/transfer.js.map +1 -0
- package/dist/nexus/workspace.js +355 -0
- package/dist/nexus/workspace.js.map +1 -0
- package/dist/observability/index.js +103 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/log-filter.js +63 -0
- package/dist/observability/log-filter.js.map +1 -0
- package/dist/observability/log-parser.js +99 -0
- package/dist/observability/log-parser.js.map +1 -0
- package/dist/observability/log-reader.js +139 -0
- package/dist/observability/log-reader.js.map +1 -0
- package/dist/observability/types.js +19 -0
- package/dist/observability/types.js.map +1 -0
- package/dist/orchestration/analyze.js +107 -0
- package/dist/orchestration/analyze.js.map +1 -0
- package/dist/orchestration/bootstrap.js +132 -0
- package/dist/orchestration/bootstrap.js.map +1 -0
- package/dist/orchestration/context.js +56 -0
- package/dist/orchestration/context.js.map +1 -0
- package/dist/orchestration/critical-path.js +100 -0
- package/dist/orchestration/critical-path.js.map +1 -0
- package/dist/orchestration/hierarchy.js +183 -0
- package/dist/orchestration/hierarchy.js.map +1 -0
- package/dist/orchestration/index.js +287 -0
- package/dist/orchestration/index.js.map +1 -0
- package/dist/orchestration/parallel.js +89 -0
- package/dist/orchestration/parallel.js.map +1 -0
- package/dist/orchestration/protocol-validators.js +815 -0
- package/dist/orchestration/protocol-validators.js.map +1 -0
- package/dist/orchestration/skill-ops.js +98 -0
- package/dist/orchestration/skill-ops.js.map +1 -0
- package/dist/orchestration/status.js +107 -0
- package/dist/orchestration/status.js.map +1 -0
- package/dist/orchestration/unblock.js +103 -0
- package/dist/orchestration/unblock.js.map +1 -0
- package/dist/orchestration/validate-spawn.js +67 -0
- package/dist/orchestration/validate-spawn.js.map +1 -0
- package/dist/orchestration/waves.js +86 -0
- package/dist/orchestration/waves.js.map +1 -0
- package/dist/otel/index.js +163 -0
- package/dist/otel/index.js.map +1 -0
- package/dist/output.js +164 -0
- package/dist/output.js.map +1 -0
- package/dist/pagination.js +64 -0
- package/dist/pagination.js.map +1 -0
- package/dist/paths.js +882 -0
- package/dist/paths.js.map +1 -0
- package/dist/phases/deps.js +372 -0
- package/dist/phases/deps.js.map +1 -0
- package/dist/phases/index.js +349 -0
- package/dist/phases/index.js.map +1 -0
- package/dist/pipeline/index.js +10 -0
- package/dist/pipeline/index.js.map +1 -0
- package/dist/pipeline/phase.js +45 -0
- package/dist/pipeline/phase.js.map +1 -0
- package/dist/platform.js +211 -0
- package/dist/platform.js.map +1 -0
- package/dist/project-info.js +84 -0
- package/dist/project-info.js.map +1 -0
- package/dist/reconciliation/index.js +10 -0
- package/dist/reconciliation/index.js.map +1 -0
- package/dist/reconciliation/link-store.js +175 -0
- package/dist/reconciliation/link-store.js.map +1 -0
- package/dist/reconciliation/reconciliation-engine.js +298 -0
- package/dist/reconciliation/reconciliation-engine.js.map +1 -0
- package/dist/release/artifacts.js +427 -0
- package/dist/release/artifacts.js.map +1 -0
- package/dist/release/changelog-writer.js +151 -0
- package/dist/release/changelog-writer.js.map +1 -0
- package/dist/release/channel.js +144 -0
- package/dist/release/channel.js.map +1 -0
- package/dist/release/ci.js +166 -0
- package/dist/release/ci.js.map +1 -0
- package/dist/release/github-pr.js +225 -0
- package/dist/release/github-pr.js.map +1 -0
- package/dist/release/guards.js +116 -0
- package/dist/release/guards.js.map +1 -0
- package/dist/release/index.js +22 -0
- package/dist/release/index.js.map +1 -0
- package/dist/release/release-config.js +158 -0
- package/dist/release/release-config.js.map +1 -0
- package/dist/release/release-manifest.js +1019 -0
- package/dist/release/release-manifest.js.map +1 -0
- package/dist/release/version-bump.js +255 -0
- package/dist/release/version-bump.js.map +1 -0
- package/dist/remote/index.js +257 -0
- package/dist/remote/index.js.map +1 -0
- package/dist/repair.js +130 -0
- package/dist/repair.js.map +1 -0
- package/dist/research/index.js +2 -0
- package/dist/research/index.js.map +1 -0
- package/dist/roadmap/index.js +59 -0
- package/dist/roadmap/index.js.map +1 -0
- package/dist/routing/capability-matrix.js +1556 -0
- package/dist/routing/capability-matrix.js.map +1 -0
- package/dist/routing/index.js +9 -0
- package/dist/routing/index.js.map +1 -0
- package/dist/scaffold.d.ts +18 -0
- package/dist/scaffold.d.ts.map +1 -1
- package/dist/scaffold.js +1798 -0
- package/dist/scaffold.js.map +1 -0
- package/dist/schema-management.js +295 -0
- package/dist/schema-management.js.map +1 -0
- package/dist/security/index.js +9 -0
- package/dist/security/index.js.map +1 -0
- package/dist/security/input-sanitization.js +326 -0
- package/dist/security/input-sanitization.js.map +1 -0
- package/dist/sequence/index.js +295 -0
- package/dist/sequence/index.js.map +1 -0
- package/dist/sessions/assumptions.js +54 -0
- package/dist/sessions/assumptions.js.map +1 -0
- package/dist/sessions/briefing.js +377 -0
- package/dist/sessions/briefing.js.map +1 -0
- package/dist/sessions/context-alert.js +222 -0
- package/dist/sessions/context-alert.js.map +1 -0
- package/dist/sessions/context-inject.js +61 -0
- package/dist/sessions/context-inject.js.map +1 -0
- package/dist/sessions/context-monitor.js +98 -0
- package/dist/sessions/context-monitor.js.map +1 -0
- package/dist/sessions/decisions.js +65 -0
- package/dist/sessions/decisions.js.map +1 -0
- package/dist/sessions/find.js +65 -0
- package/dist/sessions/find.js.map +1 -0
- package/dist/sessions/handoff.js +328 -0
- package/dist/sessions/handoff.js.map +1 -0
- package/dist/sessions/hitl-warnings.js +254 -0
- package/dist/sessions/hitl-warnings.js.map +1 -0
- package/dist/sessions/index.js +327 -0
- package/dist/sessions/index.js.map +1 -0
- package/dist/sessions/session-archive.js +40 -0
- package/dist/sessions/session-archive.js.map +1 -0
- package/dist/sessions/session-cleanup.js +59 -0
- package/dist/sessions/session-cleanup.js.map +1 -0
- package/dist/sessions/session-drift.js +134 -0
- package/dist/sessions/session-drift.js.map +1 -0
- package/dist/sessions/session-enforcement.js +144 -0
- package/dist/sessions/session-enforcement.js.map +1 -0
- package/dist/sessions/session-grade.js +253 -0
- package/dist/sessions/session-grade.js.map +1 -0
- package/dist/sessions/session-history.js +42 -0
- package/dist/sessions/session-history.js.map +1 -0
- package/dist/sessions/session-id.js +81 -0
- package/dist/sessions/session-id.js.map +1 -0
- package/dist/sessions/session-memory-bridge.js +30 -0
- package/dist/sessions/session-memory-bridge.js.map +1 -0
- package/dist/sessions/session-show.js +24 -0
- package/dist/sessions/session-show.js.map +1 -0
- package/dist/sessions/session-stats.js +69 -0
- package/dist/sessions/session-stats.js.map +1 -0
- package/dist/sessions/session-suspend.js +39 -0
- package/dist/sessions/session-suspend.js.map +1 -0
- package/dist/sessions/session-switch.js +51 -0
- package/dist/sessions/session-switch.js.map +1 -0
- package/dist/sessions/session-view.js +76 -0
- package/dist/sessions/session-view.js.map +1 -0
- package/dist/sessions/snapshot.js +213 -0
- package/dist/sessions/snapshot.js.map +1 -0
- package/dist/sessions/statusline-setup.js +85 -0
- package/dist/sessions/statusline-setup.js.map +1 -0
- package/dist/sessions/types.js +8 -0
- package/dist/sessions/types.js.map +1 -0
- package/dist/skills/agents/config.js +94 -0
- package/dist/skills/agents/config.js.map +1 -0
- package/dist/skills/agents/install.js +116 -0
- package/dist/skills/agents/install.js.map +1 -0
- package/dist/skills/agents/registry.js +161 -0
- package/dist/skills/agents/registry.js.map +1 -0
- package/dist/skills/discovery.js +333 -0
- package/dist/skills/discovery.js.map +1 -0
- package/dist/skills/dispatch.js +347 -0
- package/dist/skills/dispatch.js.map +1 -0
- package/dist/skills/dynamic-skill-generator.js +87 -0
- package/dist/skills/dynamic-skill-generator.js.map +1 -0
- package/dist/skills/index.js +44 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/injection/subagent.js +195 -0
- package/dist/skills/injection/subagent.js.map +1 -0
- package/dist/skills/injection/token.js +260 -0
- package/dist/skills/injection/token.js.map +1 -0
- package/dist/skills/install.js +40 -0
- package/dist/skills/install.js.map +1 -0
- package/dist/skills/manifests/contribution.js +175 -0
- package/dist/skills/manifests/contribution.js.map +1 -0
- package/dist/skills/manifests/research.js +281 -0
- package/dist/skills/manifests/research.js.map +1 -0
- package/dist/skills/manifests/resolver.js +146 -0
- package/dist/skills/manifests/resolver.js.map +1 -0
- package/dist/skills/marketplace.js +90 -0
- package/dist/skills/marketplace.js.map +1 -0
- package/dist/skills/orchestrator/spawn.js +178 -0
- package/dist/skills/orchestrator/spawn.js.map +1 -0
- package/dist/skills/orchestrator/startup.js +451 -0
- package/dist/skills/orchestrator/startup.js.map +1 -0
- package/dist/skills/orchestrator/validator.js +301 -0
- package/dist/skills/orchestrator/validator.js.map +1 -0
- package/dist/skills/precedence-integration.js +73 -0
- package/dist/skills/precedence-integration.js.map +1 -0
- package/dist/skills/precedence-types.js +16 -0
- package/dist/skills/precedence-types.js.map +1 -0
- package/dist/skills/routing-table.js +63 -0
- package/dist/skills/routing-table.js.map +1 -0
- package/dist/skills/skill-paths.js +217 -0
- package/dist/skills/skill-paths.js.map +1 -0
- package/dist/skills/test-utility.js +55 -0
- package/dist/skills/test-utility.js.map +1 -0
- package/dist/skills/types.js +118 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/skills/validation.js +183 -0
- package/dist/skills/validation.js.map +1 -0
- package/dist/skills/version.js +57 -0
- package/dist/skills/version.js.map +1 -0
- package/dist/snapshot/index.js +188 -0
- package/dist/snapshot/index.js.map +1 -0
- package/dist/spawn/adapter-registry.js +246 -0
- package/dist/spawn/adapter-registry.js.map +1 -0
- package/dist/spawn/index.js +10 -0
- package/dist/spawn/index.js.map +1 -0
- package/dist/stats/index.d.ts.map +1 -1
- package/dist/stats/index.js +350 -0
- package/dist/stats/index.js.map +1 -0
- package/dist/stats/workflow-telemetry.js +400 -0
- package/dist/stats/workflow-telemetry.js.map +1 -0
- package/dist/sticky/archive.js +47 -0
- package/dist/sticky/archive.js.map +1 -0
- package/dist/sticky/convert.js +235 -0
- package/dist/sticky/convert.js.map +1 -0
- package/dist/sticky/create.js +48 -0
- package/dist/sticky/create.js.map +1 -0
- package/dist/sticky/id.js +35 -0
- package/dist/sticky/id.js.map +1 -0
- package/dist/sticky/index.js +16 -0
- package/dist/sticky/index.js.map +1 -0
- package/dist/sticky/list.js +57 -0
- package/dist/sticky/list.js.map +1 -0
- package/dist/sticky/purge.js +45 -0
- package/dist/sticky/purge.js.map +1 -0
- package/dist/sticky/show.js +42 -0
- package/dist/sticky/show.js.map +1 -0
- package/dist/sticky/types.js +10 -0
- package/dist/sticky/types.js.map +1 -0
- package/dist/store/agent-registry-accessor.js +886 -0
- package/dist/store/agent-registry-accessor.js.map +1 -0
- package/dist/store/api-key-kdf.js +84 -0
- package/dist/store/api-key-kdf.js.map +1 -0
- package/dist/store/atomic.js +167 -0
- package/dist/store/atomic.js.map +1 -0
- package/dist/store/backup-crypto.js +184 -0
- package/dist/store/backup-crypto.js.map +1 -0
- package/dist/store/backup-pack.js +581 -0
- package/dist/store/backup-pack.js.map +1 -0
- package/dist/store/backup-unpack.js +449 -0
- package/dist/store/backup-unpack.js.map +1 -0
- package/dist/store/backup.js +94 -0
- package/dist/store/backup.js.map +1 -0
- package/dist/store/brain-accessor.js +429 -0
- package/dist/store/brain-accessor.js.map +1 -0
- package/dist/store/brain-schema.d.ts +663 -39
- package/dist/store/brain-schema.d.ts.map +1 -1
- package/dist/store/brain-schema.js +579 -0
- package/dist/store/brain-schema.js.map +1 -0
- package/dist/store/brain-sqlite.d.ts.map +1 -1
- package/dist/store/brain-sqlite.js +297 -0
- package/dist/store/brain-sqlite.js.map +1 -0
- package/dist/store/cache.js +168 -0
- package/dist/store/cache.js.map +1 -0
- package/dist/store/chain-schema.js +51 -0
- package/dist/store/chain-schema.js.map +1 -0
- package/dist/store/cleanup-legacy.js +171 -0
- package/dist/store/cleanup-legacy.js.map +1 -0
- package/dist/store/conduit-sqlite.js +570 -0
- package/dist/store/conduit-sqlite.js.map +1 -0
- package/dist/store/converters.js +124 -0
- package/dist/store/converters.js.map +1 -0
- package/dist/store/cross-db-cleanup.js +319 -0
- package/dist/store/cross-db-cleanup.js.map +1 -0
- package/dist/store/data-accessor.js +26 -0
- package/dist/store/data-accessor.js.map +1 -0
- package/dist/store/data-safety-central.js +269 -0
- package/dist/store/data-safety-central.js.map +1 -0
- package/dist/store/data-safety.js +274 -0
- package/dist/store/data-safety.js.map +1 -0
- package/dist/store/db-helpers.js +224 -0
- package/dist/store/db-helpers.js.map +1 -0
- package/dist/store/export.js +155 -0
- package/dist/store/export.js.map +1 -0
- package/dist/store/file-utils.js +270 -0
- package/dist/store/file-utils.js.map +1 -0
- package/dist/store/git-checkpoint.js +365 -0
- package/dist/store/git-checkpoint.js.map +1 -0
- package/dist/store/global-salt.js +147 -0
- package/dist/store/global-salt.js.map +1 -0
- package/dist/store/import-logging.js +139 -0
- package/dist/store/import-logging.js.map +1 -0
- package/dist/store/import-remap.js +145 -0
- package/dist/store/import-remap.js.map +1 -0
- package/dist/store/import-sort.js +121 -0
- package/dist/store/import-sort.js.map +1 -0
- package/dist/store/index.js +29 -0
- package/dist/store/index.js.map +1 -0
- package/dist/store/json.js +208 -0
- package/dist/store/json.js.map +1 -0
- package/dist/store/lifecycle-store.js +249 -0
- package/dist/store/lifecycle-store.js.map +1 -0
- package/dist/store/lock.js +70 -0
- package/dist/store/lock.js.map +1 -0
- package/dist/store/migrate-signaldock-to-conduit.js +562 -0
- package/dist/store/migrate-signaldock-to-conduit.js.map +1 -0
- package/dist/store/migration-manager.d.ts +5 -1
- package/dist/store/migration-manager.d.ts.map +1 -1
- package/dist/store/migration-manager.js +288 -0
- package/dist/store/migration-manager.js.map +1 -0
- package/dist/store/migration-sqlite.js +676 -0
- package/dist/store/migration-sqlite.js.map +1 -0
- package/dist/store/nexus-schema.js +268 -0
- package/dist/store/nexus-schema.js.map +1 -0
- package/dist/store/nexus-sqlite.js +242 -0
- package/dist/store/nexus-sqlite.js.map +1 -0
- package/dist/store/nexus-validation-schemas.js +40 -0
- package/dist/store/nexus-validation-schemas.js.map +1 -0
- package/dist/store/parsers.js +37 -0
- package/dist/store/parsers.js.map +1 -0
- package/dist/store/project-detect.js +457 -0
- package/dist/store/project-detect.js.map +1 -0
- package/dist/store/provider.js +101 -0
- package/dist/store/provider.js.map +1 -0
- package/dist/store/regenerators.js +207 -0
- package/dist/store/regenerators.js.map +1 -0
- package/dist/store/restore-conflict-report.js +206 -0
- package/dist/store/restore-conflict-report.js.map +1 -0
- package/dist/store/restore-json-merge.js +454 -0
- package/dist/store/restore-json-merge.js.map +1 -0
- package/dist/store/safety-data-accessor.js +257 -0
- package/dist/store/safety-data-accessor.js.map +1 -0
- package/dist/store/schema.js +7 -0
- package/dist/store/schema.js.map +1 -0
- package/dist/store/session-store.js +219 -0
- package/dist/store/session-store.js.map +1 -0
- package/dist/store/signaldock-sqlite.js +550 -0
- package/dist/store/signaldock-sqlite.js.map +1 -0
- package/dist/store/sqlite-backup.js +498 -0
- package/dist/store/sqlite-backup.js.map +1 -0
- package/dist/store/sqlite-data-accessor.js +787 -0
- package/dist/store/sqlite-data-accessor.js.map +1 -0
- package/dist/store/sqlite.js +483 -0
- package/dist/store/sqlite.js.map +1 -0
- package/dist/store/status-registry.js +8 -0
- package/dist/store/status-registry.js.map +1 -0
- package/dist/store/t310-readiness.js +115 -0
- package/dist/store/t310-readiness.js.map +1 -0
- package/dist/store/task-store.js +358 -0
- package/dist/store/task-store.js.map +1 -0
- package/dist/store/tasks-schema.d.ts +1 -1
- package/dist/store/tasks-schema.js +610 -0
- package/dist/store/tasks-schema.js.map +1 -0
- package/dist/store/typed-query.js +15 -0
- package/dist/store/typed-query.js.map +1 -0
- package/dist/store/validation-schemas.d.ts +6 -6
- package/dist/store/validation-schemas.js +278 -0
- package/dist/store/validation-schemas.js.map +1 -0
- package/dist/system/archive-analytics.js +277 -0
- package/dist/system/archive-analytics.js.map +1 -0
- package/dist/system/archive-stats.js +64 -0
- package/dist/system/archive-stats.js.map +1 -0
- package/dist/system/audit.js +145 -0
- package/dist/system/audit.js.map +1 -0
- package/dist/system/backup.js +280 -0
- package/dist/system/backup.js.map +1 -0
- package/dist/system/cleanup.js +134 -0
- package/dist/system/cleanup.js.map +1 -0
- package/dist/system/dependencies.js +466 -0
- package/dist/system/dependencies.js.map +1 -0
- package/dist/system/health.d.ts.map +1 -1
- package/dist/system/health.js +1206 -0
- package/dist/system/health.js.map +1 -0
- package/dist/system/index.js +18 -0
- package/dist/system/index.js.map +1 -0
- package/dist/system/inject-generate.js +122 -0
- package/dist/system/inject-generate.js.map +1 -0
- package/dist/system/labels.js +38 -0
- package/dist/system/labels.js.map +1 -0
- package/dist/system/metrics.js +61 -0
- package/dist/system/metrics.js.map +1 -0
- package/dist/system/migrate.js +43 -0
- package/dist/system/migrate.js.map +1 -0
- package/dist/system/platform-paths.js +80 -0
- package/dist/system/platform-paths.js.map +1 -0
- package/dist/system/runtime.js +161 -0
- package/dist/system/runtime.js.map +1 -0
- package/dist/system/safestop.js +89 -0
- package/dist/system/safestop.js.map +1 -0
- package/dist/system/storage-preflight.js +123 -0
- package/dist/system/storage-preflight.js.map +1 -0
- package/dist/task-work/index.js +159 -0
- package/dist/task-work/index.js.map +1 -0
- package/dist/tasks/add.js +837 -0
- package/dist/tasks/add.js.map +1 -0
- package/dist/tasks/analyze.js +85 -0
- package/dist/tasks/analyze.js.map +1 -0
- package/dist/tasks/archive.js +90 -0
- package/dist/tasks/archive.js.map +1 -0
- package/dist/tasks/atomicity.js +83 -0
- package/dist/tasks/atomicity.js.map +1 -0
- package/dist/tasks/cancel-ops.js +83 -0
- package/dist/tasks/cancel-ops.js.map +1 -0
- package/dist/tasks/complete.d.ts.map +1 -1
- package/dist/tasks/complete.js +228 -0
- package/dist/tasks/complete.js.map +1 -0
- package/dist/tasks/crossref-extract.js +73 -0
- package/dist/tasks/crossref-extract.js.map +1 -0
- package/dist/tasks/delete-preview.js +192 -0
- package/dist/tasks/delete-preview.js.map +1 -0
- package/dist/tasks/delete.js +120 -0
- package/dist/tasks/delete.js.map +1 -0
- package/dist/tasks/deletion-strategy.js +200 -0
- package/dist/tasks/deletion-strategy.js.map +1 -0
- package/dist/tasks/dependency-check.js +278 -0
- package/dist/tasks/dependency-check.js.map +1 -0
- package/dist/tasks/deps-ready.js +32 -0
- package/dist/tasks/deps-ready.js.map +1 -0
- package/dist/tasks/enforcement.js +86 -0
- package/dist/tasks/enforcement.js.map +1 -0
- package/dist/tasks/epic-enforcement.js +294 -0
- package/dist/tasks/epic-enforcement.js.map +1 -0
- package/dist/tasks/find.js +163 -0
- package/dist/tasks/find.js.map +1 -0
- package/dist/tasks/graph-cache.js +127 -0
- package/dist/tasks/graph-cache.js.map +1 -0
- package/dist/tasks/graph-ops.d.ts.map +1 -1
- package/dist/tasks/graph-ops.js +173 -0
- package/dist/tasks/graph-ops.js.map +1 -0
- package/dist/tasks/graph-rag.js +328 -0
- package/dist/tasks/graph-rag.js.map +1 -0
- package/dist/tasks/hierarchy-policy.js +149 -0
- package/dist/tasks/hierarchy-policy.js.map +1 -0
- package/dist/tasks/hierarchy.js +185 -0
- package/dist/tasks/hierarchy.js.map +1 -0
- package/dist/tasks/id-generator.js +65 -0
- package/dist/tasks/id-generator.js.map +1 -0
- package/dist/tasks/index.js +14 -0
- package/dist/tasks/index.js.map +1 -0
- package/dist/tasks/labels.js +55 -0
- package/dist/tasks/labels.js.map +1 -0
- package/dist/tasks/list.js +75 -0
- package/dist/tasks/list.js.map +1 -0
- package/dist/tasks/phase-tracking.js +133 -0
- package/dist/tasks/phase-tracking.js.map +1 -0
- package/dist/tasks/pipeline-stage.js +248 -0
- package/dist/tasks/pipeline-stage.js.map +1 -0
- package/dist/tasks/plan.js +268 -0
- package/dist/tasks/plan.js.map +1 -0
- package/dist/tasks/relates.js +101 -0
- package/dist/tasks/relates.js.map +1 -0
- package/dist/tasks/show.js +83 -0
- package/dist/tasks/show.js.map +1 -0
- package/dist/tasks/size-weighting.js +86 -0
- package/dist/tasks/size-weighting.js.map +1 -0
- package/dist/tasks/staleness.js +86 -0
- package/dist/tasks/staleness.js.map +1 -0
- package/dist/tasks/task-ops.js +1741 -0
- package/dist/tasks/task-ops.js.map +1 -0
- package/dist/tasks/update.js +303 -0
- package/dist/tasks/update.js.map +1 -0
- package/dist/templates/index.js +10 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/templates/parser.js +254 -0
- package/dist/templates/parser.js.map +1 -0
- package/dist/ui/aliases.js +153 -0
- package/dist/ui/aliases.js.map +1 -0
- package/dist/ui/changelog.js +184 -0
- package/dist/ui/changelog.js.map +1 -0
- package/dist/ui/command-registry.js +168 -0
- package/dist/ui/command-registry.js.map +1 -0
- package/dist/ui/flags.js +94 -0
- package/dist/ui/flags.js.map +1 -0
- package/dist/ui/index.js +24 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/upgrade.js +1148 -0
- package/dist/upgrade.js.map +1 -0
- package/dist/validation/chain-validation.js +146 -0
- package/dist/validation/chain-validation.js.map +1 -0
- package/dist/validation/compliance.js +155 -0
- package/dist/validation/compliance.js.map +1 -0
- package/dist/validation/docs-sync.js +212 -0
- package/dist/validation/docs-sync.js.map +1 -0
- package/dist/validation/doctor/checks.js +1069 -0
- package/dist/validation/doctor/checks.js.map +1 -0
- package/dist/validation/doctor/index.js +9 -0
- package/dist/validation/doctor/index.js.map +1 -0
- package/dist/validation/doctor/project-cache.js +160 -0
- package/dist/validation/doctor/project-cache.js.map +1 -0
- package/dist/validation/doctor/utils.js +155 -0
- package/dist/validation/doctor/utils.js.map +1 -0
- package/dist/validation/engine.js +914 -0
- package/dist/validation/engine.js.map +1 -0
- package/dist/validation/gap-check.js +175 -0
- package/dist/validation/gap-check.js.map +1 -0
- package/dist/validation/index.js +40 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/manifest.js +237 -0
- package/dist/validation/manifest.js.map +1 -0
- package/dist/validation/operation-gate-validators.js +724 -0
- package/dist/validation/operation-gate-validators.js.map +1 -0
- package/dist/validation/operation-verification-gates.js +532 -0
- package/dist/validation/operation-verification-gates.js.map +1 -0
- package/dist/validation/param-utils.js +141 -0
- package/dist/validation/param-utils.js.map +1 -0
- package/dist/validation/protocol-common.js +300 -0
- package/dist/validation/protocol-common.js.map +1 -0
- package/dist/validation/protocols/_shared.js +82 -0
- package/dist/validation/protocols/_shared.js.map +1 -0
- package/dist/validation/protocols/architecture-decision.js +31 -0
- package/dist/validation/protocols/architecture-decision.js.map +1 -0
- package/dist/validation/protocols/artifact-publish.js +28 -0
- package/dist/validation/protocols/artifact-publish.js.map +1 -0
- package/dist/validation/protocols/consensus.js +41 -0
- package/dist/validation/protocols/consensus.js.map +1 -0
- package/dist/validation/protocols/contribution.js +27 -0
- package/dist/validation/protocols/contribution.js.map +1 -0
- package/dist/validation/protocols/decomposition.js +28 -0
- package/dist/validation/protocols/decomposition.js.map +1 -0
- package/dist/validation/protocols/implementation.js +24 -0
- package/dist/validation/protocols/implementation.js.map +1 -0
- package/dist/validation/protocols/provenance.js +29 -0
- package/dist/validation/protocols/provenance.js.map +1 -0
- package/dist/validation/protocols/release.js +29 -0
- package/dist/validation/protocols/release.js.map +1 -0
- package/dist/validation/protocols/research.js +24 -0
- package/dist/validation/protocols/research.js.map +1 -0
- package/dist/validation/protocols/specification.js +27 -0
- package/dist/validation/protocols/specification.js.map +1 -0
- package/dist/validation/protocols/testing.js +30 -0
- package/dist/validation/protocols/testing.js.map +1 -0
- package/dist/validation/protocols/validation.js +30 -0
- package/dist/validation/protocols/validation.js.map +1 -0
- package/dist/validation/schema-integrity.js +170 -0
- package/dist/validation/schema-integrity.js.map +1 -0
- package/dist/validation/schema-validator.js +176 -0
- package/dist/validation/schema-validator.js.map +1 -0
- package/dist/validation/validate-ops.js +937 -0
- package/dist/validation/validate-ops.js.map +1 -0
- package/dist/validation/validation-rules.js +226 -0
- package/dist/validation/validation-rules.js.map +1 -0
- package/dist/validation/verification.js +321 -0
- package/dist/validation/verification.js.map +1 -0
- package/migrations/drizzle-brain/20260411000001_t528-graph-schema-expansion/migration.sql +47 -0
- package/migrations/drizzle-brain/20260412000001_t531-quality-score-typed-tables/migration.sql +23 -0
- package/migrations/drizzle-brain/20260413000001_t549-tiered-typed-memory/migration.sql +195 -0
- package/migrations/drizzle-nexus/20260412000001_t529-nexus-graph-tables/migration.sql +49 -0
- package/package.json +13 -12
- package/src/config.ts +7 -0
- package/src/hooks/handlers/__tests__/conduit-hooks.test.ts +356 -0
- package/src/hooks/handlers/conduit-hooks.ts +258 -0
- package/src/hooks/handlers/index.ts +13 -0
- package/src/hooks/handlers/intelligence-hooks.ts +80 -0
- package/src/hooks/handlers/session-hooks.ts +78 -0
- package/src/hooks/handlers/task-hooks.ts +14 -0
- package/src/hooks/handlers/watchdog-hooks.ts +187 -0
- package/src/injection.ts +41 -2
- package/src/internal.ts +39 -2
- package/src/memory/__tests__/auto-extract.test.ts +43 -114
- package/src/memory/__tests__/brain-automation.test.ts +16 -39
- package/src/memory/__tests__/brain-rrf.test.ts +431 -0
- package/src/memory/__tests__/llm-extraction.test.ts +342 -0
- package/src/memory/__tests__/observer-reflector.test.ts +475 -0
- package/src/memory/anthropic-key-resolver.ts +113 -0
- package/src/memory/auto-extract.ts +40 -72
- package/src/memory/brain-consolidator.ts +344 -0
- package/src/memory/brain-lifecycle.ts +636 -2
- package/src/memory/brain-retrieval.ts +630 -18
- package/src/memory/brain-search.ts +234 -132
- package/src/memory/decisions.ts +21 -1
- package/src/memory/engine-compat.ts +25 -15
- package/src/memory/extraction-gate.ts +574 -0
- package/src/memory/index.ts +6 -2
- package/src/memory/learnings.ts +34 -1
- package/src/memory/llm-extraction.ts +524 -0
- package/src/memory/memory-bridge.ts +29 -12
- package/src/memory/observer-reflector.ts +829 -0
- package/src/memory/patterns.ts +30 -1
- package/src/memory/quality-scoring.ts +93 -9
- package/src/nexus/nexus-bridge.ts +444 -0
- package/src/scaffold.ts +42 -0
- package/src/stats/index.ts +11 -3
- package/src/store/brain-schema.ts +282 -0
- package/src/store/brain-sqlite.ts +55 -0
- package/src/store/migration-manager.ts +83 -12
- package/src/system/health.ts +17 -0
- package/src/tasks/complete.ts +7 -10
- package/src/tasks/graph-ops.ts +1 -0
- package/src/tasks/task-ops.ts +1 -1
- package/templates/CLEO-INJECTION.md +15 -0
|
@@ -17,7 +17,6 @@ import type {
|
|
|
17
17
|
BrainPatternRow,
|
|
18
18
|
} from '../store/brain-schema.js';
|
|
19
19
|
import { typedAll } from '../store/typed-query.js';
|
|
20
|
-
import type { BrainSearchHit } from './brain-row-types.js';
|
|
21
20
|
import type { SimilarityResult } from './brain-similarity.js';
|
|
22
21
|
import { searchSimilar } from './brain-similarity.js';
|
|
23
22
|
import { QUALITY_SCORE_THRESHOLD } from './quality-scoring.js';
|
|
@@ -545,13 +544,47 @@ function likeSearchObservations(
|
|
|
545
544
|
|
|
546
545
|
/**
|
|
547
546
|
* Escape special FTS5 characters in query string.
|
|
548
|
-
*
|
|
547
|
+
*
|
|
548
|
+
* Wraps each meaningful token in double quotes and joins with OR so that
|
|
549
|
+
* partial matches are returned even when some tokens are not indexable
|
|
550
|
+
* (e.g. task prefixes like "EPIC:", em-dashes "—", or short stop-words).
|
|
551
|
+
*
|
|
552
|
+
* Strategy:
|
|
553
|
+
* 1. Split on whitespace.
|
|
554
|
+
* 2. Keep only tokens that contain at least one word character (\w), which
|
|
555
|
+
* ensures punctuation-only tokens (em dashes, colons standalone, etc.)
|
|
556
|
+
* are dropped before they zero-out the entire result set.
|
|
557
|
+
* 3. Deduplicate case-insensitively.
|
|
558
|
+
* 4. Join with OR so the query broadens rather than requiring ALL tokens.
|
|
559
|
+
*
|
|
560
|
+
* Using AND (implicit FTS5 join) caused empty results whenever a task title
|
|
561
|
+
* contained non-word tokens such as em dashes ("—") or trailing colons
|
|
562
|
+
* ("EPIC:"), because FTS5's default tokenizer cannot index them and the
|
|
563
|
+
* AND semantics then guaranteed zero matches for the whole query. (T553 bug fix)
|
|
549
564
|
*/
|
|
550
565
|
function escapeFts5Query(query: string): string {
|
|
551
|
-
|
|
552
|
-
|
|
566
|
+
const rawTokens = query.trim().split(/\s+/).filter(Boolean);
|
|
567
|
+
if (rawTokens.length === 0) return '""';
|
|
568
|
+
|
|
569
|
+
// Keep tokens that have at least one alphanumeric character and are not
|
|
570
|
+
// pure stop-words (length ≥ 2 after stripping leading/trailing punctuation).
|
|
571
|
+
const seen = new Set<string>();
|
|
572
|
+
const tokens: string[] = [];
|
|
573
|
+
for (const t of rawTokens) {
|
|
574
|
+
// Strip leading/trailing non-word characters (e.g. "EPIC:" → "EPIC", "—" → "")
|
|
575
|
+
const stripped = t.replace(/^\W+|\W+$/g, '');
|
|
576
|
+
if (stripped.length < 2) continue; // skip very short or empty tokens
|
|
577
|
+
if (!/\w/.test(stripped)) continue; // skip tokens with no word chars
|
|
578
|
+
const lower = stripped.toLowerCase();
|
|
579
|
+
if (seen.has(lower)) continue; // deduplicate
|
|
580
|
+
seen.add(lower);
|
|
581
|
+
tokens.push(`"${stripped.replace(/"/g, '""')}"`);
|
|
582
|
+
}
|
|
583
|
+
|
|
553
584
|
if (tokens.length === 0) return '""';
|
|
554
|
-
|
|
585
|
+
|
|
586
|
+
// OR semantics: any matching token returns the row, ranked by BM25 relevance.
|
|
587
|
+
return tokens.join(' OR ');
|
|
555
588
|
}
|
|
556
589
|
|
|
557
590
|
/**
|
|
@@ -564,44 +597,174 @@ export function resetFts5Cache(): void {
|
|
|
564
597
|
}
|
|
565
598
|
|
|
566
599
|
// ============================================================================
|
|
567
|
-
//
|
|
600
|
+
// Reciprocal Rank Fusion (RRF) — Hybrid Retrieval
|
|
601
|
+
// ============================================================================
|
|
602
|
+
|
|
603
|
+
/**
|
|
604
|
+
* The RRF smoothing constant (research-proven at 60).
|
|
605
|
+
*
|
|
606
|
+
* Balances noise vs. signal: small values amplify top-rank differences;
|
|
607
|
+
* large values compress ranks toward a flat distribution. 60 is the
|
|
608
|
+
* standard value from Cormack, Clarke & Buettcher (SIGIR 2009).
|
|
609
|
+
*/
|
|
610
|
+
export const RRF_K = 60;
|
|
611
|
+
|
|
612
|
+
/** A single ranked hit from one retrieval source before fusion. */
|
|
613
|
+
export interface RrfHit {
|
|
614
|
+
id: string;
|
|
615
|
+
type: string;
|
|
616
|
+
title: string;
|
|
617
|
+
text: string;
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
/** Fused result produced by reciprocalRankFusion. */
|
|
621
|
+
export interface RrfResult {
|
|
622
|
+
id: string;
|
|
623
|
+
/** Combined RRF score: sum of 1/(rank+RRF_K) across all source lists. */
|
|
624
|
+
rrfScore: number;
|
|
625
|
+
type: string;
|
|
626
|
+
title: string;
|
|
627
|
+
text: string;
|
|
628
|
+
/** Which retrieval sources contributed to this result. */
|
|
629
|
+
sources: Array<'fts' | 'vec' | 'graph'>;
|
|
630
|
+
/** BM25-derived FTS rank (0-based) — undefined if not in FTS results. */
|
|
631
|
+
ftsRank?: number;
|
|
632
|
+
/** Vector distance rank (0-based) — undefined if not in vector results. */
|
|
633
|
+
vecRank?: number;
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
/**
|
|
637
|
+
* Fuse ranked lists from multiple retrieval sources using Reciprocal Rank Fusion.
|
|
638
|
+
*
|
|
639
|
+
* Implements the RRF algorithm from Cormack, Clarke & Buettcher (SIGIR 2009):
|
|
640
|
+
*
|
|
641
|
+
* score(d) = Σ 1 / (k + rank(d, list)) for each list containing d
|
|
642
|
+
*
|
|
643
|
+
* where k=60 is the research-proven smoothing constant.
|
|
644
|
+
*
|
|
645
|
+
* Properties:
|
|
646
|
+
* - Rank-based: actual scores from each source are ignored (only rank matters).
|
|
647
|
+
* - Additive: items appearing in multiple lists accumulate higher scores.
|
|
648
|
+
* - Robust: the +60 constant prevents rank-1 items from dominating.
|
|
649
|
+
*
|
|
650
|
+
* @param sources - Named arrays of ranked hits (order = rank, index 0 = best)
|
|
651
|
+
* @param k - RRF smoothing constant (default: RRF_K = 60)
|
|
652
|
+
* @returns Array of fused results sorted by rrfScore descending
|
|
653
|
+
*
|
|
654
|
+
* @example
|
|
655
|
+
* ```ts
|
|
656
|
+
* const fused = reciprocalRankFusion([
|
|
657
|
+
* { source: 'fts', hits: ftsHits },
|
|
658
|
+
* { source: 'vec', hits: vecHits },
|
|
659
|
+
* ]);
|
|
660
|
+
* ```
|
|
661
|
+
*/
|
|
662
|
+
export function reciprocalRankFusion(
|
|
663
|
+
sources: Array<{
|
|
664
|
+
source: 'fts' | 'vec' | 'graph';
|
|
665
|
+
hits: RrfHit[];
|
|
666
|
+
}>,
|
|
667
|
+
k: number = RRF_K,
|
|
668
|
+
): RrfResult[] {
|
|
669
|
+
// Accumulator: id -> mutable result record
|
|
670
|
+
const accum = new Map<
|
|
671
|
+
string,
|
|
672
|
+
{
|
|
673
|
+
rrfScore: number;
|
|
674
|
+
type: string;
|
|
675
|
+
title: string;
|
|
676
|
+
text: string;
|
|
677
|
+
sources: Set<'fts' | 'vec' | 'graph'>;
|
|
678
|
+
ftsRank?: number;
|
|
679
|
+
vecRank?: number;
|
|
680
|
+
}
|
|
681
|
+
>();
|
|
682
|
+
|
|
683
|
+
for (const { source, hits } of sources) {
|
|
684
|
+
for (let rank = 0; rank < hits.length; rank++) {
|
|
685
|
+
const hit = hits[rank]!;
|
|
686
|
+
const contribution = 1 / (k + rank);
|
|
687
|
+
|
|
688
|
+
const existing = accum.get(hit.id);
|
|
689
|
+
if (existing) {
|
|
690
|
+
existing.rrfScore += contribution;
|
|
691
|
+
existing.sources.add(source);
|
|
692
|
+
if (source === 'fts') existing.ftsRank = rank;
|
|
693
|
+
if (source === 'vec') existing.vecRank = rank;
|
|
694
|
+
} else {
|
|
695
|
+
accum.set(hit.id, {
|
|
696
|
+
rrfScore: contribution,
|
|
697
|
+
type: hit.type,
|
|
698
|
+
title: hit.title,
|
|
699
|
+
text: hit.text,
|
|
700
|
+
sources: new Set([source]),
|
|
701
|
+
ftsRank: source === 'fts' ? rank : undefined,
|
|
702
|
+
vecRank: source === 'vec' ? rank : undefined,
|
|
703
|
+
});
|
|
704
|
+
}
|
|
705
|
+
}
|
|
706
|
+
}
|
|
707
|
+
|
|
708
|
+
return [...accum.entries()]
|
|
709
|
+
.map(([id, data]) => ({
|
|
710
|
+
id,
|
|
711
|
+
rrfScore: data.rrfScore,
|
|
712
|
+
type: data.type,
|
|
713
|
+
title: data.title,
|
|
714
|
+
text: data.text,
|
|
715
|
+
sources: [...data.sources] as Array<'fts' | 'vec' | 'graph'>,
|
|
716
|
+
ftsRank: data.ftsRank,
|
|
717
|
+
vecRank: data.vecRank,
|
|
718
|
+
}))
|
|
719
|
+
.sort((a, b) => b.rrfScore - a.rrfScore);
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
// ============================================================================
|
|
723
|
+
// Hybrid Search (FTS5 + Vector + Graph) — RRF-powered
|
|
568
724
|
// ============================================================================
|
|
569
725
|
|
|
570
726
|
/** Result from hybridSearch combining multiple search signals. */
|
|
571
727
|
export interface HybridResult {
|
|
572
728
|
id: string;
|
|
729
|
+
/** RRF-fused score: sum of 1/(rank+60) across all source lists. */
|
|
573
730
|
score: number;
|
|
574
731
|
type: string;
|
|
575
732
|
title: string;
|
|
576
733
|
text: string;
|
|
577
734
|
sources: Array<'fts' | 'vec' | 'graph'>;
|
|
735
|
+
/** Raw FTS rank (0-based) for transparency — undefined if FTS did not return this item. */
|
|
736
|
+
ftsRank?: number;
|
|
737
|
+
/** Raw vector rank (0-based) for transparency — undefined if vector did not return this item. */
|
|
738
|
+
vecRank?: number;
|
|
578
739
|
}
|
|
579
740
|
|
|
580
|
-
/** Options for hybridSearch
|
|
741
|
+
/** Options for hybridSearch. */
|
|
581
742
|
export interface HybridSearchOptions {
|
|
582
|
-
ftsWeight?: number;
|
|
583
|
-
vecWeight?: number;
|
|
584
|
-
graphWeight?: number;
|
|
585
743
|
limit?: number;
|
|
744
|
+
/**
|
|
745
|
+
* RRF smoothing constant k. Default: 60 (research-proven).
|
|
746
|
+
* Larger k flattens rank differences; smaller k amplifies top-rank advantage.
|
|
747
|
+
*/
|
|
748
|
+
rrfK?: number;
|
|
586
749
|
}
|
|
587
750
|
|
|
588
751
|
/**
|
|
589
|
-
* Hybrid search across FTS5, vector similarity, and graph neighbors
|
|
752
|
+
* Hybrid search across FTS5, vector similarity, and graph neighbors using
|
|
753
|
+
* Reciprocal Rank Fusion (RRF) for result combination.
|
|
590
754
|
*
|
|
591
|
-
*
|
|
592
|
-
*
|
|
593
|
-
*
|
|
594
|
-
*
|
|
595
|
-
*
|
|
596
|
-
* 6. Deduplicates by ID, keeping highest combined score.
|
|
597
|
-
* 7. Returns top-N sorted by score descending.
|
|
755
|
+
* Algorithm:
|
|
756
|
+
* 1. Run FTS5 search and vector similarity search in parallel.
|
|
757
|
+
* 2. Optionally expand via graph neighbors (best-effort).
|
|
758
|
+
* 3. Fuse all ranked lists with RRF: score = Σ 1/(rank+60).
|
|
759
|
+
* 4. Return top-N sorted by fused RRF score.
|
|
598
760
|
*
|
|
599
|
-
* Graceful
|
|
761
|
+
* Graceful degradation: vector and graph sources are silently skipped when
|
|
762
|
+
* unavailable — RRF naturally handles partial source lists.
|
|
600
763
|
*
|
|
601
764
|
* @param query - Search query text
|
|
602
765
|
* @param projectRoot - Project root directory
|
|
603
|
-
* @param options -
|
|
604
|
-
* @returns Array of hybrid results ranked by
|
|
766
|
+
* @param options - Limit and RRF tuning
|
|
767
|
+
* @returns Array of hybrid results ranked by RRF score descending
|
|
605
768
|
*/
|
|
606
769
|
export async function hybridSearch(
|
|
607
770
|
query: string,
|
|
@@ -611,52 +774,21 @@ export async function hybridSearch(
|
|
|
611
774
|
if (!query?.trim()) return [];
|
|
612
775
|
|
|
613
776
|
const maxResults = options?.limit ?? 10;
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
const addScore = (
|
|
631
|
-
id: string,
|
|
632
|
-
normalizedScore: number,
|
|
633
|
-
weight: number,
|
|
634
|
-
source: 'fts' | 'vec' | 'graph',
|
|
635
|
-
type: string,
|
|
636
|
-
title: string,
|
|
637
|
-
text: string,
|
|
638
|
-
) => {
|
|
639
|
-
const existing = scoreMap.get(id);
|
|
640
|
-
if (existing) {
|
|
641
|
-
existing.score += normalizedScore * weight;
|
|
642
|
-
existing.sources.add(source);
|
|
643
|
-
} else {
|
|
644
|
-
scoreMap.set(id, {
|
|
645
|
-
score: normalizedScore * weight,
|
|
646
|
-
type,
|
|
647
|
-
title,
|
|
648
|
-
text,
|
|
649
|
-
sources: new Set([source]),
|
|
650
|
-
});
|
|
651
|
-
}
|
|
652
|
-
};
|
|
653
|
-
|
|
654
|
-
// --- 1. FTS5 search ---
|
|
655
|
-
const ftsResults = await searchBrain(projectRoot, query, { limit: maxResults * 2 });
|
|
656
|
-
|
|
657
|
-
// Collect all FTS hits into a flat list with position-based scores
|
|
658
|
-
const ftsHits: BrainSearchHit[] = [];
|
|
659
|
-
|
|
777
|
+
const rrfK = options?.rrfK ?? RRF_K;
|
|
778
|
+
|
|
779
|
+
// --- 1. Run FTS5 and vector in parallel ---
|
|
780
|
+
const [ftsResults, vecResults] = await Promise.all([
|
|
781
|
+
searchBrain(projectRoot, query, { limit: maxResults * 3 }).catch(() => ({
|
|
782
|
+
decisions: [],
|
|
783
|
+
patterns: [],
|
|
784
|
+
learnings: [],
|
|
785
|
+
observations: [],
|
|
786
|
+
})),
|
|
787
|
+
searchSimilar(query, projectRoot, maxResults * 3).catch(() => [] as SimilarityResult[]),
|
|
788
|
+
]);
|
|
789
|
+
|
|
790
|
+
// --- 2. Project FTS results into ranked RrfHit list ---
|
|
791
|
+
const ftsHits: RrfHit[] = [];
|
|
660
792
|
for (const d of ftsResults.decisions) {
|
|
661
793
|
ftsHits.push({
|
|
662
794
|
id: d.id,
|
|
@@ -685,88 +817,58 @@ export async function hybridSearch(
|
|
|
685
817
|
ftsHits.push({ id: o.id, type: 'observation', title: o.title, text: o.narrative ?? o.title });
|
|
686
818
|
}
|
|
687
819
|
|
|
688
|
-
//
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
820
|
+
// --- 3. Project vector results into ranked RrfHit list (ascending distance = descending quality) ---
|
|
821
|
+
const vecHits: RrfHit[] = vecResults.map((r) => ({
|
|
822
|
+
id: r.id,
|
|
823
|
+
type: r.type,
|
|
824
|
+
title: r.title,
|
|
825
|
+
text: r.text,
|
|
826
|
+
}));
|
|
694
827
|
|
|
695
|
-
// ---
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
} catch {
|
|
700
|
-
// Vector search unavailable
|
|
701
|
-
}
|
|
702
|
-
|
|
703
|
-
if (vecResults.length > 0) {
|
|
704
|
-
// Normalize vector: distance-based (smaller distance = higher score)
|
|
705
|
-
const maxDist = Math.max(...vecResults.map((r) => r.distance), 0.001);
|
|
706
|
-
for (const r of vecResults) {
|
|
707
|
-
const normalizedScore = 1.0 - r.distance / maxDist;
|
|
708
|
-
addScore(r.id, normalizedScore, vecWeight, 'vec', r.type, r.title, r.text);
|
|
709
|
-
}
|
|
710
|
-
} else {
|
|
711
|
-
// Redistribute vec weight to FTS if vector unavailable
|
|
712
|
-
ftsWeight += vecWeight;
|
|
713
|
-
vecWeight = 0;
|
|
714
|
-
|
|
715
|
-
// Re-score FTS hits with updated weight
|
|
716
|
-
scoreMap.clear();
|
|
717
|
-
for (let i = 0; i < ftsHits.length; i++) {
|
|
718
|
-
const hit = ftsHits[i]!;
|
|
719
|
-
const normalizedScore = ftsHits.length > 1 ? 1.0 - i / (ftsHits.length - 1) : 1.0;
|
|
720
|
-
addScore(hit.id, normalizedScore, ftsWeight, 'fts', hit.type, hit.title, hit.text);
|
|
721
|
-
}
|
|
722
|
-
}
|
|
828
|
+
// --- 4. Build source list for RRF ---
|
|
829
|
+
const rrfSources: Array<{ source: 'fts' | 'vec' | 'graph'; hits: RrfHit[] }> = [];
|
|
830
|
+
if (ftsHits.length > 0) rrfSources.push({ source: 'fts', hits: ftsHits });
|
|
831
|
+
if (vecHits.length > 0) rrfSources.push({ source: 'vec', hits: vecHits });
|
|
723
832
|
|
|
724
|
-
// ---
|
|
833
|
+
// --- 5. Graph neighbor expansion (best-effort) ---
|
|
725
834
|
try {
|
|
726
835
|
const accessor = await getBrainAccessor(projectRoot);
|
|
727
|
-
|
|
728
|
-
// Check if query matches a known graph node ID pattern
|
|
729
836
|
const possibleNodeIds = [
|
|
730
837
|
`concept:${query.toLowerCase().replace(/\s+/g, '-')}`,
|
|
731
838
|
`task:${query}`,
|
|
732
839
|
`doc:${query}`,
|
|
733
840
|
];
|
|
734
841
|
|
|
842
|
+
const graphHits: RrfHit[] = [];
|
|
735
843
|
for (const nodeId of possibleNodeIds) {
|
|
736
844
|
const node = await accessor.getPageNode(nodeId);
|
|
737
845
|
if (!node) continue;
|
|
738
|
-
|
|
739
846
|
const neighbors = await accessor.getNeighbors(nodeId);
|
|
740
|
-
for (
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
neighbor.
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
'graph',
|
|
748
|
-
neighbor.nodeType,
|
|
749
|
-
neighbor.label,
|
|
750
|
-
neighbor.label,
|
|
751
|
-
);
|
|
847
|
+
for (const neighbor of neighbors) {
|
|
848
|
+
graphHits.push({
|
|
849
|
+
id: neighbor.id,
|
|
850
|
+
type: neighbor.nodeType,
|
|
851
|
+
title: neighbor.label,
|
|
852
|
+
text: neighbor.label,
|
|
853
|
+
});
|
|
752
854
|
}
|
|
753
855
|
}
|
|
856
|
+
if (graphHits.length > 0) rrfSources.push({ source: 'graph', hits: graphHits });
|
|
754
857
|
} catch {
|
|
755
|
-
// Graph
|
|
858
|
+
// Graph unavailable — RRF handles gracefully with remaining sources
|
|
756
859
|
}
|
|
757
860
|
|
|
758
|
-
// ---
|
|
759
|
-
const
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
.
|
|
769
|
-
.
|
|
770
|
-
|
|
771
|
-
return sorted;
|
|
861
|
+
// --- 6. Fuse with RRF and return top-N ---
|
|
862
|
+
const fused = reciprocalRankFusion(rrfSources, rrfK);
|
|
863
|
+
|
|
864
|
+
return fused.slice(0, maxResults).map((r) => ({
|
|
865
|
+
id: r.id,
|
|
866
|
+
score: r.rrfScore,
|
|
867
|
+
type: r.type,
|
|
868
|
+
title: r.title,
|
|
869
|
+
text: r.text,
|
|
870
|
+
sources: r.sources,
|
|
871
|
+
ftsRank: r.ftsRank,
|
|
872
|
+
vecRank: r.vecRank,
|
|
873
|
+
}));
|
|
772
874
|
}
|
package/src/memory/decisions.ts
CHANGED
|
@@ -147,11 +147,26 @@ export async function storeDecision(
|
|
|
147
147
|
}
|
|
148
148
|
}
|
|
149
149
|
|
|
150
|
-
//
|
|
150
|
+
// T549 Wave 1-A: Tier routing for decisions.
|
|
151
|
+
// Decisions are always medium-term semantic entries — they are intentional acts,
|
|
152
|
+
// always manually entered via cleo memory decision-store or the CLI.
|
|
153
|
+
// sourceConfidence = 'owner' (decisions are owner-stated facts by definition)
|
|
154
|
+
// verified = true (the act of deciding IS verification)
|
|
155
|
+
// memoryTier = 'medium' (decisions skip short-term; may promote to long after 7d+outcome:success)
|
|
156
|
+
// memoryType = 'semantic' (decisions are declarative architectural facts)
|
|
157
|
+
const memoryTier = 'medium' as const;
|
|
158
|
+
const memoryType = 'semantic' as const;
|
|
159
|
+
const sourceConfidence = 'owner' as const;
|
|
160
|
+
const verified = true;
|
|
161
|
+
|
|
162
|
+
// Compute quality score from confidence level, rationale richness, task linkage,
|
|
163
|
+
// and T549 source multiplier (owner = 1.0, medium tier = +0.05).
|
|
151
164
|
const qualityScore = computeDecisionQuality({
|
|
152
165
|
confidence: params.confidence,
|
|
153
166
|
rationale: params.rationale.trim(),
|
|
154
167
|
contextTaskId: validTaskId ?? null,
|
|
168
|
+
sourceConfidence,
|
|
169
|
+
memoryTier,
|
|
155
170
|
});
|
|
156
171
|
|
|
157
172
|
const row: NewBrainDecisionRow = {
|
|
@@ -166,6 +181,11 @@ export async function storeDecision(
|
|
|
166
181
|
contextTaskId: validTaskId,
|
|
167
182
|
contextPhase: params.contextPhase,
|
|
168
183
|
qualityScore,
|
|
184
|
+
// T549 Wave 1-A: tier/type/confidence assigned at write time
|
|
185
|
+
memoryTier,
|
|
186
|
+
memoryType,
|
|
187
|
+
sourceConfidence,
|
|
188
|
+
verified,
|
|
169
189
|
};
|
|
170
190
|
|
|
171
191
|
const saved = await accessor.addDecision(row);
|
|
@@ -28,6 +28,8 @@ import {
|
|
|
28
28
|
searchBrainCompact,
|
|
29
29
|
timelineBrain,
|
|
30
30
|
} from './brain-retrieval.js';
|
|
31
|
+
// T545: Decision store with quality scoring and graph auto-population
|
|
32
|
+
import { storeDecision } from './decisions.js';
|
|
31
33
|
import {
|
|
32
34
|
learningStats,
|
|
33
35
|
type SearchLearningParams,
|
|
@@ -349,22 +351,18 @@ export async function memoryDecisionStore(
|
|
|
349
351
|
|
|
350
352
|
try {
|
|
351
353
|
const root = resolveRoot(projectRoot);
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
const row = await
|
|
357
|
-
id,
|
|
354
|
+
// Route through storeDecision() so quality scoring and graph auto-population
|
|
355
|
+
// (upsertGraphNode) run on every insert — fixes T545 regression where
|
|
356
|
+
// engine-compat bypassed decisions.ts and wrote directly to the accessor,
|
|
357
|
+
// leaving quality_score NULL and no graph node created.
|
|
358
|
+
const row = await storeDecision(root, {
|
|
358
359
|
type: 'technical',
|
|
359
360
|
decision: params.decision,
|
|
360
361
|
rationale: params.rationale,
|
|
361
362
|
confidence: 'medium',
|
|
362
363
|
outcome: 'pending',
|
|
363
|
-
|
|
364
|
-
contextTaskId: params.taskId
|
|
365
|
-
contextEpicId: null,
|
|
366
|
-
contextPhase: null,
|
|
367
|
-
createdAt: now,
|
|
364
|
+
alternatives: params.alternatives,
|
|
365
|
+
contextTaskId: params.taskId,
|
|
368
366
|
});
|
|
369
367
|
|
|
370
368
|
return {
|
|
@@ -1571,10 +1569,25 @@ export async function memoryReasonSimilar(
|
|
|
1571
1569
|
export async function memorySearchHybrid(
|
|
1572
1570
|
params: {
|
|
1573
1571
|
query: string;
|
|
1572
|
+
limit?: number;
|
|
1573
|
+
/**
|
|
1574
|
+
* @deprecated Weight parameters are unused — hybrid search now uses
|
|
1575
|
+
* Reciprocal Rank Fusion (RRF) which is rank-based and does not require
|
|
1576
|
+
* per-source weights. This field is accepted but silently ignored.
|
|
1577
|
+
*/
|
|
1574
1578
|
ftsWeight?: number;
|
|
1579
|
+
/**
|
|
1580
|
+
* @deprecated Weight parameters are unused — hybrid search now uses
|
|
1581
|
+
* Reciprocal Rank Fusion (RRF) which is rank-based and does not require
|
|
1582
|
+
* per-source weights. This field is accepted but silently ignored.
|
|
1583
|
+
*/
|
|
1575
1584
|
vecWeight?: number;
|
|
1585
|
+
/**
|
|
1586
|
+
* @deprecated Weight parameters are unused — hybrid search now uses
|
|
1587
|
+
* Reciprocal Rank Fusion (RRF) which is rank-based and does not require
|
|
1588
|
+
* per-source weights. This field is accepted but silently ignored.
|
|
1589
|
+
*/
|
|
1576
1590
|
graphWeight?: number;
|
|
1577
|
-
limit?: number;
|
|
1578
1591
|
},
|
|
1579
1592
|
projectRoot?: string,
|
|
1580
1593
|
): Promise<EngineResult> {
|
|
@@ -1586,9 +1599,6 @@ export async function memorySearchHybrid(
|
|
|
1586
1599
|
const root = resolveRoot(projectRoot);
|
|
1587
1600
|
const { hybridSearch } = await import('./brain-search.js');
|
|
1588
1601
|
const results = await hybridSearch(params.query, root, {
|
|
1589
|
-
ftsWeight: params.ftsWeight,
|
|
1590
|
-
vecWeight: params.vecWeight,
|
|
1591
|
-
graphWeight: params.graphWeight,
|
|
1592
1602
|
limit: params.limit,
|
|
1593
1603
|
});
|
|
1594
1604
|
return { success: true, data: { results, total: results.length } };
|