@cleocode/core 2026.4.31 → 2026.4.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/adapter-registry.js +64 -0
- package/dist/adapters/adapter-registry.js.map +1 -0
- package/dist/adapters/discovery.js +83 -0
- package/dist/adapters/discovery.js.map +1 -0
- package/dist/adapters/index.js +9 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/manager.js +260 -0
- package/dist/adapters/manager.js.map +1 -0
- package/dist/admin/export-tasks.js +171 -0
- package/dist/admin/export-tasks.js.map +1 -0
- package/dist/admin/export.js +103 -0
- package/dist/admin/export.js.map +1 -0
- package/dist/admin/help.js +106 -0
- package/dist/admin/help.js.map +1 -0
- package/dist/admin/import-tasks.js +182 -0
- package/dist/admin/import-tasks.js.map +1 -0
- package/dist/admin/import.js +129 -0
- package/dist/admin/import.js.map +1 -0
- package/dist/admin/index.js +13 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/adrs/find.js +134 -0
- package/dist/adrs/find.js.map +1 -0
- package/dist/adrs/index.js +15 -0
- package/dist/adrs/index.js.map +1 -0
- package/dist/adrs/link-pipeline.js +160 -0
- package/dist/adrs/link-pipeline.js.map +1 -0
- package/dist/adrs/list.js +43 -0
- package/dist/adrs/list.js.map +1 -0
- package/dist/adrs/parse.js +51 -0
- package/dist/adrs/parse.js.map +1 -0
- package/dist/adrs/show.js +22 -0
- package/dist/adrs/show.js.map +1 -0
- package/dist/adrs/sync.js +232 -0
- package/dist/adrs/sync.js.map +1 -0
- package/dist/adrs/types.js +9 -0
- package/dist/adrs/types.js.map +1 -0
- package/dist/adrs/validate.js +57 -0
- package/dist/adrs/validate.js.map +1 -0
- package/dist/agents/agent-registry.js +288 -0
- package/dist/agents/agent-registry.js.map +1 -0
- package/dist/agents/agent-schema.js +82 -0
- package/dist/agents/agent-schema.js.map +1 -0
- package/dist/agents/capacity.js +116 -0
- package/dist/agents/capacity.js.map +1 -0
- package/dist/agents/execution-learning.js +474 -0
- package/dist/agents/execution-learning.js.map +1 -0
- package/dist/agents/health-monitor.js +217 -0
- package/dist/agents/health-monitor.js.map +1 -0
- package/dist/agents/index.js +29 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/registry.js +314 -0
- package/dist/agents/registry.js.map +1 -0
- package/dist/agents/retry.js +215 -0
- package/dist/agents/retry.js.map +1 -0
- package/dist/audit-prune.js +94 -0
- package/dist/audit-prune.js.map +1 -0
- package/dist/audit.js +68 -0
- package/dist/audit.js.map +1 -0
- package/dist/backfill/index.js +229 -0
- package/dist/backfill/index.js.map +1 -0
- package/dist/bootstrap.js +435 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/caamp/adapter.js +259 -0
- package/dist/caamp/adapter.js.map +1 -0
- package/dist/caamp/capability-check.js +38 -0
- package/dist/caamp/capability-check.js.map +1 -0
- package/dist/caamp/index.js +21 -0
- package/dist/caamp/index.js.map +1 -0
- package/dist/caamp-init.js +16 -0
- package/dist/caamp-init.js.map +1 -0
- package/dist/cleo.js +322 -0
- package/dist/cleo.js.map +1 -0
- package/dist/code/index.js +14 -0
- package/dist/code/index.js.map +1 -0
- package/dist/code/outline.js +165 -0
- package/dist/code/outline.js.map +1 -0
- package/dist/code/parser.js +420 -0
- package/dist/code/parser.js.map +1 -0
- package/dist/code/search.js +135 -0
- package/dist/code/search.js.map +1 -0
- package/dist/code/unfold.js +155 -0
- package/dist/code/unfold.js.map +1 -0
- package/dist/codebase-map/analyzers/architecture.js +129 -0
- package/dist/codebase-map/analyzers/architecture.js.map +1 -0
- package/dist/codebase-map/analyzers/concerns.js +122 -0
- package/dist/codebase-map/analyzers/concerns.js.map +1 -0
- package/dist/codebase-map/analyzers/conventions.js +149 -0
- package/dist/codebase-map/analyzers/conventions.js.map +1 -0
- package/dist/codebase-map/analyzers/integrations.js +108 -0
- package/dist/codebase-map/analyzers/integrations.js.map +1 -0
- package/dist/codebase-map/analyzers/stack.js +117 -0
- package/dist/codebase-map/analyzers/stack.js.map +1 -0
- package/dist/codebase-map/analyzers/structure.js +137 -0
- package/dist/codebase-map/analyzers/structure.js.map +1 -0
- package/dist/codebase-map/analyzers/testing.js +118 -0
- package/dist/codebase-map/analyzers/testing.js.map +1 -0
- package/dist/codebase-map/index.js +57 -0
- package/dist/codebase-map/index.js.map +1 -0
- package/dist/codebase-map/store.js +122 -0
- package/dist/codebase-map/store.js.map +1 -0
- package/dist/codebase-map/summary.js +152 -0
- package/dist/codebase-map/summary.js.map +1 -0
- package/dist/compliance/index.js +288 -0
- package/dist/compliance/index.js.map +1 -0
- package/dist/compliance/protocol-enforcement.js +332 -0
- package/dist/compliance/protocol-enforcement.js.map +1 -0
- package/dist/compliance/protocol-rules.js +786 -0
- package/dist/compliance/protocol-rules.js.map +1 -0
- package/dist/compliance/protocol-types.js +79 -0
- package/dist/compliance/protocol-types.js.map +1 -0
- package/dist/compliance/store.js +53 -0
- package/dist/compliance/store.js.map +1 -0
- package/dist/conduit/conduit-client.js +107 -0
- package/dist/conduit/conduit-client.js.map +1 -0
- package/dist/conduit/factory.js +52 -0
- package/dist/conduit/factory.js.map +1 -0
- package/dist/conduit/http-transport.js +155 -0
- package/dist/conduit/http-transport.js.map +1 -0
- package/dist/conduit/index.js +15 -0
- package/dist/conduit/index.js.map +1 -0
- package/dist/conduit/local-transport.js +255 -0
- package/dist/conduit/local-transport.js.map +1 -0
- package/dist/conduit/sse-transport.js +299 -0
- package/dist/conduit/sse-transport.js.map +1 -0
- package/dist/config/build-config.js +29 -0
- package/dist/config/build-config.js.map +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +407 -0
- package/dist/config.js.map +1 -0
- package/dist/constants.js +18 -0
- package/dist/constants.js.map +1 -0
- package/dist/context/index.js +137 -0
- package/dist/context/index.js.map +1 -0
- package/dist/crypto/credentials.js +219 -0
- package/dist/crypto/credentials.js.map +1 -0
- package/dist/discovery.js +182 -0
- package/dist/discovery.js.map +1 -0
- package/dist/engine-result.js +12 -0
- package/dist/engine-result.js.map +1 -0
- package/dist/error-catalog.js +404 -0
- package/dist/error-catalog.js.map +1 -0
- package/dist/error-registry.js +393 -0
- package/dist/error-registry.js.map +1 -0
- package/dist/errors.js +173 -0
- package/dist/errors.js.map +1 -0
- package/dist/hooks/handlers/agent-hooks.js +106 -0
- package/dist/hooks/handlers/agent-hooks.js.map +1 -0
- package/dist/hooks/handlers/conduit-hooks.d.ts +72 -0
- package/dist/hooks/handlers/conduit-hooks.d.ts.map +1 -0
- package/dist/hooks/handlers/conduit-hooks.js +229 -0
- package/dist/hooks/handlers/conduit-hooks.js.map +1 -0
- package/dist/hooks/handlers/context-hooks.js +111 -0
- package/dist/hooks/handlers/context-hooks.js.map +1 -0
- package/dist/hooks/handlers/error-hooks.js +52 -0
- package/dist/hooks/handlers/error-hooks.js.map +1 -0
- package/dist/hooks/handlers/file-hooks.js +104 -0
- package/dist/hooks/handlers/file-hooks.js.map +1 -0
- package/dist/hooks/handlers/handler-helpers.js +61 -0
- package/dist/hooks/handlers/handler-helpers.js.map +1 -0
- package/dist/hooks/handlers/index.d.ts +6 -0
- package/dist/hooks/handlers/index.d.ts.map +1 -1
- package/dist/hooks/handlers/index.js +37 -0
- package/dist/hooks/handlers/index.js.map +1 -0
- package/dist/hooks/handlers/intelligence-hooks.d.ts +26 -0
- package/dist/hooks/handlers/intelligence-hooks.d.ts.map +1 -0
- package/dist/hooks/handlers/intelligence-hooks.js +69 -0
- package/dist/hooks/handlers/intelligence-hooks.js.map +1 -0
- package/dist/hooks/handlers/memory-bridge-refresh.js +42 -0
- package/dist/hooks/handlers/memory-bridge-refresh.js.map +1 -0
- package/dist/hooks/handlers/notification-hooks.js +62 -0
- package/dist/hooks/handlers/notification-hooks.js.map +1 -0
- package/dist/hooks/handlers/session-hooks.d.ts +30 -0
- package/dist/hooks/handlers/session-hooks.d.ts.map +1 -1
- package/dist/hooks/handlers/session-hooks.js +190 -0
- package/dist/hooks/handlers/session-hooks.js.map +1 -0
- package/dist/hooks/handlers/task-hooks.d.ts +2 -0
- package/dist/hooks/handlers/task-hooks.d.ts.map +1 -1
- package/dist/hooks/handlers/task-hooks.js +79 -0
- package/dist/hooks/handlers/task-hooks.js.map +1 -0
- package/dist/hooks/handlers/watchdog-hooks.d.ts +49 -0
- package/dist/hooks/handlers/watchdog-hooks.d.ts.map +1 -0
- package/dist/hooks/handlers/watchdog-hooks.js +162 -0
- package/dist/hooks/handlers/watchdog-hooks.js.map +1 -0
- package/dist/hooks/handlers/work-capture-hooks.js +165 -0
- package/dist/hooks/handlers/work-capture-hooks.js.map +1 -0
- package/dist/hooks/index.js +13 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/payload-schemas.js +220 -0
- package/dist/hooks/payload-schemas.js.map +1 -0
- package/dist/hooks/provider-hooks.js +66 -0
- package/dist/hooks/provider-hooks.js.map +1 -0
- package/dist/hooks/registry.js +229 -0
- package/dist/hooks/registry.js.map +1 -0
- package/dist/hooks/types.js +66 -0
- package/dist/hooks/types.js.map +1 -0
- package/dist/hooks.js +136 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.js +56736 -47002
- package/dist/index.js.map +4 -4
- package/dist/init.js +920 -0
- package/dist/init.js.map +1 -0
- package/dist/inject/index.js +82 -0
- package/dist/inject/index.js.map +1 -0
- package/dist/injection.d.ts +13 -1
- package/dist/injection.d.ts.map +1 -1
- package/dist/injection.js +377 -0
- package/dist/injection.js.map +1 -0
- package/dist/intelligence/adaptive-validation.js +497 -0
- package/dist/intelligence/adaptive-validation.js.map +1 -0
- package/dist/intelligence/impact.js +675 -0
- package/dist/intelligence/impact.js.map +1 -0
- package/dist/intelligence/index.js +22 -0
- package/dist/intelligence/index.js.map +1 -0
- package/dist/intelligence/patterns.js +492 -0
- package/dist/intelligence/patterns.js.map +1 -0
- package/dist/intelligence/prediction.js +499 -0
- package/dist/intelligence/prediction.js.map +1 -0
- package/dist/intelligence/types.js +13 -0
- package/dist/intelligence/types.js.map +1 -0
- package/dist/internal.d.ts +10 -3
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +321 -0
- package/dist/internal.js.map +1 -0
- package/dist/issue/create.js +121 -0
- package/dist/issue/create.js.map +1 -0
- package/dist/issue/diagnostics.js +59 -0
- package/dist/issue/diagnostics.js.map +1 -0
- package/dist/issue/index.js +10 -0
- package/dist/issue/index.js.map +1 -0
- package/dist/issue/template-parser.js +267 -0
- package/dist/issue/template-parser.js.map +1 -0
- package/dist/json-schema-validator.js +76 -0
- package/dist/json-schema-validator.js.map +1 -0
- package/dist/lib/index.js +11 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/retry.js +152 -0
- package/dist/lib/retry.js.map +1 -0
- package/dist/lib/tree-sitter-languages.js +75 -0
- package/dist/lib/tree-sitter-languages.js.map +1 -0
- package/dist/lifecycle/chain-composition.js +152 -0
- package/dist/lifecycle/chain-composition.js.map +1 -0
- package/dist/lifecycle/chain-store.js +246 -0
- package/dist/lifecycle/chain-store.js.map +1 -0
- package/dist/lifecycle/consolidate-rcasd.js +352 -0
- package/dist/lifecycle/consolidate-rcasd.js.map +1 -0
- package/dist/lifecycle/default-chain.js +176 -0
- package/dist/lifecycle/default-chain.js.map +1 -0
- package/dist/lifecycle/evidence.js +180 -0
- package/dist/lifecycle/evidence.js.map +1 -0
- package/dist/lifecycle/frontmatter.js +363 -0
- package/dist/lifecycle/frontmatter.js.map +1 -0
- package/dist/lifecycle/index.js +756 -0
- package/dist/lifecycle/index.js.map +1 -0
- package/dist/lifecycle/pipeline.js +656 -0
- package/dist/lifecycle/pipeline.js.map +1 -0
- package/dist/lifecycle/rcasd-index.js +326 -0
- package/dist/lifecycle/rcasd-index.js.map +1 -0
- package/dist/lifecycle/rcasd-paths.js +220 -0
- package/dist/lifecycle/rcasd-paths.js.map +1 -0
- package/dist/lifecycle/resume.js +864 -0
- package/dist/lifecycle/resume.js.map +1 -0
- package/dist/lifecycle/stage-artifacts.js +94 -0
- package/dist/lifecycle/stage-artifacts.js.map +1 -0
- package/dist/lifecycle/stage-guidance.js +234 -0
- package/dist/lifecycle/stage-guidance.js.map +1 -0
- package/dist/lifecycle/stages.js +534 -0
- package/dist/lifecycle/stages.js.map +1 -0
- package/dist/lifecycle/state-machine.js +516 -0
- package/dist/lifecycle/state-machine.js.map +1 -0
- package/dist/lifecycle/tessera-engine.js +249 -0
- package/dist/lifecycle/tessera-engine.js.map +1 -0
- package/dist/logger.js +140 -0
- package/dist/logger.js.map +1 -0
- package/dist/memory/anthropic-key-resolver.d.ts +35 -0
- package/dist/memory/anthropic-key-resolver.d.ts.map +1 -0
- package/dist/memory/anthropic-key-resolver.js +105 -0
- package/dist/memory/anthropic-key-resolver.js.map +1 -0
- package/dist/memory/auto-extract.d.ts +38 -42
- package/dist/memory/auto-extract.d.ts.map +1 -1
- package/dist/memory/auto-extract.js +77 -0
- package/dist/memory/auto-extract.js.map +1 -0
- package/dist/memory/brain-backfill.js +389 -0
- package/dist/memory/brain-backfill.js.map +1 -0
- package/dist/memory/brain-consolidator.d.ts +48 -0
- package/dist/memory/brain-consolidator.d.ts.map +1 -0
- package/dist/memory/brain-consolidator.js +294 -0
- package/dist/memory/brain-consolidator.js.map +1 -0
- package/dist/memory/brain-embedding.js +66 -0
- package/dist/memory/brain-embedding.js.map +1 -0
- package/dist/memory/brain-lifecycle.d.ts +83 -2
- package/dist/memory/brain-lifecycle.d.ts.map +1 -1
- package/dist/memory/brain-lifecycle.js +807 -0
- package/dist/memory/brain-lifecycle.js.map +1 -0
- package/dist/memory/brain-links.js +161 -0
- package/dist/memory/brain-links.js.map +1 -0
- package/dist/memory/brain-maintenance.js +114 -0
- package/dist/memory/brain-maintenance.js.map +1 -0
- package/dist/memory/brain-migration.js +149 -0
- package/dist/memory/brain-migration.js.map +1 -0
- package/dist/memory/brain-purge.js +243 -0
- package/dist/memory/brain-purge.js.map +1 -0
- package/dist/memory/brain-reasoning.js +215 -0
- package/dist/memory/brain-reasoning.js.map +1 -0
- package/dist/memory/brain-retrieval.d.ts +75 -1
- package/dist/memory/brain-retrieval.d.ts.map +1 -1
- package/dist/memory/brain-retrieval.js +1044 -0
- package/dist/memory/brain-retrieval.js.map +1 -0
- package/dist/memory/brain-row-types.js +10 -0
- package/dist/memory/brain-row-types.js.map +1 -0
- package/dist/memory/brain-search.d.ts +82 -15
- package/dist/memory/brain-search.d.ts.map +1 -1
- package/dist/memory/brain-search.js +613 -0
- package/dist/memory/brain-search.js.map +1 -0
- package/dist/memory/brain-similarity.js +145 -0
- package/dist/memory/brain-similarity.js.map +1 -0
- package/dist/memory/claude-mem-migration.js +277 -0
- package/dist/memory/claude-mem-migration.js.map +1 -0
- package/dist/memory/decisions.d.ts.map +1 -1
- package/dist/memory/decisions.js +218 -0
- package/dist/memory/decisions.js.map +1 -0
- package/dist/memory/embedding-local.js +102 -0
- package/dist/memory/embedding-local.js.map +1 -0
- package/dist/memory/embedding-queue.js +271 -0
- package/dist/memory/embedding-queue.js.map +1 -0
- package/dist/memory/embedding-worker.js +58 -0
- package/dist/memory/embedding-worker.js.map +1 -0
- package/dist/memory/engine-compat.d.ts +16 -1
- package/dist/memory/engine-compat.d.ts.map +1 -1
- package/dist/memory/engine-compat.js +1561 -0
- package/dist/memory/engine-compat.js.map +1 -0
- package/dist/memory/extraction-gate.d.ts +139 -0
- package/dist/memory/extraction-gate.d.ts.map +1 -0
- package/dist/memory/extraction-gate.js +459 -0
- package/dist/memory/extraction-gate.js.map +1 -0
- package/dist/memory/graph-auto-populate.js +148 -0
- package/dist/memory/graph-auto-populate.js.map +1 -0
- package/dist/memory/graph-queries.js +290 -0
- package/dist/memory/graph-queries.js.map +1 -0
- package/dist/memory/index.d.ts +2 -0
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +1144 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/learnings.d.ts +14 -0
- package/dist/memory/learnings.d.ts.map +1 -1
- package/dist/memory/learnings.js +179 -0
- package/dist/memory/learnings.js.map +1 -0
- package/dist/memory/llm-extraction.d.ts +107 -0
- package/dist/memory/llm-extraction.d.ts.map +1 -0
- package/dist/memory/llm-extraction.js +425 -0
- package/dist/memory/llm-extraction.js.map +1 -0
- package/dist/memory/memory-bridge.js +382 -0
- package/dist/memory/memory-bridge.js.map +1 -0
- package/dist/memory/mental-model-injection.js +61 -0
- package/dist/memory/mental-model-injection.js.map +1 -0
- package/dist/memory/mental-model-queue.js +211 -0
- package/dist/memory/mental-model-queue.js.map +1 -0
- package/dist/memory/observer-reflector.d.ts +157 -0
- package/dist/memory/observer-reflector.d.ts.map +1 -0
- package/dist/memory/observer-reflector.js +626 -0
- package/dist/memory/observer-reflector.js.map +1 -0
- package/dist/memory/patterns.d.ts +24 -4
- package/dist/memory/patterns.d.ts.map +1 -1
- package/dist/memory/patterns.js +174 -0
- package/dist/memory/patterns.js.map +1 -0
- package/dist/memory/pipeline-manifest-sqlite.js +975 -0
- package/dist/memory/pipeline-manifest-sqlite.js.map +1 -0
- package/dist/memory/quality-scoring.d.ts +42 -5
- package/dist/memory/quality-scoring.d.ts.map +1 -1
- package/dist/memory/quality-scoring.js +182 -0
- package/dist/memory/quality-scoring.js.map +1 -0
- package/dist/memory/session-memory.js +331 -0
- package/dist/memory/session-memory.js.map +1 -0
- package/dist/metrics/ab-test.js +260 -0
- package/dist/metrics/ab-test.js.map +1 -0
- package/dist/metrics/aggregation.js +363 -0
- package/dist/metrics/aggregation.js.map +1 -0
- package/dist/metrics/common.js +64 -0
- package/dist/metrics/common.js.map +1 -0
- package/dist/metrics/enums.js +78 -0
- package/dist/metrics/enums.js.map +1 -0
- package/dist/metrics/index.js +19 -0
- package/dist/metrics/index.js.map +1 -0
- package/dist/metrics/model-provider-registry.js +88 -0
- package/dist/metrics/model-provider-registry.js.map +1 -0
- package/dist/metrics/otel-integration.js +263 -0
- package/dist/metrics/otel-integration.js.map +1 -0
- package/dist/metrics/provider-detection.js +103 -0
- package/dist/metrics/provider-detection.js.map +1 -0
- package/dist/metrics/token-estimation.js +253 -0
- package/dist/metrics/token-estimation.js.map +1 -0
- package/dist/metrics/token-service.js +450 -0
- package/dist/metrics/token-service.js.map +1 -0
- package/dist/migration/agent-outputs.js +316 -0
- package/dist/migration/agent-outputs.js.map +1 -0
- package/dist/migration/checksum.js +92 -0
- package/dist/migration/checksum.js.map +1 -0
- package/dist/migration/index.js +282 -0
- package/dist/migration/index.js.map +1 -0
- package/dist/migration/logger.js +360 -0
- package/dist/migration/logger.js.map +1 -0
- package/dist/migration/preflight.js +9 -0
- package/dist/migration/preflight.js.map +1 -0
- package/dist/migration/state.js +421 -0
- package/dist/migration/state.js.map +1 -0
- package/dist/migration/validate.js +241 -0
- package/dist/migration/validate.js.map +1 -0
- package/dist/mvi-helpers.js +73 -0
- package/dist/mvi-helpers.js.map +1 -0
- package/dist/nexus/deps.js +375 -0
- package/dist/nexus/deps.js.map +1 -0
- package/dist/nexus/discover.js +288 -0
- package/dist/nexus/discover.js.map +1 -0
- package/dist/nexus/hash.js +10 -0
- package/dist/nexus/hash.js.map +1 -0
- package/dist/nexus/index.js +40 -0
- package/dist/nexus/index.js.map +1 -0
- package/dist/nexus/migrate-json-to-sqlite.js +115 -0
- package/dist/nexus/migrate-json-to-sqlite.js.map +1 -0
- package/dist/nexus/nexus-bridge.d.ts +51 -0
- package/dist/nexus/nexus-bridge.d.ts.map +1 -0
- package/dist/nexus/nexus-bridge.js +321 -0
- package/dist/nexus/nexus-bridge.js.map +1 -0
- package/dist/nexus/permissions.js +105 -0
- package/dist/nexus/permissions.js.map +1 -0
- package/dist/nexus/query.js +175 -0
- package/dist/nexus/query.js.map +1 -0
- package/dist/nexus/registry.js +584 -0
- package/dist/nexus/registry.js.map +1 -0
- package/dist/nexus/sharing/index.js +288 -0
- package/dist/nexus/sharing/index.js.map +1 -0
- package/dist/nexus/transfer-types.js +8 -0
- package/dist/nexus/transfer-types.js.map +1 -0
- package/dist/nexus/transfer.js +271 -0
- package/dist/nexus/transfer.js.map +1 -0
- package/dist/nexus/workspace.js +355 -0
- package/dist/nexus/workspace.js.map +1 -0
- package/dist/observability/index.js +103 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/log-filter.js +63 -0
- package/dist/observability/log-filter.js.map +1 -0
- package/dist/observability/log-parser.js +99 -0
- package/dist/observability/log-parser.js.map +1 -0
- package/dist/observability/log-reader.js +139 -0
- package/dist/observability/log-reader.js.map +1 -0
- package/dist/observability/types.js +19 -0
- package/dist/observability/types.js.map +1 -0
- package/dist/orchestration/analyze.js +107 -0
- package/dist/orchestration/analyze.js.map +1 -0
- package/dist/orchestration/bootstrap.js +132 -0
- package/dist/orchestration/bootstrap.js.map +1 -0
- package/dist/orchestration/context.js +56 -0
- package/dist/orchestration/context.js.map +1 -0
- package/dist/orchestration/critical-path.js +100 -0
- package/dist/orchestration/critical-path.js.map +1 -0
- package/dist/orchestration/hierarchy.js +183 -0
- package/dist/orchestration/hierarchy.js.map +1 -0
- package/dist/orchestration/index.js +287 -0
- package/dist/orchestration/index.js.map +1 -0
- package/dist/orchestration/parallel.js +89 -0
- package/dist/orchestration/parallel.js.map +1 -0
- package/dist/orchestration/protocol-validators.js +815 -0
- package/dist/orchestration/protocol-validators.js.map +1 -0
- package/dist/orchestration/skill-ops.js +98 -0
- package/dist/orchestration/skill-ops.js.map +1 -0
- package/dist/orchestration/status.js +107 -0
- package/dist/orchestration/status.js.map +1 -0
- package/dist/orchestration/unblock.js +103 -0
- package/dist/orchestration/unblock.js.map +1 -0
- package/dist/orchestration/validate-spawn.js +67 -0
- package/dist/orchestration/validate-spawn.js.map +1 -0
- package/dist/orchestration/waves.js +86 -0
- package/dist/orchestration/waves.js.map +1 -0
- package/dist/otel/index.js +163 -0
- package/dist/otel/index.js.map +1 -0
- package/dist/output.js +164 -0
- package/dist/output.js.map +1 -0
- package/dist/pagination.js +64 -0
- package/dist/pagination.js.map +1 -0
- package/dist/paths.js +882 -0
- package/dist/paths.js.map +1 -0
- package/dist/phases/deps.js +372 -0
- package/dist/phases/deps.js.map +1 -0
- package/dist/phases/index.js +349 -0
- package/dist/phases/index.js.map +1 -0
- package/dist/pipeline/index.js +10 -0
- package/dist/pipeline/index.js.map +1 -0
- package/dist/pipeline/phase.js +45 -0
- package/dist/pipeline/phase.js.map +1 -0
- package/dist/platform.js +211 -0
- package/dist/platform.js.map +1 -0
- package/dist/project-info.js +84 -0
- package/dist/project-info.js.map +1 -0
- package/dist/reconciliation/index.js +10 -0
- package/dist/reconciliation/index.js.map +1 -0
- package/dist/reconciliation/link-store.js +175 -0
- package/dist/reconciliation/link-store.js.map +1 -0
- package/dist/reconciliation/reconciliation-engine.js +298 -0
- package/dist/reconciliation/reconciliation-engine.js.map +1 -0
- package/dist/release/artifacts.js +427 -0
- package/dist/release/artifacts.js.map +1 -0
- package/dist/release/changelog-writer.js +151 -0
- package/dist/release/changelog-writer.js.map +1 -0
- package/dist/release/channel.js +144 -0
- package/dist/release/channel.js.map +1 -0
- package/dist/release/ci.js +166 -0
- package/dist/release/ci.js.map +1 -0
- package/dist/release/github-pr.js +225 -0
- package/dist/release/github-pr.js.map +1 -0
- package/dist/release/guards.js +116 -0
- package/dist/release/guards.js.map +1 -0
- package/dist/release/index.js +22 -0
- package/dist/release/index.js.map +1 -0
- package/dist/release/release-config.js +158 -0
- package/dist/release/release-config.js.map +1 -0
- package/dist/release/release-manifest.js +1019 -0
- package/dist/release/release-manifest.js.map +1 -0
- package/dist/release/version-bump.js +255 -0
- package/dist/release/version-bump.js.map +1 -0
- package/dist/remote/index.js +257 -0
- package/dist/remote/index.js.map +1 -0
- package/dist/repair.js +130 -0
- package/dist/repair.js.map +1 -0
- package/dist/research/index.js +2 -0
- package/dist/research/index.js.map +1 -0
- package/dist/roadmap/index.js +59 -0
- package/dist/roadmap/index.js.map +1 -0
- package/dist/routing/capability-matrix.js +1556 -0
- package/dist/routing/capability-matrix.js.map +1 -0
- package/dist/routing/index.js +9 -0
- package/dist/routing/index.js.map +1 -0
- package/dist/scaffold.d.ts +18 -0
- package/dist/scaffold.d.ts.map +1 -1
- package/dist/scaffold.js +1798 -0
- package/dist/scaffold.js.map +1 -0
- package/dist/schema-management.js +295 -0
- package/dist/schema-management.js.map +1 -0
- package/dist/security/index.js +9 -0
- package/dist/security/index.js.map +1 -0
- package/dist/security/input-sanitization.js +326 -0
- package/dist/security/input-sanitization.js.map +1 -0
- package/dist/sequence/index.js +295 -0
- package/dist/sequence/index.js.map +1 -0
- package/dist/sessions/assumptions.js +54 -0
- package/dist/sessions/assumptions.js.map +1 -0
- package/dist/sessions/briefing.js +377 -0
- package/dist/sessions/briefing.js.map +1 -0
- package/dist/sessions/context-alert.js +222 -0
- package/dist/sessions/context-alert.js.map +1 -0
- package/dist/sessions/context-inject.js +61 -0
- package/dist/sessions/context-inject.js.map +1 -0
- package/dist/sessions/context-monitor.js +98 -0
- package/dist/sessions/context-monitor.js.map +1 -0
- package/dist/sessions/decisions.js +65 -0
- package/dist/sessions/decisions.js.map +1 -0
- package/dist/sessions/find.js +65 -0
- package/dist/sessions/find.js.map +1 -0
- package/dist/sessions/handoff.js +328 -0
- package/dist/sessions/handoff.js.map +1 -0
- package/dist/sessions/hitl-warnings.js +254 -0
- package/dist/sessions/hitl-warnings.js.map +1 -0
- package/dist/sessions/index.js +327 -0
- package/dist/sessions/index.js.map +1 -0
- package/dist/sessions/session-archive.js +40 -0
- package/dist/sessions/session-archive.js.map +1 -0
- package/dist/sessions/session-cleanup.js +59 -0
- package/dist/sessions/session-cleanup.js.map +1 -0
- package/dist/sessions/session-drift.js +134 -0
- package/dist/sessions/session-drift.js.map +1 -0
- package/dist/sessions/session-enforcement.js +144 -0
- package/dist/sessions/session-enforcement.js.map +1 -0
- package/dist/sessions/session-grade.js +253 -0
- package/dist/sessions/session-grade.js.map +1 -0
- package/dist/sessions/session-history.js +42 -0
- package/dist/sessions/session-history.js.map +1 -0
- package/dist/sessions/session-id.js +81 -0
- package/dist/sessions/session-id.js.map +1 -0
- package/dist/sessions/session-memory-bridge.js +30 -0
- package/dist/sessions/session-memory-bridge.js.map +1 -0
- package/dist/sessions/session-show.js +24 -0
- package/dist/sessions/session-show.js.map +1 -0
- package/dist/sessions/session-stats.js +69 -0
- package/dist/sessions/session-stats.js.map +1 -0
- package/dist/sessions/session-suspend.js +39 -0
- package/dist/sessions/session-suspend.js.map +1 -0
- package/dist/sessions/session-switch.js +51 -0
- package/dist/sessions/session-switch.js.map +1 -0
- package/dist/sessions/session-view.js +76 -0
- package/dist/sessions/session-view.js.map +1 -0
- package/dist/sessions/snapshot.js +213 -0
- package/dist/sessions/snapshot.js.map +1 -0
- package/dist/sessions/statusline-setup.js +85 -0
- package/dist/sessions/statusline-setup.js.map +1 -0
- package/dist/sessions/types.js +8 -0
- package/dist/sessions/types.js.map +1 -0
- package/dist/skills/agents/config.js +94 -0
- package/dist/skills/agents/config.js.map +1 -0
- package/dist/skills/agents/install.js +116 -0
- package/dist/skills/agents/install.js.map +1 -0
- package/dist/skills/agents/registry.js +161 -0
- package/dist/skills/agents/registry.js.map +1 -0
- package/dist/skills/discovery.js +333 -0
- package/dist/skills/discovery.js.map +1 -0
- package/dist/skills/dispatch.js +347 -0
- package/dist/skills/dispatch.js.map +1 -0
- package/dist/skills/dynamic-skill-generator.js +87 -0
- package/dist/skills/dynamic-skill-generator.js.map +1 -0
- package/dist/skills/index.js +44 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/injection/subagent.js +195 -0
- package/dist/skills/injection/subagent.js.map +1 -0
- package/dist/skills/injection/token.js +260 -0
- package/dist/skills/injection/token.js.map +1 -0
- package/dist/skills/install.js +40 -0
- package/dist/skills/install.js.map +1 -0
- package/dist/skills/manifests/contribution.js +175 -0
- package/dist/skills/manifests/contribution.js.map +1 -0
- package/dist/skills/manifests/research.js +281 -0
- package/dist/skills/manifests/research.js.map +1 -0
- package/dist/skills/manifests/resolver.js +146 -0
- package/dist/skills/manifests/resolver.js.map +1 -0
- package/dist/skills/marketplace.js +90 -0
- package/dist/skills/marketplace.js.map +1 -0
- package/dist/skills/orchestrator/spawn.js +178 -0
- package/dist/skills/orchestrator/spawn.js.map +1 -0
- package/dist/skills/orchestrator/startup.js +451 -0
- package/dist/skills/orchestrator/startup.js.map +1 -0
- package/dist/skills/orchestrator/validator.js +301 -0
- package/dist/skills/orchestrator/validator.js.map +1 -0
- package/dist/skills/precedence-integration.js +73 -0
- package/dist/skills/precedence-integration.js.map +1 -0
- package/dist/skills/precedence-types.js +16 -0
- package/dist/skills/precedence-types.js.map +1 -0
- package/dist/skills/routing-table.js +63 -0
- package/dist/skills/routing-table.js.map +1 -0
- package/dist/skills/skill-paths.js +217 -0
- package/dist/skills/skill-paths.js.map +1 -0
- package/dist/skills/test-utility.js +55 -0
- package/dist/skills/test-utility.js.map +1 -0
- package/dist/skills/types.js +118 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/skills/validation.js +183 -0
- package/dist/skills/validation.js.map +1 -0
- package/dist/skills/version.js +57 -0
- package/dist/skills/version.js.map +1 -0
- package/dist/snapshot/index.js +188 -0
- package/dist/snapshot/index.js.map +1 -0
- package/dist/spawn/adapter-registry.js +246 -0
- package/dist/spawn/adapter-registry.js.map +1 -0
- package/dist/spawn/index.js +10 -0
- package/dist/spawn/index.js.map +1 -0
- package/dist/stats/index.d.ts.map +1 -1
- package/dist/stats/index.js +350 -0
- package/dist/stats/index.js.map +1 -0
- package/dist/stats/workflow-telemetry.js +400 -0
- package/dist/stats/workflow-telemetry.js.map +1 -0
- package/dist/sticky/archive.js +47 -0
- package/dist/sticky/archive.js.map +1 -0
- package/dist/sticky/convert.js +235 -0
- package/dist/sticky/convert.js.map +1 -0
- package/dist/sticky/create.js +48 -0
- package/dist/sticky/create.js.map +1 -0
- package/dist/sticky/id.js +35 -0
- package/dist/sticky/id.js.map +1 -0
- package/dist/sticky/index.js +16 -0
- package/dist/sticky/index.js.map +1 -0
- package/dist/sticky/list.js +57 -0
- package/dist/sticky/list.js.map +1 -0
- package/dist/sticky/purge.js +45 -0
- package/dist/sticky/purge.js.map +1 -0
- package/dist/sticky/show.js +42 -0
- package/dist/sticky/show.js.map +1 -0
- package/dist/sticky/types.js +10 -0
- package/dist/sticky/types.js.map +1 -0
- package/dist/store/agent-registry-accessor.js +886 -0
- package/dist/store/agent-registry-accessor.js.map +1 -0
- package/dist/store/api-key-kdf.js +84 -0
- package/dist/store/api-key-kdf.js.map +1 -0
- package/dist/store/atomic.js +167 -0
- package/dist/store/atomic.js.map +1 -0
- package/dist/store/backup-crypto.js +184 -0
- package/dist/store/backup-crypto.js.map +1 -0
- package/dist/store/backup-pack.js +581 -0
- package/dist/store/backup-pack.js.map +1 -0
- package/dist/store/backup-unpack.js +449 -0
- package/dist/store/backup-unpack.js.map +1 -0
- package/dist/store/backup.js +94 -0
- package/dist/store/backup.js.map +1 -0
- package/dist/store/brain-accessor.js +429 -0
- package/dist/store/brain-accessor.js.map +1 -0
- package/dist/store/brain-schema.d.ts +663 -39
- package/dist/store/brain-schema.d.ts.map +1 -1
- package/dist/store/brain-schema.js +579 -0
- package/dist/store/brain-schema.js.map +1 -0
- package/dist/store/brain-sqlite.d.ts.map +1 -1
- package/dist/store/brain-sqlite.js +297 -0
- package/dist/store/brain-sqlite.js.map +1 -0
- package/dist/store/cache.js +168 -0
- package/dist/store/cache.js.map +1 -0
- package/dist/store/chain-schema.js +51 -0
- package/dist/store/chain-schema.js.map +1 -0
- package/dist/store/cleanup-legacy.js +171 -0
- package/dist/store/cleanup-legacy.js.map +1 -0
- package/dist/store/conduit-sqlite.js +570 -0
- package/dist/store/conduit-sqlite.js.map +1 -0
- package/dist/store/converters.js +124 -0
- package/dist/store/converters.js.map +1 -0
- package/dist/store/cross-db-cleanup.js +319 -0
- package/dist/store/cross-db-cleanup.js.map +1 -0
- package/dist/store/data-accessor.js +26 -0
- package/dist/store/data-accessor.js.map +1 -0
- package/dist/store/data-safety-central.js +269 -0
- package/dist/store/data-safety-central.js.map +1 -0
- package/dist/store/data-safety.js +274 -0
- package/dist/store/data-safety.js.map +1 -0
- package/dist/store/db-helpers.js +224 -0
- package/dist/store/db-helpers.js.map +1 -0
- package/dist/store/export.js +155 -0
- package/dist/store/export.js.map +1 -0
- package/dist/store/file-utils.js +270 -0
- package/dist/store/file-utils.js.map +1 -0
- package/dist/store/git-checkpoint.js +365 -0
- package/dist/store/git-checkpoint.js.map +1 -0
- package/dist/store/global-salt.js +147 -0
- package/dist/store/global-salt.js.map +1 -0
- package/dist/store/import-logging.js +139 -0
- package/dist/store/import-logging.js.map +1 -0
- package/dist/store/import-remap.js +145 -0
- package/dist/store/import-remap.js.map +1 -0
- package/dist/store/import-sort.js +121 -0
- package/dist/store/import-sort.js.map +1 -0
- package/dist/store/index.js +29 -0
- package/dist/store/index.js.map +1 -0
- package/dist/store/json.js +208 -0
- package/dist/store/json.js.map +1 -0
- package/dist/store/lifecycle-store.js +249 -0
- package/dist/store/lifecycle-store.js.map +1 -0
- package/dist/store/lock.js +70 -0
- package/dist/store/lock.js.map +1 -0
- package/dist/store/migrate-signaldock-to-conduit.js +562 -0
- package/dist/store/migrate-signaldock-to-conduit.js.map +1 -0
- package/dist/store/migration-manager.d.ts +5 -1
- package/dist/store/migration-manager.d.ts.map +1 -1
- package/dist/store/migration-manager.js +288 -0
- package/dist/store/migration-manager.js.map +1 -0
- package/dist/store/migration-sqlite.js +676 -0
- package/dist/store/migration-sqlite.js.map +1 -0
- package/dist/store/nexus-schema.js +268 -0
- package/dist/store/nexus-schema.js.map +1 -0
- package/dist/store/nexus-sqlite.js +242 -0
- package/dist/store/nexus-sqlite.js.map +1 -0
- package/dist/store/nexus-validation-schemas.js +40 -0
- package/dist/store/nexus-validation-schemas.js.map +1 -0
- package/dist/store/parsers.js +37 -0
- package/dist/store/parsers.js.map +1 -0
- package/dist/store/project-detect.js +457 -0
- package/dist/store/project-detect.js.map +1 -0
- package/dist/store/provider.js +101 -0
- package/dist/store/provider.js.map +1 -0
- package/dist/store/regenerators.js +207 -0
- package/dist/store/regenerators.js.map +1 -0
- package/dist/store/restore-conflict-report.js +206 -0
- package/dist/store/restore-conflict-report.js.map +1 -0
- package/dist/store/restore-json-merge.js +454 -0
- package/dist/store/restore-json-merge.js.map +1 -0
- package/dist/store/safety-data-accessor.js +257 -0
- package/dist/store/safety-data-accessor.js.map +1 -0
- package/dist/store/schema.js +7 -0
- package/dist/store/schema.js.map +1 -0
- package/dist/store/session-store.js +219 -0
- package/dist/store/session-store.js.map +1 -0
- package/dist/store/signaldock-sqlite.js +550 -0
- package/dist/store/signaldock-sqlite.js.map +1 -0
- package/dist/store/sqlite-backup.js +498 -0
- package/dist/store/sqlite-backup.js.map +1 -0
- package/dist/store/sqlite-data-accessor.js +787 -0
- package/dist/store/sqlite-data-accessor.js.map +1 -0
- package/dist/store/sqlite.js +483 -0
- package/dist/store/sqlite.js.map +1 -0
- package/dist/store/status-registry.js +8 -0
- package/dist/store/status-registry.js.map +1 -0
- package/dist/store/t310-readiness.js +115 -0
- package/dist/store/t310-readiness.js.map +1 -0
- package/dist/store/task-store.js +358 -0
- package/dist/store/task-store.js.map +1 -0
- package/dist/store/tasks-schema.d.ts +1 -1
- package/dist/store/tasks-schema.js +610 -0
- package/dist/store/tasks-schema.js.map +1 -0
- package/dist/store/typed-query.js +15 -0
- package/dist/store/typed-query.js.map +1 -0
- package/dist/store/validation-schemas.d.ts +6 -6
- package/dist/store/validation-schemas.js +278 -0
- package/dist/store/validation-schemas.js.map +1 -0
- package/dist/system/archive-analytics.js +277 -0
- package/dist/system/archive-analytics.js.map +1 -0
- package/dist/system/archive-stats.js +64 -0
- package/dist/system/archive-stats.js.map +1 -0
- package/dist/system/audit.js +145 -0
- package/dist/system/audit.js.map +1 -0
- package/dist/system/backup.js +280 -0
- package/dist/system/backup.js.map +1 -0
- package/dist/system/cleanup.js +134 -0
- package/dist/system/cleanup.js.map +1 -0
- package/dist/system/dependencies.js +466 -0
- package/dist/system/dependencies.js.map +1 -0
- package/dist/system/health.d.ts.map +1 -1
- package/dist/system/health.js +1206 -0
- package/dist/system/health.js.map +1 -0
- package/dist/system/index.js +18 -0
- package/dist/system/index.js.map +1 -0
- package/dist/system/inject-generate.js +122 -0
- package/dist/system/inject-generate.js.map +1 -0
- package/dist/system/labels.js +38 -0
- package/dist/system/labels.js.map +1 -0
- package/dist/system/metrics.js +61 -0
- package/dist/system/metrics.js.map +1 -0
- package/dist/system/migrate.js +43 -0
- package/dist/system/migrate.js.map +1 -0
- package/dist/system/platform-paths.js +80 -0
- package/dist/system/platform-paths.js.map +1 -0
- package/dist/system/runtime.js +161 -0
- package/dist/system/runtime.js.map +1 -0
- package/dist/system/safestop.js +89 -0
- package/dist/system/safestop.js.map +1 -0
- package/dist/system/storage-preflight.js +123 -0
- package/dist/system/storage-preflight.js.map +1 -0
- package/dist/task-work/index.js +159 -0
- package/dist/task-work/index.js.map +1 -0
- package/dist/tasks/add.js +837 -0
- package/dist/tasks/add.js.map +1 -0
- package/dist/tasks/analyze.js +85 -0
- package/dist/tasks/analyze.js.map +1 -0
- package/dist/tasks/archive.js +90 -0
- package/dist/tasks/archive.js.map +1 -0
- package/dist/tasks/atomicity.js +83 -0
- package/dist/tasks/atomicity.js.map +1 -0
- package/dist/tasks/cancel-ops.js +83 -0
- package/dist/tasks/cancel-ops.js.map +1 -0
- package/dist/tasks/complete.d.ts.map +1 -1
- package/dist/tasks/complete.js +228 -0
- package/dist/tasks/complete.js.map +1 -0
- package/dist/tasks/crossref-extract.js +73 -0
- package/dist/tasks/crossref-extract.js.map +1 -0
- package/dist/tasks/delete-preview.js +192 -0
- package/dist/tasks/delete-preview.js.map +1 -0
- package/dist/tasks/delete.js +120 -0
- package/dist/tasks/delete.js.map +1 -0
- package/dist/tasks/deletion-strategy.js +200 -0
- package/dist/tasks/deletion-strategy.js.map +1 -0
- package/dist/tasks/dependency-check.js +278 -0
- package/dist/tasks/dependency-check.js.map +1 -0
- package/dist/tasks/deps-ready.js +32 -0
- package/dist/tasks/deps-ready.js.map +1 -0
- package/dist/tasks/enforcement.js +86 -0
- package/dist/tasks/enforcement.js.map +1 -0
- package/dist/tasks/epic-enforcement.js +294 -0
- package/dist/tasks/epic-enforcement.js.map +1 -0
- package/dist/tasks/find.js +163 -0
- package/dist/tasks/find.js.map +1 -0
- package/dist/tasks/graph-cache.js +127 -0
- package/dist/tasks/graph-cache.js.map +1 -0
- package/dist/tasks/graph-ops.d.ts.map +1 -1
- package/dist/tasks/graph-ops.js +173 -0
- package/dist/tasks/graph-ops.js.map +1 -0
- package/dist/tasks/graph-rag.js +328 -0
- package/dist/tasks/graph-rag.js.map +1 -0
- package/dist/tasks/hierarchy-policy.js +149 -0
- package/dist/tasks/hierarchy-policy.js.map +1 -0
- package/dist/tasks/hierarchy.js +185 -0
- package/dist/tasks/hierarchy.js.map +1 -0
- package/dist/tasks/id-generator.js +65 -0
- package/dist/tasks/id-generator.js.map +1 -0
- package/dist/tasks/index.js +14 -0
- package/dist/tasks/index.js.map +1 -0
- package/dist/tasks/labels.js +55 -0
- package/dist/tasks/labels.js.map +1 -0
- package/dist/tasks/list.js +75 -0
- package/dist/tasks/list.js.map +1 -0
- package/dist/tasks/phase-tracking.js +133 -0
- package/dist/tasks/phase-tracking.js.map +1 -0
- package/dist/tasks/pipeline-stage.js +248 -0
- package/dist/tasks/pipeline-stage.js.map +1 -0
- package/dist/tasks/plan.js +268 -0
- package/dist/tasks/plan.js.map +1 -0
- package/dist/tasks/relates.js +101 -0
- package/dist/tasks/relates.js.map +1 -0
- package/dist/tasks/show.js +83 -0
- package/dist/tasks/show.js.map +1 -0
- package/dist/tasks/size-weighting.js +86 -0
- package/dist/tasks/size-weighting.js.map +1 -0
- package/dist/tasks/staleness.js +86 -0
- package/dist/tasks/staleness.js.map +1 -0
- package/dist/tasks/task-ops.js +1741 -0
- package/dist/tasks/task-ops.js.map +1 -0
- package/dist/tasks/update.js +303 -0
- package/dist/tasks/update.js.map +1 -0
- package/dist/templates/index.js +10 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/templates/parser.js +254 -0
- package/dist/templates/parser.js.map +1 -0
- package/dist/ui/aliases.js +153 -0
- package/dist/ui/aliases.js.map +1 -0
- package/dist/ui/changelog.js +184 -0
- package/dist/ui/changelog.js.map +1 -0
- package/dist/ui/command-registry.js +168 -0
- package/dist/ui/command-registry.js.map +1 -0
- package/dist/ui/flags.js +94 -0
- package/dist/ui/flags.js.map +1 -0
- package/dist/ui/index.js +24 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/upgrade.js +1148 -0
- package/dist/upgrade.js.map +1 -0
- package/dist/validation/chain-validation.js +146 -0
- package/dist/validation/chain-validation.js.map +1 -0
- package/dist/validation/compliance.js +155 -0
- package/dist/validation/compliance.js.map +1 -0
- package/dist/validation/docs-sync.js +212 -0
- package/dist/validation/docs-sync.js.map +1 -0
- package/dist/validation/doctor/checks.js +1069 -0
- package/dist/validation/doctor/checks.js.map +1 -0
- package/dist/validation/doctor/index.js +9 -0
- package/dist/validation/doctor/index.js.map +1 -0
- package/dist/validation/doctor/project-cache.js +160 -0
- package/dist/validation/doctor/project-cache.js.map +1 -0
- package/dist/validation/doctor/utils.js +155 -0
- package/dist/validation/doctor/utils.js.map +1 -0
- package/dist/validation/engine.js +914 -0
- package/dist/validation/engine.js.map +1 -0
- package/dist/validation/gap-check.js +175 -0
- package/dist/validation/gap-check.js.map +1 -0
- package/dist/validation/index.js +40 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/manifest.js +237 -0
- package/dist/validation/manifest.js.map +1 -0
- package/dist/validation/operation-gate-validators.js +724 -0
- package/dist/validation/operation-gate-validators.js.map +1 -0
- package/dist/validation/operation-verification-gates.js +532 -0
- package/dist/validation/operation-verification-gates.js.map +1 -0
- package/dist/validation/param-utils.js +141 -0
- package/dist/validation/param-utils.js.map +1 -0
- package/dist/validation/protocol-common.js +300 -0
- package/dist/validation/protocol-common.js.map +1 -0
- package/dist/validation/protocols/_shared.js +82 -0
- package/dist/validation/protocols/_shared.js.map +1 -0
- package/dist/validation/protocols/architecture-decision.js +31 -0
- package/dist/validation/protocols/architecture-decision.js.map +1 -0
- package/dist/validation/protocols/artifact-publish.js +28 -0
- package/dist/validation/protocols/artifact-publish.js.map +1 -0
- package/dist/validation/protocols/consensus.js +41 -0
- package/dist/validation/protocols/consensus.js.map +1 -0
- package/dist/validation/protocols/contribution.js +27 -0
- package/dist/validation/protocols/contribution.js.map +1 -0
- package/dist/validation/protocols/decomposition.js +28 -0
- package/dist/validation/protocols/decomposition.js.map +1 -0
- package/dist/validation/protocols/implementation.js +24 -0
- package/dist/validation/protocols/implementation.js.map +1 -0
- package/dist/validation/protocols/provenance.js +29 -0
- package/dist/validation/protocols/provenance.js.map +1 -0
- package/dist/validation/protocols/release.js +29 -0
- package/dist/validation/protocols/release.js.map +1 -0
- package/dist/validation/protocols/research.js +24 -0
- package/dist/validation/protocols/research.js.map +1 -0
- package/dist/validation/protocols/specification.js +27 -0
- package/dist/validation/protocols/specification.js.map +1 -0
- package/dist/validation/protocols/testing.js +30 -0
- package/dist/validation/protocols/testing.js.map +1 -0
- package/dist/validation/protocols/validation.js +30 -0
- package/dist/validation/protocols/validation.js.map +1 -0
- package/dist/validation/schema-integrity.js +170 -0
- package/dist/validation/schema-integrity.js.map +1 -0
- package/dist/validation/schema-validator.js +176 -0
- package/dist/validation/schema-validator.js.map +1 -0
- package/dist/validation/validate-ops.js +937 -0
- package/dist/validation/validate-ops.js.map +1 -0
- package/dist/validation/validation-rules.js +226 -0
- package/dist/validation/validation-rules.js.map +1 -0
- package/dist/validation/verification.js +321 -0
- package/dist/validation/verification.js.map +1 -0
- package/migrations/drizzle-brain/20260411000001_t528-graph-schema-expansion/migration.sql +47 -0
- package/migrations/drizzle-brain/20260412000001_t531-quality-score-typed-tables/migration.sql +23 -0
- package/migrations/drizzle-brain/20260413000001_t549-tiered-typed-memory/migration.sql +195 -0
- package/migrations/drizzle-nexus/20260412000001_t529-nexus-graph-tables/migration.sql +49 -0
- package/package.json +13 -12
- package/src/config.ts +7 -0
- package/src/hooks/handlers/__tests__/conduit-hooks.test.ts +356 -0
- package/src/hooks/handlers/conduit-hooks.ts +258 -0
- package/src/hooks/handlers/index.ts +13 -0
- package/src/hooks/handlers/intelligence-hooks.ts +80 -0
- package/src/hooks/handlers/session-hooks.ts +78 -0
- package/src/hooks/handlers/task-hooks.ts +14 -0
- package/src/hooks/handlers/watchdog-hooks.ts +187 -0
- package/src/injection.ts +41 -2
- package/src/internal.ts +39 -2
- package/src/memory/__tests__/auto-extract.test.ts +43 -114
- package/src/memory/__tests__/brain-automation.test.ts +16 -39
- package/src/memory/__tests__/brain-rrf.test.ts +431 -0
- package/src/memory/__tests__/llm-extraction.test.ts +342 -0
- package/src/memory/__tests__/observer-reflector.test.ts +475 -0
- package/src/memory/anthropic-key-resolver.ts +113 -0
- package/src/memory/auto-extract.ts +40 -72
- package/src/memory/brain-consolidator.ts +344 -0
- package/src/memory/brain-lifecycle.ts +636 -2
- package/src/memory/brain-retrieval.ts +630 -18
- package/src/memory/brain-search.ts +234 -132
- package/src/memory/decisions.ts +21 -1
- package/src/memory/engine-compat.ts +25 -15
- package/src/memory/extraction-gate.ts +574 -0
- package/src/memory/index.ts +6 -2
- package/src/memory/learnings.ts +34 -1
- package/src/memory/llm-extraction.ts +524 -0
- package/src/memory/memory-bridge.ts +29 -12
- package/src/memory/observer-reflector.ts +829 -0
- package/src/memory/patterns.ts +30 -1
- package/src/memory/quality-scoring.ts +93 -9
- package/src/nexus/nexus-bridge.ts +444 -0
- package/src/scaffold.ts +42 -0
- package/src/stats/index.ts +11 -3
- package/src/store/brain-schema.ts +282 -0
- package/src/store/brain-sqlite.ts +55 -0
- package/src/store/migration-manager.ts +83 -12
- package/src/system/health.ts +17 -0
- package/src/tasks/complete.ts +7 -10
- package/src/tasks/graph-ops.ts +1 -0
- package/src/tasks/task-ops.ts +1 -1
- package/templates/CLEO-INJECTION.md +15 -0
package/src/memory/patterns.ts
CHANGED
|
@@ -31,6 +31,12 @@ export interface StorePatternParams {
|
|
|
31
31
|
mitigation?: string;
|
|
32
32
|
examples?: string[];
|
|
33
33
|
successRate?: number;
|
|
34
|
+
/**
|
|
35
|
+
* T549 Wave 1-A: origin of this pattern.
|
|
36
|
+
* Used to route sourceConfidence at write time.
|
|
37
|
+
* Values starting with 'auto' map to 'speculative'; otherwise 'agent'.
|
|
38
|
+
*/
|
|
39
|
+
source?: string;
|
|
34
40
|
}
|
|
35
41
|
|
|
36
42
|
/** Parameters for searching patterns. */
|
|
@@ -110,13 +116,31 @@ export async function storePattern(projectRoot: string, params: StorePatternPara
|
|
|
110
116
|
};
|
|
111
117
|
}
|
|
112
118
|
|
|
113
|
-
//
|
|
119
|
+
// T549 Wave 1-A: Tier routing for patterns.
|
|
120
|
+
// Patterns are medium-term procedural entries — they describe how things work.
|
|
121
|
+
// sourceConfidence routing (spec §4.1 Decision Tree):
|
|
122
|
+
// - source starts with 'auto' → 'speculative' (auto-extracted, unconfirmed)
|
|
123
|
+
// - otherwise → 'agent' (agent-observed during work)
|
|
124
|
+
// memoryTier = 'medium' (patterns have more than one observation and are project-scoped)
|
|
125
|
+
// memoryType = 'procedural' (patterns are always process knowledge)
|
|
126
|
+
// verified = false (patterns need validation through repetition, not boolean gate)
|
|
127
|
+
const memoryTier = 'medium' as const;
|
|
128
|
+
const memoryType = 'procedural' as const;
|
|
129
|
+
const sourceConfidence = params.source?.startsWith('auto')
|
|
130
|
+
? ('speculative' as const)
|
|
131
|
+
: ('agent' as const);
|
|
132
|
+
const verified = false;
|
|
133
|
+
|
|
134
|
+
// Compute quality score based on type, content richness, examples,
|
|
135
|
+
// and T549 source multiplier.
|
|
114
136
|
const examplesJson = params.examples ? JSON.stringify(params.examples) : '[]';
|
|
115
137
|
const qualityScore = computePatternQuality({
|
|
116
138
|
type: params.type,
|
|
117
139
|
pattern: params.pattern.trim(),
|
|
118
140
|
context: params.context.trim(),
|
|
119
141
|
examples_json: examplesJson,
|
|
142
|
+
sourceConfidence,
|
|
143
|
+
memoryTier,
|
|
120
144
|
});
|
|
121
145
|
|
|
122
146
|
// Create new entry
|
|
@@ -133,6 +157,11 @@ export async function storePattern(projectRoot: string, params: StorePatternPara
|
|
|
133
157
|
examplesJson,
|
|
134
158
|
extractedAt: now,
|
|
135
159
|
qualityScore,
|
|
160
|
+
// T549 Wave 1-A: tier/type/confidence assigned at write time
|
|
161
|
+
memoryTier,
|
|
162
|
+
memoryType,
|
|
163
|
+
sourceConfidence,
|
|
164
|
+
verified,
|
|
136
165
|
};
|
|
137
166
|
|
|
138
167
|
const saved = await accessor.addPattern(entry);
|
|
@@ -7,15 +7,79 @@
|
|
|
7
7
|
* Score formula per CA1 spec Section 3: source reliability * content richness * recency signals.
|
|
8
8
|
* Each helper clamps the result to [0.0, 1.0].
|
|
9
9
|
*
|
|
10
|
+
* T549 Wave 1-B: source confidence multipliers and memory tier bonuses are applied
|
|
11
|
+
* on top of the existing base formulas. The base formulas are unchanged; the
|
|
12
|
+
* multiplier and tier bonus are additive final transforms.
|
|
13
|
+
*
|
|
10
14
|
* Exported for use in backfill (T530) and future scoring hooks.
|
|
11
15
|
*
|
|
12
|
-
* @task T531
|
|
16
|
+
* @task T531 T549
|
|
13
17
|
* @epic T523
|
|
14
18
|
*/
|
|
15
19
|
|
|
20
|
+
import type { BrainMemoryTier, BrainSourceConfidence } from '../store/brain-schema.js';
|
|
21
|
+
|
|
16
22
|
/** Minimum quality score for inclusion in search results. */
|
|
17
23
|
export const QUALITY_SCORE_THRESHOLD = 0.3;
|
|
18
24
|
|
|
25
|
+
// ============================================================================
|
|
26
|
+
// T549: Source Confidence Multipliers
|
|
27
|
+
// ============================================================================
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Quality multiplier per source confidence level (T549 §3.1.5 and §5.3).
|
|
31
|
+
*
|
|
32
|
+
* Applied as a final multiplicative transform on top of the existing base score.
|
|
33
|
+
* Separate from content richness — captures trustworthiness of the source.
|
|
34
|
+
*
|
|
35
|
+
* | Level | Meaning | Multiplier |
|
|
36
|
+
* |---------------|-----------------------------------------|------------|
|
|
37
|
+
* | owner | Owner explicitly stated this fact | 1.0 |
|
|
38
|
+
* | task-outcome | Verified by completed task with result | 0.90 |
|
|
39
|
+
* | agent | Agent-inferred during work (default) | 0.70 |
|
|
40
|
+
* | speculative | Agent hypothesis, not yet corroborated | 0.40 |
|
|
41
|
+
*/
|
|
42
|
+
const SOURCE_MULTIPLIERS: Record<BrainSourceConfidence, number> = {
|
|
43
|
+
owner: 1.0,
|
|
44
|
+
'task-outcome': 0.9,
|
|
45
|
+
agent: 0.7,
|
|
46
|
+
speculative: 0.4,
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Tier bonus applied after the source multiplier (T549 Wave 1-B).
|
|
51
|
+
*
|
|
52
|
+
* Short-term entries get no bonus (they are new and unproven).
|
|
53
|
+
* Medium-term entries get a small bonus (survived session consolidation).
|
|
54
|
+
* Long-term entries get a larger bonus (architecturally proven).
|
|
55
|
+
*/
|
|
56
|
+
const TIER_BONUS: Record<BrainMemoryTier, number> = {
|
|
57
|
+
short: 0.0,
|
|
58
|
+
medium: 0.05,
|
|
59
|
+
long: 0.1,
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Apply the source confidence multiplier and optional memory tier bonus.
|
|
64
|
+
*
|
|
65
|
+
* This is the final transform in every compute function. It multiplies the
|
|
66
|
+
* raw content-richness score by the source multiplier, then adds the tier
|
|
67
|
+
* bonus, then clamps to [0.0, 1.0].
|
|
68
|
+
*
|
|
69
|
+
* @param rawScore - Score from the base content-richness formula
|
|
70
|
+
* @param sourceConfidence - Source reliability level (defaults to 'agent')
|
|
71
|
+
* @param memoryTier - Memory retention tier (defaults to 'short' = no bonus)
|
|
72
|
+
*/
|
|
73
|
+
export function applySourceMultiplier(
|
|
74
|
+
rawScore: number,
|
|
75
|
+
sourceConfidence: BrainSourceConfidence = 'agent',
|
|
76
|
+
memoryTier: BrainMemoryTier = 'short',
|
|
77
|
+
): number {
|
|
78
|
+
const multiplied = rawScore * SOURCE_MULTIPLIERS[sourceConfidence];
|
|
79
|
+
const withTierBonus = multiplied + TIER_BONUS[memoryTier];
|
|
80
|
+
return clamp(withTierBonus);
|
|
81
|
+
}
|
|
82
|
+
|
|
19
83
|
// ============================================================================
|
|
20
84
|
// Pattern quality
|
|
21
85
|
// ============================================================================
|
|
@@ -26,6 +90,10 @@ export interface PatternQualityInput {
|
|
|
26
90
|
pattern: string;
|
|
27
91
|
context?: string | null;
|
|
28
92
|
examples_json?: string | null;
|
|
93
|
+
/** T549: source reliability level — applies multiplier on top of base score. */
|
|
94
|
+
sourceConfidence?: BrainSourceConfidence;
|
|
95
|
+
/** T549: memory retention tier — applies tier bonus on top of multiplied score. */
|
|
96
|
+
memoryTier?: BrainMemoryTier;
|
|
29
97
|
}
|
|
30
98
|
|
|
31
99
|
/**
|
|
@@ -39,7 +107,8 @@ export interface PatternQualityInput {
|
|
|
39
107
|
* +0.10 if context exceeds 50 chars (contextual detail present)
|
|
40
108
|
* +0.10 if examples_json contains more than 3 items (empirically validated)
|
|
41
109
|
*
|
|
42
|
-
*
|
|
110
|
+
* T549 Wave 1-B: raw score is then multiplied by the source confidence multiplier
|
|
111
|
+
* and the memory tier bonus is added. Result clamped to [0.0, 1.0].
|
|
43
112
|
*/
|
|
44
113
|
export function computePatternQuality(params: PatternQualityInput): number {
|
|
45
114
|
let score = 0.4;
|
|
@@ -59,7 +128,7 @@ export function computePatternQuality(params: PatternQualityInput): number {
|
|
|
59
128
|
}
|
|
60
129
|
}
|
|
61
130
|
|
|
62
|
-
return
|
|
131
|
+
return applySourceMultiplier(score, params.sourceConfidence, params.memoryTier);
|
|
63
132
|
}
|
|
64
133
|
|
|
65
134
|
// ============================================================================
|
|
@@ -72,6 +141,10 @@ export interface LearningQualityInput {
|
|
|
72
141
|
actionable?: boolean | null;
|
|
73
142
|
insight: string;
|
|
74
143
|
application?: string | null;
|
|
144
|
+
/** T549: source reliability level — applies multiplier on top of base score. */
|
|
145
|
+
sourceConfidence?: BrainSourceConfidence;
|
|
146
|
+
/** T549: memory retention tier — applies tier bonus on top of multiplied score. */
|
|
147
|
+
memoryTier?: BrainMemoryTier;
|
|
75
148
|
}
|
|
76
149
|
|
|
77
150
|
/**
|
|
@@ -83,7 +156,8 @@ export interface LearningQualityInput {
|
|
|
83
156
|
* +0.10 if insight text exceeds 100 chars (detailed insight)
|
|
84
157
|
* +0.10 if application exceeds 20 chars (concrete application context)
|
|
85
158
|
*
|
|
86
|
-
*
|
|
159
|
+
* T549 Wave 1-B: raw score is then multiplied by the source confidence multiplier
|
|
160
|
+
* and the memory tier bonus is added. Result clamped to [0.0, 1.0].
|
|
87
161
|
*/
|
|
88
162
|
export function computeLearningQuality(params: LearningQualityInput): number {
|
|
89
163
|
let score = params.confidence ?? 0.5;
|
|
@@ -92,7 +166,7 @@ export function computeLearningQuality(params: LearningQualityInput): number {
|
|
|
92
166
|
if (params.insight.length > 100) score += 0.1;
|
|
93
167
|
if (params.application && params.application.length > 20) score += 0.1;
|
|
94
168
|
|
|
95
|
-
return
|
|
169
|
+
return applySourceMultiplier(score, params.sourceConfidence, params.memoryTier);
|
|
96
170
|
}
|
|
97
171
|
|
|
98
172
|
// ============================================================================
|
|
@@ -104,6 +178,10 @@ export interface DecisionQualityInput {
|
|
|
104
178
|
confidence: 'low' | 'medium' | 'high';
|
|
105
179
|
rationale?: string | null;
|
|
106
180
|
contextTaskId?: string | null;
|
|
181
|
+
/** T549: source reliability level — applies multiplier on top of base score. */
|
|
182
|
+
sourceConfidence?: BrainSourceConfidence;
|
|
183
|
+
/** T549: memory retention tier — applies tier bonus on top of multiplied score. */
|
|
184
|
+
memoryTier?: BrainMemoryTier;
|
|
107
185
|
}
|
|
108
186
|
|
|
109
187
|
/** Numeric value map from confidence level. */
|
|
@@ -121,7 +199,8 @@ const CONFIDENCE_SCORE_MAP: Record<'low' | 'medium' | 'high', number> = {
|
|
|
121
199
|
* +0.10 if rationale exceeds 50 chars (substantiated reasoning)
|
|
122
200
|
* +0.05 if linked to a specific task (anchored in real work)
|
|
123
201
|
*
|
|
124
|
-
*
|
|
202
|
+
* T549 Wave 1-B: raw score is then multiplied by the source confidence multiplier
|
|
203
|
+
* and the memory tier bonus is added. Result clamped to [0.0, 1.0].
|
|
125
204
|
*/
|
|
126
205
|
export function computeDecisionQuality(params: DecisionQualityInput): number {
|
|
127
206
|
let score = CONFIDENCE_SCORE_MAP[params.confidence] ?? 0.5;
|
|
@@ -129,7 +208,7 @@ export function computeDecisionQuality(params: DecisionQualityInput): number {
|
|
|
129
208
|
if (params.rationale && params.rationale.length > 50) score += 0.1;
|
|
130
209
|
if (params.contextTaskId) score += 0.05;
|
|
131
210
|
|
|
132
|
-
return
|
|
211
|
+
return applySourceMultiplier(score, params.sourceConfidence, params.memoryTier);
|
|
133
212
|
}
|
|
134
213
|
|
|
135
214
|
// ============================================================================
|
|
@@ -140,6 +219,10 @@ export function computeDecisionQuality(params: DecisionQualityInput): number {
|
|
|
140
219
|
export interface ObservationQualityInput {
|
|
141
220
|
text: string;
|
|
142
221
|
title?: string | null;
|
|
222
|
+
/** T549: source reliability level — applies multiplier on top of base score. */
|
|
223
|
+
sourceConfidence?: BrainSourceConfidence;
|
|
224
|
+
/** T549: memory retention tier — applies tier bonus on top of multiplied score. */
|
|
225
|
+
memoryTier?: BrainMemoryTier;
|
|
143
226
|
}
|
|
144
227
|
|
|
145
228
|
/**
|
|
@@ -150,7 +233,8 @@ export interface ObservationQualityInput {
|
|
|
150
233
|
* +0.10 if text exceeds 200 chars (rich narrative)
|
|
151
234
|
* +0.05 if title exceeds 10 chars (meaningful label)
|
|
152
235
|
*
|
|
153
|
-
*
|
|
236
|
+
* T549 Wave 1-B: raw score is then multiplied by the source confidence multiplier
|
|
237
|
+
* and the memory tier bonus is added. Result clamped to [0.0, 1.0].
|
|
154
238
|
*/
|
|
155
239
|
export function computeObservationQuality(params: ObservationQualityInput): number {
|
|
156
240
|
let score = 0.6;
|
|
@@ -158,7 +242,7 @@ export function computeObservationQuality(params: ObservationQualityInput): numb
|
|
|
158
242
|
if (params.text && params.text.length > 200) score += 0.1;
|
|
159
243
|
if (params.title && params.title.length > 10) score += 0.05;
|
|
160
244
|
|
|
161
|
-
return
|
|
245
|
+
return applySourceMultiplier(score, params.sourceConfidence, params.memoryTier);
|
|
162
246
|
}
|
|
163
247
|
|
|
164
248
|
// ============================================================================
|
|
@@ -0,0 +1,444 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Nexus Bridge Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates .cleo/nexus-bridge.md from nexus.db content. This file is
|
|
5
|
+
* the code intelligence equivalent of memory-bridge.md — it summarizes
|
|
6
|
+
* the codebase graph for agent consumption.
|
|
7
|
+
*
|
|
8
|
+
* Content assembly:
|
|
9
|
+
* - Index status (file count, node count, relation count, last indexed)
|
|
10
|
+
* - Symbol counts by kind (functions, classes, methods, etc.)
|
|
11
|
+
* - Relation counts by type (calls, imports, extends, etc.)
|
|
12
|
+
* - Top entry points (most outgoing CALLS edges, exported)
|
|
13
|
+
* - Functional clusters (communities by symbol count)
|
|
14
|
+
* - Code intelligence command reference
|
|
15
|
+
*
|
|
16
|
+
* Regeneration triggers:
|
|
17
|
+
* - cleo nexus analyze (called after pipeline flush)
|
|
18
|
+
* - Manual: cleo nexus refresh-bridge
|
|
19
|
+
*
|
|
20
|
+
* @task T551
|
|
21
|
+
* @epic T549
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
25
|
+
import { join } from 'node:path';
|
|
26
|
+
import type { DatabaseSync } from 'node:sqlite';
|
|
27
|
+
|
|
28
|
+
// ============================================================================
|
|
29
|
+
// Types
|
|
30
|
+
// ============================================================================
|
|
31
|
+
|
|
32
|
+
/** Raw row for node kind counts. */
|
|
33
|
+
interface NodeKindCountRow {
|
|
34
|
+
kind: string;
|
|
35
|
+
count: number;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/** Raw row for relation type counts. */
|
|
39
|
+
interface RelationTypeCountRow {
|
|
40
|
+
type: string;
|
|
41
|
+
count: number;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/** Raw row for top entry points. */
|
|
45
|
+
interface EntryPointRow {
|
|
46
|
+
name: string | null;
|
|
47
|
+
file_path: string | null;
|
|
48
|
+
callees: number;
|
|
49
|
+
is_exported: number;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/** Raw row for community/cluster nodes. */
|
|
53
|
+
interface CommunityRow {
|
|
54
|
+
id: string;
|
|
55
|
+
label: string;
|
|
56
|
+
meta_json: string | null;
|
|
57
|
+
indexed_at: string;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/** Raw row for index metadata. */
|
|
61
|
+
interface IndexMetaRow {
|
|
62
|
+
total_nodes: number;
|
|
63
|
+
total_relations: number;
|
|
64
|
+
file_count: number;
|
|
65
|
+
last_indexed_at: string | null;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// ============================================================================
|
|
69
|
+
// DB helpers
|
|
70
|
+
// ============================================================================
|
|
71
|
+
|
|
72
|
+
/** Type-safe wrapper for DatabaseSync.prepare().all(). */
|
|
73
|
+
function typedAll<T>(db: DatabaseSync, sql: string, ...params: (string | number | null)[]): T[] {
|
|
74
|
+
return db.prepare(sql).all(...params) as T[];
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/** Type-safe wrapper for DatabaseSync.prepare().get(). */
|
|
78
|
+
function typedGet<T>(
|
|
79
|
+
db: DatabaseSync,
|
|
80
|
+
sql: string,
|
|
81
|
+
...params: (string | number | null)[]
|
|
82
|
+
): T | undefined {
|
|
83
|
+
return db.prepare(sql).get(...params) as T | undefined;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// ============================================================================
|
|
87
|
+
// Query helpers
|
|
88
|
+
// ============================================================================
|
|
89
|
+
|
|
90
|
+
/** Query total node/relation counts and last indexed timestamp. */
|
|
91
|
+
function queryIndexMeta(db: DatabaseSync, projectId: string): IndexMetaRow {
|
|
92
|
+
try {
|
|
93
|
+
const nodeMeta = typedGet<{
|
|
94
|
+
total_nodes: number;
|
|
95
|
+
file_count: number;
|
|
96
|
+
last_indexed_at: string | null;
|
|
97
|
+
}>(
|
|
98
|
+
db,
|
|
99
|
+
`SELECT COUNT(*) as total_nodes,
|
|
100
|
+
COUNT(CASE WHEN kind = 'file' THEN 1 END) as file_count,
|
|
101
|
+
MAX(indexed_at) as last_indexed_at
|
|
102
|
+
FROM nexus_nodes
|
|
103
|
+
WHERE project_id = ?`,
|
|
104
|
+
projectId,
|
|
105
|
+
);
|
|
106
|
+
|
|
107
|
+
const relMeta = typedGet<{ total_relations: number }>(
|
|
108
|
+
db,
|
|
109
|
+
`SELECT COUNT(*) as total_relations
|
|
110
|
+
FROM nexus_relations
|
|
111
|
+
WHERE project_id = ?`,
|
|
112
|
+
projectId,
|
|
113
|
+
);
|
|
114
|
+
|
|
115
|
+
return {
|
|
116
|
+
total_nodes: nodeMeta?.total_nodes ?? 0,
|
|
117
|
+
total_relations: relMeta?.total_relations ?? 0,
|
|
118
|
+
file_count: nodeMeta?.file_count ?? 0,
|
|
119
|
+
last_indexed_at: nodeMeta?.last_indexed_at ?? null,
|
|
120
|
+
};
|
|
121
|
+
} catch {
|
|
122
|
+
return {
|
|
123
|
+
total_nodes: 0,
|
|
124
|
+
total_relations: 0,
|
|
125
|
+
file_count: 0,
|
|
126
|
+
last_indexed_at: null,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/** Query node counts grouped by kind. */
|
|
132
|
+
function queryNodeKindCounts(db: DatabaseSync, projectId: string): NodeKindCountRow[] {
|
|
133
|
+
try {
|
|
134
|
+
return typedAll<NodeKindCountRow>(
|
|
135
|
+
db,
|
|
136
|
+
`SELECT kind, COUNT(*) as count
|
|
137
|
+
FROM nexus_nodes
|
|
138
|
+
WHERE project_id = ?
|
|
139
|
+
AND kind NOT IN ('file', 'folder', 'community', 'process')
|
|
140
|
+
GROUP BY kind
|
|
141
|
+
ORDER BY count DESC
|
|
142
|
+
LIMIT 10`,
|
|
143
|
+
projectId,
|
|
144
|
+
);
|
|
145
|
+
} catch {
|
|
146
|
+
return [];
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/** Query relation counts grouped by type. */
|
|
151
|
+
function queryRelationTypeCounts(db: DatabaseSync, projectId: string): RelationTypeCountRow[] {
|
|
152
|
+
try {
|
|
153
|
+
return typedAll<RelationTypeCountRow>(
|
|
154
|
+
db,
|
|
155
|
+
`SELECT type, COUNT(*) as count
|
|
156
|
+
FROM nexus_relations
|
|
157
|
+
WHERE project_id = ?
|
|
158
|
+
AND type NOT IN ('member_of', 'step_in_process', 'entry_point_of')
|
|
159
|
+
GROUP BY type
|
|
160
|
+
ORDER BY count DESC
|
|
161
|
+
LIMIT 8`,
|
|
162
|
+
projectId,
|
|
163
|
+
);
|
|
164
|
+
} catch {
|
|
165
|
+
return [];
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/** Query top entry points by outgoing CALLS edge count. */
|
|
170
|
+
function queryTopEntryPoints(db: DatabaseSync, projectId: string, limit = 5): EntryPointRow[] {
|
|
171
|
+
try {
|
|
172
|
+
return typedAll<EntryPointRow>(
|
|
173
|
+
db,
|
|
174
|
+
`SELECT n.name, n.file_path, COUNT(*) as callees, n.is_exported
|
|
175
|
+
FROM nexus_relations r
|
|
176
|
+
JOIN nexus_nodes n ON r.source_id = n.id
|
|
177
|
+
WHERE r.type = 'calls'
|
|
178
|
+
AND r.project_id = ?
|
|
179
|
+
AND n.kind IN ('function', 'method', 'constructor')
|
|
180
|
+
GROUP BY r.source_id
|
|
181
|
+
ORDER BY callees DESC
|
|
182
|
+
LIMIT ?`,
|
|
183
|
+
projectId,
|
|
184
|
+
limit,
|
|
185
|
+
);
|
|
186
|
+
} catch {
|
|
187
|
+
return [];
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/** Query community nodes ordered by member count. */
|
|
192
|
+
function queryCommunities(db: DatabaseSync, projectId: string, limit = 6): CommunityRow[] {
|
|
193
|
+
try {
|
|
194
|
+
return typedAll<CommunityRow>(
|
|
195
|
+
db,
|
|
196
|
+
`SELECT id, label, meta_json, indexed_at
|
|
197
|
+
FROM nexus_nodes
|
|
198
|
+
WHERE project_id = ?
|
|
199
|
+
AND kind = 'community'
|
|
200
|
+
ORDER BY indexed_at DESC
|
|
201
|
+
LIMIT ?`,
|
|
202
|
+
projectId,
|
|
203
|
+
limit,
|
|
204
|
+
);
|
|
205
|
+
} catch {
|
|
206
|
+
return [];
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/** Query count of execution flow (process) nodes. */
|
|
211
|
+
function queryProcessCount(db: DatabaseSync, projectId: string): number {
|
|
212
|
+
try {
|
|
213
|
+
const row = typedGet<{ count: number }>(
|
|
214
|
+
db,
|
|
215
|
+
`SELECT COUNT(*) as count
|
|
216
|
+
FROM nexus_nodes
|
|
217
|
+
WHERE project_id = ?
|
|
218
|
+
AND kind = 'process'`,
|
|
219
|
+
projectId,
|
|
220
|
+
);
|
|
221
|
+
return row?.count ?? 0;
|
|
222
|
+
} catch {
|
|
223
|
+
return 0;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
// ============================================================================
|
|
228
|
+
// Content generation
|
|
229
|
+
// ============================================================================
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Generate nexus bridge markdown content from nexus.db.
|
|
233
|
+
* Returns the full markdown string (does not write to disk).
|
|
234
|
+
*
|
|
235
|
+
* @param projectId - Project registry ID used to scope nexus.db queries
|
|
236
|
+
* @param repoPath - Absolute path to the repository root (used for display)
|
|
237
|
+
* @returns Markdown string summarizing the code intelligence index
|
|
238
|
+
*/
|
|
239
|
+
export async function generateNexusBridgeContent(
|
|
240
|
+
projectId: string,
|
|
241
|
+
repoPath: string,
|
|
242
|
+
): Promise<string> {
|
|
243
|
+
const { getNexusDb, getNexusNativeDb } = await import('../store/nexus-sqlite.js');
|
|
244
|
+
|
|
245
|
+
// Ensure DB is initialized
|
|
246
|
+
await getNexusDb();
|
|
247
|
+
const nativeDb = getNexusNativeDb();
|
|
248
|
+
|
|
249
|
+
if (!nativeDb) {
|
|
250
|
+
return buildEmptyBridge(repoPath);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
// Check whether this project has been indexed at all
|
|
254
|
+
const meta = queryIndexMeta(nativeDb, projectId);
|
|
255
|
+
if (meta.total_nodes === 0) {
|
|
256
|
+
return buildEmptyBridge(repoPath);
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
const lines: string[] = [
|
|
260
|
+
'# CLEO Nexus Bridge — Code Intelligence',
|
|
261
|
+
'',
|
|
262
|
+
`> Auto-generated from nexus index. Regenerate with \`cleo nexus analyze\`.`,
|
|
263
|
+
`> Project: ${repoPath}`,
|
|
264
|
+
'',
|
|
265
|
+
];
|
|
266
|
+
|
|
267
|
+
// --- Index Status ---
|
|
268
|
+
const kindCounts = queryNodeKindCounts(nativeDb, projectId);
|
|
269
|
+
const relCounts = queryRelationTypeCounts(nativeDb, projectId);
|
|
270
|
+
const processCount = queryProcessCount(nativeDb, projectId);
|
|
271
|
+
const communities = queryCommunities(nativeDb, projectId);
|
|
272
|
+
|
|
273
|
+
const symbolBreakdown = kindCounts.map((r) => `${r.kind}s: ${r.count}`).join(', ');
|
|
274
|
+
|
|
275
|
+
const callsCount = relCounts.find((r) => r.type === 'calls')?.count ?? 0;
|
|
276
|
+
const importsCount = relCounts.find((r) => r.type === 'imports')?.count ?? 0;
|
|
277
|
+
const extendsCount = relCounts.find((r) => r.type === 'extends')?.count ?? 0;
|
|
278
|
+
|
|
279
|
+
const freshnessLabel = meta.last_indexed_at ? meta.last_indexed_at.slice(0, 10) : 'unknown';
|
|
280
|
+
|
|
281
|
+
lines.push('## Index Status');
|
|
282
|
+
lines.push('');
|
|
283
|
+
lines.push(`- **Files**: ${meta.file_count.toLocaleString()} indexed`);
|
|
284
|
+
lines.push(
|
|
285
|
+
`- **Symbols**: ${meta.total_nodes.toLocaleString()} total${symbolBreakdown ? ` (${symbolBreakdown})` : ''}`,
|
|
286
|
+
);
|
|
287
|
+
lines.push(
|
|
288
|
+
`- **Relations**: ${meta.total_relations.toLocaleString()} total (calls: ${callsCount.toLocaleString()}, imports: ${importsCount.toLocaleString()}, extends: ${extendsCount.toLocaleString()})`,
|
|
289
|
+
);
|
|
290
|
+
lines.push(`- **Communities**: ${communities.length} functional clusters`);
|
|
291
|
+
lines.push(`- **Execution Flows**: ${processCount} traced processes`);
|
|
292
|
+
lines.push(`- **Last Indexed**: ${meta.last_indexed_at ?? 'never'}`);
|
|
293
|
+
lines.push(`- **Date**: ${freshnessLabel}`);
|
|
294
|
+
lines.push('');
|
|
295
|
+
|
|
296
|
+
// --- Top Entry Points ---
|
|
297
|
+
const entryPoints = queryTopEntryPoints(nativeDb, projectId);
|
|
298
|
+
if (entryPoints.length > 0) {
|
|
299
|
+
lines.push('## Top Entry Points');
|
|
300
|
+
lines.push('');
|
|
301
|
+
entryPoints.forEach((ep, i) => {
|
|
302
|
+
const name = ep.name ?? '(unknown)';
|
|
303
|
+
const filePath = ep.file_path ?? '';
|
|
304
|
+
const displayPath = filePath.length > 60 ? `...${filePath.slice(-57)}` : filePath;
|
|
305
|
+
lines.push(`${i + 1}. \`${name}\` — ${displayPath} (${ep.callees} callees)`);
|
|
306
|
+
});
|
|
307
|
+
lines.push('');
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
// --- Functional Clusters ---
|
|
311
|
+
if (communities.length > 0) {
|
|
312
|
+
lines.push('## Functional Clusters');
|
|
313
|
+
lines.push('');
|
|
314
|
+
communities.forEach((c, i) => {
|
|
315
|
+
let symbolCount = 0;
|
|
316
|
+
let topFolder = '';
|
|
317
|
+
try {
|
|
318
|
+
if (c.meta_json) {
|
|
319
|
+
const meta = JSON.parse(c.meta_json) as Record<string, unknown>;
|
|
320
|
+
symbolCount = typeof meta['symbolCount'] === 'number' ? meta['symbolCount'] : 0;
|
|
321
|
+
const folders = meta['topFolders'];
|
|
322
|
+
if (Array.isArray(folders) && folders.length > 0) {
|
|
323
|
+
topFolder = String(folders[0]);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
} catch {
|
|
327
|
+
// ignore parse errors
|
|
328
|
+
}
|
|
329
|
+
const symbolsLabel = symbolCount > 0 ? ` (${symbolCount} symbols)` : '';
|
|
330
|
+
const folderLabel = topFolder ? ` — ${topFolder}` : '';
|
|
331
|
+
lines.push(`${i + 1}. **${c.label}**${symbolsLabel}${folderLabel}`);
|
|
332
|
+
});
|
|
333
|
+
lines.push('');
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
// --- Code Intelligence Commands ---
|
|
337
|
+
lines.push('## Code Intelligence Commands');
|
|
338
|
+
lines.push('');
|
|
339
|
+
lines.push('| Need | Command |');
|
|
340
|
+
lines.push('|------|---------|');
|
|
341
|
+
lines.push('| What calls this function? | `cleo nexus context <symbol>` |');
|
|
342
|
+
lines.push('| What breaks if I change this? | `cleo nexus impact <symbol>` |');
|
|
343
|
+
lines.push('| What functional areas exist? | `cleo nexus clusters` |');
|
|
344
|
+
lines.push('| What execution flows exist? | `cleo nexus flows` |');
|
|
345
|
+
lines.push('| Re-index after code changes | `cleo nexus analyze` |');
|
|
346
|
+
lines.push('| Index freshness check | `cleo nexus status` |');
|
|
347
|
+
lines.push('');
|
|
348
|
+
|
|
349
|
+
return lines.join('\n');
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
/**
|
|
353
|
+
* Write nexus bridge content to .cleo/nexus-bridge.md.
|
|
354
|
+
*
|
|
355
|
+
* @param projectRoot - Absolute path to the project root
|
|
356
|
+
* @param projectId - Project registry ID (used to scope nexus.db queries)
|
|
357
|
+
* @returns Result with path and whether the file was written
|
|
358
|
+
*/
|
|
359
|
+
export async function writeNexusBridge(
|
|
360
|
+
projectRoot: string,
|
|
361
|
+
projectId?: string,
|
|
362
|
+
): Promise<{ path: string; written: boolean }> {
|
|
363
|
+
const cleoDir = join(projectRoot, '.cleo');
|
|
364
|
+
const bridgePath = join(cleoDir, 'nexus-bridge.md');
|
|
365
|
+
|
|
366
|
+
// Derive project ID from path if not provided (matches nexus analyze convention)
|
|
367
|
+
const resolvedProjectId =
|
|
368
|
+
projectId ?? Buffer.from(projectRoot).toString('base64url').slice(0, 32);
|
|
369
|
+
|
|
370
|
+
try {
|
|
371
|
+
const content = await generateNexusBridgeContent(resolvedProjectId, projectRoot);
|
|
372
|
+
|
|
373
|
+
if (!existsSync(cleoDir)) {
|
|
374
|
+
mkdirSync(cleoDir, { recursive: true });
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
// Only write if content changed (avoid unnecessary git noise)
|
|
378
|
+
if (existsSync(bridgePath)) {
|
|
379
|
+
const existing = readFileSync(bridgePath, 'utf-8');
|
|
380
|
+
// Compare without the date line since it changes daily
|
|
381
|
+
const stripDate = (s: string) => s.replace(/^> Date: .*/m, '');
|
|
382
|
+
if (stripDate(existing) === stripDate(content)) {
|
|
383
|
+
return { path: bridgePath, written: false };
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
writeFileSync(bridgePath, content, 'utf-8');
|
|
388
|
+
return { path: bridgePath, written: true };
|
|
389
|
+
} catch (err) {
|
|
390
|
+
console.error(
|
|
391
|
+
'[CLEO] Failed to write nexus bridge:',
|
|
392
|
+
err instanceof Error ? err.message : String(err),
|
|
393
|
+
);
|
|
394
|
+
return { path: bridgePath, written: false };
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
/**
|
|
399
|
+
* Best-effort nexus bridge refresh. Never throws.
|
|
400
|
+
* Called after cleo nexus analyze completes.
|
|
401
|
+
*
|
|
402
|
+
* @param projectRoot - Absolute path to the project root
|
|
403
|
+
* @param projectId - Project registry ID (used to scope nexus.db queries)
|
|
404
|
+
*/
|
|
405
|
+
export async function refreshNexusBridge(projectRoot: string, projectId?: string): Promise<void> {
|
|
406
|
+
try {
|
|
407
|
+
await writeNexusBridge(projectRoot, projectId);
|
|
408
|
+
} catch (err) {
|
|
409
|
+
console.error(
|
|
410
|
+
'[CLEO] Nexus bridge refresh failed:',
|
|
411
|
+
err instanceof Error ? err.message : String(err),
|
|
412
|
+
);
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
// ============================================================================
|
|
417
|
+
// Helpers
|
|
418
|
+
// ============================================================================
|
|
419
|
+
|
|
420
|
+
/** Build placeholder content when no index data exists. */
|
|
421
|
+
function buildEmptyBridge(repoPath: string): string {
|
|
422
|
+
return [
|
|
423
|
+
'# CLEO Nexus Bridge — Code Intelligence',
|
|
424
|
+
'',
|
|
425
|
+
`> Auto-generated from nexus index. Regenerate with \`cleo nexus analyze\`.`,
|
|
426
|
+
`> Project: ${repoPath}`,
|
|
427
|
+
'',
|
|
428
|
+
'## Index Status',
|
|
429
|
+
'',
|
|
430
|
+
'Not indexed. Run `cleo nexus analyze` to build the code intelligence index.',
|
|
431
|
+
'',
|
|
432
|
+
'## Code Intelligence Commands',
|
|
433
|
+
'',
|
|
434
|
+
'| Need | Command |',
|
|
435
|
+
'|------|---------|',
|
|
436
|
+
'| Build the index | `cleo nexus analyze` |',
|
|
437
|
+
'| Check index status | `cleo nexus status` |',
|
|
438
|
+
'| What calls this function? | `cleo nexus context <symbol>` |',
|
|
439
|
+
'| What breaks if I change this? | `cleo nexus impact <symbol>` |',
|
|
440
|
+
'| What functional areas exist? | `cleo nexus clusters` |',
|
|
441
|
+
'| What execution flows exist? | `cleo nexus flows` |',
|
|
442
|
+
'',
|
|
443
|
+
].join('\n');
|
|
444
|
+
}
|