@contractspec/bundle.workspace 0.0.0-canary-20260113162409

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 (703) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +83 -0
  3. package/dist/_virtual/rolldown_runtime.mjs +20 -0
  4. package/dist/adapters/ai.d.mts +12 -0
  5. package/dist/adapters/ai.d.mts.map +1 -0
  6. package/dist/adapters/ai.mjs +83 -0
  7. package/dist/adapters/ai.mjs.map +1 -0
  8. package/dist/adapters/factory.d.mts +29 -0
  9. package/dist/adapters/factory.d.mts.map +1 -0
  10. package/dist/adapters/factory.mjs +37 -0
  11. package/dist/adapters/factory.mjs.map +1 -0
  12. package/dist/adapters/fs.d.mts +12 -0
  13. package/dist/adapters/fs.d.mts.map +1 -0
  14. package/dist/adapters/fs.mjs +133 -0
  15. package/dist/adapters/fs.mjs.map +1 -0
  16. package/dist/adapters/git.d.mts +11 -0
  17. package/dist/adapters/git.d.mts.map +1 -0
  18. package/dist/adapters/git.mjs +84 -0
  19. package/dist/adapters/git.mjs.map +1 -0
  20. package/dist/adapters/index.d.mts +7 -0
  21. package/dist/adapters/index.mjs +9 -0
  22. package/dist/adapters/logger.d.mts +18 -0
  23. package/dist/adapters/logger.d.mts.map +1 -0
  24. package/dist/adapters/logger.mjs +81 -0
  25. package/dist/adapters/logger.mjs.map +1 -0
  26. package/dist/adapters/watcher.d.mts +11 -0
  27. package/dist/adapters/watcher.d.mts.map +1 -0
  28. package/dist/adapters/watcher.mjs +74 -0
  29. package/dist/adapters/watcher.mjs.map +1 -0
  30. package/dist/adapters/workspace.d.mts +148 -0
  31. package/dist/adapters/workspace.d.mts.map +1 -0
  32. package/dist/adapters/workspace.mjs +275 -0
  33. package/dist/adapters/workspace.mjs.map +1 -0
  34. package/dist/ai/agents/claude-code-agent.d.mts +22 -0
  35. package/dist/ai/agents/claude-code-agent.d.mts.map +1 -0
  36. package/dist/ai/agents/claude-code-agent.mjs +182 -0
  37. package/dist/ai/agents/claude-code-agent.mjs.map +1 -0
  38. package/dist/ai/agents/cursor-agent.d.mts +68 -0
  39. package/dist/ai/agents/cursor-agent.d.mts.map +1 -0
  40. package/dist/ai/agents/cursor-agent.mjs +436 -0
  41. package/dist/ai/agents/cursor-agent.mjs.map +1 -0
  42. package/dist/ai/agents/index.mjs +7 -0
  43. package/dist/ai/agents/openai-codex-agent.d.mts +22 -0
  44. package/dist/ai/agents/openai-codex-agent.d.mts.map +1 -0
  45. package/dist/ai/agents/openai-codex-agent.mjs +167 -0
  46. package/dist/ai/agents/openai-codex-agent.mjs.map +1 -0
  47. package/dist/ai/agents/orchestrator.d.mts +50 -0
  48. package/dist/ai/agents/orchestrator.d.mts.map +1 -0
  49. package/dist/ai/agents/orchestrator.mjs +143 -0
  50. package/dist/ai/agents/orchestrator.mjs.map +1 -0
  51. package/dist/ai/agents/simple-agent.d.mts +17 -0
  52. package/dist/ai/agents/simple-agent.d.mts.map +1 -0
  53. package/dist/ai/agents/simple-agent.mjs +92 -0
  54. package/dist/ai/agents/simple-agent.mjs.map +1 -0
  55. package/dist/ai/agents/types.d.mts +36 -0
  56. package/dist/ai/agents/types.d.mts.map +1 -0
  57. package/dist/ai/client.d.mts +97 -0
  58. package/dist/ai/client.d.mts.map +1 -0
  59. package/dist/ai/client.mjs +189 -0
  60. package/dist/ai/client.mjs.map +1 -0
  61. package/dist/ai/index.d.mts +9 -0
  62. package/dist/ai/index.mjs +11 -0
  63. package/dist/ai/prompts/code-generation.d.mts +26 -0
  64. package/dist/ai/prompts/code-generation.d.mts.map +1 -0
  65. package/dist/ai/prompts/code-generation.mjs +143 -0
  66. package/dist/ai/prompts/code-generation.mjs.map +1 -0
  67. package/dist/ai/prompts/index.d.mts +10 -0
  68. package/dist/ai/prompts/index.d.mts.map +1 -0
  69. package/dist/ai/prompts/index.mjs +13 -0
  70. package/dist/ai/prompts/index.mjs.map +1 -0
  71. package/dist/ai/prompts/spec-creation.d.mts +29 -0
  72. package/dist/ai/prompts/spec-creation.d.mts.map +1 -0
  73. package/dist/ai/prompts/spec-creation.mjs +111 -0
  74. package/dist/ai/prompts/spec-creation.mjs.map +1 -0
  75. package/dist/ai/providers.d.mts +29 -0
  76. package/dist/ai/providers.d.mts.map +1 -0
  77. package/dist/ai/providers.mjs +39 -0
  78. package/dist/ai/providers.mjs.map +1 -0
  79. package/dist/formatters/index.d.mts +11 -0
  80. package/dist/formatters/index.d.mts.map +1 -0
  81. package/dist/formatters/index.mjs +17 -0
  82. package/dist/formatters/index.mjs.map +1 -0
  83. package/dist/formatters/json.d.mts +56 -0
  84. package/dist/formatters/json.d.mts.map +1 -0
  85. package/dist/formatters/json.mjs +43 -0
  86. package/dist/formatters/json.mjs.map +1 -0
  87. package/dist/formatters/sarif.d.mts +101 -0
  88. package/dist/formatters/sarif.d.mts.map +1 -0
  89. package/dist/formatters/sarif.mjs +163 -0
  90. package/dist/formatters/sarif.mjs.map +1 -0
  91. package/dist/formatters/text.d.mts +35 -0
  92. package/dist/formatters/text.d.mts.map +1 -0
  93. package/dist/formatters/text.mjs +209 -0
  94. package/dist/formatters/text.mjs.map +1 -0
  95. package/dist/index.d.mts +125 -0
  96. package/dist/index.mjs +110 -0
  97. package/dist/ports/ai.d.mts +59 -0
  98. package/dist/ports/ai.d.mts.map +1 -0
  99. package/dist/ports/fs.d.mts +81 -0
  100. package/dist/ports/fs.d.mts.map +1 -0
  101. package/dist/ports/git.d.mts +46 -0
  102. package/dist/ports/git.d.mts.map +1 -0
  103. package/dist/ports/index.d.mts +6 -0
  104. package/dist/ports/logger.d.mts +88 -0
  105. package/dist/ports/logger.d.mts.map +1 -0
  106. package/dist/ports/rulesync.d.mts +38 -0
  107. package/dist/ports/rulesync.d.mts.map +1 -0
  108. package/dist/ports/watcher.d.mts +52 -0
  109. package/dist/ports/watcher.d.mts.map +1 -0
  110. package/dist/services/agent-guide/adapters/claude-code.d.mts +35 -0
  111. package/dist/services/agent-guide/adapters/claude-code.d.mts.map +1 -0
  112. package/dist/services/agent-guide/adapters/claude-code.mjs +144 -0
  113. package/dist/services/agent-guide/adapters/claude-code.mjs.map +1 -0
  114. package/dist/services/agent-guide/adapters/cursor-cli.d.mts +39 -0
  115. package/dist/services/agent-guide/adapters/cursor-cli.d.mts.map +1 -0
  116. package/dist/services/agent-guide/adapters/cursor-cli.mjs +135 -0
  117. package/dist/services/agent-guide/adapters/cursor-cli.mjs.map +1 -0
  118. package/dist/services/agent-guide/adapters/generic-mcp.d.mts +53 -0
  119. package/dist/services/agent-guide/adapters/generic-mcp.d.mts.map +1 -0
  120. package/dist/services/agent-guide/adapters/generic-mcp.mjs +159 -0
  121. package/dist/services/agent-guide/adapters/generic-mcp.mjs.map +1 -0
  122. package/dist/services/agent-guide/adapters/index.d.mts +23 -0
  123. package/dist/services/agent-guide/adapters/index.d.mts.map +1 -0
  124. package/dist/services/agent-guide/adapters/index.mjs +31 -0
  125. package/dist/services/agent-guide/adapters/index.mjs.map +1 -0
  126. package/dist/services/agent-guide/agent-guide-service.d.mts +56 -0
  127. package/dist/services/agent-guide/agent-guide-service.d.mts.map +1 -0
  128. package/dist/services/agent-guide/agent-guide-service.mjs +147 -0
  129. package/dist/services/agent-guide/agent-guide-service.mjs.map +1 -0
  130. package/dist/services/agent-guide/index.d.mts +6 -0
  131. package/dist/services/agent-guide/index.mjs +7 -0
  132. package/dist/services/agent-guide/types.d.mts +58 -0
  133. package/dist/services/agent-guide/types.d.mts.map +1 -0
  134. package/dist/services/build.d.mts +61 -0
  135. package/dist/services/build.d.mts.map +1 -0
  136. package/dist/services/build.mjs +151 -0
  137. package/dist/services/build.mjs.map +1 -0
  138. package/dist/services/ci-check/checks/coverage.mjs +77 -0
  139. package/dist/services/ci-check/checks/coverage.mjs.map +1 -0
  140. package/dist/services/ci-check/checks/deps.mjs +32 -0
  141. package/dist/services/ci-check/checks/deps.mjs.map +1 -0
  142. package/dist/services/ci-check/checks/doctor.mjs +38 -0
  143. package/dist/services/ci-check/checks/doctor.mjs.map +1 -0
  144. package/dist/services/ci-check/checks/drift.mjs +40 -0
  145. package/dist/services/ci-check/checks/drift.mjs.map +1 -0
  146. package/dist/services/ci-check/checks/handlers.mjs +38 -0
  147. package/dist/services/ci-check/checks/handlers.mjs.map +1 -0
  148. package/dist/services/ci-check/checks/implementation.mjs +73 -0
  149. package/dist/services/ci-check/checks/implementation.mjs.map +1 -0
  150. package/dist/services/ci-check/checks/index.mjs +13 -0
  151. package/dist/services/ci-check/checks/integrity.mjs +31 -0
  152. package/dist/services/ci-check/checks/integrity.mjs.map +1 -0
  153. package/dist/services/ci-check/checks/layers.mjs +66 -0
  154. package/dist/services/ci-check/checks/layers.mjs.map +1 -0
  155. package/dist/services/ci-check/checks/structure.mjs +35 -0
  156. package/dist/services/ci-check/checks/structure.mjs.map +1 -0
  157. package/dist/services/ci-check/checks/test-refs.mjs +63 -0
  158. package/dist/services/ci-check/checks/test-refs.mjs.map +1 -0
  159. package/dist/services/ci-check/checks/tests.mjs +38 -0
  160. package/dist/services/ci-check/checks/tests.mjs.map +1 -0
  161. package/dist/services/ci-check/ci-check-service.d.mts +16 -0
  162. package/dist/services/ci-check/ci-check-service.d.mts.map +1 -0
  163. package/dist/services/ci-check/ci-check-service.mjs +129 -0
  164. package/dist/services/ci-check/ci-check-service.mjs.map +1 -0
  165. package/dist/services/ci-check/index.d.mts +2 -0
  166. package/dist/services/ci-check/index.mjs +4 -0
  167. package/dist/services/ci-check/types.d.mts +147 -0
  168. package/dist/services/ci-check/types.d.mts.map +1 -0
  169. package/dist/services/ci-check/types.mjs +37 -0
  170. package/dist/services/ci-check/types.mjs.map +1 -0
  171. package/dist/services/ci-check/utils.mjs +76 -0
  172. package/dist/services/ci-check/utils.mjs.map +1 -0
  173. package/dist/services/clean.d.mts +41 -0
  174. package/dist/services/clean.d.mts.map +1 -0
  175. package/dist/services/clean.mjs +72 -0
  176. package/dist/services/clean.mjs.map +1 -0
  177. package/dist/services/config.d.mts +16 -0
  178. package/dist/services/config.d.mts.map +1 -0
  179. package/dist/services/config.mjs +63 -0
  180. package/dist/services/config.mjs.map +1 -0
  181. package/dist/services/coverage/parsers/index.mjs +34 -0
  182. package/dist/services/coverage/parsers/index.mjs.map +1 -0
  183. package/dist/services/coverage/parsers/istanbul-parser.mjs +108 -0
  184. package/dist/services/coverage/parsers/istanbul-parser.mjs.map +1 -0
  185. package/dist/services/coverage/validator.mjs +55 -0
  186. package/dist/services/coverage/validator.mjs.map +1 -0
  187. package/dist/services/create/ai-generator.d.mts +84 -0
  188. package/dist/services/create/ai-generator.d.mts.map +1 -0
  189. package/dist/services/create/ai-generator.mjs +178 -0
  190. package/dist/services/create/ai-generator.mjs.map +1 -0
  191. package/dist/services/create/index.d.mts +28 -0
  192. package/dist/services/create/index.d.mts.map +1 -0
  193. package/dist/services/create/index.mjs +37 -0
  194. package/dist/services/create/index.mjs.map +1 -0
  195. package/dist/services/create/templates.d.mts +22 -0
  196. package/dist/services/create/templates.d.mts.map +1 -0
  197. package/dist/services/create/templates.mjs +39 -0
  198. package/dist/services/create/templates.mjs.map +1 -0
  199. package/dist/services/deps.d.mts +53 -0
  200. package/dist/services/deps.d.mts.map +1 -0
  201. package/dist/services/deps.mjs +62 -0
  202. package/dist/services/deps.mjs.map +1 -0
  203. package/dist/services/diff.d.mts +34 -0
  204. package/dist/services/diff.d.mts.map +1 -0
  205. package/dist/services/diff.mjs +34 -0
  206. package/dist/services/diff.mjs.map +1 -0
  207. package/dist/services/docs/docs-service.d.mts +20 -0
  208. package/dist/services/docs/docs-service.d.mts.map +1 -0
  209. package/dist/services/docs/docs-service.mjs +59 -0
  210. package/dist/services/docs/docs-service.mjs.map +1 -0
  211. package/dist/services/docs/index.d.mts +1 -0
  212. package/dist/services/docs/index.mjs +3 -0
  213. package/dist/services/doctor/checks/ai.mjs +119 -0
  214. package/dist/services/doctor/checks/ai.mjs.map +1 -0
  215. package/dist/services/doctor/checks/cli.mjs +156 -0
  216. package/dist/services/doctor/checks/cli.mjs.map +1 -0
  217. package/dist/services/doctor/checks/config.mjs +303 -0
  218. package/dist/services/doctor/checks/config.mjs.map +1 -0
  219. package/dist/services/doctor/checks/deps.mjs +267 -0
  220. package/dist/services/doctor/checks/deps.mjs.map +1 -0
  221. package/dist/services/doctor/checks/index.mjs +9 -0
  222. package/dist/services/doctor/checks/layers.mjs +139 -0
  223. package/dist/services/doctor/checks/layers.mjs.map +1 -0
  224. package/dist/services/doctor/checks/mcp.mjs +145 -0
  225. package/dist/services/doctor/checks/mcp.mjs.map +1 -0
  226. package/dist/services/doctor/checks/workspace.mjs +263 -0
  227. package/dist/services/doctor/checks/workspace.mjs.map +1 -0
  228. package/dist/services/doctor/doctor-service.d.mts +24 -0
  229. package/dist/services/doctor/doctor-service.d.mts.map +1 -0
  230. package/dist/services/doctor/doctor-service.mjs +118 -0
  231. package/dist/services/doctor/doctor-service.mjs.map +1 -0
  232. package/dist/services/doctor/index.d.mts +2 -0
  233. package/dist/services/doctor/index.mjs +4 -0
  234. package/dist/services/doctor/types.d.mts +118 -0
  235. package/dist/services/doctor/types.d.mts.map +1 -0
  236. package/dist/services/doctor/types.mjs +29 -0
  237. package/dist/services/doctor/types.mjs.map +1 -0
  238. package/dist/services/drift.mjs +73 -0
  239. package/dist/services/drift.mjs.map +1 -0
  240. package/dist/services/extract.d.mts +12 -0
  241. package/dist/services/extract.d.mts.map +1 -0
  242. package/dist/services/extract.mjs +33 -0
  243. package/dist/services/extract.mjs.map +1 -0
  244. package/dist/services/features/completion.d.mts +21 -0
  245. package/dist/services/features/completion.d.mts.map +1 -0
  246. package/dist/services/features/completion.mjs +70 -0
  247. package/dist/services/features/completion.mjs.map +1 -0
  248. package/dist/services/features/feature-editor.d.mts +27 -0
  249. package/dist/services/features/feature-editor.d.mts.map +1 -0
  250. package/dist/services/features/feature-editor.mjs +37 -0
  251. package/dist/services/features/feature-editor.mjs.map +1 -0
  252. package/dist/services/features/index.d.mts +11 -0
  253. package/dist/services/features/index.d.mts.map +1 -0
  254. package/dist/services/features/index.mjs +16 -0
  255. package/dist/services/features/index.mjs.map +1 -0
  256. package/dist/services/features/validation.d.mts +21 -0
  257. package/dist/services/features/validation.d.mts.map +1 -0
  258. package/dist/services/features/validation.mjs +27 -0
  259. package/dist/services/features/validation.mjs.map +1 -0
  260. package/dist/services/fix/fix-link-formatter.d.mts +12 -0
  261. package/dist/services/fix/fix-link-formatter.d.mts.map +1 -0
  262. package/dist/services/fix/fix-link-formatter.mjs +38 -0
  263. package/dist/services/fix/fix-link-formatter.mjs.map +1 -0
  264. package/dist/services/fix/fix-service.d.mts +74 -0
  265. package/dist/services/fix/fix-service.d.mts.map +1 -0
  266. package/dist/services/fix/fix-service.mjs +169 -0
  267. package/dist/services/fix/fix-service.mjs.map +1 -0
  268. package/dist/services/fix/index.d.mts +16 -0
  269. package/dist/services/fix/index.d.mts.map +1 -0
  270. package/dist/services/fix/index.mjs +24 -0
  271. package/dist/services/fix/index.mjs.map +1 -0
  272. package/dist/services/fix/path-resolver.mjs +83 -0
  273. package/dist/services/fix/path-resolver.mjs.map +1 -0
  274. package/dist/services/fix/schemas.d.mts +17 -0
  275. package/dist/services/fix/schemas.d.mts.map +1 -0
  276. package/dist/services/fix/schemas.mjs +12 -0
  277. package/dist/services/fix/schemas.mjs.map +1 -0
  278. package/dist/services/fix/strategies/implement-ai.d.mts +18 -0
  279. package/dist/services/fix/strategies/implement-ai.d.mts.map +1 -0
  280. package/dist/services/fix/strategies/implement-ai.mjs +139 -0
  281. package/dist/services/fix/strategies/implement-ai.mjs.map +1 -0
  282. package/dist/services/fix/strategies/implement-skeleton.d.mts +14 -0
  283. package/dist/services/fix/strategies/implement-skeleton.d.mts.map +1 -0
  284. package/dist/services/fix/strategies/implement-skeleton.mjs +77 -0
  285. package/dist/services/fix/strategies/implement-skeleton.mjs.map +1 -0
  286. package/dist/services/fix/strategies/index.d.mts +3 -0
  287. package/dist/services/fix/strategies/remove-reference.d.mts +17 -0
  288. package/dist/services/fix/strategies/remove-reference.d.mts.map +1 -0
  289. package/dist/services/fix/strategies/remove-reference.mjs +98 -0
  290. package/dist/services/fix/strategies/remove-reference.mjs.map +1 -0
  291. package/dist/services/fix/types.d.mts +207 -0
  292. package/dist/services/fix/types.d.mts.map +1 -0
  293. package/dist/services/fix/types.mjs +20 -0
  294. package/dist/services/fix/types.mjs.map +1 -0
  295. package/dist/services/formatter.d.mts +15 -0
  296. package/dist/services/formatter.d.mts.map +1 -0
  297. package/dist/services/formatter.mjs +26 -0
  298. package/dist/services/formatter.mjs.map +1 -0
  299. package/dist/services/gap.d.mts +18 -0
  300. package/dist/services/gap.d.mts.map +1 -0
  301. package/dist/services/gap.mjs +44 -0
  302. package/dist/services/gap.mjs.map +1 -0
  303. package/dist/services/generate-artifacts.d.mts +11 -0
  304. package/dist/services/generate-artifacts.d.mts.map +1 -0
  305. package/dist/services/generate-artifacts.mjs +27 -0
  306. package/dist/services/generate-artifacts.mjs.map +1 -0
  307. package/dist/services/hooks/hooks-service.d.mts +24 -0
  308. package/dist/services/hooks/hooks-service.d.mts.map +1 -0
  309. package/dist/services/hooks/hooks-service.mjs +126 -0
  310. package/dist/services/hooks/hooks-service.mjs.map +1 -0
  311. package/dist/services/hooks/index.d.mts +10 -0
  312. package/dist/services/hooks/index.d.mts.map +1 -0
  313. package/dist/services/hooks/index.mjs +12 -0
  314. package/dist/services/hooks/index.mjs.map +1 -0
  315. package/dist/services/hooks/types.d.mts +56 -0
  316. package/dist/services/hooks/types.d.mts.map +1 -0
  317. package/dist/services/impact/formatters.d.mts +27 -0
  318. package/dist/services/impact/formatters.d.mts.map +1 -0
  319. package/dist/services/impact/formatters.mjs +139 -0
  320. package/dist/services/impact/formatters.mjs.map +1 -0
  321. package/dist/services/impact/impact-detection-service.d.mts +22 -0
  322. package/dist/services/impact/impact-detection-service.d.mts.map +1 -0
  323. package/dist/services/impact/impact-detection-service.mjs +96 -0
  324. package/dist/services/impact/impact-detection-service.mjs.map +1 -0
  325. package/dist/services/impact/index.d.mts +11 -0
  326. package/dist/services/impact/index.d.mts.map +1 -0
  327. package/dist/services/impact/index.mjs +16 -0
  328. package/dist/services/impact/index.mjs.map +1 -0
  329. package/dist/services/impact/types.d.mts +63 -0
  330. package/dist/services/impact/types.d.mts.map +1 -0
  331. package/dist/services/implementation/discovery.d.mts +30 -0
  332. package/dist/services/implementation/discovery.d.mts.map +1 -0
  333. package/dist/services/implementation/discovery.mjs +144 -0
  334. package/dist/services/implementation/discovery.mjs.map +1 -0
  335. package/dist/services/implementation/index.d.mts +6 -0
  336. package/dist/services/implementation/index.mjs +7 -0
  337. package/dist/services/implementation/resolver/conventions.d.mts +18 -0
  338. package/dist/services/implementation/resolver/conventions.d.mts.map +1 -0
  339. package/dist/services/implementation/resolver/conventions.mjs +59 -0
  340. package/dist/services/implementation/resolver/conventions.mjs.map +1 -0
  341. package/dist/services/implementation/resolver/index.d.mts +24 -0
  342. package/dist/services/implementation/resolver/index.d.mts.map +1 -0
  343. package/dist/services/implementation/resolver/index.mjs +111 -0
  344. package/dist/services/implementation/resolver/index.mjs.map +1 -0
  345. package/dist/services/implementation/resolver/parsers.d.mts +16 -0
  346. package/dist/services/implementation/resolver/parsers.d.mts.map +1 -0
  347. package/dist/services/implementation/resolver/parsers.mjs +100 -0
  348. package/dist/services/implementation/resolver/parsers.mjs.map +1 -0
  349. package/dist/services/implementation/resolver/status.d.mts +21 -0
  350. package/dist/services/implementation/resolver/status.d.mts.map +1 -0
  351. package/dist/services/implementation/resolver/status.mjs +31 -0
  352. package/dist/services/implementation/resolver/status.mjs.map +1 -0
  353. package/dist/services/implementation/types.d.mts +89 -0
  354. package/dist/services/implementation/types.d.mts.map +1 -0
  355. package/dist/services/index.d.mts +103 -0
  356. package/dist/services/index.mjs +100 -0
  357. package/dist/services/integrity-diagram.d.mts +36 -0
  358. package/dist/services/integrity-diagram.d.mts.map +1 -0
  359. package/dist/services/integrity-diagram.mjs +275 -0
  360. package/dist/services/integrity-diagram.mjs.map +1 -0
  361. package/dist/services/integrity.d.mts +152 -0
  362. package/dist/services/integrity.d.mts.map +1 -0
  363. package/dist/services/integrity.mjs +361 -0
  364. package/dist/services/integrity.mjs.map +1 -0
  365. package/dist/services/layer-discovery.d.mts +77 -0
  366. package/dist/services/layer-discovery.d.mts.map +1 -0
  367. package/dist/services/layer-discovery.mjs +121 -0
  368. package/dist/services/layer-discovery.mjs.map +1 -0
  369. package/dist/services/list.d.mts +37 -0
  370. package/dist/services/list.d.mts.map +1 -0
  371. package/dist/services/list.mjs +46 -0
  372. package/dist/services/list.mjs.map +1 -0
  373. package/dist/services/llm/index.d.mts +28 -0
  374. package/dist/services/llm/index.d.mts.map +1 -0
  375. package/dist/services/llm/index.mjs +187 -0
  376. package/dist/services/llm/index.mjs.map +1 -0
  377. package/dist/services/llm/verify-static.d.mts +26 -0
  378. package/dist/services/llm/verify-static.d.mts.map +1 -0
  379. package/dist/services/llm/verify-static.mjs +82 -0
  380. package/dist/services/llm/verify-static.mjs.map +1 -0
  381. package/dist/services/modules/module-resolver.mjs +61 -0
  382. package/dist/services/modules/module-resolver.mjs.map +1 -0
  383. package/dist/services/openapi/export-service.d.mts +53 -0
  384. package/dist/services/openapi/export-service.d.mts.map +1 -0
  385. package/dist/services/openapi/export-service.mjs +50 -0
  386. package/dist/services/openapi/export-service.mjs.map +1 -0
  387. package/dist/services/openapi/import-service.d.mts +17 -0
  388. package/dist/services/openapi/import-service.d.mts.map +1 -0
  389. package/dist/services/openapi/import-service.mjs +168 -0
  390. package/dist/services/openapi/import-service.mjs.map +1 -0
  391. package/dist/services/openapi/index.d.mts +5 -0
  392. package/dist/services/openapi/index.mjs +6 -0
  393. package/dist/services/openapi/sync-service.d.mts +17 -0
  394. package/dist/services/openapi/sync-service.d.mts.map +1 -0
  395. package/dist/services/openapi/sync-service.mjs +120 -0
  396. package/dist/services/openapi/sync-service.mjs.map +1 -0
  397. package/dist/services/openapi/types.d.mts +162 -0
  398. package/dist/services/openapi/types.d.mts.map +1 -0
  399. package/dist/services/openapi/validate-service.d.mts +16 -0
  400. package/dist/services/openapi/validate-service.d.mts.map +1 -0
  401. package/dist/services/openapi/validate-service.mjs +130 -0
  402. package/dist/services/openapi/validate-service.mjs.map +1 -0
  403. package/dist/services/quickstart/dependencies.d.mts +31 -0
  404. package/dist/services/quickstart/dependencies.d.mts.map +1 -0
  405. package/dist/services/quickstart/dependencies.mjs +57 -0
  406. package/dist/services/quickstart/dependencies.mjs.map +1 -0
  407. package/dist/services/quickstart/index.mjs +4 -0
  408. package/dist/services/quickstart/quickstart-service.d.mts +20 -0
  409. package/dist/services/quickstart/quickstart-service.d.mts.map +1 -0
  410. package/dist/services/quickstart/quickstart-service.mjs +196 -0
  411. package/dist/services/quickstart/quickstart-service.mjs.map +1 -0
  412. package/dist/services/quickstart/types.d.mts +81 -0
  413. package/dist/services/quickstart/types.d.mts.map +1 -0
  414. package/dist/services/regenerator.d.mts +18 -0
  415. package/dist/services/regenerator.d.mts.map +1 -0
  416. package/dist/services/regenerator.mjs +23 -0
  417. package/dist/services/regenerator.mjs.map +1 -0
  418. package/dist/services/registry.d.mts +53 -0
  419. package/dist/services/registry.d.mts.map +1 -0
  420. package/dist/services/registry.mjs +74 -0
  421. package/dist/services/registry.mjs.map +1 -0
  422. package/dist/services/rulesync.d.mts +17 -0
  423. package/dist/services/rulesync.d.mts.map +1 -0
  424. package/dist/services/rulesync.mjs +71 -0
  425. package/dist/services/rulesync.mjs.map +1 -0
  426. package/dist/services/setup/config-generators.d.mts +42 -0
  427. package/dist/services/setup/config-generators.d.mts.map +1 -0
  428. package/dist/services/setup/config-generators.mjs +252 -0
  429. package/dist/services/setup/config-generators.mjs.map +1 -0
  430. package/dist/services/setup/file-merger.d.mts +27 -0
  431. package/dist/services/setup/file-merger.d.mts.map +1 -0
  432. package/dist/services/setup/file-merger.mjs +61 -0
  433. package/dist/services/setup/file-merger.mjs.map +1 -0
  434. package/dist/services/setup/setup-service.d.mts +12 -0
  435. package/dist/services/setup/setup-service.d.mts.map +1 -0
  436. package/dist/services/setup/setup-service.mjs +96 -0
  437. package/dist/services/setup/setup-service.mjs.map +1 -0
  438. package/dist/services/setup/targets/agents-md.mjs +47 -0
  439. package/dist/services/setup/targets/agents-md.mjs.map +1 -0
  440. package/dist/services/setup/targets/cli-config.mjs +60 -0
  441. package/dist/services/setup/targets/cli-config.mjs.map +1 -0
  442. package/dist/services/setup/targets/cursor-rules.mjs +48 -0
  443. package/dist/services/setup/targets/cursor-rules.mjs.map +1 -0
  444. package/dist/services/setup/targets/mcp-claude.mjs +60 -0
  445. package/dist/services/setup/targets/mcp-claude.mjs.map +1 -0
  446. package/dist/services/setup/targets/mcp-cursor.mjs +59 -0
  447. package/dist/services/setup/targets/mcp-cursor.mjs.map +1 -0
  448. package/dist/services/setup/targets/vscode-settings.mjs +63 -0
  449. package/dist/services/setup/targets/vscode-settings.mjs.map +1 -0
  450. package/dist/services/setup/types.d.mts +85 -0
  451. package/dist/services/setup/types.d.mts.map +1 -0
  452. package/dist/services/setup/types.mjs +27 -0
  453. package/dist/services/setup/types.mjs.map +1 -0
  454. package/dist/services/sync.d.mts +42 -0
  455. package/dist/services/sync.d.mts.map +1 -0
  456. package/dist/services/sync.mjs +64 -0
  457. package/dist/services/sync.mjs.map +1 -0
  458. package/dist/services/test/index.d.mts +2 -0
  459. package/dist/services/test/index.mjs +4 -0
  460. package/dist/services/test/test-generator-service.d.mts +24 -0
  461. package/dist/services/test/test-generator-service.d.mts.map +1 -0
  462. package/dist/services/test/test-generator-service.mjs +92 -0
  463. package/dist/services/test/test-generator-service.mjs.map +1 -0
  464. package/dist/services/test/test-service.d.mts +27 -0
  465. package/dist/services/test/test-service.d.mts.map +1 -0
  466. package/dist/services/test/test-service.mjs +94 -0
  467. package/dist/services/test/test-service.mjs.map +1 -0
  468. package/dist/services/test-link/index.d.mts +18 -0
  469. package/dist/services/test-link/index.d.mts.map +1 -0
  470. package/dist/services/test-link/index.mjs +60 -0
  471. package/dist/services/test-link/index.mjs.map +1 -0
  472. package/dist/services/test-link/test-ref-validator.d.mts +2 -0
  473. package/dist/services/test-link/test-ref-validator.mjs +50 -0
  474. package/dist/services/test-link/test-ref-validator.mjs.map +1 -0
  475. package/dist/services/upgrade/index.d.mts +10 -0
  476. package/dist/services/upgrade/index.d.mts.map +1 -0
  477. package/dist/services/upgrade/index.mjs +15 -0
  478. package/dist/services/upgrade/index.mjs.map +1 -0
  479. package/dist/services/upgrade/types.d.mts +78 -0
  480. package/dist/services/upgrade/types.d.mts.map +1 -0
  481. package/dist/services/upgrade/upgrade-service.d.mts +38 -0
  482. package/dist/services/upgrade/upgrade-service.d.mts.map +1 -0
  483. package/dist/services/upgrade/upgrade-service.mjs +201 -0
  484. package/dist/services/upgrade/upgrade-service.mjs.map +1 -0
  485. package/dist/services/validate/blueprint-validator.d.mts +23 -0
  486. package/dist/services/validate/blueprint-validator.d.mts.map +1 -0
  487. package/dist/services/validate/blueprint-validator.mjs +50 -0
  488. package/dist/services/validate/blueprint-validator.mjs.map +1 -0
  489. package/dist/services/validate/implementation-agent-validator.d.mts +20 -0
  490. package/dist/services/validate/implementation-agent-validator.d.mts.map +1 -0
  491. package/dist/services/validate/implementation-agent-validator.mjs +42 -0
  492. package/dist/services/validate/implementation-agent-validator.mjs.map +1 -0
  493. package/dist/services/validate/implementation-validator.d.mts +32 -0
  494. package/dist/services/validate/implementation-validator.d.mts.map +1 -0
  495. package/dist/services/validate/implementation-validator.mjs +64 -0
  496. package/dist/services/validate/implementation-validator.mjs.map +1 -0
  497. package/dist/services/validate/index.d.mts +5 -0
  498. package/dist/services/validate/index.mjs +7 -0
  499. package/dist/services/validate/spec-validator.d.mts +42 -0
  500. package/dist/services/validate/spec-validator.d.mts.map +1 -0
  501. package/dist/services/validate/spec-validator.mjs +49 -0
  502. package/dist/services/validate/spec-validator.mjs.map +1 -0
  503. package/dist/services/validate/tenant-validator.d.mts +21 -0
  504. package/dist/services/validate/tenant-validator.d.mts.map +1 -0
  505. package/dist/services/validate/tenant-validator.mjs +165 -0
  506. package/dist/services/validate/tenant-validator.mjs.map +1 -0
  507. package/dist/services/verification-cache/adapters/filesystem.d.mts +46 -0
  508. package/dist/services/verification-cache/adapters/filesystem.d.mts.map +1 -0
  509. package/dist/services/verification-cache/adapters/filesystem.mjs +120 -0
  510. package/dist/services/verification-cache/adapters/filesystem.mjs.map +1 -0
  511. package/dist/services/verification-cache/adapters/in-memory.d.mts +27 -0
  512. package/dist/services/verification-cache/adapters/in-memory.d.mts.map +1 -0
  513. package/dist/services/verification-cache/adapters/in-memory.mjs +46 -0
  514. package/dist/services/verification-cache/adapters/in-memory.mjs.map +1 -0
  515. package/dist/services/verification-cache/adapters/index.d.mts +3 -0
  516. package/dist/services/verification-cache/adapters/index.mjs +5 -0
  517. package/dist/services/verification-cache/adapters/workspace-state.d.mts +49 -0
  518. package/dist/services/verification-cache/adapters/workspace-state.d.mts.map +1 -0
  519. package/dist/services/verification-cache/adapters/workspace-state.mjs +91 -0
  520. package/dist/services/verification-cache/adapters/workspace-state.mjs.map +1 -0
  521. package/dist/services/verification-cache/cache-service.d.mts +70 -0
  522. package/dist/services/verification-cache/cache-service.d.mts.map +1 -0
  523. package/dist/services/verification-cache/cache-service.mjs +256 -0
  524. package/dist/services/verification-cache/cache-service.mjs.map +1 -0
  525. package/dist/services/verification-cache/index.d.mts +6 -0
  526. package/dist/services/verification-cache/index.mjs +8 -0
  527. package/dist/services/verification-cache/types.d.mts +124 -0
  528. package/dist/services/verification-cache/types.d.mts.map +1 -0
  529. package/dist/services/verification-cache/types.mjs +16 -0
  530. package/dist/services/verification-cache/types.mjs.map +1 -0
  531. package/dist/services/verify/ai-verifier.d.mts +25 -0
  532. package/dist/services/verify/ai-verifier.d.mts.map +1 -0
  533. package/dist/services/verify/ai-verifier.mjs +403 -0
  534. package/dist/services/verify/ai-verifier.mjs.map +1 -0
  535. package/dist/services/verify/behavior-verifier.d.mts +12 -0
  536. package/dist/services/verify/behavior-verifier.d.mts.map +1 -0
  537. package/dist/services/verify/behavior-verifier.mjs +186 -0
  538. package/dist/services/verify/behavior-verifier.mjs.map +1 -0
  539. package/dist/services/verify/index.d.mts +5 -0
  540. package/dist/services/verify/index.mjs +6 -0
  541. package/dist/services/verify/structure-verifier.d.mts +12 -0
  542. package/dist/services/verify/structure-verifier.d.mts.map +1 -0
  543. package/dist/services/verify/structure-verifier.mjs +196 -0
  544. package/dist/services/verify/structure-verifier.mjs.map +1 -0
  545. package/dist/services/verify/types.d.mts +137 -0
  546. package/dist/services/verify/types.d.mts.map +1 -0
  547. package/dist/services/verify/verify-service.d.mts +60 -0
  548. package/dist/services/verify/verify-service.d.mts.map +1 -0
  549. package/dist/services/verify/verify-service.mjs +204 -0
  550. package/dist/services/verify/verify-service.mjs.map +1 -0
  551. package/dist/services/versioning/changelog-formatter.d.mts +24 -0
  552. package/dist/services/versioning/changelog-formatter.d.mts.map +1 -0
  553. package/dist/services/versioning/changelog-formatter.mjs +155 -0
  554. package/dist/services/versioning/changelog-formatter.mjs.map +1 -0
  555. package/dist/services/versioning/conventional-commits.d.mts +95 -0
  556. package/dist/services/versioning/conventional-commits.d.mts.map +1 -0
  557. package/dist/services/versioning/conventional-commits.mjs +184 -0
  558. package/dist/services/versioning/conventional-commits.mjs.map +1 -0
  559. package/dist/services/versioning/index.d.mts +12 -0
  560. package/dist/services/versioning/index.d.mts.map +1 -0
  561. package/dist/services/versioning/index.mjs +28 -0
  562. package/dist/services/versioning/index.mjs.map +1 -0
  563. package/dist/services/versioning/types.d.mts +135 -0
  564. package/dist/services/versioning/types.d.mts.map +1 -0
  565. package/dist/services/versioning/versioning-service.d.mts +74 -0
  566. package/dist/services/versioning/versioning-service.d.mts.map +1 -0
  567. package/dist/services/versioning/versioning-service.mjs +501 -0
  568. package/dist/services/versioning/versioning-service.mjs.map +1 -0
  569. package/dist/services/vibe/config.d.mts +12 -0
  570. package/dist/services/vibe/config.d.mts.map +1 -0
  571. package/dist/services/vibe/config.mjs +43 -0
  572. package/dist/services/vibe/config.mjs.map +1 -0
  573. package/dist/services/vibe/context.d.mts +19 -0
  574. package/dist/services/vibe/context.d.mts.map +1 -0
  575. package/dist/services/vibe/context.mjs +92 -0
  576. package/dist/services/vibe/context.mjs.map +1 -0
  577. package/dist/services/vibe/definitions.d.mts +8 -0
  578. package/dist/services/vibe/definitions.d.mts.map +1 -0
  579. package/dist/services/vibe/definitions.mjs +129 -0
  580. package/dist/services/vibe/definitions.mjs.map +1 -0
  581. package/dist/services/vibe/engine.d.mts +44 -0
  582. package/dist/services/vibe/engine.d.mts.map +1 -0
  583. package/dist/services/vibe/engine.mjs +147 -0
  584. package/dist/services/vibe/engine.mjs.map +1 -0
  585. package/dist/services/vibe/index.d.mts +15 -0
  586. package/dist/services/vibe/index.d.mts.map +1 -0
  587. package/dist/services/vibe/index.mjs +26 -0
  588. package/dist/services/vibe/index.mjs.map +1 -0
  589. package/dist/services/vibe/loader.d.mts +15 -0
  590. package/dist/services/vibe/loader.d.mts.map +1 -0
  591. package/dist/services/vibe/loader.mjs +48 -0
  592. package/dist/services/vibe/loader.mjs.map +1 -0
  593. package/dist/services/vibe/pack.d.mts +19 -0
  594. package/dist/services/vibe/pack.d.mts.map +1 -0
  595. package/dist/services/vibe/pack.mjs +66 -0
  596. package/dist/services/vibe/pack.mjs.map +1 -0
  597. package/dist/services/vibe/types.d.mts +59 -0
  598. package/dist/services/vibe/types.d.mts.map +1 -0
  599. package/dist/services/vibe/types.mjs +12 -0
  600. package/dist/services/vibe/types.mjs.map +1 -0
  601. package/dist/services/view/index.d.mts +11 -0
  602. package/dist/services/view/index.d.mts.map +1 -0
  603. package/dist/services/view/index.mjs +119 -0
  604. package/dist/services/view/index.mjs.map +1 -0
  605. package/dist/services/watch.d.mts +25 -0
  606. package/dist/services/watch.d.mts.map +1 -0
  607. package/dist/services/watch.mjs +33 -0
  608. package/dist/services/watch.mjs.map +1 -0
  609. package/dist/services/workspace-info.d.mts +62 -0
  610. package/dist/services/workspace-info.d.mts.map +1 -0
  611. package/dist/services/workspace-info.mjs +103 -0
  612. package/dist/services/workspace-info.mjs.map +1 -0
  613. package/dist/templates/app-config.template.d.mts +7 -0
  614. package/dist/templates/app-config.template.d.mts.map +1 -0
  615. package/dist/templates/app-config.template.mjs +107 -0
  616. package/dist/templates/app-config.template.mjs.map +1 -0
  617. package/dist/templates/data-view.template.d.mts +7 -0
  618. package/dist/templates/data-view.template.d.mts.map +1 -0
  619. package/dist/templates/data-view.template.mjs +70 -0
  620. package/dist/templates/data-view.template.mjs.map +1 -0
  621. package/dist/templates/event.template.d.mts +11 -0
  622. package/dist/templates/event.template.d.mts.map +1 -0
  623. package/dist/templates/event.template.mjs +42 -0
  624. package/dist/templates/event.template.mjs.map +1 -0
  625. package/dist/templates/experiment.template.d.mts +7 -0
  626. package/dist/templates/experiment.template.d.mts.map +1 -0
  627. package/dist/templates/experiment.template.mjs +89 -0
  628. package/dist/templates/experiment.template.mjs.map +1 -0
  629. package/dist/templates/feature.template.d.mts +33 -0
  630. package/dist/templates/feature.template.d.mts.map +1 -0
  631. package/dist/templates/feature.template.mjs +52 -0
  632. package/dist/templates/feature.template.mjs.map +1 -0
  633. package/dist/templates/fix/skeleton-capability.mjs +49 -0
  634. package/dist/templates/fix/skeleton-capability.mjs.map +1 -0
  635. package/dist/templates/fix/skeleton-event.mjs +56 -0
  636. package/dist/templates/fix/skeleton-event.mjs.map +1 -0
  637. package/dist/templates/fix/skeleton-operation.mjs +122 -0
  638. package/dist/templates/fix/skeleton-operation.mjs.map +1 -0
  639. package/dist/templates/fix/skeleton-presentation.mjs +65 -0
  640. package/dist/templates/fix/skeleton-presentation.mjs.map +1 -0
  641. package/dist/templates/fix/utils.mjs +34 -0
  642. package/dist/templates/fix/utils.mjs.map +1 -0
  643. package/dist/templates/handler.template.d.mts +16 -0
  644. package/dist/templates/handler.template.d.mts.map +1 -0
  645. package/dist/templates/handler.template.mjs +100 -0
  646. package/dist/templates/handler.template.mjs.map +1 -0
  647. package/dist/templates/index.d.mts +22 -0
  648. package/dist/templates/index.d.mts.map +1 -0
  649. package/dist/templates/index.mjs +39 -0
  650. package/dist/templates/index.mjs.map +1 -0
  651. package/dist/templates/integration.template.d.mts +7 -0
  652. package/dist/templates/integration.template.d.mts.map +1 -0
  653. package/dist/templates/integration.template.mjs +160 -0
  654. package/dist/templates/integration.template.mjs.map +1 -0
  655. package/dist/templates/knowledge.template.d.mts +7 -0
  656. package/dist/templates/knowledge.template.d.mts.map +1 -0
  657. package/dist/templates/knowledge.template.mjs +75 -0
  658. package/dist/templates/knowledge.template.mjs.map +1 -0
  659. package/dist/templates/migration.template.d.mts +7 -0
  660. package/dist/templates/migration.template.d.mts.map +1 -0
  661. package/dist/templates/migration.template.mjs +62 -0
  662. package/dist/templates/migration.template.mjs.map +1 -0
  663. package/dist/templates/operation.template.d.mts +11 -0
  664. package/dist/templates/operation.template.d.mts.map +1 -0
  665. package/dist/templates/operation.template.mjs +107 -0
  666. package/dist/templates/operation.template.mjs.map +1 -0
  667. package/dist/templates/presentation.template.d.mts +11 -0
  668. package/dist/templates/presentation.template.d.mts.map +1 -0
  669. package/dist/templates/presentation.template.mjs +80 -0
  670. package/dist/templates/presentation.template.mjs.map +1 -0
  671. package/dist/templates/telemetry.template.d.mts +7 -0
  672. package/dist/templates/telemetry.template.d.mts.map +1 -0
  673. package/dist/templates/telemetry.template.mjs +91 -0
  674. package/dist/templates/telemetry.template.mjs.map +1 -0
  675. package/dist/templates/workflow-runner.template.d.mts +16 -0
  676. package/dist/templates/workflow-runner.template.d.mts.map +1 -0
  677. package/dist/templates/workflow-runner.template.mjs +50 -0
  678. package/dist/templates/workflow-runner.template.mjs.map +1 -0
  679. package/dist/templates/workflow.template.d.mts +7 -0
  680. package/dist/templates/workflow.template.d.mts.map +1 -0
  681. package/dist/templates/workflow.template.mjs +69 -0
  682. package/dist/templates/workflow.template.mjs.map +1 -0
  683. package/dist/types/config.d.mts +34 -0
  684. package/dist/types/config.d.mts.map +1 -0
  685. package/dist/types.d.mts +324 -0
  686. package/dist/types.d.mts.map +1 -0
  687. package/dist/utils/filter.d.mts +16 -0
  688. package/dist/utils/filter.d.mts.map +1 -0
  689. package/dist/utils/filter.mjs +22 -0
  690. package/dist/utils/filter.mjs.map +1 -0
  691. package/dist/utils/index.d.mts +11 -0
  692. package/dist/utils/index.d.mts.map +1 -0
  693. package/dist/utils/index.mjs +20 -0
  694. package/dist/utils/index.mjs.map +1 -0
  695. package/dist/utils/module-loader.d.mts +5 -0
  696. package/dist/utils/module-loader.d.mts.map +1 -0
  697. package/dist/utils/module-loader.mjs +41 -0
  698. package/dist/utils/module-loader.mjs.map +1 -0
  699. package/dist/utils/validation.d.mts +37 -0
  700. package/dist/utils/validation.d.mts.map +1 -0
  701. package/dist/utils/validation.mjs +43 -0
  702. package/dist/utils/validation.mjs.map +1 -0
  703. package/package.json +76 -0
@@ -0,0 +1,60 @@
1
+ import { VerifyConfig, VerifyOptions, VerifyResult } from "./types.mjs";
2
+ import { AnyOperationSpec } from "@contractspec/lib.contracts";
3
+ import { VerificationReport } from "@contractspec/lib.contracts/llm";
4
+
5
+ //#region src/services/verify/verify-service.d.ts
6
+
7
+ /**
8
+ * Verification Service
9
+ *
10
+ * Main service for verifying implementations against specs.
11
+ */
12
+ declare class VerifyService {
13
+ private config;
14
+ constructor(config?: Partial<VerifyConfig>);
15
+ /**
16
+ * Run verification on an implementation.
17
+ */
18
+ verify(spec: AnyOperationSpec, implementationCode: string, options?: VerifyOptions): Promise<VerifyResult>;
19
+ /**
20
+ * Run only structure verification (Tier 1).
21
+ */
22
+ verifyStructure(spec: AnyOperationSpec, implementationCode: string, implementationPath?: string): VerificationReport;
23
+ /**
24
+ * Run only behavior verification (Tier 2).
25
+ */
26
+ verifyBehavior(spec: AnyOperationSpec, implementationCode: string, implementationPath?: string): VerificationReport;
27
+ /**
28
+ * Run only AI verification (Tier 3).
29
+ */
30
+ verifyAI(spec: AnyOperationSpec, implementationCode: string, implementationPath?: string): Promise<VerificationReport>;
31
+ /**
32
+ * Quick verification (structure only, fast).
33
+ */
34
+ quickVerify(spec: AnyOperationSpec, implementationCode: string): VerificationReport;
35
+ /**
36
+ * Format verification result as markdown.
37
+ */
38
+ formatAsMarkdown(result: VerifyResult): string;
39
+ /**
40
+ * Update configuration.
41
+ */
42
+ configure(config: Partial<VerifyConfig>): void;
43
+ /**
44
+ * Generate a human-readable summary of verification results.
45
+ */
46
+ private generateSummary;
47
+ /**
48
+ * Format tier name for display.
49
+ */
50
+ private formatTierName;
51
+ }
52
+ /**
53
+ * Create a new VerifyService instance.
54
+ */
55
+ declare function createVerifyService(config?: Partial<VerifyConfig>): VerifyService;
56
+ /** Default singleton instance */
57
+ declare const verifyService: VerifyService;
58
+ //#endregion
59
+ export { VerifyService, createVerifyService, verifyService };
60
+ //# sourceMappingURL=verify-service.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify-service.d.mts","names":[],"sources":["../../../src/services/verify/verify-service.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;AAwIU,cAtGG,aAAA,CAsGH;EAGL,QAAA,MAAA;EAYK,WAAA,CAAA,MAAA,CAAA,EAlHY,OAkHZ,CAlHoB,YAkHpB,CAAA;EAGG;;;EAmBR,MAAA,CAAA,IAAA,EAhIK,gBAgIL,EAAA,kBAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EA9HQ,aA8HR,CAAA,EA7HA,OA6HA,CA7HQ,YA6HR,CAAA;EAOsB;;;EAyEA,eAAA,CAAA,IAAA,EApIjB,gBAoIiB,EAAA,kBAAA,EAAA,MAAA,EAAA,kBAAA,CAAA,EAAA,MAAA,CAAA,EAjItB,kBAiIsB;EAuEX;;;EAEb,cAAA,CAAA,IAAA,EA9LO,gBA8LP,EAAA,kBAAA,EAAA,MAAA,EAAA,kBAAA,CAAA,EAAA,MAAA,CAAA,EA3LE,kBA2LF;EAAa;AAKhB;;iBApLU,4EAGL,QAAQ;;;;oBAiBH,+CAEL;;;;2BAOsB;;;;oBAyEP,QAAQ;;;;;;;;;;;;;iBAuEZ,mBAAA,UACL,QAAQ,gBAChB;;cAKU,eAAa"}
@@ -0,0 +1,204 @@
1
+ import { verifyStructure } from "./structure-verifier.mjs";
2
+ import { verifyBehavior } from "./behavior-verifier.mjs";
3
+ import { createQuickAIReview, verifyWithAI } from "./ai-verifier.mjs";
4
+
5
+ //#region src/services/verify/verify-service.ts
6
+ const DEFAULT_CONFIG = { verbose: false };
7
+ const TIER_ORDER = [
8
+ "structure",
9
+ "behavior",
10
+ "ai_review"
11
+ ];
12
+ /**
13
+ * Verification Service
14
+ *
15
+ * Main service for verifying implementations against specs.
16
+ */
17
+ var VerifyService = class {
18
+ config;
19
+ constructor(config = {}) {
20
+ this.config = {
21
+ ...DEFAULT_CONFIG,
22
+ ...config
23
+ };
24
+ }
25
+ /**
26
+ * Run verification on an implementation.
27
+ */
28
+ async verify(spec, implementationCode, options = {}) {
29
+ const startTime = Date.now();
30
+ const reports = /* @__PURE__ */ new Map();
31
+ const allIssues = [];
32
+ const input = {
33
+ spec,
34
+ implementationCode
35
+ };
36
+ const tiersToRun = options.tiers ?? ["structure", "behavior"];
37
+ for (const tier of TIER_ORDER) {
38
+ if (!tiersToRun.includes(tier)) continue;
39
+ let report;
40
+ switch (tier) {
41
+ case "structure":
42
+ report = verifyStructure(input);
43
+ break;
44
+ case "behavior":
45
+ report = verifyBehavior(input);
46
+ break;
47
+ case "ai_review":
48
+ if (this.config.aiApiKey) report = await verifyWithAI(input, this.config);
49
+ else report = createQuickAIReview(input);
50
+ break;
51
+ default: continue;
52
+ }
53
+ reports.set(tier, report);
54
+ allIssues.push(...report.issues);
55
+ if (options.failFast && !report.passed) break;
56
+ }
57
+ const reportsArray = Array.from(reports.values());
58
+ return {
59
+ passed: reportsArray.every((r) => r.passed),
60
+ score: reportsArray.length > 0 ? Math.round(reportsArray.reduce((sum, r) => sum + r.score, 0) / reportsArray.length) : 100,
61
+ reports,
62
+ allIssues,
63
+ summary: this.generateSummary(reportsArray, allIssues),
64
+ duration: Date.now() - startTime
65
+ };
66
+ }
67
+ /**
68
+ * Run only structure verification (Tier 1).
69
+ */
70
+ verifyStructure(spec, implementationCode, implementationPath) {
71
+ return verifyStructure({
72
+ spec,
73
+ implementationCode,
74
+ implementationPath
75
+ });
76
+ }
77
+ /**
78
+ * Run only behavior verification (Tier 2).
79
+ */
80
+ verifyBehavior(spec, implementationCode, implementationPath) {
81
+ return verifyBehavior({
82
+ spec,
83
+ implementationCode,
84
+ implementationPath
85
+ });
86
+ }
87
+ /**
88
+ * Run only AI verification (Tier 3).
89
+ */
90
+ async verifyAI(spec, implementationCode, implementationPath) {
91
+ const input = {
92
+ spec,
93
+ implementationCode,
94
+ implementationPath
95
+ };
96
+ if (this.config.aiApiKey) return verifyWithAI(input, this.config);
97
+ return createQuickAIReview(input);
98
+ }
99
+ /**
100
+ * Quick verification (structure only, fast).
101
+ */
102
+ quickVerify(spec, implementationCode) {
103
+ return verifyStructure({
104
+ spec,
105
+ implementationCode
106
+ });
107
+ }
108
+ /**
109
+ * Format verification result as markdown.
110
+ */
111
+ formatAsMarkdown(result) {
112
+ const lines = [];
113
+ lines.push(`# Verification Report`);
114
+ lines.push("");
115
+ lines.push(`**Status:** ${result.passed ? "✓ Passed" : "✗ Failed"}`);
116
+ lines.push(`**Score:** ${result.score}/100`);
117
+ lines.push(`**Duration:** ${result.duration}ms`);
118
+ lines.push("");
119
+ for (const [tier, report] of result.reports) {
120
+ lines.push(`## ${this.formatTierName(tier)}`);
121
+ lines.push("");
122
+ lines.push(`**Status:** ${report.passed ? "✓ Passed" : "✗ Failed"}`);
123
+ lines.push(`**Score:** ${report.score}/100`);
124
+ lines.push("");
125
+ if (report.issues.length > 0) {
126
+ lines.push("### Issues");
127
+ lines.push("");
128
+ for (const issue of report.issues) {
129
+ const icon = issue.severity === "error" ? "❌" : issue.severity === "warning" ? "⚠️" : "ℹ️";
130
+ lines.push(`${icon} **${issue.category}**: ${issue.message}`);
131
+ if (issue.suggestion) lines.push(` - Suggestion: ${issue.suggestion}`);
132
+ }
133
+ lines.push("");
134
+ }
135
+ if (report.coverage.scenarios.total > 0) lines.push(`**Scenarios:** ${report.coverage.scenarios.covered}/${report.coverage.scenarios.total}`);
136
+ if (report.coverage.errors.total > 0) lines.push(`**Errors handled:** ${report.coverage.errors.handled}/${report.coverage.errors.total}`);
137
+ lines.push("");
138
+ }
139
+ const allSuggestions = Array.from(result.reports.values()).flatMap((r) => r.suggestions);
140
+ if (allSuggestions.length > 0) {
141
+ lines.push("## Suggestions");
142
+ lines.push("");
143
+ for (const suggestion of allSuggestions.slice(0, 10)) lines.push(`- ${suggestion}`);
144
+ if (allSuggestions.length > 10) lines.push(`- ... and ${allSuggestions.length - 10} more`);
145
+ lines.push("");
146
+ }
147
+ return lines.join("\n");
148
+ }
149
+ /**
150
+ * Update configuration.
151
+ */
152
+ configure(config) {
153
+ this.config = {
154
+ ...this.config,
155
+ ...config
156
+ };
157
+ }
158
+ /**
159
+ * Generate a human-readable summary of verification results.
160
+ */
161
+ generateSummary(reports, allIssues) {
162
+ const parts = [];
163
+ const passed = reports.every((r) => r.passed);
164
+ const avgScore = reports.length > 0 ? Math.round(reports.reduce((sum, r) => sum + r.score, 0) / reports.length) : 100;
165
+ parts.push(passed ? "✓ Verification passed" : "✗ Verification failed");
166
+ parts.push(`Score: ${avgScore}/100`);
167
+ parts.push("");
168
+ for (const report of reports) {
169
+ const icon = report.passed ? "✓" : "✗";
170
+ parts.push(`${icon} ${report.tier}: ${report.score}/100`);
171
+ }
172
+ parts.push("");
173
+ const errors = allIssues.filter((i) => i.severity === "error");
174
+ const warnings = allIssues.filter((i) => i.severity === "warning");
175
+ const infos = allIssues.filter((i) => i.severity === "info");
176
+ if (errors.length > 0) parts.push(`Errors: ${errors.length}`);
177
+ if (warnings.length > 0) parts.push(`Warnings: ${warnings.length}`);
178
+ if (infos.length > 0) parts.push(`Info: ${infos.length}`);
179
+ return parts.join("\n");
180
+ }
181
+ /**
182
+ * Format tier name for display.
183
+ */
184
+ formatTierName(tier) {
185
+ switch (tier) {
186
+ case "structure": return "Tier 1: Structure";
187
+ case "behavior": return "Tier 2: Behavior";
188
+ case "ai_review": return "Tier 3: AI Review";
189
+ default: return tier;
190
+ }
191
+ }
192
+ };
193
+ /**
194
+ * Create a new VerifyService instance.
195
+ */
196
+ function createVerifyService(config) {
197
+ return new VerifyService(config);
198
+ }
199
+ /** Default singleton instance */
200
+ const verifyService = new VerifyService();
201
+
202
+ //#endregion
203
+ export { VerifyService, createVerifyService, verifyService };
204
+ //# sourceMappingURL=verify-service.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify-service.mjs","names":[],"sources":["../../../src/services/verify/verify-service.ts"],"sourcesContent":["/**\n * Verification Service\n *\n * Orchestrates tiered verification of implementations against specs.\n * Supports three tiers: structure, behavior, and AI review.\n */\n\nimport type { AnyOperationSpec } from '@contractspec/lib.contracts';\nimport type {\n VerificationIssue,\n VerificationReport,\n VerificationTier,\n} from '@contractspec/lib.contracts/llm';\nimport { verifyStructure } from './structure-verifier';\nimport { verifyBehavior } from './behavior-verifier';\nimport { createQuickAIReview, verifyWithAI } from './ai-verifier';\nimport type {\n VerifyConfig,\n VerifyInput,\n VerifyOptions,\n VerifyResult,\n} from './types';\n\nconst DEFAULT_CONFIG: VerifyConfig = {\n verbose: false,\n};\n\nconst TIER_ORDER: VerificationTier[] = ['structure', 'behavior', 'ai_review'];\n\n/**\n * Verification Service\n *\n * Main service for verifying implementations against specs.\n */\nexport class VerifyService {\n private config: VerifyConfig;\n\n constructor(config: Partial<VerifyConfig> = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n }\n\n /**\n * Run verification on an implementation.\n */\n async verify(\n spec: AnyOperationSpec,\n implementationCode: string,\n options: VerifyOptions = {}\n ): Promise<VerifyResult> {\n const startTime = Date.now();\n const reports = new Map<VerificationTier, VerificationReport>();\n const allIssues: VerificationIssue[] = [];\n\n const input: VerifyInput = {\n spec,\n implementationCode,\n };\n\n // Determine which tiers to run\n const tiersToRun = options.tiers ?? ['structure', 'behavior'];\n\n for (const tier of TIER_ORDER) {\n if (!tiersToRun.includes(tier)) continue;\n\n let report: VerificationReport;\n\n switch (tier) {\n case 'structure':\n report = verifyStructure(input);\n break;\n case 'behavior':\n report = verifyBehavior(input);\n break;\n case 'ai_review':\n if (this.config.aiApiKey) {\n report = await verifyWithAI(input, this.config);\n } else {\n report = createQuickAIReview(input);\n }\n break;\n default:\n continue;\n }\n\n reports.set(tier, report);\n allIssues.push(...report.issues);\n\n // Stop on first failure if failFast is enabled\n if (options.failFast && !report.passed) {\n break;\n }\n }\n\n // Calculate combined results\n const reportsArray = Array.from(reports.values());\n const passed = reportsArray.every((r) => r.passed);\n const score =\n reportsArray.length > 0\n ? Math.round(\n reportsArray.reduce((sum, r) => sum + r.score, 0) /\n reportsArray.length\n )\n : 100;\n\n // Generate summary\n const summary = this.generateSummary(reportsArray, allIssues);\n\n return {\n passed,\n score,\n reports,\n allIssues,\n summary,\n duration: Date.now() - startTime,\n };\n }\n\n /**\n * Run only structure verification (Tier 1).\n */\n verifyStructure(\n spec: AnyOperationSpec,\n implementationCode: string,\n implementationPath?: string\n ): VerificationReport {\n return verifyStructure({\n spec,\n implementationCode,\n implementationPath,\n });\n }\n\n /**\n * Run only behavior verification (Tier 2).\n */\n verifyBehavior(\n spec: AnyOperationSpec,\n implementationCode: string,\n implementationPath?: string\n ): VerificationReport {\n return verifyBehavior({\n spec,\n implementationCode,\n implementationPath,\n });\n }\n\n /**\n * Run only AI verification (Tier 3).\n */\n async verifyAI(\n spec: AnyOperationSpec,\n implementationCode: string,\n implementationPath?: string\n ): Promise<VerificationReport> {\n const input: VerifyInput = {\n spec,\n implementationCode,\n implementationPath,\n };\n\n if (this.config.aiApiKey) {\n return verifyWithAI(input, this.config);\n }\n return createQuickAIReview(input);\n }\n\n /**\n * Quick verification (structure only, fast).\n */\n quickVerify(\n spec: AnyOperationSpec,\n implementationCode: string\n ): VerificationReport {\n return verifyStructure({ spec, implementationCode });\n }\n\n /**\n * Format verification result as markdown.\n */\n formatAsMarkdown(result: VerifyResult): string {\n const lines: string[] = [];\n\n // Header\n lines.push(`# Verification Report`);\n lines.push('');\n lines.push(`**Status:** ${result.passed ? '✓ Passed' : '✗ Failed'}`);\n lines.push(`**Score:** ${result.score}/100`);\n lines.push(`**Duration:** ${result.duration}ms`);\n lines.push('');\n\n // Per-tier details\n for (const [tier, report] of result.reports) {\n lines.push(`## ${this.formatTierName(tier)}`);\n lines.push('');\n lines.push(`**Status:** ${report.passed ? '✓ Passed' : '✗ Failed'}`);\n lines.push(`**Score:** ${report.score}/100`);\n lines.push('');\n\n if (report.issues.length > 0) {\n lines.push('### Issues');\n lines.push('');\n for (const issue of report.issues) {\n const icon =\n issue.severity === 'error'\n ? '❌'\n : issue.severity === 'warning'\n ? '⚠️'\n : 'ℹ️';\n lines.push(`${icon} **${issue.category}**: ${issue.message}`);\n if (issue.suggestion) {\n lines.push(` - Suggestion: ${issue.suggestion}`);\n }\n }\n lines.push('');\n }\n\n if (report.coverage.scenarios.total > 0) {\n lines.push(\n `**Scenarios:** ${report.coverage.scenarios.covered}/${report.coverage.scenarios.total}`\n );\n }\n if (report.coverage.errors.total > 0) {\n lines.push(\n `**Errors handled:** ${report.coverage.errors.handled}/${report.coverage.errors.total}`\n );\n }\n lines.push('');\n }\n\n // Suggestions\n const allSuggestions = Array.from(result.reports.values()).flatMap(\n (r) => r.suggestions\n );\n\n if (allSuggestions.length > 0) {\n lines.push('## Suggestions');\n lines.push('');\n for (const suggestion of allSuggestions.slice(0, 10)) {\n lines.push(`- ${suggestion}`);\n }\n if (allSuggestions.length > 10) {\n lines.push(`- ... and ${allSuggestions.length - 10} more`);\n }\n lines.push('');\n }\n\n return lines.join('\\n');\n }\n\n /**\n * Update configuration.\n */\n configure(config: Partial<VerifyConfig>): void {\n this.config = { ...this.config, ...config };\n }\n\n /**\n * Generate a human-readable summary of verification results.\n */\n private generateSummary(\n reports: VerificationReport[],\n allIssues: VerificationIssue[]\n ): string {\n const parts: string[] = [];\n\n // Overall status\n const passed = reports.every((r) => r.passed);\n const avgScore =\n reports.length > 0\n ? Math.round(\n reports.reduce((sum, r) => sum + r.score, 0) / reports.length\n )\n : 100;\n\n parts.push(passed ? '✓ Verification passed' : '✗ Verification failed');\n parts.push(`Score: ${avgScore}/100`);\n parts.push('');\n\n // Per-tier summary\n for (const report of reports) {\n const icon = report.passed ? '✓' : '✗';\n parts.push(`${icon} ${report.tier}: ${report.score}/100`);\n }\n parts.push('');\n\n // Issue summary\n const errors = allIssues.filter((i) => i.severity === 'error');\n const warnings = allIssues.filter((i) => i.severity === 'warning');\n const infos = allIssues.filter((i) => i.severity === 'info');\n\n if (errors.length > 0) {\n parts.push(`Errors: ${errors.length}`);\n }\n if (warnings.length > 0) {\n parts.push(`Warnings: ${warnings.length}`);\n }\n if (infos.length > 0) {\n parts.push(`Info: ${infos.length}`);\n }\n\n return parts.join('\\n');\n }\n\n /**\n * Format tier name for display.\n */\n private formatTierName(tier: VerificationTier): string {\n switch (tier) {\n case 'structure':\n return 'Tier 1: Structure';\n case 'behavior':\n return 'Tier 2: Behavior';\n case 'ai_review':\n return 'Tier 3: AI Review';\n default:\n return tier;\n }\n }\n}\n\n/**\n * Create a new VerifyService instance.\n */\nexport function createVerifyService(\n config?: Partial<VerifyConfig>\n): VerifyService {\n return new VerifyService(config);\n}\n\n/** Default singleton instance */\nexport const verifyService = new VerifyService();\n"],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { ChangelogJsonExport, VersionAnalyzeResult } from "./types.mjs";
2
+ import { ChangelogEntry } from "@contractspec/lib.contracts";
3
+
4
+ //#region src/services/versioning/changelog-formatter.d.ts
5
+
6
+ /**
7
+ * Format entries as Keep a Changelog markdown.
8
+ *
9
+ * @see https://keepachangelog.com/
10
+ */
11
+ declare function formatKeepAChangelog(entries: ChangelogEntry[]): string;
12
+ /**
13
+ * Format entries as Conventional Changelog markdown.
14
+ *
15
+ * @see https://www.conventionalcommits.org/
16
+ */
17
+ declare function formatConventionalChangelog(entries: ChangelogEntry[]): string;
18
+ /**
19
+ * Format analysis result as JSON export.
20
+ */
21
+ declare function formatChangelogJson(analysis: VersionAnalyzeResult, baseline?: string): ChangelogJsonExport;
22
+ //#endregion
23
+ export { formatChangelogJson, formatConventionalChangelog, formatKeepAChangelog };
24
+ //# sourceMappingURL=changelog-formatter.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changelog-formatter.d.mts","names":[],"sources":["../../../src/services/versioning/changelog-formatter.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;iBAmBgB,oBAAA,UAA8B;;;;;;iBA4G9B,2BAAA,UAAqC;;;;iBAmDrC,mBAAA,WACJ,0CAET"}
@@ -0,0 +1,155 @@
1
+ //#region src/services/versioning/changelog-formatter.ts
2
+ /**
3
+ * Format entries as Keep a Changelog markdown.
4
+ *
5
+ * @see https://keepachangelog.com/
6
+ */
7
+ function formatKeepAChangelog(entries) {
8
+ const lines = [
9
+ "# Changelog",
10
+ "",
11
+ "All notable changes to this project will be documented in this file.",
12
+ "",
13
+ "The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),",
14
+ "and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).",
15
+ ""
16
+ ];
17
+ const sorted = [...entries].sort((a, b) => compareVersionsDescending(a.version, b.version));
18
+ for (const entry of sorted) {
19
+ lines.push(`## [${entry.version}] - ${entry.date}`);
20
+ lines.push("");
21
+ const added = entry.changes.filter((c) => c.type === "added");
22
+ const changed = entry.changes.filter((c) => c.type === "changed");
23
+ const deprecated = entry.changes.filter((c) => c.type === "deprecated");
24
+ const removed = entry.changes.filter((c) => c.type === "removed");
25
+ const fixed = entry.changes.filter((c) => c.type === "fixed");
26
+ const security = entry.changes.filter((c) => c.type === "security");
27
+ const breaking = entry.breakingChanges ?? entry.changes.filter((c) => c.type === "breaking");
28
+ if (breaking.length > 0) {
29
+ lines.push("### ⚠️ Breaking Changes");
30
+ breaking.forEach((c) => {
31
+ lines.push(`- ${c.description}${c.path ? ` (${c.path})` : ""}`);
32
+ });
33
+ lines.push("");
34
+ }
35
+ if (added.length > 0) {
36
+ lines.push("### Added");
37
+ added.forEach((c) => {
38
+ lines.push(`- ${c.description}${c.path ? ` (${c.path})` : ""}`);
39
+ });
40
+ lines.push("");
41
+ }
42
+ if (changed.length > 0) {
43
+ lines.push("### Changed");
44
+ changed.forEach((c) => {
45
+ lines.push(`- ${c.description}${c.path ? ` (${c.path})` : ""}`);
46
+ });
47
+ lines.push("");
48
+ }
49
+ if (deprecated.length > 0) {
50
+ lines.push("### Deprecated");
51
+ deprecated.forEach((c) => {
52
+ lines.push(`- ${c.description}${c.path ? ` (${c.path})` : ""}`);
53
+ });
54
+ lines.push("");
55
+ }
56
+ if (removed.length > 0) {
57
+ lines.push("### Removed");
58
+ removed.forEach((c) => {
59
+ lines.push(`- ${c.description}${c.path ? ` (${c.path})` : ""}`);
60
+ });
61
+ lines.push("");
62
+ }
63
+ if (fixed.length > 0) {
64
+ lines.push("### Fixed");
65
+ fixed.forEach((c) => {
66
+ lines.push(`- ${c.description}${c.path ? ` (${c.path})` : ""}`);
67
+ });
68
+ lines.push("");
69
+ }
70
+ if (security.length > 0) {
71
+ lines.push("### Security");
72
+ security.forEach((c) => {
73
+ lines.push(`- ${c.description}${c.path ? ` (${c.path})` : ""}`);
74
+ });
75
+ lines.push("");
76
+ }
77
+ }
78
+ return lines.join("\n");
79
+ }
80
+ /**
81
+ * Format entries as Conventional Changelog markdown.
82
+ *
83
+ * @see https://www.conventionalcommits.org/
84
+ */
85
+ function formatConventionalChangelog(entries) {
86
+ const lines = ["# Changelog", ""];
87
+ const sorted = [...entries].sort((a, b) => compareVersionsDescending(a.version, b.version));
88
+ for (const entry of sorted) {
89
+ const bumpLabel = entry.bumpType === "major" ? "💥 BREAKING RELEASE" : entry.bumpType === "minor" ? "🚀 Minor Release" : "🔧 Patch Release";
90
+ lines.push(`## ${entry.version} (${entry.date}) - ${bumpLabel}`);
91
+ lines.push("");
92
+ const typeMapping = {
93
+ added: "feat",
94
+ changed: "refactor",
95
+ fixed: "fix",
96
+ removed: "refactor",
97
+ deprecated: "deprecate",
98
+ breaking: "feat!",
99
+ security: "security"
100
+ };
101
+ for (const change of entry.changes) {
102
+ const type = typeMapping[change.type] ?? "chore";
103
+ const scope = change.path ? `(${change.path})` : "";
104
+ const breakingMarker = change.type === "breaking" ? "!" : "";
105
+ lines.push(`- **${type}${scope}${breakingMarker}**: ${change.description}`);
106
+ }
107
+ lines.push("");
108
+ }
109
+ return lines.join("\n");
110
+ }
111
+ /**
112
+ * Format analysis result as JSON export.
113
+ */
114
+ function formatChangelogJson(analysis, baseline) {
115
+ const specsNeedingBump = analysis.analyses.filter((a) => a.needsBump);
116
+ const isoDateTime = (/* @__PURE__ */ new Date()).toISOString();
117
+ const isoDate = isoDateTime.split("T")[0] ?? "";
118
+ return {
119
+ generatedAt: isoDateTime,
120
+ baseline,
121
+ specs: specsNeedingBump.map((spec) => ({
122
+ key: spec.specKey,
123
+ version: spec.suggestedVersion,
124
+ path: spec.specPath,
125
+ entries: [{
126
+ version: spec.suggestedVersion,
127
+ date: isoDate,
128
+ bumpType: spec.bumpType,
129
+ changes: spec.changes,
130
+ breakingChanges: spec.changes.filter((c) => c.type === "breaking")
131
+ }]
132
+ })),
133
+ libraries: []
134
+ };
135
+ }
136
+ /**
137
+ * Compare versions in descending order (newest first).
138
+ */
139
+ function compareVersionsDescending(a, b) {
140
+ const parseVer = (v) => {
141
+ return v.split(".").map((p) => parseInt(p, 10) || 0);
142
+ };
143
+ const aParts = parseVer(a);
144
+ const bParts = parseVer(b);
145
+ for (let i = 0; i < 3; i++) {
146
+ const aVal = aParts[i] ?? 0;
147
+ const bVal = bParts[i] ?? 0;
148
+ if (aVal !== bVal) return bVal - aVal;
149
+ }
150
+ return 0;
151
+ }
152
+
153
+ //#endregion
154
+ export { formatChangelogJson, formatConventionalChangelog, formatKeepAChangelog };
155
+ //# sourceMappingURL=changelog-formatter.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changelog-formatter.mjs","names":[],"sources":["../../../src/services/versioning/changelog-formatter.ts"],"sourcesContent":["/**\n * Changelog formatters.\n *\n * Format changelog entries as Markdown (Keep a Changelog, Conventional)\n * or JSON for programmatic use.\n */\n\nimport type { ChangelogEntry, ChangeEntry } from '@contractspec/lib.contracts';\nimport type { VersionAnalyzeResult, ChangelogJsonExport } from './types';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Keep a Changelog Format\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Format entries as Keep a Changelog markdown.\n *\n * @see https://keepachangelog.com/\n */\nexport function formatKeepAChangelog(entries: ChangelogEntry[]): string {\n const lines: string[] = [\n '# Changelog',\n '',\n 'All notable changes to this project will be documented in this file.',\n '',\n 'The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),',\n 'and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).',\n '',\n ];\n\n // Sort entries by version (newest first)\n const sorted = [...entries].sort((a, b) =>\n compareVersionsDescending(a.version, b.version)\n );\n\n for (const entry of sorted) {\n lines.push(`## [${entry.version}] - ${entry.date}`);\n lines.push('');\n\n // Group changes by type\n const added = entry.changes.filter((c: ChangeEntry) => c.type === 'added');\n const changed = entry.changes.filter(\n (c: ChangeEntry) => c.type === 'changed'\n );\n const deprecated = entry.changes.filter(\n (c: ChangeEntry) => c.type === 'deprecated'\n );\n const removed = entry.changes.filter(\n (c: ChangeEntry) => c.type === 'removed'\n );\n const fixed = entry.changes.filter((c: ChangeEntry) => c.type === 'fixed');\n const security = entry.changes.filter(\n (c: ChangeEntry) => c.type === 'security'\n );\n const breaking =\n entry.breakingChanges ??\n entry.changes.filter((c: ChangeEntry) => c.type === 'breaking');\n\n if (breaking.length > 0) {\n lines.push('### ⚠️ Breaking Changes');\n breaking.forEach((c: ChangeEntry) => {\n lines.push(`- ${c.description}${c.path ? ` (${c.path})` : ''}`);\n });\n lines.push('');\n }\n\n if (added.length > 0) {\n lines.push('### Added');\n added.forEach((c: ChangeEntry) => {\n lines.push(`- ${c.description}${c.path ? ` (${c.path})` : ''}`);\n });\n lines.push('');\n }\n\n if (changed.length > 0) {\n lines.push('### Changed');\n changed.forEach((c: ChangeEntry) => {\n lines.push(`- ${c.description}${c.path ? ` (${c.path})` : ''}`);\n });\n lines.push('');\n }\n\n if (deprecated.length > 0) {\n lines.push('### Deprecated');\n deprecated.forEach((c: ChangeEntry) => {\n lines.push(`- ${c.description}${c.path ? ` (${c.path})` : ''}`);\n });\n lines.push('');\n }\n\n if (removed.length > 0) {\n lines.push('### Removed');\n removed.forEach((c: ChangeEntry) => {\n lines.push(`- ${c.description}${c.path ? ` (${c.path})` : ''}`);\n });\n lines.push('');\n }\n\n if (fixed.length > 0) {\n lines.push('### Fixed');\n fixed.forEach((c: ChangeEntry) => {\n lines.push(`- ${c.description}${c.path ? ` (${c.path})` : ''}`);\n });\n lines.push('');\n }\n\n if (security.length > 0) {\n lines.push('### Security');\n security.forEach((c: ChangeEntry) => {\n lines.push(`- ${c.description}${c.path ? ` (${c.path})` : ''}`);\n });\n lines.push('');\n }\n }\n\n return lines.join('\\n');\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Conventional Changelog Format\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Format entries as Conventional Changelog markdown.\n *\n * @see https://www.conventionalcommits.org/\n */\nexport function formatConventionalChangelog(entries: ChangelogEntry[]): string {\n const lines: string[] = ['# Changelog', ''];\n\n // Sort entries by version (newest first)\n const sorted = [...entries].sort((a, b) =>\n compareVersionsDescending(a.version, b.version)\n );\n\n for (const entry of sorted) {\n const bumpLabel =\n entry.bumpType === 'major'\n ? '💥 BREAKING RELEASE'\n : entry.bumpType === 'minor'\n ? '🚀 Minor Release'\n : '🔧 Patch Release';\n\n lines.push(`## ${entry.version} (${entry.date}) - ${bumpLabel}`);\n lines.push('');\n\n // Map change types to conventional commit types\n const typeMapping: Record<string, string> = {\n added: 'feat',\n changed: 'refactor',\n fixed: 'fix',\n removed: 'refactor',\n deprecated: 'deprecate',\n breaking: 'feat!',\n security: 'security',\n };\n\n for (const change of entry.changes) {\n const type = typeMapping[change.type] ?? 'chore';\n const scope = change.path ? `(${change.path})` : '';\n const breakingMarker = change.type === 'breaking' ? '!' : '';\n lines.push(\n `- **${type}${scope}${breakingMarker}**: ${change.description}`\n );\n }\n lines.push('');\n }\n\n return lines.join('\\n');\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// JSON Format\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Format analysis result as JSON export.\n */\nexport function formatChangelogJson(\n analysis: VersionAnalyzeResult,\n baseline?: string\n): ChangelogJsonExport {\n const specsNeedingBump = analysis.analyses.filter((a) => a.needsBump);\n\n const isoDateTime = new Date().toISOString();\n const isoDate = isoDateTime.split('T')[0] ?? '';\n\n return {\n generatedAt: isoDateTime,\n baseline,\n specs: specsNeedingBump.map((spec) => ({\n key: spec.specKey,\n version: spec.suggestedVersion,\n path: spec.specPath,\n entries: [\n {\n version: spec.suggestedVersion,\n date: isoDate,\n bumpType: spec.bumpType,\n changes: spec.changes,\n breakingChanges: spec.changes.filter((c) => c.type === 'breaking'),\n },\n ],\n })),\n libraries: [], // TODO: Group by library\n };\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Helpers\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Compare versions in descending order (newest first).\n */\nfunction compareVersionsDescending(a: string, b: string): number {\n const parseVer = (v: string): number[] => {\n const parts = v.split('.').map((p) => parseInt(p, 10) || 0);\n return parts;\n };\n\n const aParts = parseVer(a);\n const bParts = parseVer(b);\n\n for (let i = 0; i < 3; i++) {\n const aVal = aParts[i] ?? 0;\n const bVal = bParts[i] ?? 0;\n if (aVal !== bVal) {\n return bVal - aVal; // Descending\n }\n }\n\n return 0;\n}\n"],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ import { ChangeEntry, VersionBumpType } from "@contractspec/lib.contracts";
2
+
3
+ //#region src/services/versioning/conventional-commits.d.ts
4
+
5
+ /**
6
+ * Parsed conventional commit message.
7
+ */
8
+ interface ConventionalCommit {
9
+ /** Commit type (feat, fix, chore, etc.) */
10
+ type: string;
11
+ /** Optional scope (e.g., auth, api) */
12
+ scope?: string;
13
+ /** Whether this is a breaking change */
14
+ breaking: boolean;
15
+ /** Commit description */
16
+ description: string;
17
+ /** Commit body (optional) */
18
+ body?: string;
19
+ /** Breaking change description (if any) */
20
+ breakingDescription?: string;
21
+ /** Full original message */
22
+ raw: string;
23
+ }
24
+ /**
25
+ * Commit type to bump type mapping.
26
+ */
27
+ type CommitTypeBumpMap = Record<string, VersionBumpType | null>;
28
+ /**
29
+ * Default mapping of commit types to version bump types.
30
+ *
31
+ * - `feat` → minor (new feature)
32
+ * - `fix` → patch (bug fix)
33
+ * - `perf` → patch (performance improvement)
34
+ * - `refactor` → patch (code refactoring)
35
+ * - `docs` → null (no version bump)
36
+ * - `style` → null (no version bump)
37
+ * - `test` → null (no version bump)
38
+ * - `chore` → null (no version bump)
39
+ * - `ci` → null (no version bump)
40
+ * - `build` → null (no version bump)
41
+ */
42
+ declare const DEFAULT_COMMIT_TYPE_MAP: CommitTypeBumpMap;
43
+ /**
44
+ * Parse a conventional commit message.
45
+ *
46
+ * @param message - Full commit message (may include body)
47
+ * @returns Parsed commit or null if not a valid conventional commit
48
+ */
49
+ declare function parseConventionalCommit(message: string): ConventionalCommit | null;
50
+ /**
51
+ * Check if a commit message follows conventional commit format.
52
+ */
53
+ declare function isConventionalCommit(message: string): boolean;
54
+ /**
55
+ * Determine the version bump type from a conventional commit.
56
+ *
57
+ * @param commit - Parsed conventional commit
58
+ * @param typeMap - Optional custom type-to-bump mapping
59
+ * @returns Version bump type or null if no bump needed
60
+ */
61
+ declare function getBumpTypeFromCommit(commit: ConventionalCommit, typeMap?: CommitTypeBumpMap): VersionBumpType | null;
62
+ /**
63
+ * Determine the highest bump type from multiple commits.
64
+ *
65
+ * @param commits - Array of parsed conventional commits
66
+ * @param typeMap - Optional custom type-to-bump mapping
67
+ * @returns Highest version bump type or null if no bump needed
68
+ */
69
+ declare function getHighestBumpType(commits: ConventionalCommit[], typeMap?: CommitTypeBumpMap): VersionBumpType | null;
70
+ /**
71
+ * Convert a conventional commit to a changelog ChangeEntry.
72
+ *
73
+ * @param commit - Parsed conventional commit
74
+ * @returns ChangeEntry for changelog
75
+ */
76
+ declare function commitToChangeEntry(commit: ConventionalCommit): ChangeEntry;
77
+ /**
78
+ * Convert multiple commits to an array of ChangeEntries.
79
+ */
80
+ declare function commitsToChangeEntries(commits: ConventionalCommit[]): ChangeEntry[];
81
+ /**
82
+ * Filter commits by scope (for spec-level changes).
83
+ *
84
+ * @param commits - Array of parsed conventional commits
85
+ * @param scope - Scope to filter by (e.g., "auth", "api")
86
+ * @returns Commits matching the scope
87
+ */
88
+ declare function filterCommitsByScope(commits: ConventionalCommit[], scope: string): ConventionalCommit[];
89
+ /**
90
+ * Filter commits that trigger version bumps.
91
+ */
92
+ declare function filterBumpableCommits(commits: ConventionalCommit[], typeMap?: CommitTypeBumpMap): ConventionalCommit[];
93
+ //#endregion
94
+ export { CommitTypeBumpMap, ConventionalCommit, DEFAULT_COMMIT_TYPE_MAP, commitToChangeEntry, commitsToChangeEntries, filterBumpableCommits, filterCommitsByScope, getBumpTypeFromCommit, getHighestBumpType, isConventionalCommit, parseConventionalCommit };
95
+ //# sourceMappingURL=conventional-commits.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conventional-commits.d.mts","names":[],"sources":["../../../src/services/versioning/conventional-commits.ts"],"sourcesContent":[],"mappings":";;;;;;;AAwLkB,UAjKD,kBAAA,CAiKC;EAqCF;EAoDA,IAAA,EAAA,MAAA;EAiBA;EAUA,KAAA,CAAA,EAAA,MAAA;EACL;EACA,QAAA,EAAA,OAAA;EACR;EAAkB,WAAA,EAAA,MAAA;;;;;;;;;;;KApQT,iBAAA,GAAoB,eAAe;;;;;;;;;;;;;;;cAoBlC,yBAAyB;;;;;;;iBAyCtB,uBAAA,mBAEb;;;;iBAwCa,oBAAA;;;;;;;;iBAeA,qBAAA,SACN,8BACC,oBACR;;;;;;;;iBAiBa,kBAAA,UACL,gCACA,oBACR;;;;;;;iBAqCa,mBAAA,SAA4B,qBAAqB;;;;iBAoDjD,sBAAA,UACL,uBACR;;;;;;;;iBAea,oBAAA,UACL,sCAER;;;;iBAOa,qBAAA,UACL,gCACA,oBACR"}