@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,408 @@
1
+ # Complete End-to-End Task Management Application
2
+ # Demonstrates full-stack architecture with React frontend, Fastify API, events, and persistence
3
+
4
+ components:
5
+ TaskManagementApp:
6
+ version: "1.0.0"
7
+ description: "Complete task management application with real-time updates"
8
+ tags: [demo, fullstack, react, events]
9
+
10
+ export:
11
+ models: [User, Task, Project]
12
+ controllers: [UserController, TaskController, ProjectController]
13
+ services: [NotificationService, TaskAssignmentService]
14
+ events: [TaskCreated, TaskUpdated, TaskCompleted, UserNotified]
15
+ views: [TaskListView, TaskDetailView, ProjectDashboard]
16
+
17
+ models:
18
+ User:
19
+ description: "Application user with authentication"
20
+ attributes:
21
+ id: UUID required auto=uuid4
22
+ username: String required unique min=3 max=50
23
+ email: Email required unique
24
+ displayName: String required
25
+ avatar: String
26
+ active: Boolean default=true
27
+ createdAt: DateTime required auto=now
28
+ updatedAt: DateTime auto=now
29
+ relationships:
30
+ assignedTasks: hasMany Task
31
+ ownedProjects: hasMany Project
32
+ behaviors:
33
+ activate:
34
+ description: "Activate user account"
35
+ parameters:
36
+ reason: String required
37
+ returns: Boolean
38
+ publishes: [UserNotified]
39
+
40
+ Project:
41
+ description: "Project containing multiple tasks"
42
+ attributes:
43
+ id: UUID required auto=uuid4
44
+ name: String required min=1 max=100
45
+ description: Text
46
+ status: String required values=[planning,active,completed,archived] default=planning
47
+ startDate: DateTime
48
+ dueDate: DateTime
49
+ createdAt: DateTime required auto=now
50
+ updatedAt: DateTime auto=now
51
+ relationships:
52
+ owner: belongsTo User cascade
53
+ tasks: hasMany Task
54
+ lifecycles:
55
+ status:
56
+ flow: "planning -> active -> completed -> archived"
57
+
58
+ Task:
59
+ description: "Individual task with assignment and status tracking"
60
+ attributes:
61
+ id: UUID required auto=uuid4
62
+ title: String required min=1 max=200
63
+ description: Text
64
+ status: String required values=[todo,in_progress,review,done] default=todo
65
+ priority: String required values=[low,medium,high,urgent] default=medium
66
+ dueDate: DateTime
67
+ completedAt: DateTime
68
+ createdAt: DateTime required auto=now
69
+ updatedAt: DateTime auto=now
70
+ relationships:
71
+ project: belongsTo Project cascade
72
+ assignee: belongsTo User
73
+ lifecycles:
74
+ status:
75
+ flow: "todo -> in_progress -> review -> done"
76
+ behaviors:
77
+ complete:
78
+ description: "Mark task as completed"
79
+ parameters:
80
+ completionNotes: String
81
+ returns: Boolean
82
+ ensures: ["Task status is done", "Completed timestamp set"]
83
+ publishes: [TaskCompleted]
84
+
85
+ assign:
86
+ description: "Assign task to a user"
87
+ parameters:
88
+ userId: UUID required
89
+ returns: Boolean
90
+ publishes: [TaskUpdated, UserNotified]
91
+
92
+ controllers:
93
+ UserController:
94
+ description: "User management API"
95
+ model: User
96
+ subscribes_to: []
97
+ cured:
98
+ create:
99
+ description: "Register new user"
100
+ parameters:
101
+ username: String required
102
+ email: Email required
103
+ displayName: String required
104
+ returns: User
105
+ publishes: [UserNotified]
106
+ retrieve:
107
+ description: "Get user by ID"
108
+ parameters:
109
+ id: UUID required
110
+ returns: User
111
+ retrieve_many:
112
+ description: "List all users"
113
+ parameters:
114
+ limit: Integer default=20 max=100
115
+ offset: Integer default=0
116
+ returns: Array<User>
117
+ update:
118
+ description: "Update user profile"
119
+ parameters:
120
+ id: UUID required
121
+ changes: String required
122
+ returns: User
123
+ delete:
124
+ description: "Deactivate user account"
125
+ parameters:
126
+ id: UUID required
127
+ returns: Boolean
128
+
129
+ TaskController:
130
+ description: "Task management API with real-time updates"
131
+ model: Task
132
+ subscribes_to: [TaskCreated, TaskUpdated]
133
+ cured:
134
+ create:
135
+ description: "Create new task"
136
+ parameters:
137
+ title: String required
138
+ projectId: UUID required
139
+ description: Text
140
+ priority: String
141
+ returns: Task
142
+ publishes: [TaskCreated]
143
+ retrieve:
144
+ description: "Get task by ID"
145
+ parameters:
146
+ id: UUID required
147
+ returns: Task
148
+ retrieve_many:
149
+ description: "List tasks with filtering"
150
+ parameters:
151
+ projectId: UUID
152
+ status: String
153
+ assigneeId: UUID
154
+ limit: Integer default=20 max=100
155
+ offset: Integer default=0
156
+ returns: Array<Task>
157
+ update:
158
+ description: "Update task details"
159
+ parameters:
160
+ id: UUID required
161
+ changes: String required
162
+ returns: Task
163
+ publishes: [TaskUpdated]
164
+ delete:
165
+ description: "Delete task"
166
+ parameters:
167
+ id: UUID required
168
+ returns: Boolean
169
+ actions:
170
+ complete:
171
+ description: "Mark task as completed"
172
+ parameters:
173
+ id: UUID required
174
+ completionNotes: String
175
+ returns: Boolean
176
+ publishes: [TaskCompleted]
177
+ assign:
178
+ description: "Assign task to user"
179
+ parameters:
180
+ id: UUID required
181
+ userId: UUID required
182
+ returns: Boolean
183
+ publishes: [TaskUpdated, UserNotified]
184
+
185
+ ProjectController:
186
+ description: "Project management API"
187
+ model: Project
188
+ subscribes_to: []
189
+ cured:
190
+ create:
191
+ description: "Create new project"
192
+ parameters:
193
+ name: String required
194
+ description: Text
195
+ ownerId: UUID required
196
+ returns: Project
197
+ retrieve:
198
+ description: "Get project by ID"
199
+ parameters:
200
+ id: UUID required
201
+ returns: Project
202
+ retrieve_many:
203
+ description: "List projects"
204
+ parameters:
205
+ ownerId: UUID
206
+ status: String
207
+ limit: Integer default=20 max=100
208
+ offset: Integer default=0
209
+ returns: Array<Project>
210
+ update:
211
+ description: "Update project"
212
+ parameters:
213
+ id: UUID required
214
+ changes: String required
215
+ returns: Project
216
+ delete:
217
+ description: "Archive project"
218
+ parameters:
219
+ id: UUID required
220
+ returns: Boolean
221
+
222
+ services:
223
+ NotificationService:
224
+ description: "Send notifications to users"
225
+ subscribes_to: [TaskCreated, TaskUpdated, TaskCompleted, UserNotified]
226
+ operations:
227
+ sendTaskNotification:
228
+ description: "Notify user about task changes"
229
+ parameters:
230
+ userId: UUID required
231
+ taskId: UUID required
232
+ eventType: String required
233
+ returns: Boolean
234
+ publishes: [UserNotified]
235
+
236
+ sendEmailNotification:
237
+ description: "Send email to user"
238
+ parameters:
239
+ userId: UUID required
240
+ subject: String required
241
+ body: Text required
242
+ returns: Boolean
243
+
244
+ TaskAssignmentService:
245
+ description: "Handle task assignment logic"
246
+ subscribes_to: [TaskCreated, TaskUpdated]
247
+ operations:
248
+ assignTask:
249
+ description: "Assign task to best available user"
250
+ parameters:
251
+ taskId: UUID required
252
+ userId: UUID
253
+ returns: Boolean
254
+ publishes: [TaskUpdated, UserNotified]
255
+
256
+ redistributeTasks:
257
+ description: "Redistribute tasks when user becomes unavailable"
258
+ parameters:
259
+ fromUserId: UUID required
260
+ toUserId: UUID
261
+ returns: Boolean
262
+
263
+ views:
264
+ TaskListView:
265
+ description: "Display list of tasks with filtering"
266
+ type: "list"
267
+ model: Task
268
+ subscribes_to: [TaskCreated, TaskUpdated, TaskCompleted]
269
+ uiComponents:
270
+ taskTable:
271
+ type: "table"
272
+ columns: ["title", "status", "priority", "assignee", "dueDate"]
273
+ filters:
274
+ type: "filterPanel"
275
+ fields: ["status", "priority", "assignee", "project"]
276
+ properties:
277
+ sortable: true
278
+ filterable: true
279
+ realtime: true
280
+
281
+ TaskDetailView:
282
+ description: "Detailed task view with editing"
283
+ type: "detail"
284
+ model: Task
285
+ subscribes_to: [TaskUpdated, TaskCompleted]
286
+ uiComponents:
287
+ taskForm:
288
+ type: "form"
289
+ fields: ["title", "description", "status", "priority", "dueDate"]
290
+ activityLog:
291
+ type: "timeline"
292
+ source: "events"
293
+ properties:
294
+ editable: true
295
+ realtime: true
296
+
297
+ ProjectDashboard:
298
+ description: "Project overview with task statistics"
299
+ type: "dashboard"
300
+ model: Project
301
+ subscribes_to: [TaskCreated, TaskUpdated, TaskCompleted]
302
+ uiComponents:
303
+ projectHeader:
304
+ type: "header"
305
+ fields: ["name", "status", "owner"]
306
+ taskSummary:
307
+ type: "chart"
308
+ chartType: "pie"
309
+ dataSource: "tasks.status"
310
+ taskTimeline:
311
+ type: "gantt"
312
+ dataSource: "tasks"
313
+ properties:
314
+ realtime: true
315
+ refreshInterval: 5000
316
+
317
+ events:
318
+ TaskCreated:
319
+ description: "New task created"
320
+ attributes:
321
+ taskId: UUID required
322
+ projectId: UUID required
323
+ title: String required
324
+ createdBy: UUID required
325
+ timestamp: DateTime required auto=now
326
+
327
+ TaskUpdated:
328
+ description: "Task details updated"
329
+ attributes:
330
+ taskId: UUID required
331
+ updatedFields: String required
332
+ previousStatus: String
333
+ newStatus: String
334
+ updatedBy: UUID required
335
+ timestamp: DateTime required auto=now
336
+
337
+ TaskCompleted:
338
+ description: "Task marked as completed"
339
+ attributes:
340
+ taskId: UUID required
341
+ completedBy: UUID required
342
+ completionNotes: String
343
+ timestamp: DateTime required auto=now
344
+
345
+ UserNotified:
346
+ description: "User received notification"
347
+ attributes:
348
+ userId: UUID required
349
+ notificationType: String required
350
+ message: Text required
351
+ relatedEntityId: UUID
352
+ timestamp: DateTime required auto=now
353
+
354
+ deployments:
355
+ development:
356
+ version: "1.0.0"
357
+ environment: development
358
+ description: "Local development environment"
359
+
360
+ instances:
361
+ controllers:
362
+ apiServer:
363
+ component: "TaskManagementApp"
364
+ advertises: ["api.rest", "api.rest.crud"]
365
+ uses: ["storage.mainDb.*", "messaging.eventBus.*"]
366
+ scale: 1
367
+
368
+ storage:
369
+ mainDb:
370
+ component: "TaskManagementApp"
371
+ type: "relational"
372
+ advertises: ["storage.database"]
373
+
374
+ communications:
375
+ eventBus:
376
+ namespace: "global"
377
+ type: "pubsub"
378
+ capabilities: ["messaging.pubsub", "messaging.events"]
379
+
380
+ production:
381
+ version: "1.0.0"
382
+ environment: production
383
+ description: "Production environment with scaling"
384
+
385
+ instances:
386
+ controllers:
387
+ apiServer:
388
+ component: "TaskManagementApp"
389
+ advertises: ["api.rest", "api.rest.crud"]
390
+ uses: ["storage.mainDb.*", "messaging.eventBus.*"]
391
+ scale: 3
392
+
393
+ storage:
394
+ mainDb:
395
+ component: "TaskManagementApp"
396
+ type: "relational"
397
+ advertises: ["storage.database"]
398
+
399
+ cacheDb:
400
+ component: "TaskManagementApp"
401
+ type: "keyvalue"
402
+ advertises: ["storage.cache"]
403
+
404
+ communications:
405
+ eventBus:
406
+ namespace: "global"
407
+ type: "pubsub"
408
+ capabilities: ["messaging.pubsub", "messaging.events"]
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Code Generator
3
+ *
4
+ * Orchestrates code generation using instance factories,
5
+ * template engines, and configuration.
6
+ */
7
+ import { TemplateEngineRegistry } from './engine-registry.js';
8
+ import type { ResolvedImplementation, TemplateContext } from '../types/index.js';
9
+ /**
10
+ * Generated code output
11
+ */
12
+ export interface GeneratedOutput {
13
+ /** Generated code content */
14
+ code: string;
15
+ /** Output file path */
16
+ filePath: string;
17
+ /** Template that was used */
18
+ templateName: string;
19
+ /** Instance factory that was used */
20
+ instanceFactory: string;
21
+ }
22
+ /**
23
+ * Code generation options
24
+ */
25
+ export interface CodeGenerationOptions {
26
+ /** Base output directory */
27
+ outputDir?: string;
28
+ /** Template engine registry (defaults to global) */
29
+ engineRegistry?: TemplateEngineRegistry;
30
+ /** Dry run (don't write files, just return code) */
31
+ dryRun?: boolean;
32
+ /** Additional context to merge */
33
+ additionalContext?: Record<string, any>;
34
+ }
35
+ /**
36
+ * Code generator orchestrator
37
+ */
38
+ export declare class CodeGenerator {
39
+ private engineRegistry;
40
+ private outputDir;
41
+ constructor(options?: CodeGenerationOptions);
42
+ /**
43
+ * Generate code for a specific template
44
+ */
45
+ generateFromTemplate(resolved: ResolvedImplementation, templateName: string, context: Partial<TemplateContext>, options?: CodeGenerationOptions): Promise<GeneratedOutput>;
46
+ /**
47
+ * Generate code for all templates in an instance factory
48
+ */
49
+ generateAll(resolved: ResolvedImplementation, context: Partial<TemplateContext>, options?: CodeGenerationOptions): Promise<GeneratedOutput[]>;
50
+ /**
51
+ * Generate code for multiple resolved implementations
52
+ */
53
+ generateForDeployment(resolved: ResolvedImplementation[], context: Partial<TemplateContext>, options?: CodeGenerationOptions): Promise<Map<string, GeneratedOutput[]>>;
54
+ /**
55
+ * Resolve output path from template pattern
56
+ *
57
+ * Supports variable substitution:
58
+ * - {controller} → context.controller.name
59
+ * - {model} → context.model.name
60
+ * - {service} → context.service.name
61
+ * - {operation} → context.operation
62
+ * - etc.
63
+ */
64
+ private resolveOutputPath;
65
+ /**
66
+ * Get a value from context, supporting nested properties
67
+ */
68
+ private getContextValue;
69
+ /**
70
+ * Get the template engine registry
71
+ */
72
+ getEngineRegistry(): TemplateEngineRegistry;
73
+ /**
74
+ * Set the output directory
75
+ */
76
+ setOutputDir(dir: string): void;
77
+ /**
78
+ * Get the output directory
79
+ */
80
+ getOutputDir(): string;
81
+ }
82
+ /**
83
+ * Create a code generator with default configuration
84
+ */
85
+ export declare function createCodeGenerator(options?: CodeGenerationOptions): CodeGenerator;
86
+ //# sourceMappingURL=code-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-generator.d.ts","sourceRoot":"","sources":["../../src/engines/code-generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,sBAAsB,EAAyB,MAAM,sBAAsB,CAAC;AACrF,OAAO,KAAK,EACV,sBAAsB,EACtB,eAAe,EAEhB,MAAM,mBAAmB,CAAC;AAE3B;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IAEb,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAC;IAEjB,6BAA6B;IAC7B,YAAY,EAAE,MAAM,CAAC;IAErB,qCAAqC;IACrC,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,oDAAoD;IACpD,cAAc,CAAC,EAAE,sBAAsB,CAAC;IAExC,oDAAoD;IACpD,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,kCAAkC;IAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACzC;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,cAAc,CAAyB;IAC/C,OAAO,CAAC,SAAS,CAAS;gBAEd,OAAO,GAAE,qBAA0B;IAK/C;;OAEG;IACG,oBAAoB,CACxB,QAAQ,EAAE,sBAAsB,EAChC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,EACjC,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,eAAe,CAAC;IA4C3B;;OAEG;IACG,WAAW,CACf,QAAQ,EAAE,sBAAsB,EAChC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,EACjC,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,eAAe,EAAE,CAAC;IAwB7B;;OAEG;IACG,qBAAqB,CACzB,QAAQ,EAAE,sBAAsB,EAAE,EAClC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,EACjC,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;IAW1C;;;;;;;;;OASG;IACH,OAAO,CAAC,iBAAiB;IAwCzB;;OAEG;IACH,OAAO,CAAC,eAAe;IAevB;;OAEG;IACH,iBAAiB,IAAI,sBAAsB;IAI3C;;OAEG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI/B;;OAEG;IACH,YAAY,IAAI,MAAM;CAGvB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,aAAa,CAElF"}
@@ -0,0 +1,159 @@
1
+ /**
2
+ * Code Generator
3
+ *
4
+ * Orchestrates code generation using instance factories,
5
+ * template engines, and configuration.
6
+ */
7
+ import path from 'path';
8
+ import { createDefaultRegistry } from './engine-registry.js';
9
+ /**
10
+ * Code generator orchestrator
11
+ */
12
+ export class CodeGenerator {
13
+ engineRegistry;
14
+ outputDir;
15
+ constructor(options = {}) {
16
+ this.engineRegistry = options.engineRegistry || createDefaultRegistry();
17
+ this.outputDir = options.outputDir || process.cwd();
18
+ }
19
+ /**
20
+ * Generate code for a specific template
21
+ */
22
+ async generateFromTemplate(resolved, templateName, context, options = {}) {
23
+ // Get template from instance factory
24
+ const template = resolved.instanceFactory.codeTemplates[templateName];
25
+ if (!template) {
26
+ throw new Error(`Template "${templateName}" not found in instance factory "${resolved.instanceFactory.name}"`);
27
+ }
28
+ // Build complete context with default template variables
29
+ const fullContext = {
30
+ spec: context.spec,
31
+ factory: resolved.instanceFactory,
32
+ model: context.model,
33
+ controller: context.controller,
34
+ service: context.service,
35
+ instance: resolved.instance,
36
+ // Default directory variables for monorepo structure
37
+ workspaceRoot: process.cwd(),
38
+ backendDir: 'backend',
39
+ frontendDir: 'frontend',
40
+ ...(resolved.configuration || {}),
41
+ ...(options.additionalContext || {}),
42
+ ...context
43
+ };
44
+ // Render template with basePath for template file resolution
45
+ const code = await this.engineRegistry.render(template, fullContext, { basePath: resolved.basePath });
46
+ // Resolve output path
47
+ const filePath = this.resolveOutputPath(template, fullContext, options.outputDir);
48
+ return {
49
+ code,
50
+ filePath,
51
+ templateName,
52
+ instanceFactory: resolved.instanceFactory.name
53
+ };
54
+ }
55
+ /**
56
+ * Generate code for all templates in an instance factory
57
+ */
58
+ async generateAll(resolved, context, options = {}) {
59
+ const outputs = [];
60
+ const templateNames = Object.keys(resolved.instanceFactory.codeTemplates);
61
+ for (const templateName of templateNames) {
62
+ try {
63
+ const output = await this.generateFromTemplate(resolved, templateName, context, options);
64
+ outputs.push(output);
65
+ }
66
+ catch (error) {
67
+ console.error(`Failed to generate from template "${templateName}": ${error instanceof Error ? error.message : String(error)}`);
68
+ // Continue with other templates
69
+ }
70
+ }
71
+ return outputs;
72
+ }
73
+ /**
74
+ * Generate code for multiple resolved implementations
75
+ */
76
+ async generateForDeployment(resolved, context, options = {}) {
77
+ const outputsByCapability = new Map();
78
+ for (const impl of resolved) {
79
+ const outputs = await this.generateAll(impl, context, options);
80
+ outputsByCapability.set(impl.capability, outputs);
81
+ }
82
+ return outputsByCapability;
83
+ }
84
+ /**
85
+ * Resolve output path from template pattern
86
+ *
87
+ * Supports variable substitution:
88
+ * - {controller} → context.controller.name
89
+ * - {model} → context.model.name
90
+ * - {service} → context.service.name
91
+ * - {operation} → context.operation
92
+ * - etc.
93
+ */
94
+ resolveOutputPath(template, context, outputDir) {
95
+ const baseDir = outputDir || this.outputDir;
96
+ // If outputDir looks like a file (has an extension), use it directly
97
+ if (outputDir && /\.\w+$/.test(outputDir)) {
98
+ return outputDir;
99
+ }
100
+ let pattern = template.outputPattern;
101
+ // Replace directory structure variables (for monorepo support)
102
+ const outputStructure = context.outputStructure || context.configuration?.outputStructure || 'monorepo';
103
+ const frontendDir = outputStructure === 'standalone' ? '.' : (context.frontendDir || context.configuration?.frontendDir || 'frontend');
104
+ const backendDir = outputStructure === 'standalone' ? '.' : (context.backendDir || context.configuration?.backendDir || 'backend');
105
+ pattern = pattern.replace(/\{frontendDir\}/g, frontendDir);
106
+ pattern = pattern.replace(/\{backendDir\}/g, backendDir);
107
+ // Replace variables
108
+ pattern = pattern.replace(/\{controller\}/g, this.getContextValue(context, 'controller', 'name'));
109
+ pattern = pattern.replace(/\{model\}/g, this.getContextValue(context, 'model', 'name'));
110
+ pattern = pattern.replace(/\{service\}/g, this.getContextValue(context, 'service', 'name'));
111
+ pattern = pattern.replace(/\{operation\}/g, this.getContextValue(context, 'operation'));
112
+ pattern = pattern.replace(/\{instance\}/g, this.getContextValue(context, 'instance', 'name'));
113
+ pattern = pattern.replace(/\{view\.name\}/g, this.getContextValue(context, 'view', 'name'));
114
+ pattern = pattern.replace(/\{view\}/g, this.getContextValue(context, 'view', 'name'));
115
+ // Replace configuration variables (e.g., {config.outputDir})
116
+ pattern = pattern.replace(/\{config\.([^}]+)\}/g, (_, key) => {
117
+ return String(context[key] || '');
118
+ });
119
+ // Resolve to absolute path
120
+ return path.join(baseDir, pattern);
121
+ }
122
+ /**
123
+ * Get a value from context, supporting nested properties
124
+ */
125
+ getContextValue(context, key, nestedKey) {
126
+ const value = context[key];
127
+ if (!value)
128
+ return '';
129
+ if (nestedKey && typeof value === 'object') {
130
+ return String(value[nestedKey] || '');
131
+ }
132
+ return String(value);
133
+ }
134
+ /**
135
+ * Get the template engine registry
136
+ */
137
+ getEngineRegistry() {
138
+ return this.engineRegistry;
139
+ }
140
+ /**
141
+ * Set the output directory
142
+ */
143
+ setOutputDir(dir) {
144
+ this.outputDir = dir;
145
+ }
146
+ /**
147
+ * Get the output directory
148
+ */
149
+ getOutputDir() {
150
+ return this.outputDir;
151
+ }
152
+ }
153
+ /**
154
+ * Create a code generator with default configuration
155
+ */
156
+ export function createCodeGenerator(options) {
157
+ return new CodeGenerator(options);
158
+ }
159
+ //# sourceMappingURL=code-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-generator.js","sourceRoot":"","sources":["../../src/engines/code-generator.ts"],"names":[],"mappings":"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"}