@specverse/engine-realize 3.5.3

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 (420) hide show
  1. package/assets/examples/09-api/ai-spec.yaml +194 -0
  2. package/assets/examples/09-api/converted.yaml +95 -0
  3. package/assets/examples/09-api/diagram-architecture.mmd +10 -0
  4. package/assets/examples/09-api/diagram-er.mmd +10 -0
  5. package/assets/examples/09-api/documentation.html +104 -0
  6. package/assets/examples/09-api/documentation.md +95 -0
  7. package/assets/examples/09-api/inferred-spec.yaml +420 -0
  8. package/assets/examples/09-api/openapi.json +61 -0
  9. package/assets/examples/10-api/README.md +216 -0
  10. package/assets/examples/10-api/ai-spec.yaml +194 -0
  11. package/assets/examples/10-api/converted.yaml +96 -0
  12. package/assets/examples/10-api/diagram-architecture.mmd +10 -0
  13. package/assets/examples/10-api/diagram-er.mmd +10 -0
  14. package/assets/examples/10-api/documentation.html +104 -0
  15. package/assets/examples/10-api/documentation.md +95 -0
  16. package/assets/examples/10-api/inferred-spec.yaml +7 -0
  17. package/assets/examples/10-api/metadata.yaml +89 -0
  18. package/assets/examples/10-api/openapi.json +61 -0
  19. package/assets/examples/10-api/package-integration-test.js +177 -0
  20. package/assets/examples/10-api/usage-example.js +323 -0
  21. package/assets/examples/10-api/usage-example.ts +363 -0
  22. package/assets/examples/10-api/workflow-test.js +113 -0
  23. package/assets/examples/manifests/01-simple-default-mappings.yaml +36 -0
  24. package/assets/examples/manifests/02-capability-mappings.yaml +55 -0
  25. package/assets/examples/manifests/03-hybrid-mappings.yaml +109 -0
  26. package/assets/examples/manifests/README.md +245 -0
  27. package/assets/examples/manifests/backend-only.yaml +43 -0
  28. package/assets/examples/manifests/blog-api.md +78 -0
  29. package/assets/examples/manifests/blog-api.specly +79 -0
  30. package/assets/examples/manifests/frontend-only.yaml +27 -0
  31. package/assets/examples/manifests/fullstack-app.yaml +44 -0
  32. package/assets/examples/manifests/fullstack-monorepo.yaml +62 -0
  33. package/assets/examples/validate-examples-with-expected-failures.cjs +328 -0
  34. package/assets/examples/validate-examples.cjs +225 -0
  35. package/assets/examples-decomposed/cloud-native-manifest.example.yaml +8 -0
  36. package/assets/examples-decomposed/cloud-native-manifest.md +379 -0
  37. package/assets/examples-decomposed/cloud-native-manifest.specly +60 -0
  38. package/assets/examples-decomposed/docker-compose-manifest.example.yaml +8 -0
  39. package/assets/examples-decomposed/docker-compose-manifest.md +326 -0
  40. package/assets/examples-decomposed/docker-compose-manifest.specly +40 -0
  41. package/assets/examples-decomposed/kubernetes-deployment-manifest.example.yaml +8 -0
  42. package/assets/examples-decomposed/kubernetes-deployment-manifest.md +237 -0
  43. package/assets/examples-decomposed/kubernetes-deployment-manifest.specly +41 -0
  44. package/assets/templates/README.md +559 -0
  45. package/assets/templates/TEMPLATE-ENHANCEMENTS-V33.md +462 -0
  46. package/assets/templates/backend-only/CLAUDE.md +73 -0
  47. package/assets/templates/backend-only/README.md +197 -0
  48. package/assets/templates/backend-only/deployments/README.md +149 -0
  49. package/assets/templates/backend-only/deployments/development.specly +53 -0
  50. package/assets/templates/backend-only/deployments/production.specly +87 -0
  51. package/assets/templates/backend-only/docs/README.md +50 -0
  52. package/assets/templates/backend-only/docs/api/README.md +7 -0
  53. package/assets/templates/backend-only/docs/diagrams/README.md +85 -0
  54. package/assets/templates/backend-only/docs/example-documentation-template.md +269 -0
  55. package/assets/templates/backend-only/docs/guides/README.md +15 -0
  56. package/assets/templates/backend-only/dot.env.example +18 -0
  57. package/assets/templates/backend-only/generated/README.md +56 -0
  58. package/assets/templates/backend-only/generated/code/integration-test.template.js +320 -0
  59. package/assets/templates/backend-only/generated/code/package.json.template +34 -0
  60. package/assets/templates/backend-only/generated/docs/README.md +49 -0
  61. package/assets/templates/backend-only/gitignore +54 -0
  62. package/assets/templates/backend-only/manifests/README.md +72 -0
  63. package/assets/templates/backend-only/manifests/docker-compose.specly +91 -0
  64. package/assets/templates/backend-only/manifests/implementation.yaml +100 -0
  65. package/assets/templates/backend-only/manifests/kubernetes.specly +140 -0
  66. package/assets/templates/backend-only/package.json +59 -0
  67. package/assets/templates/backend-only/scripts/test-all.sh +160 -0
  68. package/assets/templates/backend-only/scripts/test-generated-code.sh +165 -0
  69. package/assets/templates/backend-only/specs/main.specly +67 -0
  70. package/assets/templates/default/CLAUDE.md +141 -0
  71. package/assets/templates/default/README.md +404 -0
  72. package/assets/templates/default/deployments/README.md +149 -0
  73. package/assets/templates/default/deployments/development.specly +53 -0
  74. package/assets/templates/default/deployments/production.specly +87 -0
  75. package/assets/templates/default/docs/README.md +50 -0
  76. package/assets/templates/default/docs/api/README.md +7 -0
  77. package/assets/templates/default/docs/diagrams/README.md +85 -0
  78. package/assets/templates/default/docs/example-documentation-template.md +269 -0
  79. package/assets/templates/default/docs/guides/README.md +15 -0
  80. package/assets/templates/default/dot.env.example +18 -0
  81. package/assets/templates/default/generated/README.md +56 -0
  82. package/assets/templates/default/generated/code/integration-test.template.js +320 -0
  83. package/assets/templates/default/generated/code/package.json.template +34 -0
  84. package/assets/templates/default/generated/docs/README.md +49 -0
  85. package/assets/templates/default/gitignore +54 -0
  86. package/assets/templates/default/manifests/README.md +72 -0
  87. package/assets/templates/default/manifests/docker-compose.specly +91 -0
  88. package/assets/templates/default/manifests/implementation.yaml +176 -0
  89. package/assets/templates/default/manifests/kubernetes.specly +140 -0
  90. package/assets/templates/default/package.json +61 -0
  91. package/assets/templates/default/scripts/test-all.sh +160 -0
  92. package/assets/templates/default/scripts/test-generated-code.sh +165 -0
  93. package/assets/templates/default/specs/main.specly +67 -0
  94. package/assets/templates/frontend-only/CLAUDE.md +75 -0
  95. package/assets/templates/frontend-only/README.md +231 -0
  96. package/assets/templates/frontend-only/deployments/README.md +149 -0
  97. package/assets/templates/frontend-only/deployments/development.specly +53 -0
  98. package/assets/templates/frontend-only/deployments/production.specly +87 -0
  99. package/assets/templates/frontend-only/docs/README.md +50 -0
  100. package/assets/templates/frontend-only/docs/api/README.md +7 -0
  101. package/assets/templates/frontend-only/docs/diagrams/README.md +85 -0
  102. package/assets/templates/frontend-only/docs/example-documentation-template.md +269 -0
  103. package/assets/templates/frontend-only/docs/guides/README.md +15 -0
  104. package/assets/templates/frontend-only/dot.env.example +18 -0
  105. package/assets/templates/frontend-only/generated/README.md +56 -0
  106. package/assets/templates/frontend-only/generated/code/integration-test.template.js +320 -0
  107. package/assets/templates/frontend-only/generated/code/package.json.template +34 -0
  108. package/assets/templates/frontend-only/generated/docs/README.md +49 -0
  109. package/assets/templates/frontend-only/gitignore +54 -0
  110. package/assets/templates/frontend-only/manifests/README.md +72 -0
  111. package/assets/templates/frontend-only/manifests/docker-compose.specly +91 -0
  112. package/assets/templates/frontend-only/manifests/implementation.yaml +58 -0
  113. package/assets/templates/frontend-only/manifests/kubernetes.specly +140 -0
  114. package/assets/templates/frontend-only/package.json +59 -0
  115. package/assets/templates/frontend-only/scripts/test-all.sh +160 -0
  116. package/assets/templates/frontend-only/scripts/test-generated-code.sh +165 -0
  117. package/assets/templates/frontend-only/specs/main.specly +57 -0
  118. package/assets/templates/full-stack/AI-GUIDE.md +60 -0
  119. package/assets/templates/full-stack/CLAUDE.md +141 -0
  120. package/assets/templates/full-stack/README.md +382 -0
  121. package/assets/templates/full-stack/archive/AI-GUIDE-legacy.md +392 -0
  122. package/assets/templates/full-stack/deployments/README.md +149 -0
  123. package/assets/templates/full-stack/deployments/development.specly +53 -0
  124. package/assets/templates/full-stack/deployments/production.specly +87 -0
  125. package/assets/templates/full-stack/docs/README.md +51 -0
  126. package/assets/templates/full-stack/docs/api/README.md +7 -0
  127. package/assets/templates/full-stack/docs/diagrams/README.md +85 -0
  128. package/assets/templates/full-stack/docs/example-documentation-template.md +269 -0
  129. package/assets/templates/full-stack/docs/guides/README.md +15 -0
  130. package/assets/templates/full-stack/generated/README.md +56 -0
  131. package/assets/templates/full-stack/generated/code/integration-test.template.js +320 -0
  132. package/assets/templates/full-stack/generated/code/package.json.template +34 -0
  133. package/assets/templates/full-stack/generated/docs/README.md +49 -0
  134. package/assets/templates/full-stack/gitignore +54 -0
  135. package/assets/templates/full-stack/manifests/README.md +72 -0
  136. package/assets/templates/full-stack/manifests/docker-compose.specly +91 -0
  137. package/assets/templates/full-stack/manifests/implementation.yaml +155 -0
  138. package/assets/templates/full-stack/manifests/kubernetes.specly +140 -0
  139. package/assets/templates/full-stack/package.json +45 -0
  140. package/assets/templates/full-stack/scripts/test-all.sh +160 -0
  141. package/assets/templates/full-stack/scripts/test-generated-code.sh +165 -0
  142. package/assets/templates/full-stack/specs/example-v33.specly +297 -0
  143. package/assets/templates/full-stack/specs/main-simple.specly +73 -0
  144. package/assets/templates/full-stack/specs/main.specly +408 -0
  145. package/dist/engines/code-generator.d.ts +86 -0
  146. package/dist/engines/code-generator.d.ts.map +1 -0
  147. package/dist/engines/code-generator.js +159 -0
  148. package/dist/engines/code-generator.js.map +1 -0
  149. package/dist/engines/engine-registry.d.ts +94 -0
  150. package/dist/engines/engine-registry.d.ts.map +1 -0
  151. package/dist/engines/engine-registry.js +163 -0
  152. package/dist/engines/engine-registry.js.map +1 -0
  153. package/dist/engines/index.d.ts +10 -0
  154. package/dist/engines/index.d.ts.map +1 -0
  155. package/dist/engines/index.js +12 -0
  156. package/dist/engines/index.js.map +1 -0
  157. package/dist/engines/typescript-engine.d.ts +74 -0
  158. package/dist/engines/typescript-engine.d.ts.map +1 -0
  159. package/dist/engines/typescript-engine.js +288 -0
  160. package/dist/engines/typescript-engine.js.map +1 -0
  161. package/dist/generators/index.d.ts +11 -0
  162. package/dist/generators/index.d.ts.map +1 -0
  163. package/dist/generators/index.js +11 -0
  164. package/dist/generators/index.js.map +1 -0
  165. package/dist/index.d.ts +48 -0
  166. package/dist/index.d.ts.map +1 -0
  167. package/dist/index.js +434 -0
  168. package/dist/index.js.map +1 -0
  169. package/dist/library/index.d.ts +12 -0
  170. package/dist/library/index.d.ts.map +1 -0
  171. package/dist/library/index.js +15 -0
  172. package/dist/library/index.js.map +1 -0
  173. package/dist/library/library.d.ts +132 -0
  174. package/dist/library/library.d.ts.map +1 -0
  175. package/dist/library/library.js +343 -0
  176. package/dist/library/library.js.map +1 -0
  177. package/dist/library/loader.d.ts +73 -0
  178. package/dist/library/loader.d.ts.map +1 -0
  179. package/dist/library/loader.js +150 -0
  180. package/dist/library/loader.js.map +1 -0
  181. package/dist/library/resolver.d.ts +104 -0
  182. package/dist/library/resolver.d.ts.map +1 -0
  183. package/dist/library/resolver.js +299 -0
  184. package/dist/library/resolver.js.map +1 -0
  185. package/dist/library/validator.d.ts +65 -0
  186. package/dist/library/validator.d.ts.map +1 -0
  187. package/dist/library/validator.js +203 -0
  188. package/dist/library/validator.js.map +1 -0
  189. package/dist/types/index.d.ts +7 -0
  190. package/dist/types/index.d.ts.map +1 -0
  191. package/dist/types/index.js +7 -0
  192. package/dist/types/index.js.map +1 -0
  193. package/dist/types/instance-factory.d.ts +289 -0
  194. package/dist/types/instance-factory.d.ts.map +1 -0
  195. package/dist/types/instance-factory.js +8 -0
  196. package/dist/types/instance-factory.js.map +1 -0
  197. package/dist/types/unified-mappings.d.ts +163 -0
  198. package/dist/types/unified-mappings.d.ts.map +1 -0
  199. package/dist/types/unified-mappings.js +110 -0
  200. package/dist/types/unified-mappings.js.map +1 -0
  201. package/dist/utils/ai-spec-loader.d.ts +77 -0
  202. package/dist/utils/ai-spec-loader.d.ts.map +1 -0
  203. package/dist/utils/ai-spec-loader.js +138 -0
  204. package/dist/utils/ai-spec-loader.js.map +1 -0
  205. package/dist/utils/index.d.ts +9 -0
  206. package/dist/utils/index.d.ts.map +1 -0
  207. package/dist/utils/index.js +9 -0
  208. package/dist/utils/index.js.map +1 -0
  209. package/dist/utils/manifest-loader.d.ts +107 -0
  210. package/dist/utils/manifest-loader.d.ts.map +1 -0
  211. package/dist/utils/manifest-loader.js +168 -0
  212. package/dist/utils/manifest-loader.js.map +1 -0
  213. package/dist/utils/mapping-migration.d.ts +53 -0
  214. package/dist/utils/mapping-migration.d.ts.map +1 -0
  215. package/dist/utils/mapping-migration.js +194 -0
  216. package/dist/utils/mapping-migration.js.map +1 -0
  217. package/libs/instance-factories/CURVED-INTERFACE.md +278 -0
  218. package/libs/instance-factories/README.md +433 -0
  219. package/libs/instance-factories/applications/generic-app.yaml +52 -0
  220. package/libs/instance-factories/applications/react-app.yaml +186 -0
  221. package/libs/instance-factories/applications/templates/generic/backend-env-generator.ts +31 -0
  222. package/libs/instance-factories/applications/templates/generic/backend-package-json-generator.ts +80 -0
  223. package/libs/instance-factories/applications/templates/generic/backend-tsconfig-generator.ts +69 -0
  224. package/libs/instance-factories/applications/templates/generic/main-generator.ts +308 -0
  225. package/libs/instance-factories/applications/templates/react/_view-components-source.ts +555 -0
  226. package/libs/instance-factories/applications/templates/react/api-client-generator.ts +436 -0
  227. package/libs/instance-factories/applications/templates/react/api-types-generator.ts +153 -0
  228. package/libs/instance-factories/applications/templates/react/app-tsx-generator.ts +94 -0
  229. package/libs/instance-factories/applications/templates/react/env-example-generator.ts +24 -0
  230. package/libs/instance-factories/applications/templates/react/field-helpers-generator.ts +106 -0
  231. package/libs/instance-factories/applications/templates/react/gitignore-generator.ts +38 -0
  232. package/libs/instance-factories/applications/templates/react/index-css-generator.ts +85 -0
  233. package/libs/instance-factories/applications/templates/react/index-html-generator.ts +30 -0
  234. package/libs/instance-factories/applications/templates/react/main-tsx-generator.ts +34 -0
  235. package/libs/instance-factories/applications/templates/react/package-json-generator.ts +54 -0
  236. package/libs/instance-factories/applications/templates/react/pattern-adapter-generator.ts +179 -0
  237. package/libs/instance-factories/applications/templates/react/react-pattern-adapter.tsx +1347 -0
  238. package/libs/instance-factories/applications/templates/react/relationship-field-generator.ts +150 -0
  239. package/libs/instance-factories/applications/templates/react/tailwind-adapter-generator.ts +704 -0
  240. package/libs/instance-factories/applications/templates/react/tailwind-adapter-wrapper-generator.ts +84 -0
  241. package/libs/instance-factories/applications/templates/react/tsconfig-generator.ts +35 -0
  242. package/libs/instance-factories/applications/templates/react/use-api-hooks-generator.ts +121 -0
  243. package/libs/instance-factories/applications/templates/react/view-dashboard-generator.ts +150 -0
  244. package/libs/instance-factories/applications/templates/react/view-detail-generator.ts +150 -0
  245. package/libs/instance-factories/applications/templates/react/view-form-generator.ts +362 -0
  246. package/libs/instance-factories/applications/templates/react/view-list-generator.ts +98 -0
  247. package/libs/instance-factories/applications/templates/react/view-router-generator.ts +89 -0
  248. package/libs/instance-factories/applications/templates/react/vite-config-generator.ts +49 -0
  249. package/libs/instance-factories/archived/fastify-prisma.yaml +104 -0
  250. package/libs/instance-factories/cli/commander-js.yaml +55 -0
  251. package/libs/instance-factories/cli/templates/commander/cli-entry-generator.d.ts +12 -0
  252. package/libs/instance-factories/cli/templates/commander/cli-entry-generator.d.ts.map +1 -0
  253. package/libs/instance-factories/cli/templates/commander/cli-entry-generator.js +115 -0
  254. package/libs/instance-factories/cli/templates/commander/cli-entry-generator.js.map +1 -0
  255. package/libs/instance-factories/cli/templates/commander/cli-entry-generator.ts +145 -0
  256. package/libs/instance-factories/cli/templates/commander/command-generator.d.ts +14 -0
  257. package/libs/instance-factories/cli/templates/commander/command-generator.d.ts.map +1 -0
  258. package/libs/instance-factories/cli/templates/commander/command-generator.js +182 -0
  259. package/libs/instance-factories/cli/templates/commander/command-generator.js.map +1 -0
  260. package/libs/instance-factories/cli/templates/commander/command-generator.ts +992 -0
  261. package/libs/instance-factories/communication/event-emitter.yaml +56 -0
  262. package/libs/instance-factories/communication/rabbitmq-events.yaml +87 -0
  263. package/libs/instance-factories/communication/templates/eventemitter/bus-generator.ts +93 -0
  264. package/libs/instance-factories/communication/templates/eventemitter/publisher-generator.ts +117 -0
  265. package/libs/instance-factories/communication/templates/eventemitter/subscriber-generator.ts +101 -0
  266. package/libs/instance-factories/controllers/fastify.yaml +127 -0
  267. package/libs/instance-factories/controllers/templates/fastify/meta-routes-generator.ts +103 -0
  268. package/libs/instance-factories/controllers/templates/fastify/routes-generator.ts +389 -0
  269. package/libs/instance-factories/controllers/templates/fastify/server-generator.ts +76 -0
  270. package/libs/instance-factories/infrastructure/docker-k8s.yaml +61 -0
  271. package/libs/instance-factories/infrastructure/templates/docker-k8s/infrastructure-generator.ts +46 -0
  272. package/libs/instance-factories/orms/prisma.yaml +89 -0
  273. package/libs/instance-factories/orms/templates/prisma/schema-generator.ts +563 -0
  274. package/libs/instance-factories/orms/templates/prisma/services-generator.ts +408 -0
  275. package/libs/instance-factories/scaffolding/generic-scaffold.yaml +65 -0
  276. package/libs/instance-factories/scaffolding/templates/generic/env-example-generator.ts +73 -0
  277. package/libs/instance-factories/scaffolding/templates/generic/env-generator.ts +85 -0
  278. package/libs/instance-factories/scaffolding/templates/generic/gitignore-generator.ts +69 -0
  279. package/libs/instance-factories/scaffolding/templates/generic/package-json-generator.ts +176 -0
  280. package/libs/instance-factories/scaffolding/templates/generic/readme-generator.ts +207 -0
  281. package/libs/instance-factories/scaffolding/templates/generic/tsconfig-generator.ts +78 -0
  282. package/libs/instance-factories/scaffolding/templates/generic/tsconfig-react-generator.ts +41 -0
  283. package/libs/instance-factories/sdks/python-sdk.yaml +66 -0
  284. package/libs/instance-factories/sdks/templates/python/sdk-generator.ts +50 -0
  285. package/libs/instance-factories/sdks/templates/typescript/sdk-generator.ts +49 -0
  286. package/libs/instance-factories/sdks/typescript-sdk.yaml +59 -0
  287. package/libs/instance-factories/services/prisma-services.yaml +71 -0
  288. package/libs/instance-factories/services/templates/prisma/behavior-generator.ts +303 -0
  289. package/libs/instance-factories/services/templates/prisma/controller-generator.ts +532 -0
  290. package/libs/instance-factories/services/templates/prisma/service-generator.ts +315 -0
  291. package/libs/instance-factories/shared/path-resolver.ts +111 -0
  292. package/libs/instance-factories/storage/mongodb.yaml +79 -0
  293. package/libs/instance-factories/storage/postgresql.yaml +75 -0
  294. package/libs/instance-factories/storage/redis.yaml +79 -0
  295. package/libs/instance-factories/storage/templates/mongodb/config-generator.ts +15 -0
  296. package/libs/instance-factories/storage/templates/mongodb/docker-generator.ts +18 -0
  297. package/libs/instance-factories/storage/templates/postgresql/config-generator.ts +54 -0
  298. package/libs/instance-factories/storage/templates/postgresql/docker-generator.ts +55 -0
  299. package/libs/instance-factories/storage/templates/redis/config-generator.ts +16 -0
  300. package/libs/instance-factories/storage/templates/redis/docker-generator.ts +18 -0
  301. package/libs/instance-factories/test-generation.ts +192 -0
  302. package/libs/instance-factories/testing/templates/vitest/tests-generator.ts +51 -0
  303. package/libs/instance-factories/testing/vitest-tests.yaml +63 -0
  304. package/libs/instance-factories/tools/templates/mcp/mcp-server-generator.ts +136 -0
  305. package/libs/instance-factories/tools/templates/mcp/static/docs/DEPLOYMENT_GUIDE.md +630 -0
  306. package/libs/instance-factories/tools/templates/mcp/static/docs/HYBRID_RESOURCE_SYSTEM.md +330 -0
  307. package/libs/instance-factories/tools/templates/mcp/static/docs/deployments/EXTENSION_DEPLOYMENT.md +552 -0
  308. package/libs/instance-factories/tools/templates/mcp/static/docs/deployments/LOCAL_DEPLOYMENT.md +164 -0
  309. package/libs/instance-factories/tools/templates/mcp/static/docs/deployments/WEB_DEPLOYMENT.md +247 -0
  310. package/libs/instance-factories/tools/templates/mcp/static/package.json +92 -0
  311. package/libs/instance-factories/tools/templates/mcp/static/scripts/build-enterprise.js +284 -0
  312. package/libs/instance-factories/tools/templates/mcp/static/scripts/build-extension.js +139 -0
  313. package/libs/instance-factories/tools/templates/mcp/static/scripts/build-local.js +74 -0
  314. package/libs/instance-factories/tools/templates/mcp/static/scripts/build-web.js +156 -0
  315. package/libs/instance-factories/tools/templates/mcp/static/scripts/copy-canonical-files.js +41 -0
  316. package/libs/instance-factories/tools/templates/mcp/static/scripts/test-deployments.js +259 -0
  317. package/libs/instance-factories/tools/templates/mcp/static/scripts/test-hybrid-resources.js +231 -0
  318. package/libs/instance-factories/tools/templates/mcp/static/scripts/test-hybrid-simple.js +196 -0
  319. package/libs/instance-factories/tools/templates/mcp/static/src/controllers/MCPServerController.ts +293 -0
  320. package/libs/instance-factories/tools/templates/mcp/static/src/events/EventEmitter.ts +90 -0
  321. package/libs/instance-factories/tools/templates/mcp/static/src/index.ts +24 -0
  322. package/libs/instance-factories/tools/templates/mcp/static/src/interfaces/ResourceProvider.ts +15 -0
  323. package/libs/instance-factories/tools/templates/mcp/static/src/models/LibrarySuggestion.ts +106 -0
  324. package/libs/instance-factories/tools/templates/mcp/static/src/models/SpecVerseResource.ts +75 -0
  325. package/libs/instance-factories/tools/templates/mcp/static/src/server/mcp-server.ts +239 -0
  326. package/libs/instance-factories/tools/templates/mcp/static/src/services/CLIProxyService.ts +1501 -0
  327. package/libs/instance-factories/tools/templates/mcp/static/src/services/EmbeddedResourcesAdapter.ts +211 -0
  328. package/libs/instance-factories/tools/templates/mcp/static/src/services/EntityModuleService.ts +308 -0
  329. package/libs/instance-factories/tools/templates/mcp/static/src/services/HybridResourcesProvider.ts +210 -0
  330. package/libs/instance-factories/tools/templates/mcp/static/src/services/LibraryToolsService.ts +356 -0
  331. package/libs/instance-factories/tools/templates/mcp/static/src/services/OrchestratorBridge.ts +524 -0
  332. package/libs/instance-factories/tools/templates/mcp/static/src/services/OrchestratorToolsService.ts +530 -0
  333. package/libs/instance-factories/tools/templates/mcp/static/src/services/PromptToolsService.ts +594 -0
  334. package/libs/instance-factories/tools/templates/mcp/static/src/services/ResourcesProviderService.ts +170 -0
  335. package/libs/instance-factories/tools/templates/mcp/static/src/tests/unit/CLIProxyService.init.test.ts +544 -0
  336. package/libs/instance-factories/tools/templates/mcp/static/src/tests/unit/CLIProxyService.test.ts +189 -0
  337. package/libs/instance-factories/tools/templates/mcp/static/src/tests/unit/ResourcesProviderService.test.ts +89 -0
  338. package/libs/instance-factories/tools/templates/mcp/static/src/types/index.ts +110 -0
  339. package/libs/instance-factories/tools/templates/mcp/static/tsconfig.json +28 -0
  340. package/libs/instance-factories/tools/templates/vscode/static/extension.ts +1195 -0
  341. package/libs/instance-factories/tools/templates/vscode/static/language-configuration.json +34 -0
  342. package/libs/instance-factories/tools/templates/vscode/static/schemas/specverse-v3-schema.json +4279 -0
  343. package/libs/instance-factories/tools/templates/vscode/static/syntaxes/specverse.tmLanguage.json +138 -0
  344. package/libs/instance-factories/tools/templates/vscode/static/themes/README.md +74 -0
  345. package/libs/instance-factories/tools/templates/vscode/static/themes/complete-specverse-colors.json +122 -0
  346. package/libs/instance-factories/tools/templates/vscode/static/themes/specverse-basic-theme.json +65 -0
  347. package/libs/instance-factories/tools/templates/vscode/static/themes/specverse-complete-theme.json +123 -0
  348. package/libs/instance-factories/tools/templates/vscode/static/themes/specverse-theme-colors.json +64 -0
  349. package/libs/instance-factories/tools/templates/vscode/vscode-extension-generator.ts +214 -0
  350. package/libs/instance-factories/validation/templates/zod/validation-generator.ts +46 -0
  351. package/libs/instance-factories/validation/zod.yaml +56 -0
  352. package/libs/instance-factories/views/index.d.ts +13 -0
  353. package/libs/instance-factories/views/index.d.ts.map +1 -0
  354. package/libs/instance-factories/views/index.js +18 -0
  355. package/libs/instance-factories/views/index.js.map +1 -0
  356. package/libs/instance-factories/views/index.ts +45 -0
  357. package/libs/instance-factories/views/react-components.yaml +129 -0
  358. package/libs/instance-factories/views/templates/ARCHITECTURE.md +198 -0
  359. package/libs/instance-factories/views/templates/react/adapters/antd-adapter.ts +869 -0
  360. package/libs/instance-factories/views/templates/react/adapters/mui-adapter.ts +953 -0
  361. package/libs/instance-factories/views/templates/react/adapters/shadcn-adapter.ts +806 -0
  362. package/libs/instance-factories/views/templates/react/app-generator.ts +55 -0
  363. package/libs/instance-factories/views/templates/react/components-generator.ts +391 -0
  364. package/libs/instance-factories/views/templates/react/forms-generator.ts +343 -0
  365. package/libs/instance-factories/views/templates/react/frontend-package-json-generator.ts +54 -0
  366. package/libs/instance-factories/views/templates/react/hooks-generator.ts +122 -0
  367. package/libs/instance-factories/views/templates/react/index-css-generator.ts +209 -0
  368. package/libs/instance-factories/views/templates/react/index-html-generator.ts +34 -0
  369. package/libs/instance-factories/views/templates/react/main-tsx-generator.ts +29 -0
  370. package/libs/instance-factories/views/templates/react/react-component-generator.d.ts +152 -0
  371. package/libs/instance-factories/views/templates/react/react-component-generator.d.ts.map +1 -0
  372. package/libs/instance-factories/views/templates/react/react-component-generator.js +398 -0
  373. package/libs/instance-factories/views/templates/react/react-component-generator.js.map +1 -0
  374. package/libs/instance-factories/views/templates/react/react-component-generator.ts +533 -0
  375. package/libs/instance-factories/views/templates/react/router-generator.ts +197 -0
  376. package/libs/instance-factories/views/templates/react/router-generic-generator.ts +103 -0
  377. package/libs/instance-factories/views/templates/react/spec-json-generator.ts +17 -0
  378. package/libs/instance-factories/views/templates/react/types-generator.ts +76 -0
  379. package/libs/instance-factories/views/templates/react/views-metadata-generator.ts +42 -0
  380. package/libs/instance-factories/views/templates/react/vite-config-generator.ts +38 -0
  381. package/libs/instance-factories/views/templates/runtime/runtime-view-renderer.d.ts.map +1 -0
  382. package/libs/instance-factories/views/templates/runtime/runtime-view-renderer.js.map +1 -0
  383. package/libs/instance-factories/views/templates/runtime/runtime-view-renderer.ts +474 -0
  384. package/libs/instance-factories/views/templates/shared/__tests__/composite-patterns.test.ts +242 -0
  385. package/libs/instance-factories/views/templates/shared/adapter-types.d.ts +77 -0
  386. package/libs/instance-factories/views/templates/shared/adapter-types.d.ts.map +1 -0
  387. package/libs/instance-factories/views/templates/shared/adapter-types.js +47 -0
  388. package/libs/instance-factories/views/templates/shared/adapter-types.js.map +1 -0
  389. package/libs/instance-factories/views/templates/shared/adapter-types.ts +142 -0
  390. package/libs/instance-factories/views/templates/shared/atomic-components-registry.d.ts +63 -0
  391. package/libs/instance-factories/views/templates/shared/atomic-components-registry.d.ts.map +1 -0
  392. package/libs/instance-factories/views/templates/shared/atomic-components-registry.js +822 -0
  393. package/libs/instance-factories/views/templates/shared/atomic-components-registry.js.map +1 -0
  394. package/libs/instance-factories/views/templates/shared/atomic-components-registry.ts +908 -0
  395. package/libs/instance-factories/views/templates/shared/base-generator.d.ts +247 -0
  396. package/libs/instance-factories/views/templates/shared/base-generator.d.ts.map +1 -0
  397. package/libs/instance-factories/views/templates/shared/base-generator.js +363 -0
  398. package/libs/instance-factories/views/templates/shared/base-generator.js.map +1 -0
  399. package/libs/instance-factories/views/templates/shared/base-generator.ts +608 -0
  400. package/libs/instance-factories/views/templates/shared/component-metadata.d.ts +254 -0
  401. package/libs/instance-factories/views/templates/shared/component-metadata.d.ts.map +1 -0
  402. package/libs/instance-factories/views/templates/shared/component-metadata.js +602 -0
  403. package/libs/instance-factories/views/templates/shared/component-metadata.js.map +1 -0
  404. package/libs/instance-factories/views/templates/shared/component-metadata.ts +803 -0
  405. package/libs/instance-factories/views/templates/shared/composite-pattern-types.ts +250 -0
  406. package/libs/instance-factories/views/templates/shared/composite-patterns.ts +535 -0
  407. package/libs/instance-factories/views/templates/shared/index.ts +68 -0
  408. package/libs/instance-factories/views/templates/shared/pattern-validator.ts +279 -0
  409. package/libs/instance-factories/views/templates/shared/property-mapper.d.ts +149 -0
  410. package/libs/instance-factories/views/templates/shared/property-mapper.d.ts.map +1 -0
  411. package/libs/instance-factories/views/templates/shared/property-mapper.js +580 -0
  412. package/libs/instance-factories/views/templates/shared/property-mapper.js.map +1 -0
  413. package/libs/instance-factories/views/templates/shared/property-mapper.ts +700 -0
  414. package/libs/instance-factories/views/templates/shared/syntax-mapper.d.ts +143 -0
  415. package/libs/instance-factories/views/templates/shared/syntax-mapper.d.ts.map +1 -0
  416. package/libs/instance-factories/views/templates/shared/syntax-mapper.js +420 -0
  417. package/libs/instance-factories/views/templates/shared/syntax-mapper.js.map +1 -0
  418. package/libs/instance-factories/views/templates/shared/syntax-mapper.ts +539 -0
  419. package/package.json +42 -0
  420. package/schema/SPECVERSE-SCHEMA.json +4274 -0
@@ -0,0 +1,176 @@
1
+ /**
2
+ * Generic Package.json Generator
3
+ *
4
+ * Aggregates requirements from all implementation types in manifest
5
+ * and generates a complete package.json file
6
+ */
7
+
8
+ import type { TemplateContext } from '@specverse/engine-realize';
9
+
10
+ export default function generatePackageJson(context: TemplateContext): string {
11
+ const { spec, manifest, configuration } = context;
12
+
13
+ // Check if we're in monorepo mode
14
+ const outputStructure = configuration?.outputStructure || 'monorepo';
15
+ const isMonorepo = outputStructure === 'monorepo';
16
+
17
+ // Aggregate requirements from all implementation types
18
+ const aggregated = aggregateRequirements(context.instanceFactories || context.implementationTypes || []);
19
+
20
+ const pkg: any = {
21
+ name: (spec.metadata?.component || 'specverse-app')
22
+ .toLowerCase()
23
+ .replace(/\s+/g, '-'),
24
+ version: spec.metadata?.version || '1.0.0',
25
+ description: spec.metadata?.description || '',
26
+ private: true,
27
+ type: 'module'
28
+ };
29
+
30
+ // Add workspaces for monorepo
31
+ if (isMonorepo) {
32
+ const frontendDir = configuration?.frontendDir || 'frontend';
33
+ const backendDir = configuration?.backendDir || 'backend';
34
+
35
+ pkg.workspaces = [backendDir, frontendDir];
36
+
37
+ // Add convenience scripts for monorepo
38
+ pkg.scripts = {
39
+ // Build all workspaces
40
+ 'build': 'npm run build --workspaces',
41
+ 'build:backend': `npm run build --workspace=${backendDir}`,
42
+ 'build:frontend': `npm run build --workspace=${frontendDir}`,
43
+
44
+ // Production
45
+ 'start': `npm run start --workspace=${backendDir}`,
46
+
47
+ // Development
48
+ 'dev': 'npm run dev --workspaces',
49
+ 'dev:backend': `npm run dev --workspace=${backendDir}`,
50
+ 'dev:frontend': `npm run dev --workspace=${frontendDir}`,
51
+
52
+ // Testing
53
+ 'test': 'npm test --workspaces',
54
+ 'test:backend': `npm test --workspace=${backendDir}`,
55
+ 'test:frontend': `npm test --workspace=${frontendDir}`,
56
+
57
+ // Database management (backend)
58
+ 'db:setup': `npm run db:setup --workspace=${backendDir}`,
59
+ 'db:generate': `npm run db:generate --workspace=${backendDir}`,
60
+ 'db:push': `npm run db:push --workspace=${backendDir}`,
61
+ 'db:migrate': `npm run db:migrate --workspace=${backendDir}`,
62
+ 'db:studio': `npm run db:studio --workspace=${backendDir}`,
63
+
64
+ // Linting
65
+ 'lint': 'npm run lint --workspaces',
66
+ 'lint:fix': 'npm run lint:fix --workspaces'
67
+ };
68
+ } else {
69
+ // Standalone mode - merge all scripts
70
+ pkg.scripts = {
71
+ ...aggregated.scripts,
72
+ // Ensure we have build script if TypeScript
73
+ ...(aggregated.usesTypeScript && !aggregated.scripts.build && {
74
+ build: 'tsc'
75
+ }),
76
+ // Add database setup script
77
+ 'db:setup': 'node -e "const{execSync:e}=require(\'child_process\');const{readFileSync:r}=require(\'fs\');try{const d=r(\'.env\',\'utf8\').match(/DATABASE_URL=.*\\/([^?\\"]+)/)?.[1];if(!d)throw new Error(\'DATABASE_URL not found\');console.log(\'Creating database:\',d);try{e(\'createdb \'+d)}catch(err){const errMsg=err.stderr?err.stderr.toString():err.message;if(errMsg.includes(\'already exists\')){console.log(\'✅ Database already exists\')}else throw err}console.log(\'✅ Database created successfully\')}catch(err){console.error(\'❌ Database setup failed:\',err.message);process.exit(1)}"',
78
+ // Add test script if not provided by implementation types
79
+ ...(!aggregated.scripts.test && {
80
+ test: 'echo "Error: no test specified" && exit 1'
81
+ })
82
+ };
83
+
84
+ // In standalone mode, include dependencies
85
+ pkg.dependencies = aggregated.dependencies;
86
+ pkg.devDependencies = {
87
+ ...aggregated.devDependencies,
88
+ // Ensure TypeScript is present if needed
89
+ ...(aggregated.usesTypeScript && !aggregated.devDependencies.typescript && {
90
+ typescript: '^5.3.0',
91
+ '@types/node': '^20.0.0'
92
+ })
93
+ };
94
+
95
+ // TypeScript-specific fields
96
+ if (aggregated.usesTypeScript) {
97
+ pkg.main = 'dist/main.js';
98
+ pkg.types = 'dist/main.d.ts';
99
+ }
100
+ }
101
+
102
+ // Add common Node.js fields
103
+ pkg.engines = {
104
+ node: '>=18.0.0'
105
+ };
106
+
107
+ return JSON.stringify(pkg, null, 2);
108
+ }
109
+
110
+ /**
111
+ * Aggregate requirements from all implementation types
112
+ */
113
+ function aggregateRequirements(implementationTypes: any[]) {
114
+ const result = {
115
+ dependencies: {} as Record<string, string>,
116
+ devDependencies: {} as Record<string, string>,
117
+ scripts: {} as Record<string, string>,
118
+ environment: [] as any[],
119
+ usesTypeScript: false,
120
+ usesDocker: false
121
+ };
122
+
123
+ if (!implementationTypes || implementationTypes.length === 0) {
124
+ return result;
125
+ }
126
+
127
+ // Iterate through all implementation types
128
+ for (const implType of implementationTypes) {
129
+ // Handle dependencies from the top level (v3.3 format)
130
+ if (implType.dependencies) {
131
+ // Runtime dependencies
132
+ if (implType.dependencies.runtime && Array.isArray(implType.dependencies.runtime)) {
133
+ for (const dep of implType.dependencies.runtime) {
134
+ if (dep.name && dep.version) {
135
+ result.dependencies[dep.name] = dep.version;
136
+ }
137
+ }
138
+ }
139
+ // Dev dependencies
140
+ if (implType.dependencies.dev && Array.isArray(implType.dependencies.dev)) {
141
+ for (const dep of implType.dependencies.dev) {
142
+ if (dep.name && dep.version) {
143
+ result.devDependencies[dep.name] = dep.version;
144
+ }
145
+ }
146
+ }
147
+ }
148
+
149
+ // Also handle old requirements.dependencies.npm structure for backwards compatibility
150
+ const requirements = implType.requirements;
151
+ if (requirements) {
152
+ if (requirements.dependencies?.npm) {
153
+ Object.assign(result.dependencies, requirements.dependencies.npm.dependencies || {});
154
+ Object.assign(result.devDependencies, requirements.dependencies.npm.devDependencies || {});
155
+ Object.assign(result.scripts, requirements.dependencies.npm.scripts || {});
156
+ }
157
+
158
+ // Collect environment variables
159
+ if (requirements.environment) {
160
+ result.environment.push(...requirements.environment);
161
+ }
162
+ }
163
+
164
+ // Detect TypeScript usage
165
+ if (implType.technology?.language === 'typescript') {
166
+ result.usesTypeScript = true;
167
+ }
168
+
169
+ // Detect Docker usage
170
+ if (implType.capabilities?.provides?.includes('container.dev')) {
171
+ result.usesDocker = true;
172
+ }
173
+ }
174
+
175
+ return result;
176
+ }
@@ -0,0 +1,207 @@
1
+ /**
2
+ * Generic README Generator
3
+ *
4
+ * Generates README based on spec and manifest choices
5
+ */
6
+
7
+ import type { TemplateContext } from '@specverse/engine-realize';
8
+
9
+ export default function generateReadme(context: TemplateContext): string {
10
+ const { spec, manifest } = context;
11
+
12
+ const sections: string[] = [];
13
+
14
+ // Title and description
15
+ sections.push(`# ${spec.metadata?.component || 'SpecVerse Application'}`);
16
+ sections.push('');
17
+ sections.push(spec.metadata?.description || 'Generated with SpecVerse');
18
+ sections.push('');
19
+
20
+ // Tech stack (inferred from manifest)
21
+ const techStack = inferTechStack(manifest);
22
+ if (techStack.length > 0) {
23
+ sections.push('## Tech Stack');
24
+ sections.push('');
25
+ for (const tech of techStack) {
26
+ sections.push(`- **${tech.category}**: ${tech.items.join(', ')}`);
27
+ }
28
+ sections.push('');
29
+ }
30
+
31
+ // Prerequisites
32
+ sections.push('## Getting Started');
33
+ sections.push('');
34
+ sections.push('### Prerequisites');
35
+ sections.push('');
36
+ sections.push('- Node.js 18+');
37
+ sections.push('- npm or yarn');
38
+
39
+ if (usesPrisma(manifest)) {
40
+ sections.push('- PostgreSQL (or your database of choice)');
41
+ }
42
+
43
+ sections.push('');
44
+
45
+ // Installation
46
+ sections.push('### Installation');
47
+ sections.push('');
48
+ sections.push('```bash');
49
+ sections.push('npm install');
50
+ sections.push('```');
51
+ sections.push('');
52
+
53
+ // Environment setup
54
+ const hasEnvVars = manifestHasEnvVars(manifest);
55
+ if (hasEnvVars) {
56
+ sections.push('### Environment Setup');
57
+ sections.push('');
58
+ sections.push('```bash');
59
+ sections.push('cp .env.example .env');
60
+ sections.push('```');
61
+ sections.push('');
62
+ sections.push('Configure your environment variables in `.env`');
63
+ sections.push('');
64
+ }
65
+
66
+ // Database setup if using Prisma
67
+ if (usesPrisma(manifest)) {
68
+ sections.push('### Database Setup');
69
+ sections.push('');
70
+ sections.push('**Important**: Create the database before running Prisma commands.');
71
+ sections.push('');
72
+ sections.push('```bash');
73
+ sections.push('# Create database (PostgreSQL example)');
74
+ sections.push('createdb your_database_name');
75
+ sections.push('');
76
+ sections.push('# Or using psql:');
77
+ sections.push('# psql postgres');
78
+ sections.push('# CREATE DATABASE your_database_name;');
79
+ sections.push('# \\q');
80
+ sections.push('');
81
+ sections.push('# Update DATABASE_URL in .env with your database name');
82
+ sections.push('# DATABASE_URL="postgresql://localhost:5432/your_database_name"');
83
+ sections.push('');
84
+ sections.push('# Generate Prisma client');
85
+ sections.push('npm run db:generate');
86
+ sections.push('');
87
+ sections.push('# Push schema to database (for development)');
88
+ sections.push('npm run db:push');
89
+ sections.push('');
90
+ sections.push('# Or use migrations (for production)');
91
+ sections.push('npm run db:migrate');
92
+ sections.push('```');
93
+ sections.push('');
94
+ }
95
+
96
+ // Development
97
+ sections.push('### Development');
98
+ sections.push('');
99
+ sections.push('```bash');
100
+ sections.push('npm run dev');
101
+ sections.push('```');
102
+ sections.push('');
103
+
104
+ // Production
105
+ sections.push('### Production Build');
106
+ sections.push('');
107
+ sections.push('```bash');
108
+ sections.push('npm run build');
109
+ sections.push('npm start');
110
+ sections.push('```');
111
+ sections.push('');
112
+
113
+ // API Documentation
114
+ if (hasRestAPI(manifest)) {
115
+ sections.push('## API');
116
+ sections.push('');
117
+ sections.push('The API server runs on `http://localhost:${PORT}` (default: 3000)');
118
+ sections.push('');
119
+
120
+ // List controllers if present
121
+ if (spec.controllers && spec.controllers.length > 0) {
122
+ sections.push('### Endpoints');
123
+ sections.push('');
124
+ for (const controller of spec.controllers) {
125
+ sections.push(`- **${controller.name}**: \`${controller.basePath || '/api'}\``);
126
+ }
127
+ sections.push('');
128
+ }
129
+ }
130
+
131
+ // Generated notice
132
+ sections.push('---');
133
+ sections.push('');
134
+ sections.push('_Generated with [SpecVerse](https://github.com/specverse/specverse-lang)_');
135
+
136
+ return sections.join('\n');
137
+ }
138
+
139
+ function inferTechStack(manifest: any): Array<{category: string, items: string[]}> {
140
+ const stack: Array<{category: string, items: string[]}> = [];
141
+
142
+ if (!manifest || !manifest.capabilityMappings) {
143
+ return stack;
144
+ }
145
+
146
+ // Runtime
147
+ stack.push({
148
+ category: 'Runtime',
149
+ items: ['Node.js', 'TypeScript']
150
+ });
151
+
152
+ // Framework - extract from capability mapping
153
+ const apiMapping = manifest.capabilityMappings.find((m: any) =>
154
+ m.capability === 'api.rest'
155
+ );
156
+ if (apiMapping) {
157
+ stack.push({
158
+ category: 'Web Framework',
159
+ items: [apiMapping.instanceFactory]
160
+ });
161
+ }
162
+
163
+ // ORM - extract from capability mapping
164
+ const ormMapping = manifest.capabilityMappings.find((m: any) =>
165
+ m.capability === 'orm.client' || m.capability === 'orm.schema'
166
+ );
167
+ if (ormMapping) {
168
+ stack.push({
169
+ category: 'ORM',
170
+ items: [ormMapping.instanceFactory]
171
+ });
172
+ }
173
+
174
+ return stack;
175
+ }
176
+
177
+ function usesPrisma(manifest: any): boolean {
178
+ if (!manifest || !manifest.capabilityMappings) {
179
+ return false;
180
+ }
181
+
182
+ return manifest.capabilityMappings.some((m: any) =>
183
+ m.instanceFactory?.toLowerCase().includes('prisma')
184
+ );
185
+ }
186
+
187
+ function hasRestAPI(manifest: any): boolean {
188
+ if (!manifest || !manifest.capabilityMappings) {
189
+ return false;
190
+ }
191
+
192
+ return manifest.capabilityMappings.some((m: any) =>
193
+ m.capability === 'api.rest'
194
+ );
195
+ }
196
+
197
+ function manifestHasEnvVars(manifest: any): boolean {
198
+ // In v3.3, we always assume there are env vars if we have database or server config
199
+ if (!manifest || !manifest.capabilityMappings) {
200
+ return false;
201
+ }
202
+
203
+ // Check if there are database or API capabilities (they typically need env vars)
204
+ return manifest.capabilityMappings.some((m: any) =>
205
+ m.capability === 'storage.database' || m.capability === 'api.rest'
206
+ );
207
+ }
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Generic TSConfig Generator
3
+ *
4
+ * Generates TypeScript configuration based on manifest choices
5
+ */
6
+
7
+ import type { TemplateContext } from '@specverse/engine-realize';
8
+
9
+ export default function generateTsConfig(context: TemplateContext): string {
10
+ const { manifest, spec } = context;
11
+
12
+ // Extract TypeScript options from implementation types
13
+ const mergedOptions = extractTsConfigOptions(context.implementationTypes || []);
14
+
15
+ // Detect if we're using React - check both implementation types AND if we have views in the spec
16
+ const hasViews = spec && (spec.views || (Array.isArray(spec.views) && spec.views.length > 0));
17
+ const usesReact = hasViews && (context.implementationTypes || []).some((implType: any) =>
18
+ implType.capabilities?.provides?.includes('ui.components') &&
19
+ implType.technology?.framework === 'react'
20
+ );
21
+
22
+ // Base tsconfig for backend code
23
+ const tsconfig = {
24
+ compilerOptions: {
25
+ // Defaults
26
+ target: 'ES2022',
27
+ module: 'ESNext',
28
+ moduleResolution: 'node',
29
+ lib: ['ES2022'],
30
+ outDir: './dist',
31
+ rootDir: './src',
32
+
33
+ // Strict mode
34
+ strict: true,
35
+ esModuleInterop: true,
36
+ skipLibCheck: true,
37
+ forceConsistentCasingInFileNames: true,
38
+
39
+ // Module resolution
40
+ resolveJsonModule: true,
41
+ allowSyntheticDefaultImports: true,
42
+
43
+ // Output
44
+ declaration: true,
45
+ declarationMap: true,
46
+ sourceMap: true,
47
+
48
+ // Merge options from implementation types
49
+ ...mergedOptions
50
+ },
51
+ include: usesReact ? ['src/**/*.ts'] : ['src/**/*'], // Exclude .tsx files if React is used
52
+ exclude: usesReact
53
+ ? ['node_modules', 'dist', '**/*.test.ts', '**/*.spec.ts', 'src/components/**', 'src/hooks/**', 'src/types/**'] // Exclude React-specific dirs
54
+ : ['node_modules', 'dist', '**/*.test.ts', '**/*.spec.ts'],
55
+ ...(usesReact && {
56
+ references: [{ path: './tsconfig.react.json' }] // Reference React config
57
+ })
58
+ };
59
+
60
+ return JSON.stringify(tsconfig, null, 2);
61
+ }
62
+
63
+ function extractTsConfigOptions(implementationTypes: any[]): any {
64
+ const options: any = {};
65
+
66
+ if (!implementationTypes || implementationTypes.length === 0) {
67
+ return options;
68
+ }
69
+
70
+ for (const implType of implementationTypes) {
71
+ // Access from generic configuration.tsconfig structure
72
+ if (implType.requirements?.configuration?.tsconfig?.compilerOptions) {
73
+ Object.assign(options, implType.requirements.configuration.tsconfig.compilerOptions);
74
+ }
75
+ }
76
+
77
+ return options;
78
+ }
@@ -0,0 +1,41 @@
1
+ /**
2
+ * React TSConfig Generator
3
+ *
4
+ * Generates TypeScript configuration for React components with bundler module resolution
5
+ */
6
+
7
+ import type { TemplateContext } from '@specverse/engine-realize';
8
+
9
+ export default function generateReactTsConfig(context: TemplateContext): string {
10
+ const tsconfigReact = {
11
+ extends: './tsconfig.json',
12
+ compilerOptions: {
13
+ // React/Vite specific settings
14
+ moduleResolution: 'bundler',
15
+ lib: ['ES2022', 'DOM', 'DOM.Iterable'],
16
+ jsx: 'react-jsx',
17
+ jsxImportSource: 'react',
18
+ types: ['vite/client'],
19
+
20
+ // Allow importing .ts/.tsx files with extensions
21
+ allowImportingTsExtensions: true,
22
+
23
+ // Project reference settings
24
+ composite: true,
25
+ outDir: './dist/react'
26
+ },
27
+ include: ['src/**/*.tsx', 'src/**/*.ts'],
28
+ exclude: [
29
+ 'node_modules',
30
+ 'dist',
31
+ '**/*.test.ts',
32
+ '**/*.spec.ts',
33
+ 'src/main.ts', // Backend entry point
34
+ 'src/controllers/**', // Backend controllers
35
+ 'src/routes/**', // Backend routes
36
+ 'src/services/**' // Backend services (if any)
37
+ ]
38
+ };
39
+
40
+ return JSON.stringify(tsconfigReact, null, 2);
41
+ }
@@ -0,0 +1,66 @@
1
+ name: PythonSDK
2
+ version: "1.0.0"
3
+ category: view
4
+ description: "Python SDK generator for consuming REST APIs with async support and type hints"
5
+
6
+ metadata:
7
+ author: "SpecVerse Team"
8
+ license: "MIT"
9
+ tags: [python, sdk, client, rest-api, async]
10
+
11
+ compatibility:
12
+ specverse: "^3.3.0"
13
+ python: ">=3.8"
14
+
15
+ capabilities:
16
+ provides:
17
+ - "sdk.python"
18
+ - "client.rest.async"
19
+ requires:
20
+ - "api.rest"
21
+ - "api.rest.crud"
22
+
23
+ technology:
24
+ runtime: "python"
25
+ language: "python"
26
+ framework: "native"
27
+ httpClient: "aiohttp"
28
+
29
+ dependencies:
30
+ runtime:
31
+ - name: "aiohttp"
32
+ version: "^3.9.0"
33
+ - name: "pydantic"
34
+ version: "^2.0.0"
35
+ dev:
36
+ - name: "mypy"
37
+ version: "^1.7.0"
38
+ - name: "pytest"
39
+ version: "^7.4.0"
40
+ - name: "pytest-asyncio"
41
+ version: "^0.21.0"
42
+
43
+ codeTemplates:
44
+ sdk:
45
+ engine: typescript
46
+ generator: "libs/instance-factories/sdks/templates/python/sdk-generator.ts"
47
+ outputPattern: "sdk-python/"
48
+
49
+ configuration:
50
+ packageName: "specverse_client"
51
+ packageVersion: "1.0.0"
52
+ includeAuth: true
53
+ includeRetry: true
54
+ includeAsync: true
55
+ timeout: 30000
56
+ retries: 3
57
+
58
+ # NOTE: This implementation type wraps the existing generate-sdk-python.js script
59
+ # TODO: Future enhancement - Convert generate-sdk-python.js to native TypeScript template generator
60
+ # The current script is 1000+ lines and generates a complete Python package structure.
61
+ # Converting to native templates would require breaking it into multiple template files:
62
+ # - client-generator.ts (main async client class)
63
+ # - resource-generator.ts (per-controller resource classes)
64
+ # - types-generator.ts (Pydantic models)
65
+ # - errors-generator.ts (exception classes)
66
+ # - package-generator.ts (setup.py, requirements.txt)
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Python SDK Generator Wrapper
3
+ *
4
+ * Wraps the existing generate-sdk-python.js script for use with the
5
+ * implementation types system.
6
+ *
7
+ * NOTE: This is a wrapper around scripts/generate-sdk-python.js
8
+ * TODO: Convert generate-sdk-python.js to native TypeScript template generator
9
+ * See python-sdk.yaml for conversion notes.
10
+ */
11
+
12
+ import type { TemplateContext } from '@specverse/engine-realize';
13
+ import { generatePythonSDK } from '../../../../../scripts/generate-sdk-python.js';
14
+
15
+ /**
16
+ * Generate Python SDK by delegating to the existing generator
17
+ */
18
+ export default function generateSDK(context: TemplateContext): string {
19
+ const { spec, implType, outputDir } = context;
20
+
21
+ if (!spec) {
22
+ throw new Error('Specification is required in template context');
23
+ }
24
+
25
+ // Extract configuration from implementation type
26
+ const config = implType.configuration || {};
27
+
28
+ const options = {
29
+ packageName: config.packageName || 'specverse_client',
30
+ packageVersion: config.packageVersion || '1.0.0',
31
+ includeAuth: config.includeAuth !== false,
32
+ includeRetry: config.includeRetry !== false,
33
+ includeAsync: config.includeAsync !== false,
34
+ timeout: config.timeout || 30000,
35
+ retries: config.retries || 3
36
+ };
37
+
38
+ // Call the existing generator
39
+ const result = generatePythonSDK(spec, outputDir || './sdk-python', options);
40
+
41
+ // Return summary information
42
+ return JSON.stringify({
43
+ message: 'Python SDK generated successfully',
44
+ packageName: result.packageName,
45
+ resourceCount: result.resourceCount,
46
+ endpointCount: result.endpointCount,
47
+ outputDir: result.outputDir,
48
+ files: result.files
49
+ }, null, 2);
50
+ }
@@ -0,0 +1,49 @@
1
+ /**
2
+ * TypeScript SDK Generator Wrapper
3
+ *
4
+ * Wraps the existing generate-sdk-typescript.js script for use with the
5
+ * implementation types system.
6
+ *
7
+ * NOTE: This is a wrapper around scripts/generate-sdk-typescript.js
8
+ * TODO: Convert generate-sdk-typescript.js to native TypeScript template generator
9
+ * See typescript-sdk.yaml for conversion notes.
10
+ */
11
+
12
+ import type { TemplateContext } from '@specverse/engine-realize';
13
+ import { generateTypeScriptSDK } from '../../../../../scripts/generate-sdk-typescript.js';
14
+
15
+ /**
16
+ * Generate TypeScript SDK by delegating to the existing generator
17
+ */
18
+ export default function generateSDK(context: TemplateContext): string {
19
+ const { spec, implType, outputDir } = context;
20
+
21
+ if (!spec) {
22
+ throw new Error('Specification is required in template context');
23
+ }
24
+
25
+ // Extract configuration from implementation type
26
+ const config = implType.configuration || {};
27
+
28
+ const options = {
29
+ packageName: config.packageName || '@specverse/sdk',
30
+ packageVersion: config.packageVersion || '1.0.0',
31
+ includeAuth: config.includeAuth !== false,
32
+ includeRetry: config.includeRetry !== false,
33
+ timeout: config.timeout || 30000,
34
+ retries: config.retries || 3
35
+ };
36
+
37
+ // Call the existing generator
38
+ const result = generateTypeScriptSDK(spec, outputDir || './sdk-typescript', options);
39
+
40
+ // Return summary information
41
+ return JSON.stringify({
42
+ message: 'TypeScript SDK generated successfully',
43
+ packageName: result.packageName,
44
+ resourceCount: result.resourceCount,
45
+ endpointCount: result.endpointCount,
46
+ outputDir: result.outputDir,
47
+ files: result.files
48
+ }, null, 2);
49
+ }