@cleocode/core 2026.4.57 → 2026.4.59
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 +55 -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/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 +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.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.js +37 -0
- package/dist/hooks/handlers/index.js.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.js +190 -0
- package/dist/hooks/handlers/session-hooks.js.map +1 -0
- package/dist/hooks/handlers/task-hooks.js +90 -0
- package/dist/hooks/handlers/task-hooks.js.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/init.js +959 -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.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/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.js +105 -0
- package/dist/memory/anthropic-key-resolver.js.map +1 -0
- 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.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-export.js +239 -0
- package/dist/memory/brain-export.js.map +1 -0
- package/dist/memory/brain-lifecycle.js +841 -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 +125 -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.js +1088 -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.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/brain-stdp.js +297 -0
- package/dist/memory/brain-stdp.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/decision-cross-link.js +228 -0
- package/dist/memory/decision-cross-link.js.map +1 -0
- package/dist/memory/decisions.js +242 -0
- package/dist/memory/decisions.js.map +1 -0
- package/dist/memory/edge-types.js +31 -0
- package/dist/memory/edge-types.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.js +1597 -0
- package/dist/memory/engine-compat.js.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-memory-bridge.js +517 -0
- package/dist/memory/graph-memory-bridge.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.js +1148 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/learnings.js +197 -0
- package/dist/memory/learnings.js.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.js +626 -0
- package/dist/memory/observer-reflector.js.map +1 -0
- package/dist/memory/patterns.js +192 -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-feedback.js +449 -0
- package/dist/memory/quality-feedback.js.map +1 -0
- package/dist/memory/quality-scoring.js +182 -0
- package/dist/memory/quality-scoring.js.map +1 -0
- package/dist/memory/session-memory.js +331 -0
- package/dist/memory/session-memory.js.map +1 -0
- package/dist/memory/sleep-consolidation.js +706 -0
- package/dist/memory/sleep-consolidation.js.map +1 -0
- package/dist/memory/temporal-supersession.js +403 -0
- package/dist/memory/temporal-supersession.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.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 +665 -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.js +1937 -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.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.js +628 -0
- package/dist/store/brain-schema.js.map +1 -0
- package/dist/store/brain-sqlite.js +320 -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 +241 -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.js +403 -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 +277 -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 +788 -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.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.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.js +1207 -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 +252 -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.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/telemetry/index.js +249 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/schema.js +60 -0
- package/dist/telemetry/schema.js.map +1 -0
- package/dist/telemetry/sqlite.js +111 -0
- package/dist/telemetry/sqlite.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 +1387 -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/package.json +8 -8
|
@@ -0,0 +1,403 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified migration manager for SQLite databases.
|
|
3
|
+
*
|
|
4
|
+
* Consolidates duplicated reconciliation, bootstrap, retry, and column-safety
|
|
5
|
+
* logic that was previously copy-pasted between sqlite.ts (tasks.db) and
|
|
6
|
+
* brain-sqlite.ts (brain.db). Both modules now delegate to these shared functions.
|
|
7
|
+
*
|
|
8
|
+
* @task T132
|
|
9
|
+
* @see https://github.com/anthropics/cleo/issues/82
|
|
10
|
+
* @see https://github.com/anthropics/cleo/issues/63
|
|
11
|
+
* @see https://github.com/anthropics/cleo/issues/65
|
|
12
|
+
*/
|
|
13
|
+
import { copyFileSync, existsSync } from 'node:fs';
|
|
14
|
+
import { readMigrationFiles } from 'drizzle-orm/migrator';
|
|
15
|
+
import { migrate } from 'drizzle-orm/node-sqlite/migrator';
|
|
16
|
+
import { getLogger } from '../logger.js';
|
|
17
|
+
/** Migration retry constants for SQLITE_BUSY handling (T5185). */
|
|
18
|
+
const MAX_MIGRATION_RETRIES = 5;
|
|
19
|
+
const MIGRATION_RETRY_BASE_DELAY_MS = 100;
|
|
20
|
+
const MIGRATION_RETRY_MAX_DELAY_MS = 2000;
|
|
21
|
+
/**
|
|
22
|
+
* Check whether a table exists in a SQLite database.
|
|
23
|
+
*/
|
|
24
|
+
export function tableExists(nativeDb, tableName) {
|
|
25
|
+
const result = nativeDb
|
|
26
|
+
.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name=?")
|
|
27
|
+
.get(tableName);
|
|
28
|
+
return !!result;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Check if an error is a SQLite BUSY error (database locked by another process).
|
|
32
|
+
* node:sqlite throws native Error with message containing the SQLite error code.
|
|
33
|
+
* @task T5185
|
|
34
|
+
*/
|
|
35
|
+
export function isSqliteBusy(err) {
|
|
36
|
+
if (!(err instanceof Error))
|
|
37
|
+
return false;
|
|
38
|
+
const msg = err.message.toLowerCase();
|
|
39
|
+
return msg.includes('sqlite_busy') || msg.includes('database is locked');
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Create a pre-migration safety backup of the database file.
|
|
43
|
+
*
|
|
44
|
+
* Only creates the backup once (idempotent). Non-fatal on failure.
|
|
45
|
+
*/
|
|
46
|
+
export function createSafetyBackup(dbPath) {
|
|
47
|
+
const backupPath = dbPath.replace(/\.db$/, '-pre-cleo.db.bak');
|
|
48
|
+
if (!existsSync(backupPath)) {
|
|
49
|
+
try {
|
|
50
|
+
copyFileSync(dbPath, backupPath);
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
/* non-fatal */
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Insert a journal entry including `name` so Drizzle v1 beta (which checks by name,
|
|
59
|
+
* not hash) correctly identifies the migration as already applied.
|
|
60
|
+
*
|
|
61
|
+
* Emits INSERT OR IGNORE to avoid duplicate-row errors when called defensively.
|
|
62
|
+
*/
|
|
63
|
+
function insertJournalEntry(nativeDb, hash, createdAt, name) {
|
|
64
|
+
// Ensure the name and applied_at columns exist (Drizzle v1 beta schema).
|
|
65
|
+
// These are added by upgradeSyncIfNeeded, but reconcileJournal may run before
|
|
66
|
+
// the first migrate() call that triggers the upgrade.
|
|
67
|
+
const columns = nativeDb.prepare('PRAGMA table_info("__drizzle_migrations")').all();
|
|
68
|
+
const colNames = new Set(columns.map((c) => c.name));
|
|
69
|
+
if (!colNames.has('name')) {
|
|
70
|
+
nativeDb.exec('ALTER TABLE "__drizzle_migrations" ADD COLUMN "name" text');
|
|
71
|
+
}
|
|
72
|
+
if (!colNames.has('applied_at')) {
|
|
73
|
+
nativeDb.exec('ALTER TABLE "__drizzle_migrations" ADD COLUMN "applied_at" TEXT');
|
|
74
|
+
}
|
|
75
|
+
nativeDb.exec(`INSERT OR IGNORE INTO "__drizzle_migrations" ("hash", "created_at", "name") VALUES ('${hash}', ${createdAt}, '${name}')`);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Probe a migration's DDL against the live schema and mark the journal entry
|
|
79
|
+
* applied IF AND ONLY IF all DDL targets already exist in the database.
|
|
80
|
+
*
|
|
81
|
+
* Supports three DDL forms commonly emitted by drizzle migrations:
|
|
82
|
+
* - `ALTER TABLE foo ADD COLUMN bar text` → mark applied if column foo.bar exists
|
|
83
|
+
* - `CREATE TABLE foo (...)` → mark applied if table foo exists
|
|
84
|
+
* - `CREATE INDEX [IF NOT EXISTS] idx_foo ON foo(...)` → mark applied if index exists
|
|
85
|
+
*
|
|
86
|
+
* If the migration contains DDL that doesn't fall into these patterns, or if any
|
|
87
|
+
* target is missing, the function returns false and DOES NOT mark applied —
|
|
88
|
+
* leaving the migration for Drizzle's normal `migrate()` to run.
|
|
89
|
+
*
|
|
90
|
+
* Used by:
|
|
91
|
+
* - Scenario 2 Sub-case B (after journal reset, decide what was already applied)
|
|
92
|
+
* - Scenario 3 (originally inline; now extracted for reuse)
|
|
93
|
+
*
|
|
94
|
+
* Replaces the broken "wholesale mark applied" pattern that was the root cause
|
|
95
|
+
* of the ensureColumns band-aid sprawl (T632).
|
|
96
|
+
*
|
|
97
|
+
* @param nativeDb - Native SQLite database handle
|
|
98
|
+
* @param migration - One entry from drizzle's readMigrationFiles
|
|
99
|
+
* @param logSubsystem - Logger subsystem name
|
|
100
|
+
* @returns true if the journal entry was inserted; false if migration must run
|
|
101
|
+
*/
|
|
102
|
+
function probeAndMarkApplied(nativeDb, migration, logSubsystem) {
|
|
103
|
+
const sqlStatements = Array.isArray(migration.sql) ? migration.sql : [migration.sql ?? ''];
|
|
104
|
+
const fullSql = sqlStatements.join('\n');
|
|
105
|
+
// Extract DDL targets we can probe.
|
|
106
|
+
const alterColumnRegex = /ALTER\s+TABLE\s+[`"]?(\w+)[`"]?\s+ADD\s+COLUMN\s+[`"]?(\w+)[`"]?/gi;
|
|
107
|
+
const createTableRegex = /CREATE\s+TABLE\s+(?:IF\s+NOT\s+EXISTS\s+)?[`"]?(\w+)[`"]?/gi;
|
|
108
|
+
const createIndexRegex = /CREATE\s+(?:UNIQUE\s+)?INDEX\s+(?:IF\s+NOT\s+EXISTS\s+)?[`"]?(\w+)[`"]?/gi;
|
|
109
|
+
const alterTargets = [];
|
|
110
|
+
for (const m of fullSql.matchAll(alterColumnRegex)) {
|
|
111
|
+
alterTargets.push({ table: m[1], column: m[2] });
|
|
112
|
+
}
|
|
113
|
+
const tableTargets = [];
|
|
114
|
+
for (const m of fullSql.matchAll(createTableRegex)) {
|
|
115
|
+
tableTargets.push(m[1]);
|
|
116
|
+
}
|
|
117
|
+
const indexTargets = [];
|
|
118
|
+
for (const m of fullSql.matchAll(createIndexRegex)) {
|
|
119
|
+
indexTargets.push(m[1]);
|
|
120
|
+
}
|
|
121
|
+
const totalTargets = alterTargets.length + tableTargets.length + indexTargets.length;
|
|
122
|
+
if (totalTargets === 0) {
|
|
123
|
+
// No probable DDL — could be UPDATE/INSERT/DELETE/etc. Leave for migrate().
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
// Probe each target.
|
|
127
|
+
const allAltersPresent = alterTargets.every(({ table, column }) => {
|
|
128
|
+
if (!tableExists(nativeDb, table))
|
|
129
|
+
return false;
|
|
130
|
+
const cols = nativeDb.prepare(`PRAGMA table_info(${table})`).all();
|
|
131
|
+
return cols.some((c) => c.name === column);
|
|
132
|
+
});
|
|
133
|
+
const allTablesPresent = tableTargets.every((t) => tableExists(nativeDb, t));
|
|
134
|
+
const allIndexesPresent = indexTargets.every((idx) => {
|
|
135
|
+
const rows = nativeDb
|
|
136
|
+
.prepare(`SELECT name FROM sqlite_master WHERE type='index' AND name=?`)
|
|
137
|
+
.all(idx);
|
|
138
|
+
return rows.length > 0;
|
|
139
|
+
});
|
|
140
|
+
if (allAltersPresent && allTablesPresent && allIndexesPresent) {
|
|
141
|
+
insertJournalEntry(nativeDb, migration.hash, migration.folderMillis, migration.name ?? '');
|
|
142
|
+
const log = getLogger(logSubsystem);
|
|
143
|
+
log.debug({
|
|
144
|
+
migration: migration.name,
|
|
145
|
+
alters: alterTargets.length,
|
|
146
|
+
tables: tableTargets.length,
|
|
147
|
+
indexes: indexTargets.length,
|
|
148
|
+
}, `Migration ${migration.name} DDL already present in schema — marked applied.`);
|
|
149
|
+
return true;
|
|
150
|
+
}
|
|
151
|
+
// At least one target missing — leave for drizzle migrate() to run.
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Bootstrap and reconcile the Drizzle migration journal.
|
|
156
|
+
*
|
|
157
|
+
* Handles four scenarios:
|
|
158
|
+
* 1. Tables exist but no __drizzle_migrations — bootstrap baseline as applied
|
|
159
|
+
* 2. Journal has orphaned hashes (from older CLEO version) — clear and re-mark all as applied
|
|
160
|
+
* 3. Journal exists but is missing entries for migrations whose DDL has already been applied
|
|
161
|
+
* (e.g., ALTER TABLE ADD COLUMN ran but journal entry was never written — happens when
|
|
162
|
+
* migrations are cherry-picked from worktrees or the process crashes mid-migration).
|
|
163
|
+
* Auto-inserts the missing journal entry so Drizzle skips the migration instead of
|
|
164
|
+
* re-running ALTER TABLE and crashing on "duplicate column name".
|
|
165
|
+
* 4. Journal entries exist but have null `name` — Drizzle v1 beta identifies applied
|
|
166
|
+
* migrations by name, so entries without a name are invisible to it, causing already-
|
|
167
|
+
* applied migrations to be re-run and fail with "duplicate column name". Backfills
|
|
168
|
+
* the name from the local migration file matched by hash.
|
|
169
|
+
*
|
|
170
|
+
* @param nativeDb - Native SQLite database handle
|
|
171
|
+
* @param migrationsFolder - Path to the drizzle migrations folder
|
|
172
|
+
* @param existenceTable - A table name used to detect if the DB has data (e.g., 'tasks' or 'brain_decisions')
|
|
173
|
+
* @param logSubsystem - Logger subsystem name for reconciliation warnings
|
|
174
|
+
*/
|
|
175
|
+
export function reconcileJournal(nativeDb, migrationsFolder, existenceTable, logSubsystem) {
|
|
176
|
+
// Scenario 1: Tables exist but no migration journal — bootstrap baseline
|
|
177
|
+
if (tableExists(nativeDb, existenceTable) && !tableExists(nativeDb, '__drizzle_migrations')) {
|
|
178
|
+
const migrations = readMigrationFiles({ migrationsFolder });
|
|
179
|
+
const baseline = migrations[0];
|
|
180
|
+
if (baseline) {
|
|
181
|
+
nativeDb.exec(`
|
|
182
|
+
CREATE TABLE IF NOT EXISTS "__drizzle_migrations" (
|
|
183
|
+
id INTEGER PRIMARY KEY,
|
|
184
|
+
hash text NOT NULL,
|
|
185
|
+
created_at numeric,
|
|
186
|
+
name text,
|
|
187
|
+
applied_at TEXT
|
|
188
|
+
)
|
|
189
|
+
`);
|
|
190
|
+
insertJournalEntry(nativeDb, baseline.hash, baseline.folderMillis, baseline.name ?? '');
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
// Scenario 2: Journal has orphaned entries from a previous CLEO version
|
|
194
|
+
//
|
|
195
|
+
// Two distinct sub-cases require different handling:
|
|
196
|
+
//
|
|
197
|
+
// A) DB is AHEAD of this install (forward-compatibility): all local hashes
|
|
198
|
+
// are present in the DB, but the DB also has additional entries for
|
|
199
|
+
// migrations this install does not know about. This happens when a user
|
|
200
|
+
// runs a globally-installed (older) cleo binary against a DB that was
|
|
201
|
+
// last written by a newer cleo version. Deleting those entries would
|
|
202
|
+
// cause an infinite reconciliation cycle: Drizzle re-runs the "missing"
|
|
203
|
+
// migrations, hits duplicate-column errors (Scenario 3 recovers), writes
|
|
204
|
+
// them back — only for this install to delete them again on the next run.
|
|
205
|
+
// ACTION: skip reconciliation, log at debug only.
|
|
206
|
+
//
|
|
207
|
+
// B) DB has stale hashes from a genuinely old CLEO version whose checksum
|
|
208
|
+
// algorithm produced different hashes for the same migration files (i.e.,
|
|
209
|
+
// at least one local hash is MISSING from the DB while other DB entries
|
|
210
|
+
// are unrecognised). ACTION: delete and re-seed as before, log at warn.
|
|
211
|
+
if (tableExists(nativeDb, '__drizzle_migrations') && tableExists(nativeDb, existenceTable)) {
|
|
212
|
+
const localMigrations = readMigrationFiles({ migrationsFolder });
|
|
213
|
+
const localHashes = new Set(localMigrations.map((m) => m.hash));
|
|
214
|
+
const dbEntries = nativeDb.prepare('SELECT hash FROM "__drizzle_migrations"').all();
|
|
215
|
+
const orphanedEntries = dbEntries.filter((e) => !localHashes.has(e.hash));
|
|
216
|
+
const hasOrphanedEntries = orphanedEntries.length > 0;
|
|
217
|
+
if (hasOrphanedEntries) {
|
|
218
|
+
const dbHashes = new Set(dbEntries.map((e) => e.hash));
|
|
219
|
+
const allLocalHashesPresentInDb = localMigrations.every((m) => dbHashes.has(m.hash));
|
|
220
|
+
if (allLocalHashesPresentInDb) {
|
|
221
|
+
// Sub-case A: DB is ahead — this install is older than the DB.
|
|
222
|
+
// Do NOT modify the journal; log at debug so we can trace if needed.
|
|
223
|
+
const log = getLogger(logSubsystem);
|
|
224
|
+
log.debug({ extra: orphanedEntries.length }, `Migration journal has ${orphanedEntries.length} entries for migrations not known to this install (DB is ahead). Skipping reconciliation.`);
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
// Sub-case B: Genuine stale hashes from an older CLEO version.
|
|
228
|
+
// ROOT-CAUSE FIX (T632): The previous implementation DELETEd the journal
|
|
229
|
+
// and INSERTed all local migrations as applied WITHOUT running their SQL.
|
|
230
|
+
// That meant ALTER TABLE migrations (T417 agent, T528 provenance, etc.)
|
|
231
|
+
// got marked applied but their columns were never added — forcing
|
|
232
|
+
// ensureColumns band-aids in brain-sqlite.ts to patch the missing schema.
|
|
233
|
+
//
|
|
234
|
+
// Real fix: clear orphaned entries, then PROBE each local migration's
|
|
235
|
+
// DDL. Mark applied ONLY if the DDL targets already exist in the schema.
|
|
236
|
+
// Drizzle's migrate() (called next) will run whatever remains unjournaled.
|
|
237
|
+
const log = getLogger(logSubsystem);
|
|
238
|
+
log.warn({ orphaned: orphanedEntries.length }, `Detected stale migration journal entries from a previous CLEO version. Reconciling via DDL probe.`);
|
|
239
|
+
nativeDb.exec('DELETE FROM "__drizzle_migrations"');
|
|
240
|
+
for (const m of localMigrations) {
|
|
241
|
+
probeAndMarkApplied(nativeDb, m, logSubsystem);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
// Scenario 3: Journal exists but is missing entries for already-applied migrations.
|
|
247
|
+
// Detects migrations whose DDL columns already exist in the database but whose
|
|
248
|
+
// journal entry was never written (e.g., cherry-picked from a worktree, or process
|
|
249
|
+
// crashed after the ALTER TABLE succeeded but before the journal INSERT committed).
|
|
250
|
+
if (tableExists(nativeDb, '__drizzle_migrations') && tableExists(nativeDb, existenceTable)) {
|
|
251
|
+
const localMigrations = readMigrationFiles({ migrationsFolder });
|
|
252
|
+
const journalEntries = nativeDb
|
|
253
|
+
.prepare('SELECT hash FROM "__drizzle_migrations"')
|
|
254
|
+
.all();
|
|
255
|
+
const journaledHashes = new Set(journalEntries.map((e) => e.hash));
|
|
256
|
+
for (const migration of localMigrations) {
|
|
257
|
+
if (journaledHashes.has(migration.hash))
|
|
258
|
+
continue;
|
|
259
|
+
// Parse the migration SQL for ALTER TABLE ... ADD COLUMN statements.
|
|
260
|
+
// drizzle's readMigrationFiles returns sql as string[] (one entry per
|
|
261
|
+
// statement-breakpoint-separated statement), so join them for regex scanning.
|
|
262
|
+
const alterColumnRegex = /ALTER\s+TABLE\s+[`"]?(\w+)[`"]?\s+ADD\s+COLUMN\s+[`"]?(\w+)[`"]?/gi;
|
|
263
|
+
const alterMatches = [];
|
|
264
|
+
const sqlStatements = Array.isArray(migration.sql) ? migration.sql : [migration.sql ?? ''];
|
|
265
|
+
const fullSql = sqlStatements.join('\n');
|
|
266
|
+
for (const m of fullSql.matchAll(alterColumnRegex)) {
|
|
267
|
+
alterMatches.push({ table: m[1], column: m[2] });
|
|
268
|
+
}
|
|
269
|
+
// Only auto-reconcile migrations that consist entirely of ALTER TABLE ADD COLUMN
|
|
270
|
+
// statements (and contain at least one). Pure CREATE INDEX / DROP INDEX migrations
|
|
271
|
+
// that have no journal entry are genuinely pending and must run normally.
|
|
272
|
+
if (alterMatches.length === 0)
|
|
273
|
+
continue;
|
|
274
|
+
// Check whether all ADD COLUMN targets already exist in their tables.
|
|
275
|
+
const allColumnsExist = alterMatches.every(({ table, column }) => {
|
|
276
|
+
if (!tableExists(nativeDb, table))
|
|
277
|
+
return false;
|
|
278
|
+
const cols = nativeDb.prepare(`PRAGMA table_info(${table})`).all();
|
|
279
|
+
return cols.some((c) => c.name === column);
|
|
280
|
+
});
|
|
281
|
+
if (allColumnsExist) {
|
|
282
|
+
const log = getLogger(logSubsystem);
|
|
283
|
+
log.warn({ migration: migration.name, columns: alterMatches }, `Detected partially-applied migration ${migration.name} — columns exist but journal entry missing. Auto-reconciling.`);
|
|
284
|
+
insertJournalEntry(nativeDb, migration.hash, migration.folderMillis, migration.name ?? '');
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
// Scenario 4: Journal entries exist but have null `name`.
|
|
289
|
+
//
|
|
290
|
+
// Drizzle v1 beta changed getMigrationsToRun to filter by `name` (not hash).
|
|
291
|
+
// Journal entries inserted by older CLEO code (INSERT without "name") have
|
|
292
|
+
// name = null, which Drizzle filters out — making it treat those migrations as
|
|
293
|
+
// unapplied and re-run them. This causes "duplicate column name" failures for
|
|
294
|
+
// migrations whose DDL has already been applied.
|
|
295
|
+
//
|
|
296
|
+
// Fix: backfill `name` for any journal entries that have name = null but whose
|
|
297
|
+
// hash matches a known local migration file.
|
|
298
|
+
if (tableExists(nativeDb, '__drizzle_migrations') && tableExists(nativeDb, existenceTable)) {
|
|
299
|
+
// Check if the name column exists before querying it
|
|
300
|
+
const migCols = nativeDb.prepare('PRAGMA table_info("__drizzle_migrations")').all();
|
|
301
|
+
const hasMigNameCol = migCols.some((c) => c.name === 'name');
|
|
302
|
+
if (!hasMigNameCol)
|
|
303
|
+
return; // name column absent — upgradeSyncIfNeeded will handle it
|
|
304
|
+
const localMigrations = readMigrationFiles({ migrationsFolder });
|
|
305
|
+
const hashToName = new Map(localMigrations.map((m) => [m.hash, m.name ?? '']));
|
|
306
|
+
const unnamedEntries = nativeDb
|
|
307
|
+
.prepare('SELECT id, hash FROM "__drizzle_migrations" WHERE name IS NULL')
|
|
308
|
+
.all();
|
|
309
|
+
for (const entry of unnamedEntries) {
|
|
310
|
+
const migrationName = hashToName.get(entry.hash);
|
|
311
|
+
if (!migrationName)
|
|
312
|
+
continue; // orphaned entry — leave for Scenario 2
|
|
313
|
+
const log = getLogger(logSubsystem);
|
|
314
|
+
log.warn({ id: entry.id, hash: entry.hash, name: migrationName }, `Backfilling missing name on journal entry id=${entry.id} — Drizzle v1 beta requires name for applied-migration detection.`);
|
|
315
|
+
nativeDb.exec(`UPDATE "__drizzle_migrations" SET "name" = '${migrationName}' WHERE id = ${entry.id}`);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Check whether an error is a SQLite "duplicate column name" error.
|
|
321
|
+
*
|
|
322
|
+
* These are thrown when an ALTER TABLE ADD COLUMN statement is re-executed
|
|
323
|
+
* after the column was already added (Scenario 3 in reconcileJournal).
|
|
324
|
+
*/
|
|
325
|
+
export function isDuplicateColumnError(err) {
|
|
326
|
+
if (!(err instanceof Error))
|
|
327
|
+
return false;
|
|
328
|
+
return /duplicate column name/i.test(err.message);
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Run Drizzle migrations with SQLITE_BUSY retry and exponential backoff.
|
|
332
|
+
*
|
|
333
|
+
* Also handles "duplicate column name" errors (Scenario 3): if Drizzle tries to
|
|
334
|
+
* re-apply a migration whose DDL columns already exist (journal entry missing),
|
|
335
|
+
* this function calls reconcileJournal again to insert the missing entry and
|
|
336
|
+
* retries migrate() once more. This is the belt-and-suspenders safety net for
|
|
337
|
+
* any partial migration that slips through the proactive reconcileJournal check.
|
|
338
|
+
*
|
|
339
|
+
* @param db - Drizzle database instance
|
|
340
|
+
* @param migrationsFolder - Path to the drizzle migrations folder
|
|
341
|
+
* @param nativeDb - Optional native SQLite handle for duplicate-column auto-reconcile
|
|
342
|
+
* @param existenceTable - Optional existence-check table name for auto-reconcile
|
|
343
|
+
* @param logSubsystem - Optional logger subsystem name for auto-reconcile warnings
|
|
344
|
+
*/
|
|
345
|
+
export function migrateWithRetry(
|
|
346
|
+
// biome-ignore lint/suspicious/noExplicitAny: Drizzle's NodeSQLiteDatabase is generic — accepting any schema avoids coupling to a specific schema type
|
|
347
|
+
db, migrationsFolder, nativeDb, existenceTable, logSubsystem) {
|
|
348
|
+
let duplicateColumnReconciled = false;
|
|
349
|
+
for (let attempt = 1; attempt <= MAX_MIGRATION_RETRIES; attempt++) {
|
|
350
|
+
try {
|
|
351
|
+
migrate(db, { migrationsFolder });
|
|
352
|
+
return;
|
|
353
|
+
}
|
|
354
|
+
catch (err) {
|
|
355
|
+
// Belt-and-suspenders: if Drizzle hits a duplicate column name error on
|
|
356
|
+
// the first attempt and we have the native DB handle, run Scenario 3
|
|
357
|
+
// reconcileJournal and retry once. This catches any partial migration that
|
|
358
|
+
// slipped through the proactive check run before migrateWithRetry.
|
|
359
|
+
if (isDuplicateColumnError(err) &&
|
|
360
|
+
!duplicateColumnReconciled &&
|
|
361
|
+
nativeDb !== undefined &&
|
|
362
|
+
existenceTable !== undefined &&
|
|
363
|
+
logSubsystem !== undefined) {
|
|
364
|
+
duplicateColumnReconciled = true;
|
|
365
|
+
reconcileJournal(nativeDb, migrationsFolder, existenceTable, logSubsystem);
|
|
366
|
+
continue;
|
|
367
|
+
}
|
|
368
|
+
if (!isSqliteBusy(err) || attempt === MAX_MIGRATION_RETRIES) {
|
|
369
|
+
throw err;
|
|
370
|
+
}
|
|
371
|
+
const delay = Math.min(MIGRATION_RETRY_BASE_DELAY_MS * 2 ** (attempt - 1) * (1 + Math.random() * 0.5), MIGRATION_RETRY_MAX_DELAY_MS);
|
|
372
|
+
Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, Math.round(delay));
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
/**
|
|
377
|
+
* Ensure all required columns exist on a table.
|
|
378
|
+
*
|
|
379
|
+
* Uses PRAGMA table_info to inspect the schema and adds any missing columns
|
|
380
|
+
* via ALTER TABLE ADD COLUMN. Safety net for databases where Drizzle migrations
|
|
381
|
+
* could not run due to journal corruption or version skew.
|
|
382
|
+
*
|
|
383
|
+
* @param nativeDb - Native SQLite database handle
|
|
384
|
+
* @param tableName - Table to check (e.g., 'tasks')
|
|
385
|
+
* @param requiredColumns - Columns that must exist
|
|
386
|
+
* @param logSubsystem - Logger subsystem name
|
|
387
|
+
*/
|
|
388
|
+
export function ensureColumns(nativeDb, tableName, requiredColumns, logSubsystem) {
|
|
389
|
+
if (!tableExists(nativeDb, tableName))
|
|
390
|
+
return;
|
|
391
|
+
if (requiredColumns.length === 0)
|
|
392
|
+
return;
|
|
393
|
+
const columns = nativeDb.prepare(`PRAGMA table_info(${tableName})`).all();
|
|
394
|
+
const existingCols = new Set(columns.map((c) => c.name));
|
|
395
|
+
for (const req of requiredColumns) {
|
|
396
|
+
if (!existingCols.has(req.name)) {
|
|
397
|
+
const log = getLogger(logSubsystem);
|
|
398
|
+
log.warn({ column: req.name }, `Adding missing column ${tableName}.${req.name} via ALTER TABLE`);
|
|
399
|
+
nativeDb.exec(`ALTER TABLE ${tableName} ADD COLUMN ${req.name} ${req.ddl}`);
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
//# sourceMappingURL=migration-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-manager.js","sourceRoot":"","sources":["../../src/store/migration-manager.ts"],"names":[],"mappings":"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"}
|