@cleocode/core 2026.4.5 → 2026.4.7
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/discovery.d.ts +69 -0
- package/dist/discovery.d.ts.map +1 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1643 -2349
- package/dist/index.js.map +4 -4
- package/dist/init.d.ts +51 -0
- package/dist/init.d.ts.map +1 -1
- package/dist/internal.d.ts +9 -1
- package/dist/internal.d.ts.map +1 -1
- package/dist/lifecycle/default-chain.d.ts +8 -2
- package/dist/lifecycle/default-chain.d.ts.map +1 -1
- package/dist/lifecycle/index.d.ts +1 -0
- package/dist/lifecycle/index.d.ts.map +1 -1
- package/dist/lifecycle/stage-guidance.d.ts +140 -0
- package/dist/lifecycle/stage-guidance.d.ts.map +1 -0
- package/dist/orchestration/protocol-validators.d.ts +122 -3
- package/dist/orchestration/protocol-validators.d.ts.map +1 -1
- package/dist/paths.d.ts +91 -0
- package/dist/paths.d.ts.map +1 -1
- package/dist/scaffold.d.ts +31 -1
- package/dist/scaffold.d.ts.map +1 -1
- package/dist/skills/dispatch.d.ts +1 -1
- package/dist/skills/skill-paths.d.ts +9 -6
- package/dist/skills/skill-paths.d.ts.map +1 -1
- package/dist/validation/protocols/_shared.d.ts +40 -0
- package/dist/validation/protocols/_shared.d.ts.map +1 -0
- package/dist/validation/protocols/architecture-decision.d.ts +23 -0
- package/dist/validation/protocols/architecture-decision.d.ts.map +1 -0
- package/dist/validation/protocols/artifact-publish.d.ts +22 -0
- package/dist/validation/protocols/artifact-publish.d.ts.map +1 -0
- package/dist/validation/protocols/consensus.d.ts +11 -17
- package/dist/validation/protocols/consensus.d.ts.map +1 -1
- package/dist/validation/protocols/contribution.d.ts +12 -17
- package/dist/validation/protocols/contribution.d.ts.map +1 -1
- package/dist/validation/protocols/decomposition.d.ts +18 -21
- package/dist/validation/protocols/decomposition.d.ts.map +1 -1
- package/dist/validation/protocols/implementation.d.ts +9 -17
- package/dist/validation/protocols/implementation.d.ts.map +1 -1
- package/dist/validation/protocols/provenance.d.ts +23 -0
- package/dist/validation/protocols/provenance.d.ts.map +1 -0
- package/dist/validation/protocols/release.d.ts +25 -0
- package/dist/validation/protocols/release.d.ts.map +1 -0
- package/dist/validation/protocols/research.d.ts +9 -17
- package/dist/validation/protocols/research.d.ts.map +1 -1
- package/dist/validation/protocols/specification.d.ts +7 -17
- package/dist/validation/protocols/specification.d.ts.map +1 -1
- package/dist/validation/protocols/testing.d.ts +22 -0
- package/dist/validation/protocols/testing.d.ts.map +1 -0
- package/dist/validation/protocols/validation.d.ts +22 -0
- package/dist/validation/protocols/validation.d.ts.map +1 -0
- package/package.json +7 -7
- package/src/discovery.ts +235 -0
- package/src/index.ts +16 -0
- package/src/init.ts +196 -0
- package/src/internal.ts +31 -1
- package/src/lifecycle/default-chain.ts +11 -2
- package/src/lifecycle/index.ts +10 -0
- package/src/lifecycle/stage-guidance.ts +282 -0
- package/src/orchestration/__tests__/protocol-validators.test.ts +259 -7
- package/src/orchestration/protocol-validators.ts +419 -4
- package/src/paths.ts +110 -0
- package/src/scaffold.ts +240 -4
- package/src/skills/dispatch.ts +6 -6
- package/src/skills/skill-paths.ts +27 -23
- package/src/validation/protocols/_shared.ts +88 -0
- package/src/validation/protocols/architecture-decision.ts +52 -0
- package/src/validation/protocols/artifact-publish.ts +49 -0
- package/src/validation/protocols/consensus.ts +44 -74
- package/src/validation/protocols/contribution.ts +28 -65
- package/src/validation/protocols/decomposition.ts +37 -64
- package/src/validation/protocols/implementation.ts +25 -65
- package/src/validation/protocols/protocols-markdown/architecture-decision.md +303 -0
- package/src/validation/protocols/protocols-markdown/artifact-publish.md +600 -0
- package/src/validation/protocols/protocols-markdown/consensus.md +322 -0
- package/src/validation/protocols/protocols-markdown/contribution.md +388 -0
- package/src/validation/protocols/protocols-markdown/decomposition.md +421 -0
- package/src/validation/protocols/protocols-markdown/implementation.md +357 -0
- package/src/validation/protocols/protocols-markdown/provenance.md +613 -0
- package/src/validation/protocols/protocols-markdown/release.md +783 -0
- package/src/validation/protocols/protocols-markdown/research.md +261 -0
- package/src/validation/protocols/protocols-markdown/specification.md +300 -0
- package/src/validation/protocols/protocols-markdown/testing.md +287 -0
- package/src/validation/protocols/protocols-markdown/validation.md +242 -0
- package/src/validation/protocols/provenance.ts +50 -0
- package/src/validation/protocols/release.ts +44 -0
- package/src/validation/protocols/research.ts +25 -87
- package/src/validation/protocols/specification.ts +27 -89
- package/src/validation/protocols/testing.ts +46 -0
- package/src/validation/protocols/validation.ts +46 -0
- package/dist/cant/approval.d.ts +0 -110
- package/dist/cant/approval.d.ts.map +0 -1
- package/dist/cant/context-builder.d.ts +0 -79
- package/dist/cant/context-builder.d.ts.map +0 -1
- package/dist/cant/discretion.d.ts +0 -95
- package/dist/cant/discretion.d.ts.map +0 -1
- package/dist/cant/index.d.ts +0 -25
- package/dist/cant/index.d.ts.map +0 -1
- package/dist/cant/parallel-runner.d.ts +0 -38
- package/dist/cant/parallel-runner.d.ts.map +0 -1
- package/dist/cant/types.d.ts +0 -127
- package/dist/cant/types.d.ts.map +0 -1
- package/dist/cant/workflow-executor.d.ts +0 -105
- package/dist/cant/workflow-executor.d.ts.map +0 -1
- package/dist/validation/protocols/release-protocol.d.ts +0 -27
- package/dist/validation/protocols/release-protocol.d.ts.map +0 -1
- package/dist/validation/protocols/testing-protocol.d.ts +0 -27
- package/dist/validation/protocols/testing-protocol.d.ts.map +0 -1
- package/dist/validation/protocols/validation-protocol.d.ts +0 -27
- package/dist/validation/protocols/validation-protocol.d.ts.map +0 -1
- package/schemas/agent-configs.schema.json +0 -120
- package/schemas/agent-registry.schema.json +0 -132
- package/schemas/archive.schema.json +0 -450
- package/schemas/brain-decision.schema.json +0 -69
- package/schemas/brain-learning.schema.json +0 -57
- package/schemas/brain-pattern.schema.json +0 -72
- package/schemas/critical-path.schema.json +0 -246
- package/schemas/deps-cache.schema.json +0 -97
- package/schemas/doctor-output.schema.json +0 -283
- package/schemas/error.schema.json +0 -161
- package/schemas/global-config.schema.json +0 -219
- package/schemas/grade.schema.json +0 -49
- package/schemas/log.schema.json +0 -250
- package/schemas/metrics.schema.json +0 -328
- package/schemas/migrations.schema.json +0 -150
- package/schemas/nexus-registry.schema.json +0 -90
- package/schemas/operation-constitution.schema.json +0 -438
- package/schemas/output.schema.json +0 -164
- package/schemas/projects-registry.schema.json +0 -107
- package/schemas/protocol-frontmatter.schema.json +0 -72
- package/schemas/rcasd-consensus-report.schema.json +0 -10
- package/schemas/rcasd-evidence.schema.json +0 -42
- package/schemas/rcasd-gate-result.schema.json +0 -46
- package/schemas/rcasd-hitl-resolution.schema.json +0 -10
- package/schemas/rcasd-index.schema.json +0 -10
- package/schemas/rcasd-manifest.schema.json +0 -10
- package/schemas/rcasd-research-output.schema.json +0 -10
- package/schemas/rcasd-spec-frontmatter.schema.json +0 -10
- package/schemas/rcasd-stage-transition.schema.json +0 -38
- package/schemas/releases.schema.json +0 -267
- package/schemas/skills-manifest.schema.json +0 -91
- package/schemas/spec-index.schema.json +0 -196
- package/schemas/system-flow-atlas.schema.json +0 -125
- package/src/__tests__/audit-prune.test.d.ts.map +0 -1
- package/src/__tests__/audit-prune.test.js +0 -162
- package/src/__tests__/audit-prune.test.js.map +0 -1
- package/src/__tests__/caamp-skill-install.test.d.ts.map +0 -1
- package/src/__tests__/caamp-skill-install.test.js +0 -147
- package/src/__tests__/caamp-skill-install.test.js.map +0 -1
- package/src/__tests__/cli-parity.test.d.ts.map +0 -1
- package/src/__tests__/cli-parity.test.js +0 -209
- package/src/__tests__/cli-parity.test.js.map +0 -1
- package/src/__tests__/config.test.d.ts.map +0 -1
- package/src/__tests__/config.test.js +0 -144
- package/src/__tests__/config.test.js.map +0 -1
- package/src/__tests__/core-parity.test.d.ts.map +0 -1
- package/src/__tests__/core-parity.test.js +0 -645
- package/src/__tests__/core-parity.test.js.map +0 -1
- package/src/__tests__/error-catalog.test.d.ts.map +0 -1
- package/src/__tests__/error-catalog.test.js +0 -127
- package/src/__tests__/error-catalog.test.js.map +0 -1
- package/src/__tests__/golden-parity.test.d.ts.map +0 -1
- package/src/__tests__/golden-parity.test.js +0 -212
- package/src/__tests__/golden-parity.test.js.map +0 -1
- package/src/__tests__/hooks.test.d.ts.map +0 -1
- package/src/__tests__/hooks.test.js +0 -201
- package/src/__tests__/hooks.test.js.map +0 -1
- package/src/__tests__/human-output.test.d.ts.map +0 -1
- package/src/__tests__/human-output.test.js +0 -158
- package/src/__tests__/human-output.test.js.map +0 -1
- package/src/__tests__/index-api-compat.test.d.ts.map +0 -1
- package/src/__tests__/index-api-compat.test.js +0 -16
- package/src/__tests__/index-api-compat.test.js.map +0 -1
- package/src/__tests__/init-e2e.test.d.ts.map +0 -1
- package/src/__tests__/init-e2e.test.js +0 -221
- package/src/__tests__/init-e2e.test.js.map +0 -1
- package/src/__tests__/injection-chain.test.d.ts.map +0 -1
- package/src/__tests__/injection-chain.test.js +0 -234
- package/src/__tests__/injection-chain.test.js.map +0 -1
- package/src/__tests__/injection-mvi-tiers.test.d.ts.map +0 -1
- package/src/__tests__/injection-mvi-tiers.test.js +0 -152
- package/src/__tests__/injection-mvi-tiers.test.js.map +0 -1
- package/src/__tests__/injection-shared.test.d.ts.map +0 -1
- package/src/__tests__/injection-shared.test.js +0 -194
- package/src/__tests__/injection-shared.test.js.map +0 -1
- package/src/__tests__/lafs-conformance.test.d.ts.map +0 -1
- package/src/__tests__/lafs-conformance.test.js +0 -786
- package/src/__tests__/lafs-conformance.test.js.map +0 -1
- package/src/__tests__/logger.test.d.ts.map +0 -1
- package/src/__tests__/logger.test.js +0 -75
- package/src/__tests__/logger.test.js.map +0 -1
- package/src/__tests__/paths.test.d.ts.map +0 -1
- package/src/__tests__/paths.test.js +0 -327
- package/src/__tests__/paths.test.js.map +0 -1
- package/src/__tests__/project-info.test.d.ts.map +0 -1
- package/src/__tests__/project-info.test.js +0 -156
- package/src/__tests__/project-info.test.js.map +0 -1
- package/src/__tests__/rcsd-pipeline-e2e.test.d.ts.map +0 -1
- package/src/__tests__/rcsd-pipeline-e2e.test.js +0 -263
- package/src/__tests__/rcsd-pipeline-e2e.test.js.map +0 -1
- package/src/__tests__/remote.test.d.ts.map +0 -1
- package/src/__tests__/remote.test.js +0 -149
- package/src/__tests__/remote.test.js.map +0 -1
- package/src/__tests__/scaffold.test.d.ts.map +0 -1
- package/src/__tests__/scaffold.test.js +0 -474
- package/src/__tests__/scaffold.test.js.map +0 -1
- package/src/__tests__/schema-management.test.d.ts.map +0 -1
- package/src/__tests__/schema-management.test.js +0 -287
- package/src/__tests__/schema-management.test.js.map +0 -1
- package/src/__tests__/schema.test.d.ts.map +0 -1
- package/src/__tests__/schema.test.js +0 -51
- package/src/__tests__/schema.test.js.map +0 -1
- package/src/__tests__/sharing.test.d.ts.map +0 -1
- package/src/__tests__/sharing.test.js +0 -160
- package/src/__tests__/sharing.test.js.map +0 -1
- package/src/__tests__/snapshot.test.d.ts.map +0 -1
- package/src/__tests__/snapshot.test.js +0 -72
- package/src/__tests__/snapshot.test.js.map +0 -1
- package/src/__tests__/upgrade.test.d.ts.map +0 -1
- package/src/__tests__/upgrade.test.js +0 -321
- package/src/__tests__/upgrade.test.js.map +0 -1
- package/src/adapters/__tests__/discovery.test.d.ts.map +0 -1
- package/src/adapters/__tests__/discovery.test.js +0 -56
- package/src/adapters/__tests__/discovery.test.js.map +0 -1
- package/src/adapters/__tests__/manager.test.d.ts.map +0 -1
- package/src/adapters/__tests__/manager.test.js +0 -260
- package/src/adapters/__tests__/manager.test.js.map +0 -1
- package/src/agents/__tests__/agent-registry.test.d.ts.map +0 -1
- package/src/agents/__tests__/agent-registry.test.js +0 -262
- package/src/agents/__tests__/agent-registry.test.js.map +0 -1
- package/src/agents/__tests__/capacity.test.d.ts.map +0 -1
- package/src/agents/__tests__/capacity.test.js +0 -173
- package/src/agents/__tests__/capacity.test.js.map +0 -1
- package/src/agents/__tests__/execution-learning.test.d.ts.map +0 -1
- package/src/agents/__tests__/execution-learning.test.js +0 -533
- package/src/agents/__tests__/execution-learning.test.js.map +0 -1
- package/src/agents/__tests__/health-monitor.test.d.ts.map +0 -1
- package/src/agents/__tests__/health-monitor.test.js +0 -259
- package/src/agents/__tests__/health-monitor.test.js.map +0 -1
- package/src/agents/__tests__/registry.test.d.ts.map +0 -1
- package/src/agents/__tests__/registry.test.js +0 -373
- package/src/agents/__tests__/registry.test.js.map +0 -1
- package/src/agents/__tests__/retry.test.d.ts.map +0 -1
- package/src/agents/__tests__/retry.test.js +0 -225
- package/src/agents/__tests__/retry.test.js.map +0 -1
- package/src/cant/__tests__/cant-agent-parse.test.d.ts.map +0 -1
- package/src/cant/__tests__/cant-agent-parse.test.js +0 -77
- package/src/cant/__tests__/cant-agent-parse.test.js.map +0 -1
- package/src/cant/__tests__/cant-agent-parse.test.ts +0 -94
- package/src/cant/approval.ts +0 -218
- package/src/cant/context-builder.ts +0 -135
- package/src/cant/discretion.ts +0 -149
- package/src/cant/index.ts +0 -58
- package/src/cant/parallel-runner.ts +0 -205
- package/src/cant/types.ts +0 -158
- package/src/cant/workflow-executor.ts +0 -618
- package/src/compliance/__tests__/sync.test.d.ts.map +0 -1
- package/src/compliance/__tests__/sync.test.js +0 -119
- package/src/compliance/__tests__/sync.test.js.map +0 -1
- package/src/conduit/__tests__/dual-api-e2e.test.d.ts.map +0 -1
- package/src/conduit/__tests__/dual-api-e2e.test.js +0 -178
- package/src/conduit/__tests__/dual-api-e2e.test.js.map +0 -1
- package/src/conduit/__tests__/dual-api-e2e.test.ts +0 -212
- package/src/conduit/__tests__/local-credential-flow.test.d.ts.map +0 -1
- package/src/conduit/__tests__/local-credential-flow.test.js +0 -185
- package/src/conduit/__tests__/local-credential-flow.test.js.map +0 -1
- package/src/conduit/__tests__/local-transport.test.d.ts.map +0 -1
- package/src/conduit/__tests__/local-transport.test.js +0 -404
- package/src/conduit/__tests__/local-transport.test.js.map +0 -1
- package/src/conduit/__tests__/sse-transport.test.d.ts.map +0 -1
- package/src/conduit/__tests__/sse-transport.test.js +0 -291
- package/src/conduit/__tests__/sse-transport.test.js.map +0 -1
- package/src/hooks/__tests__/provider-hooks.test.d.ts.map +0 -1
- package/src/hooks/__tests__/provider-hooks.test.js +0 -33
- package/src/hooks/__tests__/provider-hooks.test.js.map +0 -1
- package/src/hooks/__tests__/registry.test.d.ts.map +0 -1
- package/src/hooks/__tests__/registry.test.js +0 -37
- package/src/hooks/__tests__/registry.test.js.map +0 -1
- package/src/hooks/handlers/__tests__/error-hooks.test.d.ts.map +0 -1
- package/src/hooks/handlers/__tests__/error-hooks.test.js +0 -90
- package/src/hooks/handlers/__tests__/error-hooks.test.js.map +0 -1
- package/src/hooks/handlers/__tests__/file-hooks.test.d.ts.map +0 -1
- package/src/hooks/handlers/__tests__/file-hooks.test.js +0 -128
- package/src/hooks/handlers/__tests__/file-hooks.test.js.map +0 -1
- package/src/hooks/handlers/__tests__/hook-automation-e2e.test.d.ts.map +0 -1
- package/src/hooks/handlers/__tests__/hook-automation-e2e.test.js +0 -501
- package/src/hooks/handlers/__tests__/hook-automation-e2e.test.js.map +0 -1
- package/src/hooks/handlers/__tests__/session-hooks.test.d.ts.map +0 -1
- package/src/hooks/handlers/__tests__/session-hooks.test.js +0 -54
- package/src/hooks/handlers/__tests__/session-hooks.test.js.map +0 -1
- package/src/hooks/handlers/__tests__/task-hooks.test.d.ts.map +0 -1
- package/src/hooks/handlers/__tests__/task-hooks.test.js +0 -77
- package/src/hooks/handlers/__tests__/task-hooks.test.js.map +0 -1
- package/src/intelligence/__tests__/adaptive-validation.test.d.ts.map +0 -1
- package/src/intelligence/__tests__/adaptive-validation.test.js +0 -517
- package/src/intelligence/__tests__/adaptive-validation.test.js.map +0 -1
- package/src/intelligence/__tests__/impact.test.d.ts.map +0 -1
- package/src/intelligence/__tests__/impact.test.js +0 -515
- package/src/intelligence/__tests__/impact.test.js.map +0 -1
- package/src/intelligence/__tests__/patterns.test.d.ts.map +0 -1
- package/src/intelligence/__tests__/patterns.test.js +0 -370
- package/src/intelligence/__tests__/patterns.test.js.map +0 -1
- package/src/intelligence/__tests__/prediction.test.d.ts.map +0 -1
- package/src/intelligence/__tests__/prediction.test.js +0 -314
- package/src/intelligence/__tests__/prediction.test.js.map +0 -1
- package/src/lib/__tests__/retry.test.d.ts.map +0 -1
- package/src/lib/__tests__/retry.test.js +0 -225
- package/src/lib/__tests__/retry.test.js.map +0 -1
- package/src/lifecycle/__tests__/chain-store.test.d.ts.map +0 -1
- package/src/lifecycle/__tests__/chain-store.test.js +0 -243
- package/src/lifecycle/__tests__/chain-store.test.js.map +0 -1
- package/src/lifecycle/__tests__/consolidate-rcasd.test.d.ts.map +0 -1
- package/src/lifecycle/__tests__/consolidate-rcasd.test.js +0 -210
- package/src/lifecycle/__tests__/consolidate-rcasd.test.js.map +0 -1
- package/src/lifecycle/__tests__/default-chain.test.d.ts.map +0 -1
- package/src/lifecycle/__tests__/default-chain.test.js +0 -74
- package/src/lifecycle/__tests__/default-chain.test.js.map +0 -1
- package/src/lifecycle/__tests__/frontmatter.test.d.ts.map +0 -1
- package/src/lifecycle/__tests__/frontmatter.test.js +0 -229
- package/src/lifecycle/__tests__/frontmatter.test.js.map +0 -1
- package/src/lifecycle/__tests__/lifecycle.test.d.ts.map +0 -1
- package/src/lifecycle/__tests__/lifecycle.test.js +0 -126
- package/src/lifecycle/__tests__/lifecycle.test.js.map +0 -1
- package/src/lifecycle/__tests__/pipeline.integration.test.d.ts.map +0 -1
- package/src/lifecycle/__tests__/pipeline.integration.test.js +0 -977
- package/src/lifecycle/__tests__/pipeline.integration.test.js.map +0 -1
- package/src/lifecycle/__tests__/rcasd-paths.test.d.ts.map +0 -1
- package/src/lifecycle/__tests__/rcasd-paths.test.js +0 -206
- package/src/lifecycle/__tests__/rcasd-paths.test.js.map +0 -1
- package/src/lifecycle/__tests__/resume-schema-contract.test.d.ts.map +0 -1
- package/src/lifecycle/__tests__/resume-schema-contract.test.js +0 -246
- package/src/lifecycle/__tests__/resume-schema-contract.test.js.map +0 -1
- package/src/lifecycle/__tests__/stage-record-provenance.integration.test.d.ts.map +0 -1
- package/src/lifecycle/__tests__/stage-record-provenance.integration.test.js +0 -95
- package/src/lifecycle/__tests__/stage-record-provenance.integration.test.js.map +0 -1
- package/src/lifecycle/__tests__/tessera-engine.test.d.ts.map +0 -1
- package/src/lifecycle/__tests__/tessera-engine.test.js +0 -392
- package/src/lifecycle/__tests__/tessera-engine.test.js.map +0 -1
- package/src/memory/__tests__/auto-extract.test.d.ts.map +0 -1
- package/src/memory/__tests__/auto-extract.test.js +0 -197
- package/src/memory/__tests__/auto-extract.test.js.map +0 -1
- package/src/memory/__tests__/brain-automation.test.d.ts.map +0 -1
- package/src/memory/__tests__/brain-automation.test.js +0 -730
- package/src/memory/__tests__/brain-automation.test.js.map +0 -1
- package/src/memory/__tests__/brain-embedding.test.d.ts.map +0 -1
- package/src/memory/__tests__/brain-embedding.test.js +0 -92
- package/src/memory/__tests__/brain-embedding.test.js.map +0 -1
- package/src/memory/__tests__/brain-links.test.d.ts.map +0 -1
- package/src/memory/__tests__/brain-links.test.js +0 -221
- package/src/memory/__tests__/brain-links.test.js.map +0 -1
- package/src/memory/__tests__/brain-migration.test.d.ts.map +0 -1
- package/src/memory/__tests__/brain-migration.test.js +0 -180
- package/src/memory/__tests__/brain-migration.test.js.map +0 -1
- package/src/memory/__tests__/brain-retrieval.test.d.ts.map +0 -1
- package/src/memory/__tests__/brain-retrieval.test.js +0 -701
- package/src/memory/__tests__/brain-retrieval.test.js.map +0 -1
- package/src/memory/__tests__/brain-search.test.d.ts.map +0 -1
- package/src/memory/__tests__/brain-search.test.js +0 -180
- package/src/memory/__tests__/brain-search.test.js.map +0 -1
- package/src/memory/__tests__/claude-mem-migration.test.d.ts.map +0 -1
- package/src/memory/__tests__/claude-mem-migration.test.js +0 -424
- package/src/memory/__tests__/claude-mem-migration.test.js.map +0 -1
- package/src/memory/__tests__/decisions.test.d.ts.map +0 -1
- package/src/memory/__tests__/decisions.test.js +0 -253
- package/src/memory/__tests__/decisions.test.js.map +0 -1
- package/src/memory/__tests__/engine-compat.test.d.ts.map +0 -1
- package/src/memory/__tests__/engine-compat.test.js +0 -331
- package/src/memory/__tests__/engine-compat.test.js.map +0 -1
- package/src/memory/__tests__/memory-bridge.test.d.ts.map +0 -1
- package/src/memory/__tests__/memory-bridge.test.js +0 -231
- package/src/memory/__tests__/memory-bridge.test.js.map +0 -1
- package/src/memory/__tests__/pipeline-manifest-sqlite.test.d.ts.map +0 -1
- package/src/memory/__tests__/pipeline-manifest-sqlite.test.js +0 -516
- package/src/memory/__tests__/pipeline-manifest-sqlite.test.js.map +0 -1
- package/src/memory/__tests__/session-memory.test.d.ts.map +0 -1
- package/src/memory/__tests__/session-memory.test.js +0 -387
- package/src/memory/__tests__/session-memory.test.js.map +0 -1
- package/src/metrics/__tests__/model-provider-registry.test.d.ts.map +0 -1
- package/src/metrics/__tests__/model-provider-registry.test.js +0 -45
- package/src/metrics/__tests__/model-provider-registry.test.js.map +0 -1
- package/src/metrics/__tests__/provider-detection.test.d.ts.map +0 -1
- package/src/metrics/__tests__/provider-detection.test.js +0 -111
- package/src/metrics/__tests__/provider-detection.test.js.map +0 -1
- package/src/migration/__tests__/checksum.test.d.ts.map +0 -1
- package/src/migration/__tests__/checksum.test.js +0 -216
- package/src/migration/__tests__/checksum.test.js.map +0 -1
- package/src/migration/__tests__/logger.test.d.ts.map +0 -1
- package/src/migration/__tests__/logger.test.js +0 -256
- package/src/migration/__tests__/logger.test.js.map +0 -1
- package/src/migration/__tests__/migration-failure.integration.test.d.ts.map +0 -1
- package/src/migration/__tests__/migration-failure.integration.test.js +0 -515
- package/src/migration/__tests__/migration-failure.integration.test.js.map +0 -1
- package/src/migration/__tests__/migration.test.d.ts.map +0 -1
- package/src/migration/__tests__/migration.test.js +0 -82
- package/src/migration/__tests__/migration.test.js.map +0 -1
- package/src/migration/__tests__/state.test.d.ts.map +0 -1
- package/src/migration/__tests__/state.test.js +0 -330
- package/src/migration/__tests__/state.test.js.map +0 -1
- package/src/migration/__tests__/validate.test.d.ts.map +0 -1
- package/src/migration/__tests__/validate.test.js +0 -258
- package/src/migration/__tests__/validate.test.js.map +0 -1
- package/src/nexus/__tests__/deps.test.d.ts.map +0 -1
- package/src/nexus/__tests__/deps.test.js +0 -283
- package/src/nexus/__tests__/deps.test.js.map +0 -1
- package/src/nexus/__tests__/nexus-e2e.test.d.ts.map +0 -1
- package/src/nexus/__tests__/nexus-e2e.test.js +0 -1220
- package/src/nexus/__tests__/nexus-e2e.test.js.map +0 -1
- package/src/nexus/__tests__/permissions.test.d.ts.map +0 -1
- package/src/nexus/__tests__/permissions.test.js +0 -119
- package/src/nexus/__tests__/permissions.test.js.map +0 -1
- package/src/nexus/__tests__/query.test.d.ts.map +0 -1
- package/src/nexus/__tests__/query.test.js +0 -168
- package/src/nexus/__tests__/query.test.js.map +0 -1
- package/src/nexus/__tests__/reconcile.test.d.ts.map +0 -1
- package/src/nexus/__tests__/reconcile.test.js +0 -135
- package/src/nexus/__tests__/reconcile.test.js.map +0 -1
- package/src/nexus/__tests__/registry.test.d.ts.map +0 -1
- package/src/nexus/__tests__/registry.test.js +0 -229
- package/src/nexus/__tests__/registry.test.js.map +0 -1
- package/src/nexus/__tests__/transfer.test.d.ts.map +0 -1
- package/src/nexus/__tests__/transfer.test.js +0 -372
- package/src/nexus/__tests__/transfer.test.js.map +0 -1
- package/src/observability/__tests__/index.test.d.ts.map +0 -1
- package/src/observability/__tests__/index.test.js +0 -288
- package/src/observability/__tests__/index.test.js.map +0 -1
- package/src/observability/__tests__/log-filter.test.d.ts.map +0 -1
- package/src/observability/__tests__/log-filter.test.js +0 -151
- package/src/observability/__tests__/log-filter.test.js.map +0 -1
- package/src/observability/__tests__/log-parser.test.d.ts.map +0 -1
- package/src/observability/__tests__/log-parser.test.js +0 -170
- package/src/observability/__tests__/log-parser.test.js.map +0 -1
- package/src/observability/__tests__/log-reader.test.d.ts.map +0 -1
- package/src/observability/__tests__/log-reader.test.js +0 -150
- package/src/observability/__tests__/log-reader.test.js.map +0 -1
- package/src/orchestration/__tests__/autonomous-spec.test.d.ts.map +0 -1
- package/src/orchestration/__tests__/autonomous-spec.test.js +0 -419
- package/src/orchestration/__tests__/autonomous-spec.test.js.map +0 -1
- package/src/orchestration/__tests__/orchestration.test.d.ts.map +0 -1
- package/src/orchestration/__tests__/orchestration.test.js +0 -205
- package/src/orchestration/__tests__/orchestration.test.js.map +0 -1
- package/src/orchestration/__tests__/protocol-validators.test.d.ts.map +0 -1
- package/src/orchestration/__tests__/protocol-validators.test.js +0 -382
- package/src/orchestration/__tests__/protocol-validators.test.js.map +0 -1
- package/src/phases/__tests__/deps.test.d.ts.map +0 -1
- package/src/phases/__tests__/deps.test.js +0 -210
- package/src/phases/__tests__/deps.test.js.map +0 -1
- package/src/phases/__tests__/phases.test.d.ts.map +0 -1
- package/src/phases/__tests__/phases.test.js +0 -215
- package/src/phases/__tests__/phases.test.js.map +0 -1
- package/src/release/__tests__/artifacts.test.d.ts.map +0 -1
- package/src/release/__tests__/artifacts.test.js +0 -65
- package/src/release/__tests__/artifacts.test.js.map +0 -1
- package/src/release/__tests__/cancel-release.test.d.ts.map +0 -1
- package/src/release/__tests__/cancel-release.test.js +0 -154
- package/src/release/__tests__/cancel-release.test.js.map +0 -1
- package/src/release/__tests__/changelog-writer.test.d.ts.map +0 -1
- package/src/release/__tests__/changelog-writer.test.js +0 -132
- package/src/release/__tests__/changelog-writer.test.js.map +0 -1
- package/src/release/__tests__/push-policy.test.d.ts.map +0 -1
- package/src/release/__tests__/push-policy.test.js +0 -142
- package/src/release/__tests__/push-policy.test.js.map +0 -1
- package/src/release/__tests__/release.test.d.ts.map +0 -1
- package/src/release/__tests__/release.test.js +0 -25
- package/src/release/__tests__/release.test.js.map +0 -1
- package/src/sequence/__tests__/allocate.test.d.ts.map +0 -1
- package/src/sequence/__tests__/allocate.test.js +0 -113
- package/src/sequence/__tests__/allocate.test.js.map +0 -1
- package/src/sessions/__tests__/briefing-blocked.test.d.ts.map +0 -1
- package/src/sessions/__tests__/briefing-blocked.test.js +0 -117
- package/src/sessions/__tests__/briefing-blocked.test.js.map +0 -1
- package/src/sessions/__tests__/briefing.test.d.ts.map +0 -1
- package/src/sessions/__tests__/briefing.test.js +0 -336
- package/src/sessions/__tests__/briefing.test.js.map +0 -1
- package/src/sessions/__tests__/handoff-integration.test.d.ts.map +0 -1
- package/src/sessions/__tests__/handoff-integration.test.js +0 -264
- package/src/sessions/__tests__/handoff-integration.test.js.map +0 -1
- package/src/sessions/__tests__/handoff.test.d.ts.map +0 -1
- package/src/sessions/__tests__/handoff.test.js +0 -435
- package/src/sessions/__tests__/handoff.test.js.map +0 -1
- package/src/sessions/__tests__/index.test.d.ts.map +0 -1
- package/src/sessions/__tests__/index.test.js +0 -82
- package/src/sessions/__tests__/index.test.js.map +0 -1
- package/src/sessions/__tests__/session-cleanup.test.d.ts.map +0 -1
- package/src/sessions/__tests__/session-cleanup.test.js +0 -201
- package/src/sessions/__tests__/session-cleanup.test.js.map +0 -1
- package/src/sessions/__tests__/session-edge-cases.test.d.ts.map +0 -1
- package/src/sessions/__tests__/session-edge-cases.test.js +0 -251
- package/src/sessions/__tests__/session-edge-cases.test.js.map +0 -1
- package/src/sessions/__tests__/session-find.test.d.ts.map +0 -1
- package/src/sessions/__tests__/session-find.test.js +0 -210
- package/src/sessions/__tests__/session-find.test.js.map +0 -1
- package/src/sessions/__tests__/session-grade.integration.test.d.ts.map +0 -1
- package/src/sessions/__tests__/session-grade.integration.test.js +0 -287
- package/src/sessions/__tests__/session-grade.integration.test.js.map +0 -1
- package/src/sessions/__tests__/session-grade.test.d.ts.map +0 -1
- package/src/sessions/__tests__/session-grade.test.js +0 -630
- package/src/sessions/__tests__/session-grade.test.js.map +0 -1
- package/src/sessions/__tests__/session-memory-bridge.test.d.ts.map +0 -1
- package/src/sessions/__tests__/session-memory-bridge.test.js +0 -52
- package/src/sessions/__tests__/session-memory-bridge.test.js.map +0 -1
- package/src/sessions/__tests__/sessions.test.d.ts.map +0 -1
- package/src/sessions/__tests__/sessions.test.js +0 -113
- package/src/sessions/__tests__/sessions.test.js.map +0 -1
- package/src/skills/__tests__/discovery.test.d.ts.map +0 -1
- package/src/skills/__tests__/discovery.test.js +0 -171
- package/src/skills/__tests__/discovery.test.js.map +0 -1
- package/src/skills/__tests__/dispatch.test.d.ts.map +0 -1
- package/src/skills/__tests__/dispatch.test.js +0 -99
- package/src/skills/__tests__/dispatch.test.js.map +0 -1
- package/src/skills/__tests__/dynamic-skill-generator.test.d.ts.map +0 -1
- package/src/skills/__tests__/dynamic-skill-generator.test.js +0 -77
- package/src/skills/__tests__/dynamic-skill-generator.test.js.map +0 -1
- package/src/skills/__tests__/manifests.test.d.ts.map +0 -1
- package/src/skills/__tests__/manifests.test.js +0 -121
- package/src/skills/__tests__/manifests.test.js.map +0 -1
- package/src/skills/__tests__/precedence.test.d.ts.map +0 -1
- package/src/skills/__tests__/precedence.test.js +0 -325
- package/src/skills/__tests__/precedence.test.js.map +0 -1
- package/src/skills/__tests__/routing-table.test.d.ts.map +0 -1
- package/src/skills/__tests__/routing-table.test.js +0 -91
- package/src/skills/__tests__/routing-table.test.js.map +0 -1
- package/src/skills/__tests__/skill-paths.test.d.ts.map +0 -1
- package/src/skills/__tests__/skill-paths.test.js +0 -71
- package/src/skills/__tests__/skill-paths.test.js.map +0 -1
- package/src/skills/__tests__/test-utility.test.d.ts.map +0 -1
- package/src/skills/__tests__/test-utility.test.js +0 -59
- package/src/skills/__tests__/test-utility.test.js.map +0 -1
- package/src/skills/__tests__/token.test.d.ts.map +0 -1
- package/src/skills/__tests__/token.test.js +0 -135
- package/src/skills/__tests__/token.test.js.map +0 -1
- package/src/skills/__tests__/validation.test.d.ts.map +0 -1
- package/src/skills/__tests__/validation.test.js +0 -108
- package/src/skills/__tests__/validation.test.js.map +0 -1
- package/src/skills/__tests__/version.test.d.ts.map +0 -1
- package/src/skills/__tests__/version.test.js +0 -71
- package/src/skills/__tests__/version.test.js.map +0 -1
- package/src/skills/injection/__tests__/subagent.test.d.ts.map +0 -1
- package/src/skills/injection/__tests__/subagent.test.js +0 -122
- package/src/skills/injection/__tests__/subagent.test.js.map +0 -1
- package/src/skills/orchestrator/__tests__/spawn-tier.test.d.ts.map +0 -1
- package/src/skills/orchestrator/__tests__/spawn-tier.test.js +0 -228
- package/src/skills/orchestrator/__tests__/spawn-tier.test.js.map +0 -1
- package/src/spawn/__tests__/adapter-registry.test.d.ts.map +0 -1
- package/src/spawn/__tests__/adapter-registry.test.js +0 -76
- package/src/spawn/__tests__/adapter-registry.test.js.map +0 -1
- package/src/stats/__tests__/stats.test.d.ts.map +0 -1
- package/src/stats/__tests__/stats.test.js +0 -374
- package/src/stats/__tests__/stats.test.js.map +0 -1
- package/src/sticky/__tests__/purge.test.d.ts.map +0 -1
- package/src/sticky/__tests__/purge.test.js +0 -64
- package/src/sticky/__tests__/purge.test.js.map +0 -1
- package/src/store/__tests__/atomic.test.d.ts.map +0 -1
- package/src/store/__tests__/atomic.test.js +0 -81
- package/src/store/__tests__/atomic.test.js.map +0 -1
- package/src/store/__tests__/backup.test.d.ts.map +0 -1
- package/src/store/__tests__/backup.test.js +0 -131
- package/src/store/__tests__/backup.test.js.map +0 -1
- package/src/store/__tests__/brain-accessor-pageindex.test.d.ts.map +0 -1
- package/src/store/__tests__/brain-accessor-pageindex.test.js +0 -179
- package/src/store/__tests__/brain-accessor-pageindex.test.js.map +0 -1
- package/src/store/__tests__/brain-accessor.test.d.ts.map +0 -1
- package/src/store/__tests__/brain-accessor.test.js +0 -398
- package/src/store/__tests__/brain-accessor.test.js.map +0 -1
- package/src/store/__tests__/brain-pageindex.test.d.ts.map +0 -1
- package/src/store/__tests__/brain-pageindex.test.js +0 -137
- package/src/store/__tests__/brain-pageindex.test.js.map +0 -1
- package/src/store/__tests__/brain-schema.test.d.ts.map +0 -1
- package/src/store/__tests__/brain-schema.test.js +0 -137
- package/src/store/__tests__/brain-schema.test.js.map +0 -1
- package/src/store/__tests__/brain-vec.test.d.ts.map +0 -1
- package/src/store/__tests__/brain-vec.test.js +0 -100
- package/src/store/__tests__/brain-vec.test.js.map +0 -1
- package/src/store/__tests__/collision-detection.test.d.ts.map +0 -1
- package/src/store/__tests__/collision-detection.test.js +0 -165
- package/src/store/__tests__/collision-detection.test.js.map +0 -1
- package/src/store/__tests__/data-safety-central.test.d.ts.map +0 -1
- package/src/store/__tests__/data-safety-central.test.js +0 -408
- package/src/store/__tests__/data-safety-central.test.js.map +0 -1
- package/src/store/__tests__/db-helpers.test.d.ts.map +0 -1
- package/src/store/__tests__/db-helpers.test.js +0 -101
- package/src/store/__tests__/db-helpers.test.js.map +0 -1
- package/src/store/__tests__/e2e-safety-integration.test.d.ts.map +0 -1
- package/src/store/__tests__/e2e-safety-integration.test.js +0 -402
- package/src/store/__tests__/e2e-safety-integration.test.js.map +0 -1
- package/src/store/__tests__/git-checkpoint.test.d.ts.map +0 -1
- package/src/store/__tests__/git-checkpoint.test.js +0 -133
- package/src/store/__tests__/git-checkpoint.test.js.map +0 -1
- package/src/store/__tests__/idempotent-migration.test.d.ts.map +0 -1
- package/src/store/__tests__/idempotent-migration.test.js +0 -172
- package/src/store/__tests__/idempotent-migration.test.js.map +0 -1
- package/src/store/__tests__/import-logging.test.d.ts.map +0 -1
- package/src/store/__tests__/import-logging.test.js +0 -92
- package/src/store/__tests__/import-logging.test.js.map +0 -1
- package/src/store/__tests__/import-sort.test.d.ts.map +0 -1
- package/src/store/__tests__/import-sort.test.js +0 -109
- package/src/store/__tests__/import-sort.test.js.map +0 -1
- package/src/store/__tests__/json.test.d.ts.map +0 -1
- package/src/store/__tests__/json.test.js +0 -98
- package/src/store/__tests__/json.test.js.map +0 -1
- package/src/store/__tests__/lifecycle-schema-parity.test.d.ts.map +0 -1
- package/src/store/__tests__/lifecycle-schema-parity.test.js +0 -90
- package/src/store/__tests__/lifecycle-schema-parity.test.js.map +0 -1
- package/src/store/__tests__/migration-integration.test.d.ts.map +0 -1
- package/src/store/__tests__/migration-integration.test.js +0 -238
- package/src/store/__tests__/migration-integration.test.js.map +0 -1
- package/src/store/__tests__/migration-retry.test.d.ts.map +0 -1
- package/src/store/__tests__/migration-retry.test.js +0 -178
- package/src/store/__tests__/migration-retry.test.js.map +0 -1
- package/src/store/__tests__/migration-safety.test.d.ts.map +0 -1
- package/src/store/__tests__/migration-safety.test.js +0 -756
- package/src/store/__tests__/migration-safety.test.js.map +0 -1
- package/src/store/__tests__/migration-sqlite.test.d.ts.map +0 -1
- package/src/store/__tests__/migration-sqlite.test.js +0 -544
- package/src/store/__tests__/migration-sqlite.test.js.map +0 -1
- package/src/store/__tests__/performance-safety.test.d.ts.map +0 -1
- package/src/store/__tests__/performance-safety.test.js +0 -157
- package/src/store/__tests__/performance-safety.test.js.map +0 -1
- package/src/store/__tests__/project-detect.test.d.ts.map +0 -1
- package/src/store/__tests__/project-detect.test.js +0 -609
- package/src/store/__tests__/project-detect.test.js.map +0 -1
- package/src/store/__tests__/project-registry.test.d.ts.map +0 -1
- package/src/store/__tests__/project-registry.test.js +0 -28
- package/src/store/__tests__/project-registry.test.js.map +0 -1
- package/src/store/__tests__/provider.test.d.ts.map +0 -1
- package/src/store/__tests__/provider.test.js +0 -15
- package/src/store/__tests__/provider.test.js.map +0 -1
- package/src/store/__tests__/relations.test.d.ts.map +0 -1
- package/src/store/__tests__/relations.test.js +0 -318
- package/src/store/__tests__/relations.test.js.map +0 -1
- package/src/store/__tests__/safety-accessor.test.d.ts.map +0 -1
- package/src/store/__tests__/safety-accessor.test.js +0 -219
- package/src/store/__tests__/safety-accessor.test.js.map +0 -1
- package/src/store/__tests__/sequence-validation.test.d.ts.map +0 -1
- package/src/store/__tests__/sequence-validation.test.js +0 -94
- package/src/store/__tests__/sequence-validation.test.js.map +0 -1
- package/src/store/__tests__/session-store.test.d.ts.map +0 -1
- package/src/store/__tests__/session-store.test.js +0 -463
- package/src/store/__tests__/session-store.test.js.map +0 -1
- package/src/store/__tests__/sqlite-backup.test.d.ts.map +0 -1
- package/src/store/__tests__/sqlite-backup.test.js +0 -72
- package/src/store/__tests__/sqlite-backup.test.js.map +0 -1
- package/src/store/__tests__/sqlite.test.d.ts.map +0 -1
- package/src/store/__tests__/sqlite.test.js +0 -256
- package/src/store/__tests__/sqlite.test.js.map +0 -1
- package/src/store/__tests__/task-store.test.d.ts.map +0 -1
- package/src/store/__tests__/task-store.test.js +0 -514
- package/src/store/__tests__/task-store.test.js.map +0 -1
- package/src/store/__tests__/test-db-helper.d.ts.map +0 -1
- package/src/store/__tests__/test-db-helper.js +0 -110
- package/src/store/__tests__/test-db-helper.js.map +0 -1
- package/src/store/__tests__/write-verification.test.d.ts.map +0 -1
- package/src/store/__tests__/write-verification.test.js +0 -185
- package/src/store/__tests__/write-verification.test.js.map +0 -1
- package/src/system/__tests__/cleanup.test.d.ts.map +0 -1
- package/src/system/__tests__/cleanup.test.js +0 -87
- package/src/system/__tests__/cleanup.test.js.map +0 -1
- package/src/system/__tests__/health.test.d.ts.map +0 -1
- package/src/system/__tests__/health.test.js +0 -55
- package/src/system/__tests__/health.test.js.map +0 -1
- package/src/task-work/__tests__/start-deps.test.d.ts.map +0 -1
- package/src/task-work/__tests__/start-deps.test.js +0 -152
- package/src/task-work/__tests__/start-deps.test.js.map +0 -1
- package/src/tasks/__tests__/add.test.d.ts.map +0 -1
- package/src/tasks/__tests__/add.test.js +0 -226
- package/src/tasks/__tests__/add.test.js.map +0 -1
- package/src/tasks/__tests__/archive.test.d.ts.map +0 -1
- package/src/tasks/__tests__/archive.test.js +0 -196
- package/src/tasks/__tests__/archive.test.js.map +0 -1
- package/src/tasks/__tests__/assignee.test.d.ts.map +0 -1
- package/src/tasks/__tests__/assignee.test.js +0 -125
- package/src/tasks/__tests__/assignee.test.js.map +0 -1
- package/src/tasks/__tests__/atomicity.test.d.ts.map +0 -1
- package/src/tasks/__tests__/atomicity.test.js +0 -192
- package/src/tasks/__tests__/atomicity.test.js.map +0 -1
- package/src/tasks/__tests__/cancel-ops.test.d.ts.map +0 -1
- package/src/tasks/__tests__/cancel-ops.test.js +0 -115
- package/src/tasks/__tests__/cancel-ops.test.js.map +0 -1
- package/src/tasks/__tests__/complete-unblocks.test.d.ts.map +0 -1
- package/src/tasks/__tests__/complete-unblocks.test.js +0 -151
- package/src/tasks/__tests__/complete-unblocks.test.js.map +0 -1
- package/src/tasks/__tests__/complete.test.d.ts.map +0 -1
- package/src/tasks/__tests__/complete.test.js +0 -230
- package/src/tasks/__tests__/complete.test.js.map +0 -1
- package/src/tasks/__tests__/delete.test.d.ts.map +0 -1
- package/src/tasks/__tests__/delete.test.js +0 -183
- package/src/tasks/__tests__/delete.test.js.map +0 -1
- package/src/tasks/__tests__/dependency-check.test.d.ts.map +0 -1
- package/src/tasks/__tests__/dependency-check.test.js +0 -293
- package/src/tasks/__tests__/dependency-check.test.js.map +0 -1
- package/src/tasks/__tests__/deps-ready.test.d.ts.map +0 -1
- package/src/tasks/__tests__/deps-ready.test.js +0 -68
- package/src/tasks/__tests__/deps-ready.test.js.map +0 -1
- package/src/tasks/__tests__/epic-enforcement.test.d.ts.map +0 -1
- package/src/tasks/__tests__/epic-enforcement.test.js +0 -669
- package/src/tasks/__tests__/epic-enforcement.test.js.map +0 -1
- package/src/tasks/__tests__/find.test.d.ts.map +0 -1
- package/src/tasks/__tests__/find.test.js +0 -163
- package/src/tasks/__tests__/find.test.js.map +0 -1
- package/src/tasks/__tests__/graph-ops.test.d.ts.map +0 -1
- package/src/tasks/__tests__/graph-ops.test.js +0 -174
- package/src/tasks/__tests__/graph-ops.test.js.map +0 -1
- package/src/tasks/__tests__/hierarchy-policy.test.d.ts.map +0 -1
- package/src/tasks/__tests__/hierarchy-policy.test.js +0 -399
- package/src/tasks/__tests__/hierarchy-policy.test.js.map +0 -1
- package/src/tasks/__tests__/hierarchy.test.d.ts.map +0 -1
- package/src/tasks/__tests__/hierarchy.test.js +0 -302
- package/src/tasks/__tests__/hierarchy.test.js.map +0 -1
- package/src/tasks/__tests__/id-generator.test.d.ts.map +0 -1
- package/src/tasks/__tests__/id-generator.test.js +0 -59
- package/src/tasks/__tests__/id-generator.test.js.map +0 -1
- package/src/tasks/__tests__/labels.test.d.ts.map +0 -1
- package/src/tasks/__tests__/labels.test.js +0 -173
- package/src/tasks/__tests__/labels.test.js.map +0 -1
- package/src/tasks/__tests__/list.test.d.ts.map +0 -1
- package/src/tasks/__tests__/list.test.js +0 -272
- package/src/tasks/__tests__/list.test.js.map +0 -1
- package/src/tasks/__tests__/minimal-test.test.d.ts.map +0 -1
- package/src/tasks/__tests__/minimal-test.test.js +0 -25
- package/src/tasks/__tests__/minimal-test.test.js.map +0 -1
- package/src/tasks/__tests__/phase-tracking.test.d.ts.map +0 -1
- package/src/tasks/__tests__/phase-tracking.test.js +0 -209
- package/src/tasks/__tests__/phase-tracking.test.js.map +0 -1
- package/src/tasks/__tests__/pipeline-stage.test.d.ts.map +0 -1
- package/src/tasks/__tests__/pipeline-stage.test.js +0 -277
- package/src/tasks/__tests__/pipeline-stage.test.js.map +0 -1
- package/src/tasks/__tests__/plan-priority.test.d.ts.map +0 -1
- package/src/tasks/__tests__/plan-priority.test.js +0 -133
- package/src/tasks/__tests__/plan-priority.test.js.map +0 -1
- package/src/tasks/__tests__/priority-normalization.test.d.ts.map +0 -1
- package/src/tasks/__tests__/priority-normalization.test.js +0 -117
- package/src/tasks/__tests__/priority-normalization.test.js.map +0 -1
- package/src/tasks/__tests__/relates.test.d.ts.map +0 -1
- package/src/tasks/__tests__/relates.test.js +0 -84
- package/src/tasks/__tests__/relates.test.js.map +0 -1
- package/src/tasks/__tests__/show-deps.test.d.ts.map +0 -1
- package/src/tasks/__tests__/show-deps.test.js +0 -182
- package/src/tasks/__tests__/show-deps.test.js.map +0 -1
- package/src/tasks/__tests__/show.test.d.ts.map +0 -1
- package/src/tasks/__tests__/show.test.js +0 -126
- package/src/tasks/__tests__/show.test.js.map +0 -1
- package/src/tasks/__tests__/staleness.test.d.ts.map +0 -1
- package/src/tasks/__tests__/staleness.test.js +0 -154
- package/src/tasks/__tests__/staleness.test.js.map +0 -1
- package/src/tasks/__tests__/task-ops-depends.test.d.ts.map +0 -1
- package/src/tasks/__tests__/task-ops-depends.test.js +0 -118
- package/src/tasks/__tests__/task-ops-depends.test.js.map +0 -1
- package/src/tasks/__tests__/update.test.d.ts.map +0 -1
- package/src/tasks/__tests__/update.test.js +0 -320
- package/src/tasks/__tests__/update.test.js.map +0 -1
- package/src/validation/__tests__/chain-validation.test.d.ts.map +0 -1
- package/src/validation/__tests__/chain-validation.test.js +0 -204
- package/src/validation/__tests__/chain-validation.test.js.map +0 -1
- package/src/validation/__tests__/compliance.test.d.ts.map +0 -1
- package/src/validation/__tests__/compliance.test.js +0 -83
- package/src/validation/__tests__/compliance.test.js.map +0 -1
- package/src/validation/__tests__/docs-sync.test.d.ts.map +0 -1
- package/src/validation/__tests__/docs-sync.test.js +0 -243
- package/src/validation/__tests__/docs-sync.test.js.map +0 -1
- package/src/validation/__tests__/doctor-gitignore.test.d.ts.map +0 -1
- package/src/validation/__tests__/doctor-gitignore.test.js +0 -154
- package/src/validation/__tests__/doctor-gitignore.test.js.map +0 -1
- package/src/validation/__tests__/doctor-injection.test.d.ts.map +0 -1
- package/src/validation/__tests__/doctor-injection.test.js +0 -230
- package/src/validation/__tests__/doctor-injection.test.js.map +0 -1
- package/src/validation/__tests__/doctor.test.d.ts.map +0 -1
- package/src/validation/__tests__/doctor.test.js +0 -202
- package/src/validation/__tests__/doctor.test.js.map +0 -1
- package/src/validation/__tests__/engine.test.d.ts.map +0 -1
- package/src/validation/__tests__/engine.test.js +0 -346
- package/src/validation/__tests__/engine.test.js.map +0 -1
- package/src/validation/__tests__/manifest.test.d.ts.map +0 -1
- package/src/validation/__tests__/manifest.test.js +0 -244
- package/src/validation/__tests__/manifest.test.js.map +0 -1
- package/src/validation/__tests__/protocol-common.test.d.ts.map +0 -1
- package/src/validation/__tests__/protocol-common.test.js +0 -112
- package/src/validation/__tests__/protocol-common.test.js.map +0 -1
- package/src/validation/__tests__/verification.test.d.ts.map +0 -1
- package/src/validation/__tests__/verification.test.js +0 -277
- package/src/validation/__tests__/verification.test.js.map +0 -1
- package/src/validation/protocols/release-protocol.ts +0 -80
- package/src/validation/protocols/testing-protocol.ts +0 -93
- package/src/validation/protocols/validation-protocol.ts +0 -93
|
@@ -1,645 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CLI/MCP Core Parity Integration Tests
|
|
3
|
-
*
|
|
4
|
-
* Verifies that MCP engine functions delegate to src/core/ modules
|
|
5
|
-
* and that both paths produce equivalent results for shared operations.
|
|
6
|
-
*
|
|
7
|
-
* Test categories:
|
|
8
|
-
* 1. Import graph verification — engine files import from core
|
|
9
|
-
* 2. Task CRUD data parity — core vs engine return identical task data
|
|
10
|
-
* 3. Session operations parity — core vs engine session state
|
|
11
|
-
* 4. Lifecycle operations parity — core vs engine lifecycle info
|
|
12
|
-
*
|
|
13
|
-
* @task T4796
|
|
14
|
-
* @epic T4654
|
|
15
|
-
*/
|
|
16
|
-
import { mkdir, mkdtemp, readFile, rm } from 'node:fs/promises';
|
|
17
|
-
import { tmpdir } from 'node:os';
|
|
18
|
-
import { join } from 'node:path';
|
|
19
|
-
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
|
|
20
|
-
import { closeLogger, initLogger } from '../logger.js';
|
|
21
|
-
// ============================================================================
|
|
22
|
-
// Section 1: Import Graph Verification
|
|
23
|
-
//
|
|
24
|
-
// Verifies that engine files delegate to src/core/ rather than duplicating
|
|
25
|
-
// business logic inline. This is a structural test that reads source files.
|
|
26
|
-
//
|
|
27
|
-
// Note: Multi-line import statements like:
|
|
28
|
-
// import {
|
|
29
|
-
// foo,
|
|
30
|
-
// } from '../../core/bar.js';
|
|
31
|
-
// have `from` on a separate line from `import`, so we match `from` lines.
|
|
32
|
-
// ============================================================================
|
|
33
|
-
describe('Import Graph Verification (T4796)', () => {
|
|
34
|
-
const ENGINE_FILES = [
|
|
35
|
-
// task-engine.ts deleted — moved to src/dispatch/engines/task-engine.ts (T5100)
|
|
36
|
-
// session-engine.ts deleted — moved to src/dispatch/engines/session-engine.ts
|
|
37
|
-
// lifecycle-engine.ts deleted — moved to src/dispatch/engines/lifecycle-engine.ts
|
|
38
|
-
// system-engine.ts deleted — moved to src/dispatch/engines/system-engine.ts (T5107)
|
|
39
|
-
// orchestrate-engine.ts deleted — moved to src/dispatch/engines/orchestrate-engine.ts (T5108)
|
|
40
|
-
// validate-engine.ts deleted — moved to src/dispatch/engines/validate-engine.ts (T5109-T5111)
|
|
41
|
-
];
|
|
42
|
-
const ENGINE_DIR = join(process.cwd(), 'src', 'mcp', 'engine');
|
|
43
|
-
for (const file of ENGINE_FILES) {
|
|
44
|
-
describe(`${file}`, () => {
|
|
45
|
-
it('imports from @cleocode/core or ../../store/', async () => {
|
|
46
|
-
const filePath = join(ENGINE_DIR, file);
|
|
47
|
-
const content = await readFile(filePath, 'utf-8');
|
|
48
|
-
// Match `from '...'` lines (handles multi-line imports)
|
|
49
|
-
// T5718: engines now import via @cleocode/core (not relative ../../core/)
|
|
50
|
-
const fromLines = content.split('\n').filter((line) => line.match(/from\s+['"]/));
|
|
51
|
-
const coreImports = fromLines.filter((line) => line.includes("'@cleocode/core'") || line.includes('../store/'));
|
|
52
|
-
// Every engine file should have at least one core/store import
|
|
53
|
-
expect(coreImports.length).toBeGreaterThanOrEqual(1);
|
|
54
|
-
});
|
|
55
|
-
it('has meaningful core delegation', async () => {
|
|
56
|
-
const filePath = join(ENGINE_DIR, file);
|
|
57
|
-
const content = await readFile(filePath, 'utf-8');
|
|
58
|
-
// Match all `from '...'` lines
|
|
59
|
-
// T5718: engines import core via @cleocode/core package
|
|
60
|
-
const fromLines = content
|
|
61
|
-
.split('\n')
|
|
62
|
-
.filter((line) => line.match(/from\s+['"]/))
|
|
63
|
-
.filter((line) => !line.includes("'node:"))
|
|
64
|
-
.filter((line) => !line.includes("'vitest"));
|
|
65
|
-
// Count @cleocode/core + store imports
|
|
66
|
-
const coreImports = fromLines.filter((line) => line.includes("'@cleocode/core'") || line.includes('../store/'));
|
|
67
|
-
// Core imports should exist
|
|
68
|
-
if (fromLines.length > 0) {
|
|
69
|
-
expect(coreImports.length).toBeGreaterThanOrEqual(1);
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
it('task-engine.ts imports core CRUD functions via @cleocode/core', async () => {
|
|
75
|
-
// task-engine.ts moved to src/dispatch/engines/task-engine.ts (T5100)
|
|
76
|
-
// T5718: imports rewired from relative ../../core/ to @cleocode/core
|
|
77
|
-
const dispatchEngineDir = join(process.cwd(), 'src', 'dispatch', 'engines');
|
|
78
|
-
const content = await readFile(join(dispatchEngineDir, 'task-engine.ts'), 'utf-8');
|
|
79
|
-
// Core task functions are now imported via @cleocode/core (T5718)
|
|
80
|
-
expect(content).toContain("from '@cleocode/core'");
|
|
81
|
-
// Verify the key task functions are imported
|
|
82
|
-
expect(content).toContain('addTask');
|
|
83
|
-
expect(content).toContain('showTask');
|
|
84
|
-
expect(content).toContain('listTasks');
|
|
85
|
-
expect(content).toContain('findTasks');
|
|
86
|
-
expect(content).toContain('updateTask');
|
|
87
|
-
expect(content).toContain('deleteTask');
|
|
88
|
-
expect(content).toContain('archiveTasks');
|
|
89
|
-
});
|
|
90
|
-
it('dispatch session-engine.ts imports core session/task-work functions via @cleocode/core', async () => {
|
|
91
|
-
// T5718: imports rewired from relative ../../core/ to @cleocode/core
|
|
92
|
-
const dispatchEngineDir = join(process.cwd(), 'src', 'dispatch', 'engines');
|
|
93
|
-
const content = await readFile(join(dispatchEngineDir, 'session-engine.ts'), 'utf-8');
|
|
94
|
-
expect(content).toContain("from '@cleocode/core'");
|
|
95
|
-
// Verify session and task-work functions are present
|
|
96
|
-
// (session engine builds sessions via parseScope/generateSessionId rather than startSession/endSession)
|
|
97
|
-
expect(content).toContain('parseScope');
|
|
98
|
-
expect(content).toContain('computeHandoff');
|
|
99
|
-
expect(content).toContain('startTask');
|
|
100
|
-
expect(content).toContain('stopTask');
|
|
101
|
-
});
|
|
102
|
-
it('lifecycle-engine.ts imports core lifecycle functions via @cleocode/core', async () => {
|
|
103
|
-
// lifecycle-engine.ts moved to src/dispatch/engines/lifecycle-engine.ts
|
|
104
|
-
// T5718: imports rewired from relative ../../core/ to @cleocode/core
|
|
105
|
-
const dispatchEngineDir = join(process.cwd(), 'src', 'dispatch', 'engines');
|
|
106
|
-
const content = await readFile(join(dispatchEngineDir, 'lifecycle-engine.ts'), 'utf-8');
|
|
107
|
-
expect(content).toContain("from '@cleocode/core'");
|
|
108
|
-
expect(content).toContain('getLifecycleStatus');
|
|
109
|
-
expect(content).toContain('recordStageProgress');
|
|
110
|
-
});
|
|
111
|
-
it('validate-engine.ts imports core validation functions via @cleocode/core', async () => {
|
|
112
|
-
// T5718: imports rewired from relative ../../core/ to @cleocode/core
|
|
113
|
-
const dispatchEngineDir = join(process.cwd(), 'src', 'dispatch', 'engines');
|
|
114
|
-
const content = await readFile(join(dispatchEngineDir, 'validate-engine.ts'), 'utf-8');
|
|
115
|
-
expect(content).toContain("from '@cleocode/core'");
|
|
116
|
-
expect(content).toContain('coreValidateSchema');
|
|
117
|
-
expect(content).toContain('coreValidateTask');
|
|
118
|
-
});
|
|
119
|
-
it('system-engine.ts imports core system functions via @cleocode/core', async () => {
|
|
120
|
-
// T5718: imports rewired from relative ../../core/ to @cleocode/core
|
|
121
|
-
const dispatchEngineDir = join(process.cwd(), 'src', 'dispatch', 'engines');
|
|
122
|
-
const content = await readFile(join(dispatchEngineDir, 'system-engine.ts'), 'utf-8');
|
|
123
|
-
expect(content).toContain("from '@cleocode/core'");
|
|
124
|
-
expect(content).toContain('getProjectStats');
|
|
125
|
-
expect(content).toContain('getSystemHealth');
|
|
126
|
-
});
|
|
127
|
-
it('orchestrate-engine.ts imports core orchestration functions via @cleocode/core', async () => {
|
|
128
|
-
// T5718: imports rewired from relative ../../core/ to @cleocode/core
|
|
129
|
-
const dispatchEngineDir = join(process.cwd(), 'src', 'dispatch', 'engines');
|
|
130
|
-
const content = await readFile(join(dispatchEngineDir, 'orchestrate-engine.ts'), 'utf-8');
|
|
131
|
-
expect(content).toContain("from '@cleocode/core'");
|
|
132
|
-
expect(content).toContain('analyzeEpic');
|
|
133
|
-
expect(content).toContain('prepareSpawn');
|
|
134
|
-
});
|
|
135
|
-
// research-engine.ts has been consolidated into core/memory/engine-compat.ts
|
|
136
|
-
});
|
|
137
|
-
// ============================================================================
|
|
138
|
-
// Shared fixture helper
|
|
139
|
-
// ============================================================================
|
|
140
|
-
/**
|
|
141
|
-
* Create a minimal .cleo project directory with required files.
|
|
142
|
-
* Seeds task data into SQLite (ADR-006 canonical storage).
|
|
143
|
-
* Returns { testDir, cleoDir }.
|
|
144
|
-
*/
|
|
145
|
-
async function createTestProject(prefix, tasksJson) {
|
|
146
|
-
const testDir = await mkdtemp(join(tmpdir(), prefix));
|
|
147
|
-
const cleoDir = join(testDir, '.cleo');
|
|
148
|
-
await mkdir(cleoDir, { recursive: true });
|
|
149
|
-
await mkdir(join(cleoDir, 'backups', 'operational'), { recursive: true });
|
|
150
|
-
// Seed tasks into SQLite via the task store
|
|
151
|
-
const { getDb } = await import('../store/sqlite.js');
|
|
152
|
-
const { createTask } = await import('../store/task-store.js');
|
|
153
|
-
await getDb(testDir);
|
|
154
|
-
const tasks = tasksJson.tasks ?? [];
|
|
155
|
-
for (const task of tasks) {
|
|
156
|
-
await createTask(task, testDir);
|
|
157
|
-
}
|
|
158
|
-
return { testDir, cleoDir };
|
|
159
|
-
}
|
|
160
|
-
// ============================================================================
|
|
161
|
-
// Section 2: Task CRUD Data Parity
|
|
162
|
-
//
|
|
163
|
-
// Creates a temp project dir with a valid tasks.json, then verifies that
|
|
164
|
-
// calling core functions directly and engine wrapper functions produce
|
|
165
|
-
// equivalent results (stripping the EngineResult wrapper).
|
|
166
|
-
// ============================================================================
|
|
167
|
-
describe('Task CRUD Data Parity (T4796)', () => {
|
|
168
|
-
let testDir;
|
|
169
|
-
let cleoDir;
|
|
170
|
-
const TASKS_JSON = {
|
|
171
|
-
version: '2.10.0',
|
|
172
|
-
project: {
|
|
173
|
-
name: 'Parity Test',
|
|
174
|
-
phases: {
|
|
175
|
-
core: { order: 1, name: 'Core', status: 'active' },
|
|
176
|
-
},
|
|
177
|
-
},
|
|
178
|
-
lastUpdated: '2026-01-01T00:00:00Z',
|
|
179
|
-
_meta: {
|
|
180
|
-
schemaVersion: '2.10.0',
|
|
181
|
-
specVersion: '0.1.0',
|
|
182
|
-
checksum: 'abc',
|
|
183
|
-
configVersion: '2.0.0',
|
|
184
|
-
},
|
|
185
|
-
focus: {},
|
|
186
|
-
tasks: [
|
|
187
|
-
{
|
|
188
|
-
id: 'T001',
|
|
189
|
-
title: 'Test task alpha',
|
|
190
|
-
description: 'First test task for parity testing',
|
|
191
|
-
status: 'pending',
|
|
192
|
-
priority: 'high',
|
|
193
|
-
phase: 'core',
|
|
194
|
-
type: 'task',
|
|
195
|
-
createdAt: '2026-01-01T00:00:00Z',
|
|
196
|
-
updatedAt: null,
|
|
197
|
-
},
|
|
198
|
-
{
|
|
199
|
-
id: 'T002',
|
|
200
|
-
title: 'Test task beta',
|
|
201
|
-
description: 'Second test task for parity testing',
|
|
202
|
-
status: 'done',
|
|
203
|
-
priority: 'medium',
|
|
204
|
-
phase: 'core',
|
|
205
|
-
type: 'task',
|
|
206
|
-
createdAt: '2026-01-02T00:00:00Z',
|
|
207
|
-
updatedAt: null,
|
|
208
|
-
completedAt: '2026-01-05T00:00:00Z',
|
|
209
|
-
},
|
|
210
|
-
{
|
|
211
|
-
id: 'T003',
|
|
212
|
-
title: 'Subtask of T001',
|
|
213
|
-
description: 'A child task',
|
|
214
|
-
status: 'pending',
|
|
215
|
-
priority: 'low',
|
|
216
|
-
phase: 'core',
|
|
217
|
-
type: 'subtask',
|
|
218
|
-
parentId: 'T001',
|
|
219
|
-
createdAt: '2026-01-03T00:00:00Z',
|
|
220
|
-
updatedAt: null,
|
|
221
|
-
},
|
|
222
|
-
],
|
|
223
|
-
};
|
|
224
|
-
beforeEach(async () => {
|
|
225
|
-
const project = await createTestProject('cleo-parity-', TASKS_JSON);
|
|
226
|
-
testDir = project.testDir;
|
|
227
|
-
cleoDir = project.cleoDir;
|
|
228
|
-
process.env['CLEO_DIR'] = cleoDir;
|
|
229
|
-
initLogger(cleoDir, {
|
|
230
|
-
level: 'fatal',
|
|
231
|
-
filePath: 'logs/test.log',
|
|
232
|
-
maxFileSize: 1024 * 1024,
|
|
233
|
-
maxFiles: 1,
|
|
234
|
-
});
|
|
235
|
-
});
|
|
236
|
-
afterEach(async () => {
|
|
237
|
-
await closeLogger();
|
|
238
|
-
delete process.env['CLEO_DIR'];
|
|
239
|
-
try {
|
|
240
|
-
const { closeAllDatabases } = await import('../store/sqlite.js');
|
|
241
|
-
await closeAllDatabases();
|
|
242
|
-
}
|
|
243
|
-
catch {
|
|
244
|
-
/* ignore */
|
|
245
|
-
}
|
|
246
|
-
await Promise.race([
|
|
247
|
-
rm(testDir, { recursive: true, force: true }).catch(() => { }),
|
|
248
|
-
new Promise((resolve) => setTimeout(resolve, 8_000)),
|
|
249
|
-
]);
|
|
250
|
-
});
|
|
251
|
-
it('taskShow returns same task data as core showTask', async () => {
|
|
252
|
-
const { showTask } = await import('../tasks/show.js');
|
|
253
|
-
const { taskShow } = await import('../../dispatch/engines/task-engine.js');
|
|
254
|
-
const { getAccessor } = await import('../store/data-accessor.js');
|
|
255
|
-
const accessor = await getAccessor(testDir);
|
|
256
|
-
// Call core directly
|
|
257
|
-
const coreResult = await showTask('T001', testDir, accessor);
|
|
258
|
-
// Call engine wrapper
|
|
259
|
-
const engineResult = await taskShow(testDir, 'T001');
|
|
260
|
-
// Both should succeed
|
|
261
|
-
expect(engineResult.success).toBe(true);
|
|
262
|
-
expect(engineResult.data).toBeDefined();
|
|
263
|
-
// Compare key fields (engine wraps core result in { task: ... })
|
|
264
|
-
expect(engineResult.data.task.id).toBe(coreResult.id);
|
|
265
|
-
expect(engineResult.data.task.title).toBe(coreResult.title);
|
|
266
|
-
expect(engineResult.data.task.status).toBe(coreResult.status);
|
|
267
|
-
expect(engineResult.data.task.priority).toBe(coreResult.priority);
|
|
268
|
-
});
|
|
269
|
-
it('taskShow and core showTask both fail for missing task', async () => {
|
|
270
|
-
const { showTask } = await import('../tasks/show.js');
|
|
271
|
-
const { taskShow } = await import('../../dispatch/engines/task-engine.js');
|
|
272
|
-
const { getAccessor } = await import('../store/data-accessor.js');
|
|
273
|
-
const accessor = await getAccessor(testDir);
|
|
274
|
-
// Core should throw
|
|
275
|
-
await expect(showTask('T999', testDir, accessor)).rejects.toThrow();
|
|
276
|
-
// Engine should return error (may be E_NOT_FOUND or E_NOT_INITIALIZED
|
|
277
|
-
// depending on where the error is caught in the engine)
|
|
278
|
-
const engineResult = await taskShow(testDir, 'T999');
|
|
279
|
-
expect(engineResult.success).toBe(false);
|
|
280
|
-
expect(engineResult.error?.code).toMatch(/^E_/);
|
|
281
|
-
});
|
|
282
|
-
it('taskList returns same tasks as core listTasks', async () => {
|
|
283
|
-
const { listTasks } = await import('../tasks/list.js');
|
|
284
|
-
const { taskList } = await import('../../dispatch/engines/task-engine.js');
|
|
285
|
-
const { getAccessor } = await import('../store/data-accessor.js');
|
|
286
|
-
const accessor = await getAccessor(testDir);
|
|
287
|
-
// Call core
|
|
288
|
-
const coreResult = await listTasks({}, testDir, accessor);
|
|
289
|
-
// Call engine
|
|
290
|
-
const engineResult = await taskList(testDir);
|
|
291
|
-
expect(engineResult.success).toBe(true);
|
|
292
|
-
expect(engineResult.data).toBeDefined();
|
|
293
|
-
expect(engineResult.page).toEqual(coreResult.page);
|
|
294
|
-
// Same number of tasks
|
|
295
|
-
expect(engineResult.data.tasks.length).toBe(coreResult.tasks.length);
|
|
296
|
-
// Same task IDs
|
|
297
|
-
const coreIds = coreResult.tasks.map((t) => t.id).sort();
|
|
298
|
-
const engineIds = engineResult.data.tasks.map((t) => t.id).sort();
|
|
299
|
-
expect(engineIds).toEqual(coreIds);
|
|
300
|
-
});
|
|
301
|
-
it('taskList with status filter matches core listTasks filter', async () => {
|
|
302
|
-
const { listTasks } = await import('../tasks/list.js');
|
|
303
|
-
const { taskList } = await import('../../dispatch/engines/task-engine.js');
|
|
304
|
-
const { getAccessor } = await import('../store/data-accessor.js');
|
|
305
|
-
const accessor = await getAccessor(testDir);
|
|
306
|
-
// Filter pending tasks
|
|
307
|
-
const coreResult = await listTasks({ status: 'pending' }, testDir, accessor);
|
|
308
|
-
const engineResult = await taskList(testDir, { status: 'pending' });
|
|
309
|
-
expect(engineResult.success).toBe(true);
|
|
310
|
-
expect(engineResult.page).toEqual(coreResult.page);
|
|
311
|
-
const coreIds = coreResult.tasks.map((t) => t.id).sort();
|
|
312
|
-
const engineIds = engineResult.data.tasks.map((t) => t.id).sort();
|
|
313
|
-
expect(engineIds).toEqual(coreIds);
|
|
314
|
-
});
|
|
315
|
-
it('taskFind returns same results as core findTasks', async () => {
|
|
316
|
-
const { findTasks } = await import('../tasks/find.js');
|
|
317
|
-
const { taskFind } = await import('../../dispatch/engines/task-engine.js');
|
|
318
|
-
const { getAccessor } = await import('../store/data-accessor.js');
|
|
319
|
-
const accessor = await getAccessor(testDir);
|
|
320
|
-
// Search for "alpha"
|
|
321
|
-
const coreResult = await findTasks({ query: 'alpha', limit: 20 }, testDir, accessor);
|
|
322
|
-
const engineResult = await taskFind(testDir, 'alpha');
|
|
323
|
-
expect(engineResult.success).toBe(true);
|
|
324
|
-
expect(engineResult.data).toBeDefined();
|
|
325
|
-
// Both should find T001
|
|
326
|
-
const coreIds = coreResult.results.map((r) => r.id);
|
|
327
|
-
const engineIds = engineResult.data.results.map((r) => r.id);
|
|
328
|
-
expect(coreIds).toContain('T001');
|
|
329
|
-
expect(engineIds).toContain('T001');
|
|
330
|
-
});
|
|
331
|
-
it('taskCreate produces a valid task via engine', async () => {
|
|
332
|
-
const { taskCreate } = await import('../../dispatch/engines/task-engine.js');
|
|
333
|
-
// Engine create
|
|
334
|
-
const engineResult = await taskCreate(testDir, {
|
|
335
|
-
title: 'Engine-created task',
|
|
336
|
-
description: 'Created via engine for parity test',
|
|
337
|
-
});
|
|
338
|
-
expect(engineResult.success).toBe(true);
|
|
339
|
-
expect(engineResult.data).toBeDefined();
|
|
340
|
-
expect(engineResult.data.task.id).toMatch(/^T\d+$/);
|
|
341
|
-
expect(engineResult.data.task.title).toBe('Engine-created task');
|
|
342
|
-
expect(engineResult.data.task.status).toBe('pending');
|
|
343
|
-
});
|
|
344
|
-
});
|
|
345
|
-
// ============================================================================
|
|
346
|
-
// Section 3: Session Engine Delegation Verification
|
|
347
|
-
//
|
|
348
|
-
// Verifies that session-engine.ts functions delegate to core and produce
|
|
349
|
-
// structurally valid EngineResult wrappers.
|
|
350
|
-
// ============================================================================
|
|
351
|
-
describe('Session Engine Delegation (T4796)', () => {
|
|
352
|
-
let testDir;
|
|
353
|
-
let cleoDir;
|
|
354
|
-
const SESSION_TASKS_JSON = {
|
|
355
|
-
version: '2.10.0',
|
|
356
|
-
project: {
|
|
357
|
-
name: 'Session Test',
|
|
358
|
-
phases: {
|
|
359
|
-
core: { order: 1, name: 'Core', status: 'active' },
|
|
360
|
-
},
|
|
361
|
-
},
|
|
362
|
-
lastUpdated: '2026-01-01T00:00:00Z',
|
|
363
|
-
_meta: {
|
|
364
|
-
schemaVersion: '2.10.0',
|
|
365
|
-
specVersion: '0.1.0',
|
|
366
|
-
checksum: 'abc',
|
|
367
|
-
configVersion: '2.0.0',
|
|
368
|
-
},
|
|
369
|
-
focus: {
|
|
370
|
-
currentTask: null,
|
|
371
|
-
currentPhase: null,
|
|
372
|
-
},
|
|
373
|
-
tasks: [
|
|
374
|
-
{
|
|
375
|
-
id: 'T010',
|
|
376
|
-
title: 'Session test epic',
|
|
377
|
-
description: 'Epic for session testing',
|
|
378
|
-
status: 'pending',
|
|
379
|
-
priority: 'high',
|
|
380
|
-
phase: 'core',
|
|
381
|
-
type: 'epic',
|
|
382
|
-
createdAt: '2026-01-01T00:00:00Z',
|
|
383
|
-
updatedAt: null,
|
|
384
|
-
},
|
|
385
|
-
],
|
|
386
|
-
};
|
|
387
|
-
beforeEach(async () => {
|
|
388
|
-
const project = await createTestProject('cleo-sess-', SESSION_TASKS_JSON);
|
|
389
|
-
testDir = project.testDir;
|
|
390
|
-
cleoDir = project.cleoDir;
|
|
391
|
-
process.env['CLEO_DIR'] = cleoDir;
|
|
392
|
-
initLogger(cleoDir, {
|
|
393
|
-
level: 'fatal',
|
|
394
|
-
filePath: 'logs/test.log',
|
|
395
|
-
maxFileSize: 1024 * 1024,
|
|
396
|
-
maxFiles: 1,
|
|
397
|
-
});
|
|
398
|
-
});
|
|
399
|
-
afterEach(async () => {
|
|
400
|
-
await closeLogger();
|
|
401
|
-
delete process.env['CLEO_DIR'];
|
|
402
|
-
try {
|
|
403
|
-
const { closeAllDatabases } = await import('../store/sqlite.js');
|
|
404
|
-
await closeAllDatabases();
|
|
405
|
-
}
|
|
406
|
-
catch {
|
|
407
|
-
/* ignore */
|
|
408
|
-
}
|
|
409
|
-
await Promise.race([
|
|
410
|
-
rm(testDir, { recursive: true, force: true }).catch(() => { }),
|
|
411
|
-
new Promise((resolve) => setTimeout(resolve, 8_000)),
|
|
412
|
-
]);
|
|
413
|
-
});
|
|
414
|
-
it('sessionStatus returns valid EngineResult', async () => {
|
|
415
|
-
const { sessionStatus } = await import('../../dispatch/engines/session-engine.js');
|
|
416
|
-
const result = await sessionStatus(testDir);
|
|
417
|
-
expect(result.success).toBe(true);
|
|
418
|
-
expect(result.data).toBeDefined();
|
|
419
|
-
expect(typeof result.data.hasActiveSession).toBe('boolean');
|
|
420
|
-
});
|
|
421
|
-
it('sessionList returns valid EngineResult with canonical list metadata', async () => {
|
|
422
|
-
const { sessionList } = await import('../../dispatch/engines/session-engine.js');
|
|
423
|
-
const result = await sessionList(testDir);
|
|
424
|
-
expect(result.success).toBe(true);
|
|
425
|
-
expect(result.data).toBeDefined();
|
|
426
|
-
expect(Array.isArray(result.data.sessions)).toBe(true);
|
|
427
|
-
expect(typeof result.data.total).toBe('number');
|
|
428
|
-
expect(typeof result.data.filtered).toBe('number');
|
|
429
|
-
expect(result.data._meta).toBeDefined();
|
|
430
|
-
expect(typeof result.data._meta.truncated).toBe('boolean');
|
|
431
|
-
expect(typeof result.data._meta.total).toBe('number');
|
|
432
|
-
expect(result.page).toBeDefined();
|
|
433
|
-
});
|
|
434
|
-
it('sessionStart creates session and returns EngineResult', async () => {
|
|
435
|
-
const { sessionStart } = await import('../../dispatch/engines/session-engine.js');
|
|
436
|
-
const result = await sessionStart(testDir, {
|
|
437
|
-
scope: 'epic:T010',
|
|
438
|
-
name: 'Parity Test Session',
|
|
439
|
-
autoStart: true,
|
|
440
|
-
});
|
|
441
|
-
expect(result.success).toBe(true);
|
|
442
|
-
expect(result.data).toBeDefined();
|
|
443
|
-
expect(result.data.id).toMatch(/^ses_/);
|
|
444
|
-
expect(result.data.status).toBe('active');
|
|
445
|
-
expect(result.data.scope.rootTaskId).toBe('T010');
|
|
446
|
-
});
|
|
447
|
-
it('sessionStart then sessionEnd round-trip works', async () => {
|
|
448
|
-
const { sessionStart, sessionEnd, sessionStatus } = await import('../../dispatch/engines/session-engine.js');
|
|
449
|
-
// Start session
|
|
450
|
-
const startResult = await sessionStart(testDir, {
|
|
451
|
-
scope: 'epic:T010',
|
|
452
|
-
autoStart: true,
|
|
453
|
-
});
|
|
454
|
-
expect(startResult.success).toBe(true);
|
|
455
|
-
// Verify status shows active
|
|
456
|
-
const statusResult = await sessionStatus(testDir);
|
|
457
|
-
expect(statusResult.success).toBe(true);
|
|
458
|
-
expect(statusResult.data.hasActiveSession).toBe(true);
|
|
459
|
-
// End session
|
|
460
|
-
const endResult = await sessionEnd(testDir, 'Parity test done');
|
|
461
|
-
expect(endResult.success).toBe(true);
|
|
462
|
-
expect(endResult.data.ended).toBe(true);
|
|
463
|
-
});
|
|
464
|
-
it('taskStart and taskStop delegate to core/task-work/', async () => {
|
|
465
|
-
const { taskStart, taskStop, taskCurrentGet } = await import('../../dispatch/engines/session-engine.js');
|
|
466
|
-
// Start working on a task
|
|
467
|
-
const startResult = await taskStart(testDir, 'T010');
|
|
468
|
-
expect(startResult.success).toBe(true);
|
|
469
|
-
expect(startResult.data.taskId).toBe('T010');
|
|
470
|
-
// Verify current task is set
|
|
471
|
-
const currentResult = await taskCurrentGet(testDir);
|
|
472
|
-
expect(currentResult.success).toBe(true);
|
|
473
|
-
expect(currentResult.data.currentTask).toBe('T010');
|
|
474
|
-
// Stop working
|
|
475
|
-
const stopResult = await taskStop(testDir);
|
|
476
|
-
expect(stopResult.success).toBe(true);
|
|
477
|
-
expect(stopResult.data.cleared).toBe(true);
|
|
478
|
-
});
|
|
479
|
-
});
|
|
480
|
-
// ============================================================================
|
|
481
|
-
// Section 4: Lifecycle Engine Parity
|
|
482
|
-
//
|
|
483
|
-
// Verifies lifecycle-engine.ts functions produce valid EngineResult wrappers
|
|
484
|
-
// and use core lifecycle constants.
|
|
485
|
-
// ============================================================================
|
|
486
|
-
describe('Lifecycle Engine Parity (T4796)', () => {
|
|
487
|
-
let testDir;
|
|
488
|
-
let cleoDir;
|
|
489
|
-
beforeEach(async () => {
|
|
490
|
-
testDir = await mkdtemp(join(tmpdir(), 'cleo-lifecycle-'));
|
|
491
|
-
cleoDir = join(testDir, '.cleo');
|
|
492
|
-
await mkdir(cleoDir, { recursive: true });
|
|
493
|
-
await mkdir(join(cleoDir, 'rcasd', 'T100'), { recursive: true });
|
|
494
|
-
process.env['CLEO_DIR'] = cleoDir;
|
|
495
|
-
initLogger(cleoDir, {
|
|
496
|
-
level: 'fatal',
|
|
497
|
-
filePath: 'logs/test.log',
|
|
498
|
-
maxFileSize: 1024 * 1024,
|
|
499
|
-
maxFiles: 1,
|
|
500
|
-
});
|
|
501
|
-
});
|
|
502
|
-
afterEach(async () => {
|
|
503
|
-
await closeLogger();
|
|
504
|
-
delete process.env['CLEO_DIR'];
|
|
505
|
-
try {
|
|
506
|
-
const { closeAllDatabases } = await import('../store/sqlite.js');
|
|
507
|
-
await closeAllDatabases();
|
|
508
|
-
}
|
|
509
|
-
catch {
|
|
510
|
-
/* ignore */
|
|
511
|
-
}
|
|
512
|
-
await Promise.race([
|
|
513
|
-
rm(testDir, { recursive: true, force: true }).catch(() => { }),
|
|
514
|
-
new Promise((resolve) => setTimeout(resolve, 8_000)),
|
|
515
|
-
]);
|
|
516
|
-
});
|
|
517
|
-
it('lifecycle-engine uses PIPELINE_STAGES from core/lifecycle/', async () => {
|
|
518
|
-
const engineMod = await import('../../dispatch/engines/lifecycle-engine.js');
|
|
519
|
-
const coreMod = await import('../lifecycle/index.js');
|
|
520
|
-
// Engine function uses PIPELINE_STAGES from core for status
|
|
521
|
-
const result = await engineMod.lifecycleStatus('NONEXISTENT', testDir);
|
|
522
|
-
expect(result.success).toBe(true);
|
|
523
|
-
const data = result.data;
|
|
524
|
-
const engineStageNames = data.stages.map((s) => s.stage);
|
|
525
|
-
expect(engineStageNames).toEqual([...coreMod.PIPELINE_STAGES]);
|
|
526
|
-
});
|
|
527
|
-
it('lifecycleStatus returns valid result for uninitialized epic', async () => {
|
|
528
|
-
const { lifecycleStatus } = await import('../../dispatch/engines/lifecycle-engine.js');
|
|
529
|
-
const result = await lifecycleStatus('T100', testDir);
|
|
530
|
-
expect(result.success).toBe(true);
|
|
531
|
-
expect(result.data).toBeDefined();
|
|
532
|
-
const data = result.data;
|
|
533
|
-
expect(data.epicId).toBe('T100');
|
|
534
|
-
expect(data.initialized).toBe(false);
|
|
535
|
-
expect(data.nextStage).toBe('research');
|
|
536
|
-
expect(Array.isArray(data.stages)).toBe(true);
|
|
537
|
-
});
|
|
538
|
-
it('lifecycleProgress records stage and lifecycleStatus reflects it', async () => {
|
|
539
|
-
const { lifecycleProgress, lifecycleStatus } = await import('../../dispatch/engines/lifecycle-engine.js');
|
|
540
|
-
// Record research as completed
|
|
541
|
-
const progressResult = await lifecycleProgress('T100', 'research', 'completed', 'Research done', testDir);
|
|
542
|
-
expect(progressResult.success).toBe(true);
|
|
543
|
-
const progressData = progressResult.data;
|
|
544
|
-
expect(progressData.recorded).toBe(true);
|
|
545
|
-
expect(progressData.stage).toBe('research');
|
|
546
|
-
// Now check status reflects it
|
|
547
|
-
const statusResult = await lifecycleStatus('T100', testDir);
|
|
548
|
-
expect(statusResult.success).toBe(true);
|
|
549
|
-
const statusData = statusResult.data;
|
|
550
|
-
expect(statusData.initialized).toBe(true);
|
|
551
|
-
expect(statusData.currentStage).toBe('research');
|
|
552
|
-
});
|
|
553
|
-
it('lifecyclePrerequisites returns valid data', async () => {
|
|
554
|
-
const { lifecyclePrerequisites } = await import('../../dispatch/engines/lifecycle-engine.js');
|
|
555
|
-
const result = await lifecyclePrerequisites('specification', testDir);
|
|
556
|
-
expect(result.success).toBe(true);
|
|
557
|
-
const data = result.data;
|
|
558
|
-
expect(data.targetStage).toBe('specification');
|
|
559
|
-
expect(Array.isArray(data.prerequisites)).toBe(true);
|
|
560
|
-
});
|
|
561
|
-
it('lifecycleCheck validates prerequisites correctly', async () => {
|
|
562
|
-
const { lifecycleCheck, lifecycleProgress } = await import('../../dispatch/engines/lifecycle-engine.js');
|
|
563
|
-
// Check specification without completing research
|
|
564
|
-
const checkResult = await lifecycleCheck('T100', 'specification', testDir);
|
|
565
|
-
expect(checkResult.success).toBe(true);
|
|
566
|
-
const checkData = checkResult.data;
|
|
567
|
-
// specification requires research (at minimum), so should not be valid
|
|
568
|
-
expect(checkData.valid).toBe(false);
|
|
569
|
-
expect(checkData.missingPrerequisites.length).toBeGreaterThan(0);
|
|
570
|
-
// Complete research
|
|
571
|
-
await lifecycleProgress('T100', 'research', 'completed', 'Done', testDir);
|
|
572
|
-
// Now the gate for consensus should be valid
|
|
573
|
-
const checkAfter = await lifecycleCheck('T100', 'consensus', testDir);
|
|
574
|
-
expect(checkAfter.success).toBe(true);
|
|
575
|
-
const afterData = checkAfter.data;
|
|
576
|
-
expect(afterData.valid).toBe(true);
|
|
577
|
-
});
|
|
578
|
-
it('lifecycleSkip records skip with reason', async () => {
|
|
579
|
-
const { lifecycleSkip, lifecycleHistory } = await import('../../dispatch/engines/lifecycle-engine.js');
|
|
580
|
-
const skipResult = await lifecycleSkip('T100', 'consensus', 'Solo developer, no consensus needed', testDir);
|
|
581
|
-
expect(skipResult.success).toBe(true);
|
|
582
|
-
const skipData = skipResult.data;
|
|
583
|
-
expect(skipData.skipped).toBe(true);
|
|
584
|
-
// History should include the skip
|
|
585
|
-
const histResult = await lifecycleHistory('T100', testDir);
|
|
586
|
-
expect(histResult.success).toBe(true);
|
|
587
|
-
const histData = histResult.data;
|
|
588
|
-
const skipEntry = histData.history.find((h) => h.stage === 'consensus' && h.action === 'skipped');
|
|
589
|
-
expect(skipEntry).toBeDefined();
|
|
590
|
-
});
|
|
591
|
-
});
|
|
592
|
-
// ============================================================================
|
|
593
|
-
// Section 5: EngineResult Wrapper Consistency
|
|
594
|
-
//
|
|
595
|
-
// Verifies that all engine functions return properly structured EngineResult
|
|
596
|
-
// objects with consistent shape.
|
|
597
|
-
// ============================================================================
|
|
598
|
-
describe('EngineResult Wrapper Consistency (T4796)', () => {
|
|
599
|
-
/**
|
|
600
|
-
* Verify EngineResult shape: { success, data?, error? }
|
|
601
|
-
*/
|
|
602
|
-
function assertEngineResult(result) {
|
|
603
|
-
expect(result).toBeDefined();
|
|
604
|
-
const r = result;
|
|
605
|
-
expect(typeof r.success).toBe('boolean');
|
|
606
|
-
if (r.success) {
|
|
607
|
-
expect(r.data).toBeDefined();
|
|
608
|
-
// success results should not have error
|
|
609
|
-
expect(r.error).toBeUndefined();
|
|
610
|
-
}
|
|
611
|
-
else {
|
|
612
|
-
expect(r.error).toBeDefined();
|
|
613
|
-
const err = r.error;
|
|
614
|
-
expect(typeof err.code).toBe('string');
|
|
615
|
-
expect(typeof err.message).toBe('string');
|
|
616
|
-
}
|
|
617
|
-
}
|
|
618
|
-
it('task engine error results have E_ prefixed codes', async () => {
|
|
619
|
-
const { taskShow } = await import('../../dispatch/engines/task-engine.js');
|
|
620
|
-
// This will fail because no project dir is set up
|
|
621
|
-
const result = await taskShow('/nonexistent', 'T999');
|
|
622
|
-
assertEngineResult(result);
|
|
623
|
-
if (!result.success) {
|
|
624
|
-
expect(result.error.code).toMatch(/^E_/);
|
|
625
|
-
}
|
|
626
|
-
});
|
|
627
|
-
it('session engine error results have E_ prefixed codes', async () => {
|
|
628
|
-
const { sessionStatus } = await import('../../dispatch/engines/session-engine.js');
|
|
629
|
-
const result = await sessionStatus('/nonexistent');
|
|
630
|
-
assertEngineResult(result);
|
|
631
|
-
if (!result.success) {
|
|
632
|
-
expect(result.error.code).toMatch(/^E_/);
|
|
633
|
-
}
|
|
634
|
-
});
|
|
635
|
-
it('lifecycle engine error results have E_ prefixed codes', async () => {
|
|
636
|
-
const { lifecycleStatus } = await import('../../dispatch/engines/lifecycle-engine.js');
|
|
637
|
-
// Empty epicId should fail
|
|
638
|
-
const result = await lifecycleStatus('');
|
|
639
|
-
assertEngineResult(result);
|
|
640
|
-
if (!result.success) {
|
|
641
|
-
expect(result.error.code).toMatch(/^E_/);
|
|
642
|
-
}
|
|
643
|
-
});
|
|
644
|
-
});
|
|
645
|
-
//# sourceMappingURL=core-parity.test.js.map
|