@cleocode/core 2026.4.12 → 2026.4.14
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/index.js +69233 -175
- package/dist/index.js.map +7 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/internal.d.ts +16 -5
- package/dist/internal.d.ts.map +1 -1
- package/dist/memory/brain-embedding.d.ts +1 -1
- package/dist/memory/embedding-local.d.ts +8 -3
- package/dist/memory/embedding-local.d.ts.map +1 -1
- package/dist/memory/embedding-worker.d.ts +1 -1
- package/dist/memory/learnings.d.ts +2 -2
- package/dist/memory/patterns.d.ts +6 -6
- package/dist/store/agent-registry-accessor.d.ts +54 -1
- package/dist/store/agent-registry-accessor.d.ts.map +1 -1
- package/dist/store/backup-crypto.d.ts +89 -0
- package/dist/store/backup-crypto.d.ts.map +1 -0
- package/dist/store/backup-pack.d.ts +91 -0
- package/dist/store/backup-pack.d.ts.map +1 -0
- package/dist/store/backup-unpack.d.ts +140 -0
- package/dist/store/backup-unpack.d.ts.map +1 -0
- package/dist/store/migrate-signaldock-to-conduit.d.ts.map +1 -1
- package/dist/store/regenerators.d.ts +126 -0
- package/dist/store/regenerators.d.ts.map +1 -0
- package/dist/store/restore-conflict-report.d.ts +118 -0
- package/dist/store/restore-conflict-report.d.ts.map +1 -0
- package/dist/store/restore-json-merge.d.ts +187 -0
- package/dist/store/restore-json-merge.d.ts.map +1 -0
- package/dist/store/sqlite-backup.d.ts +60 -5
- package/dist/store/sqlite-backup.d.ts.map +1 -1
- package/dist/store/t310-readiness.d.ts +83 -0
- package/dist/store/t310-readiness.d.ts.map +1 -0
- package/package.json +11 -9
- package/src/__tests__/cli-parity.test.ts +19 -14
- package/src/__tests__/human-output.test.ts +13 -11
- package/src/init.ts +18 -8
- package/src/internal.ts +52 -2
- package/src/memory/__tests__/brain-automation.test.ts +2 -2
- package/src/memory/brain-embedding.ts +1 -1
- package/src/memory/embedding-local.ts +10 -5
- package/src/memory/embedding-worker.ts +1 -1
- package/src/skills/__tests__/discovery.test.ts +22 -7
- package/src/store/__tests__/backup-crypto.test.ts +101 -0
- package/src/store/__tests__/backup-pack.test.ts +491 -0
- package/src/store/__tests__/backup-unpack.test.ts +298 -0
- package/src/store/__tests__/performance-safety.test.ts +11 -5
- package/src/store/__tests__/regenerators.test.ts +234 -0
- package/src/store/__tests__/restore-conflict-report.test.ts +274 -0
- package/src/store/__tests__/restore-json-merge.test.ts +521 -0
- package/src/store/__tests__/t310-readiness.test.ts +111 -0
- package/src/store/__tests__/t311-integration.test.ts +661 -0
- package/src/store/backup-crypto.ts +209 -0
- package/src/store/backup-pack.ts +739 -0
- package/src/store/backup-unpack.ts +583 -0
- package/src/store/migrate-signaldock-to-conduit.ts +14 -7
- package/src/store/regenerators.ts +243 -0
- package/src/store/restore-conflict-report.ts +317 -0
- package/src/store/restore-json-merge.ts +653 -0
- package/src/store/t310-readiness.ts +119 -0
- package/src/validation/protocols/_shared.ts +1 -1
- package/dist/adapters/adapter-registry.js +0 -64
- package/dist/adapters/adapter-registry.js.map +0 -1
- package/dist/adapters/discovery.js +0 -83
- package/dist/adapters/discovery.js.map +0 -1
- package/dist/adapters/index.js +0 -9
- package/dist/adapters/index.js.map +0 -1
- package/dist/adapters/manager.js +0 -260
- package/dist/adapters/manager.js.map +0 -1
- package/dist/admin/export-tasks.js +0 -171
- package/dist/admin/export-tasks.js.map +0 -1
- package/dist/admin/export.js +0 -103
- package/dist/admin/export.js.map +0 -1
- package/dist/admin/help.js +0 -106
- package/dist/admin/help.js.map +0 -1
- package/dist/admin/import-tasks.js +0 -182
- package/dist/admin/import-tasks.js.map +0 -1
- package/dist/admin/import.js +0 -129
- package/dist/admin/import.js.map +0 -1
- package/dist/admin/index.js +0 -13
- package/dist/admin/index.js.map +0 -1
- package/dist/adrs/find.js +0 -134
- package/dist/adrs/find.js.map +0 -1
- package/dist/adrs/index.js +0 -15
- package/dist/adrs/index.js.map +0 -1
- package/dist/adrs/link-pipeline.js +0 -160
- package/dist/adrs/link-pipeline.js.map +0 -1
- package/dist/adrs/list.js +0 -43
- package/dist/adrs/list.js.map +0 -1
- package/dist/adrs/parse.js +0 -51
- package/dist/adrs/parse.js.map +0 -1
- package/dist/adrs/show.js +0 -22
- package/dist/adrs/show.js.map +0 -1
- package/dist/adrs/sync.js +0 -188
- package/dist/adrs/sync.js.map +0 -1
- package/dist/adrs/types.js +0 -9
- package/dist/adrs/types.js.map +0 -1
- package/dist/adrs/validate.js +0 -57
- package/dist/adrs/validate.js.map +0 -1
- package/dist/agents/agent-registry.js +0 -288
- package/dist/agents/agent-registry.js.map +0 -1
- package/dist/agents/agent-schema.js +0 -82
- package/dist/agents/agent-schema.js.map +0 -1
- package/dist/agents/capacity.js +0 -116
- package/dist/agents/capacity.js.map +0 -1
- package/dist/agents/execution-learning.js +0 -474
- package/dist/agents/execution-learning.js.map +0 -1
- package/dist/agents/health-monitor.js +0 -217
- package/dist/agents/health-monitor.js.map +0 -1
- package/dist/agents/index.js +0 -29
- package/dist/agents/index.js.map +0 -1
- package/dist/agents/registry.js +0 -314
- package/dist/agents/registry.js.map +0 -1
- package/dist/agents/retry.js +0 -215
- package/dist/agents/retry.js.map +0 -1
- package/dist/audit-prune.js +0 -94
- package/dist/audit-prune.js.map +0 -1
- package/dist/audit.js +0 -68
- package/dist/audit.js.map +0 -1
- package/dist/backfill/index.js +0 -229
- package/dist/backfill/index.js.map +0 -1
- package/dist/bootstrap.js +0 -344
- package/dist/bootstrap.js.map +0 -1
- package/dist/caamp/adapter.js +0 -259
- package/dist/caamp/adapter.js.map +0 -1
- package/dist/caamp/capability-check.js +0 -38
- package/dist/caamp/capability-check.js.map +0 -1
- package/dist/caamp/index.js +0 -21
- package/dist/caamp/index.js.map +0 -1
- package/dist/caamp-init.js +0 -16
- package/dist/caamp-init.js.map +0 -1
- package/dist/cleo.js +0 -322
- package/dist/cleo.js.map +0 -1
- package/dist/code/index.js +0 -10
- package/dist/code/index.js.map +0 -1
- package/dist/code/outline.js +0 -165
- package/dist/code/outline.js.map +0 -1
- package/dist/code/parser.js +0 -295
- package/dist/code/parser.js.map +0 -1
- package/dist/code/search.js +0 -135
- package/dist/code/search.js.map +0 -1
- package/dist/code/unfold.js +0 -155
- package/dist/code/unfold.js.map +0 -1
- package/dist/codebase-map/analyzers/architecture.js +0 -129
- package/dist/codebase-map/analyzers/architecture.js.map +0 -1
- package/dist/codebase-map/analyzers/concerns.js +0 -122
- package/dist/codebase-map/analyzers/concerns.js.map +0 -1
- package/dist/codebase-map/analyzers/conventions.js +0 -149
- package/dist/codebase-map/analyzers/conventions.js.map +0 -1
- package/dist/codebase-map/analyzers/integrations.js +0 -108
- package/dist/codebase-map/analyzers/integrations.js.map +0 -1
- package/dist/codebase-map/analyzers/stack.js +0 -117
- package/dist/codebase-map/analyzers/stack.js.map +0 -1
- package/dist/codebase-map/analyzers/structure.js +0 -137
- package/dist/codebase-map/analyzers/structure.js.map +0 -1
- package/dist/codebase-map/analyzers/testing.js +0 -118
- package/dist/codebase-map/analyzers/testing.js.map +0 -1
- package/dist/codebase-map/index.js +0 -57
- package/dist/codebase-map/index.js.map +0 -1
- package/dist/codebase-map/store.js +0 -122
- package/dist/codebase-map/store.js.map +0 -1
- package/dist/codebase-map/summary.js +0 -152
- package/dist/codebase-map/summary.js.map +0 -1
- package/dist/compliance/index.js +0 -288
- package/dist/compliance/index.js.map +0 -1
- package/dist/compliance/protocol-enforcement.js +0 -332
- package/dist/compliance/protocol-enforcement.js.map +0 -1
- package/dist/compliance/protocol-rules.js +0 -786
- package/dist/compliance/protocol-rules.js.map +0 -1
- package/dist/compliance/protocol-types.js +0 -79
- package/dist/compliance/protocol-types.js.map +0 -1
- package/dist/compliance/store.js +0 -53
- package/dist/compliance/store.js.map +0 -1
- package/dist/conduit/conduit-client.js +0 -107
- package/dist/conduit/conduit-client.js.map +0 -1
- package/dist/conduit/factory.js +0 -52
- package/dist/conduit/factory.js.map +0 -1
- package/dist/conduit/http-transport.js +0 -155
- package/dist/conduit/http-transport.js.map +0 -1
- package/dist/conduit/index.js +0 -15
- package/dist/conduit/index.js.map +0 -1
- package/dist/conduit/local-transport.js +0 -255
- package/dist/conduit/local-transport.js.map +0 -1
- package/dist/conduit/sse-transport.js +0 -299
- package/dist/conduit/sse-transport.js.map +0 -1
- package/dist/config/build-config.js +0 -29
- package/dist/config/build-config.js.map +0 -1
- package/dist/config.js +0 -400
- package/dist/config.js.map +0 -1
- package/dist/constants.js +0 -18
- package/dist/constants.js.map +0 -1
- package/dist/context/index.js +0 -137
- package/dist/context/index.js.map +0 -1
- package/dist/crypto/credentials.js +0 -191
- package/dist/crypto/credentials.js.map +0 -1
- package/dist/discovery.js +0 -182
- package/dist/discovery.js.map +0 -1
- package/dist/engine-result.js +0 -12
- package/dist/engine-result.js.map +0 -1
- package/dist/error-catalog.js +0 -404
- package/dist/error-catalog.js.map +0 -1
- package/dist/error-registry.js +0 -393
- package/dist/error-registry.js.map +0 -1
- package/dist/errors.js +0 -173
- package/dist/errors.js.map +0 -1
- package/dist/hooks/handlers/agent-hooks.js +0 -106
- package/dist/hooks/handlers/agent-hooks.js.map +0 -1
- package/dist/hooks/handlers/context-hooks.js +0 -111
- package/dist/hooks/handlers/context-hooks.js.map +0 -1
- package/dist/hooks/handlers/error-hooks.js +0 -52
- package/dist/hooks/handlers/error-hooks.js.map +0 -1
- package/dist/hooks/handlers/file-hooks.js +0 -104
- package/dist/hooks/handlers/file-hooks.js.map +0 -1
- package/dist/hooks/handlers/handler-helpers.js +0 -61
- package/dist/hooks/handlers/handler-helpers.js.map +0 -1
- package/dist/hooks/handlers/index.js +0 -28
- package/dist/hooks/handlers/index.js.map +0 -1
- package/dist/hooks/handlers/memory-bridge-refresh.js +0 -42
- package/dist/hooks/handlers/memory-bridge-refresh.js.map +0 -1
- package/dist/hooks/handlers/notification-hooks.js +0 -62
- package/dist/hooks/handlers/notification-hooks.js.map +0 -1
- package/dist/hooks/handlers/session-hooks.js +0 -142
- package/dist/hooks/handlers/session-hooks.js.map +0 -1
- package/dist/hooks/handlers/task-hooks.js +0 -65
- package/dist/hooks/handlers/task-hooks.js.map +0 -1
- package/dist/hooks/handlers/work-capture-hooks.js +0 -165
- package/dist/hooks/handlers/work-capture-hooks.js.map +0 -1
- package/dist/hooks/index.js +0 -13
- package/dist/hooks/index.js.map +0 -1
- package/dist/hooks/payload-schemas.js +0 -220
- package/dist/hooks/payload-schemas.js.map +0 -1
- package/dist/hooks/provider-hooks.js +0 -66
- package/dist/hooks/provider-hooks.js.map +0 -1
- package/dist/hooks/registry.js +0 -229
- package/dist/hooks/registry.js.map +0 -1
- package/dist/hooks/types.js +0 -66
- package/dist/hooks/types.js.map +0 -1
- package/dist/hooks.js +0 -136
- package/dist/hooks.js.map +0 -1
- package/dist/init.js +0 -851
- package/dist/init.js.map +0 -1
- package/dist/inject/index.js +0 -82
- package/dist/inject/index.js.map +0 -1
- package/dist/injection.js +0 -343
- package/dist/injection.js.map +0 -1
- package/dist/intelligence/adaptive-validation.js +0 -497
- package/dist/intelligence/adaptive-validation.js.map +0 -1
- package/dist/intelligence/impact.js +0 -675
- package/dist/intelligence/impact.js.map +0 -1
- package/dist/intelligence/index.js +0 -22
- package/dist/intelligence/index.js.map +0 -1
- package/dist/intelligence/patterns.js +0 -492
- package/dist/intelligence/patterns.js.map +0 -1
- package/dist/intelligence/prediction.js +0 -499
- package/dist/intelligence/prediction.js.map +0 -1
- package/dist/intelligence/types.js +0 -13
- package/dist/intelligence/types.js.map +0 -1
- package/dist/internal.js +0 -306
- package/dist/internal.js.map +0 -1
- package/dist/issue/create.js +0 -121
- package/dist/issue/create.js.map +0 -1
- package/dist/issue/diagnostics.js +0 -59
- package/dist/issue/diagnostics.js.map +0 -1
- package/dist/issue/index.js +0 -10
- package/dist/issue/index.js.map +0 -1
- package/dist/issue/template-parser.js +0 -267
- package/dist/issue/template-parser.js.map +0 -1
- package/dist/json-schema-validator.js +0 -76
- package/dist/json-schema-validator.js.map +0 -1
- package/dist/lib/index.js +0 -11
- package/dist/lib/index.js.map +0 -1
- package/dist/lib/retry.js +0 -152
- package/dist/lib/retry.js.map +0 -1
- package/dist/lib/tree-sitter-languages.js +0 -71
- package/dist/lib/tree-sitter-languages.js.map +0 -1
- package/dist/lifecycle/chain-composition.js +0 -152
- package/dist/lifecycle/chain-composition.js.map +0 -1
- package/dist/lifecycle/chain-store.js +0 -246
- package/dist/lifecycle/chain-store.js.map +0 -1
- package/dist/lifecycle/consolidate-rcasd.js +0 -352
- package/dist/lifecycle/consolidate-rcasd.js.map +0 -1
- package/dist/lifecycle/default-chain.js +0 -176
- package/dist/lifecycle/default-chain.js.map +0 -1
- package/dist/lifecycle/evidence.js +0 -180
- package/dist/lifecycle/evidence.js.map +0 -1
- package/dist/lifecycle/frontmatter.js +0 -363
- package/dist/lifecycle/frontmatter.js.map +0 -1
- package/dist/lifecycle/index.js +0 -756
- package/dist/lifecycle/index.js.map +0 -1
- package/dist/lifecycle/pipeline.js +0 -656
- package/dist/lifecycle/pipeline.js.map +0 -1
- package/dist/lifecycle/rcasd-index.js +0 -326
- package/dist/lifecycle/rcasd-index.js.map +0 -1
- package/dist/lifecycle/rcasd-paths.js +0 -220
- package/dist/lifecycle/rcasd-paths.js.map +0 -1
- package/dist/lifecycle/resume.js +0 -864
- package/dist/lifecycle/resume.js.map +0 -1
- package/dist/lifecycle/stage-artifacts.js +0 -94
- package/dist/lifecycle/stage-artifacts.js.map +0 -1
- package/dist/lifecycle/stage-guidance.js +0 -234
- package/dist/lifecycle/stage-guidance.js.map +0 -1
- package/dist/lifecycle/stages.js +0 -534
- package/dist/lifecycle/stages.js.map +0 -1
- package/dist/lifecycle/state-machine.js +0 -516
- package/dist/lifecycle/state-machine.js.map +0 -1
- package/dist/lifecycle/tessera-engine.js +0 -249
- package/dist/lifecycle/tessera-engine.js.map +0 -1
- package/dist/logger.js +0 -140
- package/dist/logger.js.map +0 -1
- package/dist/memory/auto-extract.js +0 -177
- package/dist/memory/auto-extract.js.map +0 -1
- package/dist/memory/brain-embedding.js +0 -66
- package/dist/memory/brain-embedding.js.map +0 -1
- package/dist/memory/brain-lifecycle.js +0 -298
- package/dist/memory/brain-lifecycle.js.map +0 -1
- package/dist/memory/brain-links.js +0 -161
- package/dist/memory/brain-links.js.map +0 -1
- package/dist/memory/brain-maintenance.js +0 -114
- package/dist/memory/brain-maintenance.js.map +0 -1
- package/dist/memory/brain-migration.js +0 -149
- package/dist/memory/brain-migration.js.map +0 -1
- package/dist/memory/brain-reasoning.js +0 -215
- package/dist/memory/brain-reasoning.js.map +0 -1
- package/dist/memory/brain-retrieval.js +0 -542
- package/dist/memory/brain-retrieval.js.map +0 -1
- package/dist/memory/brain-row-types.js +0 -10
- package/dist/memory/brain-row-types.js.map +0 -1
- package/dist/memory/brain-search.js +0 -519
- package/dist/memory/brain-search.js.map +0 -1
- package/dist/memory/brain-similarity.js +0 -145
- package/dist/memory/brain-similarity.js.map +0 -1
- package/dist/memory/claude-mem-migration.js +0 -277
- package/dist/memory/claude-mem-migration.js.map +0 -1
- package/dist/memory/decisions.js +0 -162
- package/dist/memory/decisions.js.map +0 -1
- package/dist/memory/embedding-local.js +0 -97
- package/dist/memory/embedding-local.js.map +0 -1
- package/dist/memory/embedding-queue.js +0 -271
- package/dist/memory/embedding-queue.js.map +0 -1
- package/dist/memory/embedding-worker.js +0 -58
- package/dist/memory/embedding-worker.js.map +0 -1
- package/dist/memory/engine-compat.js +0 -1397
- package/dist/memory/engine-compat.js.map +0 -1
- package/dist/memory/index.js +0 -1140
- package/dist/memory/index.js.map +0 -1
- package/dist/memory/learnings.js +0 -121
- package/dist/memory/learnings.js.map +0 -1
- package/dist/memory/memory-bridge.js +0 -370
- package/dist/memory/memory-bridge.js.map +0 -1
- package/dist/memory/patterns.js +0 -122
- package/dist/memory/patterns.js.map +0 -1
- package/dist/memory/pipeline-manifest-sqlite.js +0 -975
- package/dist/memory/pipeline-manifest-sqlite.js.map +0 -1
- package/dist/memory/session-memory.js +0 -331
- package/dist/memory/session-memory.js.map +0 -1
- package/dist/metrics/ab-test.js +0 -260
- package/dist/metrics/ab-test.js.map +0 -1
- package/dist/metrics/aggregation.js +0 -363
- package/dist/metrics/aggregation.js.map +0 -1
- package/dist/metrics/common.js +0 -64
- package/dist/metrics/common.js.map +0 -1
- package/dist/metrics/enums.js +0 -78
- package/dist/metrics/enums.js.map +0 -1
- package/dist/metrics/index.js +0 -19
- package/dist/metrics/index.js.map +0 -1
- package/dist/metrics/model-provider-registry.js +0 -88
- package/dist/metrics/model-provider-registry.js.map +0 -1
- package/dist/metrics/otel-integration.js +0 -263
- package/dist/metrics/otel-integration.js.map +0 -1
- package/dist/metrics/provider-detection.js +0 -103
- package/dist/metrics/provider-detection.js.map +0 -1
- package/dist/metrics/token-estimation.js +0 -253
- package/dist/metrics/token-estimation.js.map +0 -1
- package/dist/metrics/token-service.js +0 -450
- package/dist/metrics/token-service.js.map +0 -1
- package/dist/migration/agent-outputs.js +0 -316
- package/dist/migration/agent-outputs.js.map +0 -1
- package/dist/migration/checksum.js +0 -92
- package/dist/migration/checksum.js.map +0 -1
- package/dist/migration/index.js +0 -282
- package/dist/migration/index.js.map +0 -1
- package/dist/migration/logger.js +0 -360
- package/dist/migration/logger.js.map +0 -1
- package/dist/migration/preflight.js +0 -9
- package/dist/migration/preflight.js.map +0 -1
- package/dist/migration/state.js +0 -421
- package/dist/migration/state.js.map +0 -1
- package/dist/migration/validate.js +0 -241
- package/dist/migration/validate.js.map +0 -1
- package/dist/mvi-helpers.js +0 -74
- package/dist/mvi-helpers.js.map +0 -1
- package/dist/nexus/deps.js +0 -375
- package/dist/nexus/deps.js.map +0 -1
- package/dist/nexus/discover.js +0 -288
- package/dist/nexus/discover.js.map +0 -1
- package/dist/nexus/hash.js +0 -10
- package/dist/nexus/hash.js.map +0 -1
- package/dist/nexus/index.js +0 -40
- package/dist/nexus/index.js.map +0 -1
- package/dist/nexus/migrate-json-to-sqlite.js +0 -115
- package/dist/nexus/migrate-json-to-sqlite.js.map +0 -1
- package/dist/nexus/permissions.js +0 -105
- package/dist/nexus/permissions.js.map +0 -1
- package/dist/nexus/query.js +0 -175
- package/dist/nexus/query.js.map +0 -1
- package/dist/nexus/registry.js +0 -584
- package/dist/nexus/registry.js.map +0 -1
- package/dist/nexus/sharing/index.js +0 -288
- package/dist/nexus/sharing/index.js.map +0 -1
- package/dist/nexus/transfer-types.js +0 -8
- package/dist/nexus/transfer-types.js.map +0 -1
- package/dist/nexus/transfer.js +0 -263
- package/dist/nexus/transfer.js.map +0 -1
- package/dist/nexus/workspace.js +0 -355
- package/dist/nexus/workspace.js.map +0 -1
- package/dist/observability/index.js +0 -103
- package/dist/observability/index.js.map +0 -1
- package/dist/observability/log-filter.js +0 -63
- package/dist/observability/log-filter.js.map +0 -1
- package/dist/observability/log-parser.js +0 -99
- package/dist/observability/log-parser.js.map +0 -1
- package/dist/observability/log-reader.js +0 -139
- package/dist/observability/log-reader.js.map +0 -1
- package/dist/observability/types.js +0 -19
- package/dist/observability/types.js.map +0 -1
- package/dist/orchestration/analyze.js +0 -107
- package/dist/orchestration/analyze.js.map +0 -1
- package/dist/orchestration/bootstrap.js +0 -132
- package/dist/orchestration/bootstrap.js.map +0 -1
- package/dist/orchestration/context.js +0 -56
- package/dist/orchestration/context.js.map +0 -1
- package/dist/orchestration/critical-path.js +0 -100
- package/dist/orchestration/critical-path.js.map +0 -1
- package/dist/orchestration/hierarchy.js +0 -183
- package/dist/orchestration/hierarchy.js.map +0 -1
- package/dist/orchestration/index.js +0 -287
- package/dist/orchestration/index.js.map +0 -1
- package/dist/orchestration/parallel.js +0 -89
- package/dist/orchestration/parallel.js.map +0 -1
- package/dist/orchestration/protocol-validators.js +0 -815
- package/dist/orchestration/protocol-validators.js.map +0 -1
- package/dist/orchestration/skill-ops.js +0 -98
- package/dist/orchestration/skill-ops.js.map +0 -1
- package/dist/orchestration/status.js +0 -107
- package/dist/orchestration/status.js.map +0 -1
- package/dist/orchestration/unblock.js +0 -103
- package/dist/orchestration/unblock.js.map +0 -1
- package/dist/orchestration/validate-spawn.js +0 -67
- package/dist/orchestration/validate-spawn.js.map +0 -1
- package/dist/orchestration/waves.js +0 -86
- package/dist/orchestration/waves.js.map +0 -1
- package/dist/otel/index.js +0 -163
- package/dist/otel/index.js.map +0 -1
- package/dist/output.js +0 -164
- package/dist/output.js.map +0 -1
- package/dist/pagination.js +0 -64
- package/dist/pagination.js.map +0 -1
- package/dist/paths.js +0 -842
- package/dist/paths.js.map +0 -1
- package/dist/phases/deps.js +0 -372
- package/dist/phases/deps.js.map +0 -1
- package/dist/phases/index.js +0 -349
- package/dist/phases/index.js.map +0 -1
- package/dist/pipeline/index.js +0 -10
- package/dist/pipeline/index.js.map +0 -1
- package/dist/pipeline/phase.js +0 -45
- package/dist/pipeline/phase.js.map +0 -1
- package/dist/platform.js +0 -211
- package/dist/platform.js.map +0 -1
- package/dist/project-info.js +0 -84
- package/dist/project-info.js.map +0 -1
- package/dist/reconciliation/index.js +0 -10
- package/dist/reconciliation/index.js.map +0 -1
- package/dist/reconciliation/link-store.js +0 -129
- package/dist/reconciliation/link-store.js.map +0 -1
- package/dist/reconciliation/reconciliation-engine.js +0 -298
- package/dist/reconciliation/reconciliation-engine.js.map +0 -1
- package/dist/release/artifacts.js +0 -427
- package/dist/release/artifacts.js.map +0 -1
- package/dist/release/changelog-writer.js +0 -151
- package/dist/release/changelog-writer.js.map +0 -1
- package/dist/release/channel.js +0 -144
- package/dist/release/channel.js.map +0 -1
- package/dist/release/ci.js +0 -166
- package/dist/release/ci.js.map +0 -1
- package/dist/release/github-pr.js +0 -225
- package/dist/release/github-pr.js.map +0 -1
- package/dist/release/guards.js +0 -116
- package/dist/release/guards.js.map +0 -1
- package/dist/release/index.js +0 -22
- package/dist/release/index.js.map +0 -1
- package/dist/release/release-config.js +0 -158
- package/dist/release/release-config.js.map +0 -1
- package/dist/release/release-manifest.js +0 -1019
- package/dist/release/release-manifest.js.map +0 -1
- package/dist/release/version-bump.js +0 -255
- package/dist/release/version-bump.js.map +0 -1
- package/dist/remote/index.js +0 -257
- package/dist/remote/index.js.map +0 -1
- package/dist/repair.js +0 -130
- package/dist/repair.js.map +0 -1
- package/dist/research/index.js +0 -2
- package/dist/research/index.js.map +0 -1
- package/dist/roadmap/index.js +0 -59
- package/dist/roadmap/index.js.map +0 -1
- package/dist/routing/capability-matrix.js +0 -1556
- package/dist/routing/capability-matrix.js.map +0 -1
- package/dist/routing/index.js +0 -9
- package/dist/routing/index.js.map +0 -1
- package/dist/scaffold.js +0 -1759
- package/dist/scaffold.js.map +0 -1
- package/dist/schema-management.js +0 -295
- package/dist/schema-management.js.map +0 -1
- package/dist/security/index.js +0 -9
- package/dist/security/index.js.map +0 -1
- package/dist/security/input-sanitization.js +0 -321
- package/dist/security/input-sanitization.js.map +0 -1
- package/dist/sequence/index.js +0 -295
- package/dist/sequence/index.js.map +0 -1
- package/dist/sessions/assumptions.js +0 -54
- package/dist/sessions/assumptions.js.map +0 -1
- package/dist/sessions/briefing.js +0 -377
- package/dist/sessions/briefing.js.map +0 -1
- package/dist/sessions/context-alert.js +0 -222
- package/dist/sessions/context-alert.js.map +0 -1
- package/dist/sessions/context-inject.js +0 -61
- package/dist/sessions/context-inject.js.map +0 -1
- package/dist/sessions/context-monitor.js +0 -98
- package/dist/sessions/context-monitor.js.map +0 -1
- package/dist/sessions/decisions.js +0 -65
- package/dist/sessions/decisions.js.map +0 -1
- package/dist/sessions/find.js +0 -65
- package/dist/sessions/find.js.map +0 -1
- package/dist/sessions/handoff.js +0 -328
- package/dist/sessions/handoff.js.map +0 -1
- package/dist/sessions/hitl-warnings.js +0 -254
- package/dist/sessions/hitl-warnings.js.map +0 -1
- package/dist/sessions/index.js +0 -327
- package/dist/sessions/index.js.map +0 -1
- package/dist/sessions/session-archive.js +0 -40
- package/dist/sessions/session-archive.js.map +0 -1
- package/dist/sessions/session-cleanup.js +0 -59
- package/dist/sessions/session-cleanup.js.map +0 -1
- package/dist/sessions/session-drift.js +0 -134
- package/dist/sessions/session-drift.js.map +0 -1
- package/dist/sessions/session-enforcement.js +0 -144
- package/dist/sessions/session-enforcement.js.map +0 -1
- package/dist/sessions/session-grade.js +0 -253
- package/dist/sessions/session-grade.js.map +0 -1
- package/dist/sessions/session-history.js +0 -42
- package/dist/sessions/session-history.js.map +0 -1
- package/dist/sessions/session-id.js +0 -81
- package/dist/sessions/session-id.js.map +0 -1
- package/dist/sessions/session-memory-bridge.js +0 -52
- package/dist/sessions/session-memory-bridge.js.map +0 -1
- package/dist/sessions/session-show.js +0 -24
- package/dist/sessions/session-show.js.map +0 -1
- package/dist/sessions/session-stats.js +0 -69
- package/dist/sessions/session-stats.js.map +0 -1
- package/dist/sessions/session-suspend.js +0 -39
- package/dist/sessions/session-suspend.js.map +0 -1
- package/dist/sessions/session-switch.js +0 -51
- package/dist/sessions/session-switch.js.map +0 -1
- package/dist/sessions/session-view.js +0 -76
- package/dist/sessions/session-view.js.map +0 -1
- package/dist/sessions/snapshot.js +0 -213
- package/dist/sessions/snapshot.js.map +0 -1
- package/dist/sessions/statusline-setup.js +0 -85
- package/dist/sessions/statusline-setup.js.map +0 -1
- package/dist/sessions/types.js +0 -8
- package/dist/sessions/types.js.map +0 -1
- package/dist/skills/agents/config.js +0 -94
- package/dist/skills/agents/config.js.map +0 -1
- package/dist/skills/agents/install.js +0 -116
- package/dist/skills/agents/install.js.map +0 -1
- package/dist/skills/agents/registry.js +0 -161
- package/dist/skills/agents/registry.js.map +0 -1
- package/dist/skills/discovery.js +0 -333
- package/dist/skills/discovery.js.map +0 -1
- package/dist/skills/dispatch.js +0 -347
- package/dist/skills/dispatch.js.map +0 -1
- package/dist/skills/dynamic-skill-generator.js +0 -87
- package/dist/skills/dynamic-skill-generator.js.map +0 -1
- package/dist/skills/index.js +0 -44
- package/dist/skills/index.js.map +0 -1
- package/dist/skills/injection/subagent.js +0 -195
- package/dist/skills/injection/subagent.js.map +0 -1
- package/dist/skills/injection/token.js +0 -260
- package/dist/skills/injection/token.js.map +0 -1
- package/dist/skills/install.js +0 -40
- package/dist/skills/install.js.map +0 -1
- package/dist/skills/manifests/contribution.js +0 -175
- package/dist/skills/manifests/contribution.js.map +0 -1
- package/dist/skills/manifests/research.js +0 -281
- package/dist/skills/manifests/research.js.map +0 -1
- package/dist/skills/manifests/resolver.js +0 -146
- package/dist/skills/manifests/resolver.js.map +0 -1
- package/dist/skills/marketplace.js +0 -90
- package/dist/skills/marketplace.js.map +0 -1
- package/dist/skills/orchestrator/spawn.js +0 -178
- package/dist/skills/orchestrator/spawn.js.map +0 -1
- package/dist/skills/orchestrator/startup.js +0 -451
- package/dist/skills/orchestrator/startup.js.map +0 -1
- package/dist/skills/orchestrator/validator.js +0 -301
- package/dist/skills/orchestrator/validator.js.map +0 -1
- package/dist/skills/precedence-integration.js +0 -73
- package/dist/skills/precedence-integration.js.map +0 -1
- package/dist/skills/precedence-types.js +0 -16
- package/dist/skills/precedence-types.js.map +0 -1
- package/dist/skills/routing-table.js +0 -63
- package/dist/skills/routing-table.js.map +0 -1
- package/dist/skills/skill-paths.js +0 -217
- package/dist/skills/skill-paths.js.map +0 -1
- package/dist/skills/test-utility.js +0 -55
- package/dist/skills/test-utility.js.map +0 -1
- package/dist/skills/types.js +0 -118
- package/dist/skills/types.js.map +0 -1
- package/dist/skills/validation.js +0 -183
- package/dist/skills/validation.js.map +0 -1
- package/dist/skills/version.js +0 -57
- package/dist/skills/version.js.map +0 -1
- package/dist/snapshot/index.js +0 -188
- package/dist/snapshot/index.js.map +0 -1
- package/dist/spawn/adapter-registry.js +0 -246
- package/dist/spawn/adapter-registry.js.map +0 -1
- package/dist/spawn/index.js +0 -10
- package/dist/spawn/index.js.map +0 -1
- package/dist/stats/index.js +0 -343
- package/dist/stats/index.js.map +0 -1
- package/dist/stats/workflow-telemetry.js +0 -400
- package/dist/stats/workflow-telemetry.js.map +0 -1
- package/dist/sticky/archive.js +0 -47
- package/dist/sticky/archive.js.map +0 -1
- package/dist/sticky/convert.js +0 -235
- package/dist/sticky/convert.js.map +0 -1
- package/dist/sticky/create.js +0 -48
- package/dist/sticky/create.js.map +0 -1
- package/dist/sticky/id.js +0 -35
- package/dist/sticky/id.js.map +0 -1
- package/dist/sticky/index.js +0 -16
- package/dist/sticky/index.js.map +0 -1
- package/dist/sticky/list.js +0 -44
- package/dist/sticky/list.js.map +0 -1
- package/dist/sticky/purge.js +0 -45
- package/dist/sticky/purge.js.map +0 -1
- package/dist/sticky/show.js +0 -42
- package/dist/sticky/show.js.map +0 -1
- package/dist/sticky/types.js +0 -10
- package/dist/sticky/types.js.map +0 -1
- package/dist/store/agent-registry-accessor.js +0 -783
- package/dist/store/agent-registry-accessor.js.map +0 -1
- package/dist/store/api-key-kdf.js +0 -84
- package/dist/store/api-key-kdf.js.map +0 -1
- package/dist/store/atomic.js +0 -167
- package/dist/store/atomic.js.map +0 -1
- package/dist/store/backup.js +0 -94
- package/dist/store/backup.js.map +0 -1
- package/dist/store/brain-accessor.js +0 -397
- package/dist/store/brain-accessor.js.map +0 -1
- package/dist/store/brain-schema.js +0 -215
- package/dist/store/brain-schema.js.map +0 -1
- package/dist/store/brain-sqlite.js +0 -222
- package/dist/store/brain-sqlite.js.map +0 -1
- package/dist/store/cache.js +0 -168
- package/dist/store/cache.js.map +0 -1
- package/dist/store/chain-schema.js +0 -51
- package/dist/store/chain-schema.js.map +0 -1
- package/dist/store/cleanup-legacy.js +0 -171
- package/dist/store/cleanup-legacy.js.map +0 -1
- package/dist/store/conduit-sqlite.js +0 -570
- package/dist/store/conduit-sqlite.js.map +0 -1
- package/dist/store/converters.js +0 -124
- package/dist/store/converters.js.map +0 -1
- package/dist/store/cross-db-cleanup.js +0 -319
- package/dist/store/cross-db-cleanup.js.map +0 -1
- package/dist/store/data-accessor.js +0 -26
- package/dist/store/data-accessor.js.map +0 -1
- package/dist/store/data-safety-central.js +0 -269
- package/dist/store/data-safety-central.js.map +0 -1
- package/dist/store/data-safety.js +0 -274
- package/dist/store/data-safety.js.map +0 -1
- package/dist/store/db-helpers.js +0 -224
- package/dist/store/db-helpers.js.map +0 -1
- package/dist/store/export.js +0 -155
- package/dist/store/export.js.map +0 -1
- package/dist/store/file-utils.js +0 -270
- package/dist/store/file-utils.js.map +0 -1
- package/dist/store/git-checkpoint.js +0 -365
- package/dist/store/git-checkpoint.js.map +0 -1
- package/dist/store/global-salt.js +0 -147
- package/dist/store/global-salt.js.map +0 -1
- package/dist/store/import-logging.js +0 -139
- package/dist/store/import-logging.js.map +0 -1
- package/dist/store/import-remap.js +0 -145
- package/dist/store/import-remap.js.map +0 -1
- package/dist/store/import-sort.js +0 -121
- package/dist/store/import-sort.js.map +0 -1
- package/dist/store/index.js +0 -29
- package/dist/store/index.js.map +0 -1
- package/dist/store/json.js +0 -208
- package/dist/store/json.js.map +0 -1
- package/dist/store/lifecycle-store.js +0 -249
- package/dist/store/lifecycle-store.js.map +0 -1
- package/dist/store/lock.js +0 -70
- package/dist/store/lock.js.map +0 -1
- package/dist/store/migrate-signaldock-to-conduit.js +0 -555
- package/dist/store/migrate-signaldock-to-conduit.js.map +0 -1
- package/dist/store/migration-manager.js +0 -151
- package/dist/store/migration-manager.js.map +0 -1
- package/dist/store/migration-sqlite.js +0 -676
- package/dist/store/migration-sqlite.js.map +0 -1
- package/dist/store/nexus-schema.js +0 -62
- package/dist/store/nexus-schema.js.map +0 -1
- package/dist/store/nexus-sqlite.js +0 -242
- package/dist/store/nexus-sqlite.js.map +0 -1
- package/dist/store/nexus-validation-schemas.js +0 -40
- package/dist/store/nexus-validation-schemas.js.map +0 -1
- package/dist/store/parsers.js +0 -37
- package/dist/store/parsers.js.map +0 -1
- package/dist/store/project-detect.js +0 -457
- package/dist/store/project-detect.js.map +0 -1
- package/dist/store/provider.js +0 -101
- package/dist/store/provider.js.map +0 -1
- package/dist/store/safety-data-accessor.js +0 -257
- package/dist/store/safety-data-accessor.js.map +0 -1
- package/dist/store/schema.js +0 -7
- package/dist/store/schema.js.map +0 -1
- package/dist/store/session-store.js +0 -219
- package/dist/store/session-store.js.map +0 -1
- package/dist/store/signaldock-sqlite.js +0 -550
- package/dist/store/signaldock-sqlite.js.map +0 -1
- package/dist/store/sqlite-backup.js +0 -359
- package/dist/store/sqlite-backup.js.map +0 -1
- package/dist/store/sqlite-data-accessor.js +0 -787
- package/dist/store/sqlite-data-accessor.js.map +0 -1
- package/dist/store/sqlite.js +0 -481
- package/dist/store/sqlite.js.map +0 -1
- package/dist/store/status-registry.js +0 -8
- package/dist/store/status-registry.js.map +0 -1
- package/dist/store/task-store.js +0 -358
- package/dist/store/task-store.js.map +0 -1
- package/dist/store/tasks-schema.js +0 -610
- package/dist/store/tasks-schema.js.map +0 -1
- package/dist/store/typed-query.js +0 -15
- package/dist/store/typed-query.js.map +0 -1
- package/dist/store/validation-schemas.js +0 -278
- package/dist/store/validation-schemas.js.map +0 -1
- package/dist/system/archive-analytics.js +0 -277
- package/dist/system/archive-analytics.js.map +0 -1
- package/dist/system/archive-stats.js +0 -64
- package/dist/system/archive-stats.js.map +0 -1
- package/dist/system/audit.js +0 -145
- package/dist/system/audit.js.map +0 -1
- package/dist/system/backup.js +0 -280
- package/dist/system/backup.js.map +0 -1
- package/dist/system/cleanup.js +0 -134
- package/dist/system/cleanup.js.map +0 -1
- package/dist/system/health.js +0 -1100
- package/dist/system/health.js.map +0 -1
- package/dist/system/index.js +0 -18
- package/dist/system/index.js.map +0 -1
- package/dist/system/inject-generate.js +0 -122
- package/dist/system/inject-generate.js.map +0 -1
- package/dist/system/labels.js +0 -38
- package/dist/system/labels.js.map +0 -1
- package/dist/system/metrics.js +0 -61
- package/dist/system/metrics.js.map +0 -1
- package/dist/system/migrate.js +0 -43
- package/dist/system/migrate.js.map +0 -1
- package/dist/system/platform-paths.js +0 -80
- package/dist/system/platform-paths.js.map +0 -1
- package/dist/system/runtime.js +0 -161
- package/dist/system/runtime.js.map +0 -1
- package/dist/system/safestop.js +0 -99
- package/dist/system/safestop.js.map +0 -1
- package/dist/system/storage-preflight.js +0 -123
- package/dist/system/storage-preflight.js.map +0 -1
- package/dist/task-work/index.js +0 -159
- package/dist/task-work/index.js.map +0 -1
- package/dist/tasks/add.js +0 -736
- package/dist/tasks/add.js.map +0 -1
- package/dist/tasks/analyze.js +0 -85
- package/dist/tasks/analyze.js.map +0 -1
- package/dist/tasks/archive.js +0 -90
- package/dist/tasks/archive.js.map +0 -1
- package/dist/tasks/atomicity.js +0 -83
- package/dist/tasks/atomicity.js.map +0 -1
- package/dist/tasks/cancel-ops.js +0 -83
- package/dist/tasks/cancel-ops.js.map +0 -1
- package/dist/tasks/complete.js +0 -214
- package/dist/tasks/complete.js.map +0 -1
- package/dist/tasks/crossref-extract.js +0 -73
- package/dist/tasks/crossref-extract.js.map +0 -1
- package/dist/tasks/delete-preview.js +0 -192
- package/dist/tasks/delete-preview.js.map +0 -1
- package/dist/tasks/delete.js +0 -120
- package/dist/tasks/delete.js.map +0 -1
- package/dist/tasks/deletion-strategy.js +0 -200
- package/dist/tasks/deletion-strategy.js.map +0 -1
- package/dist/tasks/dependency-check.js +0 -278
- package/dist/tasks/dependency-check.js.map +0 -1
- package/dist/tasks/deps-ready.js +0 -32
- package/dist/tasks/deps-ready.js.map +0 -1
- package/dist/tasks/enforcement.js +0 -86
- package/dist/tasks/enforcement.js.map +0 -1
- package/dist/tasks/epic-enforcement.js +0 -294
- package/dist/tasks/epic-enforcement.js.map +0 -1
- package/dist/tasks/find.js +0 -157
- package/dist/tasks/find.js.map +0 -1
- package/dist/tasks/graph-cache.js +0 -127
- package/dist/tasks/graph-cache.js.map +0 -1
- package/dist/tasks/graph-ops.js +0 -171
- package/dist/tasks/graph-ops.js.map +0 -1
- package/dist/tasks/graph-rag.js +0 -328
- package/dist/tasks/graph-rag.js.map +0 -1
- package/dist/tasks/hierarchy-policy.js +0 -149
- package/dist/tasks/hierarchy-policy.js.map +0 -1
- package/dist/tasks/hierarchy.js +0 -185
- package/dist/tasks/hierarchy.js.map +0 -1
- package/dist/tasks/id-generator.js +0 -65
- package/dist/tasks/id-generator.js.map +0 -1
- package/dist/tasks/index.js +0 -14
- package/dist/tasks/index.js.map +0 -1
- package/dist/tasks/labels.js +0 -55
- package/dist/tasks/labels.js.map +0 -1
- package/dist/tasks/list.js +0 -75
- package/dist/tasks/list.js.map +0 -1
- package/dist/tasks/phase-tracking.js +0 -133
- package/dist/tasks/phase-tracking.js.map +0 -1
- package/dist/tasks/pipeline-stage.js +0 -248
- package/dist/tasks/pipeline-stage.js.map +0 -1
- package/dist/tasks/plan.js +0 -268
- package/dist/tasks/plan.js.map +0 -1
- package/dist/tasks/relates.js +0 -101
- package/dist/tasks/relates.js.map +0 -1
- package/dist/tasks/show.js +0 -83
- package/dist/tasks/show.js.map +0 -1
- package/dist/tasks/size-weighting.js +0 -86
- package/dist/tasks/size-weighting.js.map +0 -1
- package/dist/tasks/staleness.js +0 -86
- package/dist/tasks/staleness.js.map +0 -1
- package/dist/tasks/task-ops.js +0 -1741
- package/dist/tasks/task-ops.js.map +0 -1
- package/dist/tasks/update.js +0 -303
- package/dist/tasks/update.js.map +0 -1
- package/dist/templates/index.js +0 -10
- package/dist/templates/index.js.map +0 -1
- package/dist/templates/parser.js +0 -254
- package/dist/templates/parser.js.map +0 -1
- package/dist/ui/aliases.js +0 -153
- package/dist/ui/aliases.js.map +0 -1
- package/dist/ui/changelog.js +0 -184
- package/dist/ui/changelog.js.map +0 -1
- package/dist/ui/command-registry.js +0 -168
- package/dist/ui/command-registry.js.map +0 -1
- package/dist/ui/flags.js +0 -94
- package/dist/ui/flags.js.map +0 -1
- package/dist/ui/index.js +0 -24
- package/dist/ui/index.js.map +0 -1
- package/dist/upgrade.js +0 -1148
- package/dist/upgrade.js.map +0 -1
- package/dist/validation/chain-validation.js +0 -146
- package/dist/validation/chain-validation.js.map +0 -1
- package/dist/validation/compliance.js +0 -155
- package/dist/validation/compliance.js.map +0 -1
- package/dist/validation/docs-sync.js +0 -212
- package/dist/validation/docs-sync.js.map +0 -1
- package/dist/validation/doctor/checks.js +0 -1069
- package/dist/validation/doctor/checks.js.map +0 -1
- package/dist/validation/doctor/index.js +0 -9
- package/dist/validation/doctor/index.js.map +0 -1
- package/dist/validation/doctor/project-cache.js +0 -160
- package/dist/validation/doctor/project-cache.js.map +0 -1
- package/dist/validation/doctor/utils.js +0 -155
- package/dist/validation/doctor/utils.js.map +0 -1
- package/dist/validation/engine.js +0 -914
- package/dist/validation/engine.js.map +0 -1
- package/dist/validation/gap-check.js +0 -175
- package/dist/validation/gap-check.js.map +0 -1
- package/dist/validation/index.js +0 -40
- package/dist/validation/index.js.map +0 -1
- package/dist/validation/manifest.js +0 -237
- package/dist/validation/manifest.js.map +0 -1
- package/dist/validation/operation-gate-validators.js +0 -724
- package/dist/validation/operation-gate-validators.js.map +0 -1
- package/dist/validation/operation-verification-gates.js +0 -532
- package/dist/validation/operation-verification-gates.js.map +0 -1
- package/dist/validation/param-utils.js +0 -141
- package/dist/validation/param-utils.js.map +0 -1
- package/dist/validation/protocol-common.js +0 -300
- package/dist/validation/protocol-common.js.map +0 -1
- package/dist/validation/protocols/_shared.js +0 -82
- package/dist/validation/protocols/_shared.js.map +0 -1
- package/dist/validation/protocols/architecture-decision.js +0 -31
- package/dist/validation/protocols/architecture-decision.js.map +0 -1
- package/dist/validation/protocols/artifact-publish.js +0 -28
- package/dist/validation/protocols/artifact-publish.js.map +0 -1
- package/dist/validation/protocols/consensus.js +0 -41
- package/dist/validation/protocols/consensus.js.map +0 -1
- package/dist/validation/protocols/contribution.js +0 -27
- package/dist/validation/protocols/contribution.js.map +0 -1
- package/dist/validation/protocols/decomposition.js +0 -28
- package/dist/validation/protocols/decomposition.js.map +0 -1
- package/dist/validation/protocols/implementation.js +0 -24
- package/dist/validation/protocols/implementation.js.map +0 -1
- package/dist/validation/protocols/provenance.js +0 -29
- package/dist/validation/protocols/provenance.js.map +0 -1
- package/dist/validation/protocols/release.js +0 -29
- package/dist/validation/protocols/release.js.map +0 -1
- package/dist/validation/protocols/research.js +0 -24
- package/dist/validation/protocols/research.js.map +0 -1
- package/dist/validation/protocols/specification.js +0 -27
- package/dist/validation/protocols/specification.js.map +0 -1
- package/dist/validation/protocols/testing.js +0 -30
- package/dist/validation/protocols/testing.js.map +0 -1
- package/dist/validation/protocols/validation.js +0 -30
- package/dist/validation/protocols/validation.js.map +0 -1
- package/dist/validation/schema-integrity.js +0 -170
- package/dist/validation/schema-integrity.js.map +0 -1
- package/dist/validation/schema-validator.js +0 -176
- package/dist/validation/schema-validator.js.map +0 -1
- package/dist/validation/validate-ops.js +0 -937
- package/dist/validation/validate-ops.js.map +0 -1
- package/dist/validation/validation-rules.js +0 -226
- package/dist/validation/validation-rules.js.map +0 -1
- package/dist/validation/verification.js +0 -321
- package/dist/validation/verification.js.map +0 -1
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dry-run JSON file generators for the three CLEO runtime state files.
|
|
3
|
+
*
|
|
4
|
+
* Returns the content that `cleo init` WOULD write on the target machine,
|
|
5
|
+
* capturing machine-local state (projectRoot, hostname, timestamps) without
|
|
6
|
+
* touching the filesystem.
|
|
7
|
+
*
|
|
8
|
+
* Used by T354's A/B regenerate-and-compare engine (ADR-038 §10): the "A"
|
|
9
|
+
* side of the comparison is always what a fresh init would produce locally.
|
|
10
|
+
*
|
|
11
|
+
* @task T352
|
|
12
|
+
* @epic T311
|
|
13
|
+
* @why ADR-038 §10 — A/B regenerate-and-compare needs the "A" side: what the
|
|
14
|
+
* JSON files would look like if freshly initialized on the target machine.
|
|
15
|
+
* Captures machine-local state (projectRoot, hostname, timestamps).
|
|
16
|
+
* @what Pure dry-run versions of the cleo init JSON file generators.
|
|
17
|
+
*
|
|
18
|
+
* DRIFT WARNING: These generators mirror the logic inside:
|
|
19
|
+
* - packages/core/src/scaffold.ts :: createDefaultConfig() (config.json)
|
|
20
|
+
* - packages/core/src/scaffold.ts :: ensureProjectInfo() (project-info.json)
|
|
21
|
+
* - packages/core/src/store/project-detect.ts :: detectProjectType() (project-context.json)
|
|
22
|
+
*
|
|
23
|
+
* If any of those functions change the shape or defaults of their generated
|
|
24
|
+
* files, this module MUST be updated to match. There is no runtime link — the
|
|
25
|
+
* similarity is maintained manually.
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
import { randomUUID } from 'node:crypto';
|
|
29
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
30
|
+
import { join, resolve } from 'node:path';
|
|
31
|
+
import { generateProjectHash } from '../nexus/hash.js';
|
|
32
|
+
import { createDefaultConfig, getCleoVersion } from '../scaffold.js';
|
|
33
|
+
import { getSchemaVersion } from '../schema-management.js';
|
|
34
|
+
import { detectProjectType, type ProjectContext } from './project-detect.js';
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Mirror of SQLITE_SCHEMA_VERSION from ./sqlite.ts.
|
|
38
|
+
*
|
|
39
|
+
* We do not import sqlite.ts here to avoid its module-level side effects
|
|
40
|
+
* (node:sqlite bootstrap via createRequire). If the canonical value in
|
|
41
|
+
* sqlite.ts changes, update this constant to match.
|
|
42
|
+
*
|
|
43
|
+
* Canonical source: packages/core/src/store/sqlite.ts :: SQLITE_SCHEMA_VERSION
|
|
44
|
+
*/
|
|
45
|
+
const SQLITE_SCHEMA_VERSION_MIRROR = '2.0.0';
|
|
46
|
+
|
|
47
|
+
// ── Types ────────────────────────────────────────────────────────────────────
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* The result of a dry-run file generator.
|
|
51
|
+
*
|
|
52
|
+
* @typeParam T - The shape of the generated file content. Defaults to
|
|
53
|
+
* `Record<string, unknown>` when the exact shape is not statically known.
|
|
54
|
+
*
|
|
55
|
+
* @task T352
|
|
56
|
+
* @epic T311
|
|
57
|
+
*/
|
|
58
|
+
export interface RegeneratedFile<T = Record<string, unknown>> {
|
|
59
|
+
/** The filename that `cleo init` would write. */
|
|
60
|
+
filename: 'config.json' | 'project-info.json' | 'project-context.json';
|
|
61
|
+
/** The parsed content that would be written to disk. */
|
|
62
|
+
content: T;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// ── Internal helpers ─────────────────────────────────────────────────────────
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Detect whether the given `projectRoot` is the CLEO contributor project.
|
|
69
|
+
* Mirrors the private `isCleoContributorProject()` helper in scaffold.ts.
|
|
70
|
+
*
|
|
71
|
+
* Returns `true` only if all three fingerprints match:
|
|
72
|
+
* 1. `src/dispatch/` directory exists
|
|
73
|
+
* 2. `src/core/` directory exists
|
|
74
|
+
* 3. `package.json` identifies as `@cleocode/cleo`
|
|
75
|
+
*/
|
|
76
|
+
function isContributorProject(projectRoot: string): boolean {
|
|
77
|
+
const at = (p: string) => existsSync(join(projectRoot, p));
|
|
78
|
+
if (!at('src/dispatch') || !at('src/core')) return false;
|
|
79
|
+
try {
|
|
80
|
+
const pkg = JSON.parse(readFileSync(join(projectRoot, 'package.json'), 'utf-8')) as {
|
|
81
|
+
name?: string;
|
|
82
|
+
};
|
|
83
|
+
return pkg.name === '@cleocode/cleo';
|
|
84
|
+
} catch {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// ── Public API ───────────────────────────────────────────────────────────────
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Returns the `config.json` content that `cleo init` would write for
|
|
93
|
+
* `projectRoot` on the current machine.
|
|
94
|
+
*
|
|
95
|
+
* PURE — no disk writes. Reads package.json only to detect the contributor
|
|
96
|
+
* project fingerprint (same as `ensureConfig` in scaffold.ts).
|
|
97
|
+
*
|
|
98
|
+
* Mirrors: `packages/core/src/scaffold.ts :: ensureConfig()` and
|
|
99
|
+
* `packages/core/src/scaffold.ts :: createDefaultConfig()`.
|
|
100
|
+
*
|
|
101
|
+
* DRIFT: if `createDefaultConfig()` adds new keys, regenerateConfigJson must
|
|
102
|
+
* be updated to reflect the same structure. The coupling is intentional but
|
|
103
|
+
* manual — see the TSDoc on this file.
|
|
104
|
+
*
|
|
105
|
+
* @param projectRoot - Absolute or relative path to the project root.
|
|
106
|
+
* @returns A `RegeneratedFile` whose `content` matches a freshly written
|
|
107
|
+
* `config.json`.
|
|
108
|
+
*/
|
|
109
|
+
export function regenerateConfigJson(projectRoot: string): RegeneratedFile {
|
|
110
|
+
const resolvedRoot = resolve(projectRoot);
|
|
111
|
+
|
|
112
|
+
// createDefaultConfig() is the single source of truth for the config shape.
|
|
113
|
+
const content = createDefaultConfig() as Record<string, unknown>;
|
|
114
|
+
|
|
115
|
+
// Conditionally append the contributor block — mirrors ensureConfig() logic.
|
|
116
|
+
if (isContributorProject(resolvedRoot)) {
|
|
117
|
+
content['contributor'] = {
|
|
118
|
+
isContributorProject: true,
|
|
119
|
+
devCli: 'cleo-dev',
|
|
120
|
+
verifiedAt: new Date().toISOString(),
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return { filename: 'config.json', content };
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Returns the `project-info.json` content that `cleo init` would write for
|
|
129
|
+
* `projectRoot` on the current machine.
|
|
130
|
+
*
|
|
131
|
+
* Captures machine-local fields:
|
|
132
|
+
* - `projectHash` — SHA-256 of the resolved absolute path (first 12 chars)
|
|
133
|
+
* - `projectId` — fresh UUID (volatile; each call produces a new value)
|
|
134
|
+
* - `lastUpdated` — current ISO timestamp (volatile)
|
|
135
|
+
* - `cleoVersion` — read from `@cleocode/core/package.json` at runtime
|
|
136
|
+
* - `schemas.*` — schema version strings from bundled JSON schema files
|
|
137
|
+
*
|
|
138
|
+
* PURE — no disk writes.
|
|
139
|
+
*
|
|
140
|
+
* Mirrors: `packages/core/src/scaffold.ts :: ensureProjectInfo()`.
|
|
141
|
+
*
|
|
142
|
+
* DRIFT: if `ensureProjectInfo` adds, removes, or renames fields in the
|
|
143
|
+
* written JSON, update this function to match.
|
|
144
|
+
*
|
|
145
|
+
* @param projectRoot - Absolute or relative path to the project root.
|
|
146
|
+
* @returns A `RegeneratedFile` whose `content` matches a freshly written
|
|
147
|
+
* `project-info.json`.
|
|
148
|
+
*/
|
|
149
|
+
export function regenerateProjectInfoJson(projectRoot: string): RegeneratedFile {
|
|
150
|
+
const resolvedRoot = resolve(projectRoot);
|
|
151
|
+
const projectHash = generateProjectHash(resolvedRoot);
|
|
152
|
+
const cleoVersion = getCleoVersion();
|
|
153
|
+
const now = new Date().toISOString();
|
|
154
|
+
|
|
155
|
+
// Read schema versions using the synchronous helper — falls back to safe
|
|
156
|
+
// defaults when schema files are not available (e.g. fresh clone, test env).
|
|
157
|
+
const configSchemaVersion = getSchemaVersion('config.schema.json') ?? cleoVersion;
|
|
158
|
+
const projectContextSchemaVersion = getSchemaVersion('project-context.schema.json') ?? '1.0.0';
|
|
159
|
+
|
|
160
|
+
const content: Record<string, unknown> = {
|
|
161
|
+
$schema: './schemas/project-info.schema.json',
|
|
162
|
+
schemaVersion: '1.0.0',
|
|
163
|
+
projectId: randomUUID(),
|
|
164
|
+
projectHash,
|
|
165
|
+
cleoVersion,
|
|
166
|
+
lastUpdated: now,
|
|
167
|
+
schemas: {
|
|
168
|
+
config: configSchemaVersion,
|
|
169
|
+
sqlite: SQLITE_SCHEMA_VERSION_MIRROR,
|
|
170
|
+
projectContext: projectContextSchemaVersion,
|
|
171
|
+
},
|
|
172
|
+
injection: {
|
|
173
|
+
'CLAUDE.md': null,
|
|
174
|
+
'AGENTS.md': null,
|
|
175
|
+
'GEMINI.md': null,
|
|
176
|
+
},
|
|
177
|
+
health: {
|
|
178
|
+
status: 'unknown',
|
|
179
|
+
lastCheck: null,
|
|
180
|
+
issues: [],
|
|
181
|
+
},
|
|
182
|
+
features: {
|
|
183
|
+
multiSession: false,
|
|
184
|
+
verification: false,
|
|
185
|
+
contextAlerts: false,
|
|
186
|
+
},
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
return { filename: 'project-info.json', content };
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Returns the `project-context.json` content that `cleo init` would write for
|
|
194
|
+
* `projectRoot` on the current machine.
|
|
195
|
+
*
|
|
196
|
+
* Runs full project-type detection by inspecting the project directory:
|
|
197
|
+
* testing framework, build command, primary language, monorepo topology,
|
|
198
|
+
* file-naming conventions, and LLM hints. DOES NOT spawn child processes.
|
|
199
|
+
*
|
|
200
|
+
* PURE — no disk writes.
|
|
201
|
+
*
|
|
202
|
+
* Mirrors: `packages/core/src/scaffold.ts :: ensureProjectContext()` and
|
|
203
|
+
* `packages/core/src/store/project-detect.ts :: detectProjectType()`.
|
|
204
|
+
*
|
|
205
|
+
* DRIFT: if `detectProjectType()` changes its output shape, the downstream
|
|
206
|
+
* A/B compare engine (T354) will still work because it compares fields by
|
|
207
|
+
* name — but regenerateProjectContextJson may produce unexpected keys or
|
|
208
|
+
* miss new ones until updated.
|
|
209
|
+
*
|
|
210
|
+
* @param projectRoot - Absolute or relative path to the project root.
|
|
211
|
+
* @returns A `RegeneratedFile` whose `content` matches a freshly written
|
|
212
|
+
* `project-context.json`.
|
|
213
|
+
*/
|
|
214
|
+
export function regenerateProjectContextJson(projectRoot: string): RegeneratedFile<ProjectContext> {
|
|
215
|
+
const resolvedRoot = resolve(projectRoot);
|
|
216
|
+
const content = detectProjectType(resolvedRoot);
|
|
217
|
+
return { filename: 'project-context.json', content };
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* Convenience wrapper that returns all three regenerated files in one call.
|
|
222
|
+
*
|
|
223
|
+
* Each generator runs independently; volatile fields in `project-info.json`
|
|
224
|
+
* (`projectId`, `lastUpdated`) will differ from a separate call to
|
|
225
|
+
* `regenerateProjectInfoJson`.
|
|
226
|
+
*
|
|
227
|
+
* @param projectRoot - Absolute or relative path to the project root.
|
|
228
|
+
* @returns Object containing all three `RegeneratedFile` results.
|
|
229
|
+
*
|
|
230
|
+
* @task T352
|
|
231
|
+
* @epic T311
|
|
232
|
+
*/
|
|
233
|
+
export function regenerateAllJson(projectRoot: string): {
|
|
234
|
+
config: RegeneratedFile;
|
|
235
|
+
projectInfo: RegeneratedFile;
|
|
236
|
+
projectContext: RegeneratedFile<ProjectContext>;
|
|
237
|
+
} {
|
|
238
|
+
return {
|
|
239
|
+
config: regenerateConfigJson(projectRoot),
|
|
240
|
+
projectInfo: regenerateProjectInfoJson(projectRoot),
|
|
241
|
+
projectContext: regenerateProjectContextJson(projectRoot),
|
|
242
|
+
};
|
|
243
|
+
}
|
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Conflict report formatter for the T311 A/B JSON restore engine.
|
|
3
|
+
*
|
|
4
|
+
* Reads {@link JsonRestoreReport}[] (from T354) plus optional re-auth and
|
|
5
|
+
* schema-compatibility warnings, and emits the markdown report format
|
|
6
|
+
* defined in T311 spec §6.5.
|
|
7
|
+
*
|
|
8
|
+
* PURE FORMATTER — the only I/O in this module is inside
|
|
9
|
+
* {@link writeConflictReport}, which writes a single file via
|
|
10
|
+
* `fs.writeFileSync`. Everything else is a pure string transformation.
|
|
11
|
+
*
|
|
12
|
+
* @task T357
|
|
13
|
+
* @epic T311
|
|
14
|
+
* @why ADR-038 §10 — restore writes a markdown conflict report at
|
|
15
|
+
* .cleo/restore-conflicts.md so users (and downstream agents) can
|
|
16
|
+
* review classifications + resolve manual-review fields + finalize
|
|
17
|
+
* via `cleo restore finalize`.
|
|
18
|
+
* @what Pure formatter. Reads JsonRestoreReport[] from T354 + extra
|
|
19
|
+
* metadata (re-auth warnings, schema warnings) and emits markdown.
|
|
20
|
+
* @module restore-conflict-report
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
import fs from 'node:fs';
|
|
24
|
+
import path from 'node:path';
|
|
25
|
+
|
|
26
|
+
import type { JsonRestoreReport } from './restore-json-merge.js';
|
|
27
|
+
|
|
28
|
+
// ============================================================================
|
|
29
|
+
// Public types
|
|
30
|
+
// ============================================================================
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Warning emitted when a signaldock.db agent was encrypted with the
|
|
34
|
+
* source machine's global-salt and therefore cannot be decrypted on the
|
|
35
|
+
* target machine.
|
|
36
|
+
*
|
|
37
|
+
* @task T357
|
|
38
|
+
* @epic T311
|
|
39
|
+
*/
|
|
40
|
+
export interface ReauthWarning {
|
|
41
|
+
/** Canonical agent identifier, e.g. `"cleo-prime"`. */
|
|
42
|
+
agentId: string;
|
|
43
|
+
/** Human-readable reason the agent needs re-authentication. */
|
|
44
|
+
reason: string;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Warning emitted when a bundled database's schema version differs from
|
|
49
|
+
* the local schema version.
|
|
50
|
+
*
|
|
51
|
+
* @task T357
|
|
52
|
+
* @epic T311
|
|
53
|
+
*/
|
|
54
|
+
export interface SchemaCompatWarning {
|
|
55
|
+
/** Database name without extension, e.g. `"brain"` or `"conduit"`. */
|
|
56
|
+
db: string;
|
|
57
|
+
/** Schema version string found in the bundle. */
|
|
58
|
+
bundleVersion: string;
|
|
59
|
+
/** Schema version string found in the local installation. */
|
|
60
|
+
localVersion: string;
|
|
61
|
+
/**
|
|
62
|
+
* Severity of the mismatch:
|
|
63
|
+
* - `older-bundle` — bundle schema is behind local; forward migration will
|
|
64
|
+
* run on first open.
|
|
65
|
+
* - `newer-bundle` — bundle schema is ahead of local; upgrading cleo is
|
|
66
|
+
* recommended before using the restored database.
|
|
67
|
+
*/
|
|
68
|
+
severity: 'older-bundle' | 'newer-bundle';
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* All inputs required to build the `.cleo/restore-conflicts.md` report.
|
|
73
|
+
*
|
|
74
|
+
* @task T357
|
|
75
|
+
* @epic T311
|
|
76
|
+
*/
|
|
77
|
+
export interface BuildConflictReportInput {
|
|
78
|
+
/** Per-file A/B comparison results produced by T354. */
|
|
79
|
+
reports: JsonRestoreReport[];
|
|
80
|
+
/** Filesystem path of the bundle file that was imported. */
|
|
81
|
+
bundlePath: string;
|
|
82
|
+
/** Machine fingerprint recorded in the bundle manifest (source machine). */
|
|
83
|
+
sourceMachineFingerprint: string;
|
|
84
|
+
/** Machine fingerprint of the local machine (target machine). */
|
|
85
|
+
targetMachineFingerprint: string;
|
|
86
|
+
/** Cleo version string of the importing installation, e.g. `"2026.4.13"`. */
|
|
87
|
+
cleoVersion: string;
|
|
88
|
+
/**
|
|
89
|
+
* Agent re-authentication warnings for agents whose credentials were
|
|
90
|
+
* encrypted with the source machine's global-salt.
|
|
91
|
+
* Omit or pass an empty array when no agents need re-auth.
|
|
92
|
+
*/
|
|
93
|
+
reauthWarnings?: ReauthWarning[];
|
|
94
|
+
/**
|
|
95
|
+
* Schema version mismatch warnings for bundled databases.
|
|
96
|
+
* Omit or pass an empty array when all schemas match.
|
|
97
|
+
*/
|
|
98
|
+
schemaWarnings?: SchemaCompatWarning[];
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// ============================================================================
|
|
102
|
+
// Value formatting helpers
|
|
103
|
+
// ============================================================================
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Formats an arbitrary field value as a compact inline markdown literal.
|
|
107
|
+
*
|
|
108
|
+
* - `undefined` → `_(not present)_`
|
|
109
|
+
* - `null` → `` `null` ``
|
|
110
|
+
* - strings → `` `"value"` `` with interior double-quotes escaped
|
|
111
|
+
* - other → `` `JSON.stringify(value)` ``
|
|
112
|
+
*
|
|
113
|
+
* @param val - The value to format.
|
|
114
|
+
* @returns A markdown-formatted string representation.
|
|
115
|
+
*/
|
|
116
|
+
function formatValue(val: unknown): string {
|
|
117
|
+
if (val === undefined) return '_(not present)_';
|
|
118
|
+
if (val === null) return '`null`';
|
|
119
|
+
if (typeof val === 'string') return '`"' + val.replace(/"/g, '\\"') + '"`';
|
|
120
|
+
return '`' + JSON.stringify(val) + '`';
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// ============================================================================
|
|
124
|
+
// Per-file section renderer
|
|
125
|
+
// ============================================================================
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Renders the markdown section for a single {@link JsonRestoreReport}.
|
|
129
|
+
*
|
|
130
|
+
* Groups field classifications into three buckets:
|
|
131
|
+
* - **identical** — skipped (no conflict).
|
|
132
|
+
* - **resolved** — values differed but auto-resolution produced A or B.
|
|
133
|
+
* - **manual-review** — no safe auto-resolution; operator must decide.
|
|
134
|
+
*
|
|
135
|
+
* @param report - The comparison result for one JSON file.
|
|
136
|
+
* @returns Markdown string for the file section, without a trailing newline.
|
|
137
|
+
*/
|
|
138
|
+
function renderReportSection(report: JsonRestoreReport): string {
|
|
139
|
+
const resolved = report.classifications.filter(
|
|
140
|
+
(c) => c.category !== 'identical' && (c.resolution === 'A' || c.resolution === 'B'),
|
|
141
|
+
);
|
|
142
|
+
const manual = report.classifications.filter((c) => c.resolution === 'manual-review');
|
|
143
|
+
const totalClassified = report.classifications.length;
|
|
144
|
+
const conflictCount = manual.length;
|
|
145
|
+
|
|
146
|
+
const lines: string[] = [];
|
|
147
|
+
|
|
148
|
+
lines.push(`## ${report.filename}`);
|
|
149
|
+
lines.push('');
|
|
150
|
+
lines.push(
|
|
151
|
+
`_${totalClassified} fields classified, ${conflictCount} conflict${conflictCount === 1 ? '' : 's'}._`,
|
|
152
|
+
);
|
|
153
|
+
lines.push('');
|
|
154
|
+
|
|
155
|
+
// Resolved section
|
|
156
|
+
if (resolved.length === 0) {
|
|
157
|
+
lines.push('_No resolved conflicts._');
|
|
158
|
+
} else {
|
|
159
|
+
lines.push('### Resolved (auto-applied)');
|
|
160
|
+
lines.push('');
|
|
161
|
+
for (const c of resolved) {
|
|
162
|
+
lines.push(`- \`${c.path}\``);
|
|
163
|
+
lines.push(` - Local (A): ${formatValue(c.local)}`);
|
|
164
|
+
lines.push(` - Imported (B): ${formatValue(c.imported)}`);
|
|
165
|
+
lines.push(` - Resolution: **${c.resolution}**`);
|
|
166
|
+
lines.push(` - Rationale: ${c.rationale}`);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
lines.push('');
|
|
171
|
+
|
|
172
|
+
// Manual review section
|
|
173
|
+
if (manual.length === 0) {
|
|
174
|
+
lines.push('_No manual review needed._');
|
|
175
|
+
} else {
|
|
176
|
+
lines.push('### Manual review needed');
|
|
177
|
+
lines.push('');
|
|
178
|
+
for (const c of manual) {
|
|
179
|
+
lines.push(`- \`${c.path}\``);
|
|
180
|
+
lines.push(` - Local (A): ${formatValue(c.local)}`);
|
|
181
|
+
lines.push(` - Imported (B): ${formatValue(c.imported)}`);
|
|
182
|
+
lines.push(` - Resolution: **manual-review**`);
|
|
183
|
+
lines.push(` - Rationale: ${c.rationale}`);
|
|
184
|
+
lines.push(
|
|
185
|
+
` - RESOLVED: (edit this line to set 'A', 'B', or a custom value, then run 'cleo restore finalize')`,
|
|
186
|
+
);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
return lines.join('\n');
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
// ============================================================================
|
|
194
|
+
// Public API
|
|
195
|
+
// ============================================================================
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Builds the complete markdown content for `.cleo/restore-conflicts.md`.
|
|
199
|
+
*
|
|
200
|
+
* The output follows the T311 spec §6.5 format:
|
|
201
|
+
* - Header with bundle metadata and timestamps
|
|
202
|
+
* - One `##` section per file in `input.reports`
|
|
203
|
+
* - Agent re-authentication section (or _None_ when empty)
|
|
204
|
+
* - Schema compatibility warnings section (or _None_ when empty)
|
|
205
|
+
* - Footer instruction for `cleo restore finalize`
|
|
206
|
+
*
|
|
207
|
+
* @task T357
|
|
208
|
+
* @epic T311
|
|
209
|
+
* @param input - All data required to render the report.
|
|
210
|
+
* @returns The full markdown string. Does NOT write to disk.
|
|
211
|
+
*/
|
|
212
|
+
export function buildConflictReport(input: BuildConflictReportInput): string {
|
|
213
|
+
const {
|
|
214
|
+
reports,
|
|
215
|
+
bundlePath,
|
|
216
|
+
sourceMachineFingerprint,
|
|
217
|
+
targetMachineFingerprint,
|
|
218
|
+
cleoVersion,
|
|
219
|
+
reauthWarnings = [],
|
|
220
|
+
schemaWarnings = [],
|
|
221
|
+
} = input;
|
|
222
|
+
|
|
223
|
+
const restoredAt = new Date().toISOString();
|
|
224
|
+
|
|
225
|
+
const lines: string[] = [];
|
|
226
|
+
|
|
227
|
+
// ---- Header ----------------------------------------------------------------
|
|
228
|
+
|
|
229
|
+
lines.push('# T311 Import Conflict Report');
|
|
230
|
+
lines.push('');
|
|
231
|
+
lines.push(`**Source bundle**: ${bundlePath}`);
|
|
232
|
+
lines.push(`**Source machine**: ${sourceMachineFingerprint}`);
|
|
233
|
+
lines.push(`**Target machine**: ${targetMachineFingerprint}`);
|
|
234
|
+
lines.push(`**Restored at**: ${restoredAt}`);
|
|
235
|
+
lines.push(`**Cleo version**: ${cleoVersion}`);
|
|
236
|
+
lines.push('');
|
|
237
|
+
lines.push('---');
|
|
238
|
+
lines.push('');
|
|
239
|
+
|
|
240
|
+
// ---- Per-file sections -----------------------------------------------------
|
|
241
|
+
|
|
242
|
+
for (const report of reports) {
|
|
243
|
+
lines.push(renderReportSection(report));
|
|
244
|
+
lines.push('');
|
|
245
|
+
lines.push('---');
|
|
246
|
+
lines.push('');
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
// ---- Agent re-authentication section ---------------------------------------
|
|
250
|
+
|
|
251
|
+
lines.push('## Agent re-authentication required');
|
|
252
|
+
lines.push('');
|
|
253
|
+
if (reauthWarnings.length === 0) {
|
|
254
|
+
lines.push('_None_');
|
|
255
|
+
} else {
|
|
256
|
+
lines.push('The following agents in `signaldock.db` were encrypted with the source');
|
|
257
|
+
lines.push("machine's `global-salt` and cannot be decrypted on this machine. Run");
|
|
258
|
+
lines.push('`cleo agent auth <id>` to re-authenticate:');
|
|
259
|
+
lines.push('');
|
|
260
|
+
for (const w of reauthWarnings) {
|
|
261
|
+
lines.push(`- ${w.agentId}: ${w.reason}`);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
lines.push('');
|
|
265
|
+
lines.push('---');
|
|
266
|
+
lines.push('');
|
|
267
|
+
|
|
268
|
+
// ---- Schema compatibility warnings section ---------------------------------
|
|
269
|
+
|
|
270
|
+
lines.push('## Schema compatibility warnings');
|
|
271
|
+
lines.push('');
|
|
272
|
+
if (schemaWarnings.length === 0) {
|
|
273
|
+
lines.push('_None_');
|
|
274
|
+
} else {
|
|
275
|
+
for (const w of schemaWarnings) {
|
|
276
|
+
lines.push(
|
|
277
|
+
`- \`${w.db}\`: schema version \`${w.bundleVersion}\` (local: \`${w.localVersion}\`)`,
|
|
278
|
+
);
|
|
279
|
+
if (w.severity === 'older-bundle') {
|
|
280
|
+
lines.push(' - Status: **older-bundle: forward migration will run on first open**');
|
|
281
|
+
} else {
|
|
282
|
+
lines.push(' - Status: **newer-bundle: upgrade cleo for full support**');
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
lines.push('');
|
|
287
|
+
lines.push('---');
|
|
288
|
+
lines.push('');
|
|
289
|
+
|
|
290
|
+
// ---- Footer ----------------------------------------------------------------
|
|
291
|
+
|
|
292
|
+
lines.push(
|
|
293
|
+
'_Run `cleo restore finalize` after editing manual-review resolutions above to apply._',
|
|
294
|
+
);
|
|
295
|
+
|
|
296
|
+
return lines.join('\n');
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
/**
|
|
300
|
+
* Writes the conflict report markdown to
|
|
301
|
+
* `<projectRoot>/.cleo/restore-conflicts.md`.
|
|
302
|
+
*
|
|
303
|
+
* Creates the `.cleo/` directory if it does not already exist.
|
|
304
|
+
*
|
|
305
|
+
* @task T357
|
|
306
|
+
* @epic T311
|
|
307
|
+
* @param projectRoot - Absolute path to the project root directory.
|
|
308
|
+
* @param content - Markdown string produced by {@link buildConflictReport}.
|
|
309
|
+
* @returns The absolute path of the written file.
|
|
310
|
+
*/
|
|
311
|
+
export function writeConflictReport(projectRoot: string, content: string): string {
|
|
312
|
+
const cleoDir = path.join(projectRoot, '.cleo');
|
|
313
|
+
fs.mkdirSync(cleoDir, { recursive: true });
|
|
314
|
+
const filePath = path.join(cleoDir, 'restore-conflicts.md');
|
|
315
|
+
fs.writeFileSync(filePath, content, 'utf-8');
|
|
316
|
+
return filePath;
|
|
317
|
+
}
|