@lssm/bundle.contractspec-workspace 0.0.0-canary-20251217083314 → 0.0.0-canary-20251220002821

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 (510) hide show
  1. package/LICENSE +21 -0
  2. package/dist/adapters/ai.d.ts +7 -8
  3. package/dist/adapters/ai.d.ts.map +1 -0
  4. package/dist/adapters/factory.d.ts +20 -21
  5. package/dist/adapters/factory.d.ts.map +1 -0
  6. package/dist/adapters/fs.d.ts +6 -7
  7. package/dist/adapters/fs.d.ts.map +1 -0
  8. package/dist/adapters/git.d.ts +6 -7
  9. package/dist/adapters/git.d.ts.map +1 -0
  10. package/dist/adapters/index.d.ts +11 -0
  11. package/dist/adapters/index.d.ts.map +1 -0
  12. package/dist/adapters/logger.d.ts +9 -8
  13. package/dist/adapters/logger.d.ts.map +1 -0
  14. package/dist/adapters/watcher.d.ts +6 -7
  15. package/dist/adapters/watcher.d.ts.map +1 -0
  16. package/dist/adapters/workspace.d.ts +37 -39
  17. package/dist/adapters/workspace.d.ts.map +1 -0
  18. package/dist/ai/agents/claude-code-agent.d.ts +20 -20
  19. package/dist/ai/agents/claude-code-agent.d.ts.map +1 -0
  20. package/dist/ai/agents/cursor-agent.d.ts +66 -66
  21. package/dist/ai/agents/cursor-agent.d.ts.map +1 -0
  22. package/dist/ai/agents/index.d.ts +10 -0
  23. package/dist/ai/agents/index.d.ts.map +1 -0
  24. package/dist/ai/agents/openai-codex-agent.d.ts +20 -20
  25. package/dist/ai/agents/openai-codex-agent.d.ts.map +1 -0
  26. package/dist/ai/agents/orchestrator.d.ts +48 -48
  27. package/dist/ai/agents/orchestrator.d.ts.map +1 -0
  28. package/dist/ai/agents/simple-agent.d.ts +15 -15
  29. package/dist/ai/agents/simple-agent.d.ts.map +1 -0
  30. package/dist/ai/agents/types.d.ts +26 -28
  31. package/dist/ai/agents/types.d.ts.map +1 -0
  32. package/dist/ai/client.d.ts +74 -78
  33. package/dist/ai/client.d.ts.map +1 -0
  34. package/dist/ai/index.d.ts +8 -16
  35. package/dist/ai/index.d.ts.map +1 -0
  36. package/dist/ai/prompts/code-generation.d.ts +6 -10
  37. package/dist/ai/prompts/code-generation.d.ts.map +1 -0
  38. package/dist/ai/prompts/index.d.ts +6 -9
  39. package/dist/ai/prompts/index.d.ts.map +1 -0
  40. package/dist/ai/prompts/spec-creation.d.ts +7 -13
  41. package/dist/ai/prompts/spec-creation.d.ts.map +1 -0
  42. package/dist/ai/providers.d.ts +13 -12
  43. package/dist/ai/providers.d.ts.map +1 -0
  44. package/dist/formatters/index.d.ts +7 -10
  45. package/dist/formatters/index.d.ts.map +1 -0
  46. package/dist/formatters/json.d.ts +65 -63
  47. package/dist/formatters/json.d.ts.map +1 -0
  48. package/dist/formatters/sarif.d.ts +77 -72
  49. package/dist/formatters/sarif.d.ts.map +1 -0
  50. package/dist/formatters/text.d.ts +21 -19
  51. package/dist/formatters/text.d.ts.map +1 -0
  52. package/dist/index.d.ts +14 -66
  53. package/dist/index.d.ts.map +1 -0
  54. package/dist/index.js +4532 -81
  55. package/dist/ports/ai.d.ts +41 -38
  56. package/dist/ports/ai.d.ts.map +1 -0
  57. package/dist/ports/fs.d.ts +63 -65
  58. package/dist/ports/fs.d.ts.map +1 -0
  59. package/dist/ports/git.d.ts +19 -21
  60. package/dist/ports/git.d.ts.map +1 -0
  61. package/dist/ports/index.d.ts +10 -0
  62. package/dist/ports/index.d.ts.map +1 -0
  63. package/dist/ports/logger.d.ts +58 -65
  64. package/dist/ports/logger.d.ts.map +1 -0
  65. package/dist/ports/watcher.d.ts +24 -26
  66. package/dist/ports/watcher.d.ts.map +1 -0
  67. package/dist/services/agent-guide/adapters/claude-code.d.ts +30 -28
  68. package/dist/services/agent-guide/adapters/claude-code.d.ts.map +1 -0
  69. package/dist/services/agent-guide/adapters/cursor-cli.d.ts +34 -32
  70. package/dist/services/agent-guide/adapters/cursor-cli.d.ts.map +1 -0
  71. package/dist/services/agent-guide/adapters/generic-mcp.d.ts +47 -45
  72. package/dist/services/agent-guide/adapters/generic-mcp.d.ts.map +1 -0
  73. package/dist/services/agent-guide/adapters/index.d.ts +15 -13
  74. package/dist/services/agent-guide/adapters/index.d.ts.map +1 -0
  75. package/dist/services/agent-guide/agent-guide-service.d.ts +48 -45
  76. package/dist/services/agent-guide/agent-guide-service.d.ts.map +1 -0
  77. package/dist/services/agent-guide/index.d.ts +12 -0
  78. package/dist/services/agent-guide/index.d.ts.map +1 -0
  79. package/dist/services/agent-guide/types.d.ts +46 -47
  80. package/dist/services/agent-guide/types.d.ts.map +1 -0
  81. package/dist/services/build.d.ts +41 -39
  82. package/dist/services/build.d.ts.map +1 -0
  83. package/dist/services/ci-check/ci-check-service.d.ts +13 -11
  84. package/dist/services/ci-check/ci-check-service.d.ts.map +1 -0
  85. package/dist/services/ci-check/index.d.ts +6 -0
  86. package/dist/services/ci-check/index.d.ts.map +1 -0
  87. package/dist/services/ci-check/types.d.ts +100 -102
  88. package/dist/services/ci-check/types.d.ts.map +1 -0
  89. package/dist/services/clean.d.ts +38 -37
  90. package/dist/services/clean.d.ts.map +1 -0
  91. package/dist/services/config.d.ts +14 -15
  92. package/dist/services/config.d.ts.map +1 -0
  93. package/dist/services/deps.d.ts +29 -30
  94. package/dist/services/deps.d.ts.map +1 -0
  95. package/dist/services/diff.d.ts +20 -21
  96. package/dist/services/diff.d.ts.map +1 -0
  97. package/dist/services/doctor/checks/ai.d.ts +10 -0
  98. package/dist/services/doctor/checks/ai.d.ts.map +1 -0
  99. package/dist/services/doctor/checks/cli.d.ts +10 -0
  100. package/dist/services/doctor/checks/cli.d.ts.map +1 -0
  101. package/dist/services/doctor/checks/config.d.ts +10 -0
  102. package/dist/services/doctor/checks/config.d.ts.map +1 -0
  103. package/dist/services/doctor/checks/deps.d.ts +10 -0
  104. package/dist/services/doctor/checks/deps.d.ts.map +1 -0
  105. package/dist/services/doctor/checks/index.d.ts +10 -0
  106. package/dist/services/doctor/checks/index.d.ts.map +1 -0
  107. package/dist/services/doctor/checks/mcp.d.ts +10 -0
  108. package/dist/services/doctor/checks/mcp.d.ts.map +1 -0
  109. package/dist/services/doctor/checks/workspace.d.ts +12 -0
  110. package/dist/services/doctor/checks/workspace.d.ts.map +1 -0
  111. package/dist/services/doctor/doctor-service.d.ts +14 -13
  112. package/dist/services/doctor/doctor-service.d.ts.map +1 -0
  113. package/dist/services/doctor/index.d.ts +8 -0
  114. package/dist/services/doctor/index.d.ts.map +1 -0
  115. package/dist/services/doctor/types.d.ts +70 -72
  116. package/dist/services/doctor/types.d.ts.map +1 -0
  117. package/dist/services/implementation/discovery.d.ts +16 -14
  118. package/dist/services/implementation/discovery.d.ts.map +1 -0
  119. package/dist/services/implementation/index.d.ts +7 -0
  120. package/dist/services/implementation/index.d.ts.map +1 -0
  121. package/dist/services/implementation/resolver.d.ts +31 -27
  122. package/dist/services/implementation/resolver.d.ts.map +1 -0
  123. package/dist/services/implementation/types.d.ts +55 -56
  124. package/dist/services/implementation/types.d.ts.map +1 -0
  125. package/dist/services/index.d.ts +29 -0
  126. package/dist/services/index.d.ts.map +1 -0
  127. package/dist/services/integrity-diagram.d.ts +29 -25
  128. package/dist/services/integrity-diagram.d.ts.map +1 -0
  129. package/dist/services/integrity.d.ts +100 -96
  130. package/dist/services/integrity.d.ts.map +1 -0
  131. package/dist/services/list.d.ts +18 -19
  132. package/dist/services/list.d.ts.map +1 -0
  133. package/dist/services/openapi/export-service.d.ts +39 -40
  134. package/dist/services/openapi/export-service.d.ts.map +1 -0
  135. package/dist/services/openapi/import-service.d.ts +10 -11
  136. package/dist/services/openapi/import-service.d.ts.map +1 -0
  137. package/dist/services/openapi/index.d.ts +10 -0
  138. package/dist/services/openapi/index.d.ts.map +1 -0
  139. package/dist/services/openapi/sync-service.d.ts +12 -13
  140. package/dist/services/openapi/sync-service.d.ts.map +1 -0
  141. package/dist/services/openapi/types.d.ts +141 -143
  142. package/dist/services/openapi/types.d.ts.map +1 -0
  143. package/dist/services/openapi/validate-service.d.ts +10 -11
  144. package/dist/services/openapi/validate-service.d.ts.map +1 -0
  145. package/dist/services/quickstart/dependencies.d.ts +32 -0
  146. package/dist/services/quickstart/dependencies.d.ts.map +1 -0
  147. package/dist/services/quickstart/index.d.ts +10 -0
  148. package/dist/services/quickstart/index.d.ts.map +1 -0
  149. package/dist/services/quickstart/quickstart-service.d.ts +21 -0
  150. package/dist/services/quickstart/quickstart-service.d.ts.map +1 -0
  151. package/dist/services/quickstart/types.d.ts +78 -0
  152. package/dist/services/quickstart/types.d.ts.map +1 -0
  153. package/dist/services/regenerator.d.ts +18 -16
  154. package/dist/services/regenerator.d.ts.map +1 -0
  155. package/dist/services/registry.d.ts +25 -26
  156. package/dist/services/registry.d.ts.map +1 -0
  157. package/dist/services/setup/config-generators.d.ts +14 -13
  158. package/dist/services/setup/config-generators.d.ts.map +1 -0
  159. package/dist/services/setup/file-merger.d.ts +5 -7
  160. package/dist/services/setup/file-merger.d.ts.map +1 -0
  161. package/dist/services/setup/index.d.ts +10 -0
  162. package/dist/services/setup/index.d.ts.map +1 -0
  163. package/dist/services/setup/setup-service.d.ts +10 -8
  164. package/dist/services/setup/setup-service.d.ts.map +1 -0
  165. package/dist/services/setup/targets/agents-md.d.ts +12 -0
  166. package/dist/services/setup/targets/agents-md.d.ts.map +1 -0
  167. package/dist/services/setup/targets/cli-config.d.ts +12 -0
  168. package/dist/services/setup/targets/cli-config.d.ts.map +1 -0
  169. package/dist/services/setup/targets/cursor-rules.d.ts +10 -0
  170. package/dist/services/setup/targets/cursor-rules.d.ts.map +1 -0
  171. package/dist/services/setup/targets/index.d.ts +10 -0
  172. package/dist/services/setup/targets/index.d.ts.map +1 -0
  173. package/dist/services/setup/targets/mcp-claude.d.ts +11 -0
  174. package/dist/services/setup/targets/mcp-claude.d.ts.map +1 -0
  175. package/dist/services/setup/targets/mcp-cursor.d.ts +10 -0
  176. package/dist/services/setup/targets/mcp-cursor.d.ts.map +1 -0
  177. package/dist/services/setup/targets/vscode-settings.d.ts +13 -0
  178. package/dist/services/setup/targets/vscode-settings.d.ts.map +1 -0
  179. package/dist/services/setup/types.d.ts +51 -53
  180. package/dist/services/setup/types.d.ts.map +1 -0
  181. package/dist/services/sync.d.ts +37 -35
  182. package/dist/services/sync.d.ts.map +1 -0
  183. package/dist/services/test.d.ts +15 -13
  184. package/dist/services/test.d.ts.map +1 -0
  185. package/dist/services/validate-implementation.d.ts +30 -28
  186. package/dist/services/validate-implementation.d.ts.map +1 -0
  187. package/dist/services/validate.d.ts +23 -24
  188. package/dist/services/validate.d.ts.map +1 -0
  189. package/dist/services/verification-cache/adapters/filesystem.d.ts +40 -38
  190. package/dist/services/verification-cache/adapters/filesystem.d.ts.map +1 -0
  191. package/dist/services/verification-cache/adapters/in-memory.d.ts +21 -19
  192. package/dist/services/verification-cache/adapters/in-memory.d.ts.map +1 -0
  193. package/dist/services/verification-cache/adapters/index.d.ts +7 -0
  194. package/dist/services/verification-cache/adapters/index.d.ts.map +1 -0
  195. package/dist/services/verification-cache/adapters/workspace-state.d.ts +39 -37
  196. package/dist/services/verification-cache/adapters/workspace-state.d.ts.map +1 -0
  197. package/dist/services/verification-cache/cache-service.d.ts +55 -53
  198. package/dist/services/verification-cache/cache-service.d.ts.map +1 -0
  199. package/dist/services/verification-cache/index.d.ts +7 -0
  200. package/dist/services/verification-cache/index.d.ts.map +1 -0
  201. package/dist/services/verification-cache/types.d.ts +84 -85
  202. package/dist/services/verification-cache/types.d.ts.map +1 -0
  203. package/dist/services/verify/ai-verifier.d.ts +13 -11
  204. package/dist/services/verify/ai-verifier.d.ts.map +1 -0
  205. package/dist/services/verify/behavior-verifier.d.ts +10 -8
  206. package/dist/services/verify/behavior-verifier.d.ts.map +1 -0
  207. package/dist/services/verify/index.d.ts +18 -0
  208. package/dist/services/verify/index.d.ts.map +1 -0
  209. package/dist/services/verify/structure-verifier.d.ts +12 -8
  210. package/dist/services/verify/structure-verifier.d.ts.map +1 -0
  211. package/dist/services/verify/types.d.ts +114 -115
  212. package/dist/services/verify/types.d.ts.map +1 -0
  213. package/dist/services/verify/verify-service.d.ts +51 -49
  214. package/dist/services/verify/verify-service.d.ts.map +1 -0
  215. package/dist/services/watch.d.ts +22 -21
  216. package/dist/services/watch.d.ts.map +1 -0
  217. package/dist/services/workspace-info.d.ts +40 -37
  218. package/dist/services/workspace-info.d.ts.map +1 -0
  219. package/dist/templates/app-config.template.d.ts +3 -6
  220. package/dist/templates/app-config.template.d.ts.map +1 -0
  221. package/dist/templates/data-view.template.d.ts +3 -6
  222. package/dist/templates/data-view.template.d.ts.map +1 -0
  223. package/dist/templates/event.template.d.ts +3 -7
  224. package/dist/templates/event.template.d.ts.map +1 -0
  225. package/dist/templates/experiment.template.d.ts +3 -6
  226. package/dist/templates/experiment.template.d.ts.map +1 -0
  227. package/dist/templates/handler.template.d.ts +4 -6
  228. package/dist/templates/handler.template.d.ts.map +1 -0
  229. package/dist/templates/index.d.ts +17 -20
  230. package/dist/templates/index.d.ts.map +1 -0
  231. package/dist/templates/integration.template.d.ts +3 -6
  232. package/dist/templates/integration.template.d.ts.map +1 -0
  233. package/dist/templates/knowledge.template.d.ts +3 -6
  234. package/dist/templates/knowledge.template.d.ts.map +1 -0
  235. package/dist/templates/migration.template.d.ts +3 -6
  236. package/dist/templates/migration.template.d.ts.map +1 -0
  237. package/dist/templates/operation.template.d.ts +3 -7
  238. package/dist/templates/operation.template.d.ts.map +1 -0
  239. package/dist/templates/operation.template.test.d.ts +2 -0
  240. package/dist/templates/operation.template.test.d.ts.map +1 -0
  241. package/dist/templates/presentation.template.d.ts +3 -7
  242. package/dist/templates/presentation.template.d.ts.map +1 -0
  243. package/dist/templates/telemetry.template.d.ts +3 -6
  244. package/dist/templates/telemetry.template.d.ts.map +1 -0
  245. package/dist/templates/workflow-runner.template.d.ts +7 -13
  246. package/dist/templates/workflow-runner.template.d.ts.map +1 -0
  247. package/dist/templates/workflow.template.d.ts +3 -6
  248. package/dist/templates/workflow.template.d.ts.map +1 -0
  249. package/dist/types/config.d.ts +18 -20
  250. package/dist/types/config.d.ts.map +1 -0
  251. package/dist/types/index.d.ts +5 -0
  252. package/dist/types/index.d.ts.map +1 -0
  253. package/dist/types.d.ts +338 -311
  254. package/dist/types.d.ts.map +1 -0
  255. package/package.json +22 -15
  256. package/dist/_virtual/rolldown_runtime.js +0 -22
  257. package/dist/adapters/ai.js +0 -82
  258. package/dist/adapters/factory.js +0 -36
  259. package/dist/adapters/fs.js +0 -118
  260. package/dist/adapters/git.js +0 -54
  261. package/dist/adapters/index.js +0 -7
  262. package/dist/adapters/logger.js +0 -80
  263. package/dist/adapters/watcher.js +0 -69
  264. package/dist/adapters/workspace.js +0 -190
  265. package/dist/ai/agents/claude-code-agent.js +0 -181
  266. package/dist/ai/agents/cursor-agent.js +0 -437
  267. package/dist/ai/agents/index.js +0 -5
  268. package/dist/ai/agents/openai-codex-agent.js +0 -166
  269. package/dist/ai/agents/orchestrator.js +0 -142
  270. package/dist/ai/agents/simple-agent.js +0 -91
  271. package/dist/ai/client.js +0 -162
  272. package/dist/ai/index.js +0 -27
  273. package/dist/ai/prompts/code-generation.js +0 -142
  274. package/dist/ai/prompts/index.js +0 -12
  275. package/dist/ai/prompts/spec-creation.js +0 -110
  276. package/dist/ai/providers.js +0 -40
  277. package/dist/formatters/index.js +0 -18
  278. package/dist/formatters/json.js +0 -71
  279. package/dist/formatters/sarif.js +0 -163
  280. package/dist/formatters/text.js +0 -208
  281. package/dist/libs/ai-providers/dist/factory.js +0 -154
  282. package/dist/libs/ai-providers/dist/index.js +0 -4
  283. package/dist/libs/ai-providers/dist/legacy.js +0 -72
  284. package/dist/libs/ai-providers/dist/models.js +0 -287
  285. package/dist/libs/ai-providers/dist/validation.js +0 -1
  286. package/dist/libs/contracts/dist/capabilities/openbanking.js +0 -88
  287. package/dist/libs/contracts/dist/client/index.js +0 -5
  288. package/dist/libs/contracts/dist/client/react/feature-render.js +0 -2
  289. package/dist/libs/contracts/dist/client/react/form-render.js +0 -4
  290. package/dist/libs/contracts/dist/client/react/index.js +0 -4
  291. package/dist/libs/contracts/dist/contract-registry/index.js +0 -1
  292. package/dist/libs/contracts/dist/contract-registry/schemas.js +0 -60
  293. package/dist/libs/contracts/dist/docs/PUBLISHING.docblock.js +0 -16
  294. package/dist/libs/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js +0 -16
  295. package/dist/libs/contracts/dist/docs/index.js +0 -29
  296. package/dist/libs/contracts/dist/docs/presentations.js +0 -71
  297. package/dist/libs/contracts/dist/docs/registry.js +0 -44
  298. package/dist/libs/contracts/dist/docs/tech/PHASE_1_QUICKSTART.docblock.js +0 -16
  299. package/dist/libs/contracts/dist/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js +0 -16
  300. package/dist/libs/contracts/dist/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js +0 -16
  301. package/dist/libs/contracts/dist/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js +0 -16
  302. package/dist/libs/contracts/dist/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js +0 -16
  303. package/dist/libs/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js +0 -80
  304. package/dist/libs/contracts/dist/docs/tech/contracts/openapi-export.docblock.js +0 -57
  305. package/dist/libs/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js +0 -16
  306. package/dist/libs/contracts/dist/docs/tech/llm/llm-integration.docblock.js +0 -357
  307. package/dist/libs/contracts/dist/docs/tech/mcp-endpoints.docblock.js +0 -37
  308. package/dist/libs/contracts/dist/docs/tech/presentation-runtime.docblock.js +0 -16
  309. package/dist/libs/contracts/dist/docs/tech/schema/README.docblock.js +0 -20
  310. package/dist/libs/contracts/dist/docs/tech/studio/learning-events.docblock.js +0 -48
  311. package/dist/libs/contracts/dist/docs/tech/studio/learning-journeys.docblock.js +0 -79
  312. package/dist/libs/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js +0 -84
  313. package/dist/libs/contracts/dist/docs/tech/studio/project-access-teams.docblock.js +0 -45
  314. package/dist/libs/contracts/dist/docs/tech/studio/project-routing.docblock.js +0 -67
  315. package/dist/libs/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js +0 -40
  316. package/dist/libs/contracts/dist/docs/tech/studio/team-invitations.docblock.js +0 -69
  317. package/dist/libs/contracts/dist/docs/tech/studio/workspace-ops.docblock.js +0 -47
  318. package/dist/libs/contracts/dist/docs/tech/studio/workspaces.docblock.js +0 -62
  319. package/dist/libs/contracts/dist/docs/tech/telemetry-ingest.docblock.js +0 -155
  320. package/dist/libs/contracts/dist/docs/tech/templates/runtime.docblock.js +0 -20
  321. package/dist/libs/contracts/dist/docs/tech/vscode-extension.docblock.js +0 -101
  322. package/dist/libs/contracts/dist/docs/tech/workflows/overview.docblock.js +0 -20
  323. package/dist/libs/contracts/dist/events.js +0 -8
  324. package/dist/libs/contracts/dist/experiments/evaluator.js +0 -1
  325. package/dist/libs/contracts/dist/index.js +0 -72
  326. package/dist/libs/contracts/dist/install.js +0 -2
  327. package/dist/libs/contracts/dist/integrations/contracts.js +0 -377
  328. package/dist/libs/contracts/dist/integrations/index.js +0 -18
  329. package/dist/libs/contracts/dist/integrations/openbanking/contracts/accounts.js +0 -228
  330. package/dist/libs/contracts/dist/integrations/openbanking/contracts/balances.js +0 -159
  331. package/dist/libs/contracts/dist/integrations/openbanking/contracts/index.js +0 -3
  332. package/dist/libs/contracts/dist/integrations/openbanking/contracts/transactions.js +0 -210
  333. package/dist/libs/contracts/dist/integrations/openbanking/models.js +0 -242
  334. package/dist/libs/contracts/dist/integrations/openbanking/telemetry.js +0 -13
  335. package/dist/libs/contracts/dist/integrations/providers/elevenlabs.js +0 -52
  336. package/dist/libs/contracts/dist/integrations/providers/gcs-storage.js +0 -75
  337. package/dist/libs/contracts/dist/integrations/providers/gmail.js +0 -87
  338. package/dist/libs/contracts/dist/integrations/providers/google-calendar.js +0 -66
  339. package/dist/libs/contracts/dist/integrations/providers/index.js +0 -11
  340. package/dist/libs/contracts/dist/integrations/providers/mistral.js +0 -68
  341. package/dist/libs/contracts/dist/integrations/providers/postmark.js +0 -68
  342. package/dist/libs/contracts/dist/integrations/providers/powens.js +0 -116
  343. package/dist/libs/contracts/dist/integrations/providers/qdrant.js +0 -73
  344. package/dist/libs/contracts/dist/integrations/providers/registry.js +0 -10
  345. package/dist/libs/contracts/dist/integrations/providers/stripe.js +0 -83
  346. package/dist/libs/contracts/dist/integrations/providers/twilio-sms.js +0 -61
  347. package/dist/libs/contracts/dist/jsonschema.js +0 -24
  348. package/dist/libs/contracts/dist/knowledge/contracts.js +0 -306
  349. package/dist/libs/contracts/dist/knowledge/index.js +0 -7
  350. package/dist/libs/contracts/dist/knowledge/spaces/email-threads.js +0 -34
  351. package/dist/libs/contracts/dist/knowledge/spaces/financial-docs.js +0 -34
  352. package/dist/libs/contracts/dist/knowledge/spaces/financial-overview.js +0 -38
  353. package/dist/libs/contracts/dist/knowledge/spaces/index.js +0 -6
  354. package/dist/libs/contracts/dist/knowledge/spaces/product-canon.js +0 -34
  355. package/dist/libs/contracts/dist/knowledge/spaces/support-faq.js +0 -37
  356. package/dist/libs/contracts/dist/knowledge/spaces/uploaded-docs.js +0 -34
  357. package/dist/libs/contracts/dist/llm/exporters.js +0 -352
  358. package/dist/libs/contracts/dist/llm/index.js +0 -2
  359. package/dist/libs/contracts/dist/llm/prompts.js +0 -211
  360. package/dist/libs/contracts/dist/onboarding-base.js +0 -196
  361. package/dist/libs/contracts/dist/openapi.js +0 -75
  362. package/dist/libs/contracts/dist/ownership.js +0 -21
  363. package/dist/libs/contracts/dist/presentations.js +0 -1
  364. package/dist/libs/contracts/dist/presentations.v2.js +0 -11
  365. package/dist/libs/contracts/dist/prompt.js +0 -1
  366. package/dist/libs/contracts/dist/promptRegistry.js +0 -1
  367. package/dist/libs/contracts/dist/regenerator/index.js +0 -2
  368. package/dist/libs/contracts/dist/regenerator/service.js +0 -92
  369. package/dist/libs/contracts/dist/regenerator/utils.js +0 -51
  370. package/dist/libs/contracts/dist/registry.js +0 -208
  371. package/dist/libs/contracts/dist/resources.js +0 -1
  372. package/dist/libs/contracts/dist/schema/dist/EnumType.js +0 -2
  373. package/dist/libs/contracts/dist/schema/dist/FieldType.js +0 -49
  374. package/dist/libs/contracts/dist/schema/dist/ScalarTypeEnum.js +0 -236
  375. package/dist/libs/contracts/dist/schema/dist/SchemaModel.js +0 -34
  376. package/dist/libs/contracts/dist/schema/dist/entity/defineEntity.js +0 -1
  377. package/dist/libs/contracts/dist/schema/dist/entity/index.js +0 -2
  378. package/dist/libs/contracts/dist/schema/dist/entity/types.js +0 -1
  379. package/dist/libs/contracts/dist/schema/dist/index.js +0 -6
  380. package/dist/libs/contracts/dist/server/graphql-pothos.js +0 -6
  381. package/dist/libs/contracts/dist/server/index.js +0 -8
  382. package/dist/libs/contracts/dist/server/mcp/createMcpServer.js +0 -4
  383. package/dist/libs/contracts/dist/server/mcp/registerPresentations.js +0 -2
  384. package/dist/libs/contracts/dist/server/mcp/registerPrompts.js +0 -1
  385. package/dist/libs/contracts/dist/server/mcp/registerResources.js +0 -2
  386. package/dist/libs/contracts/dist/server/mcp/registerTools.js +0 -1
  387. package/dist/libs/contracts/dist/server/provider-mcp.js +0 -1
  388. package/dist/libs/contracts/dist/server/rest-elysia.js +0 -1
  389. package/dist/libs/contracts/dist/server/rest-express.js +0 -1
  390. package/dist/libs/contracts/dist/server/rest-generic.js +0 -1
  391. package/dist/libs/contracts/dist/server/rest-next-app.js +0 -1
  392. package/dist/libs/contracts/dist/server/rest-next-pages.js +0 -1
  393. package/dist/libs/contracts/dist/spec.js +0 -35
  394. package/dist/libs/contracts/dist/telemetry/index.js +0 -1
  395. package/dist/libs/contracts/dist/telemetry/tracker.js +0 -1
  396. package/dist/libs/contracts/dist/tests/index.js +0 -1
  397. package/dist/libs/contracts/dist/tests/runner.js +0 -150
  398. package/dist/libs/contracts/dist/workflow/index.js +0 -1
  399. package/dist/libs/contracts/dist/workflow/runner.js +0 -1
  400. package/dist/libs/contracts-transformers/dist/common/utils.js +0 -47
  401. package/dist/libs/contracts-transformers/dist/openapi/exporter.js +0 -1
  402. package/dist/libs/contracts-transformers/dist/openapi/importer.js +0 -255
  403. package/dist/libs/contracts-transformers/dist/openapi/index.js +0 -4
  404. package/dist/libs/contracts-transformers/dist/openapi/parser.js +0 -231
  405. package/dist/libs/contracts-transformers/dist/openapi/schema-converter.js +0 -201
  406. package/dist/modules/contractspec-workspace/dist/ai/code-generation.js +0 -137
  407. package/dist/modules/contractspec-workspace/dist/ai/spec-creation.js +0 -101
  408. package/dist/modules/contractspec-workspace/dist/analysis/deps/graph.js +0 -84
  409. package/dist/modules/contractspec-workspace/dist/analysis/deps/parse-imports.js +0 -30
  410. package/dist/modules/contractspec-workspace/dist/analysis/diff/semantic.js +0 -96
  411. package/dist/modules/contractspec-workspace/dist/analysis/feature-scan.js +0 -151
  412. package/dist/modules/contractspec-workspace/dist/analysis/spec-scan.js +0 -344
  413. package/dist/modules/contractspec-workspace/dist/analysis/validate/spec-structure.js +0 -122
  414. package/dist/modules/contractspec-workspace/dist/templates/app-config.js +0 -105
  415. package/dist/modules/contractspec-workspace/dist/templates/data-view.js +0 -68
  416. package/dist/modules/contractspec-workspace/dist/templates/event.js +0 -38
  417. package/dist/modules/contractspec-workspace/dist/templates/experiment.js +0 -87
  418. package/dist/modules/contractspec-workspace/dist/templates/handler.js +0 -95
  419. package/dist/modules/contractspec-workspace/dist/templates/integration-utils.js +0 -104
  420. package/dist/modules/contractspec-workspace/dist/templates/integration.js +0 -62
  421. package/dist/modules/contractspec-workspace/dist/templates/knowledge.js +0 -68
  422. package/dist/modules/contractspec-workspace/dist/templates/migration.js +0 -60
  423. package/dist/modules/contractspec-workspace/dist/templates/operation.js +0 -100
  424. package/dist/modules/contractspec-workspace/dist/templates/presentation.js +0 -78
  425. package/dist/modules/contractspec-workspace/dist/templates/telemetry.js +0 -89
  426. package/dist/modules/contractspec-workspace/dist/templates/utils.js +0 -38
  427. package/dist/modules/contractspec-workspace/dist/templates/workflow-runner.js +0 -48
  428. package/dist/modules/contractspec-workspace/dist/templates/workflow.js +0 -67
  429. package/dist/modules/contractspec-workspace/dist/types/generation-types.js +0 -20
  430. package/dist/services/agent-guide/adapters/claude-code.js +0 -144
  431. package/dist/services/agent-guide/adapters/cursor-cli.js +0 -135
  432. package/dist/services/agent-guide/adapters/generic-mcp.js +0 -159
  433. package/dist/services/agent-guide/adapters/index.js +0 -30
  434. package/dist/services/agent-guide/agent-guide-service.js +0 -148
  435. package/dist/services/agent-guide/index.js +0 -5
  436. package/dist/services/build.js +0 -140
  437. package/dist/services/ci-check/ci-check-service.js +0 -393
  438. package/dist/services/ci-check/index.js +0 -2
  439. package/dist/services/ci-check/types.js +0 -28
  440. package/dist/services/clean.js +0 -71
  441. package/dist/services/config.js +0 -76
  442. package/dist/services/deps.js +0 -62
  443. package/dist/services/diff.js +0 -33
  444. package/dist/services/doctor/checks/ai.js +0 -118
  445. package/dist/services/doctor/checks/cli.js +0 -146
  446. package/dist/services/doctor/checks/config.js +0 -170
  447. package/dist/services/doctor/checks/deps.js +0 -180
  448. package/dist/services/doctor/checks/index.js +0 -6
  449. package/dist/services/doctor/checks/mcp.js +0 -144
  450. package/dist/services/doctor/checks/workspace.js +0 -243
  451. package/dist/services/doctor/doctor-service.js +0 -115
  452. package/dist/services/doctor/index.js +0 -2
  453. package/dist/services/doctor/types.js +0 -26
  454. package/dist/services/implementation/discovery.js +0 -143
  455. package/dist/services/implementation/index.js +0 -2
  456. package/dist/services/implementation/resolver.js +0 -223
  457. package/dist/services/index.js +0 -53
  458. package/dist/services/integrity-diagram.js +0 -274
  459. package/dist/services/integrity.js +0 -272
  460. package/dist/services/list.js +0 -35
  461. package/dist/services/openapi/export-service.js +0 -51
  462. package/dist/services/openapi/import-service.js +0 -75
  463. package/dist/services/openapi/index.js +0 -4
  464. package/dist/services/openapi/sync-service.js +0 -121
  465. package/dist/services/openapi/validate-service.js +0 -130
  466. package/dist/services/regenerator.js +0 -23
  467. package/dist/services/registry.js +0 -73
  468. package/dist/services/setup/config-generators.js +0 -237
  469. package/dist/services/setup/file-merger.js +0 -60
  470. package/dist/services/setup/index.js +0 -4
  471. package/dist/services/setup/setup-service.js +0 -95
  472. package/dist/services/setup/targets/agents-md.js +0 -46
  473. package/dist/services/setup/targets/cli-config.js +0 -59
  474. package/dist/services/setup/targets/cursor-rules.js +0 -47
  475. package/dist/services/setup/targets/mcp-claude.js +0 -59
  476. package/dist/services/setup/targets/mcp-cursor.js +0 -58
  477. package/dist/services/setup/targets/vscode-settings.js +0 -62
  478. package/dist/services/setup/types.js +0 -26
  479. package/dist/services/sync.js +0 -62
  480. package/dist/services/test.js +0 -30
  481. package/dist/services/validate-implementation.js +0 -69
  482. package/dist/services/validate.js +0 -47
  483. package/dist/services/verification-cache/adapters/filesystem.js +0 -121
  484. package/dist/services/verification-cache/adapters/in-memory.js +0 -45
  485. package/dist/services/verification-cache/adapters/index.js +0 -3
  486. package/dist/services/verification-cache/adapters/workspace-state.js +0 -90
  487. package/dist/services/verification-cache/cache-service.js +0 -255
  488. package/dist/services/verification-cache/index.js +0 -6
  489. package/dist/services/verification-cache/types.js +0 -15
  490. package/dist/services/verify/ai-verifier.js +0 -403
  491. package/dist/services/verify/behavior-verifier.js +0 -185
  492. package/dist/services/verify/index.js +0 -4
  493. package/dist/services/verify/structure-verifier.js +0 -195
  494. package/dist/services/verify/verify-service.js +0 -203
  495. package/dist/services/watch.js +0 -31
  496. package/dist/services/workspace-info.js +0 -102
  497. package/dist/templates/app-config.template.js +0 -106
  498. package/dist/templates/data-view.template.js +0 -69
  499. package/dist/templates/event.template.js +0 -39
  500. package/dist/templates/experiment.template.js +0 -88
  501. package/dist/templates/handler.template.js +0 -99
  502. package/dist/templates/index.js +0 -36
  503. package/dist/templates/integration.template.js +0 -159
  504. package/dist/templates/knowledge.template.js +0 -74
  505. package/dist/templates/migration.template.js +0 -61
  506. package/dist/templates/operation.template.js +0 -104
  507. package/dist/templates/presentation.template.js +0 -79
  508. package/dist/templates/telemetry.template.js +0 -90
  509. package/dist/templates/workflow-runner.template.js +0 -49
  510. package/dist/templates/workflow.template.js +0 -68
@@ -1,255 +0,0 @@
1
- import { toFileName, toPascalCase, toSpecName, toValidIdentifier } from "../common/utils.js";
2
- import { generateImports, generateSchemaModelCode } from "./schema-converter.js";
3
-
4
- //#region ../../libs/contracts-transformers/dist/openapi/importer.js
5
- /**
6
- * HTTP methods that typically indicate a command (state-changing).
7
- */
8
- const COMMAND_METHODS = [
9
- "post",
10
- "put",
11
- "delete",
12
- "patch"
13
- ];
14
- /**
15
- * Determine if an operation is a command or query based on HTTP method.
16
- */
17
- function inferOpKind(method) {
18
- return COMMAND_METHODS.includes(method.toLowerCase()) ? "command" : "query";
19
- }
20
- /**
21
- * Determine auth level based on security requirements.
22
- */
23
- function inferAuthLevel(operation, defaultAuth) {
24
- if (!operation.security || operation.security.length === 0) return defaultAuth;
25
- for (const sec of operation.security) if (Object.keys(sec).length === 0) return "anonymous";
26
- return "user";
27
- }
28
- /**
29
- * Build a merged input schema from all parameter sources.
30
- */
31
- function buildInputSchema(operation) {
32
- const fields = [];
33
- for (const param of operation.pathParams) fields.push({
34
- name: param.name,
35
- schema: param.schema,
36
- required: true
37
- });
38
- for (const param of operation.queryParams) fields.push({
39
- name: param.name,
40
- schema: param.schema,
41
- required: param.required
42
- });
43
- const excludedHeaders = [
44
- "authorization",
45
- "content-type",
46
- "accept",
47
- "user-agent"
48
- ];
49
- for (const param of operation.headerParams) if (!excludedHeaders.includes(param.name.toLowerCase())) fields.push({
50
- name: param.name,
51
- schema: param.schema,
52
- required: param.required
53
- });
54
- if (operation.requestBody?.schema) {
55
- const bodySchema = operation.requestBody.schema;
56
- if (!("$ref" in bodySchema)) {
57
- const schemaObj = bodySchema;
58
- const properties = schemaObj["properties"];
59
- const required = schemaObj["required"] ?? [];
60
- if (properties) for (const [propName, propSchema] of Object.entries(properties)) fields.push({
61
- name: propName,
62
- schema: propSchema,
63
- required: required.includes(propName)
64
- });
65
- } else fields.push({
66
- name: "body",
67
- schema: bodySchema,
68
- required: operation.requestBody.required
69
- });
70
- }
71
- if (fields.length === 0) return {
72
- schema: null,
73
- fields: []
74
- };
75
- return {
76
- schema: {
77
- type: "object",
78
- properties: fields.reduce((acc, f) => {
79
- acc[f.name] = f.schema;
80
- return acc;
81
- }, {}),
82
- required: fields.filter((f) => f.required).map((f) => f.name)
83
- },
84
- fields
85
- };
86
- }
87
- /**
88
- * Get the output schema from the operation responses.
89
- */
90
- function getOutputSchema(operation) {
91
- for (const code of [
92
- "200",
93
- "201",
94
- "202",
95
- "204"
96
- ]) {
97
- const response = operation.responses[code];
98
- if (response?.schema) return response.schema;
99
- }
100
- for (const [code, response] of Object.entries(operation.responses)) if (code.startsWith("2") && response.schema) return response.schema;
101
- return null;
102
- }
103
- /**
104
- * Generate ContractSpec TypeScript code for an operation.
105
- */
106
- function generateSpecCode(operation, options, inputModel, outputModel) {
107
- const specName = toSpecName(operation.operationId, options.prefix);
108
- const kind = inferOpKind(operation.method);
109
- const auth = inferAuthLevel(operation, options.defaultAuth ?? "user");
110
- const lines = [];
111
- lines.push("import { defineCommand, defineQuery } from '@lssm/lib.contracts';");
112
- if (inputModel || outputModel) lines.push(generateImports([...inputModel?.fields ?? [], ...outputModel?.fields ?? []]));
113
- lines.push("");
114
- if (inputModel && inputModel.code) {
115
- lines.push("// Input schema");
116
- lines.push(inputModel.code);
117
- lines.push("");
118
- }
119
- if (outputModel && outputModel.code) {
120
- lines.push("// Output schema");
121
- lines.push(outputModel.code);
122
- lines.push("");
123
- }
124
- const defineFunc = kind === "command" ? "defineCommand" : "defineQuery";
125
- const safeName = toValidIdentifier(toPascalCase(operation.operationId));
126
- lines.push(`/**`);
127
- lines.push(` * ${operation.summary ?? operation.operationId}`);
128
- if (operation.description) {
129
- lines.push(` *`);
130
- lines.push(` * ${operation.description}`);
131
- }
132
- lines.push(` *`);
133
- lines.push(` * @source OpenAPI: ${operation.method.toUpperCase()} ${operation.path}`);
134
- lines.push(` */`);
135
- lines.push(`export const ${safeName}Spec = ${defineFunc}({`);
136
- lines.push(" meta: {");
137
- lines.push(` name: '${specName}',`);
138
- lines.push(" version: 1,");
139
- lines.push(` stability: '${options.defaultStability ?? "stable"}',`);
140
- lines.push(` owners: [${(options.defaultOwners ?? []).map((o) => `'${o}'`).join(", ")}],`);
141
- lines.push(` tags: [${operation.tags.map((t) => `'${t}'`).join(", ")}],`);
142
- lines.push(` description: ${JSON.stringify(operation.summary ?? operation.operationId)},`);
143
- lines.push(` goal: ${JSON.stringify(operation.description ?? "Imported from OpenAPI")},`);
144
- lines.push(` context: 'Imported from OpenAPI: ${operation.method.toUpperCase()} ${operation.path}',`);
145
- lines.push(" },");
146
- lines.push(" io: {");
147
- if (inputModel) lines.push(` input: ${inputModel.name},`);
148
- else lines.push(" input: null,");
149
- if (outputModel) lines.push(` output: ${outputModel.name},`);
150
- else lines.push(" output: null, // TODO: Define output schema");
151
- lines.push(" },");
152
- lines.push(" policy: {");
153
- lines.push(` auth: '${auth}',`);
154
- lines.push(" },");
155
- lines.push(" transport: {");
156
- lines.push(" rest: {");
157
- lines.push(` method: '${operation.method.toUpperCase()}',`);
158
- lines.push(` path: '${operation.path}',`);
159
- lines.push(" },");
160
- lines.push(" },");
161
- lines.push("});");
162
- return lines.join("\n");
163
- }
164
- /**
165
- * Import operations from a parsed OpenAPI document.
166
- */
167
- function importFromOpenApi(parseResult, options = {}) {
168
- const { tags, exclude = [], include } = options;
169
- const specs = [];
170
- const skipped = [];
171
- const errors = [];
172
- for (const operation of parseResult.operations) {
173
- if (tags && tags.length > 0) {
174
- if (!operation.tags.some((t) => tags.includes(t))) {
175
- skipped.push({
176
- sourceId: operation.operationId,
177
- reason: `No matching tags (has: ${operation.tags.join(", ")})`
178
- });
179
- continue;
180
- }
181
- }
182
- if (include && include.length > 0) {
183
- if (!include.includes(operation.operationId)) {
184
- skipped.push({
185
- sourceId: operation.operationId,
186
- reason: "Not in include list"
187
- });
188
- continue;
189
- }
190
- } else if (exclude.includes(operation.operationId)) {
191
- skipped.push({
192
- sourceId: operation.operationId,
193
- reason: "In exclude list"
194
- });
195
- continue;
196
- }
197
- if (operation.deprecated && options.defaultStability !== "deprecated") {
198
- skipped.push({
199
- sourceId: operation.operationId,
200
- reason: "Deprecated operation"
201
- });
202
- continue;
203
- }
204
- try {
205
- const { schema: inputSchema } = buildInputSchema(operation);
206
- const inputModel = inputSchema ? generateSchemaModelCode(inputSchema, `${operation.operationId}Input`) : null;
207
- const outputSchema = getOutputSchema(operation);
208
- const code = generateSpecCode(operation, options, inputModel, outputSchema ? generateSchemaModelCode(outputSchema, `${operation.operationId}Output`) : null);
209
- const fileName = toFileName(toSpecName(operation.operationId, options.prefix));
210
- const transportHints = { rest: {
211
- method: operation.method.toUpperCase(),
212
- path: operation.path,
213
- params: {
214
- path: operation.pathParams.map((p) => p.name),
215
- query: operation.queryParams.map((p) => p.name),
216
- header: operation.headerParams.map((p) => p.name),
217
- cookie: operation.cookieParams.map((p) => p.name)
218
- }
219
- } };
220
- const source = {
221
- type: "openapi",
222
- sourceId: operation.operationId,
223
- operationId: operation.operationId,
224
- openApiVersion: parseResult.version,
225
- importedAt: /* @__PURE__ */ new Date()
226
- };
227
- specs.push({
228
- spec: {},
229
- code,
230
- fileName,
231
- source,
232
- transportHints
233
- });
234
- } catch (error) {
235
- errors.push({
236
- sourceId: operation.operationId,
237
- error: error instanceof Error ? error.message : String(error)
238
- });
239
- }
240
- }
241
- return {
242
- specs,
243
- skipped,
244
- errors,
245
- summary: {
246
- total: parseResult.operations.length,
247
- imported: specs.length,
248
- skipped: skipped.length,
249
- errors: errors.length
250
- }
251
- };
252
- }
253
-
254
- //#endregion
255
- export { importFromOpenApi };
@@ -1,4 +0,0 @@
1
- import { detectFormat, detectVersion, parseOpenApi, parseOpenApiDocument, parseOpenApiString } from "./parser.js";
2
- import "./exporter.js";
3
- import { generateImports, generateSchemaModelCode, getScalarType, jsonSchemaToField, jsonSchemaToType } from "./schema-converter.js";
4
- import { importFromOpenApi } from "./importer.js";
@@ -1,231 +0,0 @@
1
- import { parse } from "yaml";
2
-
3
- //#region ../../libs/contracts-transformers/dist/openapi/parser.js
4
- /**
5
- * OpenAPI document parser.
6
- * Parses OpenAPI 3.x documents from JSON/YAML files or URLs.
7
- */
8
- const HTTP_METHODS = [
9
- "get",
10
- "post",
11
- "put",
12
- "delete",
13
- "patch",
14
- "head",
15
- "options",
16
- "trace"
17
- ];
18
- /**
19
- * Parse an OpenAPI document from a string (JSON or YAML).
20
- */
21
- function parseOpenApiString(content, format = "json") {
22
- if (format === "yaml") return parse(content);
23
- return JSON.parse(content);
24
- }
25
- /**
26
- * Detect the format of content (JSON or YAML).
27
- */
28
- function detectFormat(content) {
29
- const trimmed = content.trim();
30
- if (trimmed.startsWith("{") || trimmed.startsWith("[")) return "json";
31
- return "yaml";
32
- }
33
- /**
34
- * Detect OpenAPI version from document.
35
- */
36
- function detectVersion(doc) {
37
- if (doc.openapi.startsWith("3.1")) return "3.1";
38
- return "3.0";
39
- }
40
- /**
41
- * Check if a value is a reference object.
42
- */
43
- function isReference(obj) {
44
- return typeof obj === "object" && obj !== null && "$ref" in obj;
45
- }
46
- /**
47
- * Resolve a $ref reference in the document.
48
- */
49
- function resolveRef(doc, ref) {
50
- if (!ref.startsWith("#/")) return;
51
- const path = ref.slice(2).split("/");
52
- let current = doc;
53
- for (const part of path) {
54
- if (current === null || current === void 0) return void 0;
55
- if (typeof current !== "object") return void 0;
56
- current = current[part];
57
- }
58
- return current;
59
- }
60
- /**
61
- * Resolve a schema, following $ref if needed.
62
- */
63
- function resolveSchema(doc, schema) {
64
- if (!schema) return void 0;
65
- if (isReference(schema)) return resolveRef(doc, schema.$ref) ?? schema;
66
- return schema;
67
- }
68
- /**
69
- * Parse parameters from an operation.
70
- */
71
- function parseParameters(doc, params) {
72
- const result = {
73
- path: [],
74
- query: [],
75
- header: [],
76
- cookie: []
77
- };
78
- if (!params) return result;
79
- for (const param of params) {
80
- let resolved;
81
- if (isReference(param)) {
82
- const ref = resolveRef(doc, param.$ref);
83
- if (!ref) continue;
84
- resolved = ref;
85
- } else resolved = param;
86
- const parsed = {
87
- name: resolved.name,
88
- in: resolved.in,
89
- required: resolved.required ?? resolved.in === "path",
90
- description: resolved.description,
91
- schema: resolved.schema,
92
- deprecated: resolved.deprecated ?? false
93
- };
94
- result[resolved.in]?.push(parsed);
95
- }
96
- return result;
97
- }
98
- /**
99
- * Generate an operationId if not present.
100
- */
101
- function generateOperationId(method, path) {
102
- return method + path.split("/").filter(Boolean).map((part) => {
103
- if (part.startsWith("{") && part.endsWith("}")) return "By" + part.slice(1, -1).charAt(0).toUpperCase() + part.slice(2, -1);
104
- return part.charAt(0).toUpperCase() + part.slice(1);
105
- }).join("");
106
- }
107
- /**
108
- * Parse a single operation.
109
- */
110
- function parseOperation(doc, method, path, operation, pathParams) {
111
- const params = parseParameters(doc, [...pathParams ?? [], ...operation.parameters ?? []]);
112
- let requestBody;
113
- if (operation.requestBody) {
114
- const body = isReference(operation.requestBody) ? resolveRef(doc, operation.requestBody.$ref) : operation.requestBody;
115
- if (body) {
116
- const contentType = Object.keys(body.content ?? {})[0] ?? "application/json";
117
- const content = body.content?.[contentType];
118
- if (content?.schema) requestBody = {
119
- required: body.required ?? false,
120
- schema: resolveSchema(doc, content.schema),
121
- contentType
122
- };
123
- }
124
- }
125
- const responses = {};
126
- for (const [status, response] of Object.entries(operation.responses ?? {})) {
127
- const resolved = isReference(response) ? resolveRef(doc, response.$ref) : response;
128
- if (resolved) {
129
- const contentType = Object.keys(resolved.content ?? {})[0];
130
- const content = contentType ? resolved.content?.[contentType] : void 0;
131
- responses[status] = {
132
- description: resolved.description,
133
- schema: content?.schema ? resolveSchema(doc, content.schema) : void 0,
134
- contentType
135
- };
136
- }
137
- }
138
- const contractSpecMeta = operation?.["x-contractspec"];
139
- return {
140
- operationId: operation.operationId ?? generateOperationId(method, path),
141
- method,
142
- path,
143
- summary: operation.summary,
144
- description: operation.description,
145
- tags: operation.tags ?? [],
146
- pathParams: params.path,
147
- queryParams: params.query,
148
- headerParams: params.header,
149
- cookieParams: params.cookie,
150
- requestBody,
151
- responses,
152
- deprecated: operation.deprecated ?? false,
153
- security: operation.security,
154
- contractSpecMeta
155
- };
156
- }
157
- /**
158
- * Parse an OpenAPI document into a structured result.
159
- */
160
- function parseOpenApiDocument(doc, _options = {}) {
161
- const version = detectVersion(doc);
162
- const warnings = [];
163
- const operations = [];
164
- for (const [path, pathItem] of Object.entries(doc.paths ?? {})) {
165
- if (!pathItem) continue;
166
- const pathParams = pathItem.parameters;
167
- for (const method of HTTP_METHODS) {
168
- const operation = pathItem[method];
169
- if (operation) try {
170
- operations.push(parseOperation(doc, method, path, operation, pathParams));
171
- } catch (error) {
172
- warnings.push(`Failed to parse ${method.toUpperCase()} ${path}: ${error}`);
173
- }
174
- }
175
- }
176
- const schemas = {};
177
- const components = doc.components;
178
- if (components?.schemas) for (const [name, schema] of Object.entries(components.schemas)) schemas[name] = schema;
179
- const servers = (doc.servers ?? []).map((s) => ({
180
- url: s.url,
181
- description: s.description,
182
- variables: s.variables
183
- }));
184
- return {
185
- document: doc,
186
- version,
187
- info: {
188
- title: doc.info.title,
189
- version: doc.info.version,
190
- description: doc.info.description
191
- },
192
- operations,
193
- schemas,
194
- servers,
195
- warnings
196
- };
197
- }
198
- /**
199
- * Parse OpenAPI from a file path or URL.
200
- * Note: This is an async function that requires I/O adapters.
201
- * For pure parsing, use parseOpenApiString or parseOpenApiDocument.
202
- */
203
- async function parseOpenApi(source, options = {}) {
204
- const { fetch: fetchFn = globalThis.fetch, readFile, timeout = 3e4 } = options;
205
- let content;
206
- let format;
207
- if (source.startsWith("http://") || source.startsWith("https://")) {
208
- const controller = new AbortController();
209
- const timeoutId = setTimeout(() => controller.abort(), timeout);
210
- try {
211
- const response = await fetchFn(source, { signal: controller.signal });
212
- if (!response.ok) throw new Error(`HTTP ${response.status}: ${response.statusText}`);
213
- content = await response.text();
214
- } finally {
215
- clearTimeout(timeoutId);
216
- }
217
- if (source.endsWith(".yaml") || source.endsWith(".yml")) format = "yaml";
218
- else if (source.endsWith(".json")) format = "json";
219
- else format = detectFormat(content);
220
- } else {
221
- if (!readFile) throw new Error("readFile adapter required for file paths");
222
- content = await readFile(source);
223
- if (source.endsWith(".yaml") || source.endsWith(".yml")) format = "yaml";
224
- else if (source.endsWith(".json")) format = "json";
225
- else format = detectFormat(content);
226
- }
227
- return parseOpenApiDocument(parseOpenApiString(content, format), options);
228
- }
229
-
230
- //#endregion
231
- export { detectFormat, detectVersion, parseOpenApi, parseOpenApiDocument, parseOpenApiString };
@@ -1,201 +0,0 @@
1
- import { toCamelCase, toPascalCase, toValidIdentifier } from "../common/utils.js";
2
-
3
- //#region ../../libs/contracts-transformers/dist/openapi/schema-converter.js
4
- /**
5
- * Map JSON Schema types to ContractSpec ScalarTypeEnum values.
6
- */
7
- const JSON_SCHEMA_TO_SCALAR = {
8
- string: "ScalarTypeEnum.STRING",
9
- integer: "ScalarTypeEnum.INT",
10
- number: "ScalarTypeEnum.FLOAT",
11
- boolean: "ScalarTypeEnum.BOOLEAN",
12
- "string:date": "ScalarTypeEnum.DATE",
13
- "string:date-time": "ScalarTypeEnum.DATE_TIME",
14
- "string:email": "ScalarTypeEnum.EMAIL",
15
- "string:uri": "ScalarTypeEnum.URL",
16
- "string:uuid": "ScalarTypeEnum.ID"
17
- };
18
- /**
19
- * Check if a schema is a reference object.
20
- */
21
- function isReference(schema) {
22
- return "$ref" in schema;
23
- }
24
- /**
25
- * Extract type name from a $ref.
26
- */
27
- function typeNameFromRef(ref) {
28
- const parts = ref.split("/");
29
- return parts[parts.length - 1] ?? "Unknown";
30
- }
31
- /**
32
- * Convert a JSON Schema to a TypeScript type representation.
33
- */
34
- function jsonSchemaToType(schema, name) {
35
- if (isReference(schema)) return {
36
- type: toPascalCase(typeNameFromRef(schema.$ref)),
37
- optional: false,
38
- array: false,
39
- primitive: false
40
- };
41
- const schemaObj = schema;
42
- const type = schemaObj["type"];
43
- const format = schemaObj["format"];
44
- const nullable = schemaObj["nullable"];
45
- if (type === "array") {
46
- const items = schemaObj["items"];
47
- if (items) return {
48
- ...jsonSchemaToType(items, name),
49
- array: true,
50
- optional: nullable ?? false
51
- };
52
- return {
53
- type: "unknown",
54
- optional: nullable ?? false,
55
- array: true,
56
- primitive: false
57
- };
58
- }
59
- if (type === "object" || schemaObj["properties"]) return {
60
- type: name ? toPascalCase(name) : "Record<string, unknown>",
61
- optional: nullable ?? false,
62
- array: false,
63
- primitive: false
64
- };
65
- if (schemaObj["enum"]) return {
66
- type: name ? toPascalCase(name) : "string",
67
- optional: nullable ?? false,
68
- array: false,
69
- primitive: false
70
- };
71
- format && `${type}${format}`;
72
- if (type === "string") return {
73
- type: "string",
74
- optional: nullable ?? false,
75
- array: false,
76
- primitive: true
77
- };
78
- if (type === "integer" || type === "number") return {
79
- type: "number",
80
- optional: nullable ?? false,
81
- array: false,
82
- primitive: true
83
- };
84
- if (type === "boolean") return {
85
- type: "boolean",
86
- optional: nullable ?? false,
87
- array: false,
88
- primitive: true
89
- };
90
- return {
91
- type: "unknown",
92
- optional: nullable ?? false,
93
- array: false,
94
- primitive: false
95
- };
96
- }
97
- /**
98
- * Get the ScalarTypeEnum value for a JSON Schema type.
99
- */
100
- function getScalarType(schema) {
101
- if (isReference(schema)) return;
102
- const schemaObj = schema;
103
- const type = schemaObj["type"];
104
- const format = schemaObj["format"];
105
- if (!type) return void 0;
106
- return JSON_SCHEMA_TO_SCALAR[format ? `${type}:${format}` : type] ?? JSON_SCHEMA_TO_SCALAR[type];
107
- }
108
- /**
109
- * Convert a JSON Schema to a SchemaModel field definition.
110
- */
111
- function jsonSchemaToField(schema, fieldName, required) {
112
- const type = jsonSchemaToType(schema, fieldName);
113
- const scalarType = getScalarType(schema);
114
- let enumValues;
115
- if (!isReference(schema)) {
116
- const enumArr = schema["enum"];
117
- if (enumArr) enumValues = enumArr.map(String);
118
- }
119
- return {
120
- name: toValidIdentifier(toCamelCase(fieldName)),
121
- type: {
122
- ...type,
123
- optional: !required || type.optional,
124
- description: !isReference(schema) ? schema["description"] : void 0
125
- },
126
- scalarType,
127
- enumValues
128
- };
129
- }
130
- /**
131
- * Generate SchemaModel TypeScript code for a JSON Schema object.
132
- */
133
- function generateSchemaModelCode(schema, modelName, indent = 0) {
134
- const spaces = " ".repeat(indent);
135
- const fields = [];
136
- let description;
137
- if (isReference(schema)) return {
138
- name: toPascalCase(typeNameFromRef(schema.$ref)),
139
- fields: [],
140
- code: `// Reference to ${schema.$ref}`
141
- };
142
- const schemaObj = schema;
143
- description = schemaObj["description"];
144
- const properties = schemaObj["properties"];
145
- const required = schemaObj["required"] ?? [];
146
- if (!properties) return {
147
- name: toPascalCase(modelName),
148
- description,
149
- fields: [],
150
- code: `${spaces}// Empty schema for ${modelName}`
151
- };
152
- for (const [propName, propSchema] of Object.entries(properties)) {
153
- const isRequired = required.includes(propName);
154
- fields.push(jsonSchemaToField(propSchema, propName, isRequired));
155
- }
156
- const lines = [];
157
- const safeModelName = toPascalCase(toValidIdentifier(modelName));
158
- lines.push(`${spaces}export const ${safeModelName} = defineSchemaModel({`);
159
- lines.push(`${spaces} name: '${safeModelName}',`);
160
- if (description) lines.push(`${spaces} description: ${JSON.stringify(description)},`);
161
- lines.push(`${spaces} fields: {`);
162
- for (const field of fields) {
163
- const fieldLines = generateFieldCode(field, indent + 2);
164
- lines.push(fieldLines);
165
- }
166
- lines.push(`${spaces} },`);
167
- lines.push(`${spaces}});`);
168
- return {
169
- name: safeModelName,
170
- description,
171
- fields,
172
- code: lines.join("\n")
173
- };
174
- }
175
- /**
176
- * Generate TypeScript code for a single field.
177
- */
178
- function generateFieldCode(field, indent) {
179
- const spaces = " ".repeat(indent);
180
- const lines = [];
181
- lines.push(`${spaces}${field.name}: {`);
182
- if (field.enumValues) lines.push(`${spaces} type: new EnumType([${field.enumValues.map((v) => `'${v}'`).join(", ")}]),`);
183
- else if (field.scalarType) lines.push(`${spaces} type: ${field.scalarType},`);
184
- else lines.push(`${spaces} type: ${field.type.type}, // TODO: Define or import this type`);
185
- if (field.type.optional) lines.push(`${spaces} isOptional: true,`);
186
- if (field.type.array) lines.push(`${spaces} isArray: true,`);
187
- lines.push(`${spaces}},`);
188
- return lines.join("\n");
189
- }
190
- /**
191
- * Generate import statements for a SchemaModel.
192
- */
193
- function generateImports(fields) {
194
- const imports = /* @__PURE__ */ new Set();
195
- imports.add("import { defineSchemaModel, ScalarTypeEnum, EnumType } from '@lssm/lib.schema';");
196
- for (const field of fields) if (!field.type.primitive && !field.enumValues && !field.scalarType) {}
197
- return Array.from(imports).join("\n");
198
- }
199
-
200
- //#endregion
201
- export { generateImports, generateSchemaModelCode, getScalarType, jsonSchemaToField, jsonSchemaToType };