@cleocode/core 2026.4.31 → 2026.4.35
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.js +400 -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/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 +4 -0
- package/dist/hooks/handlers/index.d.ts.map +1 -1
- package/dist/hooks/handlers/index.js +34 -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 +16 -0
- package/dist/hooks/handlers/session-hooks.d.ts.map +1 -1
- package/dist/hooks/handlers/session-hooks.js +157 -0
- package/dist/hooks/handlers/session-hooks.js.map +1 -0
- package/dist/hooks/handlers/task-hooks.js +65 -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 +3828 -2167
- 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 +8 -3
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +320 -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/auto-extract.js +96 -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 +69 -1
- package/dist/memory/brain-retrieval.d.ts.map +1 -1
- package/dist/memory/brain-retrieval.js +912 -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.map +1 -1
- package/dist/memory/brain-search.js +528 -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.map +1 -1
- package/dist/memory/engine-compat.js +1564 -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 +178 -0
- package/dist/memory/learnings.js.map +1 -0
- package/dist/memory/memory-bridge.js +370 -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/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 +496 -3
- package/dist/store/brain-schema.d.ts.map +1 -1
- package/dist/store/brain-schema.js +549 -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 +257 -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.js +229 -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 +8 -8
- package/src/hooks/handlers/index.ts +6 -0
- package/src/hooks/handlers/intelligence-hooks.ts +80 -0
- package/src/hooks/handlers/session-hooks.ts +41 -0
- package/src/hooks/handlers/watchdog-hooks.ts +187 -0
- package/src/injection.ts +41 -2
- package/src/internal.ts +31 -2
- package/src/memory/brain-consolidator.ts +344 -0
- package/src/memory/brain-lifecycle.ts +636 -2
- package/src/memory/brain-retrieval.ts +445 -2
- package/src/memory/brain-search.ts +38 -4
- package/src/memory/decisions.ts +21 -1
- package/src/memory/engine-compat.ts +9 -11
- package/src/memory/extraction-gate.ts +574 -0
- package/src/memory/index.ts +6 -2
- package/src/memory/learnings.ts +33 -1
- 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 +238 -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/graph-ops.ts +1 -0
- package/src/tasks/task-ops.ts +1 -1
- package/templates/CLEO-INJECTION.md +15 -0
|
@@ -23,6 +23,8 @@ import { getBrainAccessor } from '../store/brain-accessor.js';
|
|
|
23
23
|
import type {
|
|
24
24
|
BRAIN_OBSERVATION_SOURCE_TYPES,
|
|
25
25
|
BRAIN_OBSERVATION_TYPES,
|
|
26
|
+
BrainMemoryTier,
|
|
27
|
+
BrainSourceConfidence,
|
|
26
28
|
} from '../store/brain-schema.js';
|
|
27
29
|
import { sessionExistsInTasksDb } from '../store/cross-db-cleanup.js';
|
|
28
30
|
import { getDb } from '../store/sqlite.js';
|
|
@@ -35,6 +37,7 @@ import type {
|
|
|
35
37
|
BrainTimelineNeighborRow,
|
|
36
38
|
} from './brain-row-types.js';
|
|
37
39
|
import { searchBrain } from './brain-search.js';
|
|
40
|
+
import { searchSimilar } from './brain-similarity.js';
|
|
38
41
|
import { addGraphEdge, upsertGraphNode } from './graph-auto-populate.js';
|
|
39
42
|
import { computeObservationQuality } from './quality-scoring.js';
|
|
40
43
|
|
|
@@ -127,6 +130,14 @@ export interface ObserveBrainParams {
|
|
|
127
130
|
sourceType?: BrainObservationSourceType;
|
|
128
131
|
/** T417: agent provenance — the name of the spawned agent producing this observation. */
|
|
129
132
|
agent?: string;
|
|
133
|
+
/**
|
|
134
|
+
* T549 Wave 1-A: source reliability level.
|
|
135
|
+
* Overrides the default routing. If omitted, routing is determined automatically:
|
|
136
|
+
* - sourceType 'manual' → 'owner'
|
|
137
|
+
* - sourceType 'session-debrief' → 'task-outcome'
|
|
138
|
+
* - otherwise → 'agent'
|
|
139
|
+
*/
|
|
140
|
+
sourceConfidence?: BrainSourceConfidence;
|
|
130
141
|
}
|
|
131
142
|
|
|
132
143
|
/** Result from observeBrain. */
|
|
@@ -551,6 +562,7 @@ export async function observeBrain(
|
|
|
551
562
|
sourceSessionId,
|
|
552
563
|
sourceType,
|
|
553
564
|
agent,
|
|
565
|
+
sourceConfidence: sourceConfidenceParam,
|
|
554
566
|
} = params;
|
|
555
567
|
|
|
556
568
|
if (!text?.trim()) {
|
|
@@ -561,6 +573,24 @@ export async function observeBrain(
|
|
|
561
573
|
const title = titleParam ?? text.slice(0, 120);
|
|
562
574
|
const now = new Date().toISOString().replace('T', ' ').slice(0, 19);
|
|
563
575
|
|
|
576
|
+
// T549 Wave 1-A: Tier routing for observations.
|
|
577
|
+
// Observations always start as short-term episodic entries.
|
|
578
|
+
// sourceConfidence routing (spec §4.1 Decision Tree):
|
|
579
|
+
// - sourceType 'manual' → 'owner' (owner-stated facts skip short-term in consolidator)
|
|
580
|
+
// - sourceType 'session-debrief' → 'task-outcome' (synthesized summaries)
|
|
581
|
+
// - otherwise → 'agent' (default for all hook/agent writes)
|
|
582
|
+
// verified is always false at write time — consolidator sets true via corroboration gate.
|
|
583
|
+
const resolvedSourceConfidence: BrainSourceConfidence =
|
|
584
|
+
sourceConfidenceParam ??
|
|
585
|
+
(sourceType === 'manual'
|
|
586
|
+
? 'owner'
|
|
587
|
+
: sourceType === 'session-debrief'
|
|
588
|
+
? 'task-outcome'
|
|
589
|
+
: 'agent');
|
|
590
|
+
const memoryTier: BrainMemoryTier = 'short';
|
|
591
|
+
const memoryType = 'episodic' as const;
|
|
592
|
+
const verified = false;
|
|
593
|
+
|
|
564
594
|
// Content-hash dedup: SHA-256 prefix of title+text
|
|
565
595
|
const contentHash = createHash('sha256')
|
|
566
596
|
.update(title + text)
|
|
@@ -603,8 +633,13 @@ export async function observeBrain(
|
|
|
603
633
|
}
|
|
604
634
|
}
|
|
605
635
|
|
|
606
|
-
// Compute quality score from text richness and
|
|
607
|
-
const qualityScore = computeObservationQuality({
|
|
636
|
+
// Compute quality score from text richness, title length, and T549 source multiplier.
|
|
637
|
+
const qualityScore = computeObservationQuality({
|
|
638
|
+
text,
|
|
639
|
+
title,
|
|
640
|
+
sourceConfidence: resolvedSourceConfidence,
|
|
641
|
+
memoryTier,
|
|
642
|
+
});
|
|
608
643
|
|
|
609
644
|
const id = `O-${Date.now().toString(36)}-${(observeSeq++ % 1000).toString(36)}`;
|
|
610
645
|
const accessor = await getBrainAccessor(projectRoot);
|
|
@@ -621,6 +656,11 @@ export async function observeBrain(
|
|
|
621
656
|
agent: agent ?? null,
|
|
622
657
|
qualityScore,
|
|
623
658
|
createdAt: now,
|
|
659
|
+
// T549 Wave 1-A: tier/type/confidence assigned at write time
|
|
660
|
+
memoryTier,
|
|
661
|
+
memoryType,
|
|
662
|
+
sourceConfidence: resolvedSourceConfidence,
|
|
663
|
+
verified,
|
|
624
664
|
});
|
|
625
665
|
|
|
626
666
|
// Populate embedding if provider is available (T5387).
|
|
@@ -846,3 +886,406 @@ export async function populateEmbeddings(
|
|
|
846
886
|
|
|
847
887
|
return { processed, skipped, errors };
|
|
848
888
|
}
|
|
889
|
+
|
|
890
|
+
// ============================================================================
|
|
891
|
+
// Budget-Aware Retrieval (T549 Wave 3-A)
|
|
892
|
+
// ============================================================================
|
|
893
|
+
|
|
894
|
+
/** Options for budget-aware retrieval. */
|
|
895
|
+
export interface BudgetedRetrievalOptions {
|
|
896
|
+
/** Filter by cognitive types (semantic / episodic / procedural). */
|
|
897
|
+
types?: Array<'semantic' | 'episodic' | 'procedural'>;
|
|
898
|
+
/** Filter by memory tiers (short / medium / long). */
|
|
899
|
+
tiers?: Array<'short' | 'medium' | 'long'>;
|
|
900
|
+
/** When true, only return verified entries. Default: false. */
|
|
901
|
+
verified?: boolean;
|
|
902
|
+
}
|
|
903
|
+
|
|
904
|
+
/** A single entry returned by budget-aware retrieval. */
|
|
905
|
+
export interface BudgetedEntry {
|
|
906
|
+
id: string;
|
|
907
|
+
type: string;
|
|
908
|
+
title: string;
|
|
909
|
+
text: string;
|
|
910
|
+
/** Fused relevance score: FTS50% + vector40% + graph10% × qualityScore. */
|
|
911
|
+
score: number;
|
|
912
|
+
/** Estimated token cost for this entry (~chars/4). */
|
|
913
|
+
tokensEstimated: number;
|
|
914
|
+
/** Memory tier for this entry. */
|
|
915
|
+
memoryTier?: string;
|
|
916
|
+
/** Cognitive type for this entry. */
|
|
917
|
+
memoryType?: string;
|
|
918
|
+
}
|
|
919
|
+
|
|
920
|
+
/** Result from retrieveWithBudget. */
|
|
921
|
+
export interface BudgetedResult {
|
|
922
|
+
entries: BudgetedEntry[];
|
|
923
|
+
/** Total tokens consumed by returned entries. */
|
|
924
|
+
tokensUsed: number;
|
|
925
|
+
/** Tokens remaining from the original budget. */
|
|
926
|
+
tokensRemaining: number;
|
|
927
|
+
/** Number of entries excluded due to budget constraints. */
|
|
928
|
+
excluded: number;
|
|
929
|
+
}
|
|
930
|
+
|
|
931
|
+
/**
|
|
932
|
+
* Budget-aware hybrid retrieval combining FTS5, vector KNN, and graph neighbor scores.
|
|
933
|
+
*
|
|
934
|
+
* Strategy (parallel where possible):
|
|
935
|
+
* A. FTS5 BM25 search (always) — keyword precision (50% weight)
|
|
936
|
+
* B. Vector KNN search (optional) — semantic recall (40% weight, skipped if no embeddings)
|
|
937
|
+
* C. Graph neighbors (optional) — associative context (10% weight, skipped if graph empty)
|
|
938
|
+
*
|
|
939
|
+
* Score fusion: final = (fts*0.50 + vec*0.40 + graph*0.10) × qualityScore
|
|
940
|
+
* Recency boost: +0.05 for entries updated in last 7 days.
|
|
941
|
+
* Type priority: procedural entries get +0.10 (always-useful rules).
|
|
942
|
+
*
|
|
943
|
+
* Budget enforcement:
|
|
944
|
+
* - Rank top-50 candidates by fused score.
|
|
945
|
+
* - Walk list, accumulate token cost (≈ textLen/4), stop at budget.
|
|
946
|
+
* - Episodic entries dropped first when budget is tight.
|
|
947
|
+
*
|
|
948
|
+
* Citation tracking: increments citationCount for returned entries in background (setImmediate).
|
|
949
|
+
*
|
|
950
|
+
* @param projectRoot - Project root directory
|
|
951
|
+
* @param query - Text to search for
|
|
952
|
+
* @param tokenBudget - Maximum tokens to spend on results (default 500)
|
|
953
|
+
* @param options - Optional filters (types, tiers, verified)
|
|
954
|
+
* @returns Retrieved entries within budget with token accounting
|
|
955
|
+
*/
|
|
956
|
+
export async function retrieveWithBudget(
|
|
957
|
+
projectRoot: string,
|
|
958
|
+
query: string,
|
|
959
|
+
tokenBudget = 500,
|
|
960
|
+
options?: BudgetedRetrievalOptions,
|
|
961
|
+
): Promise<BudgetedResult> {
|
|
962
|
+
if (!query?.trim()) {
|
|
963
|
+
return { entries: [], tokensUsed: 0, tokensRemaining: tokenBudget, excluded: 0 };
|
|
964
|
+
}
|
|
965
|
+
|
|
966
|
+
// -------------------------------------------------------------------------
|
|
967
|
+
// Run search strategies in parallel
|
|
968
|
+
// -------------------------------------------------------------------------
|
|
969
|
+
const [ftsResult, vecResults, graphNeighbors] = await Promise.all([
|
|
970
|
+
// A. FTS5
|
|
971
|
+
searchBrain(projectRoot, query, { limit: 30 }).catch(() => ({
|
|
972
|
+
decisions: [],
|
|
973
|
+
patterns: [],
|
|
974
|
+
learnings: [],
|
|
975
|
+
observations: [],
|
|
976
|
+
})),
|
|
977
|
+
// B. Vector KNN (degrades gracefully when unavailable)
|
|
978
|
+
searchSimilar(query, projectRoot, 20).catch(
|
|
979
|
+
() => [] as ReturnType<typeof searchSimilar> extends Promise<infer T> ? T : never[],
|
|
980
|
+
),
|
|
981
|
+
// C. Graph neighbors from top FTS hit
|
|
982
|
+
Promise.resolve([] as Array<{ id: string; graphScore: number }>),
|
|
983
|
+
]);
|
|
984
|
+
|
|
985
|
+
// -------------------------------------------------------------------------
|
|
986
|
+
// Build ID → score map from FTS results
|
|
987
|
+
// -------------------------------------------------------------------------
|
|
988
|
+
interface ScoredEntry {
|
|
989
|
+
id: string;
|
|
990
|
+
type: string;
|
|
991
|
+
title: string;
|
|
992
|
+
text: string;
|
|
993
|
+
ftsScore: number;
|
|
994
|
+
vecScore: number;
|
|
995
|
+
graphScore: number;
|
|
996
|
+
qualityScore: number;
|
|
997
|
+
memoryTier?: string;
|
|
998
|
+
memoryType?: string;
|
|
999
|
+
updatedAt?: string;
|
|
1000
|
+
}
|
|
1001
|
+
|
|
1002
|
+
const candidateMap = new Map<string, ScoredEntry>();
|
|
1003
|
+
|
|
1004
|
+
// FTS results (normalized score 0.5 starting point — BM25 doesn't give 0..1)
|
|
1005
|
+
const FTS_BASE = 0.5;
|
|
1006
|
+
for (const d of ftsResult.decisions) {
|
|
1007
|
+
const raw = d as Record<string, unknown>;
|
|
1008
|
+
const id = d.id;
|
|
1009
|
+
const tier = (d.memoryTier ?? (raw['memory_tier'] as string | undefined)) || undefined;
|
|
1010
|
+
const mtype = (d.memoryType ?? (raw['memory_type'] as string | undefined)) || undefined;
|
|
1011
|
+
const updatedAt = (d.updatedAt ?? (raw['updated_at'] as string | undefined)) || undefined;
|
|
1012
|
+
candidateMap.set(id, {
|
|
1013
|
+
id,
|
|
1014
|
+
type: 'decision',
|
|
1015
|
+
title: d.decision.slice(0, 120),
|
|
1016
|
+
text: `${d.decision} — ${d.rationale}`,
|
|
1017
|
+
ftsScore: FTS_BASE,
|
|
1018
|
+
vecScore: 0,
|
|
1019
|
+
graphScore: 0,
|
|
1020
|
+
qualityScore: d.qualityScore ?? 0.5,
|
|
1021
|
+
memoryTier: tier,
|
|
1022
|
+
memoryType: mtype,
|
|
1023
|
+
updatedAt,
|
|
1024
|
+
});
|
|
1025
|
+
}
|
|
1026
|
+
|
|
1027
|
+
for (const p of ftsResult.patterns) {
|
|
1028
|
+
const raw = p as Record<string, unknown>;
|
|
1029
|
+
const id = p.id;
|
|
1030
|
+
const tier = (p.memoryTier ?? (raw['memory_tier'] as string | undefined)) || undefined;
|
|
1031
|
+
const mtype = (p.memoryType ?? (raw['memory_type'] as string | undefined)) || undefined;
|
|
1032
|
+
const updatedAt = (p.updatedAt ?? (raw['updated_at'] as string | undefined)) || undefined;
|
|
1033
|
+
candidateMap.set(id, {
|
|
1034
|
+
id,
|
|
1035
|
+
type: 'pattern',
|
|
1036
|
+
title: p.pattern.slice(0, 120),
|
|
1037
|
+
text: `${p.pattern} — ${p.context}`,
|
|
1038
|
+
ftsScore: FTS_BASE,
|
|
1039
|
+
vecScore: 0,
|
|
1040
|
+
graphScore: 0,
|
|
1041
|
+
qualityScore: p.qualityScore ?? 0.5,
|
|
1042
|
+
memoryTier: tier,
|
|
1043
|
+
memoryType: mtype,
|
|
1044
|
+
updatedAt,
|
|
1045
|
+
});
|
|
1046
|
+
}
|
|
1047
|
+
|
|
1048
|
+
for (const l of ftsResult.learnings) {
|
|
1049
|
+
const raw = l as Record<string, unknown>;
|
|
1050
|
+
const id = l.id;
|
|
1051
|
+
const tier = (l.memoryTier ?? (raw['memory_tier'] as string | undefined)) || undefined;
|
|
1052
|
+
const mtype = (l.memoryType ?? (raw['memory_type'] as string | undefined)) || undefined;
|
|
1053
|
+
const updatedAt = (l.updatedAt ?? (raw['updated_at'] as string | undefined)) || undefined;
|
|
1054
|
+
candidateMap.set(id, {
|
|
1055
|
+
id,
|
|
1056
|
+
type: 'learning',
|
|
1057
|
+
title: l.insight.slice(0, 120),
|
|
1058
|
+
text: `${l.insight} (source: ${l.source})`,
|
|
1059
|
+
ftsScore: FTS_BASE,
|
|
1060
|
+
vecScore: 0,
|
|
1061
|
+
graphScore: 0,
|
|
1062
|
+
qualityScore: l.qualityScore ?? 0.5,
|
|
1063
|
+
memoryTier: tier,
|
|
1064
|
+
memoryType: mtype,
|
|
1065
|
+
updatedAt,
|
|
1066
|
+
});
|
|
1067
|
+
}
|
|
1068
|
+
|
|
1069
|
+
for (const o of ftsResult.observations) {
|
|
1070
|
+
const raw = o as Record<string, unknown>;
|
|
1071
|
+
const id = o.id;
|
|
1072
|
+
const tier = (o.memoryTier ?? (raw['memory_tier'] as string | undefined)) || undefined;
|
|
1073
|
+
const mtype = (o.memoryType ?? (raw['memory_type'] as string | undefined)) || undefined;
|
|
1074
|
+
const updatedAt = (o.updatedAt ?? (raw['updated_at'] as string | undefined)) || undefined;
|
|
1075
|
+
candidateMap.set(id, {
|
|
1076
|
+
id,
|
|
1077
|
+
type: 'observation',
|
|
1078
|
+
title: o.title.slice(0, 120),
|
|
1079
|
+
text: o.narrative ?? o.title,
|
|
1080
|
+
ftsScore: FTS_BASE,
|
|
1081
|
+
vecScore: 0,
|
|
1082
|
+
graphScore: 0,
|
|
1083
|
+
qualityScore: o.qualityScore ?? 0.5,
|
|
1084
|
+
memoryTier: tier,
|
|
1085
|
+
memoryType: mtype,
|
|
1086
|
+
updatedAt,
|
|
1087
|
+
});
|
|
1088
|
+
}
|
|
1089
|
+
|
|
1090
|
+
// B. Merge vector scores (distance → similarity: similarity = 1 - distance)
|
|
1091
|
+
for (const v of vecResults) {
|
|
1092
|
+
const simScore = Math.max(0, 1 - v.distance);
|
|
1093
|
+
const existing = candidateMap.get(v.id);
|
|
1094
|
+
if (existing) {
|
|
1095
|
+
existing.vecScore = simScore;
|
|
1096
|
+
} else {
|
|
1097
|
+
candidateMap.set(v.id, {
|
|
1098
|
+
id: v.id,
|
|
1099
|
+
type: v.type,
|
|
1100
|
+
title: v.title.slice(0, 120),
|
|
1101
|
+
text: v.text,
|
|
1102
|
+
ftsScore: 0,
|
|
1103
|
+
vecScore: simScore,
|
|
1104
|
+
graphScore: 0,
|
|
1105
|
+
qualityScore: 0.5,
|
|
1106
|
+
memoryTier: undefined,
|
|
1107
|
+
memoryType: undefined,
|
|
1108
|
+
});
|
|
1109
|
+
}
|
|
1110
|
+
}
|
|
1111
|
+
|
|
1112
|
+
// C. Merge graph scores
|
|
1113
|
+
for (const g of graphNeighbors) {
|
|
1114
|
+
const existing = candidateMap.get(g.id);
|
|
1115
|
+
if (existing) {
|
|
1116
|
+
existing.graphScore = g.graphScore;
|
|
1117
|
+
}
|
|
1118
|
+
}
|
|
1119
|
+
|
|
1120
|
+
// -------------------------------------------------------------------------
|
|
1121
|
+
// Score fusion + ranking
|
|
1122
|
+
// -------------------------------------------------------------------------
|
|
1123
|
+
const sevenDaysAgo = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000)
|
|
1124
|
+
.toISOString()
|
|
1125
|
+
.replace('T', ' ')
|
|
1126
|
+
.slice(0, 19);
|
|
1127
|
+
|
|
1128
|
+
const candidates = Array.from(candidateMap.values()).map((c) => {
|
|
1129
|
+
// Fused score
|
|
1130
|
+
let score = c.ftsScore * 0.5 + c.vecScore * 0.4 + c.graphScore * 0.1;
|
|
1131
|
+
|
|
1132
|
+
// Quality multiplier
|
|
1133
|
+
score *= c.qualityScore;
|
|
1134
|
+
|
|
1135
|
+
// Recency boost for recently-updated entries
|
|
1136
|
+
if (c.updatedAt && c.updatedAt >= sevenDaysAgo) {
|
|
1137
|
+
score += 0.05;
|
|
1138
|
+
}
|
|
1139
|
+
|
|
1140
|
+
// Type priority boost for procedural entries (always-useful rules)
|
|
1141
|
+
if (c.memoryType === 'procedural' || c.type === 'pattern') {
|
|
1142
|
+
score += 0.1;
|
|
1143
|
+
}
|
|
1144
|
+
|
|
1145
|
+
return { ...c, score };
|
|
1146
|
+
});
|
|
1147
|
+
|
|
1148
|
+
// -------------------------------------------------------------------------
|
|
1149
|
+
// Apply option filters (types, tiers, verified)
|
|
1150
|
+
// -------------------------------------------------------------------------
|
|
1151
|
+
|
|
1152
|
+
// We'll apply verified filter by checking the DB if requested
|
|
1153
|
+
let filtered = candidates;
|
|
1154
|
+
|
|
1155
|
+
if (options?.types && options.types.length > 0) {
|
|
1156
|
+
const allowedTypes = new Set(options.types);
|
|
1157
|
+
filtered = filtered.filter((c) => {
|
|
1158
|
+
if (!c.memoryType) return true; // unknown type — include
|
|
1159
|
+
return allowedTypes.has(c.memoryType as 'semantic' | 'episodic' | 'procedural');
|
|
1160
|
+
});
|
|
1161
|
+
}
|
|
1162
|
+
|
|
1163
|
+
if (options?.tiers && options.tiers.length > 0) {
|
|
1164
|
+
const allowedTiers = new Set(options.tiers);
|
|
1165
|
+
filtered = filtered.filter((c) => {
|
|
1166
|
+
if (!c.memoryTier) return true; // unknown tier — include
|
|
1167
|
+
return allowedTiers.has(c.memoryTier as 'short' | 'medium' | 'long');
|
|
1168
|
+
});
|
|
1169
|
+
}
|
|
1170
|
+
|
|
1171
|
+
// -------------------------------------------------------------------------
|
|
1172
|
+
// Sort: procedural first, then by score descending
|
|
1173
|
+
// -------------------------------------------------------------------------
|
|
1174
|
+
filtered.sort((a, b) => {
|
|
1175
|
+
const aProcedural = a.memoryType === 'procedural' || a.type === 'pattern' ? 1 : 0;
|
|
1176
|
+
const bProcedural = b.memoryType === 'procedural' || b.type === 'pattern' ? 1 : 0;
|
|
1177
|
+
if (aProcedural !== bProcedural) return bProcedural - aProcedural;
|
|
1178
|
+
return b.score - a.score;
|
|
1179
|
+
});
|
|
1180
|
+
|
|
1181
|
+
// Cap candidate list at top 50
|
|
1182
|
+
const topCandidates = filtered.slice(0, 50);
|
|
1183
|
+
|
|
1184
|
+
// -------------------------------------------------------------------------
|
|
1185
|
+
// Budget enforcement — episodic entries are dropped first when budget tight
|
|
1186
|
+
// -------------------------------------------------------------------------
|
|
1187
|
+
|
|
1188
|
+
// Sort for budget walk: procedural first, semantic second, episodic last
|
|
1189
|
+
const typeOrder = (c: ScoredEntry & { score: number }): number => {
|
|
1190
|
+
if (c.memoryType === 'procedural' || c.type === 'pattern') return 0;
|
|
1191
|
+
if (c.memoryType === 'semantic' || c.type === 'decision' || c.type === 'learning') return 1;
|
|
1192
|
+
return 2; // episodic
|
|
1193
|
+
};
|
|
1194
|
+
|
|
1195
|
+
const budgetOrdered = [...topCandidates].sort((a, b) => {
|
|
1196
|
+
const orderDiff = typeOrder(a) - typeOrder(b);
|
|
1197
|
+
if (orderDiff !== 0) return orderDiff;
|
|
1198
|
+
return b.score - a.score;
|
|
1199
|
+
});
|
|
1200
|
+
|
|
1201
|
+
const result: BudgetedEntry[] = [];
|
|
1202
|
+
let tokensUsed = 0;
|
|
1203
|
+
let excluded = 0;
|
|
1204
|
+
|
|
1205
|
+
for (const candidate of budgetOrdered) {
|
|
1206
|
+
const entryTokens = Math.ceil(candidate.text.length / 4);
|
|
1207
|
+
|
|
1208
|
+
if (tokensUsed + entryTokens > tokenBudget) {
|
|
1209
|
+
excluded++;
|
|
1210
|
+
continue;
|
|
1211
|
+
}
|
|
1212
|
+
|
|
1213
|
+
result.push({
|
|
1214
|
+
id: candidate.id,
|
|
1215
|
+
type: candidate.type,
|
|
1216
|
+
title: candidate.title,
|
|
1217
|
+
text: candidate.text,
|
|
1218
|
+
score: candidate.score,
|
|
1219
|
+
tokensEstimated: entryTokens,
|
|
1220
|
+
memoryTier: candidate.memoryTier,
|
|
1221
|
+
memoryType: candidate.memoryType,
|
|
1222
|
+
});
|
|
1223
|
+
tokensUsed += entryTokens;
|
|
1224
|
+
}
|
|
1225
|
+
|
|
1226
|
+
// -------------------------------------------------------------------------
|
|
1227
|
+
// Citation tracking — non-blocking background increment
|
|
1228
|
+
// -------------------------------------------------------------------------
|
|
1229
|
+
if (result.length > 0) {
|
|
1230
|
+
const returnedIds = result.map((e) => e.id);
|
|
1231
|
+
setImmediate(() => {
|
|
1232
|
+
incrementCitationCounts(projectRoot, returnedIds).catch(() => {
|
|
1233
|
+
/* best-effort */
|
|
1234
|
+
});
|
|
1235
|
+
});
|
|
1236
|
+
}
|
|
1237
|
+
|
|
1238
|
+
return {
|
|
1239
|
+
entries: result,
|
|
1240
|
+
tokensUsed,
|
|
1241
|
+
tokensRemaining: tokenBudget - tokensUsed,
|
|
1242
|
+
excluded,
|
|
1243
|
+
};
|
|
1244
|
+
}
|
|
1245
|
+
|
|
1246
|
+
// ============================================================================
|
|
1247
|
+
// Citation Count Increment (non-blocking helper)
|
|
1248
|
+
// ============================================================================
|
|
1249
|
+
|
|
1250
|
+
/**
|
|
1251
|
+
* Increment citationCount for a list of entry IDs.
|
|
1252
|
+
*
|
|
1253
|
+
* Routes each ID to the correct table based on its ID prefix. All updates
|
|
1254
|
+
* are best-effort — errors are silently swallowed.
|
|
1255
|
+
*
|
|
1256
|
+
* @param projectRoot - Project root for brain.db resolution
|
|
1257
|
+
* @param ids - Entry IDs whose citation counts should be incremented
|
|
1258
|
+
*/
|
|
1259
|
+
async function incrementCitationCounts(projectRoot: string, ids: string[]): Promise<void> {
|
|
1260
|
+
if (ids.length === 0) return;
|
|
1261
|
+
|
|
1262
|
+
const { getBrainDb, getBrainNativeDb } = await import('../store/brain-sqlite.js');
|
|
1263
|
+
await getBrainDb(projectRoot);
|
|
1264
|
+
const nativeDb = getBrainNativeDb();
|
|
1265
|
+
if (!nativeDb) return;
|
|
1266
|
+
|
|
1267
|
+
const now = new Date().toISOString().replace('T', ' ').slice(0, 19);
|
|
1268
|
+
|
|
1269
|
+
for (const id of ids) {
|
|
1270
|
+
let table: string;
|
|
1271
|
+
if (id.startsWith('D-') || /^D\d/.test(id)) {
|
|
1272
|
+
table = 'brain_decisions';
|
|
1273
|
+
} else if (id.startsWith('P-') || /^P\d/.test(id)) {
|
|
1274
|
+
table = 'brain_patterns';
|
|
1275
|
+
} else if (id.startsWith('L-') || /^L\d/.test(id)) {
|
|
1276
|
+
table = 'brain_learnings';
|
|
1277
|
+
} else {
|
|
1278
|
+
table = 'brain_observations';
|
|
1279
|
+
}
|
|
1280
|
+
|
|
1281
|
+
try {
|
|
1282
|
+
nativeDb
|
|
1283
|
+
.prepare(
|
|
1284
|
+
`UPDATE ${table} SET citation_count = citation_count + 1, updated_at = ? WHERE id = ?`,
|
|
1285
|
+
)
|
|
1286
|
+
.run(now, id);
|
|
1287
|
+
} catch {
|
|
1288
|
+
/* best-effort — column may not exist in older schemas */
|
|
1289
|
+
}
|
|
1290
|
+
}
|
|
1291
|
+
}
|
|
@@ -545,13 +545,47 @@ function likeSearchObservations(
|
|
|
545
545
|
|
|
546
546
|
/**
|
|
547
547
|
* Escape special FTS5 characters in query string.
|
|
548
|
-
*
|
|
548
|
+
*
|
|
549
|
+
* Wraps each meaningful token in double quotes and joins with OR so that
|
|
550
|
+
* partial matches are returned even when some tokens are not indexable
|
|
551
|
+
* (e.g. task prefixes like "EPIC:", em-dashes "—", or short stop-words).
|
|
552
|
+
*
|
|
553
|
+
* Strategy:
|
|
554
|
+
* 1. Split on whitespace.
|
|
555
|
+
* 2. Keep only tokens that contain at least one word character (\w), which
|
|
556
|
+
* ensures punctuation-only tokens (em dashes, colons standalone, etc.)
|
|
557
|
+
* are dropped before they zero-out the entire result set.
|
|
558
|
+
* 3. Deduplicate case-insensitively.
|
|
559
|
+
* 4. Join with OR so the query broadens rather than requiring ALL tokens.
|
|
560
|
+
*
|
|
561
|
+
* Using AND (implicit FTS5 join) caused empty results whenever a task title
|
|
562
|
+
* contained non-word tokens such as em dashes ("—") or trailing colons
|
|
563
|
+
* ("EPIC:"), because FTS5's default tokenizer cannot index them and the
|
|
564
|
+
* AND semantics then guaranteed zero matches for the whole query. (T553 bug fix)
|
|
549
565
|
*/
|
|
550
566
|
function escapeFts5Query(query: string): string {
|
|
551
|
-
|
|
552
|
-
|
|
567
|
+
const rawTokens = query.trim().split(/\s+/).filter(Boolean);
|
|
568
|
+
if (rawTokens.length === 0) return '""';
|
|
569
|
+
|
|
570
|
+
// Keep tokens that have at least one alphanumeric character and are not
|
|
571
|
+
// pure stop-words (length ≥ 2 after stripping leading/trailing punctuation).
|
|
572
|
+
const seen = new Set<string>();
|
|
573
|
+
const tokens: string[] = [];
|
|
574
|
+
for (const t of rawTokens) {
|
|
575
|
+
// Strip leading/trailing non-word characters (e.g. "EPIC:" → "EPIC", "—" → "")
|
|
576
|
+
const stripped = t.replace(/^\W+|\W+$/g, '');
|
|
577
|
+
if (stripped.length < 2) continue; // skip very short or empty tokens
|
|
578
|
+
if (!/\w/.test(stripped)) continue; // skip tokens with no word chars
|
|
579
|
+
const lower = stripped.toLowerCase();
|
|
580
|
+
if (seen.has(lower)) continue; // deduplicate
|
|
581
|
+
seen.add(lower);
|
|
582
|
+
tokens.push(`"${stripped.replace(/"/g, '""')}"`);
|
|
583
|
+
}
|
|
584
|
+
|
|
553
585
|
if (tokens.length === 0) return '""';
|
|
554
|
-
|
|
586
|
+
|
|
587
|
+
// OR semantics: any matching token returns the row, ranked by BM25 relevance.
|
|
588
|
+
return tokens.join(' OR ');
|
|
555
589
|
}
|
|
556
590
|
|
|
557
591
|
/**
|
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 {
|