@cleocode/core 2026.4.42 → 2026.4.44
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/conduit/factory.d.ts +10 -5
- package/dist/conduit/factory.d.ts.map +1 -1
- package/dist/index.js +66 -7
- package/dist/index.js.map +3 -3
- package/dist/init.d.ts.map +1 -1
- package/dist/store/brain-sqlite.d.ts.map +1 -1
- package/package.json +13 -8
- package/src/conduit/factory.ts +20 -17
- package/src/init.ts +14 -0
- package/src/store/__tests__/git-checkpoint.test.ts +12 -15
- package/src/store/brain-sqlite.ts +7 -0
- package/dist/adapters/adapter-registry.js +0 -64
- package/dist/adapters/adapter-registry.js.map +0 -1
- package/dist/adapters/discovery.js +0 -83
- package/dist/adapters/discovery.js.map +0 -1
- package/dist/adapters/index.js +0 -9
- package/dist/adapters/index.js.map +0 -1
- package/dist/adapters/manager.js +0 -260
- package/dist/adapters/manager.js.map +0 -1
- package/dist/admin/export-tasks.js +0 -171
- package/dist/admin/export-tasks.js.map +0 -1
- package/dist/admin/export.js +0 -103
- package/dist/admin/export.js.map +0 -1
- package/dist/admin/help.js +0 -106
- package/dist/admin/help.js.map +0 -1
- package/dist/admin/import-tasks.js +0 -182
- package/dist/admin/import-tasks.js.map +0 -1
- package/dist/admin/import.js +0 -129
- package/dist/admin/import.js.map +0 -1
- package/dist/admin/index.js +0 -13
- package/dist/admin/index.js.map +0 -1
- package/dist/adrs/find.js +0 -134
- package/dist/adrs/find.js.map +0 -1
- package/dist/adrs/index.js +0 -15
- package/dist/adrs/index.js.map +0 -1
- package/dist/adrs/link-pipeline.js +0 -160
- package/dist/adrs/link-pipeline.js.map +0 -1
- package/dist/adrs/list.js +0 -43
- package/dist/adrs/list.js.map +0 -1
- package/dist/adrs/parse.js +0 -51
- package/dist/adrs/parse.js.map +0 -1
- package/dist/adrs/show.js +0 -22
- package/dist/adrs/show.js.map +0 -1
- package/dist/adrs/sync.js +0 -232
- package/dist/adrs/sync.js.map +0 -1
- package/dist/adrs/types.js +0 -9
- package/dist/adrs/types.js.map +0 -1
- package/dist/adrs/validate.js +0 -57
- package/dist/adrs/validate.js.map +0 -1
- package/dist/agents/agent-registry.js +0 -288
- package/dist/agents/agent-registry.js.map +0 -1
- package/dist/agents/agent-schema.js +0 -82
- package/dist/agents/agent-schema.js.map +0 -1
- package/dist/agents/capacity.js +0 -116
- package/dist/agents/capacity.js.map +0 -1
- package/dist/agents/execution-learning.js +0 -474
- package/dist/agents/execution-learning.js.map +0 -1
- package/dist/agents/health-monitor.js +0 -217
- package/dist/agents/health-monitor.js.map +0 -1
- package/dist/agents/index.js +0 -29
- package/dist/agents/index.js.map +0 -1
- package/dist/agents/registry.js +0 -314
- package/dist/agents/registry.js.map +0 -1
- package/dist/agents/retry.js +0 -215
- package/dist/agents/retry.js.map +0 -1
- package/dist/audit-prune.js +0 -94
- package/dist/audit-prune.js.map +0 -1
- package/dist/audit.js +0 -68
- package/dist/audit.js.map +0 -1
- package/dist/backfill/index.js +0 -229
- package/dist/backfill/index.js.map +0 -1
- package/dist/bootstrap.js +0 -435
- package/dist/bootstrap.js.map +0 -1
- package/dist/caamp/adapter.js +0 -259
- package/dist/caamp/adapter.js.map +0 -1
- package/dist/caamp/capability-check.js +0 -38
- package/dist/caamp/capability-check.js.map +0 -1
- package/dist/caamp/index.js +0 -21
- package/dist/caamp/index.js.map +0 -1
- package/dist/caamp-init.js +0 -16
- package/dist/caamp-init.js.map +0 -1
- package/dist/cleo.js +0 -322
- package/dist/cleo.js.map +0 -1
- package/dist/code/index.js +0 -14
- package/dist/code/index.js.map +0 -1
- package/dist/code/outline.js +0 -165
- package/dist/code/outline.js.map +0 -1
- package/dist/code/parser.js +0 -420
- package/dist/code/parser.js.map +0 -1
- package/dist/code/search.js +0 -135
- package/dist/code/search.js.map +0 -1
- package/dist/code/unfold.js +0 -155
- package/dist/code/unfold.js.map +0 -1
- package/dist/codebase-map/analyzers/architecture.js +0 -129
- package/dist/codebase-map/analyzers/architecture.js.map +0 -1
- package/dist/codebase-map/analyzers/concerns.js +0 -122
- package/dist/codebase-map/analyzers/concerns.js.map +0 -1
- package/dist/codebase-map/analyzers/conventions.js +0 -149
- package/dist/codebase-map/analyzers/conventions.js.map +0 -1
- package/dist/codebase-map/analyzers/integrations.js +0 -108
- package/dist/codebase-map/analyzers/integrations.js.map +0 -1
- package/dist/codebase-map/analyzers/stack.js +0 -117
- package/dist/codebase-map/analyzers/stack.js.map +0 -1
- package/dist/codebase-map/analyzers/structure.js +0 -137
- package/dist/codebase-map/analyzers/structure.js.map +0 -1
- package/dist/codebase-map/analyzers/testing.js +0 -118
- package/dist/codebase-map/analyzers/testing.js.map +0 -1
- package/dist/codebase-map/index.js +0 -57
- package/dist/codebase-map/index.js.map +0 -1
- package/dist/codebase-map/store.js +0 -122
- package/dist/codebase-map/store.js.map +0 -1
- package/dist/codebase-map/summary.js +0 -152
- package/dist/codebase-map/summary.js.map +0 -1
- package/dist/compliance/index.js +0 -288
- package/dist/compliance/index.js.map +0 -1
- package/dist/compliance/protocol-enforcement.js +0 -332
- package/dist/compliance/protocol-enforcement.js.map +0 -1
- package/dist/compliance/protocol-rules.js +0 -786
- package/dist/compliance/protocol-rules.js.map +0 -1
- package/dist/compliance/protocol-types.js +0 -79
- package/dist/compliance/protocol-types.js.map +0 -1
- package/dist/compliance/store.js +0 -53
- package/dist/compliance/store.js.map +0 -1
- package/dist/conduit/conduit-client.js +0 -107
- package/dist/conduit/conduit-client.js.map +0 -1
- package/dist/conduit/factory.js +0 -52
- package/dist/conduit/factory.js.map +0 -1
- package/dist/conduit/http-transport.js +0 -155
- package/dist/conduit/http-transport.js.map +0 -1
- package/dist/conduit/index.js +0 -15
- package/dist/conduit/index.js.map +0 -1
- package/dist/conduit/local-transport.js +0 -255
- package/dist/conduit/local-transport.js.map +0 -1
- package/dist/conduit/sse-transport.js +0 -299
- package/dist/conduit/sse-transport.js.map +0 -1
- package/dist/config/build-config.js +0 -29
- package/dist/config/build-config.js.map +0 -1
- package/dist/config.js +0 -407
- package/dist/config.js.map +0 -1
- package/dist/constants.js +0 -18
- package/dist/constants.js.map +0 -1
- package/dist/context/index.js +0 -137
- package/dist/context/index.js.map +0 -1
- package/dist/crypto/credentials.js +0 -219
- package/dist/crypto/credentials.js.map +0 -1
- package/dist/discovery.js +0 -182
- package/dist/discovery.js.map +0 -1
- package/dist/engine-result.js +0 -12
- package/dist/engine-result.js.map +0 -1
- package/dist/error-catalog.js +0 -404
- package/dist/error-catalog.js.map +0 -1
- package/dist/error-registry.js +0 -393
- package/dist/error-registry.js.map +0 -1
- package/dist/errors.js +0 -173
- package/dist/errors.js.map +0 -1
- package/dist/hooks/handlers/agent-hooks.js +0 -106
- package/dist/hooks/handlers/agent-hooks.js.map +0 -1
- package/dist/hooks/handlers/conduit-hooks.js +0 -229
- package/dist/hooks/handlers/conduit-hooks.js.map +0 -1
- package/dist/hooks/handlers/context-hooks.js +0 -111
- package/dist/hooks/handlers/context-hooks.js.map +0 -1
- package/dist/hooks/handlers/error-hooks.js +0 -52
- package/dist/hooks/handlers/error-hooks.js.map +0 -1
- package/dist/hooks/handlers/file-hooks.js +0 -104
- package/dist/hooks/handlers/file-hooks.js.map +0 -1
- package/dist/hooks/handlers/handler-helpers.js +0 -61
- package/dist/hooks/handlers/handler-helpers.js.map +0 -1
- package/dist/hooks/handlers/index.js +0 -37
- package/dist/hooks/handlers/index.js.map +0 -1
- package/dist/hooks/handlers/intelligence-hooks.js +0 -69
- package/dist/hooks/handlers/intelligence-hooks.js.map +0 -1
- package/dist/hooks/handlers/memory-bridge-refresh.js +0 -42
- package/dist/hooks/handlers/memory-bridge-refresh.js.map +0 -1
- package/dist/hooks/handlers/notification-hooks.js +0 -62
- package/dist/hooks/handlers/notification-hooks.js.map +0 -1
- package/dist/hooks/handlers/session-hooks.js +0 -190
- package/dist/hooks/handlers/session-hooks.js.map +0 -1
- package/dist/hooks/handlers/task-hooks.js +0 -90
- package/dist/hooks/handlers/task-hooks.js.map +0 -1
- package/dist/hooks/handlers/watchdog-hooks.js +0 -162
- package/dist/hooks/handlers/watchdog-hooks.js.map +0 -1
- package/dist/hooks/handlers/work-capture-hooks.js +0 -165
- package/dist/hooks/handlers/work-capture-hooks.js.map +0 -1
- package/dist/hooks/index.js +0 -13
- package/dist/hooks/index.js.map +0 -1
- package/dist/hooks/payload-schemas.js +0 -220
- package/dist/hooks/payload-schemas.js.map +0 -1
- package/dist/hooks/provider-hooks.js +0 -66
- package/dist/hooks/provider-hooks.js.map +0 -1
- package/dist/hooks/registry.js +0 -229
- package/dist/hooks/registry.js.map +0 -1
- package/dist/hooks/types.js +0 -66
- package/dist/hooks/types.js.map +0 -1
- package/dist/hooks.js +0 -136
- package/dist/hooks.js.map +0 -1
- package/dist/init.js +0 -942
- package/dist/init.js.map +0 -1
- package/dist/inject/index.js +0 -82
- package/dist/inject/index.js.map +0 -1
- package/dist/injection.js +0 -377
- package/dist/injection.js.map +0 -1
- package/dist/intelligence/adaptive-validation.js +0 -497
- package/dist/intelligence/adaptive-validation.js.map +0 -1
- package/dist/intelligence/impact.js +0 -675
- package/dist/intelligence/impact.js.map +0 -1
- package/dist/intelligence/index.js +0 -22
- package/dist/intelligence/index.js.map +0 -1
- package/dist/intelligence/patterns.js +0 -492
- package/dist/intelligence/patterns.js.map +0 -1
- package/dist/intelligence/prediction.js +0 -499
- package/dist/intelligence/prediction.js.map +0 -1
- package/dist/intelligence/types.js +0 -13
- package/dist/intelligence/types.js.map +0 -1
- package/dist/internal.js +0 -324
- package/dist/internal.js.map +0 -1
- package/dist/issue/create.js +0 -121
- package/dist/issue/create.js.map +0 -1
- package/dist/issue/diagnostics.js +0 -59
- package/dist/issue/diagnostics.js.map +0 -1
- package/dist/issue/index.js +0 -10
- package/dist/issue/index.js.map +0 -1
- package/dist/issue/template-parser.js +0 -267
- package/dist/issue/template-parser.js.map +0 -1
- package/dist/json-schema-validator.js +0 -76
- package/dist/json-schema-validator.js.map +0 -1
- package/dist/lib/index.js +0 -11
- package/dist/lib/index.js.map +0 -1
- package/dist/lib/retry.js +0 -152
- package/dist/lib/retry.js.map +0 -1
- package/dist/lib/tree-sitter-languages.js +0 -75
- package/dist/lib/tree-sitter-languages.js.map +0 -1
- package/dist/lifecycle/chain-composition.js +0 -152
- package/dist/lifecycle/chain-composition.js.map +0 -1
- package/dist/lifecycle/chain-store.js +0 -246
- package/dist/lifecycle/chain-store.js.map +0 -1
- package/dist/lifecycle/consolidate-rcasd.js +0 -352
- package/dist/lifecycle/consolidate-rcasd.js.map +0 -1
- package/dist/lifecycle/default-chain.js +0 -176
- package/dist/lifecycle/default-chain.js.map +0 -1
- package/dist/lifecycle/evidence.js +0 -180
- package/dist/lifecycle/evidence.js.map +0 -1
- package/dist/lifecycle/frontmatter.js +0 -363
- package/dist/lifecycle/frontmatter.js.map +0 -1
- package/dist/lifecycle/index.js +0 -756
- package/dist/lifecycle/index.js.map +0 -1
- package/dist/lifecycle/pipeline.js +0 -656
- package/dist/lifecycle/pipeline.js.map +0 -1
- package/dist/lifecycle/rcasd-index.js +0 -326
- package/dist/lifecycle/rcasd-index.js.map +0 -1
- package/dist/lifecycle/rcasd-paths.js +0 -220
- package/dist/lifecycle/rcasd-paths.js.map +0 -1
- package/dist/lifecycle/resume.js +0 -864
- package/dist/lifecycle/resume.js.map +0 -1
- package/dist/lifecycle/stage-artifacts.js +0 -94
- package/dist/lifecycle/stage-artifacts.js.map +0 -1
- package/dist/lifecycle/stage-guidance.js +0 -234
- package/dist/lifecycle/stage-guidance.js.map +0 -1
- package/dist/lifecycle/stages.js +0 -534
- package/dist/lifecycle/stages.js.map +0 -1
- package/dist/lifecycle/state-machine.js +0 -516
- package/dist/lifecycle/state-machine.js.map +0 -1
- package/dist/lifecycle/tessera-engine.js +0 -249
- package/dist/lifecycle/tessera-engine.js.map +0 -1
- package/dist/logger.js +0 -140
- package/dist/logger.js.map +0 -1
- package/dist/memory/anthropic-key-resolver.js +0 -105
- package/dist/memory/anthropic-key-resolver.js.map +0 -1
- package/dist/memory/auto-extract.js +0 -77
- package/dist/memory/auto-extract.js.map +0 -1
- package/dist/memory/brain-backfill.js +0 -389
- package/dist/memory/brain-backfill.js.map +0 -1
- package/dist/memory/brain-consolidator.js +0 -294
- package/dist/memory/brain-consolidator.js.map +0 -1
- package/dist/memory/brain-embedding.js +0 -66
- package/dist/memory/brain-embedding.js.map +0 -1
- package/dist/memory/brain-lifecycle.js +0 -818
- package/dist/memory/brain-lifecycle.js.map +0 -1
- package/dist/memory/brain-links.js +0 -161
- package/dist/memory/brain-links.js.map +0 -1
- package/dist/memory/brain-maintenance.js +0 -114
- package/dist/memory/brain-maintenance.js.map +0 -1
- package/dist/memory/brain-migration.js +0 -149
- package/dist/memory/brain-migration.js.map +0 -1
- package/dist/memory/brain-purge.js +0 -243
- package/dist/memory/brain-purge.js.map +0 -1
- package/dist/memory/brain-reasoning.js +0 -215
- package/dist/memory/brain-reasoning.js.map +0 -1
- package/dist/memory/brain-retrieval.js +0 -1044
- package/dist/memory/brain-retrieval.js.map +0 -1
- package/dist/memory/brain-row-types.js +0 -10
- package/dist/memory/brain-row-types.js.map +0 -1
- package/dist/memory/brain-search.js +0 -613
- package/dist/memory/brain-search.js.map +0 -1
- package/dist/memory/brain-similarity.js +0 -145
- package/dist/memory/brain-similarity.js.map +0 -1
- package/dist/memory/claude-mem-migration.js +0 -277
- package/dist/memory/claude-mem-migration.js.map +0 -1
- package/dist/memory/decisions.js +0 -236
- package/dist/memory/decisions.js.map +0 -1
- package/dist/memory/embedding-local.js +0 -102
- package/dist/memory/embedding-local.js.map +0 -1
- package/dist/memory/embedding-queue.js +0 -271
- package/dist/memory/embedding-queue.js.map +0 -1
- package/dist/memory/embedding-worker.js +0 -58
- package/dist/memory/embedding-worker.js.map +0 -1
- package/dist/memory/engine-compat.js +0 -1597
- package/dist/memory/engine-compat.js.map +0 -1
- package/dist/memory/extraction-gate.js +0 -459
- package/dist/memory/extraction-gate.js.map +0 -1
- package/dist/memory/graph-auto-populate.js +0 -148
- package/dist/memory/graph-auto-populate.js.map +0 -1
- package/dist/memory/graph-memory-bridge.js +0 -519
- package/dist/memory/graph-memory-bridge.js.map +0 -1
- package/dist/memory/graph-queries.js +0 -290
- package/dist/memory/graph-queries.js.map +0 -1
- package/dist/memory/index.js +0 -1146
- package/dist/memory/index.js.map +0 -1
- package/dist/memory/learnings.js +0 -197
- package/dist/memory/learnings.js.map +0 -1
- package/dist/memory/llm-extraction.js +0 -425
- package/dist/memory/llm-extraction.js.map +0 -1
- package/dist/memory/memory-bridge.js +0 -382
- package/dist/memory/memory-bridge.js.map +0 -1
- package/dist/memory/mental-model-injection.js +0 -61
- package/dist/memory/mental-model-injection.js.map +0 -1
- package/dist/memory/mental-model-queue.js +0 -211
- package/dist/memory/mental-model-queue.js.map +0 -1
- package/dist/memory/observer-reflector.js +0 -626
- package/dist/memory/observer-reflector.js.map +0 -1
- package/dist/memory/patterns.js +0 -192
- package/dist/memory/patterns.js.map +0 -1
- package/dist/memory/pipeline-manifest-sqlite.js +0 -975
- package/dist/memory/pipeline-manifest-sqlite.js.map +0 -1
- package/dist/memory/quality-feedback.js +0 -449
- package/dist/memory/quality-feedback.js.map +0 -1
- package/dist/memory/quality-scoring.js +0 -182
- package/dist/memory/quality-scoring.js.map +0 -1
- package/dist/memory/session-memory.js +0 -331
- package/dist/memory/session-memory.js.map +0 -1
- package/dist/memory/sleep-consolidation.js +0 -706
- package/dist/memory/sleep-consolidation.js.map +0 -1
- package/dist/memory/temporal-supersession.js +0 -403
- package/dist/memory/temporal-supersession.js.map +0 -1
- package/dist/metrics/ab-test.js +0 -260
- package/dist/metrics/ab-test.js.map +0 -1
- package/dist/metrics/aggregation.js +0 -363
- package/dist/metrics/aggregation.js.map +0 -1
- package/dist/metrics/common.js +0 -64
- package/dist/metrics/common.js.map +0 -1
- package/dist/metrics/enums.js +0 -78
- package/dist/metrics/enums.js.map +0 -1
- package/dist/metrics/index.js +0 -19
- package/dist/metrics/index.js.map +0 -1
- package/dist/metrics/model-provider-registry.js +0 -88
- package/dist/metrics/model-provider-registry.js.map +0 -1
- package/dist/metrics/otel-integration.js +0 -263
- package/dist/metrics/otel-integration.js.map +0 -1
- package/dist/metrics/provider-detection.js +0 -103
- package/dist/metrics/provider-detection.js.map +0 -1
- package/dist/metrics/token-estimation.js +0 -253
- package/dist/metrics/token-estimation.js.map +0 -1
- package/dist/metrics/token-service.js +0 -450
- package/dist/metrics/token-service.js.map +0 -1
- package/dist/migration/agent-outputs.js +0 -316
- package/dist/migration/agent-outputs.js.map +0 -1
- package/dist/migration/checksum.js +0 -92
- package/dist/migration/checksum.js.map +0 -1
- package/dist/migration/index.js +0 -282
- package/dist/migration/index.js.map +0 -1
- package/dist/migration/logger.js +0 -360
- package/dist/migration/logger.js.map +0 -1
- package/dist/migration/preflight.js +0 -9
- package/dist/migration/preflight.js.map +0 -1
- package/dist/migration/state.js +0 -421
- package/dist/migration/state.js.map +0 -1
- package/dist/migration/validate.js +0 -241
- package/dist/migration/validate.js.map +0 -1
- package/dist/mvi-helpers.js +0 -73
- package/dist/mvi-helpers.js.map +0 -1
- package/dist/nexus/deps.js +0 -375
- package/dist/nexus/deps.js.map +0 -1
- package/dist/nexus/discover.js +0 -288
- package/dist/nexus/discover.js.map +0 -1
- package/dist/nexus/hash.js +0 -10
- package/dist/nexus/hash.js.map +0 -1
- package/dist/nexus/index.js +0 -40
- package/dist/nexus/index.js.map +0 -1
- package/dist/nexus/migrate-json-to-sqlite.js +0 -115
- package/dist/nexus/migrate-json-to-sqlite.js.map +0 -1
- package/dist/nexus/nexus-bridge.js +0 -321
- package/dist/nexus/nexus-bridge.js.map +0 -1
- package/dist/nexus/permissions.js +0 -105
- package/dist/nexus/permissions.js.map +0 -1
- package/dist/nexus/query.js +0 -175
- package/dist/nexus/query.js.map +0 -1
- package/dist/nexus/registry.js +0 -584
- package/dist/nexus/registry.js.map +0 -1
- package/dist/nexus/sharing/index.js +0 -288
- package/dist/nexus/sharing/index.js.map +0 -1
- package/dist/nexus/transfer-types.js +0 -8
- package/dist/nexus/transfer-types.js.map +0 -1
- package/dist/nexus/transfer.js +0 -271
- package/dist/nexus/transfer.js.map +0 -1
- package/dist/nexus/workspace.js +0 -355
- package/dist/nexus/workspace.js.map +0 -1
- package/dist/observability/index.js +0 -103
- package/dist/observability/index.js.map +0 -1
- package/dist/observability/log-filter.js +0 -63
- package/dist/observability/log-filter.js.map +0 -1
- package/dist/observability/log-parser.js +0 -99
- package/dist/observability/log-parser.js.map +0 -1
- package/dist/observability/log-reader.js +0 -139
- package/dist/observability/log-reader.js.map +0 -1
- package/dist/observability/types.js +0 -19
- package/dist/observability/types.js.map +0 -1
- package/dist/orchestration/analyze.js +0 -107
- package/dist/orchestration/analyze.js.map +0 -1
- package/dist/orchestration/bootstrap.js +0 -132
- package/dist/orchestration/bootstrap.js.map +0 -1
- package/dist/orchestration/context.js +0 -56
- package/dist/orchestration/context.js.map +0 -1
- package/dist/orchestration/critical-path.js +0 -100
- package/dist/orchestration/critical-path.js.map +0 -1
- package/dist/orchestration/hierarchy.js +0 -183
- package/dist/orchestration/hierarchy.js.map +0 -1
- package/dist/orchestration/index.js +0 -287
- package/dist/orchestration/index.js.map +0 -1
- package/dist/orchestration/parallel.js +0 -89
- package/dist/orchestration/parallel.js.map +0 -1
- package/dist/orchestration/protocol-validators.js +0 -815
- package/dist/orchestration/protocol-validators.js.map +0 -1
- package/dist/orchestration/skill-ops.js +0 -98
- package/dist/orchestration/skill-ops.js.map +0 -1
- package/dist/orchestration/status.js +0 -107
- package/dist/orchestration/status.js.map +0 -1
- package/dist/orchestration/unblock.js +0 -103
- package/dist/orchestration/unblock.js.map +0 -1
- package/dist/orchestration/validate-spawn.js +0 -67
- package/dist/orchestration/validate-spawn.js.map +0 -1
- package/dist/orchestration/waves.js +0 -86
- package/dist/orchestration/waves.js.map +0 -1
- package/dist/otel/index.js +0 -163
- package/dist/otel/index.js.map +0 -1
- package/dist/output.js +0 -164
- package/dist/output.js.map +0 -1
- package/dist/pagination.js +0 -64
- package/dist/pagination.js.map +0 -1
- package/dist/paths.js +0 -882
- package/dist/paths.js.map +0 -1
- package/dist/phases/deps.js +0 -372
- package/dist/phases/deps.js.map +0 -1
- package/dist/phases/index.js +0 -349
- package/dist/phases/index.js.map +0 -1
- package/dist/pipeline/index.js +0 -10
- package/dist/pipeline/index.js.map +0 -1
- package/dist/pipeline/phase.js +0 -45
- package/dist/pipeline/phase.js.map +0 -1
- package/dist/platform.js +0 -211
- package/dist/platform.js.map +0 -1
- package/dist/project-info.js +0 -84
- package/dist/project-info.js.map +0 -1
- package/dist/reconciliation/index.js +0 -10
- package/dist/reconciliation/index.js.map +0 -1
- package/dist/reconciliation/link-store.js +0 -175
- package/dist/reconciliation/link-store.js.map +0 -1
- package/dist/reconciliation/reconciliation-engine.js +0 -298
- package/dist/reconciliation/reconciliation-engine.js.map +0 -1
- package/dist/release/artifacts.js +0 -427
- package/dist/release/artifacts.js.map +0 -1
- package/dist/release/changelog-writer.js +0 -151
- package/dist/release/changelog-writer.js.map +0 -1
- package/dist/release/channel.js +0 -144
- package/dist/release/channel.js.map +0 -1
- package/dist/release/ci.js +0 -166
- package/dist/release/ci.js.map +0 -1
- package/dist/release/github-pr.js +0 -225
- package/dist/release/github-pr.js.map +0 -1
- package/dist/release/guards.js +0 -116
- package/dist/release/guards.js.map +0 -1
- package/dist/release/index.js +0 -22
- package/dist/release/index.js.map +0 -1
- package/dist/release/release-config.js +0 -158
- package/dist/release/release-config.js.map +0 -1
- package/dist/release/release-manifest.js +0 -1019
- package/dist/release/release-manifest.js.map +0 -1
- package/dist/release/version-bump.js +0 -255
- package/dist/release/version-bump.js.map +0 -1
- package/dist/remote/index.js +0 -257
- package/dist/remote/index.js.map +0 -1
- package/dist/repair.js +0 -130
- package/dist/repair.js.map +0 -1
- package/dist/research/index.js +0 -2
- package/dist/research/index.js.map +0 -1
- package/dist/roadmap/index.js +0 -59
- package/dist/roadmap/index.js.map +0 -1
- package/dist/routing/capability-matrix.js +0 -1556
- package/dist/routing/capability-matrix.js.map +0 -1
- package/dist/routing/index.js +0 -9
- package/dist/routing/index.js.map +0 -1
- package/dist/scaffold.js +0 -1798
- package/dist/scaffold.js.map +0 -1
- package/dist/schema-management.js +0 -295
- package/dist/schema-management.js.map +0 -1
- package/dist/security/index.js +0 -9
- package/dist/security/index.js.map +0 -1
- package/dist/security/input-sanitization.js +0 -326
- package/dist/security/input-sanitization.js.map +0 -1
- package/dist/sequence/index.js +0 -295
- package/dist/sequence/index.js.map +0 -1
- package/dist/sessions/assumptions.js +0 -54
- package/dist/sessions/assumptions.js.map +0 -1
- package/dist/sessions/briefing.js +0 -377
- package/dist/sessions/briefing.js.map +0 -1
- package/dist/sessions/context-alert.js +0 -222
- package/dist/sessions/context-alert.js.map +0 -1
- package/dist/sessions/context-inject.js +0 -61
- package/dist/sessions/context-inject.js.map +0 -1
- package/dist/sessions/context-monitor.js +0 -98
- package/dist/sessions/context-monitor.js.map +0 -1
- package/dist/sessions/decisions.js +0 -65
- package/dist/sessions/decisions.js.map +0 -1
- package/dist/sessions/find.js +0 -65
- package/dist/sessions/find.js.map +0 -1
- package/dist/sessions/handoff.js +0 -328
- package/dist/sessions/handoff.js.map +0 -1
- package/dist/sessions/hitl-warnings.js +0 -254
- package/dist/sessions/hitl-warnings.js.map +0 -1
- package/dist/sessions/index.js +0 -327
- package/dist/sessions/index.js.map +0 -1
- package/dist/sessions/session-archive.js +0 -40
- package/dist/sessions/session-archive.js.map +0 -1
- package/dist/sessions/session-cleanup.js +0 -59
- package/dist/sessions/session-cleanup.js.map +0 -1
- package/dist/sessions/session-drift.js +0 -134
- package/dist/sessions/session-drift.js.map +0 -1
- package/dist/sessions/session-enforcement.js +0 -144
- package/dist/sessions/session-enforcement.js.map +0 -1
- package/dist/sessions/session-grade.js +0 -253
- package/dist/sessions/session-grade.js.map +0 -1
- package/dist/sessions/session-history.js +0 -42
- package/dist/sessions/session-history.js.map +0 -1
- package/dist/sessions/session-id.js +0 -81
- package/dist/sessions/session-id.js.map +0 -1
- package/dist/sessions/session-memory-bridge.js +0 -30
- package/dist/sessions/session-memory-bridge.js.map +0 -1
- package/dist/sessions/session-show.js +0 -24
- package/dist/sessions/session-show.js.map +0 -1
- package/dist/sessions/session-stats.js +0 -69
- package/dist/sessions/session-stats.js.map +0 -1
- package/dist/sessions/session-suspend.js +0 -39
- package/dist/sessions/session-suspend.js.map +0 -1
- package/dist/sessions/session-switch.js +0 -51
- package/dist/sessions/session-switch.js.map +0 -1
- package/dist/sessions/session-view.js +0 -76
- package/dist/sessions/session-view.js.map +0 -1
- package/dist/sessions/snapshot.js +0 -213
- package/dist/sessions/snapshot.js.map +0 -1
- package/dist/sessions/statusline-setup.js +0 -85
- package/dist/sessions/statusline-setup.js.map +0 -1
- package/dist/sessions/types.js +0 -8
- package/dist/sessions/types.js.map +0 -1
- package/dist/skills/agents/config.js +0 -94
- package/dist/skills/agents/config.js.map +0 -1
- package/dist/skills/agents/install.js +0 -116
- package/dist/skills/agents/install.js.map +0 -1
- package/dist/skills/agents/registry.js +0 -161
- package/dist/skills/agents/registry.js.map +0 -1
- package/dist/skills/discovery.js +0 -333
- package/dist/skills/discovery.js.map +0 -1
- package/dist/skills/dispatch.js +0 -347
- package/dist/skills/dispatch.js.map +0 -1
- package/dist/skills/dynamic-skill-generator.js +0 -87
- package/dist/skills/dynamic-skill-generator.js.map +0 -1
- package/dist/skills/index.js +0 -44
- package/dist/skills/index.js.map +0 -1
- package/dist/skills/injection/subagent.js +0 -195
- package/dist/skills/injection/subagent.js.map +0 -1
- package/dist/skills/injection/token.js +0 -260
- package/dist/skills/injection/token.js.map +0 -1
- package/dist/skills/install.js +0 -40
- package/dist/skills/install.js.map +0 -1
- package/dist/skills/manifests/contribution.js +0 -175
- package/dist/skills/manifests/contribution.js.map +0 -1
- package/dist/skills/manifests/research.js +0 -281
- package/dist/skills/manifests/research.js.map +0 -1
- package/dist/skills/manifests/resolver.js +0 -146
- package/dist/skills/manifests/resolver.js.map +0 -1
- package/dist/skills/marketplace.js +0 -90
- package/dist/skills/marketplace.js.map +0 -1
- package/dist/skills/orchestrator/spawn.js +0 -178
- package/dist/skills/orchestrator/spawn.js.map +0 -1
- package/dist/skills/orchestrator/startup.js +0 -451
- package/dist/skills/orchestrator/startup.js.map +0 -1
- package/dist/skills/orchestrator/validator.js +0 -301
- package/dist/skills/orchestrator/validator.js.map +0 -1
- package/dist/skills/precedence-integration.js +0 -73
- package/dist/skills/precedence-integration.js.map +0 -1
- package/dist/skills/precedence-types.js +0 -16
- package/dist/skills/precedence-types.js.map +0 -1
- package/dist/skills/routing-table.js +0 -63
- package/dist/skills/routing-table.js.map +0 -1
- package/dist/skills/skill-paths.js +0 -217
- package/dist/skills/skill-paths.js.map +0 -1
- package/dist/skills/test-utility.js +0 -55
- package/dist/skills/test-utility.js.map +0 -1
- package/dist/skills/types.js +0 -118
- package/dist/skills/types.js.map +0 -1
- package/dist/skills/validation.js +0 -183
- package/dist/skills/validation.js.map +0 -1
- package/dist/skills/version.js +0 -57
- package/dist/skills/version.js.map +0 -1
- package/dist/snapshot/index.js +0 -188
- package/dist/snapshot/index.js.map +0 -1
- package/dist/spawn/adapter-registry.js +0 -246
- package/dist/spawn/adapter-registry.js.map +0 -1
- package/dist/spawn/index.js +0 -10
- package/dist/spawn/index.js.map +0 -1
- package/dist/stats/index.js +0 -350
- package/dist/stats/index.js.map +0 -1
- package/dist/stats/workflow-telemetry.js +0 -400
- package/dist/stats/workflow-telemetry.js.map +0 -1
- package/dist/sticky/archive.js +0 -47
- package/dist/sticky/archive.js.map +0 -1
- package/dist/sticky/convert.js +0 -235
- package/dist/sticky/convert.js.map +0 -1
- package/dist/sticky/create.js +0 -48
- package/dist/sticky/create.js.map +0 -1
- package/dist/sticky/id.js +0 -35
- package/dist/sticky/id.js.map +0 -1
- package/dist/sticky/index.js +0 -16
- package/dist/sticky/index.js.map +0 -1
- package/dist/sticky/list.js +0 -57
- package/dist/sticky/list.js.map +0 -1
- package/dist/sticky/purge.js +0 -45
- package/dist/sticky/purge.js.map +0 -1
- package/dist/sticky/show.js +0 -42
- package/dist/sticky/show.js.map +0 -1
- package/dist/sticky/types.js +0 -10
- package/dist/sticky/types.js.map +0 -1
- package/dist/store/agent-registry-accessor.js +0 -886
- package/dist/store/agent-registry-accessor.js.map +0 -1
- package/dist/store/api-key-kdf.js +0 -84
- package/dist/store/api-key-kdf.js.map +0 -1
- package/dist/store/atomic.js +0 -167
- package/dist/store/atomic.js.map +0 -1
- package/dist/store/backup-crypto.js +0 -184
- package/dist/store/backup-crypto.js.map +0 -1
- package/dist/store/backup-pack.js +0 -581
- package/dist/store/backup-pack.js.map +0 -1
- package/dist/store/backup-unpack.js +0 -449
- package/dist/store/backup-unpack.js.map +0 -1
- package/dist/store/backup.js +0 -94
- package/dist/store/backup.js.map +0 -1
- package/dist/store/brain-accessor.js +0 -429
- package/dist/store/brain-accessor.js.map +0 -1
- package/dist/store/brain-schema.js +0 -579
- package/dist/store/brain-schema.js.map +0 -1
- package/dist/store/brain-sqlite.js +0 -297
- package/dist/store/brain-sqlite.js.map +0 -1
- package/dist/store/cache.js +0 -168
- package/dist/store/cache.js.map +0 -1
- package/dist/store/chain-schema.js +0 -51
- package/dist/store/chain-schema.js.map +0 -1
- package/dist/store/cleanup-legacy.js +0 -171
- package/dist/store/cleanup-legacy.js.map +0 -1
- package/dist/store/conduit-sqlite.js +0 -570
- package/dist/store/conduit-sqlite.js.map +0 -1
- package/dist/store/converters.js +0 -124
- package/dist/store/converters.js.map +0 -1
- package/dist/store/cross-db-cleanup.js +0 -319
- package/dist/store/cross-db-cleanup.js.map +0 -1
- package/dist/store/data-accessor.js +0 -26
- package/dist/store/data-accessor.js.map +0 -1
- package/dist/store/data-safety-central.js +0 -269
- package/dist/store/data-safety-central.js.map +0 -1
- package/dist/store/data-safety.js +0 -274
- package/dist/store/data-safety.js.map +0 -1
- package/dist/store/db-helpers.js +0 -224
- package/dist/store/db-helpers.js.map +0 -1
- package/dist/store/export.js +0 -155
- package/dist/store/export.js.map +0 -1
- package/dist/store/file-utils.js +0 -270
- package/dist/store/file-utils.js.map +0 -1
- package/dist/store/git-checkpoint.js +0 -365
- package/dist/store/git-checkpoint.js.map +0 -1
- package/dist/store/global-salt.js +0 -147
- package/dist/store/global-salt.js.map +0 -1
- package/dist/store/import-logging.js +0 -139
- package/dist/store/import-logging.js.map +0 -1
- package/dist/store/import-remap.js +0 -145
- package/dist/store/import-remap.js.map +0 -1
- package/dist/store/import-sort.js +0 -121
- package/dist/store/import-sort.js.map +0 -1
- package/dist/store/index.js +0 -29
- package/dist/store/index.js.map +0 -1
- package/dist/store/json.js +0 -208
- package/dist/store/json.js.map +0 -1
- package/dist/store/lifecycle-store.js +0 -249
- package/dist/store/lifecycle-store.js.map +0 -1
- package/dist/store/lock.js +0 -70
- package/dist/store/lock.js.map +0 -1
- package/dist/store/migrate-signaldock-to-conduit.js +0 -562
- package/dist/store/migrate-signaldock-to-conduit.js.map +0 -1
- package/dist/store/migration-manager.js +0 -288
- package/dist/store/migration-manager.js.map +0 -1
- package/dist/store/migration-sqlite.js +0 -676
- package/dist/store/migration-sqlite.js.map +0 -1
- package/dist/store/nexus-schema.js +0 -268
- package/dist/store/nexus-schema.js.map +0 -1
- package/dist/store/nexus-sqlite.js +0 -242
- package/dist/store/nexus-sqlite.js.map +0 -1
- package/dist/store/nexus-validation-schemas.js +0 -40
- package/dist/store/nexus-validation-schemas.js.map +0 -1
- package/dist/store/parsers.js +0 -37
- package/dist/store/parsers.js.map +0 -1
- package/dist/store/project-detect.js +0 -457
- package/dist/store/project-detect.js.map +0 -1
- package/dist/store/provider.js +0 -101
- package/dist/store/provider.js.map +0 -1
- package/dist/store/regenerators.js +0 -207
- package/dist/store/regenerators.js.map +0 -1
- package/dist/store/restore-conflict-report.js +0 -206
- package/dist/store/restore-conflict-report.js.map +0 -1
- package/dist/store/restore-json-merge.js +0 -454
- package/dist/store/restore-json-merge.js.map +0 -1
- package/dist/store/safety-data-accessor.js +0 -257
- package/dist/store/safety-data-accessor.js.map +0 -1
- package/dist/store/schema.js +0 -7
- package/dist/store/schema.js.map +0 -1
- package/dist/store/session-store.js +0 -219
- package/dist/store/session-store.js.map +0 -1
- package/dist/store/signaldock-sqlite.js +0 -550
- package/dist/store/signaldock-sqlite.js.map +0 -1
- package/dist/store/sqlite-backup.js +0 -498
- package/dist/store/sqlite-backup.js.map +0 -1
- package/dist/store/sqlite-data-accessor.js +0 -787
- package/dist/store/sqlite-data-accessor.js.map +0 -1
- package/dist/store/sqlite.js +0 -483
- package/dist/store/sqlite.js.map +0 -1
- package/dist/store/status-registry.js +0 -8
- package/dist/store/status-registry.js.map +0 -1
- package/dist/store/t310-readiness.js +0 -115
- package/dist/store/t310-readiness.js.map +0 -1
- package/dist/store/task-store.js +0 -358
- package/dist/store/task-store.js.map +0 -1
- package/dist/store/tasks-schema.js +0 -610
- package/dist/store/tasks-schema.js.map +0 -1
- package/dist/store/typed-query.js +0 -15
- package/dist/store/typed-query.js.map +0 -1
- package/dist/store/validation-schemas.js +0 -278
- package/dist/store/validation-schemas.js.map +0 -1
- package/dist/system/archive-analytics.js +0 -277
- package/dist/system/archive-analytics.js.map +0 -1
- package/dist/system/archive-stats.js +0 -64
- package/dist/system/archive-stats.js.map +0 -1
- package/dist/system/audit.js +0 -145
- package/dist/system/audit.js.map +0 -1
- package/dist/system/backup.js +0 -280
- package/dist/system/backup.js.map +0 -1
- package/dist/system/cleanup.js +0 -134
- package/dist/system/cleanup.js.map +0 -1
- package/dist/system/dependencies.js +0 -466
- package/dist/system/dependencies.js.map +0 -1
- package/dist/system/health.js +0 -1206
- package/dist/system/health.js.map +0 -1
- package/dist/system/index.js +0 -18
- package/dist/system/index.js.map +0 -1
- package/dist/system/inject-generate.js +0 -122
- package/dist/system/inject-generate.js.map +0 -1
- package/dist/system/labels.js +0 -38
- package/dist/system/labels.js.map +0 -1
- package/dist/system/metrics.js +0 -61
- package/dist/system/metrics.js.map +0 -1
- package/dist/system/migrate.js +0 -43
- package/dist/system/migrate.js.map +0 -1
- package/dist/system/platform-paths.js +0 -80
- package/dist/system/platform-paths.js.map +0 -1
- package/dist/system/runtime.js +0 -161
- package/dist/system/runtime.js.map +0 -1
- package/dist/system/safestop.js +0 -89
- package/dist/system/safestop.js.map +0 -1
- package/dist/system/storage-preflight.js +0 -123
- package/dist/system/storage-preflight.js.map +0 -1
- package/dist/task-work/index.js +0 -159
- package/dist/task-work/index.js.map +0 -1
- package/dist/tasks/add.js +0 -837
- package/dist/tasks/add.js.map +0 -1
- package/dist/tasks/analyze.js +0 -85
- package/dist/tasks/analyze.js.map +0 -1
- package/dist/tasks/archive.js +0 -90
- package/dist/tasks/archive.js.map +0 -1
- package/dist/tasks/atomicity.js +0 -83
- package/dist/tasks/atomicity.js.map +0 -1
- package/dist/tasks/cancel-ops.js +0 -83
- package/dist/tasks/cancel-ops.js.map +0 -1
- package/dist/tasks/complete.js +0 -248
- package/dist/tasks/complete.js.map +0 -1
- package/dist/tasks/crossref-extract.js +0 -73
- package/dist/tasks/crossref-extract.js.map +0 -1
- package/dist/tasks/delete-preview.js +0 -192
- package/dist/tasks/delete-preview.js.map +0 -1
- package/dist/tasks/delete.js +0 -120
- package/dist/tasks/delete.js.map +0 -1
- package/dist/tasks/deletion-strategy.js +0 -200
- package/dist/tasks/deletion-strategy.js.map +0 -1
- package/dist/tasks/dependency-check.js +0 -278
- package/dist/tasks/dependency-check.js.map +0 -1
- package/dist/tasks/deps-ready.js +0 -32
- package/dist/tasks/deps-ready.js.map +0 -1
- package/dist/tasks/enforcement.js +0 -86
- package/dist/tasks/enforcement.js.map +0 -1
- package/dist/tasks/epic-enforcement.js +0 -294
- package/dist/tasks/epic-enforcement.js.map +0 -1
- package/dist/tasks/find.js +0 -163
- package/dist/tasks/find.js.map +0 -1
- package/dist/tasks/graph-cache.js +0 -127
- package/dist/tasks/graph-cache.js.map +0 -1
- package/dist/tasks/graph-ops.js +0 -173
- package/dist/tasks/graph-ops.js.map +0 -1
- package/dist/tasks/graph-rag.js +0 -328
- package/dist/tasks/graph-rag.js.map +0 -1
- package/dist/tasks/hierarchy-policy.js +0 -149
- package/dist/tasks/hierarchy-policy.js.map +0 -1
- package/dist/tasks/hierarchy.js +0 -185
- package/dist/tasks/hierarchy.js.map +0 -1
- package/dist/tasks/id-generator.js +0 -65
- package/dist/tasks/id-generator.js.map +0 -1
- package/dist/tasks/index.js +0 -14
- package/dist/tasks/index.js.map +0 -1
- package/dist/tasks/labels.js +0 -55
- package/dist/tasks/labels.js.map +0 -1
- package/dist/tasks/list.js +0 -75
- package/dist/tasks/list.js.map +0 -1
- package/dist/tasks/phase-tracking.js +0 -133
- package/dist/tasks/phase-tracking.js.map +0 -1
- package/dist/tasks/pipeline-stage.js +0 -248
- package/dist/tasks/pipeline-stage.js.map +0 -1
- package/dist/tasks/plan.js +0 -268
- package/dist/tasks/plan.js.map +0 -1
- package/dist/tasks/relates.js +0 -101
- package/dist/tasks/relates.js.map +0 -1
- package/dist/tasks/show.js +0 -83
- package/dist/tasks/show.js.map +0 -1
- package/dist/tasks/size-weighting.js +0 -86
- package/dist/tasks/size-weighting.js.map +0 -1
- package/dist/tasks/staleness.js +0 -86
- package/dist/tasks/staleness.js.map +0 -1
- package/dist/tasks/task-ops.js +0 -1741
- package/dist/tasks/task-ops.js.map +0 -1
- package/dist/tasks/update.js +0 -303
- package/dist/tasks/update.js.map +0 -1
- package/dist/templates/index.js +0 -10
- package/dist/templates/index.js.map +0 -1
- package/dist/templates/parser.js +0 -254
- package/dist/templates/parser.js.map +0 -1
- package/dist/ui/aliases.js +0 -153
- package/dist/ui/aliases.js.map +0 -1
- package/dist/ui/changelog.js +0 -184
- package/dist/ui/changelog.js.map +0 -1
- package/dist/ui/command-registry.js +0 -168
- package/dist/ui/command-registry.js.map +0 -1
- package/dist/ui/flags.js +0 -94
- package/dist/ui/flags.js.map +0 -1
- package/dist/ui/index.js +0 -24
- package/dist/ui/index.js.map +0 -1
- package/dist/upgrade.js +0 -1371
- package/dist/upgrade.js.map +0 -1
- package/dist/validation/chain-validation.js +0 -146
- package/dist/validation/chain-validation.js.map +0 -1
- package/dist/validation/compliance.js +0 -155
- package/dist/validation/compliance.js.map +0 -1
- package/dist/validation/docs-sync.js +0 -212
- package/dist/validation/docs-sync.js.map +0 -1
- package/dist/validation/doctor/checks.js +0 -1069
- package/dist/validation/doctor/checks.js.map +0 -1
- package/dist/validation/doctor/index.js +0 -9
- package/dist/validation/doctor/index.js.map +0 -1
- package/dist/validation/doctor/project-cache.js +0 -160
- package/dist/validation/doctor/project-cache.js.map +0 -1
- package/dist/validation/doctor/utils.js +0 -155
- package/dist/validation/doctor/utils.js.map +0 -1
- package/dist/validation/engine.js +0 -914
- package/dist/validation/engine.js.map +0 -1
- package/dist/validation/gap-check.js +0 -175
- package/dist/validation/gap-check.js.map +0 -1
- package/dist/validation/index.js +0 -40
- package/dist/validation/index.js.map +0 -1
- package/dist/validation/manifest.js +0 -237
- package/dist/validation/manifest.js.map +0 -1
- package/dist/validation/operation-gate-validators.js +0 -724
- package/dist/validation/operation-gate-validators.js.map +0 -1
- package/dist/validation/operation-verification-gates.js +0 -532
- package/dist/validation/operation-verification-gates.js.map +0 -1
- package/dist/validation/param-utils.js +0 -141
- package/dist/validation/param-utils.js.map +0 -1
- package/dist/validation/protocol-common.js +0 -300
- package/dist/validation/protocol-common.js.map +0 -1
- package/dist/validation/protocols/_shared.js +0 -82
- package/dist/validation/protocols/_shared.js.map +0 -1
- package/dist/validation/protocols/architecture-decision.js +0 -31
- package/dist/validation/protocols/architecture-decision.js.map +0 -1
- package/dist/validation/protocols/artifact-publish.js +0 -28
- package/dist/validation/protocols/artifact-publish.js.map +0 -1
- package/dist/validation/protocols/consensus.js +0 -41
- package/dist/validation/protocols/consensus.js.map +0 -1
- package/dist/validation/protocols/contribution.js +0 -27
- package/dist/validation/protocols/contribution.js.map +0 -1
- package/dist/validation/protocols/decomposition.js +0 -28
- package/dist/validation/protocols/decomposition.js.map +0 -1
- package/dist/validation/protocols/implementation.js +0 -24
- package/dist/validation/protocols/implementation.js.map +0 -1
- package/dist/validation/protocols/provenance.js +0 -29
- package/dist/validation/protocols/provenance.js.map +0 -1
- package/dist/validation/protocols/release.js +0 -29
- package/dist/validation/protocols/release.js.map +0 -1
- package/dist/validation/protocols/research.js +0 -24
- package/dist/validation/protocols/research.js.map +0 -1
- package/dist/validation/protocols/specification.js +0 -27
- package/dist/validation/protocols/specification.js.map +0 -1
- package/dist/validation/protocols/testing.js +0 -30
- package/dist/validation/protocols/testing.js.map +0 -1
- package/dist/validation/protocols/validation.js +0 -30
- package/dist/validation/protocols/validation.js.map +0 -1
- package/dist/validation/schema-integrity.js +0 -170
- package/dist/validation/schema-integrity.js.map +0 -1
- package/dist/validation/schema-validator.js +0 -176
- package/dist/validation/schema-validator.js.map +0 -1
- package/dist/validation/validate-ops.js +0 -937
- package/dist/validation/validate-ops.js.map +0 -1
- package/dist/validation/validation-rules.js +0 -226
- package/dist/validation/validation-rules.js.map +0 -1
- package/dist/validation/verification.js +0 -321
- package/dist/validation/verification.js.map +0 -1
- package/migrations/drizzle-nexus/20260412000001_t529-nexus-graph-tables/migration.sql +0 -49
|
@@ -1,148 +0,0 @@
|
|
|
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
|
-
import { createHash } from 'node:crypto';
|
|
19
|
-
import { brainPageEdges, brainPageNodes } from '../store/brain-schema.js';
|
|
20
|
-
import { getBrainDb } from '../store/brain-sqlite.js';
|
|
21
|
-
// ---------------------------------------------------------------------------
|
|
22
|
-
// Internal helpers
|
|
23
|
-
// ---------------------------------------------------------------------------
|
|
24
|
-
/**
|
|
25
|
-
* Return true when brain.autoCapture is enabled for the project.
|
|
26
|
-
* Delegates to the shared isAutoCaptureEnabled helper in handler-helpers.ts.
|
|
27
|
-
* Returns false on any error to keep graph writes safely disabled when the
|
|
28
|
-
* config or brain.db is unavailable.
|
|
29
|
-
*/
|
|
30
|
-
async function shouldAutoPopulateGraph(projectRoot) {
|
|
31
|
-
try {
|
|
32
|
-
const { isAutoCaptureEnabled } = await import('../hooks/handlers/handler-helpers.js');
|
|
33
|
-
return isAutoCaptureEnabled(projectRoot);
|
|
34
|
-
}
|
|
35
|
-
catch {
|
|
36
|
-
return false;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
// ---------------------------------------------------------------------------
|
|
40
|
-
// Public API
|
|
41
|
-
// ---------------------------------------------------------------------------
|
|
42
|
-
/**
|
|
43
|
-
* Upsert a graph node for a typed table entry.
|
|
44
|
-
*
|
|
45
|
-
* Uses INSERT OR REPLACE to handle both new and existing entries. If the
|
|
46
|
-
* node already exists (same id), its label, qualityScore, lastActivityAt,
|
|
47
|
-
* updatedAt, and metadataJson are refreshed while createdAt is preserved.
|
|
48
|
-
*
|
|
49
|
-
* The contentHash is derived from a SHA-256 prefix of the canonical content.
|
|
50
|
-
* External-reference nodes (task, session, epic) may pass an empty string for
|
|
51
|
-
* content; their hash will be null so duplicates are not rejected.
|
|
52
|
-
*
|
|
53
|
-
* This function is gated on brain.autoCapture. If the gate is disabled or any
|
|
54
|
-
* error occurs, it returns silently without throwing.
|
|
55
|
-
*
|
|
56
|
-
* @param projectRoot - Absolute path to the project root directory.
|
|
57
|
-
* @param nodeId - Stable composite ID in the form '<type>:<source-id>'.
|
|
58
|
-
* @param nodeType - Discriminated type from BRAIN_NODE_TYPES.
|
|
59
|
-
* @param label - Human-readable label (title, task ID, etc.).
|
|
60
|
-
* @param qualityScore - 0.0 (noise) to 1.0 (canonical).
|
|
61
|
-
* @param content - Canonical text used to derive the content hash.
|
|
62
|
-
* @param metadata - Optional type-specific metadata blob.
|
|
63
|
-
*
|
|
64
|
-
* @task T537
|
|
65
|
-
*/
|
|
66
|
-
export async function upsertGraphNode(projectRoot, nodeId, nodeType, label, qualityScore, content, metadata) {
|
|
67
|
-
try {
|
|
68
|
-
if (!(await shouldAutoPopulateGraph(projectRoot)))
|
|
69
|
-
return;
|
|
70
|
-
const db = await getBrainDb(projectRoot);
|
|
71
|
-
const now = new Date().toISOString().replace('T', ' ').slice(0, 19);
|
|
72
|
-
// Only compute a content hash for non-trivial content (external reference
|
|
73
|
-
// nodes like task/session/epic may have empty content).
|
|
74
|
-
const trimmed = content.trim().toLowerCase();
|
|
75
|
-
const contentHash = trimmed
|
|
76
|
-
? createHash('sha256').update(trimmed).digest('hex').substring(0, 16)
|
|
77
|
-
: null;
|
|
78
|
-
await db
|
|
79
|
-
.insert(brainPageNodes)
|
|
80
|
-
.values({
|
|
81
|
-
id: nodeId,
|
|
82
|
-
nodeType,
|
|
83
|
-
label: label.substring(0, 200),
|
|
84
|
-
qualityScore,
|
|
85
|
-
contentHash,
|
|
86
|
-
metadataJson: metadata ? JSON.stringify(metadata) : null,
|
|
87
|
-
lastActivityAt: now,
|
|
88
|
-
createdAt: now,
|
|
89
|
-
updatedAt: now,
|
|
90
|
-
})
|
|
91
|
-
.onConflictDoUpdate({
|
|
92
|
-
target: brainPageNodes.id,
|
|
93
|
-
set: {
|
|
94
|
-
label: label.substring(0, 200),
|
|
95
|
-
qualityScore,
|
|
96
|
-
lastActivityAt: now,
|
|
97
|
-
updatedAt: now,
|
|
98
|
-
metadataJson: metadata ? JSON.stringify(metadata) : null,
|
|
99
|
-
},
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
catch (err) {
|
|
103
|
-
// Log but never surface — this is a best-effort side effect.
|
|
104
|
-
console.warn('[brain-graph] upsertGraphNode failed:', err);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Add a directed, typed edge between two graph nodes (idempotent).
|
|
109
|
-
*
|
|
110
|
-
* The composite primary key (fromId, toId, edgeType) prevents duplicate edges
|
|
111
|
-
* of the same type. Conflicting rows are ignored so this is safe to call
|
|
112
|
-
* multiple times with the same arguments.
|
|
113
|
-
*
|
|
114
|
-
* This function is gated on brain.autoCapture. If the gate is disabled or any
|
|
115
|
-
* error occurs, it returns silently without throwing.
|
|
116
|
-
*
|
|
117
|
-
* @param projectRoot - Absolute path to the project root directory.
|
|
118
|
-
* @param fromId - Source node ID (brain_page_nodes.id).
|
|
119
|
-
* @param toId - Target node ID (brain_page_nodes.id or external nexus ID).
|
|
120
|
-
* @param edgeType - Typed relationship from BRAIN_EDGE_TYPES.
|
|
121
|
-
* @param weight - Edge confidence/weight (0.0–1.0). Defaults to 1.0.
|
|
122
|
-
* @param provenance - Human-readable note on why this edge was emitted.
|
|
123
|
-
*
|
|
124
|
-
* @task T537
|
|
125
|
-
*/
|
|
126
|
-
export async function addGraphEdge(projectRoot, fromId, toId, edgeType, weight = 1.0, provenance) {
|
|
127
|
-
try {
|
|
128
|
-
if (!(await shouldAutoPopulateGraph(projectRoot)))
|
|
129
|
-
return;
|
|
130
|
-
const db = await getBrainDb(projectRoot);
|
|
131
|
-
const now = new Date().toISOString().replace('T', ' ').slice(0, 19);
|
|
132
|
-
await db
|
|
133
|
-
.insert(brainPageEdges)
|
|
134
|
-
.values({
|
|
135
|
-
fromId,
|
|
136
|
-
toId,
|
|
137
|
-
edgeType,
|
|
138
|
-
weight,
|
|
139
|
-
provenance: provenance ?? null,
|
|
140
|
-
createdAt: now,
|
|
141
|
-
})
|
|
142
|
-
.onConflictDoNothing();
|
|
143
|
-
}
|
|
144
|
-
catch (err) {
|
|
145
|
-
console.warn('[brain-graph] addGraphEdge failed:', err);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
//# sourceMappingURL=graph-auto-populate.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"graph-auto-populate.js","sourceRoot":"","sources":["../../src/memory/graph-auto-populate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAMtD,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E;;;;;GAKG;AACH,KAAK,UAAU,uBAAuB,CAAC,WAAmB;IACxD,IAAI,CAAC;QACH,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,sCAAsC,CAAC,CAAC;QACtF,OAAO,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,WAAmB,EACnB,MAAc,EACd,QAAuB,EACvB,KAAa,EACb,YAAoB,EACpB,OAAe,EACf,QAAkC;IAElC,IAAI,CAAC;QACH,IAAI,CAAC,CAAC,MAAM,uBAAuB,CAAC,WAAW,CAAC,CAAC;YAAE,OAAO;QAE1D,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEpE,0EAA0E;QAC1E,wDAAwD;QACxD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC7C,MAAM,WAAW,GAAG,OAAO;YACzB,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;YACrE,CAAC,CAAC,IAAI,CAAC;QAET,MAAM,EAAE;aACL,MAAM,CAAC,cAAc,CAAC;aACtB,MAAM,CAAC;YACN,EAAE,EAAE,MAAM;YACV,QAAQ;YACR,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;YAC9B,YAAY;YACZ,WAAW;YACX,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;YACxD,cAAc,EAAE,GAAG;YACnB,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;SACf,CAAC;aACD,kBAAkB,CAAC;YAClB,MAAM,EAAE,cAAc,CAAC,EAAE;YACzB,GAAG,EAAE;gBACH,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;gBAC9B,YAAY;gBACZ,cAAc,EAAE,GAAG;gBACnB,SAAS,EAAE,GAAG;gBACd,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;aACzD;SACF,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,6DAA6D;QAC7D,OAAO,CAAC,IAAI,CAAC,uCAAuC,EAAE,GAAG,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,WAAmB,EACnB,MAAc,EACd,IAAY,EACZ,QAAuB,EACvB,MAAM,GAAG,GAAG,EACZ,UAAmB;IAEnB,IAAI,CAAC;QACH,IAAI,CAAC,CAAC,MAAM,uBAAuB,CAAC,WAAW,CAAC,CAAC;YAAE,OAAO;QAE1D,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEpE,MAAM,EAAE;aACL,MAAM,CAAC,cAAc,CAAC;aACtB,MAAM,CAAC;YACN,MAAM;YACN,IAAI;YACJ,QAAQ;YACR,MAAM;YACN,UAAU,EAAE,UAAU,IAAI,IAAI;YAC9B,SAAS,EAAE,GAAG;SACf,CAAC;aACD,mBAAmB,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,oCAAoC,EAAE,GAAG,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC"}
|
|
@@ -1,519 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Graph Memory Bridge — connects brain.db memory nodes to nexus.db code nodes.
|
|
3
|
-
*
|
|
4
|
-
* Scans brain observations, decisions, patterns, and learnings for entity
|
|
5
|
-
* references (file paths, function names, symbol names) and matches them
|
|
6
|
-
* against nexus_nodes in the global nexus.db. Matching pairs are linked via
|
|
7
|
-
* `code_reference` edges written to brain_page_edges in brain.db.
|
|
8
|
-
*
|
|
9
|
-
* Design constraints:
|
|
10
|
-
* - brain.db is read-write (edges written here).
|
|
11
|
-
* - nexus.db is READ-ONLY from this module — never mutated.
|
|
12
|
-
* - All operations are BEST-EFFORT; failures never surface to callers.
|
|
13
|
-
* - Cross-DB join is handled in-process: read nexus nodes, then write brain edges.
|
|
14
|
-
* - Entity matching: exact match on filePath or symbol name; fuzzy match on
|
|
15
|
-
* symbol name (case-insensitive substring, minimum 4 chars).
|
|
16
|
-
*
|
|
17
|
-
* @task graph-memory-bridge
|
|
18
|
-
* @epic T523
|
|
19
|
-
*/
|
|
20
|
-
import { brainPageEdges, brainPageNodes } from '../store/brain-schema.js';
|
|
21
|
-
import { getBrainDb, getBrainNativeDb } from '../store/brain-sqlite.js';
|
|
22
|
-
import { getNexusDb, getNexusNativeDb } from '../store/nexus-sqlite.js';
|
|
23
|
-
import { typedAll } from '../store/typed-query.js';
|
|
24
|
-
// ---------------------------------------------------------------------------
|
|
25
|
-
// Internal helpers
|
|
26
|
-
// ---------------------------------------------------------------------------
|
|
27
|
-
/**
|
|
28
|
-
* Regex patterns to extract entity references from text.
|
|
29
|
-
*
|
|
30
|
-
* Matches:
|
|
31
|
-
* - File paths: relative paths ending in known source extensions
|
|
32
|
-
* - Function/symbol names: camelCase, PascalCase, snake_case identifiers (≥4 chars)
|
|
33
|
-
*/
|
|
34
|
-
const FILE_PATH_PATTERN = /(?:^|\s|['"`(])([a-zA-Z0-9_\-./]+\.(?:ts|tsx|js|jsx|rs|go|py|mjs|cjs))(?:$|\s|['"`)])/g;
|
|
35
|
-
const SYMBOL_PATTERN = /\b([a-zA-Z_][a-zA-Z0-9_]*(?:[A-Z][a-zA-Z0-9_]*)+|[a-zA-Z_]{4,}[a-zA-Z0-9_]*)\b/g;
|
|
36
|
-
/** Common stop-words to skip in symbol extraction (short-circuits false positives). */
|
|
37
|
-
const SYMBOL_STOP_WORDS = new Set([
|
|
38
|
-
'true',
|
|
39
|
-
'false',
|
|
40
|
-
'null',
|
|
41
|
-
'undefined',
|
|
42
|
-
'const',
|
|
43
|
-
'async',
|
|
44
|
-
'await',
|
|
45
|
-
'return',
|
|
46
|
-
'export',
|
|
47
|
-
'import',
|
|
48
|
-
'from',
|
|
49
|
-
'type',
|
|
50
|
-
'interface',
|
|
51
|
-
'function',
|
|
52
|
-
'class',
|
|
53
|
-
'this',
|
|
54
|
-
'super',
|
|
55
|
-
'extends',
|
|
56
|
-
'implements',
|
|
57
|
-
'with',
|
|
58
|
-
'that',
|
|
59
|
-
'then',
|
|
60
|
-
'when',
|
|
61
|
-
'have',
|
|
62
|
-
'been',
|
|
63
|
-
'will',
|
|
64
|
-
'should',
|
|
65
|
-
'could',
|
|
66
|
-
'would',
|
|
67
|
-
'error',
|
|
68
|
-
'result',
|
|
69
|
-
'value',
|
|
70
|
-
'data',
|
|
71
|
-
'info',
|
|
72
|
-
'note',
|
|
73
|
-
'todo',
|
|
74
|
-
'done',
|
|
75
|
-
'fail',
|
|
76
|
-
'pass',
|
|
77
|
-
]);
|
|
78
|
-
/**
|
|
79
|
-
* Extract file paths from text.
|
|
80
|
-
*/
|
|
81
|
-
function extractFilePaths(text) {
|
|
82
|
-
const paths = new Set();
|
|
83
|
-
for (const m of text.matchAll(FILE_PATH_PATTERN)) {
|
|
84
|
-
const p = m[1];
|
|
85
|
-
if (p)
|
|
86
|
-
paths.add(p);
|
|
87
|
-
}
|
|
88
|
-
return Array.from(paths);
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Extract potential symbol names from text (camelCase / PascalCase / snake_case ≥ 4 chars).
|
|
92
|
-
*/
|
|
93
|
-
function extractSymbolCandidates(text) {
|
|
94
|
-
const syms = new Set();
|
|
95
|
-
for (const m of text.matchAll(SYMBOL_PATTERN)) {
|
|
96
|
-
const s = m[1];
|
|
97
|
-
if (s && s.length >= 4 && !SYMBOL_STOP_WORDS.has(s.toLowerCase())) {
|
|
98
|
-
syms.add(s);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
return Array.from(syms);
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Build a plain-text corpus from a brain_page_nodes metadata_json blob.
|
|
105
|
-
* Returns empty string if metadata is absent or malformed.
|
|
106
|
-
*/
|
|
107
|
-
function metadataText(metaJson) {
|
|
108
|
-
if (!metaJson)
|
|
109
|
-
return '';
|
|
110
|
-
try {
|
|
111
|
-
const obj = JSON.parse(metaJson);
|
|
112
|
-
return Object.values(obj)
|
|
113
|
-
.filter((v) => typeof v === 'string')
|
|
114
|
-
.join(' ');
|
|
115
|
-
}
|
|
116
|
-
catch {
|
|
117
|
-
return '';
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
// ---------------------------------------------------------------------------
|
|
121
|
-
// linkMemoryToCode — manual single-link creation
|
|
122
|
-
// ---------------------------------------------------------------------------
|
|
123
|
-
/**
|
|
124
|
-
* Create a `code_reference` edge from a brain memory node to a nexus code node.
|
|
125
|
-
*
|
|
126
|
-
* Writes to brain_page_edges (brain.db). The nexus node must already exist in
|
|
127
|
-
* nexus.db but is never mutated. The brain node is upserted as a stub if it
|
|
128
|
-
* does not yet exist in brain_page_nodes.
|
|
129
|
-
*
|
|
130
|
-
* This function is idempotent — calling it multiple times with the same
|
|
131
|
-
* (memoryId, codeSymbol) pair is safe (the composite PK prevents duplicates).
|
|
132
|
-
*
|
|
133
|
-
* @param projectRoot - Absolute path to project root (locates brain.db)
|
|
134
|
-
* @param memoryId - Brain memory node ID (format: '<type>:<source-id>')
|
|
135
|
-
* @param codeSymbol - Nexus node ID (format: '<filePath>::<name>' or '<filePath>')
|
|
136
|
-
* @returns True if the edge was created or already existed; false on error
|
|
137
|
-
*/
|
|
138
|
-
export async function linkMemoryToCode(projectRoot, memoryId, codeSymbol) {
|
|
139
|
-
try {
|
|
140
|
-
const brainDb = await getBrainDb(projectRoot);
|
|
141
|
-
// Ensure nexus.db is initialized so we can verify the target node exists
|
|
142
|
-
await getNexusDb();
|
|
143
|
-
const nexusNative = getNexusNativeDb();
|
|
144
|
-
if (!nexusNative)
|
|
145
|
-
return false;
|
|
146
|
-
// Verify the nexus node exists (read-only check)
|
|
147
|
-
const nexusNode = nexusNative
|
|
148
|
-
.prepare('SELECT id, label, file_path, kind FROM nexus_nodes WHERE id = ? LIMIT 1')
|
|
149
|
-
.get(codeSymbol);
|
|
150
|
-
if (!nexusNode)
|
|
151
|
-
return false;
|
|
152
|
-
const now = new Date().toISOString().replace('T', ' ').slice(0, 19);
|
|
153
|
-
// Upsert the memory node stub in brain_page_nodes so the edge FK is satisfied
|
|
154
|
-
// (the real node may already exist from graph-auto-populate; onConflictDoUpdate
|
|
155
|
-
// only refreshes lastActivityAt if the node already exists).
|
|
156
|
-
const idParts = memoryId.split(':');
|
|
157
|
-
const nodeType = idParts[0] ?? 'observation';
|
|
158
|
-
await brainDb
|
|
159
|
-
.insert(brainPageNodes)
|
|
160
|
-
.values({
|
|
161
|
-
id: memoryId,
|
|
162
|
-
nodeType,
|
|
163
|
-
label: memoryId,
|
|
164
|
-
qualityScore: 0.5,
|
|
165
|
-
contentHash: null,
|
|
166
|
-
lastActivityAt: now,
|
|
167
|
-
createdAt: now,
|
|
168
|
-
updatedAt: now,
|
|
169
|
-
})
|
|
170
|
-
.onConflictDoUpdate({
|
|
171
|
-
target: brainPageNodes.id,
|
|
172
|
-
set: { lastActivityAt: now, updatedAt: now },
|
|
173
|
-
});
|
|
174
|
-
// Write the code_reference edge
|
|
175
|
-
// Cast required: drizzle's enum type may not yet include 'code_reference'
|
|
176
|
-
// in the compiled .d.ts (the schema source was updated but not yet built).
|
|
177
|
-
await brainDb
|
|
178
|
-
.insert(brainPageEdges)
|
|
179
|
-
.values({
|
|
180
|
-
fromId: memoryId,
|
|
181
|
-
toId: codeSymbol,
|
|
182
|
-
edgeType: 'code_reference',
|
|
183
|
-
weight: 1.0,
|
|
184
|
-
provenance: 'manual',
|
|
185
|
-
createdAt: now,
|
|
186
|
-
})
|
|
187
|
-
.onConflictDoNothing();
|
|
188
|
-
return true;
|
|
189
|
-
}
|
|
190
|
-
catch (err) {
|
|
191
|
-
console.warn('[graph-memory-bridge] linkMemoryToCode failed:', err);
|
|
192
|
-
return false;
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
// ---------------------------------------------------------------------------
|
|
196
|
-
// autoLinkMemories — scan brain nodes and link to nexus matches
|
|
197
|
-
// ---------------------------------------------------------------------------
|
|
198
|
-
/**
|
|
199
|
-
* Scan brain memory nodes for entity references and match them against nexus.
|
|
200
|
-
*
|
|
201
|
-
* For each brain node, extracts:
|
|
202
|
-
* - File path references → matched against nexus_nodes.file_path (exact)
|
|
203
|
-
* - Symbol name references → matched against nexus_nodes.name (exact, then fuzzy)
|
|
204
|
-
*
|
|
205
|
-
* Matching edges are written to brain_page_edges with edgeType='code_reference'.
|
|
206
|
-
* This function is idempotent — existing edges are skipped.
|
|
207
|
-
*
|
|
208
|
-
* Should be called from runConsolidation() as a best-effort step. All errors
|
|
209
|
-
* are caught and logged; never throws.
|
|
210
|
-
*
|
|
211
|
-
* @param projectRoot - Absolute path to project root (locates brain.db)
|
|
212
|
-
* @returns Summary of scanned entries and created links
|
|
213
|
-
*/
|
|
214
|
-
export async function autoLinkMemories(projectRoot) {
|
|
215
|
-
const result = { scanned: 0, linked: 0, alreadyLinked: 0, links: [] };
|
|
216
|
-
try {
|
|
217
|
-
await getBrainDb(projectRoot);
|
|
218
|
-
const brainNative = getBrainNativeDb();
|
|
219
|
-
await getNexusDb();
|
|
220
|
-
const nexusNative = getNexusNativeDb();
|
|
221
|
-
if (!brainNative || !nexusNative)
|
|
222
|
-
return result;
|
|
223
|
-
// Load all brain page nodes that are memory entity types
|
|
224
|
-
const brainNodes = typedAll(brainNative.prepare(`
|
|
225
|
-
SELECT id, node_type, label, quality_score, metadata_json
|
|
226
|
-
FROM brain_page_nodes
|
|
227
|
-
WHERE node_type IN ('observation', 'decision', 'pattern', 'learning')
|
|
228
|
-
AND quality_score >= 0.3
|
|
229
|
-
ORDER BY quality_score DESC
|
|
230
|
-
LIMIT 500
|
|
231
|
-
`));
|
|
232
|
-
result.scanned = brainNodes.length;
|
|
233
|
-
if (brainNodes.length === 0)
|
|
234
|
-
return result;
|
|
235
|
-
// Load nexus nodes into memory (indexed by name and filePath for fast lookup).
|
|
236
|
-
// We load only essential columns to keep memory usage low.
|
|
237
|
-
const nexusNodes = typedAll(nexusNative.prepare(`
|
|
238
|
-
SELECT id, label, name, file_path, kind
|
|
239
|
-
FROM nexus_nodes
|
|
240
|
-
WHERE kind NOT IN ('community', 'process', 'folder')
|
|
241
|
-
LIMIT 20000
|
|
242
|
-
`));
|
|
243
|
-
if (nexusNodes.length === 0)
|
|
244
|
-
return result;
|
|
245
|
-
// Build lookup indexes
|
|
246
|
-
const byFilePath = new Map();
|
|
247
|
-
const byNameExact = new Map();
|
|
248
|
-
const byNameLower = new Map();
|
|
249
|
-
for (const node of nexusNodes) {
|
|
250
|
-
if (node.file_path) {
|
|
251
|
-
const fp = node.file_path.toLowerCase();
|
|
252
|
-
const existing = byFilePath.get(fp) ?? [];
|
|
253
|
-
existing.push(node);
|
|
254
|
-
byFilePath.set(fp, existing);
|
|
255
|
-
}
|
|
256
|
-
if (node.name) {
|
|
257
|
-
// Exact (case-sensitive)
|
|
258
|
-
const exact = byNameExact.get(node.name) ?? [];
|
|
259
|
-
exact.push(node);
|
|
260
|
-
byNameExact.set(node.name, exact);
|
|
261
|
-
// Lowercase for fuzzy
|
|
262
|
-
const lower = node.name.toLowerCase();
|
|
263
|
-
const fuzzy = byNameLower.get(lower) ?? [];
|
|
264
|
-
fuzzy.push(node);
|
|
265
|
-
byNameLower.set(lower, fuzzy);
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
const now = new Date().toISOString().replace('T', ' ').slice(0, 19);
|
|
269
|
-
// Load existing code_reference edges to avoid duplicates
|
|
270
|
-
const existingEdges = new Set();
|
|
271
|
-
const rawEdges = typedAll(brainNative.prepare(`
|
|
272
|
-
SELECT from_id, to_id FROM brain_page_edges WHERE edge_type = 'code_reference'
|
|
273
|
-
`));
|
|
274
|
-
for (const e of rawEdges) {
|
|
275
|
-
existingEdges.add(`${e.from_id}|${e.to_id}`);
|
|
276
|
-
}
|
|
277
|
-
// Process each brain node
|
|
278
|
-
for (const brainNode of brainNodes) {
|
|
279
|
-
const corpus = `${brainNode.label} ${metadataText(brainNode.metadata_json)}`;
|
|
280
|
-
const filePaths = extractFilePaths(corpus);
|
|
281
|
-
const symbolCandidates = extractSymbolCandidates(corpus);
|
|
282
|
-
const candidates = [];
|
|
283
|
-
// 1. Exact file path matches
|
|
284
|
-
for (const fp of filePaths) {
|
|
285
|
-
const matches = byFilePath.get(fp.toLowerCase());
|
|
286
|
-
if (matches) {
|
|
287
|
-
for (const n of matches) {
|
|
288
|
-
candidates.push({ nexusNode: n, strategy: 'exact-file', weight: 1.0 });
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
// 2. Exact symbol name matches
|
|
293
|
-
for (const sym of symbolCandidates) {
|
|
294
|
-
const exactMatches = byNameExact.get(sym);
|
|
295
|
-
if (exactMatches) {
|
|
296
|
-
for (const n of exactMatches) {
|
|
297
|
-
candidates.push({ nexusNode: n, strategy: 'exact-symbol', weight: 1.0 });
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
// 3. Fuzzy (case-insensitive) symbol matches — only for symbols not already exact-matched
|
|
302
|
-
const exactSymSet = new Set(symbolCandidates.flatMap((s) => byNameExact.get(s) ?? []).map((n) => n.id));
|
|
303
|
-
for (const sym of symbolCandidates) {
|
|
304
|
-
if (sym.length < 5)
|
|
305
|
-
continue; // skip very short symbols for fuzzy
|
|
306
|
-
const lower = sym.toLowerCase();
|
|
307
|
-
const fuzzyMatches = byNameLower.get(lower);
|
|
308
|
-
if (fuzzyMatches) {
|
|
309
|
-
for (const n of fuzzyMatches) {
|
|
310
|
-
if (!exactSymSet.has(n.id)) {
|
|
311
|
-
candidates.push({ nexusNode: n, strategy: 'fuzzy-symbol', weight: 0.6 });
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
// Deduplicate candidates (keep highest weight per nexus node)
|
|
317
|
-
const bestByNexusId = new Map();
|
|
318
|
-
for (const c of candidates) {
|
|
319
|
-
const existing = bestByNexusId.get(c.nexusNode.id);
|
|
320
|
-
if (!existing || c.weight > existing.weight) {
|
|
321
|
-
bestByNexusId.set(c.nexusNode.id, c);
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
// Write edges (cap at 10 per brain node to avoid noise)
|
|
325
|
-
const sortedCandidates = Array.from(bestByNexusId.values())
|
|
326
|
-
.sort((a, b) => b.weight - a.weight)
|
|
327
|
-
.slice(0, 10);
|
|
328
|
-
for (const { nexusNode, strategy, weight } of sortedCandidates) {
|
|
329
|
-
const edgeKey = `${brainNode.id}|${nexusNode.id}`;
|
|
330
|
-
if (existingEdges.has(edgeKey)) {
|
|
331
|
-
result.alreadyLinked++;
|
|
332
|
-
continue;
|
|
333
|
-
}
|
|
334
|
-
// Upsert brain node stub (idempotent — real node may already exist)
|
|
335
|
-
brainNative
|
|
336
|
-
.prepare(`
|
|
337
|
-
INSERT OR IGNORE INTO brain_page_nodes
|
|
338
|
-
(id, node_type, label, quality_score, content_hash, metadata_json, last_activity_at, created_at, updated_at)
|
|
339
|
-
VALUES (?, ?, ?, ?, NULL, NULL, ?, ?, ?)
|
|
340
|
-
`)
|
|
341
|
-
.run(brainNode.id, brainNode.node_type, brainNode.label, brainNode.quality_score, now, now, now);
|
|
342
|
-
// Write edge
|
|
343
|
-
try {
|
|
344
|
-
brainNative
|
|
345
|
-
.prepare(`
|
|
346
|
-
INSERT OR IGNORE INTO brain_page_edges
|
|
347
|
-
(from_id, to_id, edge_type, weight, provenance, created_at)
|
|
348
|
-
VALUES (?, ?, 'code_reference', ?, ?, ?)
|
|
349
|
-
`)
|
|
350
|
-
.run(brainNode.id, nexusNode.id, weight, `auto:${strategy}`, now);
|
|
351
|
-
existingEdges.add(edgeKey);
|
|
352
|
-
result.linked++;
|
|
353
|
-
result.links.push({
|
|
354
|
-
brainNodeId: brainNode.id,
|
|
355
|
-
nexusNodeId: nexusNode.id,
|
|
356
|
-
nexusLabel: nexusNode.label,
|
|
357
|
-
matchStrategy: strategy,
|
|
358
|
-
weight,
|
|
359
|
-
});
|
|
360
|
-
}
|
|
361
|
-
catch (edgeErr) {
|
|
362
|
-
console.warn('[graph-memory-bridge] edge insert failed:', edgeErr);
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
}
|
|
367
|
-
catch (err) {
|
|
368
|
-
console.warn('[graph-memory-bridge] autoLinkMemories failed:', err);
|
|
369
|
-
}
|
|
370
|
-
return result;
|
|
371
|
-
}
|
|
372
|
-
// ---------------------------------------------------------------------------
|
|
373
|
-
// queryMemoriesForCode — find memories related to a code symbol
|
|
374
|
-
// ---------------------------------------------------------------------------
|
|
375
|
-
/**
|
|
376
|
-
* Given a code symbol (nexus node ID), find related brain memory nodes.
|
|
377
|
-
*
|
|
378
|
-
* Traverses `code_reference` edges in brain_page_edges where the target is
|
|
379
|
-
* the given nexus node ID. Returns the brain memory nodes with edge metadata.
|
|
380
|
-
*
|
|
381
|
-
* @param projectRoot - Absolute path to project root (locates brain.db)
|
|
382
|
-
* @param symbol - Nexus node ID (format: '<filePath>::<name>' or '<filePath>')
|
|
383
|
-
* @returns Memory nodes that reference the given code symbol
|
|
384
|
-
*/
|
|
385
|
-
export async function queryMemoriesForCode(projectRoot, symbol) {
|
|
386
|
-
const result = { nexusNodeId: symbol, memories: [] };
|
|
387
|
-
try {
|
|
388
|
-
await getBrainDb(projectRoot);
|
|
389
|
-
const brainNative = getBrainNativeDb();
|
|
390
|
-
if (!brainNative)
|
|
391
|
-
return result;
|
|
392
|
-
const rows = typedAll(brainNative.prepare(`
|
|
393
|
-
SELECT n.id, n.node_type, n.label, n.quality_score,
|
|
394
|
-
e.weight, e.provenance
|
|
395
|
-
FROM brain_page_edges e
|
|
396
|
-
JOIN brain_page_nodes n ON n.id = e.from_id
|
|
397
|
-
WHERE e.to_id = ?
|
|
398
|
-
AND e.edge_type = 'code_reference'
|
|
399
|
-
ORDER BY e.weight DESC, n.quality_score DESC
|
|
400
|
-
LIMIT 50
|
|
401
|
-
`), symbol);
|
|
402
|
-
result.memories = rows.map((r) => ({
|
|
403
|
-
nodeId: r.id,
|
|
404
|
-
nodeType: r.node_type,
|
|
405
|
-
label: r.label,
|
|
406
|
-
qualityScore: r.quality_score,
|
|
407
|
-
edgeWeight: r.weight,
|
|
408
|
-
matchStrategy: r.provenance?.replace('auto:', '') ?? 'manual',
|
|
409
|
-
}));
|
|
410
|
-
}
|
|
411
|
-
catch (err) {
|
|
412
|
-
console.warn('[graph-memory-bridge] queryMemoriesForCode failed:', err);
|
|
413
|
-
}
|
|
414
|
-
return result;
|
|
415
|
-
}
|
|
416
|
-
// ---------------------------------------------------------------------------
|
|
417
|
-
// queryCodeForMemory — find code nodes related to a memory entry
|
|
418
|
-
// ---------------------------------------------------------------------------
|
|
419
|
-
/**
|
|
420
|
-
* Given a brain memory node ID, find related nexus code nodes.
|
|
421
|
-
*
|
|
422
|
-
* Traverses `code_reference` edges in brain_page_edges from the given memory
|
|
423
|
-
* node ID, then fetches the corresponding nexus node metadata.
|
|
424
|
-
*
|
|
425
|
-
* @param projectRoot - Absolute path to project root (locates brain.db)
|
|
426
|
-
* @param memoryId - Brain memory node ID (format: '<type>:<source-id>')
|
|
427
|
-
* @returns Nexus code nodes referenced by the given memory entry
|
|
428
|
-
*/
|
|
429
|
-
export async function queryCodeForMemory(projectRoot, memoryId) {
|
|
430
|
-
const result = { brainNodeId: memoryId, codeNodes: [] };
|
|
431
|
-
try {
|
|
432
|
-
await getBrainDb(projectRoot);
|
|
433
|
-
const brainNative = getBrainNativeDb();
|
|
434
|
-
await getNexusDb();
|
|
435
|
-
const nexusNative = getNexusNativeDb();
|
|
436
|
-
if (!brainNative || !nexusNative)
|
|
437
|
-
return result;
|
|
438
|
-
const brainEdges = typedAll(brainNative.prepare(`
|
|
439
|
-
SELECT to_id, weight, provenance
|
|
440
|
-
FROM brain_page_edges
|
|
441
|
-
WHERE from_id = ?
|
|
442
|
-
AND edge_type = 'code_reference'
|
|
443
|
-
ORDER BY weight DESC
|
|
444
|
-
LIMIT 50
|
|
445
|
-
`), memoryId);
|
|
446
|
-
if (brainEdges.length === 0)
|
|
447
|
-
return result;
|
|
448
|
-
// Fetch nexus node metadata for each target (read-only)
|
|
449
|
-
for (const edge of brainEdges) {
|
|
450
|
-
const nexusNode = nexusNative
|
|
451
|
-
.prepare('SELECT id, label, file_path, kind FROM nexus_nodes WHERE id = ? LIMIT 1')
|
|
452
|
-
.get(edge.to_id);
|
|
453
|
-
if (nexusNode) {
|
|
454
|
-
result.codeNodes.push({
|
|
455
|
-
nexusNodeId: nexusNode.id,
|
|
456
|
-
label: nexusNode.label,
|
|
457
|
-
filePath: nexusNode.file_path,
|
|
458
|
-
kind: nexusNode.kind,
|
|
459
|
-
edgeWeight: edge.weight,
|
|
460
|
-
matchStrategy: edge.provenance?.replace('auto:', '') ?? 'manual',
|
|
461
|
-
});
|
|
462
|
-
}
|
|
463
|
-
}
|
|
464
|
-
}
|
|
465
|
-
catch (err) {
|
|
466
|
-
console.warn('[graph-memory-bridge] queryCodeForMemory failed:', err);
|
|
467
|
-
}
|
|
468
|
-
return result;
|
|
469
|
-
}
|
|
470
|
-
/**
|
|
471
|
-
* Return all `code_reference` edges from brain.db enriched with nexus metadata.
|
|
472
|
-
*
|
|
473
|
-
* Used by `cleo memory code-links` CLI command.
|
|
474
|
-
*
|
|
475
|
-
* @param projectRoot - Absolute path to project root (locates brain.db)
|
|
476
|
-
* @param limit - Maximum number of entries to return (default 100)
|
|
477
|
-
* @returns Array of code link entries sorted by weight descending
|
|
478
|
-
*/
|
|
479
|
-
export async function listCodeLinks(projectRoot, limit = 100) {
|
|
480
|
-
const entries = [];
|
|
481
|
-
try {
|
|
482
|
-
await getBrainDb(projectRoot);
|
|
483
|
-
const brainNative = getBrainNativeDb();
|
|
484
|
-
await getNexusDb();
|
|
485
|
-
const nexusNative = getNexusNativeDb();
|
|
486
|
-
if (!brainNative || !nexusNative)
|
|
487
|
-
return entries;
|
|
488
|
-
const rows = typedAll(brainNative.prepare(`
|
|
489
|
-
SELECT e.from_id, e.to_id, e.weight, e.created_at,
|
|
490
|
-
n.node_type, n.label
|
|
491
|
-
FROM brain_page_edges e
|
|
492
|
-
JOIN brain_page_nodes n ON n.id = e.from_id
|
|
493
|
-
WHERE e.edge_type = 'code_reference'
|
|
494
|
-
ORDER BY e.weight DESC, e.created_at DESC
|
|
495
|
-
LIMIT ?
|
|
496
|
-
`), limit);
|
|
497
|
-
for (const row of rows) {
|
|
498
|
-
const nexusNode = nexusNative
|
|
499
|
-
.prepare('SELECT id, label, file_path, kind FROM nexus_nodes WHERE id = ? LIMIT 1')
|
|
500
|
-
.get(row.to_id);
|
|
501
|
-
entries.push({
|
|
502
|
-
brainNodeId: row.from_id,
|
|
503
|
-
brainNodeType: row.node_type,
|
|
504
|
-
brainNodeLabel: row.label,
|
|
505
|
-
nexusNodeId: row.to_id,
|
|
506
|
-
nexusNodeLabel: nexusNode?.label ?? row.to_id,
|
|
507
|
-
filePath: nexusNode?.file_path ?? null,
|
|
508
|
-
kind: nexusNode?.kind ?? 'unknown',
|
|
509
|
-
weight: row.weight,
|
|
510
|
-
createdAt: row.created_at,
|
|
511
|
-
});
|
|
512
|
-
}
|
|
513
|
-
}
|
|
514
|
-
catch (err) {
|
|
515
|
-
console.warn('[graph-memory-bridge] listCodeLinks failed:', err);
|
|
516
|
-
}
|
|
517
|
-
return entries;
|
|
518
|
-
}
|
|
519
|
-
//# sourceMappingURL=graph-memory-bridge.js.map
|