@manehorizons/cadence-core 1.1.1

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 (476) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +5 -0
  3. package/bin/cadence.cjs +4 -0
  4. package/dist/build/record.d.ts +16 -0
  5. package/dist/build/record.d.ts.map +1 -0
  6. package/dist/build/record.js +33 -0
  7. package/dist/build/record.js.map +1 -0
  8. package/dist/checks/boundary.d.ts +35 -0
  9. package/dist/checks/boundary.d.ts.map +1 -0
  10. package/dist/checks/boundary.js +29 -0
  11. package/dist/checks/boundary.js.map +1 -0
  12. package/dist/checks/skill-audit.d.ts +29 -0
  13. package/dist/checks/skill-audit.d.ts.map +1 -0
  14. package/dist/checks/skill-audit.js +57 -0
  15. package/dist/checks/skill-audit.js.map +1 -0
  16. package/dist/classify/tier.d.ts +9 -0
  17. package/dist/classify/tier.d.ts.map +1 -0
  18. package/dist/classify/tier.js +15 -0
  19. package/dist/classify/tier.js.map +1 -0
  20. package/dist/cli/commands/assumption.d.ts +3 -0
  21. package/dist/cli/commands/assumption.d.ts.map +1 -0
  22. package/dist/cli/commands/assumption.js +313 -0
  23. package/dist/cli/commands/assumption.js.map +1 -0
  24. package/dist/cli/commands/block.d.ts +3 -0
  25. package/dist/cli/commands/block.d.ts.map +1 -0
  26. package/dist/cli/commands/block.js +23 -0
  27. package/dist/cli/commands/block.js.map +1 -0
  28. package/dist/cli/commands/build.d.ts +3 -0
  29. package/dist/cli/commands/build.d.ts.map +1 -0
  30. package/dist/cli/commands/build.js +89 -0
  31. package/dist/cli/commands/build.js.map +1 -0
  32. package/dist/cli/commands/config.d.ts +3 -0
  33. package/dist/cli/commands/config.d.ts.map +1 -0
  34. package/dist/cli/commands/config.js +91 -0
  35. package/dist/cli/commands/config.js.map +1 -0
  36. package/dist/cli/commands/context.d.ts +3 -0
  37. package/dist/cli/commands/context.d.ts.map +1 -0
  38. package/dist/cli/commands/context.js +31 -0
  39. package/dist/cli/commands/context.js.map +1 -0
  40. package/dist/cli/commands/decision.d.ts +3 -0
  41. package/dist/cli/commands/decision.d.ts.map +1 -0
  42. package/dist/cli/commands/decision.js +390 -0
  43. package/dist/cli/commands/decision.js.map +1 -0
  44. package/dist/cli/commands/done.d.ts +3 -0
  45. package/dist/cli/commands/done.d.ts.map +1 -0
  46. package/dist/cli/commands/done.js +23 -0
  47. package/dist/cli/commands/done.js.map +1 -0
  48. package/dist/cli/commands/draft-new.d.ts +4 -0
  49. package/dist/cli/commands/draft-new.d.ts.map +1 -0
  50. package/dist/cli/commands/draft-new.js +108 -0
  51. package/dist/cli/commands/draft-new.js.map +1 -0
  52. package/dist/cli/commands/draft.d.ts +4 -0
  53. package/dist/cli/commands/draft.d.ts.map +1 -0
  54. package/dist/cli/commands/draft.js +125 -0
  55. package/dist/cli/commands/draft.js.map +1 -0
  56. package/dist/cli/commands/hook.d.ts +3 -0
  57. package/dist/cli/commands/hook.d.ts.map +1 -0
  58. package/dist/cli/commands/hook.js +50 -0
  59. package/dist/cli/commands/hook.js.map +1 -0
  60. package/dist/cli/commands/init.d.ts +21 -0
  61. package/dist/cli/commands/init.d.ts.map +1 -0
  62. package/dist/cli/commands/init.js +255 -0
  63. package/dist/cli/commands/init.js.map +1 -0
  64. package/dist/cli/commands/inspect.d.ts +3 -0
  65. package/dist/cli/commands/inspect.d.ts.map +1 -0
  66. package/dist/cli/commands/inspect.js +24 -0
  67. package/dist/cli/commands/inspect.js.map +1 -0
  68. package/dist/cli/commands/intelligence.d.ts +3 -0
  69. package/dist/cli/commands/intelligence.d.ts.map +1 -0
  70. package/dist/cli/commands/intelligence.js +173 -0
  71. package/dist/cli/commands/intelligence.js.map +1 -0
  72. package/dist/cli/commands/milestone.d.ts +3 -0
  73. package/dist/cli/commands/milestone.d.ts.map +1 -0
  74. package/dist/cli/commands/milestone.js +119 -0
  75. package/dist/cli/commands/milestone.js.map +1 -0
  76. package/dist/cli/commands/needs-context.d.ts +3 -0
  77. package/dist/cli/commands/needs-context.d.ts.map +1 -0
  78. package/dist/cli/commands/needs-context.js +23 -0
  79. package/dist/cli/commands/needs-context.js.map +1 -0
  80. package/dist/cli/commands/progress.d.ts +3 -0
  81. package/dist/cli/commands/progress.d.ts.map +1 -0
  82. package/dist/cli/commands/progress.js +21 -0
  83. package/dist/cli/commands/progress.js.map +1 -0
  84. package/dist/cli/commands/recommend.d.ts +3 -0
  85. package/dist/cli/commands/recommend.d.ts.map +1 -0
  86. package/dist/cli/commands/recommend.js +24 -0
  87. package/dist/cli/commands/recommend.js.map +1 -0
  88. package/dist/cli/commands/recommendation.d.ts +3 -0
  89. package/dist/cli/commands/recommendation.d.ts.map +1 -0
  90. package/dist/cli/commands/recommendation.js +360 -0
  91. package/dist/cli/commands/recommendation.js.map +1 -0
  92. package/dist/cli/commands/settle.d.ts +3 -0
  93. package/dist/cli/commands/settle.d.ts.map +1 -0
  94. package/dist/cli/commands/settle.js +453 -0
  95. package/dist/cli/commands/settle.js.map +1 -0
  96. package/dist/cli/commands/spec.d.ts +10 -0
  97. package/dist/cli/commands/spec.d.ts.map +1 -0
  98. package/dist/cli/commands/spec.js +246 -0
  99. package/dist/cli/commands/spec.js.map +1 -0
  100. package/dist/cli/commands/status.d.ts +11 -0
  101. package/dist/cli/commands/status.d.ts.map +1 -0
  102. package/dist/cli/commands/status.js +211 -0
  103. package/dist/cli/commands/status.js.map +1 -0
  104. package/dist/cli/index.d.ts +3 -0
  105. package/dist/cli/index.d.ts.map +1 -0
  106. package/dist/cli/index.js +21 -0
  107. package/dist/cli/index.js.map +1 -0
  108. package/dist/cli/register.d.ts +3 -0
  109. package/dist/cli/register.d.ts.map +1 -0
  110. package/dist/cli/register.js +43 -0
  111. package/dist/cli/register.js.map +1 -0
  112. package/dist/coherence/check.d.ts +11 -0
  113. package/dist/coherence/check.d.ts.map +1 -0
  114. package/dist/coherence/check.js +34 -0
  115. package/dist/coherence/check.js.map +1 -0
  116. package/dist/config/loader.d.ts +4 -0
  117. package/dist/config/loader.d.ts.map +1 -0
  118. package/dist/config/loader.js +40 -0
  119. package/dist/config/loader.js.map +1 -0
  120. package/dist/errors.d.ts +23 -0
  121. package/dist/errors.d.ts.map +1 -0
  122. package/dist/errors.js +31 -0
  123. package/dist/errors.js.map +1 -0
  124. package/dist/gates/approve.d.ts +20 -0
  125. package/dist/gates/approve.d.ts.map +1 -0
  126. package/dist/gates/approve.js +55 -0
  127. package/dist/gates/approve.js.map +1 -0
  128. package/dist/gates/build-context.d.ts +17 -0
  129. package/dist/gates/build-context.d.ts.map +1 -0
  130. package/dist/gates/build-context.js +81 -0
  131. package/dist/gates/build-context.js.map +1 -0
  132. package/dist/gates/build-test-must-pass.d.ts +12 -0
  133. package/dist/gates/build-test-must-pass.d.ts.map +1 -0
  134. package/dist/gates/build-test-must-pass.js +23 -0
  135. package/dist/gates/build-test-must-pass.js.map +1 -0
  136. package/dist/gates/build-types.d.ts +54 -0
  137. package/dist/gates/build-types.d.ts.map +1 -0
  138. package/dist/gates/build-types.js +2 -0
  139. package/dist/gates/build-types.js.map +1 -0
  140. package/dist/gates/code-review.d.ts +20 -0
  141. package/dist/gates/code-review.d.ts.map +1 -0
  142. package/dist/gates/code-review.js +137 -0
  143. package/dist/gates/code-review.js.map +1 -0
  144. package/dist/gates/coherence.d.ts +26 -0
  145. package/dist/gates/coherence.d.ts.map +1 -0
  146. package/dist/gates/coherence.js +59 -0
  147. package/dist/gates/coherence.js.map +1 -0
  148. package/dist/gates/coverage.d.ts +8 -0
  149. package/dist/gates/coverage.d.ts.map +1 -0
  150. package/dist/gates/coverage.js +26 -0
  151. package/dist/gates/coverage.js.map +1 -0
  152. package/dist/gates/deep-verify.d.ts +7 -0
  153. package/dist/gates/deep-verify.d.ts.map +1 -0
  154. package/dist/gates/deep-verify.js +77 -0
  155. package/dist/gates/deep-verify.js.map +1 -0
  156. package/dist/gates/draft-context.d.ts +20 -0
  157. package/dist/gates/draft-context.d.ts.map +1 -0
  158. package/dist/gates/draft-context.js +87 -0
  159. package/dist/gates/draft-context.js.map +1 -0
  160. package/dist/gates/draft-read.d.ts +10 -0
  161. package/dist/gates/draft-read.d.ts.map +1 -0
  162. package/dist/gates/draft-read.js +24 -0
  163. package/dist/gates/draft-read.js.map +1 -0
  164. package/dist/gates/draft-types.d.ts +75 -0
  165. package/dist/gates/draft-types.d.ts.map +1 -0
  166. package/dist/gates/draft-types.js +2 -0
  167. package/dist/gates/draft-types.js.map +1 -0
  168. package/dist/gates/engine.d.ts +21 -0
  169. package/dist/gates/engine.d.ts.map +1 -0
  170. package/dist/gates/engine.js +98 -0
  171. package/dist/gates/engine.js.map +1 -0
  172. package/dist/gates/interactive.d.ts +11 -0
  173. package/dist/gates/interactive.d.ts.map +1 -0
  174. package/dist/gates/interactive.js +55 -0
  175. package/dist/gates/interactive.js.map +1 -0
  176. package/dist/gates/per-task-verify.d.ts +12 -0
  177. package/dist/gates/per-task-verify.d.ts.map +1 -0
  178. package/dist/gates/per-task-verify.js +52 -0
  179. package/dist/gates/per-task-verify.js.map +1 -0
  180. package/dist/gates/plan-review.d.ts +13 -0
  181. package/dist/gates/plan-review.d.ts.map +1 -0
  182. package/dist/gates/plan-review.js +98 -0
  183. package/dist/gates/plan-review.js.map +1 -0
  184. package/dist/gates/registry.d.ts +53 -0
  185. package/dist/gates/registry.d.ts.map +1 -0
  186. package/dist/gates/registry.js +66 -0
  187. package/dist/gates/registry.js.map +1 -0
  188. package/dist/gates/security-audit.d.ts +11 -0
  189. package/dist/gates/security-audit.d.ts.map +1 -0
  190. package/dist/gates/security-audit.js +40 -0
  191. package/dist/gates/security-audit.js.map +1 -0
  192. package/dist/gates/structural-verifier.d.ts +8 -0
  193. package/dist/gates/structural-verifier.d.ts.map +1 -0
  194. package/dist/gates/structural-verifier.js +25 -0
  195. package/dist/gates/structural-verifier.js.map +1 -0
  196. package/dist/gates/types.d.ts +202 -0
  197. package/dist/gates/types.d.ts.map +1 -0
  198. package/dist/gates/types.js +12 -0
  199. package/dist/gates/types.js.map +1 -0
  200. package/dist/hooks/dispatcher.d.ts +8 -0
  201. package/dist/hooks/dispatcher.d.ts.map +1 -0
  202. package/dist/hooks/dispatcher.js +31 -0
  203. package/dist/hooks/dispatcher.js.map +1 -0
  204. package/dist/hooks/handlers.d.ts +21 -0
  205. package/dist/hooks/handlers.d.ts.map +1 -0
  206. package/dist/hooks/handlers.js +121 -0
  207. package/dist/hooks/handlers.js.map +1 -0
  208. package/dist/index.d.ts +2 -0
  209. package/dist/index.d.ts.map +1 -0
  210. package/dist/index.js +2 -0
  211. package/dist/index.js.map +1 -0
  212. package/dist/init/claude-md-template.d.ts +34 -0
  213. package/dist/init/claude-md-template.d.ts.map +1 -0
  214. package/dist/init/claude-md-template.js +72 -0
  215. package/dist/init/claude-md-template.js.map +1 -0
  216. package/dist/intelligence/backend/cadence.d.ts +21 -0
  217. package/dist/intelligence/backend/cadence.d.ts.map +1 -0
  218. package/dist/intelligence/backend/cadence.js +127 -0
  219. package/dist/intelligence/backend/cadence.js.map +1 -0
  220. package/dist/intelligence/context.d.ts +11 -0
  221. package/dist/intelligence/context.d.ts.map +1 -0
  222. package/dist/intelligence/context.js +197 -0
  223. package/dist/intelligence/context.js.map +1 -0
  224. package/dist/intelligence/graph-decision.d.ts +9 -0
  225. package/dist/intelligence/graph-decision.d.ts.map +1 -0
  226. package/dist/intelligence/graph-decision.js +55 -0
  227. package/dist/intelligence/graph-decision.js.map +1 -0
  228. package/dist/intelligence/inspect.d.ts +9 -0
  229. package/dist/intelligence/inspect.d.ts.map +1 -0
  230. package/dist/intelligence/inspect.js +93 -0
  231. package/dist/intelligence/inspect.js.map +1 -0
  232. package/dist/intelligence/milestone.d.ts +40 -0
  233. package/dist/intelligence/milestone.d.ts.map +1 -0
  234. package/dist/intelligence/milestone.js +312 -0
  235. package/dist/intelligence/milestone.js.map +1 -0
  236. package/dist/intelligence/recommend.d.ts +20 -0
  237. package/dist/intelligence/recommend.d.ts.map +1 -0
  238. package/dist/intelligence/recommend.js +185 -0
  239. package/dist/intelligence/recommend.js.map +1 -0
  240. package/dist/intelligence/render-assumption-detail.d.ts +3 -0
  241. package/dist/intelligence/render-assumption-detail.d.ts.map +1 -0
  242. package/dist/intelligence/render-assumption-detail.js +16 -0
  243. package/dist/intelligence/render-assumption-detail.js.map +1 -0
  244. package/dist/intelligence/render-assumption.d.ts +3 -0
  245. package/dist/intelligence/render-assumption.d.ts.map +1 -0
  246. package/dist/intelligence/render-assumption.js +37 -0
  247. package/dist/intelligence/render-assumption.js.map +1 -0
  248. package/dist/intelligence/render-context.d.ts +3 -0
  249. package/dist/intelligence/render-context.d.ts.map +1 -0
  250. package/dist/intelligence/render-context.js +92 -0
  251. package/dist/intelligence/render-context.js.map +1 -0
  252. package/dist/intelligence/render-decision-detail.d.ts +3 -0
  253. package/dist/intelligence/render-decision-detail.d.ts.map +1 -0
  254. package/dist/intelligence/render-decision-detail.js +30 -0
  255. package/dist/intelligence/render-decision-detail.js.map +1 -0
  256. package/dist/intelligence/render-decision-graph.d.ts +3 -0
  257. package/dist/intelligence/render-decision-graph.d.ts.map +1 -0
  258. package/dist/intelligence/render-decision-graph.js +49 -0
  259. package/dist/intelligence/render-decision-graph.js.map +1 -0
  260. package/dist/intelligence/render-decision.d.ts +3 -0
  261. package/dist/intelligence/render-decision.d.ts.map +1 -0
  262. package/dist/intelligence/render-decision.js +45 -0
  263. package/dist/intelligence/render-decision.js.map +1 -0
  264. package/dist/intelligence/render-inspection.d.ts +3 -0
  265. package/dist/intelligence/render-inspection.d.ts.map +1 -0
  266. package/dist/intelligence/render-inspection.js +69 -0
  267. package/dist/intelligence/render-inspection.js.map +1 -0
  268. package/dist/intelligence/render-intelligence-audit.d.ts +5 -0
  269. package/dist/intelligence/render-intelligence-audit.d.ts.map +1 -0
  270. package/dist/intelligence/render-intelligence-audit.js +93 -0
  271. package/dist/intelligence/render-intelligence-audit.js.map +1 -0
  272. package/dist/intelligence/render-intelligence-stats.d.ts +6 -0
  273. package/dist/intelligence/render-intelligence-stats.d.ts.map +1 -0
  274. package/dist/intelligence/render-intelligence-stats.js +76 -0
  275. package/dist/intelligence/render-intelligence-stats.js.map +1 -0
  276. package/dist/intelligence/render-milestone.d.ts +3 -0
  277. package/dist/intelligence/render-milestone.d.ts.map +1 -0
  278. package/dist/intelligence/render-milestone.js +80 -0
  279. package/dist/intelligence/render-milestone.js.map +1 -0
  280. package/dist/intelligence/render-recommend.d.ts +3 -0
  281. package/dist/intelligence/render-recommend.d.ts.map +1 -0
  282. package/dist/intelligence/render-recommend.js +62 -0
  283. package/dist/intelligence/render-recommend.js.map +1 -0
  284. package/dist/intelligence/render-recommendation-detail.d.ts +7 -0
  285. package/dist/intelligence/render-recommendation-detail.d.ts.map +1 -0
  286. package/dist/intelligence/render-recommendation-detail.js +93 -0
  287. package/dist/intelligence/render-recommendation-detail.js.map +1 -0
  288. package/dist/intelligence/render.d.ts +3 -0
  289. package/dist/intelligence/render.d.ts.map +1 -0
  290. package/dist/intelligence/render.js +57 -0
  291. package/dist/intelligence/render.js.map +1 -0
  292. package/dist/intelligence/scan.d.ts +3 -0
  293. package/dist/intelligence/scan.d.ts.map +1 -0
  294. package/dist/intelligence/scan.js +103 -0
  295. package/dist/intelligence/scan.js.map +1 -0
  296. package/dist/intelligence/store.d.ts +143 -0
  297. package/dist/intelligence/store.d.ts.map +1 -0
  298. package/dist/intelligence/store.js +701 -0
  299. package/dist/intelligence/store.js.map +1 -0
  300. package/dist/notify/code-review.d.ts +34 -0
  301. package/dist/notify/code-review.d.ts.map +1 -0
  302. package/dist/notify/code-review.js +56 -0
  303. package/dist/notify/code-review.js.map +1 -0
  304. package/dist/notify/collect.d.ts +31 -0
  305. package/dist/notify/collect.d.ts.map +1 -0
  306. package/dist/notify/collect.js +127 -0
  307. package/dist/notify/collect.js.map +1 -0
  308. package/dist/notify/emit-unconverged.d.ts +26 -0
  309. package/dist/notify/emit-unconverged.d.ts.map +1 -0
  310. package/dist/notify/emit-unconverged.js +31 -0
  311. package/dist/notify/emit-unconverged.js.map +1 -0
  312. package/dist/notify/factory.d.ts +12 -0
  313. package/dist/notify/factory.d.ts.map +1 -0
  314. package/dist/notify/factory.js +29 -0
  315. package/dist/notify/factory.js.map +1 -0
  316. package/dist/notify/file.d.ts +13 -0
  317. package/dist/notify/file.d.ts.map +1 -0
  318. package/dist/notify/file.js +21 -0
  319. package/dist/notify/file.js.map +1 -0
  320. package/dist/notify/loop-violation.d.ts +10 -0
  321. package/dist/notify/loop-violation.d.ts.map +1 -0
  322. package/dist/notify/loop-violation.js +46 -0
  323. package/dist/notify/loop-violation.js.map +1 -0
  324. package/dist/notify/notifier.d.ts +13 -0
  325. package/dist/notify/notifier.d.ts.map +1 -0
  326. package/dist/notify/notifier.js +2 -0
  327. package/dist/notify/notifier.js.map +1 -0
  328. package/dist/notify/null.d.ts +11 -0
  329. package/dist/notify/null.d.ts.map +1 -0
  330. package/dist/notify/null.js +11 -0
  331. package/dist/notify/null.js.map +1 -0
  332. package/dist/notify/plan-review.d.ts +20 -0
  333. package/dist/notify/plan-review.d.ts.map +1 -0
  334. package/dist/notify/plan-review.js +15 -0
  335. package/dist/notify/plan-review.js.map +1 -0
  336. package/dist/notify/skill-audit.d.ts +18 -0
  337. package/dist/notify/skill-audit.d.ts.map +1 -0
  338. package/dist/notify/skill-audit.js +33 -0
  339. package/dist/notify/skill-audit.js.map +1 -0
  340. package/dist/notify/spec-review.d.ts +20 -0
  341. package/dist/notify/spec-review.d.ts.map +1 -0
  342. package/dist/notify/spec-review.js +15 -0
  343. package/dist/notify/spec-review.js.map +1 -0
  344. package/dist/notify/stderr.d.ts +17 -0
  345. package/dist/notify/stderr.d.ts.map +1 -0
  346. package/dist/notify/stderr.js +17 -0
  347. package/dist/notify/stderr.js.map +1 -0
  348. package/dist/notify/webhook.d.ts +33 -0
  349. package/dist/notify/webhook.d.ts.map +1 -0
  350. package/dist/notify/webhook.js +55 -0
  351. package/dist/notify/webhook.js.map +1 -0
  352. package/dist/parse/draft-parser.d.ts +3 -0
  353. package/dist/parse/draft-parser.d.ts.map +1 -0
  354. package/dist/parse/draft-parser.js +99 -0
  355. package/dist/parse/draft-parser.js.map +1 -0
  356. package/dist/parse/draft-scaffold.d.ts +14 -0
  357. package/dist/parse/draft-scaffold.d.ts.map +1 -0
  358. package/dist/parse/draft-scaffold.js +31 -0
  359. package/dist/parse/draft-scaffold.js.map +1 -0
  360. package/dist/parse/spec-parser.d.ts +3 -0
  361. package/dist/parse/spec-parser.d.ts.map +1 -0
  362. package/dist/parse/spec-parser.js +68 -0
  363. package/dist/parse/spec-parser.js.map +1 -0
  364. package/dist/parse/summary-writer.d.ts +3 -0
  365. package/dist/parse/summary-writer.d.ts.map +1 -0
  366. package/dist/parse/summary-writer.js +41 -0
  367. package/dist/parse/summary-writer.js.map +1 -0
  368. package/dist/progress.d.ts +7 -0
  369. package/dist/progress.d.ts.map +1 -0
  370. package/dist/progress.js +37 -0
  371. package/dist/progress.js.map +1 -0
  372. package/dist/render/state-md.d.ts +3 -0
  373. package/dist/render/state-md.d.ts.map +1 -0
  374. package/dist/render/state-md.js +33 -0
  375. package/dist/render/state-md.js.map +1 -0
  376. package/dist/state/atomic-write.d.ts +3 -0
  377. package/dist/state/atomic-write.d.ts.map +1 -0
  378. package/dist/state/atomic-write.js +52 -0
  379. package/dist/state/atomic-write.js.map +1 -0
  380. package/dist/state/backend.d.ts +13 -0
  381. package/dist/state/backend.d.ts.map +1 -0
  382. package/dist/state/backend.js +2 -0
  383. package/dist/state/backend.js.map +1 -0
  384. package/dist/state/simple.d.ts +18 -0
  385. package/dist/state/simple.d.ts.map +1 -0
  386. package/dist/state/simple.js +67 -0
  387. package/dist/state/simple.js.map +1 -0
  388. package/dist/status.d.ts +47 -0
  389. package/dist/status.d.ts.map +1 -0
  390. package/dist/status.js +209 -0
  391. package/dist/status.js.map +1 -0
  392. package/dist/verify/anthropic-verifier.d.ts +28 -0
  393. package/dist/verify/anthropic-verifier.d.ts.map +1 -0
  394. package/dist/verify/anthropic-verifier.js +109 -0
  395. package/dist/verify/anthropic-verifier.js.map +1 -0
  396. package/dist/verify/code-review-factory.d.ts +103 -0
  397. package/dist/verify/code-review-factory.d.ts.map +1 -0
  398. package/dist/verify/code-review-factory.js +11 -0
  399. package/dist/verify/code-review-factory.js.map +1 -0
  400. package/dist/verify/code-review.d.ts +65 -0
  401. package/dist/verify/code-review.d.ts.map +1 -0
  402. package/dist/verify/code-review.js +189 -0
  403. package/dist/verify/code-review.js.map +1 -0
  404. package/dist/verify/converge.d.ts +14 -0
  405. package/dist/verify/converge.d.ts.map +1 -0
  406. package/dist/verify/converge.js +17 -0
  407. package/dist/verify/converge.js.map +1 -0
  408. package/dist/verify/coverage.d.ts +31 -0
  409. package/dist/verify/coverage.d.ts.map +1 -0
  410. package/dist/verify/coverage.js +125 -0
  411. package/dist/verify/coverage.js.map +1 -0
  412. package/dist/verify/factory.d.ts +107 -0
  413. package/dist/verify/factory.d.ts.map +1 -0
  414. package/dist/verify/factory.js +17 -0
  415. package/dist/verify/factory.js.map +1 -0
  416. package/dist/verify/interactive.d.ts +22 -0
  417. package/dist/verify/interactive.d.ts.map +1 -0
  418. package/dist/verify/interactive.js +61 -0
  419. package/dist/verify/interactive.js.map +1 -0
  420. package/dist/verify/local-client.d.ts +13 -0
  421. package/dist/verify/local-client.d.ts.map +1 -0
  422. package/dist/verify/local-client.js +73 -0
  423. package/dist/verify/local-client.js.map +1 -0
  424. package/dist/verify/mock-verifier.d.ts +16 -0
  425. package/dist/verify/mock-verifier.d.ts.map +1 -0
  426. package/dist/verify/mock-verifier.js +30 -0
  427. package/dist/verify/mock-verifier.js.map +1 -0
  428. package/dist/verify/per-task-factory.d.ts +103 -0
  429. package/dist/verify/per-task-factory.d.ts.map +1 -0
  430. package/dist/verify/per-task-factory.js +11 -0
  431. package/dist/verify/per-task-factory.js.map +1 -0
  432. package/dist/verify/per-task.d.ts +69 -0
  433. package/dist/verify/per-task.d.ts.map +1 -0
  434. package/dist/verify/per-task.js +154 -0
  435. package/dist/verify/per-task.js.map +1 -0
  436. package/dist/verify/plan-review-factory.d.ts +103 -0
  437. package/dist/verify/plan-review-factory.d.ts.map +1 -0
  438. package/dist/verify/plan-review-factory.js +11 -0
  439. package/dist/verify/plan-review-factory.js.map +1 -0
  440. package/dist/verify/plan-review.d.ts +67 -0
  441. package/dist/verify/plan-review.d.ts.map +1 -0
  442. package/dist/verify/plan-review.js +196 -0
  443. package/dist/verify/plan-review.js.map +1 -0
  444. package/dist/verify/prompter.d.ts +40 -0
  445. package/dist/verify/prompter.d.ts.map +1 -0
  446. package/dist/verify/prompter.js +48 -0
  447. package/dist/verify/prompter.js.map +1 -0
  448. package/dist/verify/security-audit-factory.d.ts +103 -0
  449. package/dist/verify/security-audit-factory.d.ts.map +1 -0
  450. package/dist/verify/security-audit-factory.js +11 -0
  451. package/dist/verify/security-audit-factory.js.map +1 -0
  452. package/dist/verify/security-audit.d.ts +63 -0
  453. package/dist/verify/security-audit.d.ts.map +1 -0
  454. package/dist/verify/security-audit.js +196 -0
  455. package/dist/verify/security-audit.js.map +1 -0
  456. package/dist/verify/skill-match.d.ts +10 -0
  457. package/dist/verify/skill-match.d.ts.map +1 -0
  458. package/dist/verify/skill-match.js +15 -0
  459. package/dist/verify/skill-match.js.map +1 -0
  460. package/dist/verify/spec-review-factory.d.ts +103 -0
  461. package/dist/verify/spec-review-factory.d.ts.map +1 -0
  462. package/dist/verify/spec-review-factory.js +11 -0
  463. package/dist/verify/spec-review-factory.js.map +1 -0
  464. package/dist/verify/spec-review.d.ts +63 -0
  465. package/dist/verify/spec-review.d.ts.map +1 -0
  466. package/dist/verify/spec-review.js +182 -0
  467. package/dist/verify/spec-review.js.map +1 -0
  468. package/dist/verify/verifier-factory.d.ts +45 -0
  469. package/dist/verify/verifier-factory.d.ts.map +1 -0
  470. package/dist/verify/verifier-factory.js +38 -0
  471. package/dist/verify/verifier-factory.js.map +1 -0
  472. package/dist/verify/verifier.d.ts +63 -0
  473. package/dist/verify/verifier.d.ts.map +1 -0
  474. package/dist/verify/verifier.js +32 -0
  475. package/dist/verify/verifier.js.map +1 -0
  476. package/package.json +62 -0
@@ -0,0 +1,125 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { existsSync } from 'node:fs';
3
+ import { join } from 'node:path';
4
+ import { parseDraftMd } from '../../parse/draft-parser.js';
5
+ import { coherenceCheck } from '../../coherence/check.js';
6
+ import { SimpleStateBackend } from '../../state/simple.js';
7
+ import { loadConfig } from '../../config/loader.js';
8
+ import { effectiveGateSet } from '../../gates/engine.js';
9
+ import { buildDraftContext } from '../../gates/draft-context.js';
10
+ import { runCoherenceGate, emitCoherenceWarns, printAllCoherenceIssues, } from '../../gates/coherence.js';
11
+ import { runApproveGate } from '../../gates/approve.js';
12
+ import { runPlanReviewGate } from '../../gates/plan-review.js';
13
+ import { registerDraftNew } from './draft-new.js';
14
+ // Re-exported for the `ask-approve-verdict` suite (moved to gates/approve.ts).
15
+ export { askApproveVerdict } from '../../gates/approve.js';
16
+ export function registerDraftCommand(program) {
17
+ const cmd = program.command('draft').description('Draft phase workflow');
18
+ registerDraftNew(cmd);
19
+ cmd
20
+ .command('check <path>')
21
+ .description('Coherence-check a DRAFT.md against state.json + PROJECT.md')
22
+ .action(async (path) => {
23
+ try {
24
+ const cwd = process.cwd();
25
+ const draft = parseDraftMd(await readFile(path, 'utf8'));
26
+ const state = await new SimpleStateBackend(cwd).readState();
27
+ const projectMdPath = join(cwd, '.cadence', 'PROJECT.md');
28
+ const projectMd = existsSync(projectMdPath) ? await readFile(projectMdPath, 'utf8') : '';
29
+ const issues = coherenceCheck(draft, state, projectMd).issues;
30
+ if (issues.length === 0) {
31
+ console.log('coherence: OK');
32
+ return;
33
+ }
34
+ const blocked = printAllCoherenceIssues(issues, { err: (s) => process.stderr.write(s) });
35
+ // Phase 23.2 — coherence-warn emission (gated on anomaly-notify). Block
36
+ // issues already printed loudly above; warns still emit even when blocked.
37
+ if (issues.some((i) => i.severity === 'warn')) {
38
+ const cfg = await loadConfig(cwd).catch(() => null);
39
+ const ctx = buildDraftContext({
40
+ cwd, state, draft, config: cfg,
41
+ gateSet: effectiveGateSet(state, cfg, draft),
42
+ phase: '', id: '', projectMd, opts: {},
43
+ });
44
+ await emitCoherenceWarns(ctx, 'coherence.check');
45
+ }
46
+ if (blocked)
47
+ process.exitCode = 2;
48
+ }
49
+ catch (err) {
50
+ process.stderr.write(`draft check failed: ${err instanceof Error ? err.message : String(err)}\n`);
51
+ process.exitCode = 1;
52
+ }
53
+ });
54
+ cmd
55
+ .command('approve <phase> <num>')
56
+ .description('Approve a draft and enter BUILD phase')
57
+ .option('--allow-auto-complex', 'override DESIGN.md §4 M2 soft cap: approve an auto × complex draft anyway')
58
+ .option('--no-approve', "bypass the manual approve gate (Phase 24.1) per invocation; required for non-TTY runs when the 'approve' gate is in the effective set")
59
+ .option('--allow-plan-review-failure', 'proceed past a failing plan-review gate (Phase 25.1) instead of refusing approve; findings are still printed')
60
+ .action(async (phase, num, opts) => {
61
+ try {
62
+ const cwd = process.cwd();
63
+ const id = `${phase.slice(0, 2)}-${num.padStart(2, '0')}`;
64
+ const path = join(cwd, '.cadence', 'phases', phase, `${id}-DRAFT.md`);
65
+ const draft = parseDraftMd(await readFile(path, 'utf8'));
66
+ const backend = new SimpleStateBackend(cwd);
67
+ const state = await backend.readState();
68
+ const projectMdPath = join(cwd, '.cadence', 'PROJECT.md');
69
+ const projectMd = existsSync(projectMdPath) ? await readFile(projectMdPath, 'utf8') : '';
70
+ const cfg = await loadConfig(cwd).catch(() => null);
71
+ const gateSet = effectiveGateSet(state, cfg, draft);
72
+ const ctx = buildDraftContext({
73
+ cwd, state, draft, config: cfg, gateSet, phase, id, projectMd,
74
+ opts: {
75
+ ...(opts.allowAutoComplex !== undefined ? { allowAutoComplex: opts.allowAutoComplex } : {}),
76
+ ...(opts.approve !== undefined ? { approve: opts.approve } : {}),
77
+ ...(opts.allowPlanReviewFailure !== undefined ? { allowPlanReviewFailure: opts.allowPlanReviewFailure } : {}),
78
+ },
79
+ });
80
+ // Coherence blockers refuse before any state mutation (exit 2).
81
+ if ((await runCoherenceGate(ctx)).outcome === 'refuse') {
82
+ process.exitCode = 2;
83
+ return;
84
+ }
85
+ // DESIGN.md §4 M2 — soft cap on auto × complex (Phase 21.1). Not a
86
+ // named gate; router-owned, refused before the BUILD transition.
87
+ if (gateSet.softCap && !opts.allowAutoComplex) {
88
+ process.stderr.write('draft approve refused: auto × complex is soft-capped (DESIGN.md §4 M2). Pass --allow-auto-complex to override, or bump the draft\'s profile to standard/strict.\n');
89
+ process.exitCode = 1;
90
+ return;
91
+ }
92
+ if (gateSet.softCap && opts.allowAutoComplex) {
93
+ process.stderr.write('draft approve: --allow-auto-complex set; proceeding past soft cap (auto × complex).\n');
94
+ }
95
+ // Manual approve gate (Phase 24.1) then plan-review gate (25.1 / 35.1).
96
+ if ((await runApproveGate(ctx)).outcome === 'refuse') {
97
+ process.exitCode = 1;
98
+ return;
99
+ }
100
+ if ((await runPlanReviewGate(ctx)).outcome === 'refuse') {
101
+ process.exitCode = 1;
102
+ return;
103
+ }
104
+ // Coherence-warn emission at approve time (before the BUILD transition
105
+ // so failed dispatches don't leave partial state).
106
+ await emitCoherenceWarns(ctx, 'coherence.approve');
107
+ state.activePhase = phase;
108
+ state.activeDraft = id;
109
+ state.loopPosition = 'BUILD';
110
+ state.tier = draft.tier;
111
+ // Phase 23.1 — stamp the approve timestamp for the DRAFT-read gate.
112
+ state.draftReadAt = new Date().toISOString();
113
+ if (!state.openDrafts.some((d) => d.id === id)) {
114
+ state.openDrafts.push({ id, since: new Date().toISOString() });
115
+ }
116
+ await backend.commit(state);
117
+ console.log(`Approved ${id}; loopPosition=BUILD`);
118
+ }
119
+ catch (err) {
120
+ process.stderr.write(`draft approve failed: ${err instanceof Error ? err.message : String(err)}\n`);
121
+ process.exitCode = 1;
122
+ }
123
+ });
124
+ }
125
+ //# sourceMappingURL=draft.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draft.js","sourceRoot":"","sources":["../../../src/cli/commands/draft.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerHookCommand(program: Command): void;
3
+ //# sourceMappingURL=hook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/hook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoC1D"}
@@ -0,0 +1,50 @@
1
+ import { AbstractEventZ } from '@manehorizons/cadence-types';
2
+ import { HookDispatcher } from '../../hooks/dispatcher.js';
3
+ export function registerHookCommand(program) {
4
+ program
5
+ .command('hook <event>')
6
+ .description('Dispatch an abstract hook event (called by host adapter shims)')
7
+ .action(async (eventRaw) => {
8
+ try {
9
+ const parsed = AbstractEventZ.safeParse(eventRaw);
10
+ if (!parsed.success) {
11
+ process.stderr.write(`Unknown hook event: ${eventRaw}\n`);
12
+ process.exitCode = 2;
13
+ return;
14
+ }
15
+ let raw = '';
16
+ if (!process.stdin.isTTY) {
17
+ for await (const chunk of process.stdin)
18
+ raw += chunk.toString();
19
+ }
20
+ const dispatcher = new HookDispatcher(process.cwd());
21
+ const ctx = {
22
+ event: parsed.data,
23
+ cwd: process.cwd(),
24
+ raw: raw ? safeJson(raw) : undefined,
25
+ };
26
+ const result = await dispatcher.dispatch(parsed.data, ctx);
27
+ if (result.contextPayload)
28
+ console.log(result.contextPayload);
29
+ if (!result.ok) {
30
+ if (result.blockMessage)
31
+ process.stderr.write(result.blockMessage + '\n');
32
+ // Exit 2 = blocking per Claude Code hook protocol; stderr surfaces to the model.
33
+ process.exitCode = 2;
34
+ }
35
+ }
36
+ catch (err) {
37
+ process.stderr.write(`hook dispatch failed: ${err instanceof Error ? err.message : String(err)}\n`);
38
+ process.exitCode = 1;
39
+ }
40
+ });
41
+ }
42
+ function safeJson(raw) {
43
+ try {
44
+ return JSON.parse(raw);
45
+ }
46
+ catch {
47
+ return { raw };
48
+ }
49
+ }
50
+ //# sourceMappingURL=hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook.js","sourceRoot":"","sources":["../../../src/cli/commands/hook.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,gEAAgE,CAAC;SAC7E,MAAM,CAAC,KAAK,EAAE,QAAgB,EAAE,EAAE;QACjC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAClD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,QAAQ,IAAI,CAAC,CAAC;gBAC1D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;gBACrB,OAAO;YACT,CAAC;YACD,IAAI,GAAG,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACzB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK;oBAAE,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnE,CAAC;YACD,MAAM,UAAU,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YACrD,MAAM,GAAG,GAAG;gBACV,KAAK,EAAE,MAAM,CAAC,IAAI;gBAClB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;gBAClB,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;aACrC,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC3D,IAAI,MAAM,CAAC,cAAc;gBAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAC9D,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,IAAI,MAAM,CAAC,YAAY;oBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;gBAC1E,iFAAiF;gBACjF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,yBAAyB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAC9E,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW;IAC3B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,GAAG,EAAE,CAAC;IACjB,CAAC;AACH,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { Command } from 'commander';
2
+ import { type Profile } from '@manehorizons/cadence-types';
3
+ /**
4
+ * Suggest a gate profile from git history: a repo with ≥20 commits is
5
+ * mature enough to want the `standard` gate set; a reachable repo with
6
+ * fewer commits gets `auto`; any git failure (no repo, bare, zero commits)
7
+ * also falls back to `auto`. Never throws.
8
+ */
9
+ export declare function suggestGateProfile(cwd: string): Profile;
10
+ /**
11
+ * Pick `verification.testGlobs` from the repo's layout (F2, Phase 29.1
12
+ * shakedown). A `packages/` directory at the init root means a monorepo —
13
+ * keep the workspace glob (correct for cadence's own dogfood). Any other
14
+ * shape is treated as single-package: a depth-agnostic `**\/*.test.ts(x)`
15
+ * glob so the test-coverage gate can match tests under `tests/`, `src/`,
16
+ * `__tests__/`, etc. The scanner already prunes node_modules/dist/.git/.turbo,
17
+ * so the broad glob is safe. Never throws.
18
+ */
19
+ export declare function detectTestGlobs(cwd: string): string[];
20
+ export declare function registerInitCommand(program: Command): void;
21
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,OAAO,EAAuB,KAAK,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAoChF;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAavD;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAUrD;AAyFD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwJ1D"}
@@ -0,0 +1,255 @@
1
+ import { mkdir, writeFile, readFile } from 'node:fs/promises';
2
+ import { existsSync, statSync } from 'node:fs';
3
+ import { execSync } from 'node:child_process';
4
+ import { join } from 'node:path';
5
+ import { presets, emptyState } from '@manehorizons/cadence-types';
6
+ import { atomicWriteJSON } from '../../state/atomic-write.js';
7
+ import { SimpleStateBackend } from '../../state/simple.js';
8
+ import { mergeManagedBlock, } from '../../init/claude-md-template.js';
9
+ import { ScriptedPrompter, StdinPrompter, } from '../../verify/prompter.js';
10
+ const GATE_PROFILES = ['strict', 'standard', 'auto'];
11
+ /**
12
+ * Build a prompter the same way `draft.ts approve` does: a scripted prompter
13
+ * when `CADENCE_PROMPTER_SCRIPT` is set (newline-separated answers), a real
14
+ * stdin prompter when stdin is a TTY, otherwise `null` — non-interactive,
15
+ * caller falls back to defaults.
16
+ */
17
+ function makePrompter() {
18
+ const scripted = process.env.CADENCE_PROMPTER_SCRIPT;
19
+ if (scripted !== undefined) {
20
+ return new ScriptedPrompter(scripted.split('\n'));
21
+ }
22
+ if (process.stdin.isTTY) {
23
+ try {
24
+ return new StdinPrompter();
25
+ }
26
+ catch {
27
+ return null;
28
+ }
29
+ }
30
+ return null;
31
+ }
32
+ /**
33
+ * Suggest a gate profile from git history: a repo with ≥20 commits is
34
+ * mature enough to want the `standard` gate set; a reachable repo with
35
+ * fewer commits gets `auto`; any git failure (no repo, bare, zero commits)
36
+ * also falls back to `auto`. Never throws.
37
+ */
38
+ export function suggestGateProfile(cwd) {
39
+ try {
40
+ const out = execSync('git rev-list --count HEAD', {
41
+ cwd,
42
+ encoding: 'utf8',
43
+ stdio: ['ignore', 'pipe', 'ignore'],
44
+ }).trim();
45
+ const n = Number.parseInt(out, 10);
46
+ if (Number.isNaN(n))
47
+ return 'auto';
48
+ return n >= 20 ? 'standard' : 'auto';
49
+ }
50
+ catch {
51
+ return 'auto';
52
+ }
53
+ }
54
+ /**
55
+ * Pick `verification.testGlobs` from the repo's layout (F2, Phase 29.1
56
+ * shakedown). A `packages/` directory at the init root means a monorepo —
57
+ * keep the workspace glob (correct for cadence's own dogfood). Any other
58
+ * shape is treated as single-package: a depth-agnostic `**\/*.test.ts(x)`
59
+ * glob so the test-coverage gate can match tests under `tests/`, `src/`,
60
+ * `__tests__/`, etc. The scanner already prunes node_modules/dist/.git/.turbo,
61
+ * so the broad glob is safe. Never throws.
62
+ */
63
+ export function detectTestGlobs(cwd) {
64
+ let monorepo = false;
65
+ try {
66
+ monorepo = statSync(join(cwd, 'packages')).isDirectory();
67
+ }
68
+ catch {
69
+ monorepo = false;
70
+ }
71
+ return monorepo
72
+ ? ['packages/**/*.test.ts', 'packages/**/*.test.tsx']
73
+ : ['**/*.test.ts', '**/*.test.tsx'];
74
+ }
75
+ async function resolveName(flagName, prompter) {
76
+ if (flagName !== undefined)
77
+ return flagName;
78
+ if (!prompter)
79
+ return 'unnamed';
80
+ const reply = (await prompter.ask('Project name [unnamed]: ')).trim();
81
+ return reply.length > 0 ? reply : 'unnamed';
82
+ }
83
+ function isGateProfile(v) {
84
+ return GATE_PROFILES.includes(v);
85
+ }
86
+ async function resolveGateProfile(flagProfile, suggestion, prompter) {
87
+ if (flagProfile !== undefined) {
88
+ if (!isGateProfile(flagProfile)) {
89
+ throw new Error(`Invalid --gate-profile: ${flagProfile}. Expected one of strict|standard|auto.`);
90
+ }
91
+ return flagProfile;
92
+ }
93
+ if (!prompter)
94
+ return suggestion;
95
+ for (let attempt = 0; attempt < 3; attempt++) {
96
+ const reply = (await prompter.ask(`Profile [${suggestion}] (strict|standard|auto): `))
97
+ .trim()
98
+ .toLowerCase();
99
+ if (reply.length === 0)
100
+ return suggestion;
101
+ if (isGateProfile(reply))
102
+ return reply;
103
+ }
104
+ return suggestion;
105
+ }
106
+ /**
107
+ * Merge the managed CLAUDE.md block into `<cwd>/CLAUDE.md`. Returns the
108
+ * merge mode so the caller can report it. `preserved` means a marker-less
109
+ * user file was left untouched.
110
+ */
111
+ async function writeClaudeMd(cwd, opts) {
112
+ const path = join(cwd, 'CLAUDE.md');
113
+ const existing = existsSync(path) ? await readFile(path, 'utf8') : null;
114
+ const merged = mergeManagedBlock(existing, opts);
115
+ if (merged.mode !== 'preserved') {
116
+ await writeFile(path, merged.content);
117
+ }
118
+ return merged.mode;
119
+ }
120
+ /** Read project name + gate profile from an existing `.cadence/`. */
121
+ async function readExistingProject(cadenceDir) {
122
+ let name = 'unnamed';
123
+ let gateProfile = 'auto';
124
+ try {
125
+ const state = JSON.parse(await readFile(join(cadenceDir, 'state.json'), 'utf8'));
126
+ if (typeof state?.project?.name === 'string')
127
+ name = state.project.name;
128
+ }
129
+ catch {
130
+ /* fall back to default */
131
+ }
132
+ try {
133
+ const cfg = JSON.parse(await readFile(join(cadenceDir, 'config.json'), 'utf8'));
134
+ if (cfg?.profile === 'strict' || cfg?.profile === 'standard' || cfg?.profile === 'auto') {
135
+ gateProfile = cfg.profile;
136
+ }
137
+ }
138
+ catch {
139
+ /* fall back to default */
140
+ }
141
+ return { name, gateProfile };
142
+ }
143
+ export function registerInitCommand(program) {
144
+ program
145
+ .command('init')
146
+ .description('Scaffold a new .cadence/ directory in the current working tree')
147
+ .option('--name <project>', 'Project name (prompted when omitted)')
148
+ .option('--profile <preset>', 'Config preset: solo | team | production', 'team')
149
+ .option('--gate-profile <p>', 'Gate profile: strict | standard | auto (suggested from git history when omitted)')
150
+ .option('--claude-md', 'only (re)generate the managed CLAUDE.md block at the repo root; allowed on an already-initialized project')
151
+ .action(async (opts) => {
152
+ const cwd = process.cwd();
153
+ const cadenceDir = join(cwd, '.cadence');
154
+ // Phase 26.2 — standalone --claude-md: do NOT refuse on an existing
155
+ // .cadence/ and do NOT scaffold; just regenerate the managed block.
156
+ if (opts.claudeMd) {
157
+ const src = existsSync(cadenceDir)
158
+ ? await readExistingProject(cadenceDir)
159
+ : {
160
+ name: opts.name ?? 'unnamed',
161
+ gateProfile: (opts.gateProfile === 'strict' ||
162
+ opts.gateProfile === 'standard' ||
163
+ opts.gateProfile === 'auto'
164
+ ? opts.gateProfile
165
+ : 'auto'),
166
+ };
167
+ const mode = await writeClaudeMd(cwd, {
168
+ projectName: src.name,
169
+ gateProfile: src.gateProfile,
170
+ preset: opts.profile,
171
+ });
172
+ if (mode === 'preserved') {
173
+ console.error('CLAUDE.md preserved: no cadence:managed markers found — leaving the user file untouched.');
174
+ }
175
+ else {
176
+ console.log(`CLAUDE.md ${mode} (${src.name}, ${src.gateProfile}).`);
177
+ }
178
+ return;
179
+ }
180
+ if (existsSync(cadenceDir)) {
181
+ console.error('.cadence/ already initialized in this directory');
182
+ process.exit(2);
183
+ }
184
+ const presetCfg = presets[opts.profile];
185
+ if (!presetCfg) {
186
+ console.error(`Unknown profile: ${opts.profile}`);
187
+ process.exit(2);
188
+ }
189
+ const prompter = makePrompter();
190
+ let name;
191
+ let gateProfile;
192
+ try {
193
+ name = await resolveName(opts.name, prompter);
194
+ const suggestion = suggestGateProfile(cwd);
195
+ gateProfile = await resolveGateProfile(opts.gateProfile, suggestion, prompter);
196
+ }
197
+ catch (err) {
198
+ console.error(err instanceof Error ? err.message : String(err));
199
+ process.exit(2);
200
+ }
201
+ finally {
202
+ await prompter?.close?.();
203
+ }
204
+ const testGlobs = detectTestGlobs(cwd);
205
+ const layout = testGlobs[0]?.startsWith('packages/') ?? false
206
+ ? 'monorepo (packages/)'
207
+ : 'single-package';
208
+ const cfg = {
209
+ ...presetCfg,
210
+ profile: gateProfile,
211
+ verification: { ...presetCfg.verification, testGlobs },
212
+ };
213
+ await mkdir(join(cadenceDir, 'phases'), { recursive: true });
214
+ await mkdir(join(cadenceDir, 'handoff'), { recursive: true });
215
+ await mkdir(join(cadenceDir, 'research'), { recursive: true });
216
+ await mkdir(join(cadenceDir, 'archive'), { recursive: true });
217
+ await atomicWriteJSON(join(cadenceDir, 'config.json'), cfg);
218
+ const state = emptyState(name);
219
+ // Phase 41.1 — one write path: commit() writes state.json + STATE.md.
220
+ await new SimpleStateBackend(cwd).commit(state);
221
+ await writeFile(join(cadenceDir, 'PROJECT.md'), `# ${name}\n\n> CADENCE project. See .cadence/ROADMAP.md for phases.\n`);
222
+ await writeFile(join(cadenceDir, 'ROADMAP.md'), '# Roadmap\n\n_(no phases yet)_\n');
223
+ await writeFile(join(cadenceDir, 'MILESTONES.md'), '# Milestones\n');
224
+ await writeFile(join(cadenceDir, 'SPECIAL-FLOWS.md'), '# Special Flows\n\n_(none yet)_\n');
225
+ await writeClaudeMd(cwd, {
226
+ projectName: name,
227
+ gateProfile,
228
+ preset: opts.profile,
229
+ });
230
+ // Legacy line — retained for back-compat ahead of the summary block.
231
+ console.log(`Initialized CADENCE in ${cadenceDir} (profile=${opts.profile})`);
232
+ console.log('');
233
+ console.log(` CADENCE initialized`);
234
+ console.log(` ───────────────────`);
235
+ console.log(` project ${name}`);
236
+ console.log(` location ${cadenceDir}`);
237
+ console.log(` preset ${opts.profile} (config preset — workflow defaults: solo|team|production)`);
238
+ console.log(` gate profile ${gateProfile} (gate strictness: strict|standard|auto)`);
239
+ console.log(` layout ${layout}`);
240
+ console.log(` test globs ${testGlobs.join(', ')}`);
241
+ console.log(` scaffolded config.json, state.json, PROJECT.md,`);
242
+ console.log(` ROADMAP.md, MILESTONES.md,`);
243
+ console.log(` SPECIAL-FLOWS.md, STATE.md, CLAUDE.md`);
244
+ console.log(` phases/ handoff/ research/ archive/`);
245
+ console.log('');
246
+ console.log(` Next: edit .cadence/ROADMAP.md, then \`cadence draft new\`.`);
247
+ console.log(` Docs: see .cadence/ROADMAP.md and the project README.`);
248
+ if (gateProfile === 'standard' || gateProfile === 'strict') {
249
+ console.log('');
250
+ console.log(` Note: under the \`${gateProfile}\` gate profile \`cadence draft approve\` is`);
251
+ console.log(` interactive — pass \`--no-approve\` for non-TTY runs (CI, scripts, agents).`);
252
+ }
253
+ });
254
+ }
255
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerInspectCommand(program: Command): void;
3
+ //# sourceMappingURL=inspect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/inspect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoB7D"}
@@ -0,0 +1,24 @@
1
+ import { runInspect } from '../../intelligence/inspect.js';
2
+ import { renderStrategyMd } from '../../intelligence/render-inspection.js';
3
+ export function registerInspectCommand(program) {
4
+ program
5
+ .command('inspect')
6
+ .description('Scan the project and synthesize strategic status (read-only)')
7
+ .option('--json', 'emit machine-readable JSON instead of rendered text')
8
+ .action(async (opts) => {
9
+ try {
10
+ const inspection = await runInspect(process.cwd());
11
+ if (opts.json) {
12
+ process.stdout.write(JSON.stringify(inspection) + '\n');
13
+ }
14
+ else {
15
+ process.stdout.write(renderStrategyMd(inspection));
16
+ }
17
+ }
18
+ catch (err) {
19
+ process.stderr.write(`inspect failed: ${err instanceof Error ? err.message : String(err)}\n`);
20
+ process.exitCode = 1;
21
+ }
22
+ });
23
+ }
24
+ //# sourceMappingURL=inspect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../../src/cli/commands/inspect.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAE3E,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,8DAA8D,CAAC;SAC3E,MAAM,CAAC,QAAQ,EAAE,qDAAqD,CAAC;SACvE,MAAM,CAAC,KAAK,EAAE,IAAwB,EAAE,EAAE;QACzC,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YACnD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;YAC1D,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,mBAAmB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CACxE,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerIntelligenceCommand(program: Command): void;
3
+ //# sourceMappingURL=intelligence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intelligence.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/intelligence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmBzC,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4MlE"}