@cleocode/core 2026.10.27 → 2026.11.1-canary.3

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 (520) hide show
  1. package/README.md +2 -0
  2. package/binaries/README.md +30 -10
  3. package/dist/.source-stamp.json +4 -0
  4. package/dist/audit/reconstruct.d.ts.map +1 -1
  5. package/dist/audit/reconstruct.js +3 -13
  6. package/dist/audit/reconstruct.js.map +1 -1
  7. package/dist/build-provenance.json +2 -2
  8. package/dist/cloud/nexus-cloud.d.ts.map +1 -1
  9. package/dist/cloud/nexus-cloud.js +3 -3
  10. package/dist/cloud/nexus-cloud.js.map +1 -1
  11. package/dist/cloud/nexus-device.d.ts +1 -1
  12. package/dist/cloud/nexus-link.d.ts +18 -2
  13. package/dist/cloud/nexus-link.d.ts.map +1 -1
  14. package/dist/cloud/nexus-link.js +26 -6
  15. package/dist/cloud/nexus-link.js.map +1 -1
  16. package/dist/cloud/nexus-vault.d.ts.map +1 -1
  17. package/dist/cloud/nexus-vault.js +3 -9
  18. package/dist/cloud/nexus-vault.js.map +1 -1
  19. package/dist/decide/sites/registry.d.ts +40 -0
  20. package/dist/decide/sites/registry.d.ts.map +1 -1
  21. package/dist/decide/sites/registry.js +38 -0
  22. package/dist/decide/sites/registry.js.map +1 -1
  23. package/dist/docs/adr-allocator.d.ts +3 -3
  24. package/dist/docs/adr-allocator.d.ts.map +1 -1
  25. package/dist/docs/adr-allocator.js +8 -5
  26. package/dist/docs/adr-allocator.js.map +1 -1
  27. package/dist/docs/blob-consolidation.d.ts.map +1 -1
  28. package/dist/docs/blob-consolidation.js +3 -2
  29. package/dist/docs/blob-consolidation.js.map +1 -1
  30. package/dist/docs/derive-links.d.ts +12 -0
  31. package/dist/docs/derive-links.d.ts.map +1 -1
  32. package/dist/docs/derive-links.js +19 -0
  33. package/dist/docs/derive-links.js.map +1 -1
  34. package/dist/docs/doc-name-rule.d.ts +105 -0
  35. package/dist/docs/doc-name-rule.d.ts.map +1 -0
  36. package/dist/docs/doc-name-rule.js +212 -0
  37. package/dist/docs/doc-name-rule.js.map +1 -0
  38. package/dist/docs/docs-inconsistency-detector.d.ts.map +1 -1
  39. package/dist/docs/docs-inconsistency-detector.js +4 -3
  40. package/dist/docs/docs-inconsistency-detector.js.map +1 -1
  41. package/dist/docs/docs-ops.d.ts +27 -5
  42. package/dist/docs/docs-ops.d.ts.map +1 -1
  43. package/dist/docs/docs-ops.js +149 -17
  44. package/dist/docs/docs-ops.js.map +1 -1
  45. package/dist/docs/docs-read-model.d.ts +45 -15
  46. package/dist/docs/docs-read-model.d.ts.map +1 -1
  47. package/dist/docs/docs-read-model.js +22 -102
  48. package/dist/docs/docs-read-model.js.map +1 -1
  49. package/dist/docs/docs-update.d.ts.map +1 -1
  50. package/dist/docs/docs-update.js +8 -2
  51. package/dist/docs/docs-update.js.map +1 -1
  52. package/dist/docs/doctor.d.ts +71 -4
  53. package/dist/docs/doctor.d.ts.map +1 -1
  54. package/dist/docs/doctor.js +324 -23
  55. package/dist/docs/doctor.js.map +1 -1
  56. package/dist/docs/duplicate-check.d.ts +138 -0
  57. package/dist/docs/duplicate-check.d.ts.map +1 -0
  58. package/dist/docs/duplicate-check.js +286 -0
  59. package/dist/docs/duplicate-check.js.map +1 -0
  60. package/dist/docs/fetch-result.d.ts.map +1 -1
  61. package/dist/docs/fetch-result.js +27 -0
  62. package/dist/docs/fetch-result.js.map +1 -1
  63. package/dist/docs/import/scanner.d.ts +2 -0
  64. package/dist/docs/import/scanner.d.ts.map +1 -1
  65. package/dist/docs/import/scanner.js +3 -1
  66. package/dist/docs/import/scanner.js.map +1 -1
  67. package/dist/docs/lineage.d.ts +66 -0
  68. package/dist/docs/lineage.d.ts.map +1 -0
  69. package/dist/docs/lineage.js +190 -0
  70. package/dist/docs/lineage.js.map +1 -0
  71. package/dist/docs/modernize/apply.d.ts +139 -0
  72. package/dist/docs/modernize/apply.d.ts.map +1 -0
  73. package/dist/docs/modernize/apply.js +760 -0
  74. package/dist/docs/modernize/apply.js.map +1 -0
  75. package/dist/docs/modernize/guard.d.ts +92 -0
  76. package/dist/docs/modernize/guard.d.ts.map +1 -0
  77. package/dist/docs/modernize/guard.js +214 -0
  78. package/dist/docs/modernize/guard.js.map +1 -0
  79. package/dist/docs/modernize/index.d.ts +68 -0
  80. package/dist/docs/modernize/index.d.ts.map +1 -0
  81. package/dist/docs/modernize/index.js +97 -0
  82. package/dist/docs/modernize/index.js.map +1 -0
  83. package/dist/docs/modernize/judge.d.ts +85 -0
  84. package/dist/docs/modernize/judge.d.ts.map +1 -0
  85. package/dist/docs/modernize/judge.js +186 -0
  86. package/dist/docs/modernize/judge.js.map +1 -0
  87. package/dist/docs/modernize/plan.d.ts +77 -0
  88. package/dist/docs/modernize/plan.d.ts.map +1 -0
  89. package/dist/docs/modernize/plan.js +510 -0
  90. package/dist/docs/modernize/plan.js.map +1 -0
  91. package/dist/docs/modernize/restore.d.ts +41 -0
  92. package/dist/docs/modernize/restore.d.ts.map +1 -0
  93. package/dist/docs/modernize/restore.js +103 -0
  94. package/dist/docs/modernize/restore.js.map +1 -0
  95. package/dist/docs/modernize/rules.d.ts +197 -0
  96. package/dist/docs/modernize/rules.d.ts.map +1 -0
  97. package/dist/docs/modernize/rules.js +510 -0
  98. package/dist/docs/modernize/rules.js.map +1 -0
  99. package/dist/docs/modernize/store.d.ts +64 -0
  100. package/dist/docs/modernize/store.d.ts.map +1 -0
  101. package/dist/docs/modernize/store.js +390 -0
  102. package/dist/docs/modernize/store.js.map +1 -0
  103. package/dist/docs/publications-store.d.ts +16 -2
  104. package/dist/docs/publications-store.d.ts.map +1 -1
  105. package/dist/docs/publications-store.js +23 -2
  106. package/dist/docs/publications-store.js.map +1 -1
  107. package/dist/docs/publish-pr.d.ts.map +1 -1
  108. package/dist/docs/publish-pr.js +12 -1
  109. package/dist/docs/publish-pr.js.map +1 -1
  110. package/dist/docs/rot.d.ts +94 -0
  111. package/dist/docs/rot.d.ts.map +1 -0
  112. package/dist/docs/rot.js +298 -0
  113. package/dist/docs/rot.js.map +1 -0
  114. package/dist/docs/similarity-check.d.ts +2 -0
  115. package/dist/docs/similarity-check.d.ts.map +1 -1
  116. package/dist/docs/similarity-check.js +6 -49
  117. package/dist/docs/similarity-check.js.map +1 -1
  118. package/dist/docs/slug-rename.d.ts +84 -0
  119. package/dist/docs/slug-rename.d.ts.map +1 -0
  120. package/dist/docs/slug-rename.js +166 -0
  121. package/dist/docs/slug-rename.js.map +1 -0
  122. package/dist/docs/slug-similarity.d.ts +24 -0
  123. package/dist/docs/slug-similarity.d.ts.map +1 -0
  124. package/dist/docs/slug-similarity.js +63 -0
  125. package/dist/docs/slug-similarity.js.map +1 -0
  126. package/dist/docs/wikilinks.d.ts +20 -4
  127. package/dist/docs/wikilinks.d.ts.map +1 -1
  128. package/dist/docs/wikilinks.js +52 -7
  129. package/dist/docs/wikilinks.js.map +1 -1
  130. package/dist/docs/writer-registry.d.ts.map +1 -1
  131. package/dist/docs/writer-registry.js +33 -0
  132. package/dist/docs/writer-registry.js.map +1 -1
  133. package/dist/doctor/type-matrix-repair.d.ts +194 -0
  134. package/dist/doctor/type-matrix-repair.d.ts.map +1 -0
  135. package/dist/doctor/type-matrix-repair.js +662 -0
  136. package/dist/doctor/type-matrix-repair.js.map +1 -0
  137. package/dist/gateway-client/generated/index.d.ts +2 -2
  138. package/dist/gateway-client/generated/index.d.ts.map +1 -1
  139. package/dist/gateway-client/generated/index.js +1 -1
  140. package/dist/gateway-client/generated/index.js.map +1 -1
  141. package/dist/gateway-client/generated/namespaces.gen.d.ts +5 -0
  142. package/dist/gateway-client/generated/namespaces.gen.d.ts.map +1 -1
  143. package/dist/gateway-client/generated/namespaces.gen.js +6 -1
  144. package/dist/gateway-client/generated/namespaces.gen.js.map +1 -1
  145. package/dist/gateway-client/generated/sdk.gen.d.ts +21 -1
  146. package/dist/gateway-client/generated/sdk.gen.d.ts.map +1 -1
  147. package/dist/gateway-client/generated/sdk.gen.js +55 -0
  148. package/dist/gateway-client/generated/sdk.gen.js.map +1 -1
  149. package/dist/gateway-client/generated/types.gen.d.ts +222 -0
  150. package/dist/gateway-client/generated/types.gen.d.ts.map +1 -1
  151. package/dist/gc/gc-subsystem.d.ts +4 -0
  152. package/dist/gc/gc-subsystem.d.ts.map +1 -1
  153. package/dist/gc/gc-subsystem.js +16 -0
  154. package/dist/gc/gc-subsystem.js.map +1 -1
  155. package/dist/git/work-tree.d.ts +48 -0
  156. package/dist/git/work-tree.d.ts.map +1 -1
  157. package/dist/git/work-tree.js +63 -1
  158. package/dist/git/work-tree.js.map +1 -1
  159. package/dist/hooks/handlers/session-hooks.d.ts +5 -4
  160. package/dist/hooks/handlers/session-hooks.d.ts.map +1 -1
  161. package/dist/hooks/handlers/session-hooks.js +5 -21
  162. package/dist/hooks/handlers/session-hooks.js.map +1 -1
  163. package/dist/internal.d.ts +5 -1
  164. package/dist/internal.d.ts.map +1 -1
  165. package/dist/internal.js +5 -1
  166. package/dist/internal.js.map +1 -1
  167. package/dist/memory/brain-doctor.d.ts.map +1 -1
  168. package/dist/memory/brain-doctor.js +6 -1
  169. package/dist/memory/brain-doctor.js.map +1 -1
  170. package/dist/memory/engine-compat.d.ts.map +1 -1
  171. package/dist/memory/engine-compat.js +6 -0
  172. package/dist/memory/engine-compat.js.map +1 -1
  173. package/dist/nexus/analyze-orchestrator.d.ts +24 -0
  174. package/dist/nexus/analyze-orchestrator.d.ts.map +1 -1
  175. package/dist/nexus/analyze-orchestrator.js +43 -5
  176. package/dist/nexus/analyze-orchestrator.js.map +1 -1
  177. package/dist/nexus/user-profile.d.ts +2 -1
  178. package/dist/nexus/user-profile.d.ts.map +1 -1
  179. package/dist/nexus/user-profile.js +13 -5
  180. package/dist/nexus/user-profile.js.map +1 -1
  181. package/dist/orchestrate/admission.d.ts +8 -0
  182. package/dist/orchestrate/admission.d.ts.map +1 -1
  183. package/dist/orchestrate/admission.js +3 -1
  184. package/dist/orchestrate/admission.js.map +1 -1
  185. package/dist/orchestrate/query-ops.d.ts.map +1 -1
  186. package/dist/orchestrate/query-ops.js +15 -4
  187. package/dist/orchestrate/query-ops.js.map +1 -1
  188. package/dist/orchestrate/spawn-ops.d.ts.map +1 -1
  189. package/dist/orchestrate/spawn-ops.js +43 -2
  190. package/dist/orchestrate/spawn-ops.js.map +1 -1
  191. package/dist/orchestration/index.d.ts +6 -0
  192. package/dist/orchestration/index.d.ts.map +1 -1
  193. package/dist/orchestration/index.js +3 -0
  194. package/dist/orchestration/index.js.map +1 -1
  195. package/dist/orchestration/spawn-prompt.d.ts.map +1 -1
  196. package/dist/orchestration/spawn-prompt.js +3 -1
  197. package/dist/orchestration/spawn-prompt.js.map +1 -1
  198. package/dist/paths.d.ts +43 -1
  199. package/dist/paths.d.ts.map +1 -1
  200. package/dist/paths.js +51 -1
  201. package/dist/paths.js.map +1 -1
  202. package/dist/project-lifecycle.d.ts.map +1 -1
  203. package/dist/project-lifecycle.js +31 -0
  204. package/dist/project-lifecycle.js.map +1 -1
  205. package/dist/release/authorization.d.ts +156 -0
  206. package/dist/release/authorization.d.ts.map +1 -0
  207. package/dist/release/authorization.js +460 -0
  208. package/dist/release/authorization.js.map +1 -0
  209. package/dist/release/ci-evidence.d.ts +55 -4
  210. package/dist/release/ci-evidence.d.ts.map +1 -1
  211. package/dist/release/ci-evidence.js +251 -22
  212. package/dist/release/ci-evidence.js.map +1 -1
  213. package/dist/release/ci-run-evidence.d.ts +107 -0
  214. package/dist/release/ci-run-evidence.d.ts.map +1 -0
  215. package/dist/release/ci-run-evidence.js +234 -0
  216. package/dist/release/ci-run-evidence.js.map +1 -0
  217. package/dist/release/cut.d.ts +231 -0
  218. package/dist/release/cut.d.ts.map +1 -0
  219. package/dist/release/cut.js +775 -0
  220. package/dist/release/cut.js.map +1 -0
  221. package/dist/release/deploy-evidence.d.ts +173 -0
  222. package/dist/release/deploy-evidence.d.ts.map +1 -0
  223. package/dist/release/deploy-evidence.js +381 -0
  224. package/dist/release/deploy-evidence.js.map +1 -0
  225. package/dist/release/engine-ops.d.ts.map +1 -1
  226. package/dist/release/engine-ops.js +10 -4
  227. package/dist/release/engine-ops.js.map +1 -1
  228. package/dist/release/index.d.ts +3 -0
  229. package/dist/release/index.d.ts.map +1 -1
  230. package/dist/release/index.js +2 -0
  231. package/dist/release/index.js.map +1 -1
  232. package/dist/release/invariants/archive-reason-invariant.d.ts.map +1 -1
  233. package/dist/release/invariants/archive-reason-invariant.js +4 -1
  234. package/dist/release/invariants/archive-reason-invariant.js.map +1 -1
  235. package/dist/release/open.d.ts.map +1 -1
  236. package/dist/release/open.js +2 -6
  237. package/dist/release/open.js.map +1 -1
  238. package/dist/release/plan.d.ts +34 -2
  239. package/dist/release/plan.d.ts.map +1 -1
  240. package/dist/release/plan.js +30 -6
  241. package/dist/release/plan.js.map +1 -1
  242. package/dist/release/preflight-skip.d.ts +4 -19
  243. package/dist/release/preflight-skip.d.ts.map +1 -1
  244. package/dist/release/preflight-skip.js +5 -110
  245. package/dist/release/preflight-skip.js.map +1 -1
  246. package/dist/release/reconcile-latest.d.ts +29 -0
  247. package/dist/release/reconcile-latest.d.ts.map +1 -0
  248. package/dist/release/reconcile-latest.js +71 -0
  249. package/dist/release/reconcile-latest.js.map +1 -0
  250. package/dist/release/reconcile.d.ts +3 -1
  251. package/dist/release/reconcile.d.ts.map +1 -1
  252. package/dist/release/reconcile.js +18 -6
  253. package/dist/release/reconcile.js.map +1 -1
  254. package/dist/release/release-published.d.ts +27 -0
  255. package/dist/release/release-published.d.ts.map +1 -0
  256. package/dist/release/release-published.js +35 -0
  257. package/dist/release/release-published.js.map +1 -0
  258. package/dist/release/tty-confirm.d.ts +23 -0
  259. package/dist/release/tty-confirm.d.ts.map +1 -0
  260. package/dist/release/tty-confirm.js +50 -0
  261. package/dist/release/tty-confirm.js.map +1 -0
  262. package/dist/remote/index.js +1 -1
  263. package/dist/remote/index.js.map +1 -1
  264. package/dist/resources/admission-ledger.d.ts +103 -1
  265. package/dist/resources/admission-ledger.d.ts.map +1 -1
  266. package/dist/resources/admission-ledger.js +200 -17
  267. package/dist/resources/admission-ledger.js.map +1 -1
  268. package/dist/resources/agent-lease.d.ts +82 -0
  269. package/dist/resources/agent-lease.d.ts.map +1 -0
  270. package/dist/resources/agent-lease.js +167 -0
  271. package/dist/resources/agent-lease.js.map +1 -0
  272. package/dist/resources/governor.d.ts +27 -1
  273. package/dist/resources/governor.d.ts.map +1 -1
  274. package/dist/resources/governor.js +88 -4
  275. package/dist/resources/governor.js.map +1 -1
  276. package/dist/resources/hook-footprint.d.ts +13 -1
  277. package/dist/resources/hook-footprint.d.ts.map +1 -1
  278. package/dist/resources/hook-footprint.js +33 -7
  279. package/dist/resources/hook-footprint.js.map +1 -1
  280. package/dist/resources/run-governed.d.ts +25 -0
  281. package/dist/resources/run-governed.d.ts.map +1 -1
  282. package/dist/resources/run-governed.js +44 -3
  283. package/dist/resources/run-governed.js.map +1 -1
  284. package/dist/sagas/reconcile.d.ts.map +1 -1
  285. package/dist/sagas/reconcile.js +11 -0
  286. package/dist/sagas/reconcile.js.map +1 -1
  287. package/dist/scaffold/ensure-dirs.d.ts.map +1 -1
  288. package/dist/scaffold/ensure-dirs.js +8 -6
  289. package/dist/scaffold/ensure-dirs.js.map +1 -1
  290. package/dist/security/override-cap-setting.d.ts +132 -0
  291. package/dist/security/override-cap-setting.d.ts.map +1 -1
  292. package/dist/security/override-cap-setting.js +88 -10
  293. package/dist/security/override-cap-setting.js.map +1 -1
  294. package/dist/security/owner-override-authority.d.ts.map +1 -1
  295. package/dist/security/owner-override-authority.js +5 -1
  296. package/dist/security/owner-override-authority.js.map +1 -1
  297. package/dist/selfimprove/draft-pr.d.ts.map +1 -1
  298. package/dist/selfimprove/draft-pr.js +4 -1
  299. package/dist/selfimprove/draft-pr.js.map +1 -1
  300. package/dist/session/engine-ops.d.ts.map +1 -1
  301. package/dist/session/engine-ops.js +4 -16
  302. package/dist/session/engine-ops.js.map +1 -1
  303. package/dist/sessions/briefing.d.ts +6 -0
  304. package/dist/sessions/briefing.d.ts.map +1 -1
  305. package/dist/sessions/briefing.js +34 -0
  306. package/dist/sessions/briefing.js.map +1 -1
  307. package/dist/sessions/session-end-snapshot-entry.js +2 -2
  308. package/dist/sessions/session-end-snapshot-entry.js.map +1 -1
  309. package/dist/sessions/session-end-snapshot.js +4 -4
  310. package/dist/sessions/session-end-snapshot.js.map +1 -1
  311. package/dist/skills/injection/token.d.ts.map +1 -1
  312. package/dist/skills/injection/token.js +3 -6
  313. package/dist/skills/injection/token.js.map +1 -1
  314. package/dist/skills/orchestrator/spawn.d.ts.map +1 -1
  315. package/dist/skills/orchestrator/spawn.js +3 -4
  316. package/dist/skills/orchestrator/spawn.js.map +1 -1
  317. package/dist/skills/propose-patch.d.ts.map +1 -1
  318. package/dist/skills/propose-patch.js +4 -1
  319. package/dist/skills/propose-patch.js.map +1 -1
  320. package/dist/spawn/branch-integration.d.ts.map +1 -1
  321. package/dist/spawn/branch-integration.js +5 -2
  322. package/dist/spawn/branch-integration.js.map +1 -1
  323. package/dist/store/attachment-repair.d.ts.map +1 -1
  324. package/dist/store/attachment-repair.js +5 -4
  325. package/dist/store/attachment-repair.js.map +1 -1
  326. package/dist/store/attachment-store.d.ts +6 -0
  327. package/dist/store/attachment-store.d.ts.map +1 -1
  328. package/dist/store/attachment-store.js +19 -2
  329. package/dist/store/attachment-store.js.map +1 -1
  330. package/dist/store/blob-ops.d.ts +1 -1
  331. package/dist/store/blob-ops.d.ts.map +1 -1
  332. package/dist/store/blob-ops.js +7 -3
  333. package/dist/store/blob-ops.js.map +1 -1
  334. package/dist/store/conduit-doc-history.d.ts +15 -1
  335. package/dist/store/conduit-doc-history.d.ts.map +1 -1
  336. package/dist/store/conduit-doc-history.js +16 -10
  337. package/dist/store/conduit-doc-history.js.map +1 -1
  338. package/dist/store/db-helpers.d.ts +29 -0
  339. package/dist/store/db-helpers.d.ts.map +1 -1
  340. package/dist/store/db-helpers.js +89 -1
  341. package/dist/store/db-helpers.js.map +1 -1
  342. package/dist/store/decision-adr-links.d.ts.map +1 -1
  343. package/dist/store/decision-adr-links.js +5 -2
  344. package/dist/store/decision-adr-links.js.map +1 -1
  345. package/dist/store/git-checkpoint.d.ts +11 -1
  346. package/dist/store/git-checkpoint.d.ts.map +1 -1
  347. package/dist/store/git-checkpoint.js +14 -3
  348. package/dist/store/git-checkpoint.js.map +1 -1
  349. package/dist/store/llmtxt-blob-adapter.d.ts.map +1 -1
  350. package/dist/store/llmtxt-blob-adapter.js +4 -1
  351. package/dist/store/llmtxt-blob-adapter.js.map +1 -1
  352. package/dist/store/schema/attachments.d.ts +7 -5
  353. package/dist/store/schema/attachments.d.ts.map +1 -1
  354. package/dist/store/schema/attachments.js +5 -2
  355. package/dist/store/schema/attachments.js.map +1 -1
  356. package/dist/store/session-store.d.ts.map +1 -1
  357. package/dist/store/session-store.js +6 -0
  358. package/dist/store/session-store.js.map +1 -1
  359. package/dist/store/sqlite-backup.d.ts +6 -1
  360. package/dist/store/sqlite-backup.d.ts.map +1 -1
  361. package/dist/store/sqlite-backup.js +9 -5
  362. package/dist/store/sqlite-backup.js.map +1 -1
  363. package/dist/store/sqlite-data-accessor.d.ts.map +1 -1
  364. package/dist/store/sqlite-data-accessor.js +63 -36
  365. package/dist/store/sqlite-data-accessor.js.map +1 -1
  366. package/dist/system/backup.d.ts +29 -0
  367. package/dist/system/backup.d.ts.map +1 -1
  368. package/dist/system/backup.js +240 -37
  369. package/dist/system/backup.js.map +1 -1
  370. package/dist/system/dependencies.d.ts +22 -0
  371. package/dist/system/dependencies.d.ts.map +1 -1
  372. package/dist/system/dependencies.js +49 -2
  373. package/dist/system/dependencies.js.map +1 -1
  374. package/dist/system/health.d.ts.map +1 -1
  375. package/dist/system/health.js +23 -1
  376. package/dist/system/health.js.map +1 -1
  377. package/dist/task-work/claims.d.ts.map +1 -1
  378. package/dist/task-work/claims.js +14 -0
  379. package/dist/task-work/claims.js.map +1 -1
  380. package/dist/task-work/index.d.ts.map +1 -1
  381. package/dist/task-work/index.js +22 -0
  382. package/dist/task-work/index.js.map +1 -1
  383. package/dist/tasks/ac-coverage-gate.d.ts +27 -0
  384. package/dist/tasks/ac-coverage-gate.d.ts.map +1 -1
  385. package/dist/tasks/ac-coverage-gate.js +63 -28
  386. package/dist/tasks/ac-coverage-gate.js.map +1 -1
  387. package/dist/tasks/affected-packages.d.ts +26 -30
  388. package/dist/tasks/affected-packages.d.ts.map +1 -1
  389. package/dist/tasks/affected-packages.js +27 -50
  390. package/dist/tasks/affected-packages.js.map +1 -1
  391. package/dist/tasks/affected-scope.d.ts +13 -3
  392. package/dist/tasks/affected-scope.d.ts.map +1 -1
  393. package/dist/tasks/affected-scope.js +29 -11
  394. package/dist/tasks/affected-scope.js.map +1 -1
  395. package/dist/tasks/change-set.d.ts.map +1 -1
  396. package/dist/tasks/change-set.js +39 -20
  397. package/dist/tasks/change-set.js.map +1 -1
  398. package/dist/tasks/command-gate-cmd.d.ts +33 -0
  399. package/dist/tasks/command-gate-cmd.d.ts.map +1 -0
  400. package/dist/tasks/command-gate-cmd.js +45 -0
  401. package/dist/tasks/command-gate-cmd.js.map +1 -0
  402. package/dist/tasks/complete-ci.d.ts +9 -0
  403. package/dist/tasks/complete-ci.d.ts.map +1 -1
  404. package/dist/tasks/complete-ci.js +21 -4
  405. package/dist/tasks/complete-ci.js.map +1 -1
  406. package/dist/tasks/complete.d.ts.map +1 -1
  407. package/dist/tasks/complete.js +14 -0
  408. package/dist/tasks/complete.js.map +1 -1
  409. package/dist/tasks/component-pr.d.ts +37 -0
  410. package/dist/tasks/component-pr.d.ts.map +1 -1
  411. package/dist/tasks/component-pr.js +106 -14
  412. package/dist/tasks/component-pr.js.map +1 -1
  413. package/dist/tasks/done-plan.d.ts +14 -1
  414. package/dist/tasks/done-plan.d.ts.map +1 -1
  415. package/dist/tasks/done-plan.js +125 -15
  416. package/dist/tasks/done-plan.js.map +1 -1
  417. package/dist/tasks/done-record.d.ts.map +1 -1
  418. package/dist/tasks/done-record.js +4 -0
  419. package/dist/tasks/done-record.js.map +1 -1
  420. package/dist/tasks/engine-converters.d.ts.map +1 -1
  421. package/dist/tasks/engine-converters.js +2 -0
  422. package/dist/tasks/engine-converters.js.map +1 -1
  423. package/dist/tasks/evidence-tree.d.ts +28 -1
  424. package/dist/tasks/evidence-tree.d.ts.map +1 -1
  425. package/dist/tasks/evidence-tree.js +66 -2
  426. package/dist/tasks/evidence-tree.js.map +1 -1
  427. package/dist/tasks/evidence.d.ts +39 -27
  428. package/dist/tasks/evidence.d.ts.map +1 -1
  429. package/dist/tasks/evidence.js +382 -188
  430. package/dist/tasks/evidence.js.map +1 -1
  431. package/dist/tasks/gate-notes.d.ts +17 -0
  432. package/dist/tasks/gate-notes.d.ts.map +1 -1
  433. package/dist/tasks/gate-notes.js.map +1 -1
  434. package/dist/tasks/gate-preview.d.ts +7 -1
  435. package/dist/tasks/gate-preview.d.ts.map +1 -1
  436. package/dist/tasks/gate-preview.js +30 -4
  437. package/dist/tasks/gate-preview.js.map +1 -1
  438. package/dist/tasks/gate-runner.d.ts +42 -0
  439. package/dist/tasks/gate-runner.d.ts.map +1 -1
  440. package/dist/tasks/gate-runner.js +234 -94
  441. package/dist/tasks/gate-runner.js.map +1 -1
  442. package/dist/tasks/manifest-scope.d.ts +115 -0
  443. package/dist/tasks/manifest-scope.d.ts.map +1 -0
  444. package/dist/tasks/manifest-scope.js +352 -0
  445. package/dist/tasks/manifest-scope.js.map +1 -0
  446. package/dist/tasks/merge-close.d.ts +376 -0
  447. package/dist/tasks/merge-close.d.ts.map +1 -0
  448. package/dist/tasks/merge-close.js +1497 -0
  449. package/dist/tasks/merge-close.js.map +1 -0
  450. package/dist/tasks/qa-run-binding.d.ts +5 -0
  451. package/dist/tasks/qa-run-binding.d.ts.map +1 -1
  452. package/dist/tasks/qa-run-binding.js +6 -1
  453. package/dist/tasks/qa-run-binding.js.map +1 -1
  454. package/dist/tasks/req.d.ts.map +1 -1
  455. package/dist/tasks/req.js +29 -1
  456. package/dist/tasks/req.js.map +1 -1
  457. package/dist/tasks/review-verdict.d.ts +159 -0
  458. package/dist/tasks/review-verdict.d.ts.map +1 -0
  459. package/dist/tasks/review-verdict.js +442 -0
  460. package/dist/tasks/review-verdict.js.map +1 -0
  461. package/dist/tasks/task-reparent.d.ts.map +1 -1
  462. package/dist/tasks/task-reparent.js +22 -3
  463. package/dist/tasks/task-reparent.js.map +1 -1
  464. package/dist/tasks/test-report-counts.d.ts +274 -0
  465. package/dist/tasks/test-report-counts.d.ts.map +1 -0
  466. package/dist/tasks/test-report-counts.js +746 -0
  467. package/dist/tasks/test-report-counts.js.map +1 -0
  468. package/dist/tasks/test-run-binding.d.ts +20 -45
  469. package/dist/tasks/test-run-binding.d.ts.map +1 -1
  470. package/dist/tasks/test-run-binding.js +34 -119
  471. package/dist/tasks/test-run-binding.js.map +1 -1
  472. package/dist/tasks/update.d.ts.map +1 -1
  473. package/dist/tasks/update.js +42 -0
  474. package/dist/tasks/update.js.map +1 -1
  475. package/dist/tasks/verification-policy.d.ts +12 -0
  476. package/dist/tasks/verification-policy.d.ts.map +1 -1
  477. package/dist/tasks/verification-policy.js +13 -0
  478. package/dist/tasks/verification-policy.js.map +1 -1
  479. package/dist/tasks/workspace-resolution.d.ts +225 -0
  480. package/dist/tasks/workspace-resolution.d.ts.map +1 -0
  481. package/dist/tasks/workspace-resolution.js +497 -0
  482. package/dist/tasks/workspace-resolution.js.map +1 -0
  483. package/dist/validation/doctor/checks.d.ts +20 -0
  484. package/dist/validation/doctor/checks.d.ts.map +1 -1
  485. package/dist/validation/doctor/checks.js +112 -0
  486. package/dist/validation/doctor/checks.js.map +1 -1
  487. package/dist/validation/engine-ops.d.ts.map +1 -1
  488. package/dist/validation/engine-ops.js +37 -3
  489. package/dist/validation/engine-ops.js.map +1 -1
  490. package/dist/validation/validate-ops.d.ts +4 -0
  491. package/dist/validation/validate-ops.d.ts.map +1 -1
  492. package/dist/validation/validate-ops.js +79 -2
  493. package/dist/validation/validate-ops.js.map +1 -1
  494. package/dist/worktree/list.d.ts +4 -21
  495. package/dist/worktree/list.d.ts.map +1 -1
  496. package/dist/worktree/list.js +14 -44
  497. package/dist/worktree/list.js.map +1 -1
  498. package/dist/worktree/merged-cleanup.d.ts +63 -0
  499. package/dist/worktree/merged-cleanup.d.ts.map +1 -0
  500. package/dist/worktree/merged-cleanup.js +571 -0
  501. package/dist/worktree/merged-cleanup.js.map +1 -0
  502. package/dist/worktree/prune.d.ts +64 -2
  503. package/dist/worktree/prune.d.ts.map +1 -1
  504. package/dist/worktree/prune.js +151 -6
  505. package/dist/worktree/prune.js.map +1 -1
  506. package/dist/worktree/sentinel-index.d.ts +14 -0
  507. package/dist/worktree/sentinel-index.d.ts.map +1 -1
  508. package/dist/worktree/sentinel-index.js +17 -0
  509. package/dist/worktree/sentinel-index.js.map +1 -1
  510. package/dist/worktree/worktree-adopt.d.ts +1 -13
  511. package/dist/worktree/worktree-adopt.d.ts.map +1 -1
  512. package/dist/worktree/worktree-adopt.js +2 -17
  513. package/dist/worktree/worktree-adopt.js.map +1 -1
  514. package/package.json +12 -12
  515. package/schemas/project-context.schema.json +33 -0
  516. package/templates/CLEO-INJECTION.md +6 -16
  517. package/templates/CLEO-REFERENCE.md +27 -4
  518. package/templates/git-hooks/legacy-hashes.json +2 -1
  519. package/templates/git-hooks/pre-commit +43 -11
  520. package/templates/workflows/release-prepare.yml.tmpl +9 -88
@@ -0,0 +1,497 @@
1
+ /**
2
+ * Whether a test run in a checkout tests that checkout's own workspace
3
+ * packages (T14097).
4
+ *
5
+ * A worktree whose `node_modules` is a symlink to another checkout's resolves
6
+ * `@scope/pkg` to THAT checkout's `packages/pkg/dist`, built from other source.
7
+ * Its tests then exercise code that is not the tree under test, and a
8
+ * `test-run:` receipt would bind to it. Observed: `done-plan.test.ts` in an
9
+ * evidence worktree at main gave 51 false failures (`isCleoProvisionedWorktree
10
+ * is not a function`) because `@cleocode/worktree` loaded the root checkout's
11
+ * older build.
12
+ *
13
+ * Two findings, of different strength:
14
+ *
15
+ * - **Foreign resolution** — a workspace dependency whose real path is not this
16
+ * checkout's package directory and whose committed source differs from this
17
+ * checkout's (or either side has uncommitted changes). Precise; test runs and
18
+ * receipts refuse it. A provisioned worktree that shares the root checkout's
19
+ * `node_modules` while both hold the same clean source for that package is
20
+ * only warned about (`borrowed`): the build it loads is of identical source.
21
+ * - **Stale dist** — a package whose build stamp records a hash of other
22
+ * source than its tracked `src/` holds now. The build writes the stamp
23
+ * ({@link writeSourceStamps}); file mtimes are no evidence, since a checkout
24
+ * or branch switch rewrites them without changing content. A dist without a
25
+ * stamp, or rebuilt after its stamp, cannot be judged and is not reported.
26
+ * Test runs and receipts refuse it (T14123).
27
+ *
28
+ * @module tasks/workspace-resolution
29
+ * @task T14097
30
+ * @task T14123
31
+ */
32
+ import { execFileSync } from 'node:child_process';
33
+ import { createHash } from 'node:crypto';
34
+ import { existsSync, readdirSync, readFileSync, realpathSync, statSync, writeFileSync, } from 'node:fs';
35
+ import { isAbsolute, join, relative, resolve } from 'node:path';
36
+ import { ExitCode } from '@cleocode/contracts/exit-codes.js';
37
+ import { CleoError } from '../errors.js';
38
+ import { discoveryEnv } from '../git/work-tree.js';
39
+ import { inPackageDir, listWorkspacePackages, TEST_FILE } from './affected-packages.js';
40
+ /** File name of the build stamp inside a package's `dist/`. */
41
+ export const SOURCE_STAMP_FILE = '.source-stamp.json';
42
+ /** Real path, or null when it does not exist. */
43
+ function real(path) {
44
+ try {
45
+ return realpathSync(path);
46
+ }
47
+ catch {
48
+ return null;
49
+ }
50
+ }
51
+ /** Newest mtime of any file under `dir` (recursively), or -1 when it holds none. */
52
+ function newestMtime(dir) {
53
+ let newest = -1;
54
+ const walk = (d) => {
55
+ let entries;
56
+ try {
57
+ entries = readdirSync(d, { withFileTypes: true });
58
+ }
59
+ catch {
60
+ return;
61
+ }
62
+ for (const e of entries) {
63
+ if (e.name === 'node_modules' || e.name === SOURCE_STAMP_FILE)
64
+ continue;
65
+ const p = join(d, e.name);
66
+ if (e.isDirectory())
67
+ walk(p);
68
+ else if (e.isFile())
69
+ newest = Math.max(newest, statSync(p).mtimeMs);
70
+ }
71
+ };
72
+ walk(dir);
73
+ return newest;
74
+ }
75
+ /**
76
+ * The committed tree of a package directory, or null when it has uncommitted
77
+ * changes or git cannot tell (then it is never taken as identical).
78
+ */
79
+ function cleanTreeOf(dir) {
80
+ const checkout = checkoutRootOf(dir);
81
+ if (checkout === null)
82
+ return null;
83
+ const rel = relative(checkout, dir).split('\\').join('/');
84
+ if (rel === '' || rel.startsWith('..'))
85
+ return null;
86
+ const git = (args) => {
87
+ try {
88
+ return execFileSync('git', args, {
89
+ cwd: checkout,
90
+ encoding: 'utf-8',
91
+ env: discoveryEnv(),
92
+ stdio: ['ignore', 'pipe', 'ignore'],
93
+ }).trim();
94
+ }
95
+ catch {
96
+ return null;
97
+ }
98
+ };
99
+ const status = git(['status', '--porcelain', '--', rel]);
100
+ if (status === null || status !== '')
101
+ return null;
102
+ return git(['rev-parse', `HEAD:${rel}`]);
103
+ }
104
+ /** Whether two package directories hold the same committed, clean source. */
105
+ function sameSource(a, b) {
106
+ const left = cleanTreeOf(a);
107
+ return left !== null && left === cleanTreeOf(b);
108
+ }
109
+ /** Tracked non-test files under each `<dir>/src`, keyed by dir. */
110
+ function trackedSources(root, dirs) {
111
+ const out = new Map(dirs.map((d) => [d, []]));
112
+ if (dirs.length === 0)
113
+ return out;
114
+ let listed;
115
+ try {
116
+ listed = execFileSync('git', ['ls-files', '-z', '--', ...dirs.map((d) => `${d}/src`)], {
117
+ cwd: root,
118
+ encoding: 'utf-8',
119
+ env: discoveryEnv(),
120
+ stdio: ['ignore', 'pipe', 'ignore'],
121
+ maxBuffer: 64 * 1024 * 1024,
122
+ });
123
+ }
124
+ catch {
125
+ return out;
126
+ }
127
+ for (const file of listed.split('\0')) {
128
+ if (file === '' || TEST_FILE.test(file) || file.includes('/__tests__/'))
129
+ continue;
130
+ const dir = dirs.find((d) => file.startsWith(`${d}/src/`));
131
+ if (dir !== undefined)
132
+ out.get(dir)?.push(file);
133
+ }
134
+ return out;
135
+ }
136
+ /**
137
+ * Content hash of source files: each file's path and the sha256 of its bytes,
138
+ * in path order. Identical source gives the same hash in any checkout, at any
139
+ * mtime.
140
+ *
141
+ * @param root - The checkout root the paths are relative to.
142
+ * @param files - Source files, relative to `root`.
143
+ * @returns The hex sha256.
144
+ * @task T14097
145
+ */
146
+ export function sourceHash(root, files) {
147
+ const hash = createHash('sha256');
148
+ for (const file of [...files].sort()) {
149
+ let bytes;
150
+ try {
151
+ bytes = readFileSync(join(root, file));
152
+ }
153
+ catch {
154
+ continue;
155
+ }
156
+ hash.update(`${file}\0${createHash('sha256').update(bytes).digest('hex')}\0`);
157
+ }
158
+ return hash.digest('hex');
159
+ }
160
+ /**
161
+ * The build stamp in `distDir` and when it was written, or null when it is
162
+ * missing, unreadable or of another schema (an older stamp is not judged).
163
+ */
164
+ function readSourceStamp(distDir) {
165
+ const path = join(distDir, SOURCE_STAMP_FILE);
166
+ let stamp;
167
+ let writtenMs;
168
+ try {
169
+ stamp = JSON.parse(readFileSync(path, 'utf-8'));
170
+ writtenMs = statSync(path).mtimeMs;
171
+ }
172
+ catch {
173
+ return null;
174
+ }
175
+ return stamp?.schema === 2 && typeof stamp.sourceHash === 'string'
176
+ ? { stamp: { schema: 2, sourceHash: stamp.sourceHash }, writtenMs }
177
+ : null;
178
+ }
179
+ /**
180
+ * Stamp every built workspace package of a checkout with the hash of the
181
+ * source its `dist/` was built from. The root build runs it last, so
182
+ * {@link checkWorkspaceResolution} can tell a build of other source from one
183
+ * whose source a checkout merely touched.
184
+ *
185
+ * @param root - The checkout root.
186
+ * @returns The package directories stamped.
187
+ * @task T14097
188
+ */
189
+ export function writeSourceStamps(root) {
190
+ const built = listWorkspacePackages(root).filter((p) => p.dir !== '' && existsSync(join(root, p.dir, 'dist')));
191
+ const sources = trackedSources(root, built.map((p) => p.dir));
192
+ const stamped = [];
193
+ for (const p of built) {
194
+ const dist = join(root, p.dir, 'dist');
195
+ const stamp = {
196
+ schema: 2,
197
+ sourceHash: sourceHash(root, sources.get(p.dir) ?? []),
198
+ };
199
+ writeFileSync(join(dist, SOURCE_STAMP_FILE), `${JSON.stringify(stamp, null, 2)}\n`);
200
+ stamped.push(p.dir);
201
+ }
202
+ return stamped;
203
+ }
204
+ /**
205
+ * Check how a checkout's workspace packages resolve their workspace
206
+ * dependencies, the way Node looks them up: the importer's own
207
+ * `node_modules`, then the root's. A real path outside this checkout's copy
208
+ * of the dependency is foreign. Of the dependencies that resolve in-tree,
209
+ * those whose build stamp records other source than their tracked `src/` holds
210
+ * are stale.
211
+ *
212
+ * A checkout that declares no workspace has nothing to check; a dependency
213
+ * that resolves nowhere is left to the runner, which reports it itself.
214
+ *
215
+ * @param root - The checkout root (its git top level).
216
+ * @param scope - Package names whose dependency closure is checked; all packages when omitted or empty.
217
+ * @returns The foreign resolutions and stale builds found.
218
+ * @task T14097
219
+ */
220
+ export function checkWorkspaceResolution(root, scope) {
221
+ const packages = listWorkspacePackages(root).filter((p) => p.dir !== '');
222
+ const byName = new Map(packages.map((p) => [p.name, p]));
223
+ const importers = scope === undefined || scope.length === 0
224
+ ? packages
225
+ : packages.filter((p) => scope.includes(p.name));
226
+ // The dependency closure of the importers: every package a test there loads.
227
+ const closure = new Set();
228
+ const pending = importers.map((p) => p.name);
229
+ while (pending.length > 0) {
230
+ const name = pending.pop();
231
+ if (closure.has(name))
232
+ continue;
233
+ closure.add(name);
234
+ for (const dep of byName.get(name)?.deps ?? [])
235
+ pending.push(dep);
236
+ }
237
+ const foreign = [];
238
+ const borrowed = [];
239
+ const inTree = new Set();
240
+ for (const name of closure) {
241
+ const importer = byName.get(name);
242
+ if (importer === undefined)
243
+ continue;
244
+ for (const dep of importer.deps) {
245
+ const own = byName.get(dep);
246
+ if (own === undefined)
247
+ continue;
248
+ const expected = real(join(root, own.dir));
249
+ const resolved = real(join(root, importer.dir, 'node_modules', dep)) ??
250
+ real(join(root, 'node_modules', dep));
251
+ if (expected === null || resolved === null)
252
+ continue;
253
+ const entry = { importer: name, dependency: dep, resolved, expected };
254
+ if (resolved === expected)
255
+ inTree.add(dep);
256
+ else if (sameSource(expected, resolved))
257
+ borrowed.push(entry);
258
+ else
259
+ foreign.push(entry);
260
+ }
261
+ }
262
+ const candidates = [...inTree]
263
+ .map((n) => byName.get(n))
264
+ .filter((p) => p !== undefined)
265
+ .filter((p) => existsSync(join(root, p.dir, 'dist')));
266
+ const sources = trackedSources(root, candidates.map((p) => p.dir));
267
+ const staleDist = [];
268
+ const unstamped = [];
269
+ for (const p of candidates) {
270
+ const read = readSourceStamp(join(root, p.dir, 'dist'));
271
+ // No stamp: nothing proves the build matches its source, so it is warned about.
272
+ if (read === null) {
273
+ unstamped.push({ package: p.name, dir: p.dir });
274
+ continue;
275
+ }
276
+ // A rebuild since the stamp was written: nothing proves the build old.
277
+ if (newestMtime(join(root, p.dir, 'dist')) > read.writtenMs)
278
+ continue;
279
+ if (sourceHash(root, sources.get(p.dir) ?? []) !== read.stamp.sourceHash)
280
+ staleDist.push({ package: p.name, dir: p.dir });
281
+ }
282
+ return { root, foreign, borrowed, staleDist, unstamped };
283
+ }
284
+ /**
285
+ * The workspace packages a test command names through its test-file
286
+ * arguments, so a run of one file checks only what that file loads. Empty
287
+ * when it names none (the whole workspace is then checked).
288
+ *
289
+ * @param root - The checkout root.
290
+ * @param cwd - The directory the command runs in.
291
+ * @param argv - The command and its arguments.
292
+ * @returns Names of the packages owning the named test files.
293
+ * @task T14097
294
+ */
295
+ export function packagesNamedByTestArgs(root, cwd, argv) {
296
+ const packages = listWorkspacePackages(root)
297
+ .filter((p) => p.dir !== '')
298
+ .sort((a, b) => b.dir.length - a.dir.length);
299
+ const named = new Set();
300
+ for (const arg of argv) {
301
+ if (!TEST_FILE.test(arg))
302
+ continue;
303
+ const rel = relative(root, isAbsolute(arg) ? arg : resolve(cwd, arg))
304
+ .split('\\')
305
+ .join('/');
306
+ const owner = packages.find((p) => inPackageDir(rel, p.dir));
307
+ if (owner !== undefined)
308
+ named.add(owner.name);
309
+ }
310
+ return [...named];
311
+ }
312
+ /**
313
+ * The git top level of `dir`, or null outside a checkout.
314
+ *
315
+ * @param dir - Any directory.
316
+ * @returns The checkout root, or null.
317
+ */
318
+ export function checkoutRootOf(dir) {
319
+ try {
320
+ return (execFileSync('git', ['rev-parse', '--show-toplevel'], {
321
+ cwd: dir,
322
+ encoding: 'utf-8',
323
+ env: discoveryEnv(),
324
+ stdio: ['ignore', 'pipe', 'ignore'],
325
+ }).trim() || null);
326
+ }
327
+ catch {
328
+ return null;
329
+ }
330
+ }
331
+ /**
332
+ * {@link checkWorkspaceResolution} for a test command run in `cwd`: the
333
+ * checkout around it, scoped to the packages its test-file arguments name.
334
+ *
335
+ * @param cwd - The directory the command runs in.
336
+ * @param argv - The command and its arguments.
337
+ * @returns The report, or null outside a checkout.
338
+ * @task T14097
339
+ */
340
+ export function workspaceResolutionForTestRun(cwd, argv) {
341
+ const root = checkoutRootOf(cwd);
342
+ return root === null
343
+ ? null
344
+ : checkWorkspaceResolution(root, packagesNamedByTestArgs(root, cwd, argv));
345
+ }
346
+ /** The remedy for a foreign resolution, in this checkout. */
347
+ function remedy(report) {
348
+ const deps = [...new Set(report.foreign.map((f) => f.dependency))];
349
+ return (`Give this checkout its own install and build: in ${report.root}, remove a symlinked ` +
350
+ 'node_modules, run `pnpm install --frozen-lockfile`, then build what the tests import ' +
351
+ `(\`pnpm ${deps.map((d) => `--filter "${d}..."`).join(' ')} run build\`).`);
352
+ }
353
+ /**
354
+ * One sentence naming the foreign resolutions, or null when there are none.
355
+ *
356
+ * @param report - A {@link checkWorkspaceResolution} result.
357
+ * @returns The refusal reason, with its remedy.
358
+ * @task T14097
359
+ */
360
+ export function foreignResolutionReason(report) {
361
+ if (report.foreign.length === 0)
362
+ return null;
363
+ const shown = report.foreign
364
+ .slice(0, 3)
365
+ .map((f) => `${f.dependency} (imported by ${f.importer}) resolves to ${f.resolved}, not ${f.expected}`)
366
+ .join('; ');
367
+ const more = report.foreign.length > 3 ? `; … (${report.foreign.length} in all)` : '';
368
+ return (`Workspace packages resolve outside this checkout, so its tests would run another ` +
369
+ `checkout's build: ${shown}${more}. ${remedy(report)}`);
370
+ }
371
+ /** The rebuild command for stale builds. */
372
+ function staleRemedy(report) {
373
+ return `Rebuild them: \`pnpm ${report.staleDist.map((s) => `--filter "${s.package}"`).join(' ')} run build\`.`;
374
+ }
375
+ /**
376
+ * One sentence naming the packages whose dist was built from other source,
377
+ * or null when there are none (T14123).
378
+ *
379
+ * @param report - A {@link checkWorkspaceResolution} result.
380
+ * @returns The refusal reason, with the rebuild command.
381
+ * @task T14123
382
+ */
383
+ export function staleDistReason(report) {
384
+ if (report.staleDist.length === 0)
385
+ return null;
386
+ const shown = report.staleDist
387
+ .slice(0, 3)
388
+ .map((s) => s.package)
389
+ .join(', ');
390
+ const more = report.staleDist.length > 3 ? `, … (${report.staleDist.length} in all)` : '';
391
+ return (`The dist of ${shown}${more} was built from other source than ${report.staleDist.length === 1 ? 'it holds' : 'they hold'} ` +
392
+ `now, so tests importing ${report.staleDist.length === 1 ? 'it' : 'them'} would run that build. ${staleRemedy(report)}`);
393
+ }
394
+ /**
395
+ * The warning for a borrowed build (identical source in another checkout),
396
+ * or null when there is none.
397
+ *
398
+ * @param report - A {@link checkWorkspaceResolution} result.
399
+ * @returns The warning text.
400
+ * @task T14097
401
+ */
402
+ export function borrowedBuildWarning(report) {
403
+ if (report.borrowed.length === 0)
404
+ return null;
405
+ return `${[...new Set(report.borrowed.map((b) => b.dependency))].join(', ')} resolve${report.borrowed.length === 1 ? 's' : ''} to another checkout (${report.borrowed[0]?.resolved}) whose source is identical; its build is used.`;
406
+ }
407
+ /** The fix for unstamped builds: the root build stamps every package. */
408
+ export const UNSTAMPED_DIST_FIX = 'Run the root build (`pnpm run build`), which stamps every package.';
409
+ /**
410
+ * One summary line for built packages with no stamp, or null when every
411
+ * built package is stamped (T14123). Nothing proves such a dist matches its
412
+ * source, so the run proceeds with this warning.
413
+ *
414
+ * @param report - A {@link checkWorkspaceResolution} result.
415
+ * @returns The warning text, with its fix.
416
+ * @task T14123
417
+ */
418
+ export function unstampedDistWarning(report) {
419
+ if (report.unstamped.length === 0)
420
+ return null;
421
+ const shown = report.unstamped
422
+ .slice(0, 3)
423
+ .map((s) => s.package)
424
+ .join(', ');
425
+ const more = report.unstamped.length > 3 ? `, … (${report.unstamped.length} in all)` : '';
426
+ return `No build stamp for ${shown}${more}, so nothing shows ${report.unstamped.length === 1 ? 'its' : 'their'} dist matches the source. ${UNSTAMPED_DIST_FIX}`;
427
+ }
428
+ /**
429
+ * The refusal for a test run in this checkout, foreign resolution first, or
430
+ * null when the run may proceed.
431
+ *
432
+ * @param report - A {@link checkWorkspaceResolution} result.
433
+ * @returns The error to throw or report.
434
+ * @task T14123
435
+ */
436
+ export function workspaceResolutionError(report) {
437
+ // @sync-invariant none:input-shape a test run against another checkout's build is refused before anything is written
438
+ if (report.foreign.length > 0)
439
+ return new ForeignWorkspaceResolutionError(report);
440
+ // @sync-invariant none:input-shape a test run against a dist built from other source is refused before anything is written
441
+ if (report.staleDist.length > 0)
442
+ return new StaleDistError(report);
443
+ return null;
444
+ }
445
+ /**
446
+ * `cleo run --class test` refused: a workspace package resolves into another
447
+ * checkout (T14097).
448
+ *
449
+ * @task T14097
450
+ */
451
+ export class ForeignWorkspaceResolutionError extends CleoError {
452
+ /** Stable machine-readable error code. */
453
+ codeName = 'E_WORKSPACE_FOREIGN_CHECKOUT';
454
+ /**
455
+ * @param report - The check that found foreign resolutions.
456
+ */
457
+ constructor(report) {
458
+ super(ExitCode.CONFIG_ERROR, foreignResolutionReason(report) ?? 'foreign resolution', {
459
+ fix: remedy(report),
460
+ details: {
461
+ field: 'node_modules',
462
+ expected: `workspace packages resolved inside ${report.root}`,
463
+ actual: report.foreign.map((f) => `${f.dependency} -> ${f.resolved}`).join(', '),
464
+ root: report.root,
465
+ foreign: report.foreign,
466
+ },
467
+ });
468
+ this.name = 'ForeignWorkspaceResolutionError';
469
+ }
470
+ }
471
+ /**
472
+ * `cleo run --class test` or a test-run receipt refused: a workspace package's
473
+ * dist was built from other source than it holds (T14123).
474
+ *
475
+ * @task T14123
476
+ */
477
+ export class StaleDistError extends CleoError {
478
+ /** Stable machine-readable error code. */
479
+ codeName = 'E_WORKSPACE_STALE_DIST';
480
+ /**
481
+ * @param report - The check that found stale builds.
482
+ */
483
+ constructor(report) {
484
+ super(ExitCode.CONFIG_ERROR, staleDistReason(report) ?? 'stale dist', {
485
+ fix: staleRemedy(report),
486
+ details: {
487
+ field: 'dist',
488
+ expected: `dist built from the source ${report.root} holds`,
489
+ actual: report.staleDist.map((s) => `${s.package} (${s.dir}/dist)`).join(', '),
490
+ root: report.root,
491
+ staleDist: report.staleDist,
492
+ },
493
+ });
494
+ this.name = 'StaleDistError';
495
+ }
496
+ }
497
+ //# sourceMappingURL=workspace-resolution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-resolution.js","sourceRoot":"","sources":["../../src/tasks/workspace-resolution.ts"],"names":[],"mappings":"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"}
@@ -41,6 +41,26 @@ export declare function checkCleoGitignore(projectRoot?: string): CheckResult;
41
41
  * @task T4700
42
42
  */
43
43
  export declare function checkVitalFilesTracked(projectRoot?: string): CheckResult;
44
+ /**
45
+ * Staged paths that carry CLEO runtime state, at ANY path: the rule the managed
46
+ * pre-commit hook (`templates/git-hooks/pre-commit` §3) enforces. A database
47
+ * by name; `project-info.json` whose staged content names a `"projectId"`; a
48
+ * `config.json` at `.cleo/config.json` or byte-identical to it.
49
+ *
50
+ * @param root - Repository root.
51
+ * @returns The offending staged paths, or `null` when git cannot be read.
52
+ * @task T14189
53
+ */
54
+ export declare function stagedCleoStatePaths(root: string): string[] | null;
55
+ /**
56
+ * Check that the index stages no CLEO runtime state (T14189): databases,
57
+ * project identity or a copy of `.cleo/config.json`, at any path.
58
+ *
59
+ * @param projectRoot - Project root (defaults to the resolved root).
60
+ * @returns The check result, naming the paths and the `git reset` that unstages them.
61
+ * @task T14189
62
+ */
63
+ export declare function checkStagedCleoState(projectRoot?: string): CheckResult;
44
64
  /**
45
65
  * Check that core CLEO files are not being ignored by .gitignore.
46
66
  * Uses `git check-ignore` to detect files that would be excluded by
@@ -1 +1 @@
1
- {"version":3,"file":"checks.d.ts","sourceRoot":"","sources":["../../../src/validation/doctor/checks.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAyCH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAE5E,YAAY,EACV,WAAW,EACX,WAAW,GACZ,MAAM,0CAA0C,CAAC;AAMlD,kBAAkB;AAClB,wBAAgB,oBAAoB,CAAC,QAAQ,GAAE,MAAsB,GAAG,WAAW,CAYlF;AASD,kBAAkB;AAClB,wBAAgB,eAAe,CAAC,QAAQ,GAAE,MAAsB,GAAG,WAAW,CAyB7E;AAMD,kBAAkB;AAClB,wBAAgB,sBAAsB,CAAC,QAAQ,GAAE,MAAsB,GAAG,WAAW,CAoCpF;AAoBD,kBAAkB;AAClB,wBAAgB,0BAA0B,IAAI,WAAW,CAkDxD;AAMD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,CA4DlE;AAMD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,CAuDpE;AAMD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,CAiFpE;AA+BD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,CAsDxE;AAMD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,CAuD1E;AAMD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,CAsDvE;AA4BD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,0BAA0B,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,CAwE5E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,CAmGxE;AAMD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,CAwBzE;AAMD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,CAyF1E;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,CAkE3E;AAMD;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,CA8E9E;AAMD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,CAkDxE;AAMD;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,WAAW,CAoDrD;AAMD;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,WAAW,CAkC9C;AAMD;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,WAAW,CA4C1E;AAMD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,CAuBrE;AAMD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,aAAa,CAAC,EAAE,MAAM,EACtB,aAAa,GAAE,GAAG,CAAC,MAAM,CAAa,GACrC,WAAW,CAmFb;AAMD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,mBAAmB,CACvC,eAAe,CAAC,EAAE,MAAM,EACxB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,WAAW,CAAC,CAwCtB;AAUD;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA2DvF;AAMD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,0BAA0B,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA6C3F;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,CA2BtE;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,qBAAqB,CACzC,WAAW,CAAC,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,WAAW,CAAC,CAqBtB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,CAqExE;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAuBjF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,GAAE,MAAkB,GAAG,WAAW,CAuCzE;AAsFD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,8BAA8B,CAC5C,UAAU,GAAE,MAAiE,GAC5E,WAAW,CA6Eb;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE,CAuCzF;AAMD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAOnE"}
1
+ {"version":3,"file":"checks.d.ts","sourceRoot":"","sources":["../../../src/validation/doctor/checks.ts"],"names":[],"mappings":"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"}