@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,178 @@
1
+ import { getApiKey } from "../config.mjs";
2
+ import { buildComponentPrompt, buildEventSpecPrompt, buildFormPrompt, buildHandlerPrompt, buildOperationSpecPrompt, buildPresentationSpecPrompt, buildTestPrompt, getCodeGenSystemPrompt, getSystemPrompt } from "@contractspec/module.workspace";
3
+ import { generateObject, generateText, streamText } from "ai";
4
+ import { createProvider } from "@contractspec/lib.ai-providers";
5
+ import * as z$1 from "zod";
6
+
7
+ //#region src/services/create/ai-generator.ts
8
+ /**
9
+ * AI Generator Service
10
+ *
11
+ * Generates specs and code using AI models.
12
+ */
13
+ /**
14
+ * AI Generator Service
15
+ */
16
+ var AIGenerator = class {
17
+ constructor(config) {
18
+ this.config = config;
19
+ }
20
+ getModel() {
21
+ const providerName = this.config.aiProvider;
22
+ const apiKey = this.config.customApiKey || getApiKey(this.config.aiProvider);
23
+ return createProvider({
24
+ provider: providerName === "custom" ? "openai" : providerName,
25
+ model: this.config.aiModel,
26
+ apiKey,
27
+ baseUrl: this.config.customEndpoint || void 0
28
+ }).getModel();
29
+ }
30
+ /**
31
+ * Generate operation spec from natural language description
32
+ */
33
+ async generateOperationSpec(description, kind) {
34
+ return (await generateObject({
35
+ model: this.getModel(),
36
+ schema: z$1.object({
37
+ name: z$1.string().describe("Dot notation name like \"domain.operation\""),
38
+ version: z$1.number().int().positive().default(1),
39
+ description: z$1.string().describe("Clear, concise summary"),
40
+ goal: z$1.string().describe("Business purpose"),
41
+ context: z$1.string().describe("Background and constraints"),
42
+ stability: z$1.enum([
43
+ "experimental",
44
+ "beta",
45
+ "stable",
46
+ "deprecated"
47
+ ]).default("beta"),
48
+ owners: z$1.array(z$1.string()).describe("Team/person owners with @ prefix"),
49
+ tags: z$1.array(z$1.string()).describe("Categorization tags"),
50
+ auth: z$1.enum([
51
+ "anonymous",
52
+ "user",
53
+ "admin"
54
+ ]).describe("Required auth level"),
55
+ inputShape: z$1.string().describe("Description of input structure"),
56
+ outputShape: z$1.string().describe("Description of output structure"),
57
+ flags: z$1.array(z$1.string()).describe("Feature flags").default([]),
58
+ possibleEvents: z$1.array(z$1.string()).describe("Events this may emit").default([]),
59
+ analytics: z$1.array(z$1.string()).describe("Analytics events to track").default([])
60
+ }),
61
+ prompt: buildOperationSpecPrompt(description, kind),
62
+ system: getSystemPrompt()
63
+ })).object;
64
+ }
65
+ /**
66
+ * Generate event spec from description
67
+ */
68
+ async generateEventSpec(description) {
69
+ return (await generateObject({
70
+ model: this.getModel(),
71
+ schema: z$1.object({
72
+ name: z$1.string().describe("Dot notation name like \"domain.event_name\""),
73
+ version: z$1.number().int().positive().default(1),
74
+ description: z$1.string().describe("When this event is emitted"),
75
+ stability: z$1.enum([
76
+ "experimental",
77
+ "beta",
78
+ "stable",
79
+ "deprecated"
80
+ ]).default("beta"),
81
+ owners: z$1.array(z$1.string()).default([]),
82
+ tags: z$1.array(z$1.string()).default([]),
83
+ payloadShape: z$1.string().describe("Description of event payload"),
84
+ piiFields: z$1.array(z$1.string()).describe("PII field paths").default([])
85
+ }),
86
+ prompt: buildEventSpecPrompt(description),
87
+ system: getSystemPrompt()
88
+ })).object;
89
+ }
90
+ /**
91
+ * Generate presentation spec from description
92
+ */
93
+ async generatePresentationSpec(description, kind) {
94
+ return (await generateObject({
95
+ model: this.getModel(),
96
+ schema: z$1.object({
97
+ name: z$1.string(),
98
+ version: z$1.number().int().positive().default(1),
99
+ description: z$1.string(),
100
+ stability: z$1.enum([
101
+ "experimental",
102
+ "beta",
103
+ "stable",
104
+ "deprecated"
105
+ ]).default("beta"),
106
+ owners: z$1.array(z$1.string()).default([]),
107
+ tags: z$1.array(z$1.string()).default([]),
108
+ componentKey: z$1.string().optional(),
109
+ propsShape: z$1.string().optional(),
110
+ content: z$1.string().optional(),
111
+ mimeType: z$1.string().optional(),
112
+ dataShape: z$1.string().optional()
113
+ }),
114
+ prompt: buildPresentationSpecPrompt(description, kind),
115
+ system: getSystemPrompt()
116
+ })).object;
117
+ }
118
+ /**
119
+ * Generate handler implementation from spec
120
+ */
121
+ async generateHandler(specCode) {
122
+ return (await generateText({
123
+ model: this.getModel(),
124
+ prompt: buildHandlerPrompt(specCode),
125
+ system: getCodeGenSystemPrompt()
126
+ })).text;
127
+ }
128
+ /**
129
+ * Generate React component from presentation spec
130
+ */
131
+ async generateComponent(specCode) {
132
+ return (await generateText({
133
+ model: this.getModel(),
134
+ prompt: buildComponentPrompt(specCode),
135
+ system: getCodeGenSystemPrompt()
136
+ })).text;
137
+ }
138
+ /**
139
+ * Generate form component from form spec
140
+ */
141
+ async generateForm(specCode) {
142
+ return (await generateText({
143
+ model: this.getModel(),
144
+ prompt: buildFormPrompt(specCode),
145
+ system: getCodeGenSystemPrompt()
146
+ })).text;
147
+ }
148
+ /**
149
+ * Generate tests for implementation
150
+ */
151
+ async generateTests(specCode, implementationCode, testType) {
152
+ return (await generateText({
153
+ model: this.getModel(),
154
+ prompt: buildTestPrompt(specCode, implementationCode, testType),
155
+ system: getCodeGenSystemPrompt()
156
+ })).text;
157
+ }
158
+ /**
159
+ * Stream code generation for better UX
160
+ */
161
+ async streamCodeGeneration(prompt, onChunk) {
162
+ const result = await streamText({
163
+ model: this.getModel(),
164
+ prompt,
165
+ system: getCodeGenSystemPrompt()
166
+ });
167
+ let fullText = "";
168
+ for await (const chunk of result.textStream) {
169
+ fullText += chunk;
170
+ onChunk(chunk);
171
+ }
172
+ return fullText;
173
+ }
174
+ };
175
+
176
+ //#endregion
177
+ export { AIGenerator };
178
+ //# sourceMappingURL=ai-generator.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-generator.mjs","names":["z"],"sources":["../../../src/services/create/ai-generator.ts"],"sourcesContent":["/**\n * AI Generator Service\n *\n * Generates specs and code using AI models.\n */\n\nimport { generateObject, generateText, streamText } from 'ai';\nimport * as z from 'zod';\nimport {\n createProvider,\n type ProviderConfig,\n type ProviderName,\n} from '@contractspec/lib.ai-providers';\nimport {\n type WorkspaceConfig,\n type PresentationKind,\n} from '@contractspec/module.workspace';\nimport type { OpKind } from '@contractspec/lib.contracts';\nimport {\n buildOperationSpecPrompt,\n buildEventSpecPrompt,\n buildPresentationSpecPrompt,\n getSystemPrompt,\n buildHandlerPrompt,\n buildComponentPrompt,\n buildFormPrompt,\n buildTestPrompt,\n getCodeGenSystemPrompt,\n} from '@contractspec/module.workspace';\nimport { getApiKey } from '../config';\n\n/**\n * AI Generator Service\n */\nexport class AIGenerator {\n constructor(private config: WorkspaceConfig) {}\n\n private getModel() {\n const providerName = this.config.aiProvider as ProviderName;\n const apiKey =\n this.config.customApiKey || getApiKey(this.config.aiProvider);\n\n // Map WorkspaceConfig to ProviderConfig\n const providerConfig: ProviderConfig = {\n provider: (providerName as string) === 'custom' ? 'openai' : providerName, // Fallback custom to openai compatible\n\n model: this.config.aiModel,\n apiKey: apiKey,\n baseUrl: this.config.customEndpoint || undefined,\n };\n\n const provider = createProvider(providerConfig);\n return provider.getModel();\n }\n\n /**\n * Generate operation spec from natural language description\n */\n async generateOperationSpec(description: string, kind: OpKind) {\n const model = this.getModel();\n\n const schema = z.object({\n name: z.string().describe('Dot notation name like \"domain.operation\"'),\n version: z.number().int().positive().default(1),\n description: z.string().describe('Clear, concise summary'),\n goal: z.string().describe('Business purpose'),\n context: z.string().describe('Background and constraints'),\n stability: z\n .enum(['experimental', 'beta', 'stable', 'deprecated'])\n .default('beta'),\n owners: z.array(z.string()).describe('Team/person owners with @ prefix'),\n tags: z.array(z.string()).describe('Categorization tags'),\n auth: z\n .enum(['anonymous', 'user', 'admin'])\n .describe('Required auth level'),\n inputShape: z.string().describe('Description of input structure'),\n outputShape: z.string().describe('Description of output structure'),\n flags: z.array(z.string()).describe('Feature flags').default([]),\n possibleEvents: z\n .array(z.string())\n .describe('Events this may emit')\n .default([]),\n analytics: z\n .array(z.string())\n .describe('Analytics events to track')\n .default([]),\n });\n\n const prompt = buildOperationSpecPrompt(description, kind);\n\n const result = await generateObject({\n model,\n schema,\n prompt,\n system: getSystemPrompt(),\n });\n\n return result.object;\n }\n\n /**\n * Generate event spec from description\n */\n async generateEventSpec(description: string) {\n const model = this.getModel();\n\n const schema = z.object({\n name: z.string().describe('Dot notation name like \"domain.event_name\"'),\n version: z.number().int().positive().default(1),\n description: z.string().describe('When this event is emitted'),\n stability: z\n .enum(['experimental', 'beta', 'stable', 'deprecated'])\n .default('beta'),\n owners: z.array(z.string()).default([]),\n tags: z.array(z.string()).default([]),\n payloadShape: z.string().describe('Description of event payload'),\n piiFields: z.array(z.string()).describe('PII field paths').default([]),\n });\n\n const prompt = buildEventSpecPrompt(description);\n\n const result = await generateObject({\n model,\n schema,\n prompt,\n system: getSystemPrompt(),\n });\n\n return result.object;\n }\n\n /**\n * Generate presentation spec from description\n */\n async generatePresentationSpec(description: string, kind: PresentationKind) {\n const model = this.getModel();\n\n const schema = z.object({\n name: z.string(),\n version: z.number().int().positive().default(1),\n description: z.string(),\n stability: z\n .enum(['experimental', 'beta', 'stable', 'deprecated'])\n .default('beta'),\n owners: z.array(z.string()).default([]),\n tags: z.array(z.string()).default([]),\n componentKey: z.string().optional(),\n propsShape: z.string().optional(),\n content: z.string().optional(),\n mimeType: z.string().optional(),\n dataShape: z.string().optional(),\n });\n\n const prompt = buildPresentationSpecPrompt(description, kind);\n\n const result = await generateObject({\n model,\n schema,\n prompt,\n system: getSystemPrompt(),\n });\n\n return result.object;\n }\n\n /**\n * Generate handler implementation from spec\n */\n async generateHandler(specCode: string): Promise<string> {\n const model = this.getModel();\n\n const result = await generateText({\n model,\n prompt: buildHandlerPrompt(specCode),\n system: getCodeGenSystemPrompt(),\n });\n\n return result.text;\n }\n\n /**\n * Generate React component from presentation spec\n */\n async generateComponent(specCode: string): Promise<string> {\n const model = this.getModel();\n\n const result = await generateText({\n model,\n prompt: buildComponentPrompt(specCode),\n system: getCodeGenSystemPrompt(),\n });\n\n return result.text;\n }\n\n /**\n * Generate form component from form spec\n */\n async generateForm(specCode: string): Promise<string> {\n const model = this.getModel();\n\n const result = await generateText({\n model,\n prompt: buildFormPrompt(specCode),\n system: getCodeGenSystemPrompt(),\n });\n\n return result.text;\n }\n\n /**\n * Generate tests for implementation\n */\n async generateTests(\n specCode: string,\n implementationCode: string,\n testType: 'handler' | 'component'\n ): Promise<string> {\n const model = this.getModel();\n\n const result = await generateText({\n model,\n prompt: buildTestPrompt(specCode, implementationCode, testType),\n system: getCodeGenSystemPrompt(),\n });\n\n return result.text;\n }\n\n /**\n * Stream code generation for better UX\n */\n async streamCodeGeneration(\n prompt: string,\n onChunk: (text: string) => void\n ): Promise<string> {\n const model = this.getModel();\n\n const result = await streamText({\n model,\n prompt,\n system: getCodeGenSystemPrompt(),\n });\n\n let fullText = '';\n\n for await (const chunk of result.textStream) {\n fullText += chunk;\n onChunk(chunk);\n }\n\n return fullText;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AAkCA,IAAa,cAAb,MAAyB;CACvB,YAAY,AAAQ,QAAyB;EAAzB;;CAEpB,AAAQ,WAAW;EACjB,MAAM,eAAe,KAAK,OAAO;EACjC,MAAM,SACJ,KAAK,OAAO,gBAAgB,UAAU,KAAK,OAAO,WAAW;AAY/D,SADiB,eARsB;GACrC,UAAW,iBAA4B,WAAW,WAAW;GAE7D,OAAO,KAAK,OAAO;GACX;GACR,SAAS,KAAK,OAAO,kBAAkB;GACxC,CAE8C,CAC/B,UAAU;;;;;CAM5B,MAAM,sBAAsB,aAAqB,MAAc;AAuC7D,UAPe,MAAM,eAAe;GAClC,OAhCY,KAAK,UAAU;GAiC3B,QA/BaA,IAAE,OAAO;IACtB,MAAMA,IAAE,QAAQ,CAAC,SAAS,8CAA4C;IACtE,SAASA,IAAE,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE;IAC/C,aAAaA,IAAE,QAAQ,CAAC,SAAS,yBAAyB;IAC1D,MAAMA,IAAE,QAAQ,CAAC,SAAS,mBAAmB;IAC7C,SAASA,IAAE,QAAQ,CAAC,SAAS,6BAA6B;IAC1D,WAAWA,IACR,KAAK;KAAC;KAAgB;KAAQ;KAAU;KAAa,CAAC,CACtD,QAAQ,OAAO;IAClB,QAAQA,IAAE,MAAMA,IAAE,QAAQ,CAAC,CAAC,SAAS,mCAAmC;IACxE,MAAMA,IAAE,MAAMA,IAAE,QAAQ,CAAC,CAAC,SAAS,sBAAsB;IACzD,MAAMA,IACH,KAAK;KAAC;KAAa;KAAQ;KAAQ,CAAC,CACpC,SAAS,sBAAsB;IAClC,YAAYA,IAAE,QAAQ,CAAC,SAAS,iCAAiC;IACjE,aAAaA,IAAE,QAAQ,CAAC,SAAS,kCAAkC;IACnE,OAAOA,IAAE,MAAMA,IAAE,QAAQ,CAAC,CAAC,SAAS,gBAAgB,CAAC,QAAQ,EAAE,CAAC;IAChE,gBAAgBA,IACb,MAAMA,IAAE,QAAQ,CAAC,CACjB,SAAS,uBAAuB,CAChC,QAAQ,EAAE,CAAC;IACd,WAAWA,IACR,MAAMA,IAAE,QAAQ,CAAC,CACjB,SAAS,4BAA4B,CACrC,QAAQ,EAAE,CAAC;IACf,CAAC;GAOA,QALa,yBAAyB,aAAa,KAAK;GAMxD,QAAQ,iBAAiB;GAC1B,CAAC,EAEY;;;;;CAMhB,MAAM,kBAAkB,aAAqB;AAyB3C,UAPe,MAAM,eAAe;GAClC,OAlBY,KAAK,UAAU;GAmB3B,QAjBaA,IAAE,OAAO;IACtB,MAAMA,IAAE,QAAQ,CAAC,SAAS,+CAA6C;IACvE,SAASA,IAAE,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE;IAC/C,aAAaA,IAAE,QAAQ,CAAC,SAAS,6BAA6B;IAC9D,WAAWA,IACR,KAAK;KAAC;KAAgB;KAAQ;KAAU;KAAa,CAAC,CACtD,QAAQ,OAAO;IAClB,QAAQA,IAAE,MAAMA,IAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;IACvC,MAAMA,IAAE,MAAMA,IAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;IACrC,cAAcA,IAAE,QAAQ,CAAC,SAAS,+BAA+B;IACjE,WAAWA,IAAE,MAAMA,IAAE,QAAQ,CAAC,CAAC,SAAS,kBAAkB,CAAC,QAAQ,EAAE,CAAC;IACvE,CAAC;GAOA,QALa,qBAAqB,YAAY;GAM9C,QAAQ,iBAAiB;GAC1B,CAAC,EAEY;;;;;CAMhB,MAAM,yBAAyB,aAAqB,MAAwB;AA4B1E,UAPe,MAAM,eAAe;GAClC,OArBY,KAAK,UAAU;GAsB3B,QApBaA,IAAE,OAAO;IACtB,MAAMA,IAAE,QAAQ;IAChB,SAASA,IAAE,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE;IAC/C,aAAaA,IAAE,QAAQ;IACvB,WAAWA,IACR,KAAK;KAAC;KAAgB;KAAQ;KAAU;KAAa,CAAC,CACtD,QAAQ,OAAO;IAClB,QAAQA,IAAE,MAAMA,IAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;IACvC,MAAMA,IAAE,MAAMA,IAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;IACrC,cAAcA,IAAE,QAAQ,CAAC,UAAU;IACnC,YAAYA,IAAE,QAAQ,CAAC,UAAU;IACjC,SAASA,IAAE,QAAQ,CAAC,UAAU;IAC9B,UAAUA,IAAE,QAAQ,CAAC,UAAU;IAC/B,WAAWA,IAAE,QAAQ,CAAC,UAAU;IACjC,CAAC;GAOA,QALa,4BAA4B,aAAa,KAAK;GAM3D,QAAQ,iBAAiB;GAC1B,CAAC,EAEY;;;;;CAMhB,MAAM,gBAAgB,UAAmC;AASvD,UANe,MAAM,aAAa;GAChC,OAHY,KAAK,UAAU;GAI3B,QAAQ,mBAAmB,SAAS;GACpC,QAAQ,wBAAwB;GACjC,CAAC,EAEY;;;;;CAMhB,MAAM,kBAAkB,UAAmC;AASzD,UANe,MAAM,aAAa;GAChC,OAHY,KAAK,UAAU;GAI3B,QAAQ,qBAAqB,SAAS;GACtC,QAAQ,wBAAwB;GACjC,CAAC,EAEY;;;;;CAMhB,MAAM,aAAa,UAAmC;AASpD,UANe,MAAM,aAAa;GAChC,OAHY,KAAK,UAAU;GAI3B,QAAQ,gBAAgB,SAAS;GACjC,QAAQ,wBAAwB;GACjC,CAAC,EAEY;;;;;CAMhB,MAAM,cACJ,UACA,oBACA,UACiB;AASjB,UANe,MAAM,aAAa;GAChC,OAHY,KAAK,UAAU;GAI3B,QAAQ,gBAAgB,UAAU,oBAAoB,SAAS;GAC/D,QAAQ,wBAAwB;GACjC,CAAC,EAEY;;;;;CAMhB,MAAM,qBACJ,QACA,SACiB;EAGjB,MAAM,SAAS,MAAM,WAAW;GAC9B,OAHY,KAAK,UAAU;GAI3B;GACA,QAAQ,wBAAwB;GACjC,CAAC;EAEF,IAAI,WAAW;AAEf,aAAW,MAAM,SAAS,OAAO,YAAY;AAC3C,eAAY;AACZ,WAAQ,MAAM;;AAGhB,SAAO"}
@@ -0,0 +1,28 @@
1
+ import { AIGenerator } from "./ai-generator.mjs";
2
+ import { generateOperationSpec } from "../../templates/operation.template.mjs";
3
+ import { generateEventSpec } from "../../templates/event.template.mjs";
4
+ import { generatePresentationSpec } from "../../templates/presentation.template.mjs";
5
+ import { generateWorkflowSpec } from "../../templates/workflow.template.mjs";
6
+ import { generateMigrationSpec } from "../../templates/migration.template.mjs";
7
+ import { generateTelemetrySpec } from "../../templates/telemetry.template.mjs";
8
+ import { generateExperimentSpec } from "../../templates/experiment.template.mjs";
9
+ import { generateAppBlueprintSpec } from "../../templates/app-config.template.mjs";
10
+ import { generateDataViewSpec } from "../../templates/data-view.template.mjs";
11
+ import { generateIntegrationSpec } from "../../templates/integration.template.mjs";
12
+ import { generateKnowledgeSpaceSpec } from "../../templates/knowledge.template.mjs";
13
+ import { generateComponentTemplate as generateComponentTemplate$1, generateHandlerTemplate as generateHandlerTemplate$1, generateTestTemplate as generateTestTemplate$1 } from "../../templates/handler.template.mjs";
14
+ import { generateWorkflowRunnerTemplate } from "../../templates/workflow-runner.template.mjs";
15
+ import { FeatureSpecParams, generateFeatureSpec } from "../../templates/feature.template.mjs";
16
+ import { templates_d_exports } from "./templates.mjs";
17
+ import { WorkspaceConfig } from "@contractspec/module.workspace";
18
+
19
+ //#region src/services/create/index.d.ts
20
+ declare class SpecCreatorService {
21
+ readonly ai: AIGenerator;
22
+ readonly templates: typeof templates_d_exports;
23
+ constructor(config: WorkspaceConfig);
24
+ }
25
+ declare function createSpecCreator(config: WorkspaceConfig): SpecCreatorService;
26
+ //#endregion
27
+ export { SpecCreatorService, createSpecCreator };
28
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../src/services/create/index.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;;;;;;cAUa,kBAAA;eACS;6BACK;sBAEL;;iBAQN,iBAAA,SAA0B,kBAAkB"}
@@ -0,0 +1,37 @@
1
+ import { AIGenerator } from "./ai-generator.mjs";
2
+ import { generateOperationSpec } from "../../templates/operation.template.mjs";
3
+ import { generateEventSpec } from "../../templates/event.template.mjs";
4
+ import { generatePresentationSpec } from "../../templates/presentation.template.mjs";
5
+ import { generateWorkflowSpec } from "../../templates/workflow.template.mjs";
6
+ import { generateMigrationSpec } from "../../templates/migration.template.mjs";
7
+ import { generateTelemetrySpec } from "../../templates/telemetry.template.mjs";
8
+ import { generateExperimentSpec } from "../../templates/experiment.template.mjs";
9
+ import { generateAppBlueprintSpec } from "../../templates/app-config.template.mjs";
10
+ import { generateDataViewSpec } from "../../templates/data-view.template.mjs";
11
+ import { generateIntegrationSpec } from "../../templates/integration.template.mjs";
12
+ import { generateKnowledgeSpaceSpec } from "../../templates/knowledge.template.mjs";
13
+ import { generateComponentTemplate, generateHandlerTemplate, generateTestTemplate } from "../../templates/handler.template.mjs";
14
+ import { generateWorkflowRunnerTemplate } from "../../templates/workflow-runner.template.mjs";
15
+ import { generateFeatureSpec } from "../../templates/feature.template.mjs";
16
+ import { templates_exports } from "./templates.mjs";
17
+
18
+ //#region src/services/create/index.ts
19
+ /**
20
+ * Spec Creation Service
21
+ *
22
+ * Unifies manual and AI-assisted spec creation.
23
+ */
24
+ var SpecCreatorService = class {
25
+ ai;
26
+ templates = templates_exports;
27
+ constructor(config) {
28
+ this.ai = new AIGenerator(config);
29
+ }
30
+ };
31
+ function createSpecCreator(config) {
32
+ return new SpecCreatorService(config);
33
+ }
34
+
35
+ //#endregion
36
+ export { SpecCreatorService, createSpecCreator };
37
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":["templates"],"sources":["../../../src/services/create/index.ts"],"sourcesContent":["/**\n * Spec Creation Service\n *\n * Unifies manual and AI-assisted spec creation.\n */\n\nimport { AIGenerator } from './ai-generator';\nimport * as templates from './templates';\nimport type { WorkspaceConfig } from '@contractspec/module.workspace';\n\nexport class SpecCreatorService {\n public readonly ai: AIGenerator;\n public readonly templates = templates;\n\n constructor(config: WorkspaceConfig) {\n this.ai = new AIGenerator(config);\n }\n}\n\nexport * from './ai-generator';\nexport * from './templates';\n\nexport function createSpecCreator(config: WorkspaceConfig): SpecCreatorService {\n return new SpecCreatorService(config);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAUA,IAAa,qBAAb,MAAgC;CAC9B,AAAgB;CAChB,AAAgB,YAAYA;CAE5B,YAAY,QAAyB;AACnC,OAAK,KAAK,IAAI,YAAY,OAAO;;;AAOrC,SAAgB,kBAAkB,QAA6C;AAC7E,QAAO,IAAI,mBAAmB,OAAO"}
@@ -0,0 +1,22 @@
1
+ import { generateOperationSpec } from "../../templates/operation.template.mjs";
2
+ import { generateEventSpec } from "../../templates/event.template.mjs";
3
+ import { generatePresentationSpec } from "../../templates/presentation.template.mjs";
4
+ import { generateWorkflowSpec } from "../../templates/workflow.template.mjs";
5
+ import { generateMigrationSpec } from "../../templates/migration.template.mjs";
6
+ import { generateTelemetrySpec } from "../../templates/telemetry.template.mjs";
7
+ import { generateExperimentSpec } from "../../templates/experiment.template.mjs";
8
+ import { generateAppBlueprintSpec } from "../../templates/app-config.template.mjs";
9
+ import { generateDataViewSpec } from "../../templates/data-view.template.mjs";
10
+ import { generateIntegrationSpec } from "../../templates/integration.template.mjs";
11
+ import { generateKnowledgeSpaceSpec } from "../../templates/knowledge.template.mjs";
12
+ import { generateComponentTemplate, generateHandlerTemplate, generateTestTemplate } from "../../templates/handler.template.mjs";
13
+ import { generateWorkflowRunnerTemplate } from "../../templates/workflow-runner.template.mjs";
14
+ import { FeatureSpecParams, generateFeatureSpec } from "../../templates/feature.template.mjs";
15
+
16
+ //#region src/services/create/templates.d.ts
17
+ declare namespace templates_d_exports {
18
+ export { FeatureSpecParams, generateAppBlueprintSpec, generateComponentTemplate, generateDataViewSpec, generateEventSpec, generateExperimentSpec, generateFeatureSpec, generateHandlerTemplate, generateIntegrationSpec, generateKnowledgeSpaceSpec, generateMigrationSpec, generateOperationSpec, generatePresentationSpec, generateTelemetrySpec, generateTestTemplate, generateWorkflowRunnerTemplate, generateWorkflowSpec };
19
+ }
20
+ //#endregion
21
+ export { templates_d_exports };
22
+ //# sourceMappingURL=templates.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.d.mts","names":[],"sources":["../../../src/services/create/templates.ts"],"sourcesContent":[],"mappings":""}
@@ -0,0 +1,39 @@
1
+ import { __exportAll } from "../../_virtual/rolldown_runtime.mjs";
2
+ import { generateOperationSpec } from "../../templates/operation.template.mjs";
3
+ import { generateEventSpec } from "../../templates/event.template.mjs";
4
+ import { generatePresentationSpec } from "../../templates/presentation.template.mjs";
5
+ import { generateWorkflowSpec } from "../../templates/workflow.template.mjs";
6
+ import { generateMigrationSpec } from "../../templates/migration.template.mjs";
7
+ import { generateTelemetrySpec } from "../../templates/telemetry.template.mjs";
8
+ import { generateExperimentSpec } from "../../templates/experiment.template.mjs";
9
+ import { generateAppBlueprintSpec } from "../../templates/app-config.template.mjs";
10
+ import { generateDataViewSpec } from "../../templates/data-view.template.mjs";
11
+ import { generateIntegrationSpec } from "../../templates/integration.template.mjs";
12
+ import { generateKnowledgeSpaceSpec } from "../../templates/knowledge.template.mjs";
13
+ import { generateComponentTemplate, generateHandlerTemplate, generateTestTemplate } from "../../templates/handler.template.mjs";
14
+ import { generateWorkflowRunnerTemplate } from "../../templates/workflow-runner.template.mjs";
15
+ import { generateFeatureSpec } from "../../templates/feature.template.mjs";
16
+
17
+ //#region src/services/create/templates.ts
18
+ var templates_exports = /* @__PURE__ */ __exportAll({
19
+ generateAppBlueprintSpec: () => generateAppBlueprintSpec,
20
+ generateComponentTemplate: () => generateComponentTemplate,
21
+ generateDataViewSpec: () => generateDataViewSpec,
22
+ generateEventSpec: () => generateEventSpec,
23
+ generateExperimentSpec: () => generateExperimentSpec,
24
+ generateFeatureSpec: () => generateFeatureSpec,
25
+ generateHandlerTemplate: () => generateHandlerTemplate,
26
+ generateIntegrationSpec: () => generateIntegrationSpec,
27
+ generateKnowledgeSpaceSpec: () => generateKnowledgeSpaceSpec,
28
+ generateMigrationSpec: () => generateMigrationSpec,
29
+ generateOperationSpec: () => generateOperationSpec,
30
+ generatePresentationSpec: () => generatePresentationSpec,
31
+ generateTelemetrySpec: () => generateTelemetrySpec,
32
+ generateTestTemplate: () => generateTestTemplate,
33
+ generateWorkflowRunnerTemplate: () => generateWorkflowRunnerTemplate,
34
+ generateWorkflowSpec: () => generateWorkflowSpec
35
+ });
36
+
37
+ //#endregion
38
+ export { templates_exports };
39
+ //# sourceMappingURL=templates.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.mjs","names":[],"sources":["../../../src/services/create/templates.ts"],"sourcesContent":["/**\n * Template Service\n *\n * Provides various spec templates.\n */\n\n// Re-export templates from the templates directory in bundle\n// Currently they are just exported functions\nexport * from '../../templates';\n"],"mappings":""}
@@ -0,0 +1,53 @@
1
+ import { FsAdapter } from "../ports/fs.mjs";
2
+ import { ContractGraph, ContractNode } from "@contractspec/module.workspace";
3
+
4
+ //#region src/services/deps.d.ts
5
+
6
+ /**
7
+ * Options for dependency analysis.
8
+ */
9
+ interface AnalyzeDepsOptions {
10
+ /**
11
+ * File pattern to search.
12
+ */
13
+ pattern?: string;
14
+ }
15
+ /**
16
+ * Result of dependency analysis.
17
+ */
18
+ interface AnalyzeDepsResult {
19
+ graph: ContractGraph;
20
+ total: number;
21
+ cycles: string[][];
22
+ missing: {
23
+ contract: string;
24
+ missing: string[];
25
+ }[];
26
+ }
27
+ /**
28
+ * Analyze contract dependencies.
29
+ */
30
+ declare function analyzeDeps(adapters: {
31
+ fs: FsAdapter;
32
+ }, options?: AnalyzeDepsOptions): Promise<AnalyzeDepsResult>;
33
+ /**
34
+ * Get contract node by name.
35
+ */
36
+ declare function getContractNode(graph: ContractGraph, name: string): ContractNode | undefined;
37
+ /**
38
+ * Export graph as DOT format.
39
+ */
40
+ declare function exportGraphAsDot(graph: ContractGraph): string;
41
+ /**
42
+ * Get graph statistics.
43
+ */
44
+ declare function getGraphStats(graph: ContractGraph): {
45
+ total: number;
46
+ withDeps: number;
47
+ withoutDeps: number;
48
+ used: number;
49
+ unused: number;
50
+ };
51
+ //#endregion
52
+ export { AnalyzeDepsOptions, AnalyzeDepsResult, analyzeDeps, exportGraphAsDot, getContractNode, getGraphStats };
53
+ //# sourceMappingURL=deps.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deps.d.mts","names":[],"sources":["../../src/services/deps.ts"],"sourcesContent":[],"mappings":";;;;;AA8BA;AAUA;;AAEW,UAtBM,kBAAA,CAsBN;EACA;;;EA4CK,OAAA,CAAA,EAAA,MAAA;AAUhB;AAOA;;;UA1EiB,iBAAA;SACR;;;;;;;;;;;iBASa,WAAA;MACJ;aACP,qBACR,QAAQ;;;;iBA4CK,eAAA,QACP,8BAEN;;;;iBAOa,gBAAA,QAAwB;;;;iBAOxB,aAAA,QAAqB"}
@@ -0,0 +1,62 @@
1
+ import { addContractNode, buildReverseEdges, createContractGraph, detectCycles, findMissingDependencies, parseImportedSpecNames, toDot } from "@contractspec/module.workspace";
2
+
3
+ //#region src/services/deps.ts
4
+ /**
5
+ * Dependency analysis service.
6
+ */
7
+ /**
8
+ * Analyze contract dependencies.
9
+ */
10
+ async function analyzeDeps(adapters, options = {}) {
11
+ const { fs } = adapters;
12
+ const files = await fs.glob({ pattern: options.pattern });
13
+ const graph = createContractGraph();
14
+ for (const file of files) {
15
+ const content = await fs.readFile(file);
16
+ const relativePath = fs.relative(".", file);
17
+ const nameMatch = content.match(/name:\s*['"]([^'"]+)['"]/);
18
+ addContractNode(graph, (nameMatch?.[1] ? nameMatch[1] : fs.basename(file).replace(/\.[jt]s$/, "").replace(/\.(contracts|contract|operation|operations|event|presentation|workflow|data-view|migration|telemetry|experiment|app-config|integration|knowledge)$/, "")) || "unknown", relativePath, parseImportedSpecNames(content, file));
19
+ }
20
+ buildReverseEdges(graph);
21
+ const cycles = detectCycles(graph);
22
+ const missing = findMissingDependencies(graph);
23
+ return {
24
+ graph,
25
+ total: graph.size,
26
+ cycles,
27
+ missing
28
+ };
29
+ }
30
+ /**
31
+ * Get contract node by name.
32
+ */
33
+ function getContractNode(graph, name) {
34
+ return graph.get(name);
35
+ }
36
+ /**
37
+ * Export graph as DOT format.
38
+ */
39
+ function exportGraphAsDot(graph) {
40
+ return toDot(graph);
41
+ }
42
+ /**
43
+ * Get graph statistics.
44
+ */
45
+ function getGraphStats(graph) {
46
+ const all = Array.from(graph.values());
47
+ const withDeps = all.filter((c) => c.dependencies.length > 0);
48
+ const withoutDeps = all.filter((c) => c.dependencies.length === 0);
49
+ const used = all.filter((c) => c.dependents.length > 0);
50
+ const unused = all.filter((c) => c.dependents.length === 0);
51
+ return {
52
+ total: graph.size,
53
+ withDeps: withDeps.length,
54
+ withoutDeps: withoutDeps.length,
55
+ used: used.length,
56
+ unused: unused.length
57
+ };
58
+ }
59
+
60
+ //#endregion
61
+ export { analyzeDeps, exportGraphAsDot, getContractNode, getGraphStats };
62
+ //# sourceMappingURL=deps.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deps.mjs","names":[],"sources":["../../src/services/deps.ts"],"sourcesContent":["/**\n * Dependency analysis service.\n */\n\nimport {\n addContractNode,\n buildReverseEdges,\n type ContractGraph,\n type ContractNode,\n createContractGraph,\n detectCycles,\n findMissingDependencies,\n parseImportedSpecNames,\n toDot,\n} from '@contractspec/module.workspace';\nimport type { FsAdapter } from '../ports/fs';\n\n/**\n * Options for dependency analysis.\n */\nexport interface AnalyzeDepsOptions {\n /**\n * File pattern to search.\n */\n pattern?: string;\n}\n\n/**\n * Result of dependency analysis.\n */\nexport interface AnalyzeDepsResult {\n graph: ContractGraph;\n total: number;\n cycles: string[][];\n missing: { contract: string; missing: string[] }[];\n}\n\n/**\n * Analyze contract dependencies.\n */\nexport async function analyzeDeps(\n adapters: { fs: FsAdapter },\n options: AnalyzeDepsOptions = {}\n): Promise<AnalyzeDepsResult> {\n const { fs } = adapters;\n\n const files = await fs.glob({ pattern: options.pattern });\n const graph = createContractGraph();\n\n for (const file of files) {\n const content = await fs.readFile(file);\n const relativePath = fs.relative('.', file);\n\n // Prefer explicit meta.name if present; otherwise fall back to filename stem\n const nameMatch = content.match(/name:\\s*['\"]([^'\"]+)['\"]/);\n const inferredName = nameMatch?.[1]\n ? nameMatch[1]\n : fs\n .basename(file)\n .replace(/\\.[jt]s$/, '')\n .replace(\n /\\.(contracts|contract|operation|operations|event|presentation|workflow|data-view|migration|telemetry|experiment|app-config|integration|knowledge)$/,\n ''\n );\n\n const finalName = inferredName || 'unknown';\n const dependencies = parseImportedSpecNames(content, file);\n\n addContractNode(graph, finalName, relativePath, dependencies);\n }\n\n buildReverseEdges(graph);\n\n const cycles = detectCycles(graph);\n const missing = findMissingDependencies(graph);\n\n return {\n graph,\n total: graph.size,\n cycles,\n missing,\n };\n}\n\n/**\n * Get contract node by name.\n */\nexport function getContractNode(\n graph: ContractGraph,\n name: string\n): ContractNode | undefined {\n return graph.get(name);\n}\n\n/**\n * Export graph as DOT format.\n */\nexport function exportGraphAsDot(graph: ContractGraph): string {\n return toDot(graph);\n}\n\n/**\n * Get graph statistics.\n */\nexport function getGraphStats(graph: ContractGraph): {\n total: number;\n withDeps: number;\n withoutDeps: number;\n used: number;\n unused: number;\n} {\n const all = Array.from(graph.values());\n const withDeps = all.filter((c) => c.dependencies.length > 0);\n const withoutDeps = all.filter((c) => c.dependencies.length === 0);\n const used = all.filter((c) => c.dependents.length > 0);\n const unused = all.filter((c) => c.dependents.length === 0);\n\n return {\n total: graph.size,\n withDeps: withDeps.length,\n withoutDeps: withoutDeps.length,\n used: used.length,\n unused: unused.length,\n };\n}\n"],"mappings":";;;;;;;;;AAwCA,eAAsB,YACpB,UACA,UAA8B,EAAE,EACJ;CAC5B,MAAM,EAAE,OAAO;CAEf,MAAM,QAAQ,MAAM,GAAG,KAAK,EAAE,SAAS,QAAQ,SAAS,CAAC;CACzD,MAAM,QAAQ,qBAAqB;AAEnC,MAAK,MAAM,QAAQ,OAAO;EACxB,MAAM,UAAU,MAAM,GAAG,SAAS,KAAK;EACvC,MAAM,eAAe,GAAG,SAAS,KAAK,KAAK;EAG3C,MAAM,YAAY,QAAQ,MAAM,2BAA2B;AAc3D,kBAAgB,QAbK,YAAY,KAC7B,UAAU,KACV,GACG,SAAS,KAAK,CACd,QAAQ,YAAY,GAAG,CACvB,QACC,sJACA,GACD,KAE2B,WAGA,cAFb,uBAAuB,SAAS,KAAK,CAEG;;AAG/D,mBAAkB,MAAM;CAExB,MAAM,SAAS,aAAa,MAAM;CAClC,MAAM,UAAU,wBAAwB,MAAM;AAE9C,QAAO;EACL;EACA,OAAO,MAAM;EACb;EACA;EACD;;;;;AAMH,SAAgB,gBACd,OACA,MAC0B;AAC1B,QAAO,MAAM,IAAI,KAAK;;;;;AAMxB,SAAgB,iBAAiB,OAA8B;AAC7D,QAAO,MAAM,MAAM;;;;;AAMrB,SAAgB,cAAc,OAM5B;CACA,MAAM,MAAM,MAAM,KAAK,MAAM,QAAQ,CAAC;CACtC,MAAM,WAAW,IAAI,QAAQ,MAAM,EAAE,aAAa,SAAS,EAAE;CAC7D,MAAM,cAAc,IAAI,QAAQ,MAAM,EAAE,aAAa,WAAW,EAAE;CAClE,MAAM,OAAO,IAAI,QAAQ,MAAM,EAAE,WAAW,SAAS,EAAE;CACvD,MAAM,SAAS,IAAI,QAAQ,MAAM,EAAE,WAAW,WAAW,EAAE;AAE3D,QAAO;EACL,OAAO,MAAM;EACb,UAAU,SAAS;EACnB,aAAa,YAAY;EACzB,MAAM,KAAK;EACX,QAAQ,OAAO;EAChB"}
@@ -0,0 +1,34 @@
1
+ import { FsAdapter } from "../ports/fs.mjs";
2
+ import { GitAdapter } from "../ports/git.mjs";
3
+ import { SemanticDiffItem, SemanticDiffOptions } from "@contractspec/module.workspace";
4
+
5
+ //#region src/services/diff.d.ts
6
+
7
+ /**
8
+ * Options for comparing specs.
9
+ */
10
+ interface CompareSpecsOptions extends SemanticDiffOptions {
11
+ /**
12
+ * Git ref to compare against (branch, tag, commit).
13
+ * If provided, spec2 is loaded from this ref instead of filesystem.
14
+ */
15
+ baseline?: string;
16
+ }
17
+ /**
18
+ * Result of spec comparison.
19
+ */
20
+ interface CompareSpecsResult {
21
+ spec1: string;
22
+ spec2: string;
23
+ differences: SemanticDiffItem[];
24
+ }
25
+ /**
26
+ * Compare two spec files semantically.
27
+ */
28
+ declare function compareSpecs(spec1Path: string, spec2Path: string, adapters: {
29
+ fs: FsAdapter;
30
+ git: GitAdapter;
31
+ }, options?: CompareSpecsOptions): Promise<CompareSpecsResult>;
32
+ //#endregion
33
+ export { CompareSpecsOptions, CompareSpecsResult, compareSpecs };
34
+ //# sourceMappingURL=diff.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.d.mts","names":[],"sources":["../../src/services/diff.ts"],"sourcesContent":[],"mappings":";;;;;;AA0BA;AASA;;AAGkC,UAvBjB,mBAAA,SAA4B,mBAuBX,CAAA;EACvB;;;;;;;;;UAbM,kBAAA;;;eAGF;;;;;iBAMO,YAAA;MAGJ;OAAgB;aACvB,sBACR,QAAQ"}
@@ -0,0 +1,34 @@
1
+ import { computeSemanticDiff } from "@contractspec/module.workspace";
2
+
3
+ //#region src/services/diff.ts
4
+ /**
5
+ * Diff service.
6
+ */
7
+ /**
8
+ * Compare two spec files semantically.
9
+ */
10
+ async function compareSpecs(spec1Path, spec2Path, adapters, options = {}) {
11
+ const { fs, git } = adapters;
12
+ if (!await fs.exists(spec1Path)) throw new Error(`Spec file not found: ${spec1Path}`);
13
+ const spec1Code = await fs.readFile(spec1Path);
14
+ let spec2Code;
15
+ let spec2Label;
16
+ if (options.baseline) {
17
+ spec2Code = await git.showFile(options.baseline, spec1Path);
18
+ spec2Label = `${options.baseline}:${spec1Path}`;
19
+ } else {
20
+ if (!await fs.exists(spec2Path)) throw new Error(`Spec file not found: ${spec2Path}`);
21
+ spec2Code = await fs.readFile(spec2Path);
22
+ spec2Label = spec2Path;
23
+ }
24
+ const differences = computeSemanticDiff(spec1Code, spec1Path, spec2Code, spec2Label, { breakingOnly: options.breakingOnly });
25
+ return {
26
+ spec1: spec1Path,
27
+ spec2: spec2Label,
28
+ differences
29
+ };
30
+ }
31
+
32
+ //#endregion
33
+ export { compareSpecs };
34
+ //# sourceMappingURL=diff.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.mjs","names":[],"sources":["../../src/services/diff.ts"],"sourcesContent":["/**\n * Diff service.\n */\n\nimport {\n computeSemanticDiff,\n type SemanticDiffItem,\n type SemanticDiffOptions,\n} from '@contractspec/module.workspace';\nimport type { FsAdapter } from '../ports/fs';\nimport type { GitAdapter } from '../ports/git';\n\n/**\n * Options for comparing specs.\n */\nexport interface CompareSpecsOptions extends SemanticDiffOptions {\n /**\n * Git ref to compare against (branch, tag, commit).\n * If provided, spec2 is loaded from this ref instead of filesystem.\n */\n baseline?: string;\n}\n\n/**\n * Result of spec comparison.\n */\nexport interface CompareSpecsResult {\n spec1: string;\n spec2: string;\n differences: SemanticDiffItem[];\n}\n\n/**\n * Compare two spec files semantically.\n */\nexport async function compareSpecs(\n spec1Path: string,\n spec2Path: string,\n adapters: { fs: FsAdapter; git: GitAdapter },\n options: CompareSpecsOptions = {}\n): Promise<CompareSpecsResult> {\n const { fs, git } = adapters;\n\n // Load first spec from filesystem\n const exists1 = await fs.exists(spec1Path);\n if (!exists1) {\n throw new Error(`Spec file not found: ${spec1Path}`);\n }\n const spec1Code = await fs.readFile(spec1Path);\n\n // Load second spec either from git baseline or filesystem\n let spec2Code: string;\n let spec2Label: string;\n\n if (options.baseline) {\n spec2Code = await git.showFile(options.baseline, spec1Path);\n spec2Label = `${options.baseline}:${spec1Path}`;\n } else {\n const exists2 = await fs.exists(spec2Path);\n if (!exists2) {\n throw new Error(`Spec file not found: ${spec2Path}`);\n }\n spec2Code = await fs.readFile(spec2Path);\n spec2Label = spec2Path;\n }\n\n // Compute semantic diff\n const differences = computeSemanticDiff(\n spec1Code,\n spec1Path,\n spec2Code,\n spec2Label,\n { breakingOnly: options.breakingOnly }\n );\n\n return {\n spec1: spec1Path,\n spec2: spec2Label,\n differences,\n };\n}\n"],"mappings":";;;;;;;;;AAmCA,eAAsB,aACpB,WACA,WACA,UACA,UAA+B,EAAE,EACJ;CAC7B,MAAM,EAAE,IAAI,QAAQ;AAIpB,KAAI,CADY,MAAM,GAAG,OAAO,UAAU,CAExC,OAAM,IAAI,MAAM,wBAAwB,YAAY;CAEtD,MAAM,YAAY,MAAM,GAAG,SAAS,UAAU;CAG9C,IAAI;CACJ,IAAI;AAEJ,KAAI,QAAQ,UAAU;AACpB,cAAY,MAAM,IAAI,SAAS,QAAQ,UAAU,UAAU;AAC3D,eAAa,GAAG,QAAQ,SAAS,GAAG;QAC/B;AAEL,MAAI,CADY,MAAM,GAAG,OAAO,UAAU,CAExC,OAAM,IAAI,MAAM,wBAAwB,YAAY;AAEtD,cAAY,MAAM,GAAG,SAAS,UAAU;AACxC,eAAa;;CAIf,MAAM,cAAc,oBAClB,WACA,WACA,WACA,YACA,EAAE,cAAc,QAAQ,cAAc,CACvC;AAED,QAAO;EACL,OAAO;EACP,OAAO;EACP;EACD"}
@@ -0,0 +1,20 @@
1
+ import { WorkspaceAdapters } from "../../ports/logger.mjs";
2
+ import { DocBlock } from "@contractspec/lib.contracts/docs";
3
+
4
+ //#region src/services/docs/docs-service.d.ts
5
+ interface DocsServiceOptions {
6
+ outputDir?: string;
7
+ format?: 'markdown' | 'html' | 'json';
8
+ rootPath?: string;
9
+ }
10
+ interface DocsServiceResult {
11
+ blocks: DocBlock[];
12
+ count: number;
13
+ }
14
+ /**
15
+ * Generate documentation from spec files.
16
+ */
17
+ declare function generateDocsFromSpecs(specFiles: string[], options: DocsServiceOptions, adapters: WorkspaceAdapters): Promise<DocsServiceResult>;
18
+ //#endregion
19
+ export { DocsServiceOptions, DocsServiceResult, generateDocsFromSpecs };
20
+ //# sourceMappingURL=docs-service.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs-service.d.mts","names":[],"sources":["../../../src/services/docs/docs-service.ts"],"sourcesContent":[],"mappings":";;;;UAeiB,kBAAA;;EAAA,MAAA,CAAA,EAAA,UAAA,GAAkB,MAAA,GAAA,MAAA;EAMlB,QAAA,CAAA,EAAA,MAAA;AAQjB;AAEW,UAVM,iBAAA,CAUN;EACC,MAAA,EAVF,QAUE,EAAA;EACD,KAAA,EAAA,MAAA;;;;;iBAJW,qBAAA,+BAEX,8BACC,oBACT,QAAQ"}
@@ -0,0 +1,59 @@
1
+ import { ModuleResolver } from "../modules/module-resolver.mjs";
2
+ import { convertSpecToDocBlock, loadSpecFromSource, scanAllSpecsFromSource, scanSpecSource } from "@contractspec/module.workspace";
3
+ import path from "path";
4
+ import { defaultDocRegistry } from "@contractspec/lib.contracts/docs";
5
+
6
+ //#region src/services/docs/docs-service.ts
7
+ /**
8
+ * Generate documentation from spec files.
9
+ */
10
+ async function generateDocsFromSpecs(specFiles, options, adapters) {
11
+ const { fs, logger } = adapters;
12
+ const blocks = [];
13
+ logger.info(`Generating docs for ${specFiles.length} files...`);
14
+ if (options.outputDir) await fs.mkdir(options.outputDir);
15
+ const resolver = new ModuleResolver(adapters);
16
+ const scanResults = [];
17
+ for (const file of specFiles) try {
18
+ const content = await fs.readFile(file);
19
+ const results = scanAllSpecsFromSource(content, file);
20
+ if (results.length > 0) scanResults.push(...results);
21
+ else {
22
+ const single = scanSpecSource(content, file);
23
+ if (single.specType !== "unknown") scanResults.push(single);
24
+ }
25
+ } catch (_err) {}
26
+ resolver.initialize(scanResults);
27
+ for (const file of specFiles) try {
28
+ const parsedList = await loadSpecFromSource(file);
29
+ if (parsedList && parsedList.length > 0) for (const parsed of parsedList) {
30
+ const block = convertSpecToDocBlock(parsed, { rootPath: options.rootPath });
31
+ defaultDocRegistry.register(block);
32
+ blocks.push(block);
33
+ logger.debug(`Generated doc for ${block.id}`);
34
+ if (options.outputDir) {
35
+ const moduleDef = resolver.resolve(file);
36
+ let targetDir = options.outputDir;
37
+ if (moduleDef) targetDir = path.join(options.outputDir, moduleDef.key);
38
+ else targetDir = path.join(options.outputDir, "_common");
39
+ await fs.mkdir(targetDir);
40
+ const filename = `${block.id}.md`;
41
+ const filePath = path.join(targetDir, filename);
42
+ const generatedContent = `<!-- @generated - This file was generated by ContractSpec. Do not edit manually. -->\n\n${block.body}`;
43
+ await fs.writeFile(filePath, generatedContent);
44
+ }
45
+ }
46
+ else logger.warn(`Could not parse spec from ${file}`);
47
+ } catch (error) {
48
+ logger.error(`Error processing ${file}: ${error instanceof Error ? error.message : String(error)}`);
49
+ }
50
+ if (options.outputDir) logger.info(`Wrote ${blocks.length} doc files to ${options.outputDir}`);
51
+ return {
52
+ blocks,
53
+ count: blocks.length
54
+ };
55
+ }
56
+
57
+ //#endregion
58
+ export { generateDocsFromSpecs };
59
+ //# sourceMappingURL=docs-service.mjs.map