@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,63 @@
1
+ import Anthropic from '@anthropic-ai/sdk';
2
+ import type { Spec } from '@manehorizons/cadence-types';
3
+ /**
4
+ * Phase 36.1 — spec-review verifier. Reviews the parsed SPEC (objective +
5
+ * ACs + constraints + open questions) at `cadence spec approve` (run through
6
+ * the Phase 35.1 convergence loop). Structural clone of `plan-review.ts`;
7
+ * review-only (cadence is host-agnostic — no generator).
8
+ */
9
+ export type SpecReviewSeverity = 'high' | 'medium' | 'low';
10
+ export interface SpecReviewFinding {
11
+ severity: SpecReviewSeverity;
12
+ message: string;
13
+ suggestedEdit?: string;
14
+ }
15
+ export interface SpecReviewInput {
16
+ spec: Spec;
17
+ }
18
+ export interface SpecReviewResult {
19
+ pass: boolean;
20
+ findings: SpecReviewFinding[];
21
+ provider: string;
22
+ model?: string;
23
+ }
24
+ export interface SpecReviewVerifier {
25
+ readonly name: string;
26
+ verify(input: SpecReviewInput): Promise<SpecReviewResult>;
27
+ }
28
+ /**
29
+ * Deterministic mock — passes iff the spec has a non-empty objective, ≥1 AC
30
+ * with non-empty G/W/T, AND ≥1 constraint. Intentionally stricter than
31
+ * MockPlanReviewVerifier (a spec without constraints is under-scoped). Each
32
+ * defect is one HIGH finding.
33
+ */
34
+ export declare class MockSpecReviewVerifier implements SpecReviewVerifier {
35
+ readonly name = "mock";
36
+ verify(input: SpecReviewInput): Promise<SpecReviewResult>;
37
+ }
38
+ export interface AnthropicSpecReviewVerifierOptions {
39
+ apiKey?: string;
40
+ model?: string;
41
+ maxTokens?: number;
42
+ client?: Anthropic;
43
+ }
44
+ export declare class AnthropicSpecReviewVerifier implements SpecReviewVerifier {
45
+ readonly name = "anthropic";
46
+ private readonly client;
47
+ private readonly model;
48
+ private readonly maxTokens;
49
+ constructor(opts?: AnthropicSpecReviewVerifierOptions);
50
+ verify(input: SpecReviewInput): Promise<SpecReviewResult>;
51
+ }
52
+ export interface LocalSpecReviewVerifierOptions {
53
+ baseURL: string;
54
+ model: string;
55
+ transport?: typeof fetch;
56
+ }
57
+ export declare class LocalSpecReviewVerifier implements SpecReviewVerifier {
58
+ private readonly o;
59
+ readonly name = "local";
60
+ constructor(o: LocalSpecReviewVerifierOptions);
61
+ verify(input: SpecReviewInput): Promise<SpecReviewResult>;
62
+ }
63
+ //# sourceMappingURL=spec-review.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec-review.d.ts","sourceRoot":"","sources":["../../src/verify/spec-review.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAG1C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAGxD;;;;;GAKG;AAEH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE3D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC3D;AAED;;;;;GAKG;AACH,qBAAa,sBAAuB,YAAW,kBAAkB;IAC/D,QAAQ,CAAC,IAAI,UAAU;IAEjB,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAuChE;AA0BD,MAAM,WAAW,kCAAkC;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAED,qBAAa,2BAA4B,YAAW,kBAAkB;IACpE,QAAQ,CAAC,IAAI,eAAe;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,IAAI,GAAE,kCAAuC;IAgBnD,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAuChE;AAED,MAAM,WAAW,8BAA8B;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,qBAAa,uBAAwB,YAAW,kBAAkB;IAEpD,OAAO,CAAC,QAAQ,CAAC,CAAC;IAD9B,QAAQ,CAAC,IAAI,WAAW;gBACK,CAAC,EAAE,8BAA8B;IAExD,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAmBhE"}
@@ -0,0 +1,182 @@
1
+ import Anthropic from '@anthropic-ai/sdk';
2
+ import { zodOutputFormat } from '@anthropic-ai/sdk/helpers/zod';
3
+ import { z } from 'zod/v4';
4
+ import { localChatJSON } from './local-client.js';
5
+ /**
6
+ * Deterministic mock — passes iff the spec has a non-empty objective, ≥1 AC
7
+ * with non-empty G/W/T, AND ≥1 constraint. Intentionally stricter than
8
+ * MockPlanReviewVerifier (a spec without constraints is under-scoped). Each
9
+ * defect is one HIGH finding.
10
+ */
11
+ export class MockSpecReviewVerifier {
12
+ name = 'mock';
13
+ async verify(input) {
14
+ const findings = [];
15
+ const { objective, acceptanceCriteria: acs, constraints } = input.spec;
16
+ if (objective.trim().length === 0) {
17
+ findings.push({
18
+ severity: 'high',
19
+ message: 'spec has an empty objective',
20
+ suggestedEdit: 'State the objective in one falsifiable sentence.',
21
+ });
22
+ }
23
+ if (acs.length === 0) {
24
+ findings.push({
25
+ severity: 'high',
26
+ message: 'spec has no acceptance criteria',
27
+ suggestedEdit: 'Add at least one AC with Given/When/Then.',
28
+ });
29
+ }
30
+ for (const ac of acs) {
31
+ for (const field of ['given', 'when', 'then']) {
32
+ if (ac[field].trim().length === 0) {
33
+ findings.push({
34
+ severity: 'high',
35
+ message: `${ac.id} has empty ${field}`,
36
+ suggestedEdit: `Fill in the ${field} clause for ${ac.id}.`,
37
+ });
38
+ }
39
+ }
40
+ }
41
+ if (constraints.length === 0) {
42
+ findings.push({
43
+ severity: 'high',
44
+ message: 'spec has no constraints',
45
+ suggestedEdit: 'Add at least one constraint/boundary to bound scope.',
46
+ });
47
+ }
48
+ return { pass: findings.length === 0, findings, provider: this.name };
49
+ }
50
+ }
51
+ const SpecReviewFindingSchema = z.object({
52
+ severity: z.enum(['high', 'medium', 'low']),
53
+ message: z.string(),
54
+ suggestedEdit: z.string().optional(),
55
+ });
56
+ const SpecReviewResponseSchema = z.object({
57
+ pass: z.boolean(),
58
+ findings: z.array(SpecReviewFindingSchema),
59
+ });
60
+ const SYSTEM_PROMPT = `You are an independent spec reviewer for an AI-assisted development tool called CADENCE.
61
+
62
+ You receive a development SPEC (objective, acceptance criteria, constraints, open questions) BEFORE any task breakdown. Decide whether the spec is the right thing to build and is coherent enough to turn into a plan. Be skeptical:
63
+ - objective vague, unfalsifiable, or not matched by the ACs → high
64
+ - an AC whose Given/When/Then doesn't pin down an observable outcome → high
65
+ - ACs that don't collectively cover the objective → high
66
+ - missing constraints that invite scope creep, or open questions that block planning → medium
67
+ - wording/ordering nits → low
68
+
69
+ Set "pass": false if any HIGH finding exists; otherwise "pass": true. Attach a concrete "suggestedEdit" when you can. Keep each message ≤ 200 characters. If the spec is sound, return "pass": true with an empty findings array. Return strict JSON matching the requested schema.`;
70
+ const DEFAULT_MODEL = 'claude-sonnet-4-6';
71
+ const DEFAULT_MAX_TOKENS = 4_000;
72
+ export class AnthropicSpecReviewVerifier {
73
+ name = 'anthropic';
74
+ client;
75
+ model;
76
+ maxTokens;
77
+ constructor(opts = {}) {
78
+ if (opts.client) {
79
+ this.client = opts.client;
80
+ }
81
+ else {
82
+ const apiKey = opts.apiKey ?? process.env.ANTHROPIC_API_KEY;
83
+ if (!apiKey) {
84
+ throw new Error('AnthropicSpecReviewVerifier requires an API key. Set ANTHROPIC_API_KEY or pass `apiKey` / `client`.');
85
+ }
86
+ this.client = new Anthropic({ apiKey });
87
+ }
88
+ this.model = opts.model ?? DEFAULT_MODEL;
89
+ this.maxTokens = opts.maxTokens ?? DEFAULT_MAX_TOKENS;
90
+ }
91
+ async verify(input) {
92
+ const userMessage = formatUserMessage(input.spec);
93
+ let response;
94
+ try {
95
+ response = await this.client.messages.parse({
96
+ model: this.model,
97
+ max_tokens: this.maxTokens,
98
+ system: [
99
+ { type: 'text', text: SYSTEM_PROMPT, cache_control: { type: 'ephemeral' } },
100
+ ],
101
+ output_config: { format: zodOutputFormat(SpecReviewResponseSchema) },
102
+ messages: [{ role: 'user', content: userMessage }],
103
+ });
104
+ }
105
+ catch (err) {
106
+ if (err instanceof Anthropic.APIError) {
107
+ throw new Error(`AnthropicSpecReviewVerifier API error (${err.status ?? 'unknown'}): ${err.message}`);
108
+ }
109
+ throw err;
110
+ }
111
+ const parsed = response.parsed_output;
112
+ if (!parsed) {
113
+ throw new Error('AnthropicSpecReviewVerifier received no parseable output from the model (response.parsed_output was null/undefined).');
114
+ }
115
+ const findings = [];
116
+ for (const f of parsed.findings) {
117
+ findings.push({
118
+ severity: f.severity,
119
+ message: f.message,
120
+ ...(f.suggestedEdit !== undefined ? { suggestedEdit: f.suggestedEdit } : {}),
121
+ });
122
+ }
123
+ return { pass: parsed.pass, findings, provider: this.name, model: this.model };
124
+ }
125
+ }
126
+ export class LocalSpecReviewVerifier {
127
+ o;
128
+ name = 'local';
129
+ constructor(o) {
130
+ this.o = o;
131
+ }
132
+ async verify(input) {
133
+ const parsed = await localChatJSON({
134
+ baseURL: this.o.baseURL,
135
+ model: this.o.model,
136
+ system: SYSTEM_PROMPT,
137
+ user: formatUserMessage(input.spec),
138
+ schema: SpecReviewResponseSchema,
139
+ ...(this.o.transport ? { transport: this.o.transport } : {}),
140
+ });
141
+ const findings = [];
142
+ for (const f of parsed.findings) {
143
+ findings.push({
144
+ severity: f.severity,
145
+ message: f.message,
146
+ ...(f.suggestedEdit !== undefined ? { suggestedEdit: f.suggestedEdit } : {}),
147
+ });
148
+ }
149
+ return { pass: parsed.pass, findings, provider: this.name, model: this.o.model };
150
+ }
151
+ }
152
+ function formatUserMessage(spec) {
153
+ const acs = spec.acceptanceCriteria.length > 0
154
+ ? spec.acceptanceCriteria
155
+ .map((ac) => `### ${ac.id}\nGiven ${ac.given}\nWhen ${ac.when}\nThen ${ac.then}`)
156
+ .join('\n\n')
157
+ : '(none)';
158
+ const constraints = spec.constraints.length > 0 ? spec.constraints.map((c) => `- ${c}`).join('\n') : '(none)';
159
+ const openQuestions = spec.openQuestions.length > 0
160
+ ? spec.openQuestions.map((q) => `- ${q}`).join('\n')
161
+ : '(none)';
162
+ return `# Spec: ${spec.id}
163
+
164
+ # Objective
165
+
166
+ ${spec.objective}
167
+
168
+ # Acceptance Criteria
169
+
170
+ ${acs}
171
+
172
+ # Constraints
173
+
174
+ ${constraints}
175
+
176
+ # Open Questions
177
+
178
+ ${openQuestions}
179
+
180
+ Review this spec and return a verdict using the requested schema.`;
181
+ }
182
+ //# sourceMappingURL=spec-review.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec-review.js","sourceRoot":"","sources":["../../src/verify/spec-review.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ export type VerifierProvider = 'mock' | 'anthropic' | 'local';
2
+ /** Shared options for every `select…Verifier` factory (Phase 40.1). */
3
+ export interface VerifierSelectOptions {
4
+ /** Overrides the configured provider. */
5
+ override?: VerifierProvider;
6
+ /** Test seam: stand in for `process.env`. */
7
+ env?: NodeJS.ProcessEnv;
8
+ /** Test seam: emit warnings somewhere other than `process.stderr`. */
9
+ warn?: (message: string) => void;
10
+ }
11
+ /**
12
+ * Describes one verifier family: how to read its `{ provider, model }` config
13
+ * slice and how to build each of its three providers. `C` is the (Pick) config
14
+ * param the binding accepts; `V` is the verifier type produced.
15
+ */
16
+ export interface VerifierFactorySpec<C, V> {
17
+ /** Warning-prefix label, e.g. `'code-review'`. */
18
+ label: string;
19
+ /** Read this family's `{ provider, model }` slice off the config. `model`
20
+ * admits `| undefined` so the (exactOptionalPropertyTypes) config slices
21
+ * assign directly. */
22
+ read(config: C | null): {
23
+ provider?: VerifierProvider;
24
+ model?: string | undefined;
25
+ } | undefined;
26
+ mock(): V;
27
+ anthropic(opts: {
28
+ apiKey: string;
29
+ model?: string;
30
+ }): V;
31
+ local(opts: {
32
+ baseURL: string;
33
+ model: string;
34
+ }): V;
35
+ }
36
+ /**
37
+ * Build a `select…Verifier(config, opts)` function (Phase 40.1 consolidation of
38
+ * six byte-identical factories). One selection algorithm:
39
+ * `provider = override ?? slice.provider ?? 'mock'`; the `anthropic` provider
40
+ * needs `ANTHROPIC_API_KEY`; the `local` provider needs `CADENCE_LOCAL_BASE_URL`
41
+ * and a model (`slice.model ?? CADENCE_LOCAL_MODEL`); a missing prerequisite
42
+ * falls back to `mock` with one stderr warning so the caller knows it downgraded.
43
+ */
44
+ export declare function createVerifierFactory<C, V>(spec: VerifierFactorySpec<C, V>): (config: C | null, opts?: VerifierSelectOptions) => V;
45
+ //# sourceMappingURL=verifier-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verifier-factory.d.ts","sourceRoot":"","sources":["../../src/verify/verifier-factory.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC;AAE9D,uEAAuE;AACvE,MAAM,WAAW,qBAAqB;IACpC,yCAAyC;IACzC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,6CAA6C;IAC7C,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,sEAAsE;IACtE,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,EAAE,CAAC;IACvC,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;IACd;;2BAEuB;IACvB,IAAI,CACF,MAAM,EAAE,CAAC,GAAG,IAAI,GACf;QAAE,QAAQ,CAAC,EAAE,gBAAgB,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,GAAG,SAAS,CAAC;IAC3E,IAAI,IAAI,CAAC,CAAC;IACV,SAAS,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,CAAC,CAAC;IACvD,KAAK,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,CAAC,CAAC;CACpD;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EACxC,IAAI,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,GAC9B,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE,qBAAqB,KAAK,CAAC,CAmCvD"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Build a `select…Verifier(config, opts)` function (Phase 40.1 consolidation of
3
+ * six byte-identical factories). One selection algorithm:
4
+ * `provider = override ?? slice.provider ?? 'mock'`; the `anthropic` provider
5
+ * needs `ANTHROPIC_API_KEY`; the `local` provider needs `CADENCE_LOCAL_BASE_URL`
6
+ * and a model (`slice.model ?? CADENCE_LOCAL_MODEL`); a missing prerequisite
7
+ * falls back to `mock` with one stderr warning so the caller knows it downgraded.
8
+ */
9
+ export function createVerifierFactory(spec) {
10
+ return (config, opts = {}) => {
11
+ const slice = spec.read(config);
12
+ const provider = opts.override ?? slice?.provider ?? 'mock';
13
+ const env = opts.env ?? process.env;
14
+ const warn = opts.warn ?? ((m) => process.stderr.write(m + '\n'));
15
+ if (provider === 'anthropic') {
16
+ if (!env.ANTHROPIC_API_KEY) {
17
+ warn(`${spec.label}: anthropic provider requested but ANTHROPIC_API_KEY is unset — falling back to mock provider.`);
18
+ return spec.mock();
19
+ }
20
+ const model = slice?.model;
21
+ return spec.anthropic({
22
+ apiKey: env.ANTHROPIC_API_KEY,
23
+ ...(model ? { model } : {}),
24
+ });
25
+ }
26
+ if (provider === 'local') {
27
+ const baseURL = env.CADENCE_LOCAL_BASE_URL;
28
+ const model = slice?.model ?? env.CADENCE_LOCAL_MODEL;
29
+ if (!baseURL || !model) {
30
+ warn(`${spec.label}: local provider requested but CADENCE_LOCAL_BASE_URL / model unset — falling back to mock provider.`);
31
+ return spec.mock();
32
+ }
33
+ return spec.local({ baseURL, model });
34
+ }
35
+ return spec.mock();
36
+ };
37
+ }
38
+ //# sourceMappingURL=verifier-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verifier-factory.js","sourceRoot":"","sources":["../../src/verify/verifier-factory.ts"],"names":[],"mappings":"AA+BA;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAA+B;IAE/B,OAAO,CAAC,MAAgB,EAAE,OAA8B,EAAE,EAAK,EAAE;QAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,KAAK,EAAE,QAAQ,IAAI,MAAM,CAAC;QAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAE1E,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;YAC7B,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;gBAC3B,IAAI,CACF,GAAG,IAAI,CAAC,KAAK,gGAAgG,CAC9G,CAAC;gBACF,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;YACrB,CAAC;YACD,MAAM,KAAK,GAAG,KAAK,EAAE,KAAK,CAAC;YAC3B,OAAO,IAAI,CAAC,SAAS,CAAC;gBACpB,MAAM,EAAE,GAAG,CAAC,iBAAiB;gBAC7B,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5B,CAAC,CAAC;QACL,CAAC;QAED,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,GAAG,CAAC,sBAAsB,CAAC;YAC3C,MAAM,KAAK,GAAG,KAAK,EAAE,KAAK,IAAI,GAAG,CAAC,mBAAmB,CAAC;YACtD,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;gBACvB,IAAI,CACF,GAAG,IAAI,CAAC,KAAK,sGAAsG,CACpH,CAAC;gBACF,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;YACrB,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,63 @@
1
+ export interface VerifyAc {
2
+ /** Stable AC id, e.g. "AC-1". */
3
+ id: string;
4
+ /** Human-readable Given clause from the DRAFT. */
5
+ given: string;
6
+ /** Human-readable When clause. */
7
+ when: string;
8
+ /** Human-readable Then clause — the actual outcome to verify. */
9
+ then: string;
10
+ }
11
+ export interface VerifyTestRef {
12
+ /** Path relative to repoRoot, forward-slashed. */
13
+ file: string;
14
+ /** 1-based line where the AC token appeared. */
15
+ line: number;
16
+ /** Trimmed snippet of the matching test line. */
17
+ snippet: string;
18
+ }
19
+ export interface VerifyInput {
20
+ /** ACs to verify. */
21
+ acs: VerifyAc[];
22
+ /** Map of AC id → linked test refs (from `scanTestCoverage`). */
23
+ tests: Record<string, VerifyTestRef[]>;
24
+ /** Optional unified diff of code changes for the phase. May be empty. */
25
+ diff: string;
26
+ /** Optional list of touched source files (for context). May be empty. */
27
+ files: string[];
28
+ }
29
+ export interface AcVerdict {
30
+ pass: boolean;
31
+ /** Short, human-readable reason (≤ 200 chars). */
32
+ reason: string;
33
+ }
34
+ export interface VerifyResult {
35
+ /** Per-AC verdicts keyed by AC id. */
36
+ verdicts: Record<string, AcVerdict>;
37
+ /** Provider name (e.g. "mock", "anthropic"). Stamped into SUMMARY. */
38
+ provider: string;
39
+ /** Optional model name when the provider is an LLM. */
40
+ model?: string;
41
+ }
42
+ /**
43
+ * Verifiers must be safe to call without I/O setup beyond what the
44
+ * constructor accepts. Implementations should *not* throw on per-AC verdict
45
+ * failures — failed verdicts go in `result.verdicts[id].pass = false`.
46
+ * Throwing is reserved for transport errors (network, malformed response).
47
+ */
48
+ export interface Verifier {
49
+ readonly name: string;
50
+ verify(input: VerifyInput): Promise<VerifyResult>;
51
+ }
52
+ export interface LocalVerifierOptions {
53
+ baseURL: string;
54
+ model: string;
55
+ transport?: typeof fetch;
56
+ }
57
+ export declare class LocalVerifier implements Verifier {
58
+ private readonly o;
59
+ readonly name = "local";
60
+ constructor(o: LocalVerifierOptions);
61
+ verify(input: VerifyInput): Promise<VerifyResult>;
62
+ }
63
+ //# sourceMappingURL=verifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verifier.d.ts","sourceRoot":"","sources":["../../src/verify/verifier.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,QAAQ;IACvB,iCAAiC;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,qBAAqB;IACrB,GAAG,EAAE,QAAQ,EAAE,CAAC;IAChB,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IACvC,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACpC,sEAAsE;IACtE,QAAQ,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,qBAAa,aAAc,YAAW,QAAQ;IAEhC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAD9B,QAAQ,CAAC,IAAI,WAAW;gBACK,CAAC,EAAE,oBAAoB;IAE9C,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;CAgBxD"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Abstract interface for the `--deep` independent verifier. Implementations
3
+ * read AC text + relevant code + tests and return a per-AC pass/fail verdict
4
+ * with reasoning. Selection is config-driven (see `selectVerifier`).
5
+ */
6
+ import { localChatJSON } from './local-client.js';
7
+ import { SYSTEM_PROMPT, VerifierResponseSchema, formatUserMessage, } from './anthropic-verifier.js';
8
+ export class LocalVerifier {
9
+ o;
10
+ name = 'local';
11
+ constructor(o) {
12
+ this.o = o;
13
+ }
14
+ async verify(input) {
15
+ if (input.acs.length === 0) {
16
+ return { verdicts: {}, provider: this.name, model: this.o.model };
17
+ }
18
+ const parsed = await localChatJSON({
19
+ baseURL: this.o.baseURL,
20
+ model: this.o.model,
21
+ system: SYSTEM_PROMPT,
22
+ user: formatUserMessage(input),
23
+ schema: VerifierResponseSchema,
24
+ ...(this.o.transport ? { transport: this.o.transport } : {}),
25
+ });
26
+ const verdicts = {};
27
+ for (const v of parsed.verdicts)
28
+ verdicts[v.id] = { pass: v.pass, reason: v.reason };
29
+ return { verdicts, provider: this.name, model: this.o.model };
30
+ }
31
+ }
32
+ //# sourceMappingURL=verifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verifier.js","sourceRoot":"","sources":["../../src/verify/verifier.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AAiEjC,MAAM,OAAO,aAAa;IAEK;IADpB,IAAI,GAAG,OAAO,CAAC;IACxB,YAA6B,CAAuB;QAAvB,MAAC,GAAD,CAAC,CAAsB;IAAG,CAAC;IAExD,KAAK,CAAC,MAAM,CAAC,KAAkB;QAC7B,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QACpE,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC;YACjC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO;YACvB,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK;YACnB,MAAM,EAAE,aAAa;YACrB,IAAI,EAAE,iBAAiB,CAAC,KAAK,CAAC;YAC9B,MAAM,EAAE,sBAAsB;YAC9B,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7D,CAAC,CAAC;QACH,MAAM,QAAQ,GAA8B,EAAE,CAAC;QAC/C,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ;YAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;QACrF,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;IAChE,CAAC;CACF"}
package/package.json ADDED
@@ -0,0 +1,62 @@
1
+ {
2
+ "name": "@manehorizons/cadence-core",
3
+ "version": "1.1.1",
4
+ "description": "CADENCE engine — the DRAFT→BUILD→SETTLE loop, configurable quality gates, and the host-agnostic `cadence` CLI for AI-assisted development.",
5
+ "license": "MIT",
6
+ "author": "Thomas Powers",
7
+ "homepage": "https://github.com/manehorizons/cadence#readme",
8
+ "bugs": "https://github.com/manehorizons/cadence/issues",
9
+ "keywords": [
10
+ "cadence",
11
+ "ai",
12
+ "llm",
13
+ "agents",
14
+ "code-review",
15
+ "quality-gates",
16
+ "tdd",
17
+ "workflow",
18
+ "claude",
19
+ "cli"
20
+ ],
21
+ "type": "module",
22
+ "main": "./dist/index.js",
23
+ "types": "./dist/index.d.ts",
24
+ "exports": {
25
+ ".": {
26
+ "import": "./dist/index.js",
27
+ "types": "./dist/index.d.ts"
28
+ }
29
+ },
30
+ "bin": {
31
+ "cadence": "./bin/cadence.cjs"
32
+ },
33
+ "files": [
34
+ "dist",
35
+ "bin"
36
+ ],
37
+ "publishConfig": {
38
+ "access": "public"
39
+ },
40
+ "repository": {
41
+ "type": "git",
42
+ "url": "git+https://github.com/manehorizons/cadence.git",
43
+ "directory": "packages/core"
44
+ },
45
+ "dependencies": {
46
+ "@anthropic-ai/sdk": "^0.96.0",
47
+ "commander": "^13.0.0",
48
+ "zod": "^3.23.0",
49
+ "@manehorizons/cadence-types": "1.1.1"
50
+ },
51
+ "devDependencies": {
52
+ "vitest": "^2.1.0",
53
+ "@manehorizons/cadence-testkit": "1.1.1"
54
+ },
55
+ "scripts": {
56
+ "build": "tsc -p tsconfig.json",
57
+ "typecheck": "tsc -p tsconfig.json --noEmit",
58
+ "test": "vitest run",
59
+ "lint": "eslint src",
60
+ "clean": "rm -rf dist .turbo"
61
+ }
62
+ }