@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
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Graph auto-population helpers for CLEO BRAIN.
|
|
3
|
+
*
|
|
4
|
+
* Provides upsertGraphNode and addGraphEdge helpers that write to the
|
|
5
|
+
* brain_page_nodes and brain_page_edges tables whenever memory entries
|
|
6
|
+
* are created via the legitimate write paths (storeDecision, observeBrain,
|
|
7
|
+
* storePattern, storeLearning, and task completion).
|
|
8
|
+
*
|
|
9
|
+
* Design constraints:
|
|
10
|
+
* - All writes are BEST-EFFORT — never block or fail the primary operation.
|
|
11
|
+
* - All writes are gated on brain.autoCapture via isAutoCaptureEnabled.
|
|
12
|
+
* - Uses INSERT OR REPLACE (onConflictDoUpdate) for upsert semantics.
|
|
13
|
+
* - Edge inserts are idempotent via the composite PK (fromId, toId, edgeType).
|
|
14
|
+
*
|
|
15
|
+
* @task T537
|
|
16
|
+
* @epic T523
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
import { createHash } from 'node:crypto';
|
|
20
|
+
import type { BrainEdgeType, BrainNodeType } from '../store/brain-schema.js';
|
|
21
|
+
import { brainPageEdges, brainPageNodes } from '../store/brain-schema.js';
|
|
22
|
+
import { getBrainDb } from '../store/brain-sqlite.js';
|
|
23
|
+
|
|
24
|
+
// Re-export types so callers can import them from this module without
|
|
25
|
+
// reaching into brain-schema directly.
|
|
26
|
+
export type { BrainEdgeType, BrainNodeType };
|
|
27
|
+
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
// Internal helpers
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Return true when brain.autoCapture is enabled for the project.
|
|
34
|
+
* Delegates to the shared isAutoCaptureEnabled helper in handler-helpers.ts.
|
|
35
|
+
* Returns false on any error to keep graph writes safely disabled when the
|
|
36
|
+
* config or brain.db is unavailable.
|
|
37
|
+
*/
|
|
38
|
+
async function shouldAutoPopulateGraph(projectRoot: string): Promise<boolean> {
|
|
39
|
+
try {
|
|
40
|
+
const { isAutoCaptureEnabled } = await import('../hooks/handlers/handler-helpers.js');
|
|
41
|
+
return isAutoCaptureEnabled(projectRoot);
|
|
42
|
+
} catch {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// ---------------------------------------------------------------------------
|
|
48
|
+
// Public API
|
|
49
|
+
// ---------------------------------------------------------------------------
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Upsert a graph node for a typed table entry.
|
|
53
|
+
*
|
|
54
|
+
* Uses INSERT OR REPLACE to handle both new and existing entries. If the
|
|
55
|
+
* node already exists (same id), its label, qualityScore, lastActivityAt,
|
|
56
|
+
* updatedAt, and metadataJson are refreshed while createdAt is preserved.
|
|
57
|
+
*
|
|
58
|
+
* The contentHash is derived from a SHA-256 prefix of the canonical content.
|
|
59
|
+
* External-reference nodes (task, session, epic) may pass an empty string for
|
|
60
|
+
* content; their hash will be null so duplicates are not rejected.
|
|
61
|
+
*
|
|
62
|
+
* This function is gated on brain.autoCapture. If the gate is disabled or any
|
|
63
|
+
* error occurs, it returns silently without throwing.
|
|
64
|
+
*
|
|
65
|
+
* @param projectRoot - Absolute path to the project root directory.
|
|
66
|
+
* @param nodeId - Stable composite ID in the form '<type>:<source-id>'.
|
|
67
|
+
* @param nodeType - Discriminated type from BRAIN_NODE_TYPES.
|
|
68
|
+
* @param label - Human-readable label (title, task ID, etc.).
|
|
69
|
+
* @param qualityScore - 0.0 (noise) to 1.0 (canonical).
|
|
70
|
+
* @param content - Canonical text used to derive the content hash.
|
|
71
|
+
* @param metadata - Optional type-specific metadata blob.
|
|
72
|
+
*
|
|
73
|
+
* @task T537
|
|
74
|
+
*/
|
|
75
|
+
export async function upsertGraphNode(
|
|
76
|
+
projectRoot: string,
|
|
77
|
+
nodeId: string,
|
|
78
|
+
nodeType: BrainNodeType,
|
|
79
|
+
label: string,
|
|
80
|
+
qualityScore: number,
|
|
81
|
+
content: string,
|
|
82
|
+
metadata?: Record<string, unknown>,
|
|
83
|
+
): Promise<void> {
|
|
84
|
+
try {
|
|
85
|
+
if (!(await shouldAutoPopulateGraph(projectRoot))) return;
|
|
86
|
+
|
|
87
|
+
const db = await getBrainDb(projectRoot);
|
|
88
|
+
const now = new Date().toISOString().replace('T', ' ').slice(0, 19);
|
|
89
|
+
|
|
90
|
+
// Only compute a content hash for non-trivial content (external reference
|
|
91
|
+
// nodes like task/session/epic may have empty content).
|
|
92
|
+
const trimmed = content.trim().toLowerCase();
|
|
93
|
+
const contentHash = trimmed
|
|
94
|
+
? createHash('sha256').update(trimmed).digest('hex').substring(0, 16)
|
|
95
|
+
: null;
|
|
96
|
+
|
|
97
|
+
await db
|
|
98
|
+
.insert(brainPageNodes)
|
|
99
|
+
.values({
|
|
100
|
+
id: nodeId,
|
|
101
|
+
nodeType,
|
|
102
|
+
label: label.substring(0, 200),
|
|
103
|
+
qualityScore,
|
|
104
|
+
contentHash,
|
|
105
|
+
metadataJson: metadata ? JSON.stringify(metadata) : null,
|
|
106
|
+
lastActivityAt: now,
|
|
107
|
+
createdAt: now,
|
|
108
|
+
updatedAt: now,
|
|
109
|
+
})
|
|
110
|
+
.onConflictDoUpdate({
|
|
111
|
+
target: brainPageNodes.id,
|
|
112
|
+
set: {
|
|
113
|
+
label: label.substring(0, 200),
|
|
114
|
+
qualityScore,
|
|
115
|
+
lastActivityAt: now,
|
|
116
|
+
updatedAt: now,
|
|
117
|
+
metadataJson: metadata ? JSON.stringify(metadata) : null,
|
|
118
|
+
},
|
|
119
|
+
});
|
|
120
|
+
} catch (err) {
|
|
121
|
+
// Log but never surface — this is a best-effort side effect.
|
|
122
|
+
console.warn('[brain-graph] upsertGraphNode failed:', err);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Add a directed, typed edge between two graph nodes (idempotent).
|
|
128
|
+
*
|
|
129
|
+
* The composite primary key (fromId, toId, edgeType) prevents duplicate edges
|
|
130
|
+
* of the same type. Conflicting rows are ignored so this is safe to call
|
|
131
|
+
* multiple times with the same arguments.
|
|
132
|
+
*
|
|
133
|
+
* This function is gated on brain.autoCapture. If the gate is disabled or any
|
|
134
|
+
* error occurs, it returns silently without throwing.
|
|
135
|
+
*
|
|
136
|
+
* @param projectRoot - Absolute path to the project root directory.
|
|
137
|
+
* @param fromId - Source node ID (brain_page_nodes.id).
|
|
138
|
+
* @param toId - Target node ID (brain_page_nodes.id or external nexus ID).
|
|
139
|
+
* @param edgeType - Typed relationship from BRAIN_EDGE_TYPES.
|
|
140
|
+
* @param weight - Edge confidence/weight (0.0–1.0). Defaults to 1.0.
|
|
141
|
+
* @param provenance - Human-readable note on why this edge was emitted.
|
|
142
|
+
*
|
|
143
|
+
* @task T537
|
|
144
|
+
*/
|
|
145
|
+
export async function addGraphEdge(
|
|
146
|
+
projectRoot: string,
|
|
147
|
+
fromId: string,
|
|
148
|
+
toId: string,
|
|
149
|
+
edgeType: BrainEdgeType,
|
|
150
|
+
weight = 1.0,
|
|
151
|
+
provenance?: string,
|
|
152
|
+
): Promise<void> {
|
|
153
|
+
try {
|
|
154
|
+
if (!(await shouldAutoPopulateGraph(projectRoot))) return;
|
|
155
|
+
|
|
156
|
+
const db = await getBrainDb(projectRoot);
|
|
157
|
+
const now = new Date().toISOString().replace('T', ' ').slice(0, 19);
|
|
158
|
+
|
|
159
|
+
await db
|
|
160
|
+
.insert(brainPageEdges)
|
|
161
|
+
.values({
|
|
162
|
+
fromId,
|
|
163
|
+
toId,
|
|
164
|
+
edgeType,
|
|
165
|
+
weight,
|
|
166
|
+
provenance: provenance ?? null,
|
|
167
|
+
createdAt: now,
|
|
168
|
+
})
|
|
169
|
+
.onConflictDoNothing();
|
|
170
|
+
} catch (err) {
|
|
171
|
+
console.warn('[brain-graph] addGraphEdge failed:', err);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
@@ -0,0 +1,424 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Brain graph traversal queries using recursive CTEs and native SQLite.
|
|
3
|
+
*
|
|
4
|
+
* Implements BFS traversal, typed neighbor lookup, 360-degree context view,
|
|
5
|
+
* and aggregate statistics for the brain_page_nodes / brain_page_edges graph
|
|
6
|
+
* populated by T528 + T530.
|
|
7
|
+
*
|
|
8
|
+
* Uses getBrainNativeDb() (DatabaseSync) for recursive CTEs that Drizzle's
|
|
9
|
+
* ORM layer cannot express directly.
|
|
10
|
+
*
|
|
11
|
+
* @task T535
|
|
12
|
+
* @epic T523
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import type { BrainEdgeType, BrainPageEdgeRow, BrainPageNodeRow } from '../store/brain-schema.js';
|
|
16
|
+
import { getBrainDb, getBrainNativeDb } from '../store/brain-sqlite.js';
|
|
17
|
+
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
// Return types
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
21
|
+
|
|
22
|
+
/** A node returned from a BFS traversal, annotated with its discovery depth. */
|
|
23
|
+
export interface TraceNode extends BrainPageNodeRow {
|
|
24
|
+
/** Distance from the seed node (0 = seed itself). */
|
|
25
|
+
depth: number;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** A neighbor node with the edge that connects it to the queried node. */
|
|
29
|
+
export interface RelatedNode {
|
|
30
|
+
/** The neighbour node. */
|
|
31
|
+
node: BrainPageNodeRow;
|
|
32
|
+
/** Edge relationship type. */
|
|
33
|
+
edgeType: BrainEdgeType;
|
|
34
|
+
/** Direction: 'out' (queried node is from_id) or 'in' (queried node is to_id). */
|
|
35
|
+
direction: 'out' | 'in';
|
|
36
|
+
/** Edge weight/confidence 0.0–1.0. */
|
|
37
|
+
weight: number;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** Full context for a single node: itself, incoming edges, outgoing edges, and neighbour nodes. */
|
|
41
|
+
export interface NodeContext {
|
|
42
|
+
/** The node itself. */
|
|
43
|
+
node: BrainPageNodeRow;
|
|
44
|
+
/** Edges where this node is the target (in-edges). */
|
|
45
|
+
inEdges: BrainPageEdgeRow[];
|
|
46
|
+
/** Edges where this node is the source (out-edges). */
|
|
47
|
+
outEdges: BrainPageEdgeRow[];
|
|
48
|
+
/** All neighbour nodes reachable via in- or out-edges, deduplicated. */
|
|
49
|
+
neighbors: RelatedNode[];
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/** Aggregate statistics for the graph. */
|
|
53
|
+
export interface GraphStats {
|
|
54
|
+
/** Node counts grouped by node_type. */
|
|
55
|
+
nodesByType: Array<{ nodeType: string; count: number }>;
|
|
56
|
+
/** Edge counts grouped by edge_type. */
|
|
57
|
+
edgesByType: Array<{ edgeType: string; count: number }>;
|
|
58
|
+
/** Total node count. */
|
|
59
|
+
totalNodes: number;
|
|
60
|
+
/** Total edge count. */
|
|
61
|
+
totalEdges: number;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// ---------------------------------------------------------------------------
|
|
65
|
+
// Internal raw-row types (native db returns plain objects)
|
|
66
|
+
// ---------------------------------------------------------------------------
|
|
67
|
+
|
|
68
|
+
interface RawNode {
|
|
69
|
+
id: string;
|
|
70
|
+
node_type: string;
|
|
71
|
+
label: string;
|
|
72
|
+
quality_score: number;
|
|
73
|
+
content_hash: string | null;
|
|
74
|
+
last_activity_at: string;
|
|
75
|
+
metadata_json: string | null;
|
|
76
|
+
created_at: string;
|
|
77
|
+
updated_at: string | null;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
interface RawEdge {
|
|
81
|
+
from_id: string;
|
|
82
|
+
to_id: string;
|
|
83
|
+
edge_type: string;
|
|
84
|
+
weight: number;
|
|
85
|
+
provenance: string | null;
|
|
86
|
+
created_at: string;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/** Map a snake_case raw row to a camelCase BrainPageNodeRow. */
|
|
90
|
+
function mapNode(raw: RawNode): BrainPageNodeRow {
|
|
91
|
+
return {
|
|
92
|
+
id: raw.id,
|
|
93
|
+
nodeType: raw.node_type as BrainPageNodeRow['nodeType'],
|
|
94
|
+
label: raw.label,
|
|
95
|
+
qualityScore: raw.quality_score,
|
|
96
|
+
contentHash: raw.content_hash,
|
|
97
|
+
lastActivityAt: raw.last_activity_at,
|
|
98
|
+
metadataJson: raw.metadata_json,
|
|
99
|
+
createdAt: raw.created_at,
|
|
100
|
+
updatedAt: raw.updated_at,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/** Map a snake_case raw row to a camelCase BrainPageEdgeRow. */
|
|
105
|
+
function mapEdge(raw: RawEdge): BrainPageEdgeRow {
|
|
106
|
+
return {
|
|
107
|
+
fromId: raw.from_id,
|
|
108
|
+
toId: raw.to_id,
|
|
109
|
+
edgeType: raw.edge_type as BrainEdgeType,
|
|
110
|
+
weight: raw.weight,
|
|
111
|
+
provenance: raw.provenance,
|
|
112
|
+
createdAt: raw.created_at,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// ---------------------------------------------------------------------------
|
|
117
|
+
// traceBrainGraph — BFS traversal via recursive CTE
|
|
118
|
+
// ---------------------------------------------------------------------------
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Traverse the brain knowledge graph using BFS from a seed node.
|
|
122
|
+
*
|
|
123
|
+
* Uses a recursive CTE that follows edges in both directions. Nodes are
|
|
124
|
+
* returned in ascending depth order, then descending quality_score. The seed
|
|
125
|
+
* node itself is returned at depth 0.
|
|
126
|
+
*
|
|
127
|
+
* @param projectRoot - Absolute path to the project root (locates brain.db)
|
|
128
|
+
* @param nodeId - Starting node ID (format: '<type>:<source-id>')
|
|
129
|
+
* @param maxDepth - Maximum traversal depth (default 3)
|
|
130
|
+
* @returns Array of nodes annotated with their discovery depth
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* ```typescript
|
|
134
|
+
* const nodes = await traceBrainGraph('/project', 'decision:D-abc123', 2);
|
|
135
|
+
* for (const n of nodes) console.log(n.depth, n.id, n.label);
|
|
136
|
+
* ```
|
|
137
|
+
*/
|
|
138
|
+
export async function traceBrainGraph(
|
|
139
|
+
projectRoot: string,
|
|
140
|
+
nodeId: string,
|
|
141
|
+
maxDepth = 3,
|
|
142
|
+
): Promise<TraceNode[]> {
|
|
143
|
+
await getBrainDb(projectRoot);
|
|
144
|
+
const nativeDb = getBrainNativeDb();
|
|
145
|
+
|
|
146
|
+
if (!nativeDb) return [];
|
|
147
|
+
|
|
148
|
+
// Check whether the seed node exists
|
|
149
|
+
const seedCheck = nativeDb
|
|
150
|
+
.prepare('SELECT 1 FROM brain_page_nodes WHERE id = ?')
|
|
151
|
+
.get(nodeId) as unknown as { 1: number } | undefined;
|
|
152
|
+
if (!seedCheck) return [];
|
|
153
|
+
|
|
154
|
+
// Recursive CTE — bidirectional BFS with cycle detection via path string.
|
|
155
|
+
// The path is '|'-delimited node IDs. We check membership with a LIKE guard.
|
|
156
|
+
const rows = nativeDb
|
|
157
|
+
.prepare(
|
|
158
|
+
`
|
|
159
|
+
WITH RECURSIVE connected(id, depth, path) AS (
|
|
160
|
+
SELECT id, 0, id
|
|
161
|
+
FROM brain_page_nodes
|
|
162
|
+
WHERE id = ?
|
|
163
|
+
|
|
164
|
+
UNION ALL
|
|
165
|
+
|
|
166
|
+
SELECT
|
|
167
|
+
CASE WHEN e.from_id = c.id THEN e.to_id ELSE e.from_id END AS next_id,
|
|
168
|
+
c.depth + 1,
|
|
169
|
+
c.path || '|' || CASE WHEN e.from_id = c.id THEN e.to_id ELSE e.from_id END
|
|
170
|
+
FROM brain_page_edges e
|
|
171
|
+
JOIN connected c ON (e.from_id = c.id OR e.to_id = c.id)
|
|
172
|
+
WHERE c.depth < ?
|
|
173
|
+
AND ('|' || c.path || '|') NOT LIKE (
|
|
174
|
+
'%|' || CASE WHEN e.from_id = c.id THEN e.to_id ELSE e.from_id END || '|%'
|
|
175
|
+
)
|
|
176
|
+
)
|
|
177
|
+
SELECT DISTINCT n.id, n.node_type, n.label, n.quality_score,
|
|
178
|
+
n.content_hash, n.last_activity_at, n.metadata_json,
|
|
179
|
+
n.created_at, n.updated_at,
|
|
180
|
+
MIN(c.depth) AS depth
|
|
181
|
+
FROM connected c
|
|
182
|
+
JOIN brain_page_nodes n ON n.id = c.id
|
|
183
|
+
GROUP BY n.id
|
|
184
|
+
ORDER BY depth ASC, n.quality_score DESC
|
|
185
|
+
`,
|
|
186
|
+
)
|
|
187
|
+
.all(nodeId, maxDepth) as unknown as Array<RawNode & { depth: number }>;
|
|
188
|
+
|
|
189
|
+
return rows.map((r) => ({ ...mapNode(r), depth: r.depth }));
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// ---------------------------------------------------------------------------
|
|
193
|
+
// relatedBrainNodes — 1-hop neighbours with edge metadata
|
|
194
|
+
// ---------------------------------------------------------------------------
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Return the immediate (1-hop) neighbours of a node, including edge metadata.
|
|
198
|
+
*
|
|
199
|
+
* Follows edges in both directions. Results are sorted by edge weight
|
|
200
|
+
* descending, then quality_score descending.
|
|
201
|
+
*
|
|
202
|
+
* @param projectRoot - Absolute path to the project root
|
|
203
|
+
* @param nodeId - Node to inspect (format: '<type>:<source-id>')
|
|
204
|
+
* @param edgeType - Optional edge type filter (e.g. 'applies_to')
|
|
205
|
+
* @returns Array of neighbour nodes with edge relationship info
|
|
206
|
+
*
|
|
207
|
+
* @example
|
|
208
|
+
* ```typescript
|
|
209
|
+
* const related = await relatedBrainNodes('/project', 'decision:D-abc123', 'applies_to');
|
|
210
|
+
* ```
|
|
211
|
+
*/
|
|
212
|
+
export async function relatedBrainNodes(
|
|
213
|
+
projectRoot: string,
|
|
214
|
+
nodeId: string,
|
|
215
|
+
edgeType?: string,
|
|
216
|
+
): Promise<RelatedNode[]> {
|
|
217
|
+
await getBrainDb(projectRoot);
|
|
218
|
+
const nativeDb = getBrainNativeDb();
|
|
219
|
+
|
|
220
|
+
if (!nativeDb) return [];
|
|
221
|
+
|
|
222
|
+
const edgeFilter = edgeType ? 'AND e.edge_type = ?' : '';
|
|
223
|
+
|
|
224
|
+
// Build params array for the union query
|
|
225
|
+
// Each half needs: nodeId [, edgeType]
|
|
226
|
+
const queryParams: string[] = edgeType ? [nodeId, edgeType, nodeId, edgeType] : [nodeId, nodeId];
|
|
227
|
+
|
|
228
|
+
// Two unions: outgoing (this node is from_id) and incoming (this node is to_id)
|
|
229
|
+
const rows = nativeDb
|
|
230
|
+
.prepare(
|
|
231
|
+
`
|
|
232
|
+
SELECT n.id, n.node_type, n.label, n.quality_score,
|
|
233
|
+
n.content_hash, n.last_activity_at, n.metadata_json,
|
|
234
|
+
n.created_at, n.updated_at,
|
|
235
|
+
e.edge_type, e.weight, 'out' AS direction
|
|
236
|
+
FROM brain_page_edges e
|
|
237
|
+
JOIN brain_page_nodes n ON n.id = e.to_id
|
|
238
|
+
WHERE e.from_id = ? ${edgeFilter}
|
|
239
|
+
|
|
240
|
+
UNION
|
|
241
|
+
|
|
242
|
+
SELECT n.id, n.node_type, n.label, n.quality_score,
|
|
243
|
+
n.content_hash, n.last_activity_at, n.metadata_json,
|
|
244
|
+
n.created_at, n.updated_at,
|
|
245
|
+
e.edge_type, e.weight, 'in' AS direction
|
|
246
|
+
FROM brain_page_edges e
|
|
247
|
+
JOIN brain_page_nodes n ON n.id = e.from_id
|
|
248
|
+
WHERE e.to_id = ? ${edgeFilter}
|
|
249
|
+
|
|
250
|
+
ORDER BY weight DESC, quality_score DESC
|
|
251
|
+
`,
|
|
252
|
+
)
|
|
253
|
+
.all(...queryParams) as unknown as Array<
|
|
254
|
+
RawNode & { edge_type: string; weight: number; direction: string }
|
|
255
|
+
>;
|
|
256
|
+
|
|
257
|
+
return rows.map((r) => ({
|
|
258
|
+
node: mapNode(r),
|
|
259
|
+
edgeType: r.edge_type as BrainEdgeType,
|
|
260
|
+
direction: r.direction as 'out' | 'in',
|
|
261
|
+
weight: r.weight,
|
|
262
|
+
}));
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
// ---------------------------------------------------------------------------
|
|
266
|
+
// contextBrainNode — 360-degree view of a single node
|
|
267
|
+
// ---------------------------------------------------------------------------
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* Return a 360-degree view of a single graph node.
|
|
271
|
+
*
|
|
272
|
+
* Provides the node itself, all incoming edges, all outgoing edges, and the
|
|
273
|
+
* full set of neighbour nodes with their edge relationships.
|
|
274
|
+
*
|
|
275
|
+
* @param projectRoot - Absolute path to the project root
|
|
276
|
+
* @param nodeId - Node to inspect (format: '<type>:<source-id>')
|
|
277
|
+
* @returns Full context record, or null if the node does not exist
|
|
278
|
+
*
|
|
279
|
+
* @example
|
|
280
|
+
* ```typescript
|
|
281
|
+
* const ctx = await contextBrainNode('/project', 'decision:D-abc123');
|
|
282
|
+
* if (ctx) {
|
|
283
|
+
* console.log(ctx.node.label, ctx.outEdges.length, 'outgoing edges');
|
|
284
|
+
* }
|
|
285
|
+
* ```
|
|
286
|
+
*/
|
|
287
|
+
export async function contextBrainNode(
|
|
288
|
+
projectRoot: string,
|
|
289
|
+
nodeId: string,
|
|
290
|
+
): Promise<NodeContext | null> {
|
|
291
|
+
await getBrainDb(projectRoot);
|
|
292
|
+
const nativeDb = getBrainNativeDb();
|
|
293
|
+
|
|
294
|
+
if (!nativeDb) return null;
|
|
295
|
+
|
|
296
|
+
const rawNode = nativeDb
|
|
297
|
+
.prepare(
|
|
298
|
+
`SELECT id, node_type, label, quality_score, content_hash,
|
|
299
|
+
last_activity_at, metadata_json, created_at, updated_at
|
|
300
|
+
FROM brain_page_nodes WHERE id = ?`,
|
|
301
|
+
)
|
|
302
|
+
.get(nodeId) as unknown as RawNode | undefined;
|
|
303
|
+
|
|
304
|
+
if (!rawNode) return null;
|
|
305
|
+
|
|
306
|
+
const node = mapNode(rawNode);
|
|
307
|
+
|
|
308
|
+
const rawOutEdges = nativeDb
|
|
309
|
+
.prepare(
|
|
310
|
+
`SELECT from_id, to_id, edge_type, weight, provenance, created_at
|
|
311
|
+
FROM brain_page_edges WHERE from_id = ? ORDER BY weight DESC`,
|
|
312
|
+
)
|
|
313
|
+
.all(nodeId) as unknown as RawEdge[];
|
|
314
|
+
|
|
315
|
+
const rawInEdges = nativeDb
|
|
316
|
+
.prepare(
|
|
317
|
+
`SELECT from_id, to_id, edge_type, weight, provenance, created_at
|
|
318
|
+
FROM brain_page_edges WHERE to_id = ? ORDER BY weight DESC`,
|
|
319
|
+
)
|
|
320
|
+
.all(nodeId) as unknown as RawEdge[];
|
|
321
|
+
|
|
322
|
+
const outEdges = rawOutEdges.map(mapEdge);
|
|
323
|
+
const inEdges = rawInEdges.map(mapEdge);
|
|
324
|
+
|
|
325
|
+
// Collect unique neighbour IDs from both directions
|
|
326
|
+
const seenIds = new Set<string>([nodeId]);
|
|
327
|
+
const neighbors: RelatedNode[] = [];
|
|
328
|
+
|
|
329
|
+
for (const e of rawOutEdges) {
|
|
330
|
+
if (!seenIds.has(e.to_id)) {
|
|
331
|
+
seenIds.add(e.to_id);
|
|
332
|
+
const rawNeighbour = nativeDb
|
|
333
|
+
.prepare(
|
|
334
|
+
`SELECT id, node_type, label, quality_score, content_hash,
|
|
335
|
+
last_activity_at, metadata_json, created_at, updated_at
|
|
336
|
+
FROM brain_page_nodes WHERE id = ?`,
|
|
337
|
+
)
|
|
338
|
+
.get(e.to_id) as unknown as RawNode | undefined;
|
|
339
|
+
if (rawNeighbour) {
|
|
340
|
+
neighbors.push({
|
|
341
|
+
node: mapNode(rawNeighbour),
|
|
342
|
+
edgeType: e.edge_type as BrainEdgeType,
|
|
343
|
+
direction: 'out',
|
|
344
|
+
weight: e.weight,
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
for (const e of rawInEdges) {
|
|
351
|
+
if (!seenIds.has(e.from_id)) {
|
|
352
|
+
seenIds.add(e.from_id);
|
|
353
|
+
const rawNeighbour = nativeDb
|
|
354
|
+
.prepare(
|
|
355
|
+
`SELECT id, node_type, label, quality_score, content_hash,
|
|
356
|
+
last_activity_at, metadata_json, created_at, updated_at
|
|
357
|
+
FROM brain_page_nodes WHERE id = ?`,
|
|
358
|
+
)
|
|
359
|
+
.get(e.from_id) as unknown as RawNode | undefined;
|
|
360
|
+
if (rawNeighbour) {
|
|
361
|
+
neighbors.push({
|
|
362
|
+
node: mapNode(rawNeighbour),
|
|
363
|
+
edgeType: e.edge_type as BrainEdgeType,
|
|
364
|
+
direction: 'in',
|
|
365
|
+
weight: e.weight,
|
|
366
|
+
});
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
// Sort neighbours by weight descending
|
|
372
|
+
neighbors.sort((a, b) => b.weight - a.weight);
|
|
373
|
+
|
|
374
|
+
return { node, inEdges, outEdges, neighbors };
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
// ---------------------------------------------------------------------------
|
|
378
|
+
// graphStats — aggregate counts by type
|
|
379
|
+
// ---------------------------------------------------------------------------
|
|
380
|
+
|
|
381
|
+
/**
|
|
382
|
+
* Return aggregate counts for brain_page_nodes and brain_page_edges by type.
|
|
383
|
+
*
|
|
384
|
+
* @param projectRoot - Absolute path to the project root
|
|
385
|
+
* @returns Counts by node type and edge type, plus totals
|
|
386
|
+
*
|
|
387
|
+
* @example
|
|
388
|
+
* ```typescript
|
|
389
|
+
* const stats = await graphStats('/project');
|
|
390
|
+
* console.log(stats.totalNodes, stats.totalEdges);
|
|
391
|
+
* ```
|
|
392
|
+
*/
|
|
393
|
+
export async function graphStats(projectRoot: string): Promise<GraphStats> {
|
|
394
|
+
await getBrainDb(projectRoot);
|
|
395
|
+
const nativeDb = getBrainNativeDb();
|
|
396
|
+
|
|
397
|
+
if (!nativeDb) {
|
|
398
|
+
return { nodesByType: [], edgesByType: [], totalNodes: 0, totalEdges: 0 };
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
const nodeRows = nativeDb
|
|
402
|
+
.prepare(
|
|
403
|
+
`SELECT node_type, COUNT(*) AS count
|
|
404
|
+
FROM brain_page_nodes GROUP BY node_type ORDER BY count DESC`,
|
|
405
|
+
)
|
|
406
|
+
.all() as unknown as Array<{ node_type: string; count: number }>;
|
|
407
|
+
|
|
408
|
+
const edgeRows = nativeDb
|
|
409
|
+
.prepare(
|
|
410
|
+
`SELECT edge_type, COUNT(*) AS count
|
|
411
|
+
FROM brain_page_edges GROUP BY edge_type ORDER BY count DESC`,
|
|
412
|
+
)
|
|
413
|
+
.all() as unknown as Array<{ edge_type: string; count: number }>;
|
|
414
|
+
|
|
415
|
+
const totalNodes = nodeRows.reduce((s, r) => s + r.count, 0);
|
|
416
|
+
const totalEdges = edgeRows.reduce((s, r) => s + r.count, 0);
|
|
417
|
+
|
|
418
|
+
return {
|
|
419
|
+
nodesByType: nodeRows.map((r) => ({ nodeType: r.node_type, count: r.count })),
|
|
420
|
+
edgesByType: edgeRows.map((r) => ({ edgeType: r.edge_type, count: r.count })),
|
|
421
|
+
totalNodes,
|
|
422
|
+
totalEdges,
|
|
423
|
+
};
|
|
424
|
+
}
|
package/src/memory/index.ts
CHANGED
|
@@ -1490,15 +1490,19 @@ export async function validateManifestEntries(
|
|
|
1490
1490
|
};
|
|
1491
1491
|
}
|
|
1492
1492
|
|
|
1493
|
-
// ===
|
|
1493
|
+
// === T549 Wave 3: Consolidator (contradiction detection) ===
|
|
1494
|
+
export * from './brain-consolidator.js';
|
|
1495
|
+
// === BRAIN Lifecycle (temporal decay, consolidation, tier promotion) ===
|
|
1494
1496
|
export * from './brain-lifecycle.js';
|
|
1495
1497
|
export * from './brain-links.js';
|
|
1496
1498
|
export * from './brain-migration.js';
|
|
1497
|
-
// === BRAIN Retrieval functions (3-layer pattern) ===
|
|
1499
|
+
// === BRAIN Retrieval functions (3-layer pattern + budget-aware) ===
|
|
1498
1500
|
export * from './brain-retrieval.js';
|
|
1499
1501
|
export * from './brain-search.js';
|
|
1500
1502
|
// === BRAIN Memory modules (brain.db backed) ===
|
|
1501
1503
|
export * from './decisions.js';
|
|
1504
|
+
// === T549 Wave 2: Extraction Gate ===
|
|
1505
|
+
export * from './extraction-gate.js';
|
|
1502
1506
|
export * from './learnings.js';
|
|
1503
1507
|
// === JSONL Memory modules (legacy, still active) ===
|
|
1504
1508
|
export * from './patterns.js';
|