@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,39 @@
1
+ import { getAIProvider, getRecommendedModels, validateLegacyProvider } from "@contractspec/lib.ai-providers";
2
+
3
+ //#region src/ai/providers.ts
4
+ /**
5
+ * Initialize AI provider based on configuration
6
+ *
7
+ * @deprecated Use createProvider() from @contractspec/lib.ai-providers instead
8
+ */
9
+ function getAIProvider$1(config) {
10
+ return getAIProvider({
11
+ aiProvider: config.aiProvider,
12
+ aiModel: config.aiModel || void 0,
13
+ customEndpoint: config.customEndpoint || void 0
14
+ });
15
+ }
16
+ /**
17
+ * Validate that the provider is accessible and working
18
+ *
19
+ * @deprecated Use validateProvider() from @contractspec/lib.ai-providers instead
20
+ */
21
+ async function validateProvider(config) {
22
+ return await validateLegacyProvider({
23
+ aiProvider: config.aiProvider,
24
+ aiModel: config.aiModel || void 0,
25
+ customEndpoint: config.customEndpoint || void 0
26
+ });
27
+ }
28
+ /**
29
+ * Get recommended models for each provider
30
+ *
31
+ * @deprecated Use getModelsForProvider() from @contractspec/lib.ai-providers instead
32
+ */
33
+ function getRecommendedModels$1(provider) {
34
+ return getRecommendedModels(provider);
35
+ }
36
+
37
+ //#endregion
38
+ export { getAIProvider$1 as getAIProvider, getRecommendedModels$1 as getRecommendedModels, validateProvider };
39
+ //# sourceMappingURL=providers.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.mjs","names":["getAIProvider","getProviderFromLib","validateProviderFromLib","getRecommendedModels","getModelsFromLib"],"sources":["../../src/ai/providers.ts"],"sourcesContent":["/**\n * AI Provider utilities for ContractSpec workspace.\n *\n * Re-exports from @contractspec/lib.ai-providers with workspace-specific additions.\n */\nimport type { LanguageModel } from 'ai';\nimport {\n getAIProvider as getProviderFromLib,\n validateLegacyProvider as validateProviderFromLib,\n getRecommendedModels as getModelsFromLib,\n type LegacyConfig,\n} from '@contractspec/lib.ai-providers';\nimport type { Config } from '../types/config';\n\n/**\n * Initialize AI provider based on configuration\n *\n * @deprecated Use createProvider() from @contractspec/lib.ai-providers instead\n */\nexport function getAIProvider(config: Config): LanguageModel {\n const legacyConfig: LegacyConfig = {\n aiProvider: config.aiProvider,\n aiModel: config.aiModel || undefined,\n customEndpoint: config.customEndpoint || undefined,\n };\n return getProviderFromLib(legacyConfig);\n}\n\n/**\n * Validate that the provider is accessible and working\n *\n * @deprecated Use validateProvider() from @contractspec/lib.ai-providers instead\n */\nexport async function validateProvider(\n config: Config\n): Promise<{ success: boolean; error?: string }> {\n const legacyConfig: LegacyConfig = {\n aiProvider: config.aiProvider,\n aiModel: config.aiModel || undefined,\n customEndpoint: config.customEndpoint || undefined,\n };\n const result = await validateProviderFromLib(legacyConfig);\n return result;\n}\n\n/**\n * Get recommended models for each provider\n *\n * @deprecated Use getModelsForProvider() from @contractspec/lib.ai-providers instead\n */\nexport function getRecommendedModels(provider: Config['aiProvider']): string[] {\n return getModelsFromLib(provider);\n}\n"],"mappings":";;;;;;;;AAmBA,SAAgBA,gBAAc,QAA+B;AAM3D,QAAOC,cAL4B;EACjC,YAAY,OAAO;EACnB,SAAS,OAAO,WAAW;EAC3B,gBAAgB,OAAO,kBAAkB;EAC1C,CACsC;;;;;;;AAQzC,eAAsB,iBACpB,QAC+C;AAO/C,QADe,MAAMC,uBALc;EACjC,YAAY,OAAO;EACnB,SAAS,OAAO,WAAW;EAC3B,gBAAgB,OAAO,kBAAkB;EAC1C,CACyD;;;;;;;AAS5D,SAAgBC,uBAAqB,UAA0C;AAC7E,QAAOC,qBAAiB,SAAS"}
@@ -0,0 +1,11 @@
1
+ import { SarifFormatOptions, SarifOutput, formatAsSarif, sarifToJson } from "./sarif.mjs";
2
+ import { BaseJsonOutput, CiCheckJson, CiJsonOutput, JsonFormatOptions, formatAsJson } from "./json.mjs";
3
+ import { TextFormatOptions, TextLine, formatAsText, formatAsTextLines } from "./text.mjs";
4
+
5
+ //#region src/formatters/index.d.ts
6
+ declare namespace index_d_exports {
7
+ export { BaseJsonOutput, CiCheckJson, CiJsonOutput, JsonFormatOptions, SarifFormatOptions, SarifOutput, TextFormatOptions, TextLine, formatAsJson, formatAsSarif, formatAsText, formatAsTextLines, sarifToJson };
8
+ }
9
+ //#endregion
10
+ export { index_d_exports };
11
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/formatters/index.ts"],"sourcesContent":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ import { __exportAll } from "../_virtual/rolldown_runtime.mjs";
2
+ import { formatAsSarif, sarifToJson } from "./sarif.mjs";
3
+ import { formatAsJson } from "./json.mjs";
4
+ import { formatAsText, formatAsTextLines } from "./text.mjs";
5
+
6
+ //#region src/formatters/index.ts
7
+ var formatters_exports = /* @__PURE__ */ __exportAll({
8
+ formatAsJson: () => formatAsJson,
9
+ formatAsSarif: () => formatAsSarif,
10
+ formatAsText: () => formatAsText,
11
+ formatAsTextLines: () => formatAsTextLines,
12
+ sarifToJson: () => sarifToJson
13
+ });
14
+
15
+ //#endregion
16
+ export { formatters_exports };
17
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../src/formatters/index.ts"],"sourcesContent":["/**\n * Output formatters for CI check results.\n */\n\nexport * from './sarif';\nexport * from './json';\nexport * from './text';\n"],"mappings":""}
@@ -0,0 +1,56 @@
1
+ import { CICheckResult } from "../services/ci-check/types.mjs";
2
+
3
+ //#region src/formatters/json.d.ts
4
+
5
+ /**
6
+ * Base interface for all standardized JSON outputs.
7
+ */
8
+ interface BaseJsonOutput {
9
+ /** Schema version for output stability (e.g., "1.0"). */
10
+ schemaVersion: string;
11
+ }
12
+ /**
13
+ * Options for JSON formatting.
14
+ */
15
+ interface JsonFormatOptions {
16
+ /** Pretty print with indentation. */
17
+ pretty?: boolean;
18
+ }
19
+ /**
20
+ * CI JSON output structure (v1.0).
21
+ */
22
+ interface CiJsonOutput extends BaseJsonOutput {
23
+ checks: CiCheckJson[];
24
+ drift: {
25
+ status: 'none' | 'detected';
26
+ files: string[];
27
+ };
28
+ summary: {
29
+ pass: number;
30
+ fail: number;
31
+ warn: number;
32
+ total: number;
33
+ durationMs: number;
34
+ timestamp: string;
35
+ };
36
+ details?: {
37
+ commit?: string;
38
+ branch?: string;
39
+ };
40
+ }
41
+ interface CiCheckJson {
42
+ name: string;
43
+ status: 'pass' | 'fail' | 'warn';
44
+ category: string;
45
+ message: string;
46
+ file?: string;
47
+ line?: number;
48
+ details?: Record<string, unknown>;
49
+ }
50
+ /**
51
+ * Format CI check results as standard JSON (v1.0).
52
+ */
53
+ declare function formatAsJson(result: CICheckResult, options?: JsonFormatOptions): string;
54
+ //#endregion
55
+ export { BaseJsonOutput, CiCheckJson, CiJsonOutput, JsonFormatOptions, formatAsJson };
56
+ //# sourceMappingURL=json.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.d.mts","names":[],"sources":["../../src/formatters/json.ts"],"sourcesContent":[],"mappings":";;;;AA6DA;;;UAjDiB,cAAA;;;;;;;UAQA,iBAAA;;;;;;;UAQA,YAAA,SAAqB;UAC5B;;;;;;;;;;;;;;;;;;UAmBO,WAAA;;;;;;;YAOL;;;;;iBAMI,YAAA,SACN,yBACC"}
@@ -0,0 +1,43 @@
1
+ //#region src/formatters/json.ts
2
+ /**
3
+ * Format CI check results as standard JSON (v1.0).
4
+ */
5
+ function formatAsJson(result, options = {}) {
6
+ const { pretty = true } = options;
7
+ const checks = result.issues.map((issue) => ({
8
+ name: issue.ruleId,
9
+ status: issue.severity === "error" ? "fail" : issue.severity === "warning" ? "warn" : "pass",
10
+ category: issue.category,
11
+ message: issue.message,
12
+ file: issue.file,
13
+ line: issue.line,
14
+ details: issue.context
15
+ }));
16
+ const fail = result.totalErrors;
17
+ const warn = result.totalWarnings;
18
+ const output = {
19
+ schemaVersion: "1.0",
20
+ checks,
21
+ drift: {
22
+ status: "none",
23
+ files: []
24
+ },
25
+ summary: {
26
+ pass: 0,
27
+ fail,
28
+ warn,
29
+ total: fail + warn,
30
+ durationMs: result.durationMs,
31
+ timestamp: result.timestamp
32
+ },
33
+ details: {
34
+ commit: result.commitSha,
35
+ branch: result.branch
36
+ }
37
+ };
38
+ return pretty ? JSON.stringify(output, null, 2) : JSON.stringify(output);
39
+ }
40
+
41
+ //#endregion
42
+ export { formatAsJson };
43
+ //# sourceMappingURL=json.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.mjs","names":[],"sources":["../../src/formatters/json.ts"],"sourcesContent":["/**\n * JSON output formatter.\n *\n * Formats CI check results as machine-readable JSON\n * for parsing in CI/CD scripts and integrations.\n */\n\nimport type { CICheckResult } from '../services/ci-check/types';\n\n/**\n * Base interface for all standardized JSON outputs.\n */\nexport interface BaseJsonOutput {\n /** Schema version for output stability (e.g., \"1.0\"). */\n schemaVersion: string;\n}\n\n/**\n * Options for JSON formatting.\n */\nexport interface JsonFormatOptions {\n /** Pretty print with indentation. */\n pretty?: boolean;\n}\n\n/**\n * CI JSON output structure (v1.0).\n */\nexport interface CiJsonOutput extends BaseJsonOutput {\n checks: CiCheckJson[];\n drift: {\n status: 'none' | 'detected';\n files: string[];\n };\n summary: {\n pass: number;\n fail: number;\n warn: number;\n total: number;\n durationMs: number;\n timestamp: string;\n };\n details?: {\n commit?: string;\n branch?: string;\n };\n}\n\nexport interface CiCheckJson {\n name: string;\n status: 'pass' | 'fail' | 'warn';\n category: string;\n message: string;\n file?: string;\n line?: number;\n details?: Record<string, unknown>;\n}\n\n/**\n * Format CI check results as standard JSON (v1.0).\n */\nexport function formatAsJson(\n result: CICheckResult,\n options: JsonFormatOptions = {}\n): string {\n const { pretty = true } = options;\n\n // Map issues to checks\n const checks: CiCheckJson[] = result.issues.map((issue) => ({\n name: issue.ruleId,\n status:\n issue.severity === 'error'\n ? 'fail'\n : issue.severity === 'warning'\n ? 'warn'\n : 'pass',\n category: issue.category,\n message: issue.message,\n file: issue.file,\n line: issue.line,\n details: issue.context as Record<string, unknown>,\n }));\n\n // Add passing categories as passing checks (summary level) if needed\n // Or purely rely on issues. The previous implementation had categories.\n // For v1.0 schema, we focus on list of checks.\n\n // Count stats\n const fail = result.totalErrors;\n const warn = result.totalWarnings;\n // Note: \"pass\" count is harder to derive solely from issues (which are usually negative).\n // But we can use category results to infer passing checks if we had granular per-check results.\n // For now, we'll use the issues list. If issues is empty, it's all pass?\n // Actually, let's map the categories too if they represent high-level checks.\n\n const output: CiJsonOutput = {\n schemaVersion: '1.0',\n checks,\n drift: {\n status: 'none', // TODO: Implement drift detection\n files: [],\n },\n summary: {\n pass: 0, // Placeholder, calculated properly if we have tracking of passed assertions\n fail,\n warn,\n total: fail + warn,\n durationMs: result.durationMs,\n timestamp: result.timestamp,\n },\n details: {\n commit: result.commitSha,\n branch: result.branch,\n },\n };\n\n return pretty ? JSON.stringify(output, null, 2) : JSON.stringify(output);\n}\n"],"mappings":";;;;AA6DA,SAAgB,aACd,QACA,UAA6B,EAAE,EACvB;CACR,MAAM,EAAE,SAAS,SAAS;CAG1B,MAAM,SAAwB,OAAO,OAAO,KAAK,WAAW;EAC1D,MAAM,MAAM;EACZ,QACE,MAAM,aAAa,UACf,SACA,MAAM,aAAa,YACjB,SACA;EACR,UAAU,MAAM;EAChB,SAAS,MAAM;EACf,MAAM,MAAM;EACZ,MAAM,MAAM;EACZ,SAAS,MAAM;EAChB,EAAE;CAOH,MAAM,OAAO,OAAO;CACpB,MAAM,OAAO,OAAO;CAMpB,MAAM,SAAuB;EAC3B,eAAe;EACf;EACA,OAAO;GACL,QAAQ;GACR,OAAO,EAAE;GACV;EACD,SAAS;GACP,MAAM;GACN;GACA;GACA,OAAO,OAAO;GACd,YAAY,OAAO;GACnB,WAAW,OAAO;GACnB;EACD,SAAS;GACP,QAAQ,OAAO;GACf,QAAQ,OAAO;GAChB;EACF;AAED,QAAO,SAAS,KAAK,UAAU,QAAQ,MAAM,EAAE,GAAG,KAAK,UAAU,OAAO"}
@@ -0,0 +1,101 @@
1
+ import { CICheckResult } from "../services/ci-check/types.mjs";
2
+
3
+ //#region src/formatters/sarif.d.ts
4
+
5
+ /**
6
+ * SARIF v2.1.0 output structure.
7
+ */
8
+ interface SarifOutput {
9
+ $schema: string;
10
+ version: string;
11
+ runs: SarifRun[];
12
+ }
13
+ interface SarifRun {
14
+ tool: {
15
+ driver: {
16
+ name: string;
17
+ version: string;
18
+ informationUri: string;
19
+ rules: SarifRule[];
20
+ };
21
+ };
22
+ results: SarifResult[];
23
+ invocations: SarifInvocation[];
24
+ versionControlProvenance?: SarifVersionControl[];
25
+ }
26
+ interface SarifRule {
27
+ id: string;
28
+ name: string;
29
+ shortDescription: {
30
+ text: string;
31
+ };
32
+ fullDescription?: {
33
+ text: string;
34
+ };
35
+ defaultConfiguration: {
36
+ level: 'error' | 'warning' | 'note' | 'none';
37
+ };
38
+ helpUri?: string;
39
+ }
40
+ interface SarifResult {
41
+ ruleId: string;
42
+ ruleIndex: number;
43
+ level: 'error' | 'warning' | 'note' | 'none';
44
+ message: {
45
+ text: string;
46
+ };
47
+ locations?: SarifLocation[];
48
+ partialFingerprints?: Record<string, string>;
49
+ }
50
+ interface SarifLocation {
51
+ physicalLocation: {
52
+ artifactLocation: {
53
+ uri: string;
54
+ uriBaseId?: string;
55
+ };
56
+ region?: {
57
+ startLine?: number;
58
+ startColumn?: number;
59
+ endLine?: number;
60
+ endColumn?: number;
61
+ };
62
+ };
63
+ }
64
+ interface SarifInvocation {
65
+ executionSuccessful: boolean;
66
+ endTimeUtc: string;
67
+ workingDirectory?: {
68
+ uri: string;
69
+ };
70
+ }
71
+ interface SarifVersionControl {
72
+ repositoryUri?: string;
73
+ revisionId?: string;
74
+ branch?: string;
75
+ }
76
+ /**
77
+ * Options for SARIF formatting.
78
+ */
79
+ interface SarifFormatOptions {
80
+ /** Tool name. */
81
+ toolName?: string;
82
+ /** Tool version. */
83
+ toolVersion?: string;
84
+ /** Tool information URI. */
85
+ toolUri?: string;
86
+ /** Repository URI for version control provenance. */
87
+ repositoryUri?: string;
88
+ /** Working directory. */
89
+ workingDirectory?: string;
90
+ }
91
+ /**
92
+ * Format CI check results as SARIF.
93
+ */
94
+ declare function formatAsSarif(result: CICheckResult, options?: SarifFormatOptions): SarifOutput;
95
+ /**
96
+ * Serialize SARIF output to JSON string.
97
+ */
98
+ declare function sarifToJson(sarif: SarifOutput): string;
99
+ //#endregion
100
+ export { SarifFormatOptions, SarifOutput, formatAsSarif, sarifToJson };
101
+ //# sourceMappingURL=sarif.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sarif.d.mts","names":[],"sources":["../../src/formatters/sarif.ts"],"sourcesContent":[],"mappings":";;;;;AAmCgD;AAG7B;AAoBT,UAxCO,WAAA,CAwCM;EAeb,OAAA,EAAA,MAAA;EAMA,OAAA,EAAA,MAAA;EASO,IAAA,EAnET,QAmES,EAAA;AA0EjB;UA1IU,QAAA,CA2IA;EACC,IAAA,EAAA;IACR,MAAA,EAAA;MAAW,IAAA,EAAA,MAAA;MAgKE,OAAW,EAAA,MAAA;;aAvSd;;;WAGF;eACI;6BACc;;UAGnB,SAAA;;;;;;;;;;;;;;UAWA,WAAA;;;;;;;cAKI;wBACU;;UAGd,aAAA;;;;;;;;;;;;;;UAeA,eAAA;;;;;;;UAMA,mBAAA;;;;;;;;UASO,kBAAA;;;;;;;;;;;;;;;iBA0ED,aAAA,SACN,yBACC,qBACR;;;;iBAgKa,WAAA,QAAmB"}
@@ -0,0 +1,163 @@
1
+ //#region src/formatters/sarif.ts
2
+ /**
3
+ * Map of rule IDs to their metadata.
4
+ */
5
+ const RULE_METADATA = {
6
+ "spec-structure-error": {
7
+ name: "Spec Structure Error",
8
+ description: "Contract specification is missing required structure elements"
9
+ },
10
+ "spec-structure-warning": {
11
+ name: "Spec Structure Warning",
12
+ description: "Contract specification has recommended but missing elements"
13
+ },
14
+ "integrity-orphaned": {
15
+ name: "Orphaned Spec",
16
+ description: "Contract specification is not linked to any feature"
17
+ },
18
+ "integrity-unresolved-ref": {
19
+ name: "Unresolved Reference",
20
+ description: "Contract specification references a non-existent spec"
21
+ },
22
+ "integrity-missing-feature": {
23
+ name: "Missing Feature",
24
+ description: "Feature referenced by spec does not exist"
25
+ },
26
+ "integrity-broken-link": {
27
+ name: "Broken Link",
28
+ description: "Link between specs is broken"
29
+ },
30
+ "deps-circular": {
31
+ name: "Circular Dependency",
32
+ description: "Circular dependency detected between contracts"
33
+ },
34
+ "deps-missing": {
35
+ name: "Missing Dependency",
36
+ description: "Contract depends on a non-existent contract"
37
+ },
38
+ "handler-missing": {
39
+ name: "Missing Handler",
40
+ description: "Handler implementation file does not exist for this contract"
41
+ },
42
+ "handler-warning": {
43
+ name: "Handler Warning",
44
+ description: "Handler implementation has potential issues"
45
+ },
46
+ "test-missing": {
47
+ name: "Missing Test",
48
+ description: "Test file does not exist for this contract"
49
+ },
50
+ "test-warning": {
51
+ name: "Test Warning",
52
+ description: "Test implementation has potential issues"
53
+ }
54
+ };
55
+ /**
56
+ * Format CI check results as SARIF.
57
+ */
58
+ function formatAsSarif(result, options = {}) {
59
+ const { toolName = "ContractSpec", toolVersion = "1.0.0", toolUri = "https://contractspec.io", repositoryUri, workingDirectory } = options;
60
+ const ruleMap = /* @__PURE__ */ new Map();
61
+ const ruleIndexMap = /* @__PURE__ */ new Map();
62
+ const issuesWithFiles = result.issues.filter((issue) => issue.file);
63
+ for (const issue of issuesWithFiles) if (!ruleMap.has(issue.ruleId)) {
64
+ const metadata = RULE_METADATA[issue.ruleId] ?? {
65
+ name: issue.ruleId,
66
+ description: `Rule: ${issue.ruleId}`
67
+ };
68
+ const rule = {
69
+ id: issue.ruleId,
70
+ name: metadata.name,
71
+ shortDescription: { text: metadata.description },
72
+ defaultConfiguration: { level: mapSeverityToLevel(issue.severity) }
73
+ };
74
+ if (metadata.helpUri) rule.helpUri = metadata.helpUri;
75
+ ruleIndexMap.set(issue.ruleId, ruleMap.size);
76
+ ruleMap.set(issue.ruleId, rule);
77
+ }
78
+ const results = issuesWithFiles.map((issue) => {
79
+ const sarifResult = {
80
+ ruleId: issue.ruleId,
81
+ ruleIndex: ruleIndexMap.get(issue.ruleId) ?? 0,
82
+ level: mapSeverityToLevel(issue.severity),
83
+ message: { text: issue.message }
84
+ };
85
+ const location = { physicalLocation: { artifactLocation: {
86
+ uri: normalizeUri(issue.file),
87
+ uriBaseId: "%SRCROOT%"
88
+ } } };
89
+ if (issue.line !== void 0) location.physicalLocation.region = {
90
+ startLine: issue.line,
91
+ startColumn: issue.column ?? 1,
92
+ endLine: issue.endLine ?? issue.line,
93
+ endColumn: issue.endColumn
94
+ };
95
+ sarifResult.locations = [location];
96
+ sarifResult.partialFingerprints = { primaryLocationLineHash: createFingerprint(issue) };
97
+ return sarifResult;
98
+ });
99
+ const versionControlProvenance = [];
100
+ if (repositoryUri) versionControlProvenance.push({
101
+ repositoryUri,
102
+ revisionId: result.commitSha,
103
+ branch: result.branch
104
+ });
105
+ const run = {
106
+ tool: { driver: {
107
+ name: toolName,
108
+ version: toolVersion,
109
+ informationUri: toolUri,
110
+ rules: Array.from(ruleMap.values())
111
+ } },
112
+ results,
113
+ invocations: [{
114
+ executionSuccessful: result.success,
115
+ endTimeUtc: result.timestamp,
116
+ ...workingDirectory && { workingDirectory: { uri: workingDirectory } }
117
+ }]
118
+ };
119
+ if (versionControlProvenance.length > 0) run.versionControlProvenance = versionControlProvenance;
120
+ return {
121
+ $schema: "https://json.schemastore.org/sarif-2.1.0.json",
122
+ version: "2.1.0",
123
+ runs: [run]
124
+ };
125
+ }
126
+ /**
127
+ * Map CI severity to SARIF level.
128
+ */
129
+ function mapSeverityToLevel(severity) {
130
+ switch (severity) {
131
+ case "error": return "error";
132
+ case "warning": return "warning";
133
+ case "note": return "note";
134
+ default: return "warning";
135
+ }
136
+ }
137
+ /**
138
+ * Normalize file path to SARIF URI format.
139
+ */
140
+ function normalizeUri(filePath) {
141
+ return filePath.replace(/^\.\//, "").replace(/\\/g, "/");
142
+ }
143
+ /**
144
+ * Create a fingerprint for issue deduplication.
145
+ */
146
+ function createFingerprint(issue) {
147
+ const parts = [
148
+ issue.ruleId,
149
+ issue.file ?? "",
150
+ issue.message
151
+ ];
152
+ return Buffer.from(parts.join("|")).toString("base64").slice(0, 16);
153
+ }
154
+ /**
155
+ * Serialize SARIF output to JSON string.
156
+ */
157
+ function sarifToJson(sarif) {
158
+ return JSON.stringify(sarif, null, 2);
159
+ }
160
+
161
+ //#endregion
162
+ export { formatAsSarif, sarifToJson };
163
+ //# sourceMappingURL=sarif.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sarif.mjs","names":[],"sources":["../../src/formatters/sarif.ts"],"sourcesContent":["/**\n * SARIF output formatter.\n *\n * Formats CI check results as SARIF (Static Analysis Results Interchange Format)\n * for integration with GitHub Code Scanning and other security tools.\n *\n * SARIF Specification: https://docs.oasis-open.org/sarif/sarif/v2.1.0/sarif-v2.1.0.html\n */\n\nimport type {\n CICheckResult,\n CIIssue,\n CIIssueSeverity,\n} from '../services/ci-check/types';\n\n/**\n * SARIF v2.1.0 output structure.\n */\nexport interface SarifOutput {\n $schema: string;\n version: string;\n runs: SarifRun[];\n}\n\ninterface SarifRun {\n tool: {\n driver: {\n name: string;\n version: string;\n informationUri: string;\n rules: SarifRule[];\n };\n };\n results: SarifResult[];\n invocations: SarifInvocation[];\n versionControlProvenance?: SarifVersionControl[];\n}\n\ninterface SarifRule {\n id: string;\n name: string;\n shortDescription: { text: string };\n fullDescription?: { text: string };\n defaultConfiguration: {\n level: 'error' | 'warning' | 'note' | 'none';\n };\n helpUri?: string;\n}\n\ninterface SarifResult {\n ruleId: string;\n ruleIndex: number;\n level: 'error' | 'warning' | 'note' | 'none';\n message: { text: string };\n locations?: SarifLocation[];\n partialFingerprints?: Record<string, string>;\n}\n\ninterface SarifLocation {\n physicalLocation: {\n artifactLocation: {\n uri: string;\n uriBaseId?: string;\n };\n region?: {\n startLine?: number;\n startColumn?: number;\n endLine?: number;\n endColumn?: number;\n };\n };\n}\n\ninterface SarifInvocation {\n executionSuccessful: boolean;\n endTimeUtc: string;\n workingDirectory?: { uri: string };\n}\n\ninterface SarifVersionControl {\n repositoryUri?: string;\n revisionId?: string;\n branch?: string;\n}\n\n/**\n * Options for SARIF formatting.\n */\nexport interface SarifFormatOptions {\n /** Tool name. */\n toolName?: string;\n /** Tool version. */\n toolVersion?: string;\n /** Tool information URI. */\n toolUri?: string;\n /** Repository URI for version control provenance. */\n repositoryUri?: string;\n /** Working directory. */\n workingDirectory?: string;\n}\n\n/**\n * Map of rule IDs to their metadata.\n */\nconst RULE_METADATA: Record<\n string,\n { name: string; description: string; helpUri?: string }\n> = {\n 'spec-structure-error': {\n name: 'Spec Structure Error',\n description:\n 'Contract specification is missing required structure elements',\n },\n 'spec-structure-warning': {\n name: 'Spec Structure Warning',\n description: 'Contract specification has recommended but missing elements',\n },\n 'integrity-orphaned': {\n name: 'Orphaned Spec',\n description: 'Contract specification is not linked to any feature',\n },\n 'integrity-unresolved-ref': {\n name: 'Unresolved Reference',\n description: 'Contract specification references a non-existent spec',\n },\n 'integrity-missing-feature': {\n name: 'Missing Feature',\n description: 'Feature referenced by spec does not exist',\n },\n 'integrity-broken-link': {\n name: 'Broken Link',\n description: 'Link between specs is broken',\n },\n 'deps-circular': {\n name: 'Circular Dependency',\n description: 'Circular dependency detected between contracts',\n },\n 'deps-missing': {\n name: 'Missing Dependency',\n description: 'Contract depends on a non-existent contract',\n },\n 'handler-missing': {\n name: 'Missing Handler',\n description: 'Handler implementation file does not exist for this contract',\n },\n 'handler-warning': {\n name: 'Handler Warning',\n description: 'Handler implementation has potential issues',\n },\n 'test-missing': {\n name: 'Missing Test',\n description: 'Test file does not exist for this contract',\n },\n 'test-warning': {\n name: 'Test Warning',\n description: 'Test implementation has potential issues',\n },\n};\n\n/**\n * Format CI check results as SARIF.\n */\nexport function formatAsSarif(\n result: CICheckResult,\n options: SarifFormatOptions = {}\n): SarifOutput {\n const {\n toolName = 'ContractSpec',\n toolVersion = '1.0.0',\n toolUri = 'https://contractspec.io',\n repositoryUri,\n workingDirectory,\n } = options;\n\n // Collect unique rules from issues (only from issues with files)\n const ruleMap = new Map<string, SarifRule>();\n const ruleIndexMap = new Map<string, number>();\n\n // Only collect rules from issues that have files (these are the ones that will be in results)\n const issuesWithFiles = result.issues.filter((issue) => issue.file);\n\n for (const issue of issuesWithFiles) {\n if (!ruleMap.has(issue.ruleId)) {\n const metadata = RULE_METADATA[issue.ruleId] ?? {\n name: issue.ruleId,\n description: `Rule: ${issue.ruleId}`,\n };\n\n const rule: SarifRule = {\n id: issue.ruleId,\n name: metadata.name,\n shortDescription: { text: metadata.description },\n defaultConfiguration: {\n level: mapSeverityToLevel(issue.severity),\n },\n };\n\n if (metadata.helpUri) {\n rule.helpUri = metadata.helpUri;\n }\n\n ruleIndexMap.set(issue.ruleId, ruleMap.size);\n ruleMap.set(issue.ruleId, rule);\n }\n }\n\n // Convert issues to SARIF results (only issues with file locations)\n // GitHub Code Scanning requires every result to have at least one location\n const results: SarifResult[] = issuesWithFiles.map((issue) => {\n const sarifResult: SarifResult = {\n ruleId: issue.ruleId,\n ruleIndex: ruleIndexMap.get(issue.ruleId) ?? 0,\n level: mapSeverityToLevel(issue.severity),\n message: { text: issue.message },\n };\n\n // issue.file is guaranteed to be defined due to the filter above\n const location: SarifLocation = {\n physicalLocation: {\n artifactLocation: {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n uri: normalizeUri(issue.file!),\n uriBaseId: '%SRCROOT%',\n },\n },\n };\n\n if (issue.line !== undefined) {\n location.physicalLocation.region = {\n startLine: issue.line,\n startColumn: issue.column ?? 1,\n endLine: issue.endLine ?? issue.line,\n endColumn: issue.endColumn,\n };\n }\n\n sarifResult.locations = [location];\n\n // Add fingerprint for deduplication\n sarifResult.partialFingerprints = {\n primaryLocationLineHash: createFingerprint(issue),\n };\n\n return sarifResult;\n });\n\n // Build version control provenance (only if repositoryUri is provided, as it's required by SARIF schema)\n const versionControlProvenance: SarifVersionControl[] = [];\n if (repositoryUri) {\n versionControlProvenance.push({\n repositoryUri,\n revisionId: result.commitSha,\n branch: result.branch,\n });\n }\n\n const run: SarifRun = {\n tool: {\n driver: {\n name: toolName,\n version: toolVersion,\n informationUri: toolUri,\n rules: Array.from(ruleMap.values()),\n },\n },\n results,\n invocations: [\n {\n executionSuccessful: result.success,\n endTimeUtc: result.timestamp,\n ...(workingDirectory && {\n workingDirectory: { uri: workingDirectory },\n }),\n },\n ],\n };\n\n if (versionControlProvenance.length > 0) {\n run.versionControlProvenance = versionControlProvenance;\n }\n\n return {\n $schema: 'https://json.schemastore.org/sarif-2.1.0.json',\n version: '2.1.0',\n runs: [run],\n };\n}\n\n/**\n * Map CI severity to SARIF level.\n */\nfunction mapSeverityToLevel(\n severity: CIIssueSeverity\n): 'error' | 'warning' | 'note' {\n switch (severity) {\n case 'error':\n return 'error';\n case 'warning':\n return 'warning';\n case 'note':\n return 'note';\n default:\n return 'warning';\n }\n}\n\n/**\n * Normalize file path to SARIF URI format.\n */\nfunction normalizeUri(filePath: string): string {\n // Remove leading ./ and normalize path separators\n return filePath.replace(/^\\.\\//, '').replace(/\\\\/g, '/');\n}\n\n/**\n * Create a fingerprint for issue deduplication.\n */\nfunction createFingerprint(issue: CIIssue): string {\n const parts = [issue.ruleId, issue.file ?? '', issue.message];\n return Buffer.from(parts.join('|')).toString('base64').slice(0, 16);\n}\n\n/**\n * Serialize SARIF output to JSON string.\n */\nexport function sarifToJson(sarif: SarifOutput): string {\n return JSON.stringify(sarif, null, 2);\n}\n"],"mappings":";;;;AAwGA,MAAM,gBAGF;CACF,wBAAwB;EACtB,MAAM;EACN,aACE;EACH;CACD,0BAA0B;EACxB,MAAM;EACN,aAAa;EACd;CACD,sBAAsB;EACpB,MAAM;EACN,aAAa;EACd;CACD,4BAA4B;EAC1B,MAAM;EACN,aAAa;EACd;CACD,6BAA6B;EAC3B,MAAM;EACN,aAAa;EACd;CACD,yBAAyB;EACvB,MAAM;EACN,aAAa;EACd;CACD,iBAAiB;EACf,MAAM;EACN,aAAa;EACd;CACD,gBAAgB;EACd,MAAM;EACN,aAAa;EACd;CACD,mBAAmB;EACjB,MAAM;EACN,aAAa;EACd;CACD,mBAAmB;EACjB,MAAM;EACN,aAAa;EACd;CACD,gBAAgB;EACd,MAAM;EACN,aAAa;EACd;CACD,gBAAgB;EACd,MAAM;EACN,aAAa;EACd;CACF;;;;AAKD,SAAgB,cACd,QACA,UAA8B,EAAE,EACnB;CACb,MAAM,EACJ,WAAW,gBACX,cAAc,SACd,UAAU,2BACV,eACA,qBACE;CAGJ,MAAM,0BAAU,IAAI,KAAwB;CAC5C,MAAM,+BAAe,IAAI,KAAqB;CAG9C,MAAM,kBAAkB,OAAO,OAAO,QAAQ,UAAU,MAAM,KAAK;AAEnE,MAAK,MAAM,SAAS,gBAClB,KAAI,CAAC,QAAQ,IAAI,MAAM,OAAO,EAAE;EAC9B,MAAM,WAAW,cAAc,MAAM,WAAW;GAC9C,MAAM,MAAM;GACZ,aAAa,SAAS,MAAM;GAC7B;EAED,MAAM,OAAkB;GACtB,IAAI,MAAM;GACV,MAAM,SAAS;GACf,kBAAkB,EAAE,MAAM,SAAS,aAAa;GAChD,sBAAsB,EACpB,OAAO,mBAAmB,MAAM,SAAS,EAC1C;GACF;AAED,MAAI,SAAS,QACX,MAAK,UAAU,SAAS;AAG1B,eAAa,IAAI,MAAM,QAAQ,QAAQ,KAAK;AAC5C,UAAQ,IAAI,MAAM,QAAQ,KAAK;;CAMnC,MAAM,UAAyB,gBAAgB,KAAK,UAAU;EAC5D,MAAM,cAA2B;GAC/B,QAAQ,MAAM;GACd,WAAW,aAAa,IAAI,MAAM,OAAO,IAAI;GAC7C,OAAO,mBAAmB,MAAM,SAAS;GACzC,SAAS,EAAE,MAAM,MAAM,SAAS;GACjC;EAGD,MAAM,WAA0B,EAC9B,kBAAkB,EAChB,kBAAkB;GAEhB,KAAK,aAAa,MAAM,KAAM;GAC9B,WAAW;GACZ,EACF,EACF;AAED,MAAI,MAAM,SAAS,OACjB,UAAS,iBAAiB,SAAS;GACjC,WAAW,MAAM;GACjB,aAAa,MAAM,UAAU;GAC7B,SAAS,MAAM,WAAW,MAAM;GAChC,WAAW,MAAM;GAClB;AAGH,cAAY,YAAY,CAAC,SAAS;AAGlC,cAAY,sBAAsB,EAChC,yBAAyB,kBAAkB,MAAM,EAClD;AAED,SAAO;GACP;CAGF,MAAM,2BAAkD,EAAE;AAC1D,KAAI,cACF,0BAAyB,KAAK;EAC5B;EACA,YAAY,OAAO;EACnB,QAAQ,OAAO;EAChB,CAAC;CAGJ,MAAM,MAAgB;EACpB,MAAM,EACJ,QAAQ;GACN,MAAM;GACN,SAAS;GACT,gBAAgB;GAChB,OAAO,MAAM,KAAK,QAAQ,QAAQ,CAAC;GACpC,EACF;EACD;EACA,aAAa,CACX;GACE,qBAAqB,OAAO;GAC5B,YAAY,OAAO;GACnB,GAAI,oBAAoB,EACtB,kBAAkB,EAAE,KAAK,kBAAkB,EAC5C;GACF,CACF;EACF;AAED,KAAI,yBAAyB,SAAS,EACpC,KAAI,2BAA2B;AAGjC,QAAO;EACL,SAAS;EACT,SAAS;EACT,MAAM,CAAC,IAAI;EACZ;;;;;AAMH,SAAS,mBACP,UAC8B;AAC9B,SAAQ,UAAR;EACE,KAAK,QACH,QAAO;EACT,KAAK,UACH,QAAO;EACT,KAAK,OACH,QAAO;EACT,QACE,QAAO;;;;;;AAOb,SAAS,aAAa,UAA0B;AAE9C,QAAO,SAAS,QAAQ,SAAS,GAAG,CAAC,QAAQ,OAAO,IAAI;;;;;AAM1D,SAAS,kBAAkB,OAAwB;CACjD,MAAM,QAAQ;EAAC,MAAM;EAAQ,MAAM,QAAQ;EAAI,MAAM;EAAQ;AAC7D,QAAO,OAAO,KAAK,MAAM,KAAK,IAAI,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,GAAG,GAAG;;;;;AAMrE,SAAgB,YAAY,OAA4B;AACtD,QAAO,KAAK,UAAU,OAAO,MAAM,EAAE"}
@@ -0,0 +1,35 @@
1
+ import { CICheckResult } from "../services/ci-check/types.mjs";
2
+
3
+ //#region src/formatters/text.d.ts
4
+
5
+ /**
6
+ * Options for text formatting.
7
+ */
8
+ interface TextFormatOptions {
9
+ /** Show verbose output with all details. */
10
+ verbose?: boolean;
11
+ /** Include timing information. */
12
+ showTiming?: boolean;
13
+ /** Group issues by file. */
14
+ groupByFile?: boolean;
15
+ }
16
+ /**
17
+ * Text output lines with optional styling hints.
18
+ */
19
+ interface TextLine {
20
+ text: string;
21
+ style?: 'normal' | 'bold' | 'error' | 'warning' | 'success' | 'muted';
22
+ indent?: number;
23
+ }
24
+ /**
25
+ * Format CI check results as text lines.
26
+ * Returns structured lines that can be styled by the CLI.
27
+ */
28
+ declare function formatAsTextLines(result: CICheckResult, options?: TextFormatOptions): TextLine[];
29
+ /**
30
+ * Format CI check results as plain text string.
31
+ */
32
+ declare function formatAsText(result: CICheckResult, options?: TextFormatOptions): string;
33
+ //#endregion
34
+ export { TextFormatOptions, TextLine, formatAsText, formatAsTextLines };
35
+ //# sourceMappingURL=text.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.d.mts","names":[],"sources":["../../src/formatters/text.ts"],"sourcesContent":[],"mappings":";;;;;;;AAqKgB,UArJC,iBAAA,CAsJP;;;;;;;;;;;UA1IO,QAAA;;;;;;;;;iBAUD,iBAAA,SACN,yBACC,oBACR;;;;iBA4Ha,YAAA,SACN,yBACC"}