@cleocode/core 2026.4.6 → 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.
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,609 +0,0 @@
1
- /**
2
- * Tests for src/store/project-detect.ts
3
- * Verifies ecosystem detection, schema compliance, and LLM hint generation.
4
- */
5
- import { mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
6
- import { tmpdir } from 'node:os';
7
- import { join } from 'node:path';
8
- import { fileURLToPath } from 'node:url';
9
- import AjvModule from 'ajv';
10
- import addFormatsModule from 'ajv-formats';
11
- import { afterEach, describe, expect, it } from 'vitest';
12
- import { detectProjectType } from '../project-detect.js';
13
- // ─── Schema validator setup ───────────────────────────────────────────────────
14
- const schemaPath = fileURLToPath(new URL('../../../schemas/project-context.schema.json', import.meta.url));
15
- const schema = JSON.parse(readFileSync(schemaPath, 'utf-8'));
16
- const Ajv = AjvModule.default ?? AjvModule;
17
- const addFormats = addFormatsModule.default ?? addFormatsModule;
18
- const ajv = new Ajv({ strict: false });
19
- addFormats(ajv);
20
- const validate = ajv.compile(schema);
21
- function assertSchemaValid(result, label = '') {
22
- const valid = validate(result);
23
- if (!valid) {
24
- throw new Error(`${label ? label + ' — ' : ''}Schema invalid: ${JSON.stringify(validate.errors, null, 2)}`);
25
- }
26
- }
27
- // ─── Scaffold helper ──────────────────────────────────────────────────────────
28
- function scaffold(files) {
29
- const dir = mkdtempSync(join(tmpdir(), 'cleo-detect-'));
30
- for (const [name, content] of Object.entries(files)) {
31
- const filePath = join(dir, name);
32
- const parts = name.split('/');
33
- if (parts.length > 1) {
34
- mkdirSync(join(dir, ...parts.slice(0, -1)), { recursive: true });
35
- }
36
- writeFileSync(filePath, content);
37
- }
38
- return dir;
39
- }
40
- let dir;
41
- afterEach(() => {
42
- if (dir) {
43
- rmSync(dir, { recursive: true, force: true });
44
- }
45
- });
46
- // ─── Group 1: Ecosystem detection ────────────────────────────────────────────
47
- describe('Group 1: Ecosystem detection', () => {
48
- it('empty dir → projectTypes includes unknown', () => {
49
- dir = scaffold({});
50
- const result = detectProjectType(dir);
51
- expect(result.projectTypes).toContain('unknown');
52
- assertSchemaValid(result, 'empty dir');
53
- });
54
- it('package.json → projectTypes includes node, primaryType is node', () => {
55
- dir = scaffold({ 'package.json': '{"name":"test"}' });
56
- const result = detectProjectType(dir);
57
- expect(result.projectTypes).toContain('node');
58
- expect(result.primaryType).toBe('node');
59
- assertSchemaValid(result, 'node');
60
- });
61
- it('requirements.txt → projectTypes includes python', () => {
62
- dir = scaffold({ 'requirements.txt': 'requests==2.28.0\n' });
63
- const result = detectProjectType(dir);
64
- expect(result.projectTypes).toContain('python');
65
- expect(result.primaryType).toBe('python');
66
- assertSchemaValid(result, 'python requirements.txt');
67
- });
68
- it('pyproject.toml → projectTypes includes python', () => {
69
- dir = scaffold({ 'pyproject.toml': '[tool.poetry]\nname = "myapp"\n' });
70
- const result = detectProjectType(dir);
71
- expect(result.projectTypes).toContain('python');
72
- assertSchemaValid(result, 'python pyproject.toml');
73
- });
74
- it('setup.py → projectTypes includes python', () => {
75
- dir = scaffold({ 'setup.py': 'from setuptools import setup\nsetup(name="myapp")\n' });
76
- const result = detectProjectType(dir);
77
- expect(result.projectTypes).toContain('python');
78
- assertSchemaValid(result, 'python setup.py');
79
- });
80
- it('Cargo.toml → projectTypes includes rust, primaryType is rust', () => {
81
- dir = scaffold({ 'Cargo.toml': '[package]\nname = "myapp"\nversion = "0.1.0"\n' });
82
- const result = detectProjectType(dir);
83
- expect(result.projectTypes).toContain('rust');
84
- expect(result.primaryType).toBe('rust');
85
- assertSchemaValid(result, 'rust');
86
- });
87
- it('go.mod → projectTypes includes go, primaryType is go', () => {
88
- dir = scaffold({ 'go.mod': 'module myapp\n\ngo 1.21\n' });
89
- const result = detectProjectType(dir);
90
- expect(result.projectTypes).toContain('go');
91
- expect(result.primaryType).toBe('go');
92
- assertSchemaValid(result, 'go');
93
- });
94
- it('Gemfile → projectTypes includes ruby, primaryType is ruby', () => {
95
- dir = scaffold({ Gemfile: "source 'https://rubygems.org'\n" });
96
- const result = detectProjectType(dir);
97
- expect(result.projectTypes).toContain('ruby');
98
- expect(result.primaryType).toBe('ruby');
99
- assertSchemaValid(result, 'ruby');
100
- });
101
- it('pom.xml → projectTypes includes java', () => {
102
- dir = scaffold({ 'pom.xml': '<project></project>' });
103
- const result = detectProjectType(dir);
104
- expect(result.projectTypes).toContain('java');
105
- expect(result.primaryType).toBe('java');
106
- assertSchemaValid(result, 'java pom.xml');
107
- });
108
- it('build.gradle → projectTypes includes java', () => {
109
- dir = scaffold({ 'build.gradle': 'plugins { id "java" }\n' });
110
- const result = detectProjectType(dir);
111
- expect(result.projectTypes).toContain('java');
112
- assertSchemaValid(result, 'java build.gradle');
113
- });
114
- it('.csproj file → projectTypes includes dotnet', () => {
115
- dir = scaffold({ 'App.csproj': '<Project Sdk="Microsoft.NET.Sdk"></Project>' });
116
- const result = detectProjectType(dir);
117
- expect(result.projectTypes).toContain('dotnet');
118
- expect(result.primaryType).toBe('dotnet');
119
- assertSchemaValid(result, 'dotnet');
120
- });
121
- it('deno.json → projectTypes includes deno', () => {
122
- dir = scaffold({ 'deno.json': '{"tasks":{}}' });
123
- const result = detectProjectType(dir);
124
- expect(result.projectTypes).toContain('deno');
125
- expect(result.primaryType).toBe('deno');
126
- assertSchemaValid(result, 'deno');
127
- });
128
- it('mix.exs → projectTypes includes elixir', () => {
129
- dir = scaffold({ 'mix.exs': 'defmodule MyApp.MixProject do\nend\n' });
130
- const result = detectProjectType(dir);
131
- expect(result.projectTypes).toContain('elixir');
132
- expect(result.primaryType).toBe('elixir');
133
- assertSchemaValid(result, 'elixir');
134
- });
135
- it('composer.json → projectTypes includes php', () => {
136
- dir = scaffold({ 'composer.json': '{"name":"vendor/package"}' });
137
- const result = detectProjectType(dir);
138
- expect(result.projectTypes).toContain('php');
139
- expect(result.primaryType).toBe('php');
140
- assertSchemaValid(result, 'php');
141
- });
142
- it('install.sh + tests/ dir → projectTypes includes bash', () => {
143
- dir = scaffold({ 'install.sh': '#!/bin/bash\necho "install"\n', 'tests/.keep': '' });
144
- const result = detectProjectType(dir);
145
- expect(result.projectTypes).toContain('bash');
146
- expect(result.primaryType).toBe('bash');
147
- assertSchemaValid(result, 'bash');
148
- });
149
- });
150
- // ─── Group 2: Polyglot detection ─────────────────────────────────────────────
151
- describe('Group 2: Polyglot detection', () => {
152
- it('package.json + Cargo.toml → both node and rust detected, primaryType is node', () => {
153
- dir = scaffold({
154
- 'package.json': '{"name":"app"}',
155
- 'Cargo.toml': '[package]\nname = "app"\nversion = "0.1.0"\n',
156
- });
157
- const result = detectProjectType(dir);
158
- expect(result.projectTypes).toContain('node');
159
- expect(result.projectTypes).toContain('rust');
160
- expect(result.primaryType).toBe('node');
161
- assertSchemaValid(result, 'polyglot node+rust');
162
- });
163
- it('package.json + go.mod → both node and go detected', () => {
164
- dir = scaffold({
165
- 'package.json': '{"name":"app"}',
166
- 'go.mod': 'module myapp\n\ngo 1.21\n',
167
- });
168
- const result = detectProjectType(dir);
169
- expect(result.projectTypes).toContain('node');
170
- expect(result.projectTypes).toContain('go');
171
- expect(result.primaryType).toBe('node');
172
- assertSchemaValid(result, 'polyglot node+go');
173
- });
174
- it('Cargo.toml + go.mod → both rust and go detected', () => {
175
- dir = scaffold({
176
- 'Cargo.toml': '[package]\nname = "app"\nversion = "0.1.0"\n',
177
- 'go.mod': 'module myapp\n\ngo 1.21\n',
178
- });
179
- const result = detectProjectType(dir);
180
- expect(result.projectTypes).toContain('rust');
181
- expect(result.projectTypes).toContain('go');
182
- assertSchemaValid(result, 'polyglot rust+go');
183
- });
184
- });
185
- // ─── Group 3: Package manager detection ──────────────────────────────────────
186
- describe('Group 3: Package manager detection', () => {
187
- it('package.json only → defaults to npm (no bun/pnpm/yarn avoid hint)', () => {
188
- dir = scaffold({ 'package.json': '{"name":"app"}' });
189
- const result = detectProjectType(dir);
190
- // With npm there are no package manager avoidPatterns
191
- const avoidPatterns = result.llmHints?.avoidPatterns ?? [];
192
- expect(avoidPatterns.some((p) => p.includes('npm'))).toBe(false);
193
- assertSchemaValid(result, 'npm default');
194
- });
195
- it('package.json + bun.lockb → bun detected, avoid npm hint present', () => {
196
- dir = scaffold({ 'package.json': '{"name":"app"}', 'bun.lockb': '' });
197
- const result = detectProjectType(dir);
198
- const avoidPatterns = result.llmHints?.avoidPatterns ?? [];
199
- expect(avoidPatterns.some((p) => p.includes('npm'))).toBe(true);
200
- assertSchemaValid(result, 'bun.lockb');
201
- });
202
- it('package.json + bun.lock → bun detected', () => {
203
- dir = scaffold({ 'package.json': '{"name":"app"}', 'bun.lock': '' });
204
- const result = detectProjectType(dir);
205
- const avoidPatterns = result.llmHints?.avoidPatterns ?? [];
206
- expect(avoidPatterns.some((p) => p.includes('npm'))).toBe(true);
207
- assertSchemaValid(result, 'bun.lock');
208
- });
209
- it('package.json + pnpm-lock.yaml → pnpm detected, avoid npm hint present', () => {
210
- dir = scaffold({
211
- 'package.json': '{"name":"app"}',
212
- 'pnpm-lock.yaml': 'lockfileVersion: "6.0"\n',
213
- });
214
- const result = detectProjectType(dir);
215
- const avoidPatterns = result.llmHints?.avoidPatterns ?? [];
216
- expect(avoidPatterns.some((p) => p.includes('npm'))).toBe(true);
217
- assertSchemaValid(result, 'pnpm');
218
- });
219
- it('package.json + yarn.lock → yarn detected, avoid npm hint present', () => {
220
- dir = scaffold({ 'package.json': '{"name":"app"}', 'yarn.lock': '# yarn lockfile v1\n' });
221
- const result = detectProjectType(dir);
222
- const avoidPatterns = result.llmHints?.avoidPatterns ?? [];
223
- expect(avoidPatterns.some((p) => p.includes('npm'))).toBe(true);
224
- assertSchemaValid(result, 'yarn');
225
- });
226
- it('package.json + bun.lockb + package-lock.json → bun still wins', () => {
227
- dir = scaffold({
228
- 'package.json': '{"name":"app"}',
229
- 'bun.lockb': '',
230
- 'package-lock.json': '{"lockfileVersion":3}',
231
- });
232
- const result = detectProjectType(dir);
233
- const commonPatterns = result.llmHints?.commonPatterns ?? [];
234
- expect(commonPatterns.some((p) => p.toLowerCase().includes('bun'))).toBe(true);
235
- assertSchemaValid(result, 'bun wins over npm');
236
- });
237
- });
238
- // ─── Group 4: Test framework detection ───────────────────────────────────────
239
- describe('Group 4: Test framework detection', () => {
240
- it('vitest.config.ts → testing.framework is vitest', () => {
241
- dir = scaffold({ 'package.json': '{"name":"app"}', 'vitest.config.ts': 'export default {}' });
242
- const result = detectProjectType(dir);
243
- expect(result.testing?.framework).toBe('vitest');
244
- assertSchemaValid(result, 'vitest config');
245
- });
246
- it('jest.config.ts → testing.framework is jest', () => {
247
- dir = scaffold({ 'package.json': '{"name":"app"}', 'jest.config.ts': 'export default {}' });
248
- const result = detectProjectType(dir);
249
- expect(result.testing?.framework).toBe('jest');
250
- assertSchemaValid(result, 'jest config');
251
- });
252
- it('.mocharc.yml → testing.framework is mocha', () => {
253
- dir = scaffold({
254
- 'package.json': '{"name":"app"}',
255
- '.mocharc.yml': 'spec: test/**/*.spec.js\n',
256
- });
257
- const result = detectProjectType(dir);
258
- expect(result.testing?.framework).toBe('mocha');
259
- assertSchemaValid(result, 'mocha');
260
- });
261
- it('playwright.config.ts → testing.framework is playwright', () => {
262
- dir = scaffold({
263
- 'package.json': '{"name":"app"}',
264
- 'playwright.config.ts': 'export default {}',
265
- });
266
- const result = detectProjectType(dir);
267
- expect(result.testing?.framework).toBe('playwright');
268
- assertSchemaValid(result, 'playwright');
269
- });
270
- it('cypress.config.ts → testing.framework is cypress', () => {
271
- dir = scaffold({ 'package.json': '{"name":"app"}', 'cypress.config.ts': 'export default {}' });
272
- const result = detectProjectType(dir);
273
- expect(result.testing?.framework).toBe('cypress');
274
- assertSchemaValid(result, 'cypress');
275
- });
276
- it('go.mod → testing.framework is go', () => {
277
- dir = scaffold({ 'go.mod': 'module myapp\n\ngo 1.21\n' });
278
- const result = detectProjectType(dir);
279
- expect(result.testing?.framework).toBe('go');
280
- assertSchemaValid(result, 'go test');
281
- });
282
- it('Cargo.toml → testing.framework is cargo', () => {
283
- dir = scaffold({ 'Cargo.toml': '[package]\nname = "app"\nversion = "0.1.0"\n' });
284
- const result = detectProjectType(dir);
285
- expect(result.testing?.framework).toBe('cargo');
286
- assertSchemaValid(result, 'cargo test');
287
- });
288
- it('requirements.txt → testing.framework is pytest', () => {
289
- dir = scaffold({ 'requirements.txt': 'requests==2.28.0\n' });
290
- const result = detectProjectType(dir);
291
- expect(result.testing?.framework).toBe('pytest');
292
- assertSchemaValid(result, 'pytest');
293
- });
294
- });
295
- // ─── Group 5: Monorepo detection ─────────────────────────────────────────────
296
- describe('Group 5: Monorepo detection', () => {
297
- it('package.json + turbo.json → monorepo is true', () => {
298
- dir = scaffold({ 'package.json': '{"name":"app"}', 'turbo.json': '{"pipeline":{}}' });
299
- const result = detectProjectType(dir);
300
- expect(result.monorepo).toBe(true);
301
- assertSchemaValid(result, 'turbo monorepo');
302
- });
303
- it('package.json + nx.json → monorepo is true', () => {
304
- dir = scaffold({ 'package.json': '{"name":"app"}', 'nx.json': '{}' });
305
- const result = detectProjectType(dir);
306
- expect(result.monorepo).toBe(true);
307
- assertSchemaValid(result, 'nx monorepo');
308
- });
309
- it('package.json + pnpm-workspace.yaml → monorepo is true', () => {
310
- dir = scaffold({
311
- 'package.json': '{"name":"app"}',
312
- 'pnpm-workspace.yaml': 'packages:\n - "packages/*"\n',
313
- });
314
- const result = detectProjectType(dir);
315
- expect(result.monorepo).toBe(true);
316
- assertSchemaValid(result, 'pnpm workspace monorepo');
317
- });
318
- it('package.json + lerna.json → monorepo is true', () => {
319
- dir = scaffold({ 'package.json': '{"name":"app"}', 'lerna.json': '{"version":"independent"}' });
320
- const result = detectProjectType(dir);
321
- expect(result.monorepo).toBe(true);
322
- assertSchemaValid(result, 'lerna monorepo');
323
- });
324
- it('package.json with workspaces field → monorepo is true', () => {
325
- dir = scaffold({ 'package.json': '{"name":"app","workspaces":["packages/*"]}' });
326
- const result = detectProjectType(dir);
327
- expect(result.monorepo).toBe(true);
328
- assertSchemaValid(result, 'npm workspaces monorepo');
329
- });
330
- it('Cargo.toml with [workspace] section → monorepo is true', () => {
331
- dir = scaffold({
332
- 'Cargo.toml': '[workspace]\nmembers = ["crate-a", "crate-b"]\n\n[package]\nname = "root"\nversion = "0.1.0"\n',
333
- });
334
- const result = detectProjectType(dir);
335
- expect(result.monorepo).toBe(true);
336
- assertSchemaValid(result, 'cargo workspace monorepo');
337
- });
338
- });
339
- // ─── Group 6: LLM hints ───────────────────────────────────────────────────────
340
- describe('Group 6: LLM hints', () => {
341
- it('bun project → avoidPatterns includes "Do not use npm or npx"', () => {
342
- dir = scaffold({ 'package.json': '{"name":"app"}', 'bun.lockb': '' });
343
- const result = detectProjectType(dir);
344
- const avoidPatterns = result.llmHints?.avoidPatterns ?? [];
345
- expect(avoidPatterns).toContain('Do not use npm or npx — this project uses bun');
346
- });
347
- it('pnpm project → avoidPatterns includes "Do not use npm"', () => {
348
- dir = scaffold({
349
- 'package.json': '{"name":"app"}',
350
- 'pnpm-lock.yaml': 'lockfileVersion: "6.0"\n',
351
- });
352
- const result = detectProjectType(dir);
353
- const avoidPatterns = result.llmHints?.avoidPatterns ?? [];
354
- expect(avoidPatterns).toContain('Do not use npm — this project uses pnpm');
355
- });
356
- it('yarn project → avoidPatterns includes "Do not use npm — this project uses yarn"', () => {
357
- dir = scaffold({ 'package.json': '{"name":"app"}', 'yarn.lock': '# yarn lockfile v1\n' });
358
- const result = detectProjectType(dir);
359
- const avoidPatterns = result.llmHints?.avoidPatterns ?? [];
360
- expect(avoidPatterns).toContain('Do not use npm — this project uses yarn');
361
- });
362
- it('TypeScript project (tsconfig.json) → llmHints.typeSystem contains TypeScript', () => {
363
- dir = scaffold({
364
- 'package.json': '{"name":"app"}',
365
- 'tsconfig.json': '{"compilerOptions":{"strict":true}}',
366
- });
367
- const result = detectProjectType(dir);
368
- expect(result.llmHints?.typeSystem).toMatch(/TypeScript/);
369
- });
370
- it('ESM project (type:module) → avoidPatterns includes CommonJS warning', () => {
371
- dir = scaffold({ 'package.json': '{"name":"app","type":"module"}' });
372
- const result = detectProjectType(dir);
373
- const avoidPatterns = result.llmHints?.avoidPatterns ?? [];
374
- expect(avoidPatterns).toContain('Do not use CommonJS require()');
375
- });
376
- it('avoidPatterns is always an array when present', () => {
377
- dir = scaffold({ 'package.json': '{"name":"app"}', 'bun.lockb': '' });
378
- const result = detectProjectType(dir);
379
- if (result.llmHints?.avoidPatterns !== undefined) {
380
- expect(Array.isArray(result.llmHints.avoidPatterns)).toBe(true);
381
- }
382
- assertSchemaValid(result, 'avoidPatterns array check');
383
- });
384
- });
385
- // ─── Group 7: Schema compliance ───────────────────────────────────────────────
386
- describe('Group 7: Schema compliance', () => {
387
- it('node project output is schema-valid', () => {
388
- dir = scaffold({ 'package.json': '{"name":"app"}' });
389
- const result = detectProjectType(dir);
390
- assertSchemaValid(result, 'node schema');
391
- });
392
- it('python project output is schema-valid', () => {
393
- dir = scaffold({ 'requirements.txt': 'flask==2.0.0\n' });
394
- const result = detectProjectType(dir);
395
- assertSchemaValid(result, 'python schema');
396
- });
397
- it('rust project output is schema-valid', () => {
398
- dir = scaffold({ 'Cargo.toml': '[package]\nname = "app"\nversion = "0.1.0"\n' });
399
- const result = detectProjectType(dir);
400
- assertSchemaValid(result, 'rust schema');
401
- });
402
- it('go project output is schema-valid', () => {
403
- dir = scaffold({ 'go.mod': 'module myapp\n\ngo 1.21\n' });
404
- const result = detectProjectType(dir);
405
- assertSchemaValid(result, 'go schema');
406
- });
407
- it('polyglot (node + rust) output is schema-valid', () => {
408
- dir = scaffold({
409
- 'package.json': '{"name":"app"}',
410
- 'Cargo.toml': '[package]\nname = "app"\nversion = "0.1.0"\n',
411
- });
412
- const result = detectProjectType(dir);
413
- assertSchemaValid(result, 'polyglot schema');
414
- });
415
- it('schemaVersion is always "1.0.0"', () => {
416
- dir = scaffold({ 'package.json': '{"name":"app"}' });
417
- const result = detectProjectType(dir);
418
- expect(result.schemaVersion).toBe('1.0.0');
419
- });
420
- it('detectedAt is ISO 8601 date-time string', () => {
421
- dir = scaffold({ 'package.json': '{"name":"app"}' });
422
- const result = detectProjectType(dir);
423
- expect(() => new Date(result.detectedAt).toISOString()).not.toThrow();
424
- expect(new Date(result.detectedAt).getFullYear()).toBeGreaterThan(2020);
425
- });
426
- it('projectTypes always has at least 1 item', () => {
427
- dir = scaffold({});
428
- const result = detectProjectType(dir);
429
- expect(result.projectTypes.length).toBeGreaterThanOrEqual(1);
430
- });
431
- });
432
- // ─── Group 8: Build detection ─────────────────────────────────────────────────
433
- describe('Group 8: Build detection', () => {
434
- it('package.json with build script → build.command is populated', () => {
435
- dir = scaffold({
436
- 'package.json': '{"name":"app","scripts":{"build":"tsc","test":"vitest run"}}',
437
- });
438
- const result = detectProjectType(dir);
439
- expect(result.build?.command).toBeDefined();
440
- expect(result.build?.command).toContain('build');
441
- assertSchemaValid(result, 'node build command');
442
- });
443
- it('Cargo.toml → build.command is "cargo build"', () => {
444
- dir = scaffold({ 'Cargo.toml': '[package]\nname = "app"\nversion = "0.1.0"\n' });
445
- const result = detectProjectType(dir);
446
- expect(result.build?.command).toBe('cargo build');
447
- assertSchemaValid(result, 'rust build');
448
- });
449
- it('go.mod → build.command includes "go"', () => {
450
- dir = scaffold({ 'go.mod': 'module myapp\n\ngo 1.21\n' });
451
- const result = detectProjectType(dir);
452
- expect(result.build?.command).toContain('go');
453
- assertSchemaValid(result, 'go build');
454
- });
455
- it('package.json with build + dist dir → build.outputDir is "dist"', () => {
456
- dir = scaffold({
457
- 'package.json': '{"name":"app","scripts":{"build":"tsc"}}',
458
- 'dist/.keep': '',
459
- });
460
- const result = detectProjectType(dir);
461
- expect(result.build?.outputDir).toBe('dist');
462
- assertSchemaValid(result, 'node dist output');
463
- });
464
- });
465
- // ─── Group 9: Testing command fallback ───────────────────────────────────────
466
- describe('Group 9: Testing command fallback', () => {
467
- it('vitest config but no test script → command is "npx vitest run"', () => {
468
- dir = scaffold({ 'package.json': '{"name":"app"}', 'vitest.config.ts': 'export default {}' });
469
- const result = detectProjectType(dir);
470
- expect(result.testing?.command).toBe('npx vitest run');
471
- assertSchemaValid(result, 'vitest fallback command');
472
- });
473
- it('jest config but no test script → command is "npx jest"', () => {
474
- dir = scaffold({ 'package.json': '{"name":"app"}', 'jest.config.ts': 'export default {}' });
475
- const result = detectProjectType(dir);
476
- expect(result.testing?.command).toBe('npx jest');
477
- assertSchemaValid(result, 'jest fallback command');
478
- });
479
- it('package.json with test script → command uses npm test', () => {
480
- dir = scaffold({
481
- 'package.json': '{"name":"app","scripts":{"test":"vitest run"}}',
482
- 'vitest.config.ts': 'export default {}',
483
- });
484
- const result = detectProjectType(dir);
485
- expect(result.testing?.command).toBe('npm run test');
486
- assertSchemaValid(result, 'npm test script');
487
- });
488
- it('bun project with test script → command uses bun run test', () => {
489
- dir = scaffold({
490
- 'package.json': '{"name":"app","scripts":{"test":"vitest run"}}',
491
- 'bun.lockb': '',
492
- 'vitest.config.ts': 'export default {}',
493
- });
494
- const result = detectProjectType(dir);
495
- expect(result.testing?.command).toBe('bun run test');
496
- assertSchemaValid(result, 'bun test command');
497
- });
498
- it('pytest → command is "pytest"', () => {
499
- dir = scaffold({ 'requirements.txt': 'flask\n' });
500
- const result = detectProjectType(dir);
501
- expect(result.testing?.command).toBe('pytest');
502
- });
503
- it('cargo → command is "cargo test"', () => {
504
- dir = scaffold({ 'Cargo.toml': '[package]\nname = "app"\nversion = "0.1.0"\n' });
505
- const result = detectProjectType(dir);
506
- expect(result.testing?.command).toBe('cargo test');
507
- });
508
- it('go → command is "go test ./..."', () => {
509
- dir = scaffold({ 'go.mod': 'module myapp\n\ngo 1.21\n' });
510
- const result = detectProjectType(dir);
511
- expect(result.testing?.command).toBe('go test ./...');
512
- });
513
- });
514
- // ─── Group 10: Conventions detection ─────────────────────────────────────────
515
- describe('Group 10: Conventions detection', () => {
516
- it('package.json with type:module → importStyle is esm', () => {
517
- dir = scaffold({ 'package.json': '{"name":"app","type":"module"}' });
518
- const result = detectProjectType(dir);
519
- expect(result.conventions?.importStyle).toBe('esm');
520
- assertSchemaValid(result, 'esm import style');
521
- });
522
- it('package.json with type:commonjs → importStyle is commonjs', () => {
523
- dir = scaffold({ 'package.json': '{"name":"app","type":"commonjs"}' });
524
- const result = detectProjectType(dir);
525
- expect(result.conventions?.importStyle).toBe('commonjs');
526
- assertSchemaValid(result, 'commonjs import style');
527
- });
528
- it('TypeScript strict mode → typeSystem is "TypeScript strict"', () => {
529
- dir = scaffold({
530
- 'package.json': '{"name":"app"}',
531
- 'tsconfig.json': '{"compilerOptions":{"strict":true}}',
532
- });
533
- const result = detectProjectType(dir);
534
- expect(result.conventions?.typeSystem).toBe('TypeScript strict');
535
- assertSchemaValid(result, 'ts strict type system');
536
- });
537
- it('TypeScript without strict → typeSystem is "TypeScript"', () => {
538
- dir = scaffold({
539
- 'package.json': '{"name":"app"}',
540
- 'tsconfig.json': '{"compilerOptions":{"target":"ES2020"}}',
541
- });
542
- const result = detectProjectType(dir);
543
- expect(result.conventions?.typeSystem).toBe('TypeScript');
544
- assertSchemaValid(result, 'ts type system');
545
- });
546
- it('rust project → typeSystem is "Rust"', () => {
547
- dir = scaffold({ 'Cargo.toml': '[package]\nname = "app"\nversion = "0.1.0"\n' });
548
- const result = detectProjectType(dir);
549
- expect(result.conventions?.typeSystem).toBe('Rust');
550
- assertSchemaValid(result, 'rust type system');
551
- });
552
- it('go project → typeSystem is "Go"', () => {
553
- dir = scaffold({ 'go.mod': 'module myapp\n\ngo 1.21\n' });
554
- const result = detectProjectType(dir);
555
- expect(result.conventions?.typeSystem).toBe('Go');
556
- assertSchemaValid(result, 'go type system');
557
- });
558
- });
559
- // ─── Group 11: Directory detection ───────────────────────────────────────────
560
- describe('Group 11: Directory detection', () => {
561
- it('src/ present → directories.source is "src"', () => {
562
- dir = scaffold({ 'package.json': '{"name":"app"}', 'src/.keep': '' });
563
- const result = detectProjectType(dir);
564
- expect(result.directories?.source).toBe('src');
565
- assertSchemaValid(result, 'src directory');
566
- });
567
- it('tests/ present → directories.tests is "tests"', () => {
568
- dir = scaffold({ 'package.json': '{"name":"app"}', 'tests/.keep': '' });
569
- const result = detectProjectType(dir);
570
- expect(result.directories?.tests).toBe('tests');
571
- assertSchemaValid(result, 'tests directory');
572
- });
573
- it('docs/ present → directories.docs is "docs"', () => {
574
- dir = scaffold({ 'package.json': '{"name":"app"}', 'docs/.keep': '' });
575
- const result = detectProjectType(dir);
576
- expect(result.directories?.docs).toBe('docs');
577
- assertSchemaValid(result, 'docs directory');
578
- });
579
- it('no standard dirs → directories is undefined', () => {
580
- dir = scaffold({ 'package.json': '{"name":"app"}' });
581
- const result = detectProjectType(dir);
582
- expect(result.directories).toBeUndefined();
583
- assertSchemaValid(result, 'no directories');
584
- });
585
- });
586
- // ─── Group 12: Vitest test patterns ──────────────────────────────────────────
587
- describe('Group 12: Test file patterns', () => {
588
- it('vitest → testFilePatterns includes *.test.ts', () => {
589
- dir = scaffold({ 'package.json': '{"name":"app"}', 'vitest.config.ts': 'export default {}' });
590
- const result = detectProjectType(dir);
591
- expect(result.testing?.testFilePatterns).toContain('**/*.test.ts');
592
- });
593
- it('jest → testFilePatterns includes *.test.ts', () => {
594
- dir = scaffold({ 'package.json': '{"name":"app"}', 'jest.config.ts': 'export default {}' });
595
- const result = detectProjectType(dir);
596
- expect(result.testing?.testFilePatterns).toContain('**/*.test.ts');
597
- });
598
- it('pytest → testFilePatterns includes test_*.py', () => {
599
- dir = scaffold({ 'requirements.txt': 'pytest\n' });
600
- const result = detectProjectType(dir);
601
- expect(result.testing?.testFilePatterns).toContain('**/test_*.py');
602
- });
603
- it('mocha → testFilePatterns includes *.test.js', () => {
604
- dir = scaffold({ 'package.json': '{"name":"app"}', '.mocharc.yml': 'spec: test/*.spec.js\n' });
605
- const result = detectProjectType(dir);
606
- expect(result.testing?.testFilePatterns).toContain('**/*.test.js');
607
- });
608
- });
609
- //# sourceMappingURL=project-detect.test.js.map