@cleocode/core 2026.4.30 → 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.d.ts +35 -0
- package/dist/bootstrap.d.ts.map +1 -1
- 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.d.ts +8 -4
- package/dist/code/index.d.ts.map +1 -1
- 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.d.ts +22 -9
- package/dist/code/parser.d.ts.map +1 -1
- 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 +27 -4
- 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.d.ts +6 -6
- 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.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8765 -6253
- 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 +18 -10
- 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.d.ts +11 -7
- package/dist/lib/tree-sitter-languages.d.ts.map +1 -1
- 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.d.ts +27 -15
- package/dist/memory/auto-extract.d.ts.map +1 -1
- package/dist/memory/auto-extract.js +96 -0
- package/dist/memory/auto-extract.js.map +1 -0
- package/dist/memory/brain-backfill.d.ts +59 -0
- package/dist/memory/brain-backfill.d.ts.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.d.ts +51 -0
- package/dist/memory/brain-purge.d.ts.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 +71 -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.d.ts +65 -0
- package/dist/memory/graph-auto-populate.d.ts.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.d.ts +127 -0
- package/dist/memory/graph-queries.d.ts.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 +16 -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 +26 -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 +127 -0
- package/dist/memory/quality-scoring.d.ts.map +1 -0
- 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.d.ts +16 -10
- package/dist/sessions/session-memory-bridge.d.ts.map +1 -1
- 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.d.ts +7 -0
- package/dist/store/brain-accessor.d.ts.map +1 -1
- package/dist/store/brain-accessor.js +429 -0
- package/dist/store/brain-accessor.js.map +1 -0
- package/dist/store/brain-schema.d.ts +712 -45
- 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.d.ts +480 -2
- package/dist/store/nexus-schema.d.ts.map +1 -1
- 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 +10 -10
- 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 +50 -34
- package/dist/store/validation-schemas.d.ts.map +1 -1
- 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.d.ts +43 -0
- package/dist/system/dependencies.d.ts.map +1 -0
- package/dist/system/dependencies.js +466 -0
- package/dist/system/dependencies.js.map +1 -0
- package/dist/system/health.d.ts +3 -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 +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 +19 -19
- package/src/bootstrap.ts +124 -0
- package/src/code/index.ts +20 -4
- package/src/code/parser.ts +310 -110
- package/src/hooks/handlers/__tests__/hook-automation-e2e.test.ts +19 -45
- package/src/hooks/handlers/__tests__/session-hooks.test.ts +42 -54
- package/src/hooks/handlers/index.ts +6 -0
- package/src/hooks/handlers/intelligence-hooks.ts +80 -0
- package/src/hooks/handlers/session-hooks.ts +52 -33
- package/src/hooks/handlers/watchdog-hooks.ts +187 -0
- package/src/index.ts +14 -0
- package/src/injection.ts +41 -2
- package/src/internal.ts +68 -9
- package/src/lib/tree-sitter-languages.ts +11 -7
- package/src/memory/__tests__/auto-extract.test.ts +20 -82
- package/src/memory/__tests__/embedding-pipeline.test.ts +389 -0
- package/src/memory/auto-extract.ts +34 -120
- package/src/memory/brain-backfill.ts +471 -0
- package/src/memory/brain-consolidator.ts +344 -0
- package/src/memory/brain-lifecycle.ts +636 -2
- package/src/memory/brain-purge.ts +315 -0
- package/src/memory/brain-retrieval.ts +486 -2
- package/src/memory/brain-search.ts +61 -10
- package/src/memory/decisions.ts +96 -3
- package/src/memory/engine-compat.ts +177 -11
- package/src/memory/extraction-gate.ts +574 -0
- package/src/memory/graph-auto-populate.ts +173 -0
- package/src/memory/graph-queries.ts +424 -0
- package/src/memory/index.ts +6 -2
- package/src/memory/learnings.ts +87 -7
- package/src/memory/patterns.ts +95 -13
- package/src/memory/quality-scoring.ts +257 -0
- package/src/nexus/nexus-bridge.ts +444 -0
- package/src/scaffold.ts +42 -0
- package/src/sessions/__tests__/session-memory-bridge.test.ts +27 -49
- package/src/sessions/session-memory-bridge.ts +19 -47
- package/src/stats/index.ts +11 -3
- package/src/store/__tests__/brain-accessor-pageindex.test.ts +93 -22
- package/src/store/brain-accessor.ts +48 -2
- package/src/store/brain-schema.ts +403 -13
- package/src/store/brain-sqlite.ts +90 -0
- package/src/store/migration-manager.ts +83 -12
- package/src/store/nexus-schema.ts +257 -3
- package/src/system/dependencies.ts +534 -0
- package/src/system/health.ts +143 -22
- package/src/tasks/complete.ts +40 -0
- package/src/tasks/graph-ops.ts +1 -0
- package/src/tasks/task-ops.ts +1 -1
- package/templates/CLEO-INJECTION.md +15 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* BRAIN lifecycle operations — temporal decay and
|
|
2
|
+
* BRAIN lifecycle operations — temporal decay, memory consolidation, and tier promotion.
|
|
3
3
|
*
|
|
4
4
|
* Reduces confidence of stale learnings based on age, following an
|
|
5
5
|
* exponential decay model: new_confidence = confidence * (decayRate ^ daysSinceUpdate).
|
|
@@ -7,7 +7,13 @@
|
|
|
7
7
|
* Consolidation groups old observations by keyword overlap and merges
|
|
8
8
|
* clusters into summary observations, archiving the originals.
|
|
9
9
|
*
|
|
10
|
-
*
|
|
10
|
+
* Wave 3 additions (T549):
|
|
11
|
+
* - runTierPromotion — promotes entries through short→medium→long based on citation count,
|
|
12
|
+
* age, and verification; soft-evicts stale short-term entries.
|
|
13
|
+
* - runConsolidation — orchestrates all consolidation steps (dedup, quality recompute,
|
|
14
|
+
* tier promotion, contradiction detection, soft eviction, graph strengthening, summaries).
|
|
15
|
+
*
|
|
16
|
+
* @task T5394 T5395 T549
|
|
11
17
|
* @epic T5149
|
|
12
18
|
*/
|
|
13
19
|
|
|
@@ -344,3 +350,631 @@ export async function consolidateMemories(
|
|
|
344
350
|
|
|
345
351
|
return { grouped, merged, archived };
|
|
346
352
|
}
|
|
353
|
+
|
|
354
|
+
// ============================================================================
|
|
355
|
+
// Tier Promotion (T549 Wave 3-B)
|
|
356
|
+
// ============================================================================
|
|
357
|
+
|
|
358
|
+
/** A single promoted or evicted entry record. */
|
|
359
|
+
export interface PromotionRecord {
|
|
360
|
+
id: string;
|
|
361
|
+
table: string;
|
|
362
|
+
fromTier: string;
|
|
363
|
+
toTier: string;
|
|
364
|
+
reason: string;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
/** Eviction record for soft-evicted entries. */
|
|
368
|
+
export interface EvictionRecord {
|
|
369
|
+
id: string;
|
|
370
|
+
table: string;
|
|
371
|
+
tier: string;
|
|
372
|
+
reason: string;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
/** Result from runTierPromotion. */
|
|
376
|
+
export interface PromotionResult {
|
|
377
|
+
promoted: PromotionRecord[];
|
|
378
|
+
evicted: EvictionRecord[];
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
/**
|
|
382
|
+
* Run tier promotion for all memory tables.
|
|
383
|
+
*
|
|
384
|
+
* Promotion rules (per spec §1.1–§1.3):
|
|
385
|
+
* - short → medium: citationCount >= 3 AND age > 24h AND verified = true
|
|
386
|
+
* OR qualityScore >= 0.7 AND verified = true (fast-track)
|
|
387
|
+
* - medium → long: citationCount >= 5 AND age > 7 days AND verified = true
|
|
388
|
+
*
|
|
389
|
+
* Eviction rules:
|
|
390
|
+
* - short-term entries older than shortTermEvictionDays (default 7) with no
|
|
391
|
+
* promotion eligibility are soft-evicted (invalidAt = now).
|
|
392
|
+
* - long-term entries are NEVER auto-evicted.
|
|
393
|
+
*
|
|
394
|
+
* @param projectRoot - Project root directory for brain.db resolution
|
|
395
|
+
* @returns Lists of promoted and evicted entries
|
|
396
|
+
*/
|
|
397
|
+
export async function runTierPromotion(projectRoot: string): Promise<PromotionResult> {
|
|
398
|
+
const { getBrainDb, getBrainNativeDb } = await import('../store/brain-sqlite.js');
|
|
399
|
+
await getBrainDb(projectRoot);
|
|
400
|
+
const nativeDb = getBrainNativeDb();
|
|
401
|
+
|
|
402
|
+
if (!nativeDb) {
|
|
403
|
+
return { promoted: [], evicted: [] };
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
const promoted: PromotionRecord[] = [];
|
|
407
|
+
const evicted: EvictionRecord[] = [];
|
|
408
|
+
const now = new Date().toISOString().replace('T', ' ').slice(0, 19);
|
|
409
|
+
|
|
410
|
+
// Threshold timestamps
|
|
411
|
+
const age24h = new Date(Date.now() - 24 * 60 * 60 * 1000)
|
|
412
|
+
.toISOString()
|
|
413
|
+
.replace('T', ' ')
|
|
414
|
+
.slice(0, 19);
|
|
415
|
+
const age7d = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000)
|
|
416
|
+
.toISOString()
|
|
417
|
+
.replace('T', ' ')
|
|
418
|
+
.slice(0, 19);
|
|
419
|
+
const evictionCutoff = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000)
|
|
420
|
+
.toISOString()
|
|
421
|
+
.replace('T', ' ')
|
|
422
|
+
.slice(0, 19);
|
|
423
|
+
|
|
424
|
+
// Tables + their date column name (mixed conventions in schema)
|
|
425
|
+
const tables: Array<{ table: string; dateCol: string }> = [
|
|
426
|
+
{ table: 'brain_observations', dateCol: 'created_at' },
|
|
427
|
+
{ table: 'brain_learnings', dateCol: 'created_at' },
|
|
428
|
+
{ table: 'brain_patterns', dateCol: 'extracted_at' },
|
|
429
|
+
{ table: 'brain_decisions', dateCol: 'created_at' },
|
|
430
|
+
];
|
|
431
|
+
|
|
432
|
+
for (const { table, dateCol } of tables) {
|
|
433
|
+
// --- short → medium promotion ---
|
|
434
|
+
// Two criteria (union):
|
|
435
|
+
// A. citationCount >= 3 AND age > 24h AND verified = 1
|
|
436
|
+
// B. quality_score >= 0.7 AND verified = 1 AND age > 24h (fast-track)
|
|
437
|
+
interface TierRow {
|
|
438
|
+
id: string;
|
|
439
|
+
citation_count: number;
|
|
440
|
+
quality_score: number | null;
|
|
441
|
+
}
|
|
442
|
+
let shortToMedium: TierRow[] = [];
|
|
443
|
+
try {
|
|
444
|
+
shortToMedium = typedAll<TierRow>(
|
|
445
|
+
nativeDb.prepare(`
|
|
446
|
+
SELECT id, citation_count, quality_score
|
|
447
|
+
FROM ${table}
|
|
448
|
+
WHERE memory_tier = 'short'
|
|
449
|
+
AND invalid_at IS NULL
|
|
450
|
+
AND ${dateCol} < ?
|
|
451
|
+
AND verified = 1
|
|
452
|
+
AND (citation_count >= 3 OR quality_score >= 0.7)
|
|
453
|
+
`),
|
|
454
|
+
age24h,
|
|
455
|
+
);
|
|
456
|
+
} catch {
|
|
457
|
+
// Table may lack columns on older DB — best-effort
|
|
458
|
+
continue;
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
for (const row of shortToMedium) {
|
|
462
|
+
try {
|
|
463
|
+
nativeDb
|
|
464
|
+
.prepare(`UPDATE ${table} SET memory_tier = 'medium', updated_at = ? WHERE id = ?`)
|
|
465
|
+
.run(now, row.id);
|
|
466
|
+
promoted.push({
|
|
467
|
+
id: row.id,
|
|
468
|
+
table,
|
|
469
|
+
fromTier: 'short',
|
|
470
|
+
toTier: 'medium',
|
|
471
|
+
reason:
|
|
472
|
+
row.citation_count >= 3
|
|
473
|
+
? `citationCount=${row.citation_count} >= 3, verified, age > 24h`
|
|
474
|
+
: `qualityScore=${row.quality_score?.toFixed(2)} >= 0.70, verified, age > 24h`,
|
|
475
|
+
});
|
|
476
|
+
} catch {
|
|
477
|
+
/* best-effort */
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
// --- medium → long promotion ---
|
|
482
|
+
let mediumToLong: TierRow[] = [];
|
|
483
|
+
try {
|
|
484
|
+
mediumToLong = typedAll<TierRow>(
|
|
485
|
+
nativeDb.prepare(`
|
|
486
|
+
SELECT id, citation_count, quality_score
|
|
487
|
+
FROM ${table}
|
|
488
|
+
WHERE memory_tier = 'medium'
|
|
489
|
+
AND invalid_at IS NULL
|
|
490
|
+
AND ${dateCol} < ?
|
|
491
|
+
AND verified = 1
|
|
492
|
+
AND citation_count >= 5
|
|
493
|
+
`),
|
|
494
|
+
age7d,
|
|
495
|
+
);
|
|
496
|
+
} catch {
|
|
497
|
+
continue;
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
for (const row of mediumToLong) {
|
|
501
|
+
try {
|
|
502
|
+
nativeDb
|
|
503
|
+
.prepare(`UPDATE ${table} SET memory_tier = 'long', updated_at = ? WHERE id = ?`)
|
|
504
|
+
.run(now, row.id);
|
|
505
|
+
promoted.push({
|
|
506
|
+
id: row.id,
|
|
507
|
+
table,
|
|
508
|
+
fromTier: 'medium',
|
|
509
|
+
toTier: 'long',
|
|
510
|
+
reason: `citationCount=${row.citation_count} >= 5, verified, age > 7d`,
|
|
511
|
+
});
|
|
512
|
+
} catch {
|
|
513
|
+
/* best-effort */
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
// --- soft eviction of stale short-term entries ---
|
|
518
|
+
// Evict short-term entries older than 7d that are NOT verified and have
|
|
519
|
+
// low quality (< 0.5). Long-term entries are explicitly protected.
|
|
520
|
+
interface EvictRow {
|
|
521
|
+
id: string;
|
|
522
|
+
quality_score: number | null;
|
|
523
|
+
}
|
|
524
|
+
let toEvict: EvictRow[] = [];
|
|
525
|
+
try {
|
|
526
|
+
toEvict = typedAll<EvictRow>(
|
|
527
|
+
nativeDb.prepare(`
|
|
528
|
+
SELECT id, quality_score
|
|
529
|
+
FROM ${table}
|
|
530
|
+
WHERE memory_tier = 'short'
|
|
531
|
+
AND invalid_at IS NULL
|
|
532
|
+
AND ${dateCol} < ?
|
|
533
|
+
AND (verified = 0 OR verified IS NULL)
|
|
534
|
+
AND (quality_score IS NULL OR quality_score < 0.5)
|
|
535
|
+
`),
|
|
536
|
+
evictionCutoff,
|
|
537
|
+
);
|
|
538
|
+
} catch {
|
|
539
|
+
continue;
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
for (const row of toEvict) {
|
|
543
|
+
try {
|
|
544
|
+
nativeDb
|
|
545
|
+
.prepare(`UPDATE ${table} SET invalid_at = ?, updated_at = ? WHERE id = ?`)
|
|
546
|
+
.run(now, now, row.id);
|
|
547
|
+
evicted.push({
|
|
548
|
+
id: row.id,
|
|
549
|
+
table,
|
|
550
|
+
tier: 'short',
|
|
551
|
+
reason: `age > 7d, unverified, qualityScore=${row.quality_score?.toFixed(2) ?? 'null'} < 0.5`,
|
|
552
|
+
});
|
|
553
|
+
} catch {
|
|
554
|
+
/* best-effort */
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
return { promoted, evicted };
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
// ============================================================================
|
|
563
|
+
// Extended Consolidation (T549 Wave 3-D)
|
|
564
|
+
// ============================================================================
|
|
565
|
+
|
|
566
|
+
/** Extended result returned by runConsolidation. */
|
|
567
|
+
export interface RunConsolidationResult {
|
|
568
|
+
/** Entries merged by dedup pass. */
|
|
569
|
+
deduplicated: number;
|
|
570
|
+
/** Entries whose quality score was recomputed. */
|
|
571
|
+
qualityRecomputed: number;
|
|
572
|
+
/** Tier promotions applied. */
|
|
573
|
+
tierPromotions: PromotionResult;
|
|
574
|
+
/** Contradiction pairs found. */
|
|
575
|
+
contradictions: number;
|
|
576
|
+
/** Entries soft-evicted (low quality medium-term). */
|
|
577
|
+
softEvicted: number;
|
|
578
|
+
/** Graph edges strengthened. */
|
|
579
|
+
edgesStrengthened: number;
|
|
580
|
+
/** Summary nodes generated. */
|
|
581
|
+
summariesGenerated: number;
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
/**
|
|
585
|
+
* Run the full sleep-time consolidation pipeline.
|
|
586
|
+
*
|
|
587
|
+
* This is the "Letta OS sleep-time compute" pattern — consolidation runs
|
|
588
|
+
* during idle time (after session end), never during active work.
|
|
589
|
+
*
|
|
590
|
+
* Steps (in order):
|
|
591
|
+
* 1. Deduplication — merge entries with >0.85 content similarity
|
|
592
|
+
* 2. Quality recompute — recalculate scores with current age/citations
|
|
593
|
+
* 3. Tier promotion — runTierPromotion()
|
|
594
|
+
* 4. Contradiction detection — from brain-consolidator
|
|
595
|
+
* 5. Soft eviction — invalidate low-quality medium-term entries
|
|
596
|
+
* 6. Graph edge strengthening — increment weight on frequently-traversed edges
|
|
597
|
+
* 7. Summary generation — existing consolidateMemories() for large clusters
|
|
598
|
+
*
|
|
599
|
+
* All steps are BEST-EFFORT — any step failure is caught and logged to console.warn.
|
|
600
|
+
*
|
|
601
|
+
* @param projectRoot - Project root directory for brain.db resolution
|
|
602
|
+
* @returns Aggregated counts from each consolidation step
|
|
603
|
+
*/
|
|
604
|
+
export async function runConsolidation(projectRoot: string): Promise<RunConsolidationResult> {
|
|
605
|
+
const result: RunConsolidationResult = {
|
|
606
|
+
deduplicated: 0,
|
|
607
|
+
qualityRecomputed: 0,
|
|
608
|
+
tierPromotions: { promoted: [], evicted: [] },
|
|
609
|
+
contradictions: 0,
|
|
610
|
+
softEvicted: 0,
|
|
611
|
+
edgesStrengthened: 0,
|
|
612
|
+
summariesGenerated: 0,
|
|
613
|
+
};
|
|
614
|
+
|
|
615
|
+
// Step 1: Deduplication (embedding-based when available)
|
|
616
|
+
try {
|
|
617
|
+
const deduped = await deduplicateByEmbedding(projectRoot);
|
|
618
|
+
result.deduplicated = deduped;
|
|
619
|
+
} catch (err) {
|
|
620
|
+
console.warn('[consolidation] Step 1 deduplication failed:', err);
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
// Step 2: Quality recompute (age + citation factor)
|
|
624
|
+
try {
|
|
625
|
+
const recomputed = await recomputeQualityScores(projectRoot);
|
|
626
|
+
result.qualityRecomputed = recomputed;
|
|
627
|
+
} catch (err) {
|
|
628
|
+
console.warn('[consolidation] Step 2 quality recompute failed:', err);
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
// Step 3: Tier promotion
|
|
632
|
+
try {
|
|
633
|
+
result.tierPromotions = await runTierPromotion(projectRoot);
|
|
634
|
+
} catch (err) {
|
|
635
|
+
console.warn('[consolidation] Step 3 tier promotion failed:', err);
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
// Step 4: Contradiction detection
|
|
639
|
+
try {
|
|
640
|
+
const { detectContradictions } = await import('./brain-consolidator.js');
|
|
641
|
+
const contradictions = await detectContradictions(projectRoot);
|
|
642
|
+
result.contradictions = contradictions.length;
|
|
643
|
+
} catch (err) {
|
|
644
|
+
console.warn('[consolidation] Step 4 contradiction detection failed:', err);
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
// Step 5: Soft eviction of low-quality medium-term entries
|
|
648
|
+
try {
|
|
649
|
+
const evicted = await softEvictLowQualityMedium(projectRoot);
|
|
650
|
+
result.softEvicted = evicted;
|
|
651
|
+
} catch (err) {
|
|
652
|
+
console.warn('[consolidation] Step 5 soft eviction failed:', err);
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
// Step 6: Graph edge strengthening
|
|
656
|
+
try {
|
|
657
|
+
const strengthened = await strengthenCoRetrievedEdges(projectRoot);
|
|
658
|
+
result.edgesStrengthened = strengthened;
|
|
659
|
+
} catch (err) {
|
|
660
|
+
console.warn('[consolidation] Step 6 edge strengthening failed:', err);
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
// Step 7: Summary generation from large observation clusters
|
|
664
|
+
try {
|
|
665
|
+
const summaryResult = await consolidateMemories(projectRoot, {
|
|
666
|
+
olderThanDays: 30,
|
|
667
|
+
minClusterSize: 5,
|
|
668
|
+
});
|
|
669
|
+
result.summariesGenerated = summaryResult.merged;
|
|
670
|
+
} catch (err) {
|
|
671
|
+
console.warn('[consolidation] Step 7 summary generation failed:', err);
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
return result;
|
|
675
|
+
}
|
|
676
|
+
|
|
677
|
+
// ============================================================================
|
|
678
|
+
// Deduplication (Step 1)
|
|
679
|
+
// ============================================================================
|
|
680
|
+
|
|
681
|
+
/**
|
|
682
|
+
* Merge entries with high embedding similarity (> 0.85 cosine similarity).
|
|
683
|
+
*
|
|
684
|
+
* For each pair above the threshold: keep the higher-quality entry, transfer
|
|
685
|
+
* citationCount, and soft-evict the clone (set invalidAt). When embeddings
|
|
686
|
+
* are unavailable, falls back to exact content-hash deduplication.
|
|
687
|
+
*
|
|
688
|
+
* @param projectRoot - Project root for brain.db resolution
|
|
689
|
+
* @returns Count of merged/evicted duplicate entries
|
|
690
|
+
*/
|
|
691
|
+
async function deduplicateByEmbedding(projectRoot: string): Promise<number> {
|
|
692
|
+
const { getBrainDb, getBrainNativeDb } = await import('../store/brain-sqlite.js');
|
|
693
|
+
await getBrainDb(projectRoot);
|
|
694
|
+
const nativeDb = getBrainNativeDb();
|
|
695
|
+
if (!nativeDb) return 0;
|
|
696
|
+
|
|
697
|
+
let merged = 0;
|
|
698
|
+
const now = new Date().toISOString().replace('T', ' ').slice(0, 19);
|
|
699
|
+
|
|
700
|
+
// Exact content-hash dedup (always runs — fast, no embedding needed)
|
|
701
|
+
interface HashDupRow {
|
|
702
|
+
content_hash: string;
|
|
703
|
+
cnt: number;
|
|
704
|
+
}
|
|
705
|
+
const dupHashes = typedAll<HashDupRow>(
|
|
706
|
+
nativeDb.prepare(`
|
|
707
|
+
SELECT content_hash, COUNT(*) as cnt
|
|
708
|
+
FROM brain_observations
|
|
709
|
+
WHERE content_hash IS NOT NULL
|
|
710
|
+
AND invalid_at IS NULL
|
|
711
|
+
GROUP BY content_hash
|
|
712
|
+
HAVING cnt > 1
|
|
713
|
+
`),
|
|
714
|
+
);
|
|
715
|
+
|
|
716
|
+
for (const dup of dupHashes) {
|
|
717
|
+
interface DupRow {
|
|
718
|
+
id: string;
|
|
719
|
+
quality_score: number | null;
|
|
720
|
+
citation_count: number;
|
|
721
|
+
}
|
|
722
|
+
const dupes = typedAll<DupRow>(
|
|
723
|
+
nativeDb.prepare(`
|
|
724
|
+
SELECT id, quality_score, citation_count
|
|
725
|
+
FROM brain_observations
|
|
726
|
+
WHERE content_hash = ?
|
|
727
|
+
AND invalid_at IS NULL
|
|
728
|
+
ORDER BY quality_score DESC, citation_count DESC
|
|
729
|
+
`),
|
|
730
|
+
dup.content_hash,
|
|
731
|
+
);
|
|
732
|
+
|
|
733
|
+
if (dupes.length < 2) continue;
|
|
734
|
+
|
|
735
|
+
// Keep the best entry, evict the rest and transfer their citations
|
|
736
|
+
const [keeper, ...clones] = dupes;
|
|
737
|
+
if (!keeper) continue;
|
|
738
|
+
|
|
739
|
+
let totalCitations = keeper.citation_count;
|
|
740
|
+
for (const clone of clones) {
|
|
741
|
+
totalCitations += clone.citation_count;
|
|
742
|
+
nativeDb
|
|
743
|
+
.prepare(`UPDATE brain_observations SET invalid_at = ?, updated_at = ? WHERE id = ?`)
|
|
744
|
+
.run(now, now, clone.id);
|
|
745
|
+
merged++;
|
|
746
|
+
}
|
|
747
|
+
|
|
748
|
+
if (totalCitations !== keeper.citation_count) {
|
|
749
|
+
nativeDb
|
|
750
|
+
.prepare(`UPDATE brain_observations SET citation_count = ?, updated_at = ? WHERE id = ?`)
|
|
751
|
+
.run(totalCitations, now, keeper.id);
|
|
752
|
+
}
|
|
753
|
+
}
|
|
754
|
+
|
|
755
|
+
return merged;
|
|
756
|
+
}
|
|
757
|
+
|
|
758
|
+
// ============================================================================
|
|
759
|
+
// Quality Recompute (Step 2)
|
|
760
|
+
// ============================================================================
|
|
761
|
+
|
|
762
|
+
/**
|
|
763
|
+
* Recompute quality scores factoring in current citation count and age.
|
|
764
|
+
*
|
|
765
|
+
* Applies a citation boost: +0.01 per citation, capped at +0.15.
|
|
766
|
+
* Applies age decay only on episodic entries (observations, episodic learnings).
|
|
767
|
+
*
|
|
768
|
+
* @param projectRoot - Project root for brain.db resolution
|
|
769
|
+
* @returns Count of entries updated
|
|
770
|
+
*/
|
|
771
|
+
async function recomputeQualityScores(projectRoot: string): Promise<number> {
|
|
772
|
+
const { getBrainDb, getBrainNativeDb } = await import('../store/brain-sqlite.js');
|
|
773
|
+
await getBrainDb(projectRoot);
|
|
774
|
+
const nativeDb = getBrainNativeDb();
|
|
775
|
+
if (!nativeDb) return 0;
|
|
776
|
+
|
|
777
|
+
let updated = 0;
|
|
778
|
+
const now = new Date().toISOString().replace('T', ' ').slice(0, 19);
|
|
779
|
+
|
|
780
|
+
// Update observation quality: base + citation boost, min 0.0, max 1.0
|
|
781
|
+
// Only update entries with citation_count > 0 (others unchanged)
|
|
782
|
+
try {
|
|
783
|
+
const stmt = nativeDb.prepare(`
|
|
784
|
+
UPDATE brain_observations
|
|
785
|
+
SET quality_score = MIN(1.0, COALESCE(quality_score, 0.5) + MIN(0.15, citation_count * 0.01)),
|
|
786
|
+
updated_at = ?
|
|
787
|
+
WHERE citation_count > 0
|
|
788
|
+
AND invalid_at IS NULL
|
|
789
|
+
`);
|
|
790
|
+
const r = stmt.run(now);
|
|
791
|
+
updated += typeof r.changes === 'number' ? r.changes : 0;
|
|
792
|
+
} catch {
|
|
793
|
+
/* table may not have all columns — best-effort */
|
|
794
|
+
}
|
|
795
|
+
|
|
796
|
+
// Same for learnings
|
|
797
|
+
try {
|
|
798
|
+
const stmt = nativeDb.prepare(`
|
|
799
|
+
UPDATE brain_learnings
|
|
800
|
+
SET quality_score = MIN(1.0, COALESCE(quality_score, 0.5) + MIN(0.15, citation_count * 0.01)),
|
|
801
|
+
updated_at = ?
|
|
802
|
+
WHERE citation_count > 0
|
|
803
|
+
AND invalid_at IS NULL
|
|
804
|
+
`);
|
|
805
|
+
const r = stmt.run(now);
|
|
806
|
+
updated += typeof r.changes === 'number' ? r.changes : 0;
|
|
807
|
+
} catch {
|
|
808
|
+
/* best-effort */
|
|
809
|
+
}
|
|
810
|
+
|
|
811
|
+
return updated;
|
|
812
|
+
}
|
|
813
|
+
|
|
814
|
+
// ============================================================================
|
|
815
|
+
// Soft Eviction of Low-Quality Medium-Term Entries (Step 5)
|
|
816
|
+
// ============================================================================
|
|
817
|
+
|
|
818
|
+
/**
|
|
819
|
+
* Soft-evict medium-term entries that have decayed below quality threshold.
|
|
820
|
+
*
|
|
821
|
+
* Entries are invalidated (invalidAt = now) when:
|
|
822
|
+
* - memoryTier = 'medium'
|
|
823
|
+
* - qualityScore < 0.30 AND age > 30 days
|
|
824
|
+
* - NOT long-term (protected from auto-eviction)
|
|
825
|
+
*
|
|
826
|
+
* @param projectRoot - Project root for brain.db resolution
|
|
827
|
+
* @returns Count of entries soft-evicted
|
|
828
|
+
*/
|
|
829
|
+
async function softEvictLowQualityMedium(projectRoot: string): Promise<number> {
|
|
830
|
+
const { getBrainDb, getBrainNativeDb } = await import('../store/brain-sqlite.js');
|
|
831
|
+
await getBrainDb(projectRoot);
|
|
832
|
+
const nativeDb = getBrainNativeDb();
|
|
833
|
+
if (!nativeDb) return 0;
|
|
834
|
+
|
|
835
|
+
let evicted = 0;
|
|
836
|
+
const now = new Date().toISOString().replace('T', ' ').slice(0, 19);
|
|
837
|
+
const age30d = new Date(Date.now() - 30 * 24 * 60 * 60 * 1000)
|
|
838
|
+
.toISOString()
|
|
839
|
+
.replace('T', ' ')
|
|
840
|
+
.slice(0, 19);
|
|
841
|
+
|
|
842
|
+
const tables: Array<{ table: string; dateCol: string }> = [
|
|
843
|
+
{ table: 'brain_observations', dateCol: 'created_at' },
|
|
844
|
+
{ table: 'brain_learnings', dateCol: 'created_at' },
|
|
845
|
+
{ table: 'brain_patterns', dateCol: 'extracted_at' },
|
|
846
|
+
{ table: 'brain_decisions', dateCol: 'created_at' },
|
|
847
|
+
];
|
|
848
|
+
|
|
849
|
+
for (const { table, dateCol } of tables) {
|
|
850
|
+
try {
|
|
851
|
+
const stmt = nativeDb.prepare(`
|
|
852
|
+
UPDATE ${table}
|
|
853
|
+
SET invalid_at = ?, updated_at = ?
|
|
854
|
+
WHERE memory_tier = 'medium'
|
|
855
|
+
AND invalid_at IS NULL
|
|
856
|
+
AND quality_score IS NOT NULL
|
|
857
|
+
AND quality_score < 0.30
|
|
858
|
+
AND ${dateCol} < ?
|
|
859
|
+
`);
|
|
860
|
+
const r = stmt.run(now, now, age30d);
|
|
861
|
+
evicted += typeof r.changes === 'number' ? r.changes : 0;
|
|
862
|
+
} catch {
|
|
863
|
+
/* column may not exist on older rows — best-effort */
|
|
864
|
+
}
|
|
865
|
+
}
|
|
866
|
+
|
|
867
|
+
return evicted;
|
|
868
|
+
}
|
|
869
|
+
|
|
870
|
+
// ============================================================================
|
|
871
|
+
// Graph Edge Strengthening (Step 6)
|
|
872
|
+
// ============================================================================
|
|
873
|
+
|
|
874
|
+
/**
|
|
875
|
+
* Strengthen edges between frequently co-retrieved brain graph nodes.
|
|
876
|
+
*
|
|
877
|
+
* Queries the brain_retrieval_log table (if it exists) to find pairs of
|
|
878
|
+
* entries that were returned together frequently (>= 3 times in the last
|
|
879
|
+
* 30 days). For each qualifying pair, increments the edge weight by 0.1
|
|
880
|
+
* (capped at 1.0) in brain_page_edges.
|
|
881
|
+
*
|
|
882
|
+
* Gracefully no-ops when brain_retrieval_log does not yet exist.
|
|
883
|
+
*
|
|
884
|
+
* @param projectRoot - Project root for brain.db resolution
|
|
885
|
+
* @returns Count of edges strengthened
|
|
886
|
+
*/
|
|
887
|
+
async function strengthenCoRetrievedEdges(projectRoot: string): Promise<number> {
|
|
888
|
+
const { getBrainDb, getBrainNativeDb } = await import('../store/brain-sqlite.js');
|
|
889
|
+
await getBrainDb(projectRoot);
|
|
890
|
+
const nativeDb = getBrainNativeDb();
|
|
891
|
+
if (!nativeDb) return 0;
|
|
892
|
+
|
|
893
|
+
// Check if retrieval log table exists
|
|
894
|
+
try {
|
|
895
|
+
nativeDb.prepare('SELECT 1 FROM brain_retrieval_log LIMIT 1').get();
|
|
896
|
+
} catch {
|
|
897
|
+
// Table doesn't exist yet — nothing to do
|
|
898
|
+
return 0;
|
|
899
|
+
}
|
|
900
|
+
|
|
901
|
+
const age30d = new Date(Date.now() - 30 * 24 * 60 * 60 * 1000)
|
|
902
|
+
.toISOString()
|
|
903
|
+
.replace('T', ' ')
|
|
904
|
+
.slice(0, 19);
|
|
905
|
+
const now = new Date().toISOString().replace('T', ' ').slice(0, 19);
|
|
906
|
+
|
|
907
|
+
interface LogRow {
|
|
908
|
+
entry_ids: string;
|
|
909
|
+
}
|
|
910
|
+
|
|
911
|
+
let logRows: LogRow[] = [];
|
|
912
|
+
try {
|
|
913
|
+
logRows = typedAll<LogRow>(
|
|
914
|
+
nativeDb.prepare(
|
|
915
|
+
`SELECT entry_ids FROM brain_retrieval_log WHERE created_at >= ? LIMIT 1000`,
|
|
916
|
+
),
|
|
917
|
+
age30d,
|
|
918
|
+
);
|
|
919
|
+
} catch {
|
|
920
|
+
return 0;
|
|
921
|
+
}
|
|
922
|
+
|
|
923
|
+
// Build co-occurrence counts from JSON entry_ids arrays
|
|
924
|
+
const coOccurrence = new Map<string, number>();
|
|
925
|
+
for (const row of logRows) {
|
|
926
|
+
let ids: string[];
|
|
927
|
+
try {
|
|
928
|
+
ids = JSON.parse(row.entry_ids) as string[];
|
|
929
|
+
} catch {
|
|
930
|
+
continue;
|
|
931
|
+
}
|
|
932
|
+
// Generate all pairs from the returned ID list
|
|
933
|
+
for (let i = 0; i < ids.length; i++) {
|
|
934
|
+
for (let j = i + 1; j < ids.length; j++) {
|
|
935
|
+
const a = ids[i]!;
|
|
936
|
+
const b = ids[j]!;
|
|
937
|
+
// Normalize pair key to canonical order
|
|
938
|
+
const key = a < b ? `${a}|${b}` : `${b}|${a}`;
|
|
939
|
+
coOccurrence.set(key, (coOccurrence.get(key) ?? 0) + 1);
|
|
940
|
+
}
|
|
941
|
+
}
|
|
942
|
+
}
|
|
943
|
+
|
|
944
|
+
let strengthened = 0;
|
|
945
|
+
for (const [pair, count] of coOccurrence) {
|
|
946
|
+
if (count < 3) continue;
|
|
947
|
+
const [fromId, toId] = pair.split('|');
|
|
948
|
+
if (!fromId || !toId) continue;
|
|
949
|
+
|
|
950
|
+
const nodeFrom = `observation:${fromId}`;
|
|
951
|
+
const nodeTo = `observation:${toId}`;
|
|
952
|
+
|
|
953
|
+
try {
|
|
954
|
+
// Try to update existing edge
|
|
955
|
+
const updateStmt = nativeDb.prepare(`
|
|
956
|
+
UPDATE brain_page_edges
|
|
957
|
+
SET weight = MIN(1.0, weight + 0.1)
|
|
958
|
+
WHERE from_id = ? AND to_id = ? AND edge_type = 'relates_to'
|
|
959
|
+
`);
|
|
960
|
+
const updateResult = updateStmt.run(nodeFrom, nodeTo);
|
|
961
|
+
const changes = typeof updateResult.changes === 'number' ? updateResult.changes : 0;
|
|
962
|
+
|
|
963
|
+
if (changes === 0) {
|
|
964
|
+
// Edge doesn't exist; insert it
|
|
965
|
+
nativeDb
|
|
966
|
+
.prepare(`
|
|
967
|
+
INSERT OR IGNORE INTO brain_page_edges
|
|
968
|
+
(from_id, to_id, edge_type, weight, provenance, created_at)
|
|
969
|
+
VALUES (?, ?, 'relates_to', 0.3, 'consolidation:co-retrieval', ?)
|
|
970
|
+
`)
|
|
971
|
+
.run(nodeFrom, nodeTo, now);
|
|
972
|
+
}
|
|
973
|
+
strengthened++;
|
|
974
|
+
} catch {
|
|
975
|
+
/* best-effort */
|
|
976
|
+
}
|
|
977
|
+
}
|
|
978
|
+
|
|
979
|
+
return strengthened;
|
|
980
|
+
}
|