@cleocode/core 2026.4.6 → 2026.4.9

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.
Files changed (647) hide show
  1. package/package.json +7 -7
  2. package/dist/cant/approval.d.ts +0 -110
  3. package/dist/cant/approval.d.ts.map +0 -1
  4. package/dist/cant/context-builder.d.ts +0 -79
  5. package/dist/cant/context-builder.d.ts.map +0 -1
  6. package/dist/cant/discretion.d.ts +0 -95
  7. package/dist/cant/discretion.d.ts.map +0 -1
  8. package/dist/cant/index.d.ts +0 -25
  9. package/dist/cant/index.d.ts.map +0 -1
  10. package/dist/cant/parallel-runner.d.ts +0 -38
  11. package/dist/cant/parallel-runner.d.ts.map +0 -1
  12. package/dist/cant/types.d.ts +0 -127
  13. package/dist/cant/types.d.ts.map +0 -1
  14. package/dist/cant/workflow-executor.d.ts +0 -105
  15. package/dist/cant/workflow-executor.d.ts.map +0 -1
  16. package/src/__tests__/audit-prune.test.d.ts.map +0 -1
  17. package/src/__tests__/audit-prune.test.js +0 -162
  18. package/src/__tests__/audit-prune.test.js.map +0 -1
  19. package/src/__tests__/caamp-skill-install.test.d.ts.map +0 -1
  20. package/src/__tests__/caamp-skill-install.test.js +0 -147
  21. package/src/__tests__/caamp-skill-install.test.js.map +0 -1
  22. package/src/__tests__/cli-parity.test.d.ts.map +0 -1
  23. package/src/__tests__/cli-parity.test.js +0 -209
  24. package/src/__tests__/cli-parity.test.js.map +0 -1
  25. package/src/__tests__/config.test.d.ts.map +0 -1
  26. package/src/__tests__/config.test.js +0 -144
  27. package/src/__tests__/config.test.js.map +0 -1
  28. package/src/__tests__/core-parity.test.d.ts.map +0 -1
  29. package/src/__tests__/core-parity.test.js +0 -645
  30. package/src/__tests__/core-parity.test.js.map +0 -1
  31. package/src/__tests__/error-catalog.test.d.ts.map +0 -1
  32. package/src/__tests__/error-catalog.test.js +0 -127
  33. package/src/__tests__/error-catalog.test.js.map +0 -1
  34. package/src/__tests__/golden-parity.test.d.ts.map +0 -1
  35. package/src/__tests__/golden-parity.test.js +0 -212
  36. package/src/__tests__/golden-parity.test.js.map +0 -1
  37. package/src/__tests__/hooks.test.d.ts.map +0 -1
  38. package/src/__tests__/hooks.test.js +0 -201
  39. package/src/__tests__/hooks.test.js.map +0 -1
  40. package/src/__tests__/human-output.test.d.ts.map +0 -1
  41. package/src/__tests__/human-output.test.js +0 -158
  42. package/src/__tests__/human-output.test.js.map +0 -1
  43. package/src/__tests__/index-api-compat.test.d.ts.map +0 -1
  44. package/src/__tests__/index-api-compat.test.js +0 -16
  45. package/src/__tests__/index-api-compat.test.js.map +0 -1
  46. package/src/__tests__/init-e2e.test.d.ts.map +0 -1
  47. package/src/__tests__/init-e2e.test.js +0 -221
  48. package/src/__tests__/init-e2e.test.js.map +0 -1
  49. package/src/__tests__/injection-chain.test.d.ts.map +0 -1
  50. package/src/__tests__/injection-chain.test.js +0 -234
  51. package/src/__tests__/injection-chain.test.js.map +0 -1
  52. package/src/__tests__/injection-mvi-tiers.test.d.ts.map +0 -1
  53. package/src/__tests__/injection-mvi-tiers.test.js +0 -116
  54. package/src/__tests__/injection-mvi-tiers.test.js.map +0 -1
  55. package/src/__tests__/injection-shared.test.d.ts.map +0 -1
  56. package/src/__tests__/injection-shared.test.js +0 -194
  57. package/src/__tests__/injection-shared.test.js.map +0 -1
  58. package/src/__tests__/lafs-conformance.test.d.ts.map +0 -1
  59. package/src/__tests__/lafs-conformance.test.js +0 -786
  60. package/src/__tests__/lafs-conformance.test.js.map +0 -1
  61. package/src/__tests__/logger.test.d.ts.map +0 -1
  62. package/src/__tests__/logger.test.js +0 -75
  63. package/src/__tests__/logger.test.js.map +0 -1
  64. package/src/__tests__/paths.test.d.ts.map +0 -1
  65. package/src/__tests__/paths.test.js +0 -327
  66. package/src/__tests__/paths.test.js.map +0 -1
  67. package/src/__tests__/project-info.test.d.ts.map +0 -1
  68. package/src/__tests__/project-info.test.js +0 -156
  69. package/src/__tests__/project-info.test.js.map +0 -1
  70. package/src/__tests__/rcsd-pipeline-e2e.test.d.ts.map +0 -1
  71. package/src/__tests__/rcsd-pipeline-e2e.test.js +0 -263
  72. package/src/__tests__/rcsd-pipeline-e2e.test.js.map +0 -1
  73. package/src/__tests__/remote.test.d.ts.map +0 -1
  74. package/src/__tests__/remote.test.js +0 -149
  75. package/src/__tests__/remote.test.js.map +0 -1
  76. package/src/__tests__/scaffold.test.d.ts.map +0 -1
  77. package/src/__tests__/scaffold.test.js +0 -474
  78. package/src/__tests__/scaffold.test.js.map +0 -1
  79. package/src/__tests__/schema-management.test.d.ts.map +0 -1
  80. package/src/__tests__/schema-management.test.js +0 -287
  81. package/src/__tests__/schema-management.test.js.map +0 -1
  82. package/src/__tests__/schema.test.d.ts.map +0 -1
  83. package/src/__tests__/schema.test.js +0 -51
  84. package/src/__tests__/schema.test.js.map +0 -1
  85. package/src/__tests__/sharing.test.d.ts.map +0 -1
  86. package/src/__tests__/sharing.test.js +0 -160
  87. package/src/__tests__/sharing.test.js.map +0 -1
  88. package/src/__tests__/snapshot.test.d.ts.map +0 -1
  89. package/src/__tests__/snapshot.test.js +0 -72
  90. package/src/__tests__/snapshot.test.js.map +0 -1
  91. package/src/__tests__/upgrade.test.d.ts.map +0 -1
  92. package/src/__tests__/upgrade.test.js +0 -321
  93. package/src/__tests__/upgrade.test.js.map +0 -1
  94. package/src/adapters/__tests__/discovery.test.d.ts.map +0 -1
  95. package/src/adapters/__tests__/discovery.test.js +0 -56
  96. package/src/adapters/__tests__/discovery.test.js.map +0 -1
  97. package/src/adapters/__tests__/manager.test.d.ts.map +0 -1
  98. package/src/adapters/__tests__/manager.test.js +0 -260
  99. package/src/adapters/__tests__/manager.test.js.map +0 -1
  100. package/src/agents/__tests__/agent-registry.test.d.ts.map +0 -1
  101. package/src/agents/__tests__/agent-registry.test.js +0 -262
  102. package/src/agents/__tests__/agent-registry.test.js.map +0 -1
  103. package/src/agents/__tests__/capacity.test.d.ts.map +0 -1
  104. package/src/agents/__tests__/capacity.test.js +0 -173
  105. package/src/agents/__tests__/capacity.test.js.map +0 -1
  106. package/src/agents/__tests__/execution-learning.test.d.ts.map +0 -1
  107. package/src/agents/__tests__/execution-learning.test.js +0 -533
  108. package/src/agents/__tests__/execution-learning.test.js.map +0 -1
  109. package/src/agents/__tests__/health-monitor.test.d.ts.map +0 -1
  110. package/src/agents/__tests__/health-monitor.test.js +0 -259
  111. package/src/agents/__tests__/health-monitor.test.js.map +0 -1
  112. package/src/agents/__tests__/registry.test.d.ts.map +0 -1
  113. package/src/agents/__tests__/registry.test.js +0 -373
  114. package/src/agents/__tests__/registry.test.js.map +0 -1
  115. package/src/agents/__tests__/retry.test.d.ts.map +0 -1
  116. package/src/agents/__tests__/retry.test.js +0 -225
  117. package/src/agents/__tests__/retry.test.js.map +0 -1
  118. package/src/cant/__tests__/cant-agent-parse.test.d.ts.map +0 -1
  119. package/src/cant/__tests__/cant-agent-parse.test.js +0 -77
  120. package/src/cant/__tests__/cant-agent-parse.test.js.map +0 -1
  121. package/src/cant/__tests__/cant-agent-parse.test.ts +0 -94
  122. package/src/cant/approval.ts +0 -218
  123. package/src/cant/context-builder.ts +0 -135
  124. package/src/cant/discretion.ts +0 -149
  125. package/src/cant/index.ts +0 -58
  126. package/src/cant/parallel-runner.ts +0 -205
  127. package/src/cant/types.ts +0 -158
  128. package/src/cant/workflow-executor.ts +0 -618
  129. package/src/compliance/__tests__/sync.test.d.ts.map +0 -1
  130. package/src/compliance/__tests__/sync.test.js +0 -119
  131. package/src/compliance/__tests__/sync.test.js.map +0 -1
  132. package/src/conduit/__tests__/local-credential-flow.test.d.ts.map +0 -1
  133. package/src/conduit/__tests__/local-credential-flow.test.js +0 -185
  134. package/src/conduit/__tests__/local-credential-flow.test.js.map +0 -1
  135. package/src/conduit/__tests__/local-transport.test.d.ts.map +0 -1
  136. package/src/conduit/__tests__/local-transport.test.js +0 -404
  137. package/src/conduit/__tests__/local-transport.test.js.map +0 -1
  138. package/src/conduit/__tests__/sse-transport.test.d.ts.map +0 -1
  139. package/src/conduit/__tests__/sse-transport.test.js +0 -291
  140. package/src/conduit/__tests__/sse-transport.test.js.map +0 -1
  141. package/src/hooks/__tests__/provider-hooks.test.d.ts.map +0 -1
  142. package/src/hooks/__tests__/provider-hooks.test.js +0 -33
  143. package/src/hooks/__tests__/provider-hooks.test.js.map +0 -1
  144. package/src/hooks/__tests__/registry.test.d.ts.map +0 -1
  145. package/src/hooks/__tests__/registry.test.js +0 -37
  146. package/src/hooks/__tests__/registry.test.js.map +0 -1
  147. package/src/hooks/handlers/__tests__/error-hooks.test.d.ts.map +0 -1
  148. package/src/hooks/handlers/__tests__/error-hooks.test.js +0 -90
  149. package/src/hooks/handlers/__tests__/error-hooks.test.js.map +0 -1
  150. package/src/hooks/handlers/__tests__/file-hooks.test.d.ts.map +0 -1
  151. package/src/hooks/handlers/__tests__/file-hooks.test.js +0 -128
  152. package/src/hooks/handlers/__tests__/file-hooks.test.js.map +0 -1
  153. package/src/hooks/handlers/__tests__/hook-automation-e2e.test.d.ts.map +0 -1
  154. package/src/hooks/handlers/__tests__/hook-automation-e2e.test.js +0 -503
  155. package/src/hooks/handlers/__tests__/hook-automation-e2e.test.js.map +0 -1
  156. package/src/hooks/handlers/__tests__/session-hooks.test.d.ts.map +0 -1
  157. package/src/hooks/handlers/__tests__/session-hooks.test.js +0 -54
  158. package/src/hooks/handlers/__tests__/session-hooks.test.js.map +0 -1
  159. package/src/hooks/handlers/__tests__/task-hooks.test.d.ts.map +0 -1
  160. package/src/hooks/handlers/__tests__/task-hooks.test.js +0 -77
  161. package/src/hooks/handlers/__tests__/task-hooks.test.js.map +0 -1
  162. package/src/intelligence/__tests__/adaptive-validation.test.d.ts.map +0 -1
  163. package/src/intelligence/__tests__/adaptive-validation.test.js +0 -517
  164. package/src/intelligence/__tests__/adaptive-validation.test.js.map +0 -1
  165. package/src/intelligence/__tests__/impact.test.d.ts.map +0 -1
  166. package/src/intelligence/__tests__/impact.test.js +0 -515
  167. package/src/intelligence/__tests__/impact.test.js.map +0 -1
  168. package/src/intelligence/__tests__/patterns.test.d.ts.map +0 -1
  169. package/src/intelligence/__tests__/patterns.test.js +0 -370
  170. package/src/intelligence/__tests__/patterns.test.js.map +0 -1
  171. package/src/intelligence/__tests__/prediction.test.d.ts.map +0 -1
  172. package/src/intelligence/__tests__/prediction.test.js +0 -314
  173. package/src/intelligence/__tests__/prediction.test.js.map +0 -1
  174. package/src/lib/__tests__/retry.test.d.ts.map +0 -1
  175. package/src/lib/__tests__/retry.test.js +0 -225
  176. package/src/lib/__tests__/retry.test.js.map +0 -1
  177. package/src/lifecycle/__tests__/chain-store.test.d.ts.map +0 -1
  178. package/src/lifecycle/__tests__/chain-store.test.js +0 -243
  179. package/src/lifecycle/__tests__/chain-store.test.js.map +0 -1
  180. package/src/lifecycle/__tests__/consolidate-rcasd.test.d.ts.map +0 -1
  181. package/src/lifecycle/__tests__/consolidate-rcasd.test.js +0 -210
  182. package/src/lifecycle/__tests__/consolidate-rcasd.test.js.map +0 -1
  183. package/src/lifecycle/__tests__/default-chain.test.d.ts.map +0 -1
  184. package/src/lifecycle/__tests__/default-chain.test.js +0 -74
  185. package/src/lifecycle/__tests__/default-chain.test.js.map +0 -1
  186. package/src/lifecycle/__tests__/frontmatter.test.d.ts.map +0 -1
  187. package/src/lifecycle/__tests__/frontmatter.test.js +0 -229
  188. package/src/lifecycle/__tests__/frontmatter.test.js.map +0 -1
  189. package/src/lifecycle/__tests__/lifecycle.test.d.ts.map +0 -1
  190. package/src/lifecycle/__tests__/lifecycle.test.js +0 -126
  191. package/src/lifecycle/__tests__/lifecycle.test.js.map +0 -1
  192. package/src/lifecycle/__tests__/pipeline.integration.test.d.ts.map +0 -1
  193. package/src/lifecycle/__tests__/pipeline.integration.test.js +0 -977
  194. package/src/lifecycle/__tests__/pipeline.integration.test.js.map +0 -1
  195. package/src/lifecycle/__tests__/rcasd-paths.test.d.ts.map +0 -1
  196. package/src/lifecycle/__tests__/rcasd-paths.test.js +0 -206
  197. package/src/lifecycle/__tests__/rcasd-paths.test.js.map +0 -1
  198. package/src/lifecycle/__tests__/resume-schema-contract.test.d.ts.map +0 -1
  199. package/src/lifecycle/__tests__/resume-schema-contract.test.js +0 -246
  200. package/src/lifecycle/__tests__/resume-schema-contract.test.js.map +0 -1
  201. package/src/lifecycle/__tests__/stage-record-provenance.integration.test.d.ts.map +0 -1
  202. package/src/lifecycle/__tests__/stage-record-provenance.integration.test.js +0 -95
  203. package/src/lifecycle/__tests__/stage-record-provenance.integration.test.js.map +0 -1
  204. package/src/lifecycle/__tests__/tessera-engine.test.d.ts.map +0 -1
  205. package/src/lifecycle/__tests__/tessera-engine.test.js +0 -392
  206. package/src/lifecycle/__tests__/tessera-engine.test.js.map +0 -1
  207. package/src/memory/__tests__/auto-extract.test.d.ts.map +0 -1
  208. package/src/memory/__tests__/auto-extract.test.js +0 -197
  209. package/src/memory/__tests__/auto-extract.test.js.map +0 -1
  210. package/src/memory/__tests__/brain-automation.test.d.ts.map +0 -1
  211. package/src/memory/__tests__/brain-automation.test.js +0 -730
  212. package/src/memory/__tests__/brain-automation.test.js.map +0 -1
  213. package/src/memory/__tests__/brain-embedding.test.d.ts.map +0 -1
  214. package/src/memory/__tests__/brain-embedding.test.js +0 -92
  215. package/src/memory/__tests__/brain-embedding.test.js.map +0 -1
  216. package/src/memory/__tests__/brain-links.test.d.ts.map +0 -1
  217. package/src/memory/__tests__/brain-links.test.js +0 -221
  218. package/src/memory/__tests__/brain-links.test.js.map +0 -1
  219. package/src/memory/__tests__/brain-migration.test.d.ts.map +0 -1
  220. package/src/memory/__tests__/brain-migration.test.js +0 -180
  221. package/src/memory/__tests__/brain-migration.test.js.map +0 -1
  222. package/src/memory/__tests__/brain-retrieval.test.d.ts.map +0 -1
  223. package/src/memory/__tests__/brain-retrieval.test.js +0 -701
  224. package/src/memory/__tests__/brain-retrieval.test.js.map +0 -1
  225. package/src/memory/__tests__/brain-search.test.d.ts.map +0 -1
  226. package/src/memory/__tests__/brain-search.test.js +0 -180
  227. package/src/memory/__tests__/brain-search.test.js.map +0 -1
  228. package/src/memory/__tests__/claude-mem-migration.test.d.ts.map +0 -1
  229. package/src/memory/__tests__/claude-mem-migration.test.js +0 -424
  230. package/src/memory/__tests__/claude-mem-migration.test.js.map +0 -1
  231. package/src/memory/__tests__/decisions.test.d.ts.map +0 -1
  232. package/src/memory/__tests__/decisions.test.js +0 -253
  233. package/src/memory/__tests__/decisions.test.js.map +0 -1
  234. package/src/memory/__tests__/engine-compat.test.d.ts.map +0 -1
  235. package/src/memory/__tests__/engine-compat.test.js +0 -331
  236. package/src/memory/__tests__/engine-compat.test.js.map +0 -1
  237. package/src/memory/__tests__/memory-bridge.test.d.ts.map +0 -1
  238. package/src/memory/__tests__/memory-bridge.test.js +0 -231
  239. package/src/memory/__tests__/memory-bridge.test.js.map +0 -1
  240. package/src/memory/__tests__/pipeline-manifest-sqlite.test.d.ts.map +0 -1
  241. package/src/memory/__tests__/pipeline-manifest-sqlite.test.js +0 -516
  242. package/src/memory/__tests__/pipeline-manifest-sqlite.test.js.map +0 -1
  243. package/src/memory/__tests__/session-memory.test.d.ts.map +0 -1
  244. package/src/memory/__tests__/session-memory.test.js +0 -387
  245. package/src/memory/__tests__/session-memory.test.js.map +0 -1
  246. package/src/metrics/__tests__/model-provider-registry.test.d.ts.map +0 -1
  247. package/src/metrics/__tests__/model-provider-registry.test.js +0 -45
  248. package/src/metrics/__tests__/model-provider-registry.test.js.map +0 -1
  249. package/src/metrics/__tests__/provider-detection.test.d.ts.map +0 -1
  250. package/src/metrics/__tests__/provider-detection.test.js +0 -123
  251. package/src/metrics/__tests__/provider-detection.test.js.map +0 -1
  252. package/src/migration/__tests__/checksum.test.d.ts.map +0 -1
  253. package/src/migration/__tests__/checksum.test.js +0 -216
  254. package/src/migration/__tests__/checksum.test.js.map +0 -1
  255. package/src/migration/__tests__/logger.test.d.ts.map +0 -1
  256. package/src/migration/__tests__/logger.test.js +0 -256
  257. package/src/migration/__tests__/logger.test.js.map +0 -1
  258. package/src/migration/__tests__/migration-failure.integration.test.d.ts.map +0 -1
  259. package/src/migration/__tests__/migration-failure.integration.test.js +0 -515
  260. package/src/migration/__tests__/migration-failure.integration.test.js.map +0 -1
  261. package/src/migration/__tests__/migration.test.d.ts.map +0 -1
  262. package/src/migration/__tests__/migration.test.js +0 -82
  263. package/src/migration/__tests__/migration.test.js.map +0 -1
  264. package/src/migration/__tests__/state.test.d.ts.map +0 -1
  265. package/src/migration/__tests__/state.test.js +0 -330
  266. package/src/migration/__tests__/state.test.js.map +0 -1
  267. package/src/migration/__tests__/validate.test.d.ts.map +0 -1
  268. package/src/migration/__tests__/validate.test.js +0 -258
  269. package/src/migration/__tests__/validate.test.js.map +0 -1
  270. package/src/nexus/__tests__/deps.test.d.ts.map +0 -1
  271. package/src/nexus/__tests__/deps.test.js +0 -283
  272. package/src/nexus/__tests__/deps.test.js.map +0 -1
  273. package/src/nexus/__tests__/nexus-e2e.test.d.ts.map +0 -1
  274. package/src/nexus/__tests__/nexus-e2e.test.js +0 -1220
  275. package/src/nexus/__tests__/nexus-e2e.test.js.map +0 -1
  276. package/src/nexus/__tests__/permissions.test.d.ts.map +0 -1
  277. package/src/nexus/__tests__/permissions.test.js +0 -119
  278. package/src/nexus/__tests__/permissions.test.js.map +0 -1
  279. package/src/nexus/__tests__/query.test.d.ts.map +0 -1
  280. package/src/nexus/__tests__/query.test.js +0 -168
  281. package/src/nexus/__tests__/query.test.js.map +0 -1
  282. package/src/nexus/__tests__/reconcile.test.d.ts.map +0 -1
  283. package/src/nexus/__tests__/reconcile.test.js +0 -135
  284. package/src/nexus/__tests__/reconcile.test.js.map +0 -1
  285. package/src/nexus/__tests__/registry.test.d.ts.map +0 -1
  286. package/src/nexus/__tests__/registry.test.js +0 -229
  287. package/src/nexus/__tests__/registry.test.js.map +0 -1
  288. package/src/nexus/__tests__/transfer.test.d.ts.map +0 -1
  289. package/src/nexus/__tests__/transfer.test.js +0 -372
  290. package/src/nexus/__tests__/transfer.test.js.map +0 -1
  291. package/src/observability/__tests__/index.test.d.ts.map +0 -1
  292. package/src/observability/__tests__/index.test.js +0 -288
  293. package/src/observability/__tests__/index.test.js.map +0 -1
  294. package/src/observability/__tests__/log-filter.test.d.ts.map +0 -1
  295. package/src/observability/__tests__/log-filter.test.js +0 -151
  296. package/src/observability/__tests__/log-filter.test.js.map +0 -1
  297. package/src/observability/__tests__/log-parser.test.d.ts.map +0 -1
  298. package/src/observability/__tests__/log-parser.test.js +0 -170
  299. package/src/observability/__tests__/log-parser.test.js.map +0 -1
  300. package/src/observability/__tests__/log-reader.test.d.ts.map +0 -1
  301. package/src/observability/__tests__/log-reader.test.js +0 -150
  302. package/src/observability/__tests__/log-reader.test.js.map +0 -1
  303. package/src/orchestration/__tests__/autonomous-spec.test.d.ts.map +0 -1
  304. package/src/orchestration/__tests__/autonomous-spec.test.js +0 -419
  305. package/src/orchestration/__tests__/autonomous-spec.test.js.map +0 -1
  306. package/src/orchestration/__tests__/orchestration.test.d.ts.map +0 -1
  307. package/src/orchestration/__tests__/orchestration.test.js +0 -205
  308. package/src/orchestration/__tests__/orchestration.test.js.map +0 -1
  309. package/src/orchestration/__tests__/protocol-validators.test.d.ts.map +0 -1
  310. package/src/orchestration/__tests__/protocol-validators.test.js +0 -602
  311. package/src/orchestration/__tests__/protocol-validators.test.js.map +0 -1
  312. package/src/phases/__tests__/deps.test.d.ts.map +0 -1
  313. package/src/phases/__tests__/deps.test.js +0 -210
  314. package/src/phases/__tests__/deps.test.js.map +0 -1
  315. package/src/phases/__tests__/phases.test.d.ts.map +0 -1
  316. package/src/phases/__tests__/phases.test.js +0 -215
  317. package/src/phases/__tests__/phases.test.js.map +0 -1
  318. package/src/release/__tests__/artifacts.test.d.ts.map +0 -1
  319. package/src/release/__tests__/artifacts.test.js +0 -65
  320. package/src/release/__tests__/artifacts.test.js.map +0 -1
  321. package/src/release/__tests__/cancel-release.test.d.ts.map +0 -1
  322. package/src/release/__tests__/cancel-release.test.js +0 -154
  323. package/src/release/__tests__/cancel-release.test.js.map +0 -1
  324. package/src/release/__tests__/changelog-writer.test.d.ts.map +0 -1
  325. package/src/release/__tests__/changelog-writer.test.js +0 -132
  326. package/src/release/__tests__/changelog-writer.test.js.map +0 -1
  327. package/src/release/__tests__/push-policy.test.d.ts.map +0 -1
  328. package/src/release/__tests__/push-policy.test.js +0 -142
  329. package/src/release/__tests__/push-policy.test.js.map +0 -1
  330. package/src/release/__tests__/release.test.d.ts.map +0 -1
  331. package/src/release/__tests__/release.test.js +0 -25
  332. package/src/release/__tests__/release.test.js.map +0 -1
  333. package/src/sequence/__tests__/allocate.test.d.ts.map +0 -1
  334. package/src/sequence/__tests__/allocate.test.js +0 -113
  335. package/src/sequence/__tests__/allocate.test.js.map +0 -1
  336. package/src/sessions/__tests__/briefing-blocked.test.d.ts.map +0 -1
  337. package/src/sessions/__tests__/briefing-blocked.test.js +0 -117
  338. package/src/sessions/__tests__/briefing-blocked.test.js.map +0 -1
  339. package/src/sessions/__tests__/briefing.test.d.ts.map +0 -1
  340. package/src/sessions/__tests__/briefing.test.js +0 -336
  341. package/src/sessions/__tests__/briefing.test.js.map +0 -1
  342. package/src/sessions/__tests__/handoff-integration.test.d.ts.map +0 -1
  343. package/src/sessions/__tests__/handoff-integration.test.js +0 -264
  344. package/src/sessions/__tests__/handoff-integration.test.js.map +0 -1
  345. package/src/sessions/__tests__/handoff.test.d.ts.map +0 -1
  346. package/src/sessions/__tests__/handoff.test.js +0 -435
  347. package/src/sessions/__tests__/handoff.test.js.map +0 -1
  348. package/src/sessions/__tests__/index.test.d.ts.map +0 -1
  349. package/src/sessions/__tests__/index.test.js +0 -82
  350. package/src/sessions/__tests__/index.test.js.map +0 -1
  351. package/src/sessions/__tests__/session-cleanup.test.d.ts.map +0 -1
  352. package/src/sessions/__tests__/session-cleanup.test.js +0 -201
  353. package/src/sessions/__tests__/session-cleanup.test.js.map +0 -1
  354. package/src/sessions/__tests__/session-edge-cases.test.d.ts.map +0 -1
  355. package/src/sessions/__tests__/session-edge-cases.test.js +0 -251
  356. package/src/sessions/__tests__/session-edge-cases.test.js.map +0 -1
  357. package/src/sessions/__tests__/session-find.test.d.ts.map +0 -1
  358. package/src/sessions/__tests__/session-find.test.js +0 -210
  359. package/src/sessions/__tests__/session-find.test.js.map +0 -1
  360. package/src/sessions/__tests__/session-grade.integration.test.d.ts.map +0 -1
  361. package/src/sessions/__tests__/session-grade.integration.test.js +0 -287
  362. package/src/sessions/__tests__/session-grade.integration.test.js.map +0 -1
  363. package/src/sessions/__tests__/session-grade.test.d.ts.map +0 -1
  364. package/src/sessions/__tests__/session-grade.test.js +0 -630
  365. package/src/sessions/__tests__/session-grade.test.js.map +0 -1
  366. package/src/sessions/__tests__/session-memory-bridge.test.d.ts.map +0 -1
  367. package/src/sessions/__tests__/session-memory-bridge.test.js +0 -52
  368. package/src/sessions/__tests__/session-memory-bridge.test.js.map +0 -1
  369. package/src/sessions/__tests__/sessions.test.d.ts.map +0 -1
  370. package/src/sessions/__tests__/sessions.test.js +0 -113
  371. package/src/sessions/__tests__/sessions.test.js.map +0 -1
  372. package/src/skills/__tests__/discovery.test.d.ts.map +0 -1
  373. package/src/skills/__tests__/discovery.test.js +0 -171
  374. package/src/skills/__tests__/discovery.test.js.map +0 -1
  375. package/src/skills/__tests__/dispatch.test.d.ts.map +0 -1
  376. package/src/skills/__tests__/dispatch.test.js +0 -99
  377. package/src/skills/__tests__/dispatch.test.js.map +0 -1
  378. package/src/skills/__tests__/dynamic-skill-generator.test.d.ts.map +0 -1
  379. package/src/skills/__tests__/dynamic-skill-generator.test.js +0 -77
  380. package/src/skills/__tests__/dynamic-skill-generator.test.js.map +0 -1
  381. package/src/skills/__tests__/manifests.test.d.ts.map +0 -1
  382. package/src/skills/__tests__/manifests.test.js +0 -121
  383. package/src/skills/__tests__/manifests.test.js.map +0 -1
  384. package/src/skills/__tests__/precedence.test.d.ts.map +0 -1
  385. package/src/skills/__tests__/precedence.test.js +0 -325
  386. package/src/skills/__tests__/precedence.test.js.map +0 -1
  387. package/src/skills/__tests__/routing-table.test.d.ts.map +0 -1
  388. package/src/skills/__tests__/routing-table.test.js +0 -91
  389. package/src/skills/__tests__/routing-table.test.js.map +0 -1
  390. package/src/skills/__tests__/skill-paths.test.d.ts.map +0 -1
  391. package/src/skills/__tests__/skill-paths.test.js +0 -71
  392. package/src/skills/__tests__/skill-paths.test.js.map +0 -1
  393. package/src/skills/__tests__/test-utility.test.d.ts.map +0 -1
  394. package/src/skills/__tests__/test-utility.test.js +0 -59
  395. package/src/skills/__tests__/test-utility.test.js.map +0 -1
  396. package/src/skills/__tests__/token.test.d.ts.map +0 -1
  397. package/src/skills/__tests__/token.test.js +0 -135
  398. package/src/skills/__tests__/token.test.js.map +0 -1
  399. package/src/skills/__tests__/validation.test.d.ts.map +0 -1
  400. package/src/skills/__tests__/validation.test.js +0 -108
  401. package/src/skills/__tests__/validation.test.js.map +0 -1
  402. package/src/skills/__tests__/version.test.d.ts.map +0 -1
  403. package/src/skills/__tests__/version.test.js +0 -71
  404. package/src/skills/__tests__/version.test.js.map +0 -1
  405. package/src/skills/injection/__tests__/subagent.test.d.ts.map +0 -1
  406. package/src/skills/injection/__tests__/subagent.test.js +0 -122
  407. package/src/skills/injection/__tests__/subagent.test.js.map +0 -1
  408. package/src/skills/orchestrator/__tests__/spawn-tier.test.d.ts.map +0 -1
  409. package/src/skills/orchestrator/__tests__/spawn-tier.test.js +0 -228
  410. package/src/skills/orchestrator/__tests__/spawn-tier.test.js.map +0 -1
  411. package/src/spawn/__tests__/adapter-registry.test.d.ts.map +0 -1
  412. package/src/spawn/__tests__/adapter-registry.test.js +0 -76
  413. package/src/spawn/__tests__/adapter-registry.test.js.map +0 -1
  414. package/src/stats/__tests__/stats.test.d.ts.map +0 -1
  415. package/src/stats/__tests__/stats.test.js +0 -374
  416. package/src/stats/__tests__/stats.test.js.map +0 -1
  417. package/src/sticky/__tests__/purge.test.d.ts.map +0 -1
  418. package/src/sticky/__tests__/purge.test.js +0 -64
  419. package/src/sticky/__tests__/purge.test.js.map +0 -1
  420. package/src/store/__tests__/atomic.test.d.ts.map +0 -1
  421. package/src/store/__tests__/atomic.test.js +0 -81
  422. package/src/store/__tests__/atomic.test.js.map +0 -1
  423. package/src/store/__tests__/backup.test.d.ts.map +0 -1
  424. package/src/store/__tests__/backup.test.js +0 -131
  425. package/src/store/__tests__/backup.test.js.map +0 -1
  426. package/src/store/__tests__/brain-accessor-pageindex.test.d.ts.map +0 -1
  427. package/src/store/__tests__/brain-accessor-pageindex.test.js +0 -179
  428. package/src/store/__tests__/brain-accessor-pageindex.test.js.map +0 -1
  429. package/src/store/__tests__/brain-accessor.test.d.ts.map +0 -1
  430. package/src/store/__tests__/brain-accessor.test.js +0 -398
  431. package/src/store/__tests__/brain-accessor.test.js.map +0 -1
  432. package/src/store/__tests__/brain-pageindex.test.d.ts.map +0 -1
  433. package/src/store/__tests__/brain-pageindex.test.js +0 -137
  434. package/src/store/__tests__/brain-pageindex.test.js.map +0 -1
  435. package/src/store/__tests__/brain-schema.test.d.ts.map +0 -1
  436. package/src/store/__tests__/brain-schema.test.js +0 -137
  437. package/src/store/__tests__/brain-schema.test.js.map +0 -1
  438. package/src/store/__tests__/brain-vec.test.d.ts.map +0 -1
  439. package/src/store/__tests__/brain-vec.test.js +0 -100
  440. package/src/store/__tests__/brain-vec.test.js.map +0 -1
  441. package/src/store/__tests__/collision-detection.test.d.ts.map +0 -1
  442. package/src/store/__tests__/collision-detection.test.js +0 -165
  443. package/src/store/__tests__/collision-detection.test.js.map +0 -1
  444. package/src/store/__tests__/data-safety-central.test.d.ts.map +0 -1
  445. package/src/store/__tests__/data-safety-central.test.js +0 -408
  446. package/src/store/__tests__/data-safety-central.test.js.map +0 -1
  447. package/src/store/__tests__/db-helpers.test.d.ts.map +0 -1
  448. package/src/store/__tests__/db-helpers.test.js +0 -101
  449. package/src/store/__tests__/db-helpers.test.js.map +0 -1
  450. package/src/store/__tests__/e2e-safety-integration.test.d.ts.map +0 -1
  451. package/src/store/__tests__/e2e-safety-integration.test.js +0 -402
  452. package/src/store/__tests__/e2e-safety-integration.test.js.map +0 -1
  453. package/src/store/__tests__/git-checkpoint.test.d.ts.map +0 -1
  454. package/src/store/__tests__/git-checkpoint.test.js +0 -133
  455. package/src/store/__tests__/git-checkpoint.test.js.map +0 -1
  456. package/src/store/__tests__/idempotent-migration.test.d.ts.map +0 -1
  457. package/src/store/__tests__/idempotent-migration.test.js +0 -172
  458. package/src/store/__tests__/idempotent-migration.test.js.map +0 -1
  459. package/src/store/__tests__/import-logging.test.d.ts.map +0 -1
  460. package/src/store/__tests__/import-logging.test.js +0 -92
  461. package/src/store/__tests__/import-logging.test.js.map +0 -1
  462. package/src/store/__tests__/import-sort.test.d.ts.map +0 -1
  463. package/src/store/__tests__/import-sort.test.js +0 -109
  464. package/src/store/__tests__/import-sort.test.js.map +0 -1
  465. package/src/store/__tests__/json.test.d.ts.map +0 -1
  466. package/src/store/__tests__/json.test.js +0 -98
  467. package/src/store/__tests__/json.test.js.map +0 -1
  468. package/src/store/__tests__/lifecycle-schema-parity.test.d.ts.map +0 -1
  469. package/src/store/__tests__/lifecycle-schema-parity.test.js +0 -90
  470. package/src/store/__tests__/lifecycle-schema-parity.test.js.map +0 -1
  471. package/src/store/__tests__/migration-integration.test.d.ts.map +0 -1
  472. package/src/store/__tests__/migration-integration.test.js +0 -238
  473. package/src/store/__tests__/migration-integration.test.js.map +0 -1
  474. package/src/store/__tests__/migration-retry.test.d.ts.map +0 -1
  475. package/src/store/__tests__/migration-retry.test.js +0 -178
  476. package/src/store/__tests__/migration-retry.test.js.map +0 -1
  477. package/src/store/__tests__/migration-safety.test.d.ts.map +0 -1
  478. package/src/store/__tests__/migration-safety.test.js +0 -756
  479. package/src/store/__tests__/migration-safety.test.js.map +0 -1
  480. package/src/store/__tests__/migration-sqlite.test.d.ts.map +0 -1
  481. package/src/store/__tests__/migration-sqlite.test.js +0 -544
  482. package/src/store/__tests__/migration-sqlite.test.js.map +0 -1
  483. package/src/store/__tests__/performance-safety.test.d.ts.map +0 -1
  484. package/src/store/__tests__/performance-safety.test.js +0 -157
  485. package/src/store/__tests__/performance-safety.test.js.map +0 -1
  486. package/src/store/__tests__/project-detect.test.d.ts.map +0 -1
  487. package/src/store/__tests__/project-detect.test.js +0 -609
  488. package/src/store/__tests__/project-detect.test.js.map +0 -1
  489. package/src/store/__tests__/project-registry.test.d.ts.map +0 -1
  490. package/src/store/__tests__/project-registry.test.js +0 -28
  491. package/src/store/__tests__/project-registry.test.js.map +0 -1
  492. package/src/store/__tests__/provider.test.d.ts.map +0 -1
  493. package/src/store/__tests__/provider.test.js +0 -15
  494. package/src/store/__tests__/provider.test.js.map +0 -1
  495. package/src/store/__tests__/relations.test.d.ts.map +0 -1
  496. package/src/store/__tests__/relations.test.js +0 -318
  497. package/src/store/__tests__/relations.test.js.map +0 -1
  498. package/src/store/__tests__/safety-accessor.test.d.ts.map +0 -1
  499. package/src/store/__tests__/safety-accessor.test.js +0 -219
  500. package/src/store/__tests__/safety-accessor.test.js.map +0 -1
  501. package/src/store/__tests__/sequence-validation.test.d.ts.map +0 -1
  502. package/src/store/__tests__/sequence-validation.test.js +0 -94
  503. package/src/store/__tests__/sequence-validation.test.js.map +0 -1
  504. package/src/store/__tests__/session-store.test.d.ts.map +0 -1
  505. package/src/store/__tests__/session-store.test.js +0 -463
  506. package/src/store/__tests__/session-store.test.js.map +0 -1
  507. package/src/store/__tests__/sqlite-backup.test.d.ts.map +0 -1
  508. package/src/store/__tests__/sqlite-backup.test.js +0 -72
  509. package/src/store/__tests__/sqlite-backup.test.js.map +0 -1
  510. package/src/store/__tests__/sqlite.test.d.ts.map +0 -1
  511. package/src/store/__tests__/sqlite.test.js +0 -256
  512. package/src/store/__tests__/sqlite.test.js.map +0 -1
  513. package/src/store/__tests__/task-store.test.d.ts.map +0 -1
  514. package/src/store/__tests__/task-store.test.js +0 -514
  515. package/src/store/__tests__/task-store.test.js.map +0 -1
  516. package/src/store/__tests__/test-db-helper.d.ts.map +0 -1
  517. package/src/store/__tests__/test-db-helper.js +0 -110
  518. package/src/store/__tests__/test-db-helper.js.map +0 -1
  519. package/src/store/__tests__/write-verification.test.d.ts.map +0 -1
  520. package/src/store/__tests__/write-verification.test.js +0 -185
  521. package/src/store/__tests__/write-verification.test.js.map +0 -1
  522. package/src/system/__tests__/cleanup.test.d.ts.map +0 -1
  523. package/src/system/__tests__/cleanup.test.js +0 -87
  524. package/src/system/__tests__/cleanup.test.js.map +0 -1
  525. package/src/system/__tests__/health.test.d.ts.map +0 -1
  526. package/src/system/__tests__/health.test.js +0 -55
  527. package/src/system/__tests__/health.test.js.map +0 -1
  528. package/src/task-work/__tests__/start-deps.test.d.ts.map +0 -1
  529. package/src/task-work/__tests__/start-deps.test.js +0 -152
  530. package/src/task-work/__tests__/start-deps.test.js.map +0 -1
  531. package/src/tasks/__tests__/add.test.d.ts.map +0 -1
  532. package/src/tasks/__tests__/add.test.js +0 -226
  533. package/src/tasks/__tests__/add.test.js.map +0 -1
  534. package/src/tasks/__tests__/archive.test.d.ts.map +0 -1
  535. package/src/tasks/__tests__/archive.test.js +0 -196
  536. package/src/tasks/__tests__/archive.test.js.map +0 -1
  537. package/src/tasks/__tests__/assignee.test.d.ts.map +0 -1
  538. package/src/tasks/__tests__/assignee.test.js +0 -125
  539. package/src/tasks/__tests__/assignee.test.js.map +0 -1
  540. package/src/tasks/__tests__/atomicity.test.d.ts.map +0 -1
  541. package/src/tasks/__tests__/atomicity.test.js +0 -192
  542. package/src/tasks/__tests__/atomicity.test.js.map +0 -1
  543. package/src/tasks/__tests__/cancel-ops.test.d.ts.map +0 -1
  544. package/src/tasks/__tests__/cancel-ops.test.js +0 -115
  545. package/src/tasks/__tests__/cancel-ops.test.js.map +0 -1
  546. package/src/tasks/__tests__/complete-unblocks.test.d.ts.map +0 -1
  547. package/src/tasks/__tests__/complete-unblocks.test.js +0 -151
  548. package/src/tasks/__tests__/complete-unblocks.test.js.map +0 -1
  549. package/src/tasks/__tests__/complete.test.d.ts.map +0 -1
  550. package/src/tasks/__tests__/complete.test.js +0 -230
  551. package/src/tasks/__tests__/complete.test.js.map +0 -1
  552. package/src/tasks/__tests__/delete.test.d.ts.map +0 -1
  553. package/src/tasks/__tests__/delete.test.js +0 -183
  554. package/src/tasks/__tests__/delete.test.js.map +0 -1
  555. package/src/tasks/__tests__/dependency-check.test.d.ts.map +0 -1
  556. package/src/tasks/__tests__/dependency-check.test.js +0 -293
  557. package/src/tasks/__tests__/dependency-check.test.js.map +0 -1
  558. package/src/tasks/__tests__/deps-ready.test.d.ts.map +0 -1
  559. package/src/tasks/__tests__/deps-ready.test.js +0 -68
  560. package/src/tasks/__tests__/deps-ready.test.js.map +0 -1
  561. package/src/tasks/__tests__/epic-enforcement.test.d.ts.map +0 -1
  562. package/src/tasks/__tests__/epic-enforcement.test.js +0 -669
  563. package/src/tasks/__tests__/epic-enforcement.test.js.map +0 -1
  564. package/src/tasks/__tests__/find.test.d.ts.map +0 -1
  565. package/src/tasks/__tests__/find.test.js +0 -163
  566. package/src/tasks/__tests__/find.test.js.map +0 -1
  567. package/src/tasks/__tests__/graph-ops.test.d.ts.map +0 -1
  568. package/src/tasks/__tests__/graph-ops.test.js +0 -174
  569. package/src/tasks/__tests__/graph-ops.test.js.map +0 -1
  570. package/src/tasks/__tests__/hierarchy-policy.test.d.ts.map +0 -1
  571. package/src/tasks/__tests__/hierarchy-policy.test.js +0 -399
  572. package/src/tasks/__tests__/hierarchy-policy.test.js.map +0 -1
  573. package/src/tasks/__tests__/hierarchy.test.d.ts.map +0 -1
  574. package/src/tasks/__tests__/hierarchy.test.js +0 -302
  575. package/src/tasks/__tests__/hierarchy.test.js.map +0 -1
  576. package/src/tasks/__tests__/id-generator.test.d.ts.map +0 -1
  577. package/src/tasks/__tests__/id-generator.test.js +0 -59
  578. package/src/tasks/__tests__/id-generator.test.js.map +0 -1
  579. package/src/tasks/__tests__/labels.test.d.ts.map +0 -1
  580. package/src/tasks/__tests__/labels.test.js +0 -173
  581. package/src/tasks/__tests__/labels.test.js.map +0 -1
  582. package/src/tasks/__tests__/list.test.d.ts.map +0 -1
  583. package/src/tasks/__tests__/list.test.js +0 -272
  584. package/src/tasks/__tests__/list.test.js.map +0 -1
  585. package/src/tasks/__tests__/minimal-test.test.d.ts.map +0 -1
  586. package/src/tasks/__tests__/minimal-test.test.js +0 -25
  587. package/src/tasks/__tests__/minimal-test.test.js.map +0 -1
  588. package/src/tasks/__tests__/phase-tracking.test.d.ts.map +0 -1
  589. package/src/tasks/__tests__/phase-tracking.test.js +0 -209
  590. package/src/tasks/__tests__/phase-tracking.test.js.map +0 -1
  591. package/src/tasks/__tests__/pipeline-stage.test.d.ts.map +0 -1
  592. package/src/tasks/__tests__/pipeline-stage.test.js +0 -277
  593. package/src/tasks/__tests__/pipeline-stage.test.js.map +0 -1
  594. package/src/tasks/__tests__/plan-priority.test.d.ts.map +0 -1
  595. package/src/tasks/__tests__/plan-priority.test.js +0 -133
  596. package/src/tasks/__tests__/plan-priority.test.js.map +0 -1
  597. package/src/tasks/__tests__/priority-normalization.test.d.ts.map +0 -1
  598. package/src/tasks/__tests__/priority-normalization.test.js +0 -117
  599. package/src/tasks/__tests__/priority-normalization.test.js.map +0 -1
  600. package/src/tasks/__tests__/relates.test.d.ts.map +0 -1
  601. package/src/tasks/__tests__/relates.test.js +0 -84
  602. package/src/tasks/__tests__/relates.test.js.map +0 -1
  603. package/src/tasks/__tests__/show-deps.test.d.ts.map +0 -1
  604. package/src/tasks/__tests__/show-deps.test.js +0 -182
  605. package/src/tasks/__tests__/show-deps.test.js.map +0 -1
  606. package/src/tasks/__tests__/show.test.d.ts.map +0 -1
  607. package/src/tasks/__tests__/show.test.js +0 -126
  608. package/src/tasks/__tests__/show.test.js.map +0 -1
  609. package/src/tasks/__tests__/staleness.test.d.ts.map +0 -1
  610. package/src/tasks/__tests__/staleness.test.js +0 -154
  611. package/src/tasks/__tests__/staleness.test.js.map +0 -1
  612. package/src/tasks/__tests__/task-ops-depends.test.d.ts.map +0 -1
  613. package/src/tasks/__tests__/task-ops-depends.test.js +0 -118
  614. package/src/tasks/__tests__/task-ops-depends.test.js.map +0 -1
  615. package/src/tasks/__tests__/update.test.d.ts.map +0 -1
  616. package/src/tasks/__tests__/update.test.js +0 -320
  617. package/src/tasks/__tests__/update.test.js.map +0 -1
  618. package/src/validation/__tests__/chain-validation.test.d.ts.map +0 -1
  619. package/src/validation/__tests__/chain-validation.test.js +0 -204
  620. package/src/validation/__tests__/chain-validation.test.js.map +0 -1
  621. package/src/validation/__tests__/compliance.test.d.ts.map +0 -1
  622. package/src/validation/__tests__/compliance.test.js +0 -83
  623. package/src/validation/__tests__/compliance.test.js.map +0 -1
  624. package/src/validation/__tests__/docs-sync.test.d.ts.map +0 -1
  625. package/src/validation/__tests__/docs-sync.test.js +0 -243
  626. package/src/validation/__tests__/docs-sync.test.js.map +0 -1
  627. package/src/validation/__tests__/doctor-gitignore.test.d.ts.map +0 -1
  628. package/src/validation/__tests__/doctor-gitignore.test.js +0 -154
  629. package/src/validation/__tests__/doctor-gitignore.test.js.map +0 -1
  630. package/src/validation/__tests__/doctor-injection.test.d.ts.map +0 -1
  631. package/src/validation/__tests__/doctor-injection.test.js +0 -230
  632. package/src/validation/__tests__/doctor-injection.test.js.map +0 -1
  633. package/src/validation/__tests__/doctor.test.d.ts.map +0 -1
  634. package/src/validation/__tests__/doctor.test.js +0 -202
  635. package/src/validation/__tests__/doctor.test.js.map +0 -1
  636. package/src/validation/__tests__/engine.test.d.ts.map +0 -1
  637. package/src/validation/__tests__/engine.test.js +0 -346
  638. package/src/validation/__tests__/engine.test.js.map +0 -1
  639. package/src/validation/__tests__/manifest.test.d.ts.map +0 -1
  640. package/src/validation/__tests__/manifest.test.js +0 -244
  641. package/src/validation/__tests__/manifest.test.js.map +0 -1
  642. package/src/validation/__tests__/protocol-common.test.d.ts.map +0 -1
  643. package/src/validation/__tests__/protocol-common.test.js +0 -112
  644. package/src/validation/__tests__/protocol-common.test.js.map +0 -1
  645. package/src/validation/__tests__/verification.test.d.ts.map +0 -1
  646. package/src/validation/__tests__/verification.test.js +0 -277
  647. package/src/validation/__tests__/verification.test.js.map +0 -1
@@ -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