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

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 (502) 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 +4531 -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 +28 -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/regenerator.d.ts +18 -16
  146. package/dist/services/regenerator.d.ts.map +1 -0
  147. package/dist/services/registry.d.ts +25 -26
  148. package/dist/services/registry.d.ts.map +1 -0
  149. package/dist/services/setup/config-generators.d.ts +14 -13
  150. package/dist/services/setup/config-generators.d.ts.map +1 -0
  151. package/dist/services/setup/file-merger.d.ts +5 -7
  152. package/dist/services/setup/file-merger.d.ts.map +1 -0
  153. package/dist/services/setup/index.d.ts +10 -0
  154. package/dist/services/setup/index.d.ts.map +1 -0
  155. package/dist/services/setup/setup-service.d.ts +10 -8
  156. package/dist/services/setup/setup-service.d.ts.map +1 -0
  157. package/dist/services/setup/targets/agents-md.d.ts +12 -0
  158. package/dist/services/setup/targets/agents-md.d.ts.map +1 -0
  159. package/dist/services/setup/targets/cli-config.d.ts +12 -0
  160. package/dist/services/setup/targets/cli-config.d.ts.map +1 -0
  161. package/dist/services/setup/targets/cursor-rules.d.ts +10 -0
  162. package/dist/services/setup/targets/cursor-rules.d.ts.map +1 -0
  163. package/dist/services/setup/targets/index.d.ts +10 -0
  164. package/dist/services/setup/targets/index.d.ts.map +1 -0
  165. package/dist/services/setup/targets/mcp-claude.d.ts +11 -0
  166. package/dist/services/setup/targets/mcp-claude.d.ts.map +1 -0
  167. package/dist/services/setup/targets/mcp-cursor.d.ts +10 -0
  168. package/dist/services/setup/targets/mcp-cursor.d.ts.map +1 -0
  169. package/dist/services/setup/targets/vscode-settings.d.ts +13 -0
  170. package/dist/services/setup/targets/vscode-settings.d.ts.map +1 -0
  171. package/dist/services/setup/types.d.ts +51 -53
  172. package/dist/services/setup/types.d.ts.map +1 -0
  173. package/dist/services/sync.d.ts +37 -35
  174. package/dist/services/sync.d.ts.map +1 -0
  175. package/dist/services/test.d.ts +15 -13
  176. package/dist/services/test.d.ts.map +1 -0
  177. package/dist/services/validate-implementation.d.ts +30 -28
  178. package/dist/services/validate-implementation.d.ts.map +1 -0
  179. package/dist/services/validate.d.ts +23 -24
  180. package/dist/services/validate.d.ts.map +1 -0
  181. package/dist/services/verification-cache/adapters/filesystem.d.ts +40 -38
  182. package/dist/services/verification-cache/adapters/filesystem.d.ts.map +1 -0
  183. package/dist/services/verification-cache/adapters/in-memory.d.ts +21 -19
  184. package/dist/services/verification-cache/adapters/in-memory.d.ts.map +1 -0
  185. package/dist/services/verification-cache/adapters/index.d.ts +7 -0
  186. package/dist/services/verification-cache/adapters/index.d.ts.map +1 -0
  187. package/dist/services/verification-cache/adapters/workspace-state.d.ts +39 -37
  188. package/dist/services/verification-cache/adapters/workspace-state.d.ts.map +1 -0
  189. package/dist/services/verification-cache/cache-service.d.ts +55 -53
  190. package/dist/services/verification-cache/cache-service.d.ts.map +1 -0
  191. package/dist/services/verification-cache/index.d.ts +7 -0
  192. package/dist/services/verification-cache/index.d.ts.map +1 -0
  193. package/dist/services/verification-cache/types.d.ts +84 -85
  194. package/dist/services/verification-cache/types.d.ts.map +1 -0
  195. package/dist/services/verify/ai-verifier.d.ts +13 -11
  196. package/dist/services/verify/ai-verifier.d.ts.map +1 -0
  197. package/dist/services/verify/behavior-verifier.d.ts +10 -8
  198. package/dist/services/verify/behavior-verifier.d.ts.map +1 -0
  199. package/dist/services/verify/index.d.ts +18 -0
  200. package/dist/services/verify/index.d.ts.map +1 -0
  201. package/dist/services/verify/structure-verifier.d.ts +12 -8
  202. package/dist/services/verify/structure-verifier.d.ts.map +1 -0
  203. package/dist/services/verify/types.d.ts +114 -115
  204. package/dist/services/verify/types.d.ts.map +1 -0
  205. package/dist/services/verify/verify-service.d.ts +51 -49
  206. package/dist/services/verify/verify-service.d.ts.map +1 -0
  207. package/dist/services/watch.d.ts +22 -21
  208. package/dist/services/watch.d.ts.map +1 -0
  209. package/dist/services/workspace-info.d.ts +40 -37
  210. package/dist/services/workspace-info.d.ts.map +1 -0
  211. package/dist/templates/app-config.template.d.ts +3 -6
  212. package/dist/templates/app-config.template.d.ts.map +1 -0
  213. package/dist/templates/data-view.template.d.ts +3 -6
  214. package/dist/templates/data-view.template.d.ts.map +1 -0
  215. package/dist/templates/event.template.d.ts +3 -7
  216. package/dist/templates/event.template.d.ts.map +1 -0
  217. package/dist/templates/experiment.template.d.ts +3 -6
  218. package/dist/templates/experiment.template.d.ts.map +1 -0
  219. package/dist/templates/handler.template.d.ts +4 -6
  220. package/dist/templates/handler.template.d.ts.map +1 -0
  221. package/dist/templates/index.d.ts +17 -20
  222. package/dist/templates/index.d.ts.map +1 -0
  223. package/dist/templates/integration.template.d.ts +3 -6
  224. package/dist/templates/integration.template.d.ts.map +1 -0
  225. package/dist/templates/knowledge.template.d.ts +3 -6
  226. package/dist/templates/knowledge.template.d.ts.map +1 -0
  227. package/dist/templates/migration.template.d.ts +3 -6
  228. package/dist/templates/migration.template.d.ts.map +1 -0
  229. package/dist/templates/operation.template.d.ts +3 -7
  230. package/dist/templates/operation.template.d.ts.map +1 -0
  231. package/dist/templates/operation.template.test.d.ts +2 -0
  232. package/dist/templates/operation.template.test.d.ts.map +1 -0
  233. package/dist/templates/presentation.template.d.ts +3 -7
  234. package/dist/templates/presentation.template.d.ts.map +1 -0
  235. package/dist/templates/telemetry.template.d.ts +3 -6
  236. package/dist/templates/telemetry.template.d.ts.map +1 -0
  237. package/dist/templates/workflow-runner.template.d.ts +7 -13
  238. package/dist/templates/workflow-runner.template.d.ts.map +1 -0
  239. package/dist/templates/workflow.template.d.ts +3 -6
  240. package/dist/templates/workflow.template.d.ts.map +1 -0
  241. package/dist/types/config.d.ts +18 -20
  242. package/dist/types/config.d.ts.map +1 -0
  243. package/dist/types/index.d.ts +5 -0
  244. package/dist/types/index.d.ts.map +1 -0
  245. package/dist/types.d.ts +338 -311
  246. package/dist/types.d.ts.map +1 -0
  247. package/package.json +16 -15
  248. package/dist/_virtual/rolldown_runtime.js +0 -22
  249. package/dist/adapters/ai.js +0 -82
  250. package/dist/adapters/factory.js +0 -36
  251. package/dist/adapters/fs.js +0 -118
  252. package/dist/adapters/git.js +0 -54
  253. package/dist/adapters/index.js +0 -7
  254. package/dist/adapters/logger.js +0 -80
  255. package/dist/adapters/watcher.js +0 -69
  256. package/dist/adapters/workspace.js +0 -190
  257. package/dist/ai/agents/claude-code-agent.js +0 -181
  258. package/dist/ai/agents/cursor-agent.js +0 -437
  259. package/dist/ai/agents/index.js +0 -5
  260. package/dist/ai/agents/openai-codex-agent.js +0 -166
  261. package/dist/ai/agents/orchestrator.js +0 -142
  262. package/dist/ai/agents/simple-agent.js +0 -91
  263. package/dist/ai/client.js +0 -162
  264. package/dist/ai/index.js +0 -27
  265. package/dist/ai/prompts/code-generation.js +0 -142
  266. package/dist/ai/prompts/index.js +0 -12
  267. package/dist/ai/prompts/spec-creation.js +0 -110
  268. package/dist/ai/providers.js +0 -40
  269. package/dist/formatters/index.js +0 -18
  270. package/dist/formatters/json.js +0 -71
  271. package/dist/formatters/sarif.js +0 -163
  272. package/dist/formatters/text.js +0 -208
  273. package/dist/libs/ai-providers/dist/factory.js +0 -154
  274. package/dist/libs/ai-providers/dist/index.js +0 -4
  275. package/dist/libs/ai-providers/dist/legacy.js +0 -72
  276. package/dist/libs/ai-providers/dist/models.js +0 -287
  277. package/dist/libs/ai-providers/dist/validation.js +0 -1
  278. package/dist/libs/contracts/dist/capabilities/openbanking.js +0 -88
  279. package/dist/libs/contracts/dist/client/index.js +0 -5
  280. package/dist/libs/contracts/dist/client/react/feature-render.js +0 -2
  281. package/dist/libs/contracts/dist/client/react/form-render.js +0 -4
  282. package/dist/libs/contracts/dist/client/react/index.js +0 -4
  283. package/dist/libs/contracts/dist/contract-registry/index.js +0 -1
  284. package/dist/libs/contracts/dist/contract-registry/schemas.js +0 -60
  285. package/dist/libs/contracts/dist/docs/PUBLISHING.docblock.js +0 -16
  286. package/dist/libs/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js +0 -16
  287. package/dist/libs/contracts/dist/docs/index.js +0 -29
  288. package/dist/libs/contracts/dist/docs/presentations.js +0 -71
  289. package/dist/libs/contracts/dist/docs/registry.js +0 -44
  290. package/dist/libs/contracts/dist/docs/tech/PHASE_1_QUICKSTART.docblock.js +0 -16
  291. package/dist/libs/contracts/dist/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js +0 -16
  292. package/dist/libs/contracts/dist/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js +0 -16
  293. package/dist/libs/contracts/dist/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js +0 -16
  294. package/dist/libs/contracts/dist/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js +0 -16
  295. package/dist/libs/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js +0 -80
  296. package/dist/libs/contracts/dist/docs/tech/contracts/openapi-export.docblock.js +0 -57
  297. package/dist/libs/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js +0 -16
  298. package/dist/libs/contracts/dist/docs/tech/llm/llm-integration.docblock.js +0 -357
  299. package/dist/libs/contracts/dist/docs/tech/mcp-endpoints.docblock.js +0 -37
  300. package/dist/libs/contracts/dist/docs/tech/presentation-runtime.docblock.js +0 -16
  301. package/dist/libs/contracts/dist/docs/tech/schema/README.docblock.js +0 -20
  302. package/dist/libs/contracts/dist/docs/tech/studio/learning-events.docblock.js +0 -48
  303. package/dist/libs/contracts/dist/docs/tech/studio/learning-journeys.docblock.js +0 -79
  304. package/dist/libs/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js +0 -84
  305. package/dist/libs/contracts/dist/docs/tech/studio/project-access-teams.docblock.js +0 -45
  306. package/dist/libs/contracts/dist/docs/tech/studio/project-routing.docblock.js +0 -67
  307. package/dist/libs/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js +0 -40
  308. package/dist/libs/contracts/dist/docs/tech/studio/team-invitations.docblock.js +0 -69
  309. package/dist/libs/contracts/dist/docs/tech/studio/workspace-ops.docblock.js +0 -47
  310. package/dist/libs/contracts/dist/docs/tech/studio/workspaces.docblock.js +0 -62
  311. package/dist/libs/contracts/dist/docs/tech/telemetry-ingest.docblock.js +0 -155
  312. package/dist/libs/contracts/dist/docs/tech/templates/runtime.docblock.js +0 -20
  313. package/dist/libs/contracts/dist/docs/tech/vscode-extension.docblock.js +0 -101
  314. package/dist/libs/contracts/dist/docs/tech/workflows/overview.docblock.js +0 -20
  315. package/dist/libs/contracts/dist/events.js +0 -8
  316. package/dist/libs/contracts/dist/experiments/evaluator.js +0 -1
  317. package/dist/libs/contracts/dist/index.js +0 -72
  318. package/dist/libs/contracts/dist/install.js +0 -2
  319. package/dist/libs/contracts/dist/integrations/contracts.js +0 -377
  320. package/dist/libs/contracts/dist/integrations/index.js +0 -18
  321. package/dist/libs/contracts/dist/integrations/openbanking/contracts/accounts.js +0 -228
  322. package/dist/libs/contracts/dist/integrations/openbanking/contracts/balances.js +0 -159
  323. package/dist/libs/contracts/dist/integrations/openbanking/contracts/index.js +0 -3
  324. package/dist/libs/contracts/dist/integrations/openbanking/contracts/transactions.js +0 -210
  325. package/dist/libs/contracts/dist/integrations/openbanking/models.js +0 -242
  326. package/dist/libs/contracts/dist/integrations/openbanking/telemetry.js +0 -13
  327. package/dist/libs/contracts/dist/integrations/providers/elevenlabs.js +0 -52
  328. package/dist/libs/contracts/dist/integrations/providers/gcs-storage.js +0 -75
  329. package/dist/libs/contracts/dist/integrations/providers/gmail.js +0 -87
  330. package/dist/libs/contracts/dist/integrations/providers/google-calendar.js +0 -66
  331. package/dist/libs/contracts/dist/integrations/providers/index.js +0 -11
  332. package/dist/libs/contracts/dist/integrations/providers/mistral.js +0 -68
  333. package/dist/libs/contracts/dist/integrations/providers/postmark.js +0 -68
  334. package/dist/libs/contracts/dist/integrations/providers/powens.js +0 -116
  335. package/dist/libs/contracts/dist/integrations/providers/qdrant.js +0 -73
  336. package/dist/libs/contracts/dist/integrations/providers/registry.js +0 -10
  337. package/dist/libs/contracts/dist/integrations/providers/stripe.js +0 -83
  338. package/dist/libs/contracts/dist/integrations/providers/twilio-sms.js +0 -61
  339. package/dist/libs/contracts/dist/jsonschema.js +0 -24
  340. package/dist/libs/contracts/dist/knowledge/contracts.js +0 -306
  341. package/dist/libs/contracts/dist/knowledge/index.js +0 -7
  342. package/dist/libs/contracts/dist/knowledge/spaces/email-threads.js +0 -34
  343. package/dist/libs/contracts/dist/knowledge/spaces/financial-docs.js +0 -34
  344. package/dist/libs/contracts/dist/knowledge/spaces/financial-overview.js +0 -38
  345. package/dist/libs/contracts/dist/knowledge/spaces/index.js +0 -6
  346. package/dist/libs/contracts/dist/knowledge/spaces/product-canon.js +0 -34
  347. package/dist/libs/contracts/dist/knowledge/spaces/support-faq.js +0 -37
  348. package/dist/libs/contracts/dist/knowledge/spaces/uploaded-docs.js +0 -34
  349. package/dist/libs/contracts/dist/llm/exporters.js +0 -352
  350. package/dist/libs/contracts/dist/llm/index.js +0 -2
  351. package/dist/libs/contracts/dist/llm/prompts.js +0 -211
  352. package/dist/libs/contracts/dist/onboarding-base.js +0 -196
  353. package/dist/libs/contracts/dist/openapi.js +0 -75
  354. package/dist/libs/contracts/dist/ownership.js +0 -21
  355. package/dist/libs/contracts/dist/presentations.js +0 -1
  356. package/dist/libs/contracts/dist/presentations.v2.js +0 -11
  357. package/dist/libs/contracts/dist/prompt.js +0 -1
  358. package/dist/libs/contracts/dist/promptRegistry.js +0 -1
  359. package/dist/libs/contracts/dist/regenerator/index.js +0 -2
  360. package/dist/libs/contracts/dist/regenerator/service.js +0 -92
  361. package/dist/libs/contracts/dist/regenerator/utils.js +0 -51
  362. package/dist/libs/contracts/dist/registry.js +0 -208
  363. package/dist/libs/contracts/dist/resources.js +0 -1
  364. package/dist/libs/contracts/dist/schema/dist/EnumType.js +0 -2
  365. package/dist/libs/contracts/dist/schema/dist/FieldType.js +0 -49
  366. package/dist/libs/contracts/dist/schema/dist/ScalarTypeEnum.js +0 -236
  367. package/dist/libs/contracts/dist/schema/dist/SchemaModel.js +0 -34
  368. package/dist/libs/contracts/dist/schema/dist/entity/defineEntity.js +0 -1
  369. package/dist/libs/contracts/dist/schema/dist/entity/index.js +0 -2
  370. package/dist/libs/contracts/dist/schema/dist/entity/types.js +0 -1
  371. package/dist/libs/contracts/dist/schema/dist/index.js +0 -6
  372. package/dist/libs/contracts/dist/server/graphql-pothos.js +0 -6
  373. package/dist/libs/contracts/dist/server/index.js +0 -8
  374. package/dist/libs/contracts/dist/server/mcp/createMcpServer.js +0 -4
  375. package/dist/libs/contracts/dist/server/mcp/registerPresentations.js +0 -2
  376. package/dist/libs/contracts/dist/server/mcp/registerPrompts.js +0 -1
  377. package/dist/libs/contracts/dist/server/mcp/registerResources.js +0 -2
  378. package/dist/libs/contracts/dist/server/mcp/registerTools.js +0 -1
  379. package/dist/libs/contracts/dist/server/provider-mcp.js +0 -1
  380. package/dist/libs/contracts/dist/server/rest-elysia.js +0 -1
  381. package/dist/libs/contracts/dist/server/rest-express.js +0 -1
  382. package/dist/libs/contracts/dist/server/rest-generic.js +0 -1
  383. package/dist/libs/contracts/dist/server/rest-next-app.js +0 -1
  384. package/dist/libs/contracts/dist/server/rest-next-pages.js +0 -1
  385. package/dist/libs/contracts/dist/spec.js +0 -35
  386. package/dist/libs/contracts/dist/telemetry/index.js +0 -1
  387. package/dist/libs/contracts/dist/telemetry/tracker.js +0 -1
  388. package/dist/libs/contracts/dist/tests/index.js +0 -1
  389. package/dist/libs/contracts/dist/tests/runner.js +0 -150
  390. package/dist/libs/contracts/dist/workflow/index.js +0 -1
  391. package/dist/libs/contracts/dist/workflow/runner.js +0 -1
  392. package/dist/libs/contracts-transformers/dist/common/utils.js +0 -47
  393. package/dist/libs/contracts-transformers/dist/openapi/exporter.js +0 -1
  394. package/dist/libs/contracts-transformers/dist/openapi/importer.js +0 -255
  395. package/dist/libs/contracts-transformers/dist/openapi/index.js +0 -4
  396. package/dist/libs/contracts-transformers/dist/openapi/parser.js +0 -231
  397. package/dist/libs/contracts-transformers/dist/openapi/schema-converter.js +0 -201
  398. package/dist/modules/contractspec-workspace/dist/ai/code-generation.js +0 -137
  399. package/dist/modules/contractspec-workspace/dist/ai/spec-creation.js +0 -101
  400. package/dist/modules/contractspec-workspace/dist/analysis/deps/graph.js +0 -84
  401. package/dist/modules/contractspec-workspace/dist/analysis/deps/parse-imports.js +0 -30
  402. package/dist/modules/contractspec-workspace/dist/analysis/diff/semantic.js +0 -96
  403. package/dist/modules/contractspec-workspace/dist/analysis/feature-scan.js +0 -151
  404. package/dist/modules/contractspec-workspace/dist/analysis/spec-scan.js +0 -344
  405. package/dist/modules/contractspec-workspace/dist/analysis/validate/spec-structure.js +0 -122
  406. package/dist/modules/contractspec-workspace/dist/templates/app-config.js +0 -105
  407. package/dist/modules/contractspec-workspace/dist/templates/data-view.js +0 -68
  408. package/dist/modules/contractspec-workspace/dist/templates/event.js +0 -38
  409. package/dist/modules/contractspec-workspace/dist/templates/experiment.js +0 -87
  410. package/dist/modules/contractspec-workspace/dist/templates/handler.js +0 -95
  411. package/dist/modules/contractspec-workspace/dist/templates/integration-utils.js +0 -104
  412. package/dist/modules/contractspec-workspace/dist/templates/integration.js +0 -62
  413. package/dist/modules/contractspec-workspace/dist/templates/knowledge.js +0 -68
  414. package/dist/modules/contractspec-workspace/dist/templates/migration.js +0 -60
  415. package/dist/modules/contractspec-workspace/dist/templates/operation.js +0 -100
  416. package/dist/modules/contractspec-workspace/dist/templates/presentation.js +0 -78
  417. package/dist/modules/contractspec-workspace/dist/templates/telemetry.js +0 -89
  418. package/dist/modules/contractspec-workspace/dist/templates/utils.js +0 -38
  419. package/dist/modules/contractspec-workspace/dist/templates/workflow-runner.js +0 -48
  420. package/dist/modules/contractspec-workspace/dist/templates/workflow.js +0 -67
  421. package/dist/modules/contractspec-workspace/dist/types/generation-types.js +0 -20
  422. package/dist/services/agent-guide/adapters/claude-code.js +0 -144
  423. package/dist/services/agent-guide/adapters/cursor-cli.js +0 -135
  424. package/dist/services/agent-guide/adapters/generic-mcp.js +0 -159
  425. package/dist/services/agent-guide/adapters/index.js +0 -30
  426. package/dist/services/agent-guide/agent-guide-service.js +0 -148
  427. package/dist/services/agent-guide/index.js +0 -5
  428. package/dist/services/build.js +0 -140
  429. package/dist/services/ci-check/ci-check-service.js +0 -393
  430. package/dist/services/ci-check/index.js +0 -2
  431. package/dist/services/ci-check/types.js +0 -28
  432. package/dist/services/clean.js +0 -71
  433. package/dist/services/config.js +0 -76
  434. package/dist/services/deps.js +0 -62
  435. package/dist/services/diff.js +0 -33
  436. package/dist/services/doctor/checks/ai.js +0 -118
  437. package/dist/services/doctor/checks/cli.js +0 -146
  438. package/dist/services/doctor/checks/config.js +0 -170
  439. package/dist/services/doctor/checks/deps.js +0 -180
  440. package/dist/services/doctor/checks/index.js +0 -6
  441. package/dist/services/doctor/checks/mcp.js +0 -144
  442. package/dist/services/doctor/checks/workspace.js +0 -243
  443. package/dist/services/doctor/doctor-service.js +0 -115
  444. package/dist/services/doctor/index.js +0 -2
  445. package/dist/services/doctor/types.js +0 -26
  446. package/dist/services/implementation/discovery.js +0 -143
  447. package/dist/services/implementation/index.js +0 -2
  448. package/dist/services/implementation/resolver.js +0 -223
  449. package/dist/services/index.js +0 -53
  450. package/dist/services/integrity-diagram.js +0 -274
  451. package/dist/services/integrity.js +0 -272
  452. package/dist/services/list.js +0 -35
  453. package/dist/services/openapi/export-service.js +0 -51
  454. package/dist/services/openapi/import-service.js +0 -75
  455. package/dist/services/openapi/index.js +0 -4
  456. package/dist/services/openapi/sync-service.js +0 -121
  457. package/dist/services/openapi/validate-service.js +0 -130
  458. package/dist/services/regenerator.js +0 -23
  459. package/dist/services/registry.js +0 -73
  460. package/dist/services/setup/config-generators.js +0 -237
  461. package/dist/services/setup/file-merger.js +0 -60
  462. package/dist/services/setup/index.js +0 -4
  463. package/dist/services/setup/setup-service.js +0 -95
  464. package/dist/services/setup/targets/agents-md.js +0 -46
  465. package/dist/services/setup/targets/cli-config.js +0 -59
  466. package/dist/services/setup/targets/cursor-rules.js +0 -47
  467. package/dist/services/setup/targets/mcp-claude.js +0 -59
  468. package/dist/services/setup/targets/mcp-cursor.js +0 -58
  469. package/dist/services/setup/targets/vscode-settings.js +0 -62
  470. package/dist/services/setup/types.js +0 -26
  471. package/dist/services/sync.js +0 -62
  472. package/dist/services/test.js +0 -30
  473. package/dist/services/validate-implementation.js +0 -69
  474. package/dist/services/validate.js +0 -47
  475. package/dist/services/verification-cache/adapters/filesystem.js +0 -121
  476. package/dist/services/verification-cache/adapters/in-memory.js +0 -45
  477. package/dist/services/verification-cache/adapters/index.js +0 -3
  478. package/dist/services/verification-cache/adapters/workspace-state.js +0 -90
  479. package/dist/services/verification-cache/cache-service.js +0 -255
  480. package/dist/services/verification-cache/index.js +0 -6
  481. package/dist/services/verification-cache/types.js +0 -15
  482. package/dist/services/verify/ai-verifier.js +0 -403
  483. package/dist/services/verify/behavior-verifier.js +0 -185
  484. package/dist/services/verify/index.js +0 -4
  485. package/dist/services/verify/structure-verifier.js +0 -195
  486. package/dist/services/verify/verify-service.js +0 -203
  487. package/dist/services/watch.js +0 -31
  488. package/dist/services/workspace-info.js +0 -102
  489. package/dist/templates/app-config.template.js +0 -106
  490. package/dist/templates/data-view.template.js +0 -69
  491. package/dist/templates/event.template.js +0 -39
  492. package/dist/templates/experiment.template.js +0 -88
  493. package/dist/templates/handler.template.js +0 -99
  494. package/dist/templates/index.js +0 -36
  495. package/dist/templates/integration.template.js +0 -159
  496. package/dist/templates/knowledge.template.js +0 -74
  497. package/dist/templates/migration.template.js +0 -61
  498. package/dist/templates/operation.template.js +0 -104
  499. package/dist/templates/presentation.template.js +0 -79
  500. package/dist/templates/telemetry.template.js +0 -90
  501. package/dist/templates/workflow-runner.template.js +0 -49
  502. package/dist/templates/workflow.template.js +0 -68
@@ -1,272 +0,0 @@
1
- import { scanAllSpecsFromSource } from "../modules/contractspec-workspace/dist/analysis/spec-scan.js";
2
- import { isFeatureFile, scanFeatureSource } from "../modules/contractspec-workspace/dist/analysis/feature-scan.js";
3
-
4
- //#region src/services/integrity.ts
5
- /**
6
- * Contract integrity analysis service.
7
- *
8
- * Analyzes contract specs and features to detect:
9
- * - Orphaned specs (not linked to any feature)
10
- * - Unresolved references (broken event/op/presentation refs)
11
- * - Feature coverage metrics
12
- */
13
- /**
14
- * Build a spec key from name and version.
15
- */
16
- function specKey(name, version) {
17
- return `${name}.v${version}`;
18
- }
19
- /**
20
- * Create an empty spec inventory.
21
- */
22
- function createEmptyInventory() {
23
- return {
24
- operations: /* @__PURE__ */ new Map(),
25
- events: /* @__PURE__ */ new Map(),
26
- presentations: /* @__PURE__ */ new Map(),
27
- capabilities: /* @__PURE__ */ new Map(),
28
- workflows: /* @__PURE__ */ new Map(),
29
- dataViews: /* @__PURE__ */ new Map(),
30
- forms: /* @__PURE__ */ new Map(),
31
- migrations: /* @__PURE__ */ new Map(),
32
- experiments: /* @__PURE__ */ new Map(),
33
- integrations: /* @__PURE__ */ new Map(),
34
- knowledge: /* @__PURE__ */ new Map(),
35
- telemetry: /* @__PURE__ */ new Map(),
36
- appConfigs: /* @__PURE__ */ new Map(),
37
- policies: /* @__PURE__ */ new Map(),
38
- testSpecs: /* @__PURE__ */ new Map()
39
- };
40
- }
41
- /**
42
- * Get the inventory map for a spec type.
43
- */
44
- function getInventoryMap(inventory, specType) {
45
- return {
46
- operation: inventory.operations,
47
- event: inventory.events,
48
- presentation: inventory.presentations,
49
- capability: inventory.capabilities,
50
- workflow: inventory.workflows,
51
- "data-view": inventory.dataViews,
52
- form: inventory.forms,
53
- migration: inventory.migrations,
54
- experiment: inventory.experiments,
55
- integration: inventory.integrations,
56
- knowledge: inventory.knowledge,
57
- telemetry: inventory.telemetry,
58
- "app-config": inventory.appConfigs,
59
- policy: inventory.policies,
60
- "test-spec": inventory.testSpecs
61
- }[specType];
62
- }
63
- /**
64
- * Analyze contract integrity.
65
- */
66
- async function analyzeIntegrity(adapters, options = {}) {
67
- const { fs, logger } = adapters;
68
- logger.info("Starting integrity analysis...", { options });
69
- const files = await fs.glob({ pattern: options.pattern });
70
- const inventory = createEmptyInventory();
71
- const features = [];
72
- const issues = [];
73
- for (const file of files) {
74
- const content = await fs.readFile(file);
75
- if (isFeatureFile(file)) {
76
- const feature = scanFeatureSource(content, file);
77
- features.push(feature);
78
- } else {
79
- const specs = scanAllSpecsFromSource(content, file);
80
- for (const spec of specs) if (spec.specType !== "unknown" && spec.specType !== "feature") {
81
- const map = getInventoryMap(inventory, spec.specType);
82
- if (map && spec.name && spec.version !== void 0) {
83
- const key = specKey(spec.name, spec.version);
84
- map.set(key, {
85
- name: spec.name,
86
- version: spec.version,
87
- file: spec.filePath,
88
- type: spec.specType,
89
- stability: spec.stability
90
- });
91
- }
92
- }
93
- }
94
- }
95
- const relevantFeatures = options.featureKey ? features.filter((f) => f.key === options.featureKey) : features;
96
- const referencedSpecs = /* @__PURE__ */ new Set();
97
- for (const feature of relevantFeatures) {
98
- for (const ref of feature.operations) {
99
- const key = specKey(ref.name, ref.version);
100
- referencedSpecs.add(`operation:${key}`);
101
- if (!inventory.operations.has(key)) issues.push({
102
- severity: "error",
103
- type: "unresolved-ref",
104
- message: `Operation ${ref.name}.v${ref.version} not found`,
105
- file: feature.filePath,
106
- featureKey: feature.key,
107
- specType: "operation",
108
- ref
109
- });
110
- }
111
- for (const ref of feature.events) {
112
- const key = specKey(ref.name, ref.version);
113
- referencedSpecs.add(`event:${key}`);
114
- if (!inventory.events.has(key)) issues.push({
115
- severity: "error",
116
- type: "unresolved-ref",
117
- message: `Event ${ref.name}.v${ref.version} not found`,
118
- file: feature.filePath,
119
- featureKey: feature.key,
120
- specType: "event",
121
- ref
122
- });
123
- }
124
- for (const ref of feature.presentations) {
125
- const key = specKey(ref.name, ref.version);
126
- referencedSpecs.add(`presentation:${key}`);
127
- if (!inventory.presentations.has(key)) issues.push({
128
- severity: "error",
129
- type: "unresolved-ref",
130
- message: `Presentation ${ref.name}.v${ref.version} not found`,
131
- file: feature.filePath,
132
- featureKey: feature.key,
133
- specType: "presentation",
134
- ref
135
- });
136
- }
137
- for (const ref of feature.experiments) {
138
- const key = specKey(ref.name, ref.version);
139
- referencedSpecs.add(`experiment:${key}`);
140
- if (!inventory.experiments.has(key)) issues.push({
141
- severity: "error",
142
- type: "unresolved-ref",
143
- message: `Experiment ${ref.name}.v${ref.version} not found`,
144
- file: feature.filePath,
145
- featureKey: feature.key,
146
- specType: "experiment",
147
- ref
148
- });
149
- }
150
- for (const ref of feature.capabilities.provides) {
151
- const key = specKey(ref.name, ref.version);
152
- referencedSpecs.add(`capability:${key}`);
153
- if (!inventory.capabilities.has(key)) issues.push({
154
- severity: "warning",
155
- type: "unresolved-ref",
156
- message: `Provided capability ${ref.name}.v${ref.version} not found`,
157
- file: feature.filePath,
158
- featureKey: feature.key,
159
- specType: "capability",
160
- ref
161
- });
162
- }
163
- for (const ref of feature.capabilities.requires) {
164
- const key = specKey(ref.name, ref.version);
165
- referencedSpecs.add(`capability:${key}`);
166
- }
167
- for (const link of feature.opToPresentationLinks) {
168
- const opKey = specKey(link.op.name, link.op.version);
169
- const presKey = specKey(link.pres.name, link.pres.version);
170
- if (!inventory.operations.has(opKey)) issues.push({
171
- severity: "error",
172
- type: "broken-link",
173
- message: `Linked operation ${link.op.name}.v${link.op.version} not found`,
174
- file: feature.filePath,
175
- featureKey: feature.key,
176
- specType: "operation",
177
- ref: link.op
178
- });
179
- if (!inventory.presentations.has(presKey)) issues.push({
180
- severity: "error",
181
- type: "broken-link",
182
- message: `Linked presentation ${link.pres.name}.v${link.pres.version} not found`,
183
- file: feature.filePath,
184
- featureKey: feature.key,
185
- specType: "presentation",
186
- ref: link.pres
187
- });
188
- }
189
- }
190
- const orphanedSpecs = [];
191
- const typesThatCanBeOrphaned = [
192
- "operation",
193
- "event",
194
- "presentation",
195
- "experiment"
196
- ];
197
- for (const type of typesThatCanBeOrphaned) {
198
- const map = getInventoryMap(inventory, type);
199
- if (!map) continue;
200
- for (const [key, location] of map) if (!referencedSpecs.has(`${type}:${key}`)) {
201
- orphanedSpecs.push(location);
202
- issues.push({
203
- severity: "warning",
204
- type: "orphaned",
205
- message: `${type} ${location.name}.v${location.version} is not linked to any feature`,
206
- file: location.file,
207
- specName: location.name,
208
- specType: location.type
209
- });
210
- }
211
- }
212
- const coverageByType = {};
213
- for (const type of typesThatCanBeOrphaned) {
214
- const map = getInventoryMap(inventory, type);
215
- if (!map) continue;
216
- const total = map.size;
217
- let covered = 0;
218
- for (const key of map.keys()) if (referencedSpecs.has(`${type}:${key}`)) covered++;
219
- coverageByType[type] = {
220
- total,
221
- covered,
222
- orphaned: total - covered
223
- };
224
- }
225
- const totalSpecs = Object.values(coverageByType).reduce((sum, c) => sum + c.total, 0);
226
- const coveredSpecs = Object.values(coverageByType).reduce((sum, c) => sum + c.covered, 0);
227
- const coverage = {
228
- total: totalSpecs,
229
- linkedToFeature: coveredSpecs,
230
- orphaned: totalSpecs - coveredSpecs,
231
- byType: coverageByType
232
- };
233
- const healthy = !issues.some((i) => i.severity === "error");
234
- logger.info("Integrity analysis complete", {
235
- features: features.length,
236
- totalSpecs,
237
- orphaned: orphanedSpecs.length,
238
- issues: issues.length,
239
- healthy
240
- });
241
- return {
242
- inventory,
243
- features: relevantFeatures,
244
- coverage,
245
- issues,
246
- orphanedSpecs,
247
- healthy
248
- };
249
- }
250
- /**
251
- * Get all specs from inventory as a flat list.
252
- */
253
- function getAllSpecs(inventory) {
254
- const all = [];
255
- for (const map of Object.values(inventory)) for (const spec of map.values()) all.push(spec);
256
- return all;
257
- }
258
- /**
259
- * Filter issues by type.
260
- */
261
- function filterIssuesByType(issues, type) {
262
- return issues.filter((i) => i.type === type);
263
- }
264
- /**
265
- * Filter issues by severity.
266
- */
267
- function filterIssuesBySeverity(issues, severity) {
268
- return issues.filter((i) => i.severity === severity);
269
- }
270
-
271
- //#endregion
272
- export { analyzeIntegrity, filterIssuesBySeverity, filterIssuesByType, getAllSpecs };
@@ -1,35 +0,0 @@
1
- import { scanSpecSource } from "../modules/contractspec-workspace/dist/analysis/spec-scan.js";
2
-
3
- //#region src/services/list.ts
4
- /**
5
- * List specs service.
6
- */
7
- /**
8
- * List all spec files in the workspace.
9
- */
10
- async function listSpecs(adapters, options = {}) {
11
- const { fs } = adapters;
12
- const files = await fs.glob({ pattern: options.pattern });
13
- const results = [];
14
- for (const file of files) {
15
- const result = scanSpecSource(await fs.readFile(file), file);
16
- if (options.type && result.specType !== options.type) continue;
17
- results.push(result);
18
- }
19
- return results;
20
- }
21
- /**
22
- * Group specs by type.
23
- */
24
- function groupSpecsByType(specs) {
25
- const groups = /* @__PURE__ */ new Map();
26
- for (const spec of specs) {
27
- const group = groups.get(spec.specType) ?? [];
28
- group.push(spec);
29
- groups.set(spec.specType, group);
30
- }
31
- return groups;
32
- }
33
-
34
- //#endregion
35
- export { groupSpecsByType, listSpecs };
@@ -1,51 +0,0 @@
1
- import { SpecRegistry } from "../../libs/contracts/dist/registry.js";
2
- import { openApiForRegistry } from "../../libs/contracts/dist/openapi.js";
3
- import "../../libs/contracts/dist/index.js";
4
-
5
- //#region src/services/openapi/export-service.ts
6
- /**
7
- * OpenAPI export service - generates OpenAPI documents from SpecRegistry.
8
- */
9
- /**
10
- * Export OpenAPI document from a SpecRegistry.
11
- */
12
- async function exportOpenApi(options, adapters) {
13
- const { fs, logger } = adapters;
14
- const { registryPath, outputPath = "./openapi.json" } = options;
15
- logger.info("Loading registry...", { registryPath });
16
- const registry = await loadRegistry(registryPath, fs);
17
- logger.info("Generating OpenAPI document...");
18
- const document = openApiForRegistry(registry, {
19
- title: options.title,
20
- version: options.version,
21
- description: options.description,
22
- servers: options.servers
23
- });
24
- const json = JSON.stringify(document, null, 2) + "\n";
25
- const resolvedPath = fs.resolve(outputPath);
26
- await fs.mkdir(fs.dirname(resolvedPath));
27
- await fs.writeFile(resolvedPath, json);
28
- logger.info(`OpenAPI document written to ${resolvedPath}`);
29
- return {
30
- document,
31
- outputPath: resolvedPath,
32
- json
33
- };
34
- }
35
- /**
36
- * Load a SpecRegistry from a module.
37
- */
38
- async function loadRegistry(modulePath, fs) {
39
- const exports = await import(fs.resolve(modulePath));
40
- if (exports instanceof SpecRegistry) return exports;
41
- if (exports.registry instanceof SpecRegistry) return exports.registry;
42
- const factory = typeof exports.createRegistry === "function" ? exports.createRegistry : typeof exports.default === "function" ? exports.default : void 0;
43
- if (factory) {
44
- const result = await factory();
45
- if (result instanceof SpecRegistry) return result;
46
- }
47
- throw new Error(`Registry module ${modulePath} must export a SpecRegistry instance or a factory function returning one.`);
48
- }
49
-
50
- //#endregion
51
- export { exportOpenApi };
@@ -1,75 +0,0 @@
1
- import { parseOpenApi } from "../../libs/contracts-transformers/dist/openapi/parser.js";
2
- import { importFromOpenApi } from "../../libs/contracts-transformers/dist/openapi/importer.js";
3
- import "../../libs/contracts-transformers/dist/openapi/index.js";
4
- import { dirname, join } from "path";
5
-
6
- //#region src/services/openapi/import-service.ts
7
- /**
8
- * OpenAPI import service - imports specs from OpenAPI documents.
9
- */
10
- /**
11
- * Import ContractSpec specs from an OpenAPI document.
12
- */
13
- async function importFromOpenApiService(options, adapters) {
14
- const { fs, logger } = adapters;
15
- const { source, outputDir, prefix, tags, exclude, defaultStability, defaultOwners, defaultAuth, dryRun = false } = options;
16
- logger.info(`Importing from OpenAPI: ${source}`);
17
- const parseResult = await parseOpenApi(source, {
18
- fetch: globalThis.fetch,
19
- readFile: (path) => fs.readFile(path)
20
- });
21
- if (parseResult.warnings.length > 0) for (const warning of parseResult.warnings) logger.warn(`Parse warning: ${warning}`);
22
- logger.info(`Parsed ${parseResult.operations.length} operations from ${parseResult.info.title} v${parseResult.info.version}`);
23
- const importResult = importFromOpenApi(parseResult, {
24
- prefix,
25
- tags,
26
- exclude,
27
- defaultStability,
28
- defaultOwners,
29
- defaultAuth
30
- });
31
- logger.info(`Import result: ${importResult.summary.imported} imported, ${importResult.summary.skipped} skipped, ${importResult.summary.errors} errors`);
32
- const files = [];
33
- const skippedOperations = [];
34
- const errorMessages = [];
35
- for (const spec of importResult.specs) {
36
- const filePath = join(outputDir, spec.fileName);
37
- if (dryRun) logger.info(`[DRY RUN] Would create: ${filePath}`);
38
- else {
39
- const dir = dirname(filePath);
40
- await fs.mkdir(dir);
41
- await fs.writeFile(filePath, spec.code);
42
- logger.info(`Created: ${filePath}`);
43
- }
44
- files.push({
45
- path: filePath,
46
- operationId: spec.source.sourceId,
47
- specName: spec.fileName.replace(".ts", "")
48
- });
49
- }
50
- for (const skipped of importResult.skipped) {
51
- skippedOperations.push({
52
- operationId: skipped.sourceId,
53
- reason: skipped.reason
54
- });
55
- logger.debug(`Skipped: ${skipped.sourceId} - ${skipped.reason}`);
56
- }
57
- for (const error of importResult.errors) {
58
- errorMessages.push({
59
- operationId: error.sourceId,
60
- error: error.error
61
- });
62
- logger.error(`Error: ${error.sourceId} - ${error.error}`);
63
- }
64
- return {
65
- imported: importResult.summary.imported,
66
- skipped: importResult.summary.skipped,
67
- errors: importResult.summary.errors,
68
- files,
69
- skippedOperations,
70
- errorMessages
71
- };
72
- }
73
-
74
- //#endregion
75
- export { importFromOpenApiService };
@@ -1,4 +0,0 @@
1
- import { importFromOpenApiService } from "./import-service.js";
2
- import { syncWithOpenApiService } from "./sync-service.js";
3
- import { validateAgainstOpenApiService } from "./validate-service.js";
4
- import { exportOpenApi } from "./export-service.js";
@@ -1,121 +0,0 @@
1
- import { parseOpenApi } from "../../libs/contracts-transformers/dist/openapi/parser.js";
2
- import { importFromOpenApi } from "../../libs/contracts-transformers/dist/openapi/importer.js";
3
- import "../../libs/contracts-transformers/dist/openapi/index.js";
4
- import { dirname, join } from "path";
5
-
6
- //#region src/services/openapi/sync-service.ts
7
- /**
8
- * OpenAPI sync service - syncs specs with OpenAPI sources.
9
- */
10
- /**
11
- * Sync ContractSpec specs with OpenAPI sources.
12
- */
13
- async function syncWithOpenApiService(options, config, adapters) {
14
- const { fs, logger } = adapters;
15
- const { sources: optSources, sourceName, interactive, force, dryRun } = options;
16
- const { sources: configSources, outputDir } = config;
17
- let sourcesToSync = optSources ?? configSources ?? [];
18
- if (sourceName) {
19
- sourcesToSync = sourcesToSync.filter((s) => s.name === sourceName);
20
- if (sourcesToSync.length === 0) throw new Error(`Source not found: ${sourceName}`);
21
- }
22
- if (sourcesToSync.length === 0) {
23
- logger.warn("No OpenAPI sources configured. Add sources to .contractsrc.json");
24
- return {
25
- added: 0,
26
- updated: 0,
27
- unchanged: 0,
28
- conflicts: 0,
29
- changes: []
30
- };
31
- }
32
- const result = {
33
- added: 0,
34
- updated: 0,
35
- unchanged: 0,
36
- conflicts: 0,
37
- changes: []
38
- };
39
- for (const source of sourcesToSync) {
40
- logger.info(`Syncing with source: ${source.name}`);
41
- const sourceLocation = source.url ?? source.file;
42
- if (!sourceLocation) {
43
- logger.warn(`Source ${source.name} has no url or file configured`);
44
- continue;
45
- }
46
- const parseResult = await parseOpenApi(sourceLocation, {
47
- fetch: globalThis.fetch,
48
- readFile: (path) => fs.readFile(path)
49
- });
50
- logger.info(`Parsed ${parseResult.operations.length} operations from ${source.name}`);
51
- const importResult = importFromOpenApi(parseResult, {
52
- prefix: source.prefix,
53
- tags: source.tags,
54
- exclude: source.exclude,
55
- defaultStability: source.defaultStability,
56
- defaultAuth: source.defaultAuth
57
- });
58
- for (const imported of importResult.specs) {
59
- const filePath = join(outputDir, imported.fileName);
60
- if (!await fs.exists(filePath)) {
61
- if (!dryRun) {
62
- const dir = dirname(filePath);
63
- await fs.mkdir(dir);
64
- await fs.writeFile(filePath, imported.code);
65
- }
66
- result.added++;
67
- result.changes.push({
68
- operationId: imported.source.sourceId,
69
- action: "added",
70
- path: filePath
71
- });
72
- logger.info(`Added: ${imported.source.sourceId}`);
73
- } else if (await fs.readFile(filePath) === imported.code) {
74
- result.unchanged++;
75
- result.changes.push({
76
- operationId: imported.source.sourceId,
77
- action: "unchanged",
78
- path: filePath
79
- });
80
- } else if (force === "openapi") {
81
- if (!dryRun) await fs.writeFile(filePath, imported.code);
82
- result.updated++;
83
- result.changes.push({
84
- operationId: imported.source.sourceId,
85
- action: "updated",
86
- path: filePath
87
- });
88
- logger.info(`Updated: ${imported.source.sourceId}`);
89
- } else if (force === "contractspec") {
90
- result.unchanged++;
91
- result.changes.push({
92
- operationId: imported.source.sourceId,
93
- action: "unchanged",
94
- path: filePath
95
- });
96
- logger.info(`Kept: ${imported.source.sourceId}`);
97
- } else if (interactive) {
98
- result.conflicts++;
99
- result.changes.push({
100
- operationId: imported.source.sourceId,
101
- action: "conflict",
102
- path: filePath
103
- });
104
- logger.warn(`Conflict: ${imported.source.sourceId} - needs resolution`);
105
- } else {
106
- result.conflicts++;
107
- result.changes.push({
108
- operationId: imported.source.sourceId,
109
- action: "conflict",
110
- path: filePath
111
- });
112
- logger.warn(`Conflict: ${imported.source.sourceId}`);
113
- }
114
- }
115
- }
116
- logger.info(`Sync complete: ${result.added} added, ${result.updated} updated, ${result.unchanged} unchanged, ${result.conflicts} conflicts`);
117
- return result;
118
- }
119
-
120
- //#endregion
121
- export { syncWithOpenApiService };
@@ -1,130 +0,0 @@
1
- import { parseOpenApi } from "../../libs/contracts-transformers/dist/openapi/parser.js";
2
- import "../../libs/contracts-transformers/dist/openapi/index.js";
3
-
4
- //#region src/services/openapi/validate-service.ts
5
- /**
6
- * OpenAPI validation service - validates specs against OpenAPI sources.
7
- */
8
- /**
9
- * Validate ContractSpec specs against an OpenAPI source.
10
- */
11
- async function validateAgainstOpenApiService(options, adapters) {
12
- const { fs, logger } = adapters;
13
- const { specPath, openApiSource, ignoreDescriptions, ignoreTags, ignoreTransport } = options;
14
- logger.info(`Validating specs against OpenAPI: ${openApiSource}`);
15
- const parseResult = await parseOpenApi(openApiSource, {
16
- fetch: globalThis.fetch,
17
- readFile: (path) => fs.readFile(path)
18
- });
19
- logger.info(`Parsed ${parseResult.operations.length} operations from ${parseResult.info.title}`);
20
- const operationsMap = /* @__PURE__ */ new Map();
21
- for (const op of parseResult.operations) operationsMap.set(op.operationId, op);
22
- const results = [];
23
- let specsValidated = 0;
24
- let specsWithDiffs = 0;
25
- const stat = await fs.stat(specPath);
26
- const specFiles = [];
27
- if (stat.isDirectory) {
28
- const files = await fs.glob({
29
- pattern: "**/*.ts",
30
- cwd: specPath,
31
- ignore: [
32
- "node_modules/**",
33
- "dist/**",
34
- "*.test.ts",
35
- "*.spec.ts"
36
- ],
37
- absolute: true
38
- });
39
- specFiles.push(...files);
40
- } else specFiles.push(specPath);
41
- logger.info(`Found ${specFiles.length} spec files to validate`);
42
- for (const file of specFiles) try {
43
- const content = await fs.readFile(file);
44
- const operationIdMatch = content.match(/operationId:\s*['"]([^'"]+)['"]/) || content.match(/name:\s*['"]([^'"]+)['"]/) || content.match(/export\s+const\s+(\w+)Spec\s*=/);
45
- if (!operationIdMatch || !operationIdMatch[1]) {
46
- logger.debug(`Could not extract operationId from ${file}`);
47
- continue;
48
- }
49
- const specName = operationIdMatch[1];
50
- specsValidated++;
51
- let matchingOp;
52
- matchingOp = operationsMap.get(specName);
53
- if (!matchingOp) {
54
- const snakeName = specName.replace(/([A-Z])/g, "_$1").toLowerCase();
55
- matchingOp = operationsMap.get(snakeName);
56
- }
57
- if (!matchingOp) {
58
- for (const [opId, op] of operationsMap) if (opId.toLowerCase().includes(specName.toLowerCase()) || specName.toLowerCase().includes(opId.toLowerCase())) {
59
- matchingOp = op;
60
- break;
61
- }
62
- }
63
- if (!matchingOp) {
64
- results.push({
65
- specPath: file,
66
- valid: false,
67
- diffs: [{
68
- path: "",
69
- type: "removed",
70
- description: `No matching operation found in OpenAPI for spec: ${specName}`
71
- }]
72
- });
73
- specsWithDiffs++;
74
- continue;
75
- }
76
- const diffs = [];
77
- if (matchingOp.deprecated && !content.includes("deprecated")) diffs.push({
78
- path: "meta.stability",
79
- type: "modified",
80
- description: "OpenAPI operation is deprecated but spec does not indicate deprecation"
81
- });
82
- if (!ignoreTransport) {
83
- const pathMatch = content.match(/path:\s*['"]([^'"]+)['"]/);
84
- if (pathMatch && pathMatch[1] !== matchingOp.path) diffs.push({
85
- path: "transport.rest.path",
86
- type: "modified",
87
- description: `Path mismatch: spec has "${pathMatch[1]}", OpenAPI has "${matchingOp.path}"`
88
- });
89
- }
90
- if (!ignoreTransport) {
91
- const methodMatch = content.match(/method:\s*['"]([^'"]+)['"]/);
92
- if (methodMatch?.[1] && methodMatch[1].toLowerCase() !== matchingOp.method.toLowerCase()) diffs.push({
93
- path: "transport.rest.method",
94
- type: "modified",
95
- description: `Method mismatch: spec has "${methodMatch[1]}", OpenAPI has "${matchingOp.method.toUpperCase()}"`
96
- });
97
- }
98
- const valid$1 = diffs.length === 0;
99
- if (!valid$1) specsWithDiffs++;
100
- results.push({
101
- specPath: file,
102
- operationId: matchingOp.operationId,
103
- valid: valid$1,
104
- diffs
105
- });
106
- } catch (error) {
107
- logger.error(`Error validating ${file}: ${error}`);
108
- results.push({
109
- specPath: file,
110
- valid: false,
111
- diffs: [{
112
- path: "",
113
- type: "modified",
114
- description: `Error: ${error instanceof Error ? error.message : String(error)}`
115
- }]
116
- });
117
- specsWithDiffs++;
118
- }
119
- const valid = specsWithDiffs === 0;
120
- logger.info(`Validation ${valid ? "passed" : "failed"}: ${specsValidated} specs checked, ${specsWithDiffs} with differences`);
121
- return {
122
- valid,
123
- specsValidated,
124
- specsWithDiffs,
125
- results
126
- };
127
- }
128
-
129
- //#endregion
130
- export { validateAgainstOpenApiService };