@cleocode/core 2026.4.31 → 2026.4.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/adapter-registry.js +64 -0
- package/dist/adapters/adapter-registry.js.map +1 -0
- package/dist/adapters/discovery.js +83 -0
- package/dist/adapters/discovery.js.map +1 -0
- package/dist/adapters/index.js +9 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/manager.js +260 -0
- package/dist/adapters/manager.js.map +1 -0
- package/dist/admin/export-tasks.js +171 -0
- package/dist/admin/export-tasks.js.map +1 -0
- package/dist/admin/export.js +103 -0
- package/dist/admin/export.js.map +1 -0
- package/dist/admin/help.js +106 -0
- package/dist/admin/help.js.map +1 -0
- package/dist/admin/import-tasks.js +182 -0
- package/dist/admin/import-tasks.js.map +1 -0
- package/dist/admin/import.js +129 -0
- package/dist/admin/import.js.map +1 -0
- package/dist/admin/index.js +13 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/adrs/find.js +134 -0
- package/dist/adrs/find.js.map +1 -0
- package/dist/adrs/index.js +15 -0
- package/dist/adrs/index.js.map +1 -0
- package/dist/adrs/link-pipeline.js +160 -0
- package/dist/adrs/link-pipeline.js.map +1 -0
- package/dist/adrs/list.js +43 -0
- package/dist/adrs/list.js.map +1 -0
- package/dist/adrs/parse.js +51 -0
- package/dist/adrs/parse.js.map +1 -0
- package/dist/adrs/show.js +22 -0
- package/dist/adrs/show.js.map +1 -0
- package/dist/adrs/sync.js +232 -0
- package/dist/adrs/sync.js.map +1 -0
- package/dist/adrs/types.js +9 -0
- package/dist/adrs/types.js.map +1 -0
- package/dist/adrs/validate.js +57 -0
- package/dist/adrs/validate.js.map +1 -0
- package/dist/agents/agent-registry.js +288 -0
- package/dist/agents/agent-registry.js.map +1 -0
- package/dist/agents/agent-schema.js +82 -0
- package/dist/agents/agent-schema.js.map +1 -0
- package/dist/agents/capacity.js +116 -0
- package/dist/agents/capacity.js.map +1 -0
- package/dist/agents/execution-learning.js +474 -0
- package/dist/agents/execution-learning.js.map +1 -0
- package/dist/agents/health-monitor.js +217 -0
- package/dist/agents/health-monitor.js.map +1 -0
- package/dist/agents/index.js +29 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/registry.js +314 -0
- package/dist/agents/registry.js.map +1 -0
- package/dist/agents/retry.js +215 -0
- package/dist/agents/retry.js.map +1 -0
- package/dist/audit-prune.js +94 -0
- package/dist/audit-prune.js.map +1 -0
- package/dist/audit.js +68 -0
- package/dist/audit.js.map +1 -0
- package/dist/backfill/index.js +229 -0
- package/dist/backfill/index.js.map +1 -0
- package/dist/bootstrap.js +435 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/caamp/adapter.js +259 -0
- package/dist/caamp/adapter.js.map +1 -0
- package/dist/caamp/capability-check.js +38 -0
- package/dist/caamp/capability-check.js.map +1 -0
- package/dist/caamp/index.js +21 -0
- package/dist/caamp/index.js.map +1 -0
- package/dist/caamp-init.js +16 -0
- package/dist/caamp-init.js.map +1 -0
- package/dist/cleo.js +322 -0
- package/dist/cleo.js.map +1 -0
- package/dist/code/index.js +14 -0
- package/dist/code/index.js.map +1 -0
- package/dist/code/outline.js +165 -0
- package/dist/code/outline.js.map +1 -0
- package/dist/code/parser.js +420 -0
- package/dist/code/parser.js.map +1 -0
- package/dist/code/search.js +135 -0
- package/dist/code/search.js.map +1 -0
- package/dist/code/unfold.js +155 -0
- package/dist/code/unfold.js.map +1 -0
- package/dist/codebase-map/analyzers/architecture.js +129 -0
- package/dist/codebase-map/analyzers/architecture.js.map +1 -0
- package/dist/codebase-map/analyzers/concerns.js +122 -0
- package/dist/codebase-map/analyzers/concerns.js.map +1 -0
- package/dist/codebase-map/analyzers/conventions.js +149 -0
- package/dist/codebase-map/analyzers/conventions.js.map +1 -0
- package/dist/codebase-map/analyzers/integrations.js +108 -0
- package/dist/codebase-map/analyzers/integrations.js.map +1 -0
- package/dist/codebase-map/analyzers/stack.js +117 -0
- package/dist/codebase-map/analyzers/stack.js.map +1 -0
- package/dist/codebase-map/analyzers/structure.js +137 -0
- package/dist/codebase-map/analyzers/structure.js.map +1 -0
- package/dist/codebase-map/analyzers/testing.js +118 -0
- package/dist/codebase-map/analyzers/testing.js.map +1 -0
- package/dist/codebase-map/index.js +57 -0
- package/dist/codebase-map/index.js.map +1 -0
- package/dist/codebase-map/store.js +122 -0
- package/dist/codebase-map/store.js.map +1 -0
- package/dist/codebase-map/summary.js +152 -0
- package/dist/codebase-map/summary.js.map +1 -0
- package/dist/compliance/index.js +288 -0
- package/dist/compliance/index.js.map +1 -0
- package/dist/compliance/protocol-enforcement.js +332 -0
- package/dist/compliance/protocol-enforcement.js.map +1 -0
- package/dist/compliance/protocol-rules.js +786 -0
- package/dist/compliance/protocol-rules.js.map +1 -0
- package/dist/compliance/protocol-types.js +79 -0
- package/dist/compliance/protocol-types.js.map +1 -0
- package/dist/compliance/store.js +53 -0
- package/dist/compliance/store.js.map +1 -0
- package/dist/conduit/conduit-client.js +107 -0
- package/dist/conduit/conduit-client.js.map +1 -0
- package/dist/conduit/factory.js +52 -0
- package/dist/conduit/factory.js.map +1 -0
- package/dist/conduit/http-transport.js +155 -0
- package/dist/conduit/http-transport.js.map +1 -0
- package/dist/conduit/index.js +15 -0
- package/dist/conduit/index.js.map +1 -0
- package/dist/conduit/local-transport.js +255 -0
- package/dist/conduit/local-transport.js.map +1 -0
- package/dist/conduit/sse-transport.js +299 -0
- package/dist/conduit/sse-transport.js.map +1 -0
- package/dist/config/build-config.js +29 -0
- package/dist/config/build-config.js.map +1 -0
- package/dist/config.js +400 -0
- package/dist/config.js.map +1 -0
- package/dist/constants.js +18 -0
- package/dist/constants.js.map +1 -0
- package/dist/context/index.js +137 -0
- package/dist/context/index.js.map +1 -0
- package/dist/crypto/credentials.js +219 -0
- package/dist/crypto/credentials.js.map +1 -0
- package/dist/discovery.js +182 -0
- package/dist/discovery.js.map +1 -0
- package/dist/engine-result.js +12 -0
- package/dist/engine-result.js.map +1 -0
- package/dist/error-catalog.js +404 -0
- package/dist/error-catalog.js.map +1 -0
- package/dist/error-registry.js +393 -0
- package/dist/error-registry.js.map +1 -0
- package/dist/errors.js +173 -0
- package/dist/errors.js.map +1 -0
- package/dist/hooks/handlers/agent-hooks.js +106 -0
- package/dist/hooks/handlers/agent-hooks.js.map +1 -0
- package/dist/hooks/handlers/context-hooks.js +111 -0
- package/dist/hooks/handlers/context-hooks.js.map +1 -0
- package/dist/hooks/handlers/error-hooks.js +52 -0
- package/dist/hooks/handlers/error-hooks.js.map +1 -0
- package/dist/hooks/handlers/file-hooks.js +104 -0
- package/dist/hooks/handlers/file-hooks.js.map +1 -0
- package/dist/hooks/handlers/handler-helpers.js +61 -0
- package/dist/hooks/handlers/handler-helpers.js.map +1 -0
- package/dist/hooks/handlers/index.d.ts +4 -0
- package/dist/hooks/handlers/index.d.ts.map +1 -1
- package/dist/hooks/handlers/index.js +34 -0
- package/dist/hooks/handlers/index.js.map +1 -0
- package/dist/hooks/handlers/intelligence-hooks.d.ts +26 -0
- package/dist/hooks/handlers/intelligence-hooks.d.ts.map +1 -0
- package/dist/hooks/handlers/intelligence-hooks.js +69 -0
- package/dist/hooks/handlers/intelligence-hooks.js.map +1 -0
- package/dist/hooks/handlers/memory-bridge-refresh.js +42 -0
- package/dist/hooks/handlers/memory-bridge-refresh.js.map +1 -0
- package/dist/hooks/handlers/notification-hooks.js +62 -0
- package/dist/hooks/handlers/notification-hooks.js.map +1 -0
- package/dist/hooks/handlers/session-hooks.d.ts +16 -0
- package/dist/hooks/handlers/session-hooks.d.ts.map +1 -1
- package/dist/hooks/handlers/session-hooks.js +157 -0
- package/dist/hooks/handlers/session-hooks.js.map +1 -0
- package/dist/hooks/handlers/task-hooks.js +65 -0
- package/dist/hooks/handlers/task-hooks.js.map +1 -0
- package/dist/hooks/handlers/watchdog-hooks.d.ts +49 -0
- package/dist/hooks/handlers/watchdog-hooks.d.ts.map +1 -0
- package/dist/hooks/handlers/watchdog-hooks.js +162 -0
- package/dist/hooks/handlers/watchdog-hooks.js.map +1 -0
- package/dist/hooks/handlers/work-capture-hooks.js +165 -0
- package/dist/hooks/handlers/work-capture-hooks.js.map +1 -0
- package/dist/hooks/index.js +13 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/payload-schemas.js +220 -0
- package/dist/hooks/payload-schemas.js.map +1 -0
- package/dist/hooks/provider-hooks.js +66 -0
- package/dist/hooks/provider-hooks.js.map +1 -0
- package/dist/hooks/registry.js +229 -0
- package/dist/hooks/registry.js.map +1 -0
- package/dist/hooks/types.js +66 -0
- package/dist/hooks/types.js.map +1 -0
- package/dist/hooks.js +136 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.js +3828 -2167
- package/dist/index.js.map +4 -4
- package/dist/init.js +920 -0
- package/dist/init.js.map +1 -0
- package/dist/inject/index.js +82 -0
- package/dist/inject/index.js.map +1 -0
- package/dist/injection.d.ts +13 -1
- package/dist/injection.d.ts.map +1 -1
- package/dist/injection.js +377 -0
- package/dist/injection.js.map +1 -0
- package/dist/intelligence/adaptive-validation.js +497 -0
- package/dist/intelligence/adaptive-validation.js.map +1 -0
- package/dist/intelligence/impact.js +675 -0
- package/dist/intelligence/impact.js.map +1 -0
- package/dist/intelligence/index.js +22 -0
- package/dist/intelligence/index.js.map +1 -0
- package/dist/intelligence/patterns.js +492 -0
- package/dist/intelligence/patterns.js.map +1 -0
- package/dist/intelligence/prediction.js +499 -0
- package/dist/intelligence/prediction.js.map +1 -0
- package/dist/intelligence/types.js +13 -0
- package/dist/intelligence/types.js.map +1 -0
- package/dist/internal.d.ts +8 -3
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +320 -0
- package/dist/internal.js.map +1 -0
- package/dist/issue/create.js +121 -0
- package/dist/issue/create.js.map +1 -0
- package/dist/issue/diagnostics.js +59 -0
- package/dist/issue/diagnostics.js.map +1 -0
- package/dist/issue/index.js +10 -0
- package/dist/issue/index.js.map +1 -0
- package/dist/issue/template-parser.js +267 -0
- package/dist/issue/template-parser.js.map +1 -0
- package/dist/json-schema-validator.js +76 -0
- package/dist/json-schema-validator.js.map +1 -0
- package/dist/lib/index.js +11 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/retry.js +152 -0
- package/dist/lib/retry.js.map +1 -0
- package/dist/lib/tree-sitter-languages.js +75 -0
- package/dist/lib/tree-sitter-languages.js.map +1 -0
- package/dist/lifecycle/chain-composition.js +152 -0
- package/dist/lifecycle/chain-composition.js.map +1 -0
- package/dist/lifecycle/chain-store.js +246 -0
- package/dist/lifecycle/chain-store.js.map +1 -0
- package/dist/lifecycle/consolidate-rcasd.js +352 -0
- package/dist/lifecycle/consolidate-rcasd.js.map +1 -0
- package/dist/lifecycle/default-chain.js +176 -0
- package/dist/lifecycle/default-chain.js.map +1 -0
- package/dist/lifecycle/evidence.js +180 -0
- package/dist/lifecycle/evidence.js.map +1 -0
- package/dist/lifecycle/frontmatter.js +363 -0
- package/dist/lifecycle/frontmatter.js.map +1 -0
- package/dist/lifecycle/index.js +756 -0
- package/dist/lifecycle/index.js.map +1 -0
- package/dist/lifecycle/pipeline.js +656 -0
- package/dist/lifecycle/pipeline.js.map +1 -0
- package/dist/lifecycle/rcasd-index.js +326 -0
- package/dist/lifecycle/rcasd-index.js.map +1 -0
- package/dist/lifecycle/rcasd-paths.js +220 -0
- package/dist/lifecycle/rcasd-paths.js.map +1 -0
- package/dist/lifecycle/resume.js +864 -0
- package/dist/lifecycle/resume.js.map +1 -0
- package/dist/lifecycle/stage-artifacts.js +94 -0
- package/dist/lifecycle/stage-artifacts.js.map +1 -0
- package/dist/lifecycle/stage-guidance.js +234 -0
- package/dist/lifecycle/stage-guidance.js.map +1 -0
- package/dist/lifecycle/stages.js +534 -0
- package/dist/lifecycle/stages.js.map +1 -0
- package/dist/lifecycle/state-machine.js +516 -0
- package/dist/lifecycle/state-machine.js.map +1 -0
- package/dist/lifecycle/tessera-engine.js +249 -0
- package/dist/lifecycle/tessera-engine.js.map +1 -0
- package/dist/logger.js +140 -0
- package/dist/logger.js.map +1 -0
- package/dist/memory/auto-extract.js +96 -0
- package/dist/memory/auto-extract.js.map +1 -0
- package/dist/memory/brain-backfill.js +389 -0
- package/dist/memory/brain-backfill.js.map +1 -0
- package/dist/memory/brain-consolidator.d.ts +48 -0
- package/dist/memory/brain-consolidator.d.ts.map +1 -0
- package/dist/memory/brain-consolidator.js +294 -0
- package/dist/memory/brain-consolidator.js.map +1 -0
- package/dist/memory/brain-embedding.js +66 -0
- package/dist/memory/brain-embedding.js.map +1 -0
- package/dist/memory/brain-lifecycle.d.ts +83 -2
- package/dist/memory/brain-lifecycle.d.ts.map +1 -1
- package/dist/memory/brain-lifecycle.js +807 -0
- package/dist/memory/brain-lifecycle.js.map +1 -0
- package/dist/memory/brain-links.js +161 -0
- package/dist/memory/brain-links.js.map +1 -0
- package/dist/memory/brain-maintenance.js +114 -0
- package/dist/memory/brain-maintenance.js.map +1 -0
- package/dist/memory/brain-migration.js +149 -0
- package/dist/memory/brain-migration.js.map +1 -0
- package/dist/memory/brain-purge.js +243 -0
- package/dist/memory/brain-purge.js.map +1 -0
- package/dist/memory/brain-reasoning.js +215 -0
- package/dist/memory/brain-reasoning.js.map +1 -0
- package/dist/memory/brain-retrieval.d.ts +69 -1
- package/dist/memory/brain-retrieval.d.ts.map +1 -1
- package/dist/memory/brain-retrieval.js +912 -0
- package/dist/memory/brain-retrieval.js.map +1 -0
- package/dist/memory/brain-row-types.js +10 -0
- package/dist/memory/brain-row-types.js.map +1 -0
- package/dist/memory/brain-search.d.ts.map +1 -1
- package/dist/memory/brain-search.js +528 -0
- package/dist/memory/brain-search.js.map +1 -0
- package/dist/memory/brain-similarity.js +145 -0
- package/dist/memory/brain-similarity.js.map +1 -0
- package/dist/memory/claude-mem-migration.js +277 -0
- package/dist/memory/claude-mem-migration.js.map +1 -0
- package/dist/memory/decisions.d.ts.map +1 -1
- package/dist/memory/decisions.js +218 -0
- package/dist/memory/decisions.js.map +1 -0
- package/dist/memory/embedding-local.js +102 -0
- package/dist/memory/embedding-local.js.map +1 -0
- package/dist/memory/embedding-queue.js +271 -0
- package/dist/memory/embedding-queue.js.map +1 -0
- package/dist/memory/embedding-worker.js +58 -0
- package/dist/memory/embedding-worker.js.map +1 -0
- package/dist/memory/engine-compat.d.ts.map +1 -1
- package/dist/memory/engine-compat.js +1564 -0
- package/dist/memory/engine-compat.js.map +1 -0
- package/dist/memory/extraction-gate.d.ts +139 -0
- package/dist/memory/extraction-gate.d.ts.map +1 -0
- package/dist/memory/extraction-gate.js +459 -0
- package/dist/memory/extraction-gate.js.map +1 -0
- package/dist/memory/graph-auto-populate.js +148 -0
- package/dist/memory/graph-auto-populate.js.map +1 -0
- package/dist/memory/graph-queries.js +290 -0
- package/dist/memory/graph-queries.js.map +1 -0
- package/dist/memory/index.d.ts +2 -0
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +1144 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/learnings.d.ts +14 -0
- package/dist/memory/learnings.d.ts.map +1 -1
- package/dist/memory/learnings.js +178 -0
- package/dist/memory/learnings.js.map +1 -0
- package/dist/memory/memory-bridge.js +370 -0
- package/dist/memory/memory-bridge.js.map +1 -0
- package/dist/memory/mental-model-injection.js +61 -0
- package/dist/memory/mental-model-injection.js.map +1 -0
- package/dist/memory/mental-model-queue.js +211 -0
- package/dist/memory/mental-model-queue.js.map +1 -0
- package/dist/memory/patterns.d.ts +24 -4
- package/dist/memory/patterns.d.ts.map +1 -1
- package/dist/memory/patterns.js +174 -0
- package/dist/memory/patterns.js.map +1 -0
- package/dist/memory/pipeline-manifest-sqlite.js +975 -0
- package/dist/memory/pipeline-manifest-sqlite.js.map +1 -0
- package/dist/memory/quality-scoring.d.ts +42 -5
- package/dist/memory/quality-scoring.d.ts.map +1 -1
- package/dist/memory/quality-scoring.js +182 -0
- package/dist/memory/quality-scoring.js.map +1 -0
- package/dist/memory/session-memory.js +331 -0
- package/dist/memory/session-memory.js.map +1 -0
- package/dist/metrics/ab-test.js +260 -0
- package/dist/metrics/ab-test.js.map +1 -0
- package/dist/metrics/aggregation.js +363 -0
- package/dist/metrics/aggregation.js.map +1 -0
- package/dist/metrics/common.js +64 -0
- package/dist/metrics/common.js.map +1 -0
- package/dist/metrics/enums.js +78 -0
- package/dist/metrics/enums.js.map +1 -0
- package/dist/metrics/index.js +19 -0
- package/dist/metrics/index.js.map +1 -0
- package/dist/metrics/model-provider-registry.js +88 -0
- package/dist/metrics/model-provider-registry.js.map +1 -0
- package/dist/metrics/otel-integration.js +263 -0
- package/dist/metrics/otel-integration.js.map +1 -0
- package/dist/metrics/provider-detection.js +103 -0
- package/dist/metrics/provider-detection.js.map +1 -0
- package/dist/metrics/token-estimation.js +253 -0
- package/dist/metrics/token-estimation.js.map +1 -0
- package/dist/metrics/token-service.js +450 -0
- package/dist/metrics/token-service.js.map +1 -0
- package/dist/migration/agent-outputs.js +316 -0
- package/dist/migration/agent-outputs.js.map +1 -0
- package/dist/migration/checksum.js +92 -0
- package/dist/migration/checksum.js.map +1 -0
- package/dist/migration/index.js +282 -0
- package/dist/migration/index.js.map +1 -0
- package/dist/migration/logger.js +360 -0
- package/dist/migration/logger.js.map +1 -0
- package/dist/migration/preflight.js +9 -0
- package/dist/migration/preflight.js.map +1 -0
- package/dist/migration/state.js +421 -0
- package/dist/migration/state.js.map +1 -0
- package/dist/migration/validate.js +241 -0
- package/dist/migration/validate.js.map +1 -0
- package/dist/mvi-helpers.js +73 -0
- package/dist/mvi-helpers.js.map +1 -0
- package/dist/nexus/deps.js +375 -0
- package/dist/nexus/deps.js.map +1 -0
- package/dist/nexus/discover.js +288 -0
- package/dist/nexus/discover.js.map +1 -0
- package/dist/nexus/hash.js +10 -0
- package/dist/nexus/hash.js.map +1 -0
- package/dist/nexus/index.js +40 -0
- package/dist/nexus/index.js.map +1 -0
- package/dist/nexus/migrate-json-to-sqlite.js +115 -0
- package/dist/nexus/migrate-json-to-sqlite.js.map +1 -0
- package/dist/nexus/nexus-bridge.d.ts +51 -0
- package/dist/nexus/nexus-bridge.d.ts.map +1 -0
- package/dist/nexus/nexus-bridge.js +321 -0
- package/dist/nexus/nexus-bridge.js.map +1 -0
- package/dist/nexus/permissions.js +105 -0
- package/dist/nexus/permissions.js.map +1 -0
- package/dist/nexus/query.js +175 -0
- package/dist/nexus/query.js.map +1 -0
- package/dist/nexus/registry.js +584 -0
- package/dist/nexus/registry.js.map +1 -0
- package/dist/nexus/sharing/index.js +288 -0
- package/dist/nexus/sharing/index.js.map +1 -0
- package/dist/nexus/transfer-types.js +8 -0
- package/dist/nexus/transfer-types.js.map +1 -0
- package/dist/nexus/transfer.js +271 -0
- package/dist/nexus/transfer.js.map +1 -0
- package/dist/nexus/workspace.js +355 -0
- package/dist/nexus/workspace.js.map +1 -0
- package/dist/observability/index.js +103 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/log-filter.js +63 -0
- package/dist/observability/log-filter.js.map +1 -0
- package/dist/observability/log-parser.js +99 -0
- package/dist/observability/log-parser.js.map +1 -0
- package/dist/observability/log-reader.js +139 -0
- package/dist/observability/log-reader.js.map +1 -0
- package/dist/observability/types.js +19 -0
- package/dist/observability/types.js.map +1 -0
- package/dist/orchestration/analyze.js +107 -0
- package/dist/orchestration/analyze.js.map +1 -0
- package/dist/orchestration/bootstrap.js +132 -0
- package/dist/orchestration/bootstrap.js.map +1 -0
- package/dist/orchestration/context.js +56 -0
- package/dist/orchestration/context.js.map +1 -0
- package/dist/orchestration/critical-path.js +100 -0
- package/dist/orchestration/critical-path.js.map +1 -0
- package/dist/orchestration/hierarchy.js +183 -0
- package/dist/orchestration/hierarchy.js.map +1 -0
- package/dist/orchestration/index.js +287 -0
- package/dist/orchestration/index.js.map +1 -0
- package/dist/orchestration/parallel.js +89 -0
- package/dist/orchestration/parallel.js.map +1 -0
- package/dist/orchestration/protocol-validators.js +815 -0
- package/dist/orchestration/protocol-validators.js.map +1 -0
- package/dist/orchestration/skill-ops.js +98 -0
- package/dist/orchestration/skill-ops.js.map +1 -0
- package/dist/orchestration/status.js +107 -0
- package/dist/orchestration/status.js.map +1 -0
- package/dist/orchestration/unblock.js +103 -0
- package/dist/orchestration/unblock.js.map +1 -0
- package/dist/orchestration/validate-spawn.js +67 -0
- package/dist/orchestration/validate-spawn.js.map +1 -0
- package/dist/orchestration/waves.js +86 -0
- package/dist/orchestration/waves.js.map +1 -0
- package/dist/otel/index.js +163 -0
- package/dist/otel/index.js.map +1 -0
- package/dist/output.js +164 -0
- package/dist/output.js.map +1 -0
- package/dist/pagination.js +64 -0
- package/dist/pagination.js.map +1 -0
- package/dist/paths.js +882 -0
- package/dist/paths.js.map +1 -0
- package/dist/phases/deps.js +372 -0
- package/dist/phases/deps.js.map +1 -0
- package/dist/phases/index.js +349 -0
- package/dist/phases/index.js.map +1 -0
- package/dist/pipeline/index.js +10 -0
- package/dist/pipeline/index.js.map +1 -0
- package/dist/pipeline/phase.js +45 -0
- package/dist/pipeline/phase.js.map +1 -0
- package/dist/platform.js +211 -0
- package/dist/platform.js.map +1 -0
- package/dist/project-info.js +84 -0
- package/dist/project-info.js.map +1 -0
- package/dist/reconciliation/index.js +10 -0
- package/dist/reconciliation/index.js.map +1 -0
- package/dist/reconciliation/link-store.js +175 -0
- package/dist/reconciliation/link-store.js.map +1 -0
- package/dist/reconciliation/reconciliation-engine.js +298 -0
- package/dist/reconciliation/reconciliation-engine.js.map +1 -0
- package/dist/release/artifacts.js +427 -0
- package/dist/release/artifacts.js.map +1 -0
- package/dist/release/changelog-writer.js +151 -0
- package/dist/release/changelog-writer.js.map +1 -0
- package/dist/release/channel.js +144 -0
- package/dist/release/channel.js.map +1 -0
- package/dist/release/ci.js +166 -0
- package/dist/release/ci.js.map +1 -0
- package/dist/release/github-pr.js +225 -0
- package/dist/release/github-pr.js.map +1 -0
- package/dist/release/guards.js +116 -0
- package/dist/release/guards.js.map +1 -0
- package/dist/release/index.js +22 -0
- package/dist/release/index.js.map +1 -0
- package/dist/release/release-config.js +158 -0
- package/dist/release/release-config.js.map +1 -0
- package/dist/release/release-manifest.js +1019 -0
- package/dist/release/release-manifest.js.map +1 -0
- package/dist/release/version-bump.js +255 -0
- package/dist/release/version-bump.js.map +1 -0
- package/dist/remote/index.js +257 -0
- package/dist/remote/index.js.map +1 -0
- package/dist/repair.js +130 -0
- package/dist/repair.js.map +1 -0
- package/dist/research/index.js +2 -0
- package/dist/research/index.js.map +1 -0
- package/dist/roadmap/index.js +59 -0
- package/dist/roadmap/index.js.map +1 -0
- package/dist/routing/capability-matrix.js +1556 -0
- package/dist/routing/capability-matrix.js.map +1 -0
- package/dist/routing/index.js +9 -0
- package/dist/routing/index.js.map +1 -0
- package/dist/scaffold.d.ts +18 -0
- package/dist/scaffold.d.ts.map +1 -1
- package/dist/scaffold.js +1798 -0
- package/dist/scaffold.js.map +1 -0
- package/dist/schema-management.js +295 -0
- package/dist/schema-management.js.map +1 -0
- package/dist/security/index.js +9 -0
- package/dist/security/index.js.map +1 -0
- package/dist/security/input-sanitization.js +326 -0
- package/dist/security/input-sanitization.js.map +1 -0
- package/dist/sequence/index.js +295 -0
- package/dist/sequence/index.js.map +1 -0
- package/dist/sessions/assumptions.js +54 -0
- package/dist/sessions/assumptions.js.map +1 -0
- package/dist/sessions/briefing.js +377 -0
- package/dist/sessions/briefing.js.map +1 -0
- package/dist/sessions/context-alert.js +222 -0
- package/dist/sessions/context-alert.js.map +1 -0
- package/dist/sessions/context-inject.js +61 -0
- package/dist/sessions/context-inject.js.map +1 -0
- package/dist/sessions/context-monitor.js +98 -0
- package/dist/sessions/context-monitor.js.map +1 -0
- package/dist/sessions/decisions.js +65 -0
- package/dist/sessions/decisions.js.map +1 -0
- package/dist/sessions/find.js +65 -0
- package/dist/sessions/find.js.map +1 -0
- package/dist/sessions/handoff.js +328 -0
- package/dist/sessions/handoff.js.map +1 -0
- package/dist/sessions/hitl-warnings.js +254 -0
- package/dist/sessions/hitl-warnings.js.map +1 -0
- package/dist/sessions/index.js +327 -0
- package/dist/sessions/index.js.map +1 -0
- package/dist/sessions/session-archive.js +40 -0
- package/dist/sessions/session-archive.js.map +1 -0
- package/dist/sessions/session-cleanup.js +59 -0
- package/dist/sessions/session-cleanup.js.map +1 -0
- package/dist/sessions/session-drift.js +134 -0
- package/dist/sessions/session-drift.js.map +1 -0
- package/dist/sessions/session-enforcement.js +144 -0
- package/dist/sessions/session-enforcement.js.map +1 -0
- package/dist/sessions/session-grade.js +253 -0
- package/dist/sessions/session-grade.js.map +1 -0
- package/dist/sessions/session-history.js +42 -0
- package/dist/sessions/session-history.js.map +1 -0
- package/dist/sessions/session-id.js +81 -0
- package/dist/sessions/session-id.js.map +1 -0
- package/dist/sessions/session-memory-bridge.js +30 -0
- package/dist/sessions/session-memory-bridge.js.map +1 -0
- package/dist/sessions/session-show.js +24 -0
- package/dist/sessions/session-show.js.map +1 -0
- package/dist/sessions/session-stats.js +69 -0
- package/dist/sessions/session-stats.js.map +1 -0
- package/dist/sessions/session-suspend.js +39 -0
- package/dist/sessions/session-suspend.js.map +1 -0
- package/dist/sessions/session-switch.js +51 -0
- package/dist/sessions/session-switch.js.map +1 -0
- package/dist/sessions/session-view.js +76 -0
- package/dist/sessions/session-view.js.map +1 -0
- package/dist/sessions/snapshot.js +213 -0
- package/dist/sessions/snapshot.js.map +1 -0
- package/dist/sessions/statusline-setup.js +85 -0
- package/dist/sessions/statusline-setup.js.map +1 -0
- package/dist/sessions/types.js +8 -0
- package/dist/sessions/types.js.map +1 -0
- package/dist/skills/agents/config.js +94 -0
- package/dist/skills/agents/config.js.map +1 -0
- package/dist/skills/agents/install.js +116 -0
- package/dist/skills/agents/install.js.map +1 -0
- package/dist/skills/agents/registry.js +161 -0
- package/dist/skills/agents/registry.js.map +1 -0
- package/dist/skills/discovery.js +333 -0
- package/dist/skills/discovery.js.map +1 -0
- package/dist/skills/dispatch.js +347 -0
- package/dist/skills/dispatch.js.map +1 -0
- package/dist/skills/dynamic-skill-generator.js +87 -0
- package/dist/skills/dynamic-skill-generator.js.map +1 -0
- package/dist/skills/index.js +44 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/injection/subagent.js +195 -0
- package/dist/skills/injection/subagent.js.map +1 -0
- package/dist/skills/injection/token.js +260 -0
- package/dist/skills/injection/token.js.map +1 -0
- package/dist/skills/install.js +40 -0
- package/dist/skills/install.js.map +1 -0
- package/dist/skills/manifests/contribution.js +175 -0
- package/dist/skills/manifests/contribution.js.map +1 -0
- package/dist/skills/manifests/research.js +281 -0
- package/dist/skills/manifests/research.js.map +1 -0
- package/dist/skills/manifests/resolver.js +146 -0
- package/dist/skills/manifests/resolver.js.map +1 -0
- package/dist/skills/marketplace.js +90 -0
- package/dist/skills/marketplace.js.map +1 -0
- package/dist/skills/orchestrator/spawn.js +178 -0
- package/dist/skills/orchestrator/spawn.js.map +1 -0
- package/dist/skills/orchestrator/startup.js +451 -0
- package/dist/skills/orchestrator/startup.js.map +1 -0
- package/dist/skills/orchestrator/validator.js +301 -0
- package/dist/skills/orchestrator/validator.js.map +1 -0
- package/dist/skills/precedence-integration.js +73 -0
- package/dist/skills/precedence-integration.js.map +1 -0
- package/dist/skills/precedence-types.js +16 -0
- package/dist/skills/precedence-types.js.map +1 -0
- package/dist/skills/routing-table.js +63 -0
- package/dist/skills/routing-table.js.map +1 -0
- package/dist/skills/skill-paths.js +217 -0
- package/dist/skills/skill-paths.js.map +1 -0
- package/dist/skills/test-utility.js +55 -0
- package/dist/skills/test-utility.js.map +1 -0
- package/dist/skills/types.js +118 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/skills/validation.js +183 -0
- package/dist/skills/validation.js.map +1 -0
- package/dist/skills/version.js +57 -0
- package/dist/skills/version.js.map +1 -0
- package/dist/snapshot/index.js +188 -0
- package/dist/snapshot/index.js.map +1 -0
- package/dist/spawn/adapter-registry.js +246 -0
- package/dist/spawn/adapter-registry.js.map +1 -0
- package/dist/spawn/index.js +10 -0
- package/dist/spawn/index.js.map +1 -0
- package/dist/stats/index.d.ts.map +1 -1
- package/dist/stats/index.js +350 -0
- package/dist/stats/index.js.map +1 -0
- package/dist/stats/workflow-telemetry.js +400 -0
- package/dist/stats/workflow-telemetry.js.map +1 -0
- package/dist/sticky/archive.js +47 -0
- package/dist/sticky/archive.js.map +1 -0
- package/dist/sticky/convert.js +235 -0
- package/dist/sticky/convert.js.map +1 -0
- package/dist/sticky/create.js +48 -0
- package/dist/sticky/create.js.map +1 -0
- package/dist/sticky/id.js +35 -0
- package/dist/sticky/id.js.map +1 -0
- package/dist/sticky/index.js +16 -0
- package/dist/sticky/index.js.map +1 -0
- package/dist/sticky/list.js +57 -0
- package/dist/sticky/list.js.map +1 -0
- package/dist/sticky/purge.js +45 -0
- package/dist/sticky/purge.js.map +1 -0
- package/dist/sticky/show.js +42 -0
- package/dist/sticky/show.js.map +1 -0
- package/dist/sticky/types.js +10 -0
- package/dist/sticky/types.js.map +1 -0
- package/dist/store/agent-registry-accessor.js +886 -0
- package/dist/store/agent-registry-accessor.js.map +1 -0
- package/dist/store/api-key-kdf.js +84 -0
- package/dist/store/api-key-kdf.js.map +1 -0
- package/dist/store/atomic.js +167 -0
- package/dist/store/atomic.js.map +1 -0
- package/dist/store/backup-crypto.js +184 -0
- package/dist/store/backup-crypto.js.map +1 -0
- package/dist/store/backup-pack.js +581 -0
- package/dist/store/backup-pack.js.map +1 -0
- package/dist/store/backup-unpack.js +449 -0
- package/dist/store/backup-unpack.js.map +1 -0
- package/dist/store/backup.js +94 -0
- package/dist/store/backup.js.map +1 -0
- package/dist/store/brain-accessor.js +429 -0
- package/dist/store/brain-accessor.js.map +1 -0
- package/dist/store/brain-schema.d.ts +496 -3
- package/dist/store/brain-schema.d.ts.map +1 -1
- package/dist/store/brain-schema.js +549 -0
- package/dist/store/brain-schema.js.map +1 -0
- package/dist/store/brain-sqlite.d.ts.map +1 -1
- package/dist/store/brain-sqlite.js +257 -0
- package/dist/store/brain-sqlite.js.map +1 -0
- package/dist/store/cache.js +168 -0
- package/dist/store/cache.js.map +1 -0
- package/dist/store/chain-schema.js +51 -0
- package/dist/store/chain-schema.js.map +1 -0
- package/dist/store/cleanup-legacy.js +171 -0
- package/dist/store/cleanup-legacy.js.map +1 -0
- package/dist/store/conduit-sqlite.js +570 -0
- package/dist/store/conduit-sqlite.js.map +1 -0
- package/dist/store/converters.js +124 -0
- package/dist/store/converters.js.map +1 -0
- package/dist/store/cross-db-cleanup.js +319 -0
- package/dist/store/cross-db-cleanup.js.map +1 -0
- package/dist/store/data-accessor.js +26 -0
- package/dist/store/data-accessor.js.map +1 -0
- package/dist/store/data-safety-central.js +269 -0
- package/dist/store/data-safety-central.js.map +1 -0
- package/dist/store/data-safety.js +274 -0
- package/dist/store/data-safety.js.map +1 -0
- package/dist/store/db-helpers.js +224 -0
- package/dist/store/db-helpers.js.map +1 -0
- package/dist/store/export.js +155 -0
- package/dist/store/export.js.map +1 -0
- package/dist/store/file-utils.js +270 -0
- package/dist/store/file-utils.js.map +1 -0
- package/dist/store/git-checkpoint.js +365 -0
- package/dist/store/git-checkpoint.js.map +1 -0
- package/dist/store/global-salt.js +147 -0
- package/dist/store/global-salt.js.map +1 -0
- package/dist/store/import-logging.js +139 -0
- package/dist/store/import-logging.js.map +1 -0
- package/dist/store/import-remap.js +145 -0
- package/dist/store/import-remap.js.map +1 -0
- package/dist/store/import-sort.js +121 -0
- package/dist/store/import-sort.js.map +1 -0
- package/dist/store/index.js +29 -0
- package/dist/store/index.js.map +1 -0
- package/dist/store/json.js +208 -0
- package/dist/store/json.js.map +1 -0
- package/dist/store/lifecycle-store.js +249 -0
- package/dist/store/lifecycle-store.js.map +1 -0
- package/dist/store/lock.js +70 -0
- package/dist/store/lock.js.map +1 -0
- package/dist/store/migrate-signaldock-to-conduit.js +562 -0
- package/dist/store/migrate-signaldock-to-conduit.js.map +1 -0
- package/dist/store/migration-manager.d.ts +5 -1
- package/dist/store/migration-manager.d.ts.map +1 -1
- package/dist/store/migration-manager.js +288 -0
- package/dist/store/migration-manager.js.map +1 -0
- package/dist/store/migration-sqlite.js +676 -0
- package/dist/store/migration-sqlite.js.map +1 -0
- package/dist/store/nexus-schema.js +268 -0
- package/dist/store/nexus-schema.js.map +1 -0
- package/dist/store/nexus-sqlite.js +242 -0
- package/dist/store/nexus-sqlite.js.map +1 -0
- package/dist/store/nexus-validation-schemas.js +40 -0
- package/dist/store/nexus-validation-schemas.js.map +1 -0
- package/dist/store/parsers.js +37 -0
- package/dist/store/parsers.js.map +1 -0
- package/dist/store/project-detect.js +457 -0
- package/dist/store/project-detect.js.map +1 -0
- package/dist/store/provider.js +101 -0
- package/dist/store/provider.js.map +1 -0
- package/dist/store/regenerators.js +207 -0
- package/dist/store/regenerators.js.map +1 -0
- package/dist/store/restore-conflict-report.js +206 -0
- package/dist/store/restore-conflict-report.js.map +1 -0
- package/dist/store/restore-json-merge.js +454 -0
- package/dist/store/restore-json-merge.js.map +1 -0
- package/dist/store/safety-data-accessor.js +257 -0
- package/dist/store/safety-data-accessor.js.map +1 -0
- package/dist/store/schema.js +7 -0
- package/dist/store/schema.js.map +1 -0
- package/dist/store/session-store.js +219 -0
- package/dist/store/session-store.js.map +1 -0
- package/dist/store/signaldock-sqlite.js +550 -0
- package/dist/store/signaldock-sqlite.js.map +1 -0
- package/dist/store/sqlite-backup.js +498 -0
- package/dist/store/sqlite-backup.js.map +1 -0
- package/dist/store/sqlite-data-accessor.js +787 -0
- package/dist/store/sqlite-data-accessor.js.map +1 -0
- package/dist/store/sqlite.js +483 -0
- package/dist/store/sqlite.js.map +1 -0
- package/dist/store/status-registry.js +8 -0
- package/dist/store/status-registry.js.map +1 -0
- package/dist/store/t310-readiness.js +115 -0
- package/dist/store/t310-readiness.js.map +1 -0
- package/dist/store/task-store.js +358 -0
- package/dist/store/task-store.js.map +1 -0
- package/dist/store/tasks-schema.d.ts +1 -1
- package/dist/store/tasks-schema.js +610 -0
- package/dist/store/tasks-schema.js.map +1 -0
- package/dist/store/typed-query.js +15 -0
- package/dist/store/typed-query.js.map +1 -0
- package/dist/store/validation-schemas.d.ts +6 -6
- package/dist/store/validation-schemas.js +278 -0
- package/dist/store/validation-schemas.js.map +1 -0
- package/dist/system/archive-analytics.js +277 -0
- package/dist/system/archive-analytics.js.map +1 -0
- package/dist/system/archive-stats.js +64 -0
- package/dist/system/archive-stats.js.map +1 -0
- package/dist/system/audit.js +145 -0
- package/dist/system/audit.js.map +1 -0
- package/dist/system/backup.js +280 -0
- package/dist/system/backup.js.map +1 -0
- package/dist/system/cleanup.js +134 -0
- package/dist/system/cleanup.js.map +1 -0
- package/dist/system/dependencies.js +466 -0
- package/dist/system/dependencies.js.map +1 -0
- package/dist/system/health.d.ts.map +1 -1
- package/dist/system/health.js +1206 -0
- package/dist/system/health.js.map +1 -0
- package/dist/system/index.js +18 -0
- package/dist/system/index.js.map +1 -0
- package/dist/system/inject-generate.js +122 -0
- package/dist/system/inject-generate.js.map +1 -0
- package/dist/system/labels.js +38 -0
- package/dist/system/labels.js.map +1 -0
- package/dist/system/metrics.js +61 -0
- package/dist/system/metrics.js.map +1 -0
- package/dist/system/migrate.js +43 -0
- package/dist/system/migrate.js.map +1 -0
- package/dist/system/platform-paths.js +80 -0
- package/dist/system/platform-paths.js.map +1 -0
- package/dist/system/runtime.js +161 -0
- package/dist/system/runtime.js.map +1 -0
- package/dist/system/safestop.js +89 -0
- package/dist/system/safestop.js.map +1 -0
- package/dist/system/storage-preflight.js +123 -0
- package/dist/system/storage-preflight.js.map +1 -0
- package/dist/task-work/index.js +159 -0
- package/dist/task-work/index.js.map +1 -0
- package/dist/tasks/add.js +837 -0
- package/dist/tasks/add.js.map +1 -0
- package/dist/tasks/analyze.js +85 -0
- package/dist/tasks/analyze.js.map +1 -0
- package/dist/tasks/archive.js +90 -0
- package/dist/tasks/archive.js.map +1 -0
- package/dist/tasks/atomicity.js +83 -0
- package/dist/tasks/atomicity.js.map +1 -0
- package/dist/tasks/cancel-ops.js +83 -0
- package/dist/tasks/cancel-ops.js.map +1 -0
- package/dist/tasks/complete.js +229 -0
- package/dist/tasks/complete.js.map +1 -0
- package/dist/tasks/crossref-extract.js +73 -0
- package/dist/tasks/crossref-extract.js.map +1 -0
- package/dist/tasks/delete-preview.js +192 -0
- package/dist/tasks/delete-preview.js.map +1 -0
- package/dist/tasks/delete.js +120 -0
- package/dist/tasks/delete.js.map +1 -0
- package/dist/tasks/deletion-strategy.js +200 -0
- package/dist/tasks/deletion-strategy.js.map +1 -0
- package/dist/tasks/dependency-check.js +278 -0
- package/dist/tasks/dependency-check.js.map +1 -0
- package/dist/tasks/deps-ready.js +32 -0
- package/dist/tasks/deps-ready.js.map +1 -0
- package/dist/tasks/enforcement.js +86 -0
- package/dist/tasks/enforcement.js.map +1 -0
- package/dist/tasks/epic-enforcement.js +294 -0
- package/dist/tasks/epic-enforcement.js.map +1 -0
- package/dist/tasks/find.js +163 -0
- package/dist/tasks/find.js.map +1 -0
- package/dist/tasks/graph-cache.js +127 -0
- package/dist/tasks/graph-cache.js.map +1 -0
- package/dist/tasks/graph-ops.d.ts.map +1 -1
- package/dist/tasks/graph-ops.js +173 -0
- package/dist/tasks/graph-ops.js.map +1 -0
- package/dist/tasks/graph-rag.js +328 -0
- package/dist/tasks/graph-rag.js.map +1 -0
- package/dist/tasks/hierarchy-policy.js +149 -0
- package/dist/tasks/hierarchy-policy.js.map +1 -0
- package/dist/tasks/hierarchy.js +185 -0
- package/dist/tasks/hierarchy.js.map +1 -0
- package/dist/tasks/id-generator.js +65 -0
- package/dist/tasks/id-generator.js.map +1 -0
- package/dist/tasks/index.js +14 -0
- package/dist/tasks/index.js.map +1 -0
- package/dist/tasks/labels.js +55 -0
- package/dist/tasks/labels.js.map +1 -0
- package/dist/tasks/list.js +75 -0
- package/dist/tasks/list.js.map +1 -0
- package/dist/tasks/phase-tracking.js +133 -0
- package/dist/tasks/phase-tracking.js.map +1 -0
- package/dist/tasks/pipeline-stage.js +248 -0
- package/dist/tasks/pipeline-stage.js.map +1 -0
- package/dist/tasks/plan.js +268 -0
- package/dist/tasks/plan.js.map +1 -0
- package/dist/tasks/relates.js +101 -0
- package/dist/tasks/relates.js.map +1 -0
- package/dist/tasks/show.js +83 -0
- package/dist/tasks/show.js.map +1 -0
- package/dist/tasks/size-weighting.js +86 -0
- package/dist/tasks/size-weighting.js.map +1 -0
- package/dist/tasks/staleness.js +86 -0
- package/dist/tasks/staleness.js.map +1 -0
- package/dist/tasks/task-ops.js +1741 -0
- package/dist/tasks/task-ops.js.map +1 -0
- package/dist/tasks/update.js +303 -0
- package/dist/tasks/update.js.map +1 -0
- package/dist/templates/index.js +10 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/templates/parser.js +254 -0
- package/dist/templates/parser.js.map +1 -0
- package/dist/ui/aliases.js +153 -0
- package/dist/ui/aliases.js.map +1 -0
- package/dist/ui/changelog.js +184 -0
- package/dist/ui/changelog.js.map +1 -0
- package/dist/ui/command-registry.js +168 -0
- package/dist/ui/command-registry.js.map +1 -0
- package/dist/ui/flags.js +94 -0
- package/dist/ui/flags.js.map +1 -0
- package/dist/ui/index.js +24 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/upgrade.js +1148 -0
- package/dist/upgrade.js.map +1 -0
- package/dist/validation/chain-validation.js +146 -0
- package/dist/validation/chain-validation.js.map +1 -0
- package/dist/validation/compliance.js +155 -0
- package/dist/validation/compliance.js.map +1 -0
- package/dist/validation/docs-sync.js +212 -0
- package/dist/validation/docs-sync.js.map +1 -0
- package/dist/validation/doctor/checks.js +1069 -0
- package/dist/validation/doctor/checks.js.map +1 -0
- package/dist/validation/doctor/index.js +9 -0
- package/dist/validation/doctor/index.js.map +1 -0
- package/dist/validation/doctor/project-cache.js +160 -0
- package/dist/validation/doctor/project-cache.js.map +1 -0
- package/dist/validation/doctor/utils.js +155 -0
- package/dist/validation/doctor/utils.js.map +1 -0
- package/dist/validation/engine.js +914 -0
- package/dist/validation/engine.js.map +1 -0
- package/dist/validation/gap-check.js +175 -0
- package/dist/validation/gap-check.js.map +1 -0
- package/dist/validation/index.js +40 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/manifest.js +237 -0
- package/dist/validation/manifest.js.map +1 -0
- package/dist/validation/operation-gate-validators.js +724 -0
- package/dist/validation/operation-gate-validators.js.map +1 -0
- package/dist/validation/operation-verification-gates.js +532 -0
- package/dist/validation/operation-verification-gates.js.map +1 -0
- package/dist/validation/param-utils.js +141 -0
- package/dist/validation/param-utils.js.map +1 -0
- package/dist/validation/protocol-common.js +300 -0
- package/dist/validation/protocol-common.js.map +1 -0
- package/dist/validation/protocols/_shared.js +82 -0
- package/dist/validation/protocols/_shared.js.map +1 -0
- package/dist/validation/protocols/architecture-decision.js +31 -0
- package/dist/validation/protocols/architecture-decision.js.map +1 -0
- package/dist/validation/protocols/artifact-publish.js +28 -0
- package/dist/validation/protocols/artifact-publish.js.map +1 -0
- package/dist/validation/protocols/consensus.js +41 -0
- package/dist/validation/protocols/consensus.js.map +1 -0
- package/dist/validation/protocols/contribution.js +27 -0
- package/dist/validation/protocols/contribution.js.map +1 -0
- package/dist/validation/protocols/decomposition.js +28 -0
- package/dist/validation/protocols/decomposition.js.map +1 -0
- package/dist/validation/protocols/implementation.js +24 -0
- package/dist/validation/protocols/implementation.js.map +1 -0
- package/dist/validation/protocols/provenance.js +29 -0
- package/dist/validation/protocols/provenance.js.map +1 -0
- package/dist/validation/protocols/release.js +29 -0
- package/dist/validation/protocols/release.js.map +1 -0
- package/dist/validation/protocols/research.js +24 -0
- package/dist/validation/protocols/research.js.map +1 -0
- package/dist/validation/protocols/specification.js +27 -0
- package/dist/validation/protocols/specification.js.map +1 -0
- package/dist/validation/protocols/testing.js +30 -0
- package/dist/validation/protocols/testing.js.map +1 -0
- package/dist/validation/protocols/validation.js +30 -0
- package/dist/validation/protocols/validation.js.map +1 -0
- package/dist/validation/schema-integrity.js +170 -0
- package/dist/validation/schema-integrity.js.map +1 -0
- package/dist/validation/schema-validator.js +176 -0
- package/dist/validation/schema-validator.js.map +1 -0
- package/dist/validation/validate-ops.js +937 -0
- package/dist/validation/validate-ops.js.map +1 -0
- package/dist/validation/validation-rules.js +226 -0
- package/dist/validation/validation-rules.js.map +1 -0
- package/dist/validation/verification.js +321 -0
- package/dist/validation/verification.js.map +1 -0
- package/migrations/drizzle-brain/20260411000001_t528-graph-schema-expansion/migration.sql +47 -0
- package/migrations/drizzle-brain/20260412000001_t531-quality-score-typed-tables/migration.sql +23 -0
- package/migrations/drizzle-brain/20260413000001_t549-tiered-typed-memory/migration.sql +195 -0
- package/migrations/drizzle-nexus/20260412000001_t529-nexus-graph-tables/migration.sql +49 -0
- package/package.json +8 -8
- package/src/hooks/handlers/index.ts +6 -0
- package/src/hooks/handlers/intelligence-hooks.ts +80 -0
- package/src/hooks/handlers/session-hooks.ts +41 -0
- package/src/hooks/handlers/watchdog-hooks.ts +187 -0
- package/src/injection.ts +41 -2
- package/src/internal.ts +31 -2
- package/src/memory/brain-consolidator.ts +344 -0
- package/src/memory/brain-lifecycle.ts +636 -2
- package/src/memory/brain-retrieval.ts +445 -2
- package/src/memory/brain-search.ts +38 -4
- package/src/memory/decisions.ts +21 -1
- package/src/memory/engine-compat.ts +9 -11
- package/src/memory/extraction-gate.ts +574 -0
- package/src/memory/index.ts +6 -2
- package/src/memory/learnings.ts +33 -1
- package/src/memory/patterns.ts +30 -1
- package/src/memory/quality-scoring.ts +93 -9
- package/src/nexus/nexus-bridge.ts +444 -0
- package/src/scaffold.ts +42 -0
- package/src/stats/index.ts +11 -3
- package/src/store/brain-schema.ts +238 -0
- package/src/store/brain-sqlite.ts +55 -0
- package/src/store/migration-manager.ts +83 -12
- package/src/system/health.ts +17 -0
- package/src/tasks/graph-ops.ts +1 -0
- package/src/tasks/task-ops.ts +1 -1
- package/templates/CLEO-INJECTION.md +15 -0
package/src/scaffold.ts
CHANGED
|
@@ -1348,6 +1348,48 @@ export function checkMemoryBridge(projectRoot: string): CheckResult {
|
|
|
1348
1348
|
};
|
|
1349
1349
|
}
|
|
1350
1350
|
|
|
1351
|
+
/**
|
|
1352
|
+
* Verify .cleo/nexus-bridge.md exists.
|
|
1353
|
+
* Warning level if missing (not failure) — it is auto-generated after `cleo nexus analyze`.
|
|
1354
|
+
*
|
|
1355
|
+
* @param projectRoot - Absolute path to the project root directory
|
|
1356
|
+
* @returns Check result indicating presence of the nexus bridge file
|
|
1357
|
+
*
|
|
1358
|
+
* @remarks
|
|
1359
|
+
* Read-only diagnostic. The nexus bridge is auto-generated from nexus.db
|
|
1360
|
+
* content after `cleo nexus analyze` runs, so its absence is only a warning.
|
|
1361
|
+
*
|
|
1362
|
+
* @example
|
|
1363
|
+
* ```typescript
|
|
1364
|
+
* const check = checkNexusBridge('/my/project');
|
|
1365
|
+
* if (check.status === 'warning') console.log('Run: cleo nexus analyze');
|
|
1366
|
+
* ```
|
|
1367
|
+
*/
|
|
1368
|
+
export function checkNexusBridge(projectRoot: string): CheckResult {
|
|
1369
|
+
const cleoDir = getCleoDirAbsolute(projectRoot);
|
|
1370
|
+
const bridgePath = join(cleoDir, 'nexus-bridge.md');
|
|
1371
|
+
|
|
1372
|
+
if (!existsSync(bridgePath)) {
|
|
1373
|
+
return {
|
|
1374
|
+
id: 'nexus_bridge',
|
|
1375
|
+
category: 'scaffold',
|
|
1376
|
+
status: 'warning',
|
|
1377
|
+
message: 'nexus-bridge.md not found',
|
|
1378
|
+
details: { path: bridgePath, exists: false },
|
|
1379
|
+
fix: 'cleo nexus analyze',
|
|
1380
|
+
};
|
|
1381
|
+
}
|
|
1382
|
+
|
|
1383
|
+
return {
|
|
1384
|
+
id: 'nexus_bridge',
|
|
1385
|
+
category: 'scaffold',
|
|
1386
|
+
status: 'passed',
|
|
1387
|
+
message: 'nexus-bridge.md exists',
|
|
1388
|
+
details: { path: bridgePath, exists: true },
|
|
1389
|
+
fix: null,
|
|
1390
|
+
};
|
|
1391
|
+
}
|
|
1392
|
+
|
|
1351
1393
|
// ── Global (~/.cleo) scaffold functions ──────────────────────────────
|
|
1352
1394
|
|
|
1353
1395
|
/**
|
package/src/stats/index.ts
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
import type { Task } from '@cleocode/contracts';
|
|
8
8
|
import { ExitCode } from '@cleocode/contracts';
|
|
9
9
|
import { CleoError } from '../errors.js';
|
|
10
|
+
import { getProjectInfoSync } from '../project-info.js';
|
|
10
11
|
import type { DataAccessor } from '../store/data-accessor.js';
|
|
11
12
|
import { getAccessor } from '../store/data-accessor.js';
|
|
12
13
|
|
|
@@ -296,8 +297,14 @@ export async function getDashboard(
|
|
|
296
297
|
}
|
|
297
298
|
|
|
298
299
|
const meta = await acc.getMetaValue<import('@cleocode/contracts').ProjectMeta>('project_meta');
|
|
299
|
-
|
|
300
|
-
const
|
|
300
|
+
// Fall back to the legacy 'project' key, then to the directory name from project-info.json
|
|
301
|
+
const legacyMeta = meta
|
|
302
|
+
? null
|
|
303
|
+
: await acc.getMetaValue<{ name?: string; currentPhase?: string }>('project');
|
|
304
|
+
const resolvedName =
|
|
305
|
+
meta?.name ?? legacyMeta?.name ?? getProjectInfoSync(opts.cwd)?.projectName ?? null;
|
|
306
|
+
const project = resolvedName ?? 'Unknown Project';
|
|
307
|
+
const currentPhase = meta?.currentPhase ?? legacyMeta?.currentPhase ?? null;
|
|
301
308
|
|
|
302
309
|
const focus = await acc.getMetaValue<import('@cleocode/contracts').TaskWorkState>('focus_state');
|
|
303
310
|
const focusId = focus?.currentTask ?? null;
|
|
@@ -311,7 +318,8 @@ export async function getDashboard(
|
|
|
311
318
|
(t) =>
|
|
312
319
|
(t.priority === 'critical' || t.priority === 'high') &&
|
|
313
320
|
t.status !== 'done' &&
|
|
314
|
-
t.status !== 'cancelled'
|
|
321
|
+
t.status !== 'cancelled' &&
|
|
322
|
+
!t.cancelledAt,
|
|
315
323
|
)
|
|
316
324
|
.sort((a, b) => {
|
|
317
325
|
const pDiff =
|
|
@@ -14,6 +14,57 @@ import { index, integer, primaryKey, real, sqliteTable, text } from 'drizzle-orm
|
|
|
14
14
|
|
|
15
15
|
// === ENUM CONSTANTS ===
|
|
16
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Memory retention tiers for the tiered cognitive memory model (T549).
|
|
19
|
+
*
|
|
20
|
+
* - `short` — Session-scoped working context. Volatile; auto-evicted after 48h if not promoted.
|
|
21
|
+
* - `medium` — Project-scoped verified facts. Retained for weeks; decays if unverified.
|
|
22
|
+
* - `long` — Architectural bedrock. Permanent; supersession-only eviction.
|
|
23
|
+
*
|
|
24
|
+
* NULL semantics for legacy rows: treat NULL as 'medium' at query time.
|
|
25
|
+
* (Legacy rows survived the T523 purge, so medium is a safe tier assumption.)
|
|
26
|
+
*/
|
|
27
|
+
export const BRAIN_MEMORY_TIERS = ['short', 'medium', 'long'] as const;
|
|
28
|
+
|
|
29
|
+
/** Discriminated union of all memory retention tiers. */
|
|
30
|
+
export type BrainMemoryTier = (typeof BRAIN_MEMORY_TIERS)[number];
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Cognitive type taxonomy for the tiered memory model (T549).
|
|
34
|
+
*
|
|
35
|
+
* Uses `BRAIN_COGNITIVE_TYPES` (not `BRAIN_MEMORY_TYPES`) to avoid collision
|
|
36
|
+
* with the link table enum `BRAIN_MEMORY_TYPES` (which stores entity type names).
|
|
37
|
+
*
|
|
38
|
+
* - `semantic` — Declarative facts: "what is true about this project"
|
|
39
|
+
* → brain_decisions (always), brain_learnings (default)
|
|
40
|
+
* - `episodic` — Event records: "what happened and when"
|
|
41
|
+
* → brain_observations (always), brain_learnings (transcript-derived)
|
|
42
|
+
* - `procedural` — Process knowledge: "how to do things"
|
|
43
|
+
* → brain_patterns (always)
|
|
44
|
+
*/
|
|
45
|
+
export const BRAIN_COGNITIVE_TYPES = ['semantic', 'episodic', 'procedural'] as const;
|
|
46
|
+
|
|
47
|
+
/** Discriminated union of all cognitive memory types. */
|
|
48
|
+
export type BrainCognitiveType = (typeof BRAIN_COGNITIVE_TYPES)[number];
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Source reliability levels for the tiered memory model (T549).
|
|
52
|
+
*
|
|
53
|
+
* Separate dimension from content `quality_score` — captures source trustworthiness.
|
|
54
|
+
* Each level drives a quality multiplier applied at scoring time.
|
|
55
|
+
*
|
|
56
|
+
* | Level | Meaning | Quality multiplier |
|
|
57
|
+
* |---------------|-----------------------------------------|--------------------|
|
|
58
|
+
* | `owner` | Owner explicitly stated this fact | 1.0 |
|
|
59
|
+
* | `task-outcome`| Verified by completed task with result | 0.90 |
|
|
60
|
+
* | `agent` | Agent-inferred during work (default) | 0.70 |
|
|
61
|
+
* | `speculative` | Agent hypothesis, not yet corroborated | 0.40 |
|
|
62
|
+
*/
|
|
63
|
+
export const BRAIN_SOURCE_CONFIDENCE = ['owner', 'task-outcome', 'agent', 'speculative'] as const;
|
|
64
|
+
|
|
65
|
+
/** Discriminated union of all source confidence levels. */
|
|
66
|
+
export type BrainSourceConfidence = (typeof BRAIN_SOURCE_CONFIDENCE)[number];
|
|
67
|
+
|
|
17
68
|
/** Decision types from ADR-009. */
|
|
18
69
|
export const BRAIN_DECISION_TYPES = [
|
|
19
70
|
'architecture',
|
|
@@ -102,6 +153,46 @@ export const brainDecisions = sqliteTable(
|
|
|
102
153
|
qualityScore: real('quality_score'),
|
|
103
154
|
createdAt: text('created_at').notNull().default(sql`(datetime('now'))`),
|
|
104
155
|
updatedAt: text('updated_at'),
|
|
156
|
+
|
|
157
|
+
// T549: Tiered + Typed Memory columns
|
|
158
|
+
|
|
159
|
+
/** Memory retention tier. NULL on legacy rows → treat as 'medium' at query time. */
|
|
160
|
+
memoryTier: text('memory_tier', { enum: BRAIN_MEMORY_TIERS }).default('short'),
|
|
161
|
+
|
|
162
|
+
/** Cognitive type. Decisions are always 'semantic' (declarative architectural facts). */
|
|
163
|
+
memoryType: text('memory_type', { enum: BRAIN_COGNITIVE_TYPES }).default('semantic'),
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Ground-truth verification flag.
|
|
167
|
+
* false = agent-inferred, pending verification.
|
|
168
|
+
* true = confirmed via owner statement, task outcome, corroboration, or manual `cleo memory verify`.
|
|
169
|
+
*/
|
|
170
|
+
verified: integer('verified', { mode: 'boolean' }).notNull().default(false),
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Bitemporal: when this decision became valid (ISO 8601 text).
|
|
174
|
+
* Defaults to creation time. Can be backdated for historical facts.
|
|
175
|
+
*/
|
|
176
|
+
validAt: text('valid_at').notNull().default(sql`(datetime('now'))`),
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Bitemporal: when this decision stopped being valid.
|
|
180
|
+
* NULL = currently valid. Prefer `supersedes` graph edges for decision supersession
|
|
181
|
+
* (ADR-009); this column is a convenience gate for bulk eviction queries.
|
|
182
|
+
*/
|
|
183
|
+
invalidAt: text('invalid_at'),
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Source reliability level — separate from content quality_score (T549 §3.1.5).
|
|
187
|
+
* Drives quality multiplier at scoring time.
|
|
188
|
+
*/
|
|
189
|
+
sourceConfidence: text('source_confidence', { enum: BRAIN_SOURCE_CONFIDENCE }).default('agent'),
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Number of times this decision has been cited/retrieved (T549 CONFLICT-03).
|
|
193
|
+
* Used by the consolidator for citation-based medium→long promotion.
|
|
194
|
+
*/
|
|
195
|
+
citationCount: integer('citation_count').notNull().default(0),
|
|
105
196
|
},
|
|
106
197
|
(table) => [
|
|
107
198
|
index('idx_brain_decisions_type').on(table.type),
|
|
@@ -110,6 +201,12 @@ export const brainDecisions = sqliteTable(
|
|
|
110
201
|
index('idx_brain_decisions_context_epic').on(table.contextEpicId),
|
|
111
202
|
index('idx_brain_decisions_context_task').on(table.contextTaskId),
|
|
112
203
|
index('idx_brain_decisions_quality').on(table.qualityScore),
|
|
204
|
+
// T549 indexes
|
|
205
|
+
index('idx_brain_decisions_tier').on(table.memoryTier),
|
|
206
|
+
index('idx_brain_decisions_mem_type').on(table.memoryType),
|
|
207
|
+
index('idx_brain_decisions_verified').on(table.verified),
|
|
208
|
+
index('idx_brain_decisions_valid_at').on(table.validAt),
|
|
209
|
+
index('idx_brain_decisions_source_conf').on(table.sourceConfidence),
|
|
113
210
|
],
|
|
114
211
|
);
|
|
115
212
|
|
|
@@ -136,12 +233,57 @@ export const brainPatterns = sqliteTable(
|
|
|
136
233
|
* Entries below 0.3 are excluded from search results (T531).
|
|
137
234
|
*/
|
|
138
235
|
qualityScore: real('quality_score'),
|
|
236
|
+
|
|
237
|
+
// T549: Tiered + Typed Memory columns
|
|
238
|
+
|
|
239
|
+
/** Memory retention tier. NULL on legacy rows → treat as 'medium' at query time. */
|
|
240
|
+
memoryTier: text('memory_tier', { enum: BRAIN_MEMORY_TIERS }).default('short'),
|
|
241
|
+
|
|
242
|
+
/** Cognitive type. Patterns are always 'procedural' (process/workflow knowledge). */
|
|
243
|
+
memoryType: text('memory_type', { enum: BRAIN_COGNITIVE_TYPES }).default('procedural'),
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* Ground-truth verification flag.
|
|
247
|
+
* For patterns, this is complementary to frequency+successRate verification.
|
|
248
|
+
* false = agent-inferred. true = confirmed via owner statement or task outcome.
|
|
249
|
+
*/
|
|
250
|
+
verified: integer('verified', { mode: 'boolean' }).notNull().default(false),
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* Bitemporal: when this pattern became valid (ISO 8601 text).
|
|
254
|
+
* Defaults to extraction time.
|
|
255
|
+
*/
|
|
256
|
+
validAt: text('valid_at').notNull().default(sql`(datetime('now'))`),
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* Bitemporal: when this pattern stopped being valid.
|
|
260
|
+
* NULL = currently valid. Set by consolidator when frequency+successRate drops below threshold.
|
|
261
|
+
*/
|
|
262
|
+
invalidAt: text('invalid_at'),
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* Source reliability level — separate from content quality_score (T549 §3.1.5).
|
|
266
|
+
* Drives quality multiplier at scoring time.
|
|
267
|
+
*/
|
|
268
|
+
sourceConfidence: text('source_confidence', { enum: BRAIN_SOURCE_CONFIDENCE }).default('agent'),
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* Number of times this pattern has been cited/retrieved (T549 CONFLICT-03).
|
|
272
|
+
* Used by the consolidator for citation-based medium→long promotion.
|
|
273
|
+
*/
|
|
274
|
+
citationCount: integer('citation_count').notNull().default(0),
|
|
139
275
|
},
|
|
140
276
|
(table) => [
|
|
141
277
|
index('idx_brain_patterns_type').on(table.type),
|
|
142
278
|
index('idx_brain_patterns_impact').on(table.impact),
|
|
143
279
|
index('idx_brain_patterns_frequency').on(table.frequency),
|
|
144
280
|
index('idx_brain_patterns_quality').on(table.qualityScore),
|
|
281
|
+
// T549 indexes
|
|
282
|
+
index('idx_brain_patterns_tier').on(table.memoryTier),
|
|
283
|
+
index('idx_brain_patterns_mem_type').on(table.memoryType),
|
|
284
|
+
index('idx_brain_patterns_verified').on(table.verified),
|
|
285
|
+
index('idx_brain_patterns_valid_at').on(table.validAt),
|
|
286
|
+
index('idx_brain_patterns_source_conf').on(table.sourceConfidence),
|
|
145
287
|
],
|
|
146
288
|
);
|
|
147
289
|
|
|
@@ -165,11 +307,60 @@ export const brainLearnings = sqliteTable(
|
|
|
165
307
|
* Entries below 0.3 are excluded from search results (T531).
|
|
166
308
|
*/
|
|
167
309
|
qualityScore: real('quality_score'),
|
|
310
|
+
|
|
311
|
+
// T549: Tiered + Typed Memory columns
|
|
312
|
+
|
|
313
|
+
/** Memory retention tier. NULL on legacy rows → treat as 'medium' at query time. */
|
|
314
|
+
memoryTier: text('memory_tier', { enum: BRAIN_MEMORY_TIERS }).default('short'),
|
|
315
|
+
|
|
316
|
+
/**
|
|
317
|
+
* Cognitive type. Learnings are 'semantic' by default (declarative facts).
|
|
318
|
+
* Transcript-derived learnings with source containing 'transcript:ses_' are 'episodic'.
|
|
319
|
+
*/
|
|
320
|
+
memoryType: text('memory_type', { enum: BRAIN_COGNITIVE_TYPES }).default('semantic'),
|
|
321
|
+
|
|
322
|
+
/**
|
|
323
|
+
* Ground-truth verification flag.
|
|
324
|
+
* false = agent-inferred, pending verification.
|
|
325
|
+
* true = confirmed via owner statement, task outcome, corroboration, or manual verify.
|
|
326
|
+
*/
|
|
327
|
+
verified: integer('verified', { mode: 'boolean' }).notNull().default(false),
|
|
328
|
+
|
|
329
|
+
/**
|
|
330
|
+
* Bitemporal: when this learning became valid (ISO 8601 text).
|
|
331
|
+
* Defaults to creation time. Facts can change — use invalidAt to retire stale ones.
|
|
332
|
+
*/
|
|
333
|
+
validAt: text('valid_at').notNull().default(sql`(datetime('now'))`),
|
|
334
|
+
|
|
335
|
+
/**
|
|
336
|
+
* Bitemporal: when this learning stopped being valid.
|
|
337
|
+
* NULL = currently valid. Set by consolidator on contradiction detection or TTL decay.
|
|
338
|
+
*/
|
|
339
|
+
invalidAt: text('invalid_at'),
|
|
340
|
+
|
|
341
|
+
/**
|
|
342
|
+
* Source reliability level — separate from content quality_score (T549 §3.1.5).
|
|
343
|
+
* Drives quality multiplier at scoring time.
|
|
344
|
+
*/
|
|
345
|
+
sourceConfidence: text('source_confidence', { enum: BRAIN_SOURCE_CONFIDENCE }).default('agent'),
|
|
346
|
+
|
|
347
|
+
/**
|
|
348
|
+
* Number of times this learning has been cited/retrieved (T549 CONFLICT-03).
|
|
349
|
+
* Used by the consolidator for citation-based medium→long promotion.
|
|
350
|
+
*/
|
|
351
|
+
citationCount: integer('citation_count').notNull().default(0),
|
|
168
352
|
},
|
|
169
353
|
(table) => [
|
|
170
354
|
index('idx_brain_learnings_confidence').on(table.confidence),
|
|
171
355
|
index('idx_brain_learnings_actionable').on(table.actionable),
|
|
172
356
|
index('idx_brain_learnings_quality').on(table.qualityScore),
|
|
357
|
+
// T549 indexes
|
|
358
|
+
index('idx_brain_learnings_tier').on(table.memoryTier),
|
|
359
|
+
index('idx_brain_learnings_mem_type').on(table.memoryType),
|
|
360
|
+
index('idx_brain_learnings_verified').on(table.verified),
|
|
361
|
+
index('idx_brain_learnings_valid_at').on(table.validAt),
|
|
362
|
+
index('idx_brain_learnings_invalid').on(table.invalidAt),
|
|
363
|
+
index('idx_brain_learnings_source_conf').on(table.sourceConfidence),
|
|
173
364
|
],
|
|
174
365
|
);
|
|
175
366
|
|
|
@@ -205,6 +396,46 @@ export const brainObservations = sqliteTable(
|
|
|
205
396
|
qualityScore: real('quality_score'),
|
|
206
397
|
createdAt: text('created_at').notNull().default(sql`(datetime('now'))`),
|
|
207
398
|
updatedAt: text('updated_at'),
|
|
399
|
+
|
|
400
|
+
// T549: Tiered + Typed Memory columns
|
|
401
|
+
|
|
402
|
+
/** Memory retention tier. NULL on legacy rows → treat as 'medium' at query time. */
|
|
403
|
+
memoryTier: text('memory_tier', { enum: BRAIN_MEMORY_TIERS }).default('short'),
|
|
404
|
+
|
|
405
|
+
/** Cognitive type. Observations are always 'episodic' (time-anchored event records). */
|
|
406
|
+
memoryType: text('memory_type', { enum: BRAIN_COGNITIVE_TYPES }).default('episodic'),
|
|
407
|
+
|
|
408
|
+
/**
|
|
409
|
+
* Ground-truth verification flag.
|
|
410
|
+
* false = agent-inferred, pending verification.
|
|
411
|
+
* true = confirmed via owner statement, task outcome, corroboration, or manual verify.
|
|
412
|
+
*/
|
|
413
|
+
verified: integer('verified', { mode: 'boolean' }).notNull().default(false),
|
|
414
|
+
|
|
415
|
+
/**
|
|
416
|
+
* Bitemporal: when this observation became valid (ISO 8601 text).
|
|
417
|
+
* Defaults to creation time. Can be backdated for historical facts.
|
|
418
|
+
*/
|
|
419
|
+
validAt: text('valid_at').notNull().default(sql`(datetime('now'))`),
|
|
420
|
+
|
|
421
|
+
/**
|
|
422
|
+
* Bitemporal: when this observation stopped being valid.
|
|
423
|
+
* NULL = currently valid. Set by consolidator on contradiction detection.
|
|
424
|
+
* Temporal query pattern: WHERE valid_at <= :t AND (invalid_at IS NULL OR invalid_at > :t)
|
|
425
|
+
*/
|
|
426
|
+
invalidAt: text('invalid_at'),
|
|
427
|
+
|
|
428
|
+
/**
|
|
429
|
+
* Source reliability level — separate from content quality_score (T549 §3.1.5).
|
|
430
|
+
* Drives quality multiplier at scoring time.
|
|
431
|
+
*/
|
|
432
|
+
sourceConfidence: text('source_confidence', { enum: BRAIN_SOURCE_CONFIDENCE }).default('agent'),
|
|
433
|
+
|
|
434
|
+
/**
|
|
435
|
+
* Number of times this observation has been cited/retrieved (T549 CONFLICT-03).
|
|
436
|
+
* Used by the consolidator for citation-based medium→long promotion.
|
|
437
|
+
*/
|
|
438
|
+
citationCount: integer('citation_count').notNull().default(0),
|
|
208
439
|
},
|
|
209
440
|
(table) => [
|
|
210
441
|
index('idx_brain_observations_type').on(table.type),
|
|
@@ -220,6 +451,13 @@ export const brainObservations = sqliteTable(
|
|
|
220
451
|
index('idx_brain_observations_agent').on(table.agent),
|
|
221
452
|
// T531: quality score filter index
|
|
222
453
|
index('idx_brain_observations_quality').on(table.qualityScore),
|
|
454
|
+
// T549 indexes
|
|
455
|
+
index('idx_brain_observations_tier').on(table.memoryTier),
|
|
456
|
+
index('idx_brain_observations_mem_type').on(table.memoryType),
|
|
457
|
+
index('idx_brain_observations_verified').on(table.verified),
|
|
458
|
+
index('idx_brain_observations_valid_at').on(table.validAt),
|
|
459
|
+
index('idx_brain_observations_invalid').on(table.invalidAt),
|
|
460
|
+
index('idx_brain_observations_source_conf').on(table.sourceConfidence),
|
|
223
461
|
],
|
|
224
462
|
);
|
|
225
463
|
|
|
@@ -22,6 +22,7 @@ import { getCleoDirAbsolute } from '../paths.js';
|
|
|
22
22
|
import * as brainSchema from './brain-schema.js';
|
|
23
23
|
import {
|
|
24
24
|
createSafetyBackup,
|
|
25
|
+
ensureColumns,
|
|
25
26
|
migrateWithRetry,
|
|
26
27
|
reconcileJournal,
|
|
27
28
|
tableExists,
|
|
@@ -96,6 +97,60 @@ function runBrainMigrations(
|
|
|
96
97
|
// Pass nativeDb + existenceTable so migrateWithRetry can auto-reconcile any
|
|
97
98
|
// partial migration (Scenario 3) that slips through the proactive check above.
|
|
98
99
|
migrateWithRetry(db, migrationsFolder, nativeDb, 'brain_decisions', 'brain');
|
|
100
|
+
|
|
101
|
+
// Safety net: ensure all columns from T528/T531/T549 exist even if the
|
|
102
|
+
// migration files were never committed to git or the journal was not updated.
|
|
103
|
+
// ensureColumns uses PRAGMA table_info + ALTER TABLE ADD COLUMN — idempotent.
|
|
104
|
+
|
|
105
|
+
// T528: graph schema expansion — quality scoring, content hashing, last-activity.
|
|
106
|
+
// Note: last_activity_at uses nullable text (no non-constant default) because
|
|
107
|
+
// ALTER TABLE ADD COLUMN with datetime('now') default fails on non-empty tables.
|
|
108
|
+
ensureColumns(
|
|
109
|
+
nativeDb,
|
|
110
|
+
'brain_page_nodes',
|
|
111
|
+
[
|
|
112
|
+
{ name: 'quality_score', ddl: 'real DEFAULT 0.5' },
|
|
113
|
+
{ name: 'content_hash', ddl: 'text' },
|
|
114
|
+
{ name: 'last_activity_at', ddl: 'text' },
|
|
115
|
+
{ name: 'updated_at', ddl: 'text' },
|
|
116
|
+
],
|
|
117
|
+
'brain',
|
|
118
|
+
);
|
|
119
|
+
|
|
120
|
+
// T531: quality score on typed brain tables
|
|
121
|
+
for (const table of [
|
|
122
|
+
'brain_decisions',
|
|
123
|
+
'brain_patterns',
|
|
124
|
+
'brain_learnings',
|
|
125
|
+
'brain_observations',
|
|
126
|
+
] as const) {
|
|
127
|
+
ensureColumns(nativeDb, table, [{ name: 'quality_score', ddl: 'real' }], 'brain');
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// T549: tiered + typed memory architecture
|
|
131
|
+
for (const table of [
|
|
132
|
+
'brain_decisions',
|
|
133
|
+
'brain_patterns',
|
|
134
|
+
'brain_learnings',
|
|
135
|
+
'brain_observations',
|
|
136
|
+
] as const) {
|
|
137
|
+
ensureColumns(
|
|
138
|
+
nativeDb,
|
|
139
|
+
table,
|
|
140
|
+
[
|
|
141
|
+
{ name: 'memory_tier', ddl: "text DEFAULT 'short'" },
|
|
142
|
+
{ name: 'memory_type', ddl: "text DEFAULT 'episodic'" },
|
|
143
|
+
{ name: 'verified', ddl: 'integer NOT NULL DEFAULT 0' },
|
|
144
|
+
// valid_at uses nullable text (no datetime('now') default) because
|
|
145
|
+
// ALTER TABLE ADD COLUMN with non-constant defaults fails on non-empty tables.
|
|
146
|
+
{ name: 'valid_at', ddl: 'text' },
|
|
147
|
+
{ name: 'invalid_at', ddl: 'text' },
|
|
148
|
+
{ name: 'source_confidence', ddl: "text DEFAULT 'agent'" },
|
|
149
|
+
{ name: 'citation_count', ddl: 'integer NOT NULL DEFAULT 0' },
|
|
150
|
+
],
|
|
151
|
+
'brain',
|
|
152
|
+
);
|
|
153
|
+
}
|
|
99
154
|
}
|
|
100
155
|
|
|
101
156
|
/**
|
|
@@ -67,10 +67,41 @@ export function createSafetyBackup(dbPath: string): void {
|
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
+
/**
|
|
71
|
+
* Insert a journal entry including `name` so Drizzle v1 beta (which checks by name,
|
|
72
|
+
* not hash) correctly identifies the migration as already applied.
|
|
73
|
+
*
|
|
74
|
+
* Emits INSERT OR IGNORE to avoid duplicate-row errors when called defensively.
|
|
75
|
+
*/
|
|
76
|
+
function insertJournalEntry(
|
|
77
|
+
nativeDb: DatabaseSync,
|
|
78
|
+
hash: string,
|
|
79
|
+
createdAt: number,
|
|
80
|
+
name: string,
|
|
81
|
+
): void {
|
|
82
|
+
// Ensure the name and applied_at columns exist (Drizzle v1 beta schema).
|
|
83
|
+
// These are added by upgradeSyncIfNeeded, but reconcileJournal may run before
|
|
84
|
+
// the first migrate() call that triggers the upgrade.
|
|
85
|
+
const columns = nativeDb.prepare('PRAGMA table_info("__drizzle_migrations")').all() as Array<{
|
|
86
|
+
name: string;
|
|
87
|
+
}>;
|
|
88
|
+
const colNames = new Set(columns.map((c) => c.name));
|
|
89
|
+
if (!colNames.has('name')) {
|
|
90
|
+
nativeDb.exec('ALTER TABLE "__drizzle_migrations" ADD COLUMN "name" text');
|
|
91
|
+
}
|
|
92
|
+
if (!colNames.has('applied_at')) {
|
|
93
|
+
nativeDb.exec('ALTER TABLE "__drizzle_migrations" ADD COLUMN "applied_at" TEXT');
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
nativeDb.exec(
|
|
97
|
+
`INSERT OR IGNORE INTO "__drizzle_migrations" ("hash", "created_at", "name") VALUES ('${hash}', ${createdAt}, '${name}')`,
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
|
|
70
101
|
/**
|
|
71
102
|
* Bootstrap and reconcile the Drizzle migration journal.
|
|
72
103
|
*
|
|
73
|
-
* Handles
|
|
104
|
+
* Handles four scenarios:
|
|
74
105
|
* 1. Tables exist but no __drizzle_migrations — bootstrap baseline as applied
|
|
75
106
|
* 2. Journal has orphaned hashes (from older CLEO version) — clear and re-mark all as applied
|
|
76
107
|
* 3. Journal exists but is missing entries for migrations whose DDL has already been applied
|
|
@@ -78,6 +109,10 @@ export function createSafetyBackup(dbPath: string): void {
|
|
|
78
109
|
* migrations are cherry-picked from worktrees or the process crashes mid-migration).
|
|
79
110
|
* Auto-inserts the missing journal entry so Drizzle skips the migration instead of
|
|
80
111
|
* re-running ALTER TABLE and crashing on "duplicate column name".
|
|
112
|
+
* 4. Journal entries exist but have null `name` — Drizzle v1 beta identifies applied
|
|
113
|
+
* migrations by name, so entries without a name are invisible to it, causing already-
|
|
114
|
+
* applied migrations to be re-run and fail with "duplicate column name". Backfills
|
|
115
|
+
* the name from the local migration file matched by hash.
|
|
81
116
|
*
|
|
82
117
|
* @param nativeDb - Native SQLite database handle
|
|
83
118
|
* @param migrationsFolder - Path to the drizzle migrations folder
|
|
@@ -97,14 +132,14 @@ export function reconcileJournal(
|
|
|
97
132
|
if (baseline) {
|
|
98
133
|
nativeDb.exec(`
|
|
99
134
|
CREATE TABLE IF NOT EXISTS "__drizzle_migrations" (
|
|
100
|
-
id
|
|
135
|
+
id INTEGER PRIMARY KEY,
|
|
101
136
|
hash text NOT NULL,
|
|
102
|
-
created_at numeric
|
|
137
|
+
created_at numeric,
|
|
138
|
+
name text,
|
|
139
|
+
applied_at TEXT
|
|
103
140
|
)
|
|
104
141
|
`);
|
|
105
|
-
nativeDb.
|
|
106
|
-
`INSERT INTO "__drizzle_migrations" ("hash", "created_at") VALUES ('${baseline.hash}', ${baseline.folderMillis})`,
|
|
107
|
-
);
|
|
142
|
+
insertJournalEntry(nativeDb, baseline.hash, baseline.folderMillis, baseline.name ?? '');
|
|
108
143
|
}
|
|
109
144
|
}
|
|
110
145
|
|
|
@@ -125,9 +160,7 @@ export function reconcileJournal(
|
|
|
125
160
|
);
|
|
126
161
|
nativeDb.exec('DELETE FROM "__drizzle_migrations"');
|
|
127
162
|
for (const m of localMigrations) {
|
|
128
|
-
nativeDb.
|
|
129
|
-
`INSERT INTO "__drizzle_migrations" ("hash", "created_at") VALUES ('${m.hash}', ${m.folderMillis})`,
|
|
130
|
-
);
|
|
163
|
+
insertJournalEntry(nativeDb, m.hash, m.folderMillis, m.name ?? '');
|
|
131
164
|
}
|
|
132
165
|
}
|
|
133
166
|
}
|
|
@@ -177,12 +210,50 @@ export function reconcileJournal(
|
|
|
177
210
|
{ migration: migration.name, columns: alterMatches },
|
|
178
211
|
`Detected partially-applied migration ${migration.name} — columns exist but journal entry missing. Auto-reconciling.`,
|
|
179
212
|
);
|
|
180
|
-
nativeDb.
|
|
181
|
-
`INSERT INTO "__drizzle_migrations" ("hash", "created_at") VALUES ('${migration.hash}', ${migration.folderMillis})`,
|
|
182
|
-
);
|
|
213
|
+
insertJournalEntry(nativeDb, migration.hash, migration.folderMillis, migration.name ?? '');
|
|
183
214
|
}
|
|
184
215
|
}
|
|
185
216
|
}
|
|
217
|
+
|
|
218
|
+
// Scenario 4: Journal entries exist but have null `name`.
|
|
219
|
+
//
|
|
220
|
+
// Drizzle v1 beta changed getMigrationsToRun to filter by `name` (not hash).
|
|
221
|
+
// Journal entries inserted by older CLEO code (INSERT without "name") have
|
|
222
|
+
// name = null, which Drizzle filters out — making it treat those migrations as
|
|
223
|
+
// unapplied and re-run them. This causes "duplicate column name" failures for
|
|
224
|
+
// migrations whose DDL has already been applied.
|
|
225
|
+
//
|
|
226
|
+
// Fix: backfill `name` for any journal entries that have name = null but whose
|
|
227
|
+
// hash matches a known local migration file.
|
|
228
|
+
if (tableExists(nativeDb, '__drizzle_migrations') && tableExists(nativeDb, existenceTable)) {
|
|
229
|
+
// Check if the name column exists before querying it
|
|
230
|
+
const migCols = nativeDb.prepare('PRAGMA table_info("__drizzle_migrations")').all() as Array<{
|
|
231
|
+
name: string;
|
|
232
|
+
}>;
|
|
233
|
+
const hasMigNameCol = migCols.some((c) => c.name === 'name');
|
|
234
|
+
if (!hasMigNameCol) return; // name column absent — upgradeSyncIfNeeded will handle it
|
|
235
|
+
|
|
236
|
+
const localMigrations = readMigrationFiles({ migrationsFolder });
|
|
237
|
+
const hashToName = new Map(localMigrations.map((m) => [m.hash, m.name ?? '']));
|
|
238
|
+
|
|
239
|
+
const unnamedEntries = nativeDb
|
|
240
|
+
.prepare('SELECT id, hash FROM "__drizzle_migrations" WHERE name IS NULL')
|
|
241
|
+
.all() as Array<{ id: number; hash: string }>;
|
|
242
|
+
|
|
243
|
+
for (const entry of unnamedEntries) {
|
|
244
|
+
const migrationName = hashToName.get(entry.hash);
|
|
245
|
+
if (!migrationName) continue; // orphaned entry — leave for Scenario 2
|
|
246
|
+
|
|
247
|
+
const log = getLogger(logSubsystem);
|
|
248
|
+
log.warn(
|
|
249
|
+
{ id: entry.id, hash: entry.hash, name: migrationName },
|
|
250
|
+
`Backfilling missing name on journal entry id=${entry.id} — Drizzle v1 beta requires name for applied-migration detection.`,
|
|
251
|
+
);
|
|
252
|
+
nativeDb.exec(
|
|
253
|
+
`UPDATE "__drizzle_migrations" SET "name" = '${migrationName}' WHERE id = ${entry.id}`,
|
|
254
|
+
);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
186
257
|
}
|
|
187
258
|
|
|
188
259
|
/**
|
package/src/system/health.ts
CHANGED
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
checkGlobalTemplates,
|
|
22
22
|
checkLogDir,
|
|
23
23
|
checkMemoryBridge,
|
|
24
|
+
checkNexusBridge,
|
|
24
25
|
checkProjectContext,
|
|
25
26
|
checkProjectInfo,
|
|
26
27
|
checkSqliteDb,
|
|
@@ -894,6 +895,14 @@ export async function coreDoctorReport(projectRoot: string): Promise<DoctorRepor
|
|
|
894
895
|
...(memBridgeCheckResult.fix ? { fix: memBridgeCheckResult.fix } : {}),
|
|
895
896
|
});
|
|
896
897
|
|
|
898
|
+
const nexusBridgeCheckResult = checkNexusBridge(projectRoot);
|
|
899
|
+
checks.push({
|
|
900
|
+
check: 'nexus_bridge',
|
|
901
|
+
status: nexusBridgeCheckResult.status === 'passed' ? 'ok' : 'warning',
|
|
902
|
+
message: nexusBridgeCheckResult.message,
|
|
903
|
+
...(nexusBridgeCheckResult.fix ? { fix: nexusBridgeCheckResult.fix } : {}),
|
|
904
|
+
});
|
|
905
|
+
|
|
897
906
|
// 5f. Adapter health checks (T511 — wire adapter health into doctor)
|
|
898
907
|
// `cleo adapter health` was previously isolated from the doctor report.
|
|
899
908
|
// The doctor is the comprehensive diagnostic view so adapter health belongs here.
|
|
@@ -1384,6 +1393,14 @@ export async function startupHealthCheck(projectRoot?: string): Promise<StartupH
|
|
|
1384
1393
|
message: memBridgeCheck.message,
|
|
1385
1394
|
});
|
|
1386
1395
|
|
|
1396
|
+
// Nexus bridge: info-level check (T552)
|
|
1397
|
+
const nexusBridgeCheck = checkNexusBridge(root);
|
|
1398
|
+
checks.push({
|
|
1399
|
+
check: 'nexus_bridge',
|
|
1400
|
+
status: nexusBridgeCheck.status === 'passed' ? 'pass' : 'warn',
|
|
1401
|
+
message: nexusBridgeCheck.message,
|
|
1402
|
+
});
|
|
1403
|
+
|
|
1387
1404
|
// NEXUS auto-registration (best-effort, never blocks startup)
|
|
1388
1405
|
try {
|
|
1389
1406
|
const { nexusReconcile } = await import('../nexus/registry.js');
|
package/src/tasks/graph-ops.ts
CHANGED
|
@@ -95,6 +95,7 @@ export function getNextTask(tasks: Task[]): Task | null {
|
|
|
95
95
|
const ready = tasks
|
|
96
96
|
.filter((t) => {
|
|
97
97
|
if (t.status === 'done' || t.status === 'cancelled') return false;
|
|
98
|
+
if (t.cancelledAt) return false; // Exclude soft-cancelled tasks regardless of status
|
|
98
99
|
if (t.status === 'active') return true; // Already active = highest priority
|
|
99
100
|
if (!t.depends?.length) return true;
|
|
100
101
|
return t.depends.every((d) => completedIds.has(d));
|
package/src/tasks/task-ops.ts
CHANGED
|
@@ -219,7 +219,7 @@ export async function coreTaskNext(
|
|
|
219
219
|
const currentPhase = projectMeta?.currentPhase ?? null;
|
|
220
220
|
|
|
221
221
|
const candidates = allTasks.filter(
|
|
222
|
-
(t) => t.status === 'pending' && depsReady(t.depends, taskMap),
|
|
222
|
+
(t) => t.status === 'pending' && !t.cancelledAt && depsReady(t.depends, taskMap),
|
|
223
223
|
);
|
|
224
224
|
|
|
225
225
|
if (candidates.length === 0) {
|
|
@@ -66,6 +66,21 @@ Check exit code (`0` = success) and `"success"` in JSON output after every comma
|
|
|
66
66
|
- Token budget: avoid `cleo list` without `--parent`, avoid `cleo help --tier 2` before tier 0
|
|
67
67
|
- Do not read full task details for tasks you won't work on
|
|
68
68
|
|
|
69
|
+
## Memory Protocol (JIT)
|
|
70
|
+
|
|
71
|
+
Pull context on demand — don't pre-load everything:
|
|
72
|
+
|
|
73
|
+
| Need | Command |
|
|
74
|
+
|------|---------|
|
|
75
|
+
| Prior decisions | `cleo memory find "<topic>" --type decision` |
|
|
76
|
+
| Known patterns | `cleo memory find "<domain>" --type pattern` |
|
|
77
|
+
| Timeline context | `cleo memory timeline <id>` |
|
|
78
|
+
| Full details | `cleo memory fetch <id>` |
|
|
79
|
+
| Code context | `cleo nexus context <symbol>` |
|
|
80
|
+
| Impact analysis | `cleo nexus impact <symbol>` |
|
|
81
|
+
|
|
82
|
+
Budget: 3 JIT calls per task phase. More = task is underspecified.
|
|
83
|
+
|
|
69
84
|
## Escalation
|
|
70
85
|
|
|
71
86
|
- Load **ct-cleo** skill for full protocol details
|