@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,150 @@
1
+ /**
2
+ * Instance Factory Loader
3
+ *
4
+ * Loads instance factory definitions from YAML files
5
+ * and validates them against the JSON Schema.
6
+ */
7
+ import { readFile } from 'fs/promises';
8
+ import { glob } from 'glob';
9
+ import path from 'path';
10
+ import yaml from 'yaml';
11
+ import AjvModule from 'ajv';
12
+ import addFormatsModule from 'ajv-formats';
13
+ const Ajv = AjvModule.default || AjvModule;
14
+ const addFormats = addFormatsModule.default || addFormatsModule;
15
+ import { fileURLToPath } from 'url';
16
+ import { dirname } from 'path';
17
+ const __filename = fileURLToPath(import.meta.url);
18
+ const __dirname = dirname(__filename);
19
+ // Load JSON Schema for validation
20
+ let instanceFactorySchema;
21
+ async function loadSchema() {
22
+ if (!instanceFactorySchema) {
23
+ // Schema was consolidated into SPECVERSE-SCHEMA.json in Phase 2
24
+ // Extract InstanceFactoryDefinition from the consolidated schema
25
+ const schemaPath = path.join(__dirname, '../../schema/SPECVERSE-SCHEMA.json');
26
+ const schemaContent = await readFile(schemaPath, 'utf-8');
27
+ const fullSchema = JSON.parse(schemaContent);
28
+ // Get the InstanceFactoryDefinition from $defs
29
+ instanceFactorySchema = fullSchema.$defs?.InstanceFactoryDefinition;
30
+ if (!instanceFactorySchema) {
31
+ throw new Error('InstanceFactoryDefinition not found in SPECVERSE-SCHEMA.json');
32
+ }
33
+ }
34
+ return instanceFactorySchema;
35
+ }
36
+ /**
37
+ * Load a single instance factory from a YAML file
38
+ */
39
+ export async function loadInstanceFactory(filePath, options = {}) {
40
+ const validate = options.validate !== false;
41
+ // Read and parse YAML
42
+ const content = await readFile(filePath, 'utf-8');
43
+ const parsed = yaml.parse(content);
44
+ // Validate against schema if requested
45
+ if (validate) {
46
+ const schema = await loadSchema();
47
+ // Skip validation if no schema available (schema was consolidated)
48
+ if (schema) {
49
+ const ajv = new Ajv({ allErrors: true, strict: false });
50
+ addFormats(ajv); // Add support for format validators like "uri"
51
+ const validateFn = ajv.compile(schema);
52
+ if (!validateFn(parsed)) {
53
+ const errors = validateFn.errors?.map((err) => {
54
+ const path = err.instancePath || '/';
55
+ return `${path}: ${err.message}`;
56
+ }) || ['Unknown validation error'];
57
+ throw new Error(`Instance factory validation failed for ${filePath}:\n` +
58
+ errors.map((e) => ` - ${e}`).join('\n'));
59
+ }
60
+ }
61
+ }
62
+ const warnings = [];
63
+ // Check for optional but recommended fields
64
+ if (!parsed.description) {
65
+ warnings.push('Missing recommended field: description');
66
+ }
67
+ if (!parsed.metadata?.author) {
68
+ warnings.push('Missing recommended metadata: author');
69
+ }
70
+ return {
71
+ type: parsed,
72
+ filePath,
73
+ warnings: warnings.length > 0 ? warnings : undefined
74
+ };
75
+ }
76
+ /**
77
+ * Load all instance factories from a directory
78
+ */
79
+ export async function loadInstanceFactories(options) {
80
+ const { baseDir, pattern = '**/*.yaml', validate = true, ignoreInvalid = false } = options;
81
+ const types = [];
82
+ const errors = [];
83
+ // Find all YAML files matching the pattern
84
+ const files = await glob(pattern, {
85
+ cwd: baseDir,
86
+ absolute: true,
87
+ nodir: true
88
+ });
89
+ // Load each file
90
+ for (const filePath of files) {
91
+ try {
92
+ const result = await loadInstanceFactory(filePath, { validate });
93
+ types.push(result);
94
+ }
95
+ catch (error) {
96
+ const errorMessage = error instanceof Error ? error.message : String(error);
97
+ if (ignoreInvalid) {
98
+ errors.push({
99
+ filePath,
100
+ errors: [errorMessage]
101
+ });
102
+ }
103
+ else {
104
+ throw error;
105
+ }
106
+ }
107
+ }
108
+ return { types, errors };
109
+ }
110
+ /**
111
+ * Load instance factories from multiple directories
112
+ *
113
+ * Directories are searched in order, with earlier directories
114
+ * taking precedence for duplicate type names.
115
+ */
116
+ export async function loadFromMultipleSources(sources, options = {}) {
117
+ const allTypes = [];
118
+ const allErrors = [];
119
+ const seenTypes = new Set();
120
+ for (const source of sources) {
121
+ const result = await loadInstanceFactories({
122
+ baseDir: source.path,
123
+ pattern: source.pattern,
124
+ validate: options.validate,
125
+ ignoreInvalid: options.ignoreInvalid
126
+ });
127
+ // Filter out duplicate types (first source wins)
128
+ for (const loadResult of result.types) {
129
+ const typeName = loadResult.type.name;
130
+ if (!seenTypes.has(typeName)) {
131
+ seenTypes.add(typeName);
132
+ allTypes.push(loadResult);
133
+ }
134
+ else {
135
+ // Add warning about duplicate
136
+ const existing = allTypes.find(t => t.type.name === typeName);
137
+ if (existing) {
138
+ existing.warnings = existing.warnings || [];
139
+ existing.warnings.push(`Duplicate type "${typeName}" found in ${loadResult.filePath} (ignored)`);
140
+ }
141
+ }
142
+ }
143
+ allErrors.push(...result.errors);
144
+ }
145
+ return {
146
+ types: allTypes,
147
+ errors: allErrors
148
+ };
149
+ }
150
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/library/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Instance Factory Resolver
3
+ *
4
+ * Resolves deployment capabilities to instance factories
5
+ * using manifest configuration and capability mappings.
6
+ */
7
+ import { InstanceFactoryLibrary } from './library.js';
8
+ import type { CapabilityMapping, InstanceMapping, DefaultMappings, ResolvedImplementation } from '../types/index.js';
9
+ /**
10
+ * Resolver configuration (v3.3 hybrid mapping only)
11
+ */
12
+ export interface ResolverConfig {
13
+ /** v3.3 Hybrid Mapping System */
14
+ defaultMappings?: DefaultMappings;
15
+ capabilityMappings?: CapabilityMapping[];
16
+ instanceMappings?: InstanceMapping[];
17
+ /** Global configuration overrides */
18
+ globalConfiguration?: Record<string, any>;
19
+ }
20
+ /**
21
+ * Resolution context for a deployment instance
22
+ */
23
+ export interface ResolutionContext {
24
+ /** Deployment instance being resolved */
25
+ instance: any;
26
+ /** Component name */
27
+ componentName?: string;
28
+ /** Environment name */
29
+ environment?: string;
30
+ /** Additional context properties */
31
+ [key: string]: any;
32
+ }
33
+ /**
34
+ * Resolution error
35
+ */
36
+ export declare class ResolutionError extends Error {
37
+ capability: string;
38
+ instance?: any | undefined;
39
+ constructor(message: string, capability: string, instance?: any | undefined);
40
+ }
41
+ /**
42
+ * Resolver for mapping capabilities to instance factories
43
+ */
44
+ export declare class InstanceFactoryResolver {
45
+ private library;
46
+ private validator;
47
+ private config;
48
+ constructor(library: InstanceFactoryLibrary, config?: ResolverConfig);
49
+ /**
50
+ * Resolve a single capability to an instance factory (v3.3 hybrid mapping)
51
+ *
52
+ * Resolution priority:
53
+ * 1. Instance-specific mapping (instanceMappings) - highest priority
54
+ * 2. Capability-based mapping (capabilityMappings) - medium priority
55
+ * 3. Default category mapping (defaultMappings) - lowest priority
56
+ */
57
+ resolveCapability(capability: string, context?: ResolutionContext): ResolvedImplementation;
58
+ /**
59
+ * Resolve all capabilities for a deployment instance
60
+ */
61
+ resolveForInstance(instance: any, context?: ResolutionContext): ResolvedImplementation[];
62
+ /**
63
+ * Resolve all capabilities for a deployment
64
+ */
65
+ resolveForDeployment(deployment: any, context?: Omit<ResolutionContext, 'instance'>): Map<string, ResolvedImplementation[]>;
66
+ /**
67
+ * Find capability mapping that matches the given capability
68
+ *
69
+ * Supports wildcard patterns (e.g., "api.*" matches "api.rest", "api.graphql")
70
+ */
71
+ private findCapabilityMapping;
72
+ /**
73
+ * Extract capabilities from a deployment instance
74
+ */
75
+ private getInstanceCapabilities;
76
+ /**
77
+ * Apply template overrides to an instance factory
78
+ */
79
+ private applyTemplateOverrides;
80
+ /**
81
+ * Infer instance category from capability pattern (v3.3)
82
+ *
83
+ * Used as fallback when instance doesn't have explicit category
84
+ */
85
+ private inferCategoryFromCapability;
86
+ /**
87
+ * Get configuration summary for debugging
88
+ */
89
+ getConfigSummary(): {
90
+ capabilityMappings: number;
91
+ instanceMappings: number;
92
+ defaultMappings: number;
93
+ };
94
+ }
95
+ /**
96
+ * Create a resolver from manifest data (v3.3 hybrid mapping only)
97
+ */
98
+ export declare function createResolver(library: InstanceFactoryLibrary, manifest: {
99
+ defaultMappings?: DefaultMappings;
100
+ capabilityMappings?: CapabilityMapping[];
101
+ instanceMappings?: InstanceMapping[];
102
+ configuration?: Record<string, any>;
103
+ }): InstanceFactoryResolver;
104
+ //# sourceMappingURL=resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/library/resolver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,KAAK,EAEV,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAE3B;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,iCAAiC;IACjC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,kBAAkB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACzC,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAC;IAErC,qCAAqC;IACrC,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC3C;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,yCAAyC;IACzC,QAAQ,EAAE,GAAG,CAAC;IAEd,qBAAqB;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,oCAAoC;IACpC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IAG/B,UAAU,EAAE,MAAM;IAClB,QAAQ,CAAC,EAAE,GAAG;gBAFrB,OAAO,EAAE,MAAM,EACR,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,GAAG,YAAA;CAKxB;AAED;;GAEG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,MAAM,CAAiB;gBAEnB,OAAO,EAAE,sBAAsB,EAAE,MAAM,GAAE,cAAmB;IAMxE;;;;;;;OAOG;IACH,iBAAiB,CACf,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,sBAAsB;IA+FzB;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,sBAAsB,EAAE;IAuDxF;;OAEG;IACH,oBAAoB,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,sBAAsB,EAAE,CAAC;IAkB3H;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAyB7B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAwB/B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAqB9B;;;;OAIG;IACH,OAAO,CAAC,2BAA2B;IAwCnC;;OAEG;IACH,gBAAgB,IAAI;QAClB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,gBAAgB,EAAE,MAAM,CAAC;QACzB,eAAe,EAAE,MAAM,CAAC;KACzB;CAOF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,sBAAsB,EAC/B,QAAQ,EAAE;IACR,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,kBAAkB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACzC,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACrC,GACA,uBAAuB,CAOzB"}
@@ -0,0 +1,299 @@
1
+ /**
2
+ * Instance Factory Resolver
3
+ *
4
+ * Resolves deployment capabilities to instance factories
5
+ * using manifest configuration and capability mappings.
6
+ */
7
+ import path from 'path';
8
+ import { InstanceFactoryValidator } from './validator.js';
9
+ /**
10
+ * Resolution error
11
+ */
12
+ export class ResolutionError extends Error {
13
+ capability;
14
+ instance;
15
+ constructor(message, capability, instance) {
16
+ super(message);
17
+ this.capability = capability;
18
+ this.instance = instance;
19
+ this.name = 'ResolutionError';
20
+ }
21
+ }
22
+ /**
23
+ * Resolver for mapping capabilities to instance factories
24
+ */
25
+ export class InstanceFactoryResolver {
26
+ library;
27
+ validator;
28
+ config;
29
+ constructor(library, config = {}) {
30
+ this.library = library;
31
+ this.validator = new InstanceFactoryValidator();
32
+ this.config = config;
33
+ }
34
+ /**
35
+ * Resolve a single capability to an instance factory (v3.3 hybrid mapping)
36
+ *
37
+ * Resolution priority:
38
+ * 1. Instance-specific mapping (instanceMappings) - highest priority
39
+ * 2. Capability-based mapping (capabilityMappings) - medium priority
40
+ * 3. Default category mapping (defaultMappings) - lowest priority
41
+ */
42
+ resolveCapability(capability, context) {
43
+ let factoryName;
44
+ let mappingConfig;
45
+ let mappingVersion;
46
+ // PRIORITY 1: Check for instance-specific mapping
47
+ if (context?.instance?.name && this.config.instanceMappings) {
48
+ const instanceMapping = this.config.instanceMappings.find(m => m.instanceName === context.instance.name);
49
+ if (instanceMapping) {
50
+ factoryName = instanceMapping.instanceFactory;
51
+ mappingConfig = instanceMapping.configuration;
52
+ mappingVersion = instanceMapping.version;
53
+ }
54
+ }
55
+ // PRIORITY 2: Check for capability-based mapping
56
+ if (!factoryName) {
57
+ const capabilityMapping = this.findCapabilityMapping(capability);
58
+ if (capabilityMapping) {
59
+ factoryName = capabilityMapping.instanceFactory;
60
+ mappingConfig = capabilityMapping.configuration;
61
+ mappingVersion = capabilityMapping.version;
62
+ }
63
+ }
64
+ // PRIORITY 3: Check for default category mapping
65
+ if (!factoryName && context?.instance && this.config.defaultMappings) {
66
+ const instanceCategory = context.instance.category || this.inferCategoryFromCapability(capability);
67
+ if (instanceCategory) {
68
+ factoryName = this.config.defaultMappings[instanceCategory];
69
+ }
70
+ }
71
+ // If still no factory found, throw error
72
+ if (!factoryName) {
73
+ throw new ResolutionError(`No instance factory mapping found for capability "${capability}".\n` +
74
+ ` Instance: ${context?.instance?.name || 'unknown'}\n` +
75
+ ` Tried: instanceMappings, capabilityMappings, defaultMappings`, capability, context?.instance);
76
+ }
77
+ // Resolve instance factory by name
78
+ const loadResult = this.library.resolveWithMetadata(factoryName);
79
+ if (!loadResult) {
80
+ throw new ResolutionError(`Instance factory "${factoryName}" not found in library`, capability, context?.instance);
81
+ }
82
+ const factory = loadResult.type;
83
+ // Get package root (3 levels up from libs/instance-factories/backend)
84
+ const basePath = path.resolve(path.dirname(loadResult.filePath), '../../..');
85
+ // Merge configuration in order of precedence:
86
+ // 1. Instance factory defaults
87
+ // 2. Global configuration
88
+ // 3. Mapping configuration overrides
89
+ const configuration = {
90
+ ...(factory.configuration || {}),
91
+ ...(this.config.globalConfiguration || {}),
92
+ ...(mappingConfig || {})
93
+ };
94
+ // Validate the resolved implementation
95
+ const validationResult = this.validator.validateComplete(factory, {
96
+ specverseVersion: process.env.SPECVERSE_VERSION || '3.3.0'
97
+ });
98
+ if (!validationResult.compatible) {
99
+ throw new ResolutionError(`Instance factory "${factory.name}" validation failed:\n` +
100
+ (validationResult.errors || []).map(e => ` - ${e}`).join('\n'), capability, context?.instance);
101
+ }
102
+ return {
103
+ capability,
104
+ instanceFactory: factory,
105
+ instance: context?.instance,
106
+ configuration,
107
+ basePath
108
+ };
109
+ }
110
+ /**
111
+ * Resolve all capabilities for a deployment instance
112
+ */
113
+ resolveForInstance(instance, context) {
114
+ const resolved = [];
115
+ // Get capabilities from instance
116
+ const capabilities = this.getInstanceCapabilities(instance);
117
+ // Resolve each capability
118
+ for (const capability of capabilities) {
119
+ try {
120
+ const resolution = this.resolveCapability(capability, {
121
+ ...context,
122
+ instance
123
+ });
124
+ resolved.push(resolution);
125
+ }
126
+ catch (error) {
127
+ // Re-throw with additional context
128
+ if (error instanceof ResolutionError) {
129
+ throw error;
130
+ }
131
+ throw new ResolutionError(`Failed to resolve capability "${capability}": ${error instanceof Error ? error.message : String(error)}`, capability, instance);
132
+ }
133
+ }
134
+ // Validate dependencies between resolved implementations
135
+ const depResult = this.validator.validateDependencies(resolved);
136
+ if (!depResult.satisfied) {
137
+ const errors = [];
138
+ if (depResult.missing) {
139
+ errors.push(...depResult.missing);
140
+ }
141
+ if (depResult.conflicts) {
142
+ for (const conflict of depResult.conflicts) {
143
+ errors.push(`Conflict for capability "${conflict.capability}": ` +
144
+ `required by "${conflict.required}", available in "${conflict.available}"`);
145
+ }
146
+ }
147
+ throw new ResolutionError(`Dependency validation failed:\n${errors.map(e => ` - ${e}`).join('\n')}`, 'multiple', instance);
148
+ }
149
+ return resolved;
150
+ }
151
+ /**
152
+ * Resolve all capabilities for a deployment
153
+ */
154
+ resolveForDeployment(deployment, context) {
155
+ const resolvedByInstance = new Map();
156
+ // Get all instances from deployment
157
+ const instances = deployment.instances || {};
158
+ for (const [instanceName, instance] of Object.entries(instances)) {
159
+ const resolved = this.resolveForInstance(instance, {
160
+ ...context,
161
+ instance
162
+ });
163
+ resolvedByInstance.set(instanceName, resolved);
164
+ }
165
+ return resolvedByInstance;
166
+ }
167
+ /**
168
+ * Find capability mapping that matches the given capability
169
+ *
170
+ * Supports wildcard patterns (e.g., "api.*" matches "api.rest", "api.graphql")
171
+ */
172
+ findCapabilityMapping(capability) {
173
+ if (!this.config.capabilityMappings) {
174
+ return undefined;
175
+ }
176
+ // First try exact match
177
+ for (const mapping of this.config.capabilityMappings) {
178
+ if (mapping.capability === capability) {
179
+ return mapping;
180
+ }
181
+ }
182
+ // Then try wildcard match
183
+ for (const mapping of this.config.capabilityMappings) {
184
+ if (mapping.capability.includes('*')) {
185
+ const pattern = mapping.capability.replace(/\*/g, '.*');
186
+ if (new RegExp(`^${pattern}$`).test(capability)) {
187
+ return mapping;
188
+ }
189
+ }
190
+ }
191
+ return undefined;
192
+ }
193
+ /**
194
+ * Extract capabilities from a deployment instance
195
+ */
196
+ getInstanceCapabilities(instance) {
197
+ const capabilities = [];
198
+ // From "advertises" field
199
+ if (instance.advertises) {
200
+ if (Array.isArray(instance.advertises)) {
201
+ capabilities.push(...instance.advertises);
202
+ }
203
+ else if (typeof instance.advertises === 'string') {
204
+ capabilities.push(instance.advertises);
205
+ }
206
+ }
207
+ // From "capabilities" field (alternative format)
208
+ if (instance.capabilities) {
209
+ if (Array.isArray(instance.capabilities)) {
210
+ capabilities.push(...instance.capabilities);
211
+ }
212
+ else if (typeof instance.capabilities === 'string') {
213
+ capabilities.push(instance.capabilities);
214
+ }
215
+ }
216
+ return [...new Set(capabilities)]; // Remove duplicates
217
+ }
218
+ /**
219
+ * Apply template overrides to an instance factory
220
+ */
221
+ applyTemplateOverrides(factory, overrides) {
222
+ const newCodeTemplates = { ...factory.codeTemplates };
223
+ for (const [templateName, templatePath] of Object.entries(overrides)) {
224
+ if (newCodeTemplates[templateName]) {
225
+ newCodeTemplates[templateName] = {
226
+ ...newCodeTemplates[templateName],
227
+ template: templatePath
228
+ };
229
+ }
230
+ }
231
+ return {
232
+ ...factory,
233
+ codeTemplates: newCodeTemplates
234
+ };
235
+ }
236
+ /**
237
+ * Infer instance category from capability pattern (v3.3)
238
+ *
239
+ * Used as fallback when instance doesn't have explicit category
240
+ */
241
+ inferCategoryFromCapability(capability) {
242
+ const capabilityToCategoryMap = {
243
+ 'api.rest': 'controller',
244
+ 'api.graphql': 'controller',
245
+ 'api.websocket': 'controller',
246
+ 'service': 'service',
247
+ 'validation': 'service',
248
+ 'sdk': 'view',
249
+ 'ui': 'view',
250
+ 'frontend': 'view',
251
+ 'storage': 'storage',
252
+ 'database': 'storage',
253
+ 'cache': 'storage',
254
+ 'auth': 'security',
255
+ 'security': 'security',
256
+ 'infrastructure': 'infrastructure',
257
+ 'docker': 'infrastructure',
258
+ 'kubernetes': 'infrastructure',
259
+ 'monitoring': 'monitoring',
260
+ 'logging': 'monitoring',
261
+ 'messaging': 'communication',
262
+ 'queue': 'communication',
263
+ 'pubsub': 'communication'
264
+ };
265
+ // Try exact match
266
+ if (capabilityToCategoryMap[capability]) {
267
+ return capabilityToCategoryMap[capability];
268
+ }
269
+ // Try prefix match
270
+ for (const [capPrefix, category] of Object.entries(capabilityToCategoryMap)) {
271
+ if (capability.startsWith(capPrefix + '.')) {
272
+ return category;
273
+ }
274
+ }
275
+ return undefined;
276
+ }
277
+ /**
278
+ * Get configuration summary for debugging
279
+ */
280
+ getConfigSummary() {
281
+ return {
282
+ capabilityMappings: this.config.capabilityMappings?.length || 0,
283
+ instanceMappings: this.config.instanceMappings?.length || 0,
284
+ defaultMappings: Object.keys(this.config.defaultMappings || {}).length
285
+ };
286
+ }
287
+ }
288
+ /**
289
+ * Create a resolver from manifest data (v3.3 hybrid mapping only)
290
+ */
291
+ export function createResolver(library, manifest) {
292
+ return new InstanceFactoryResolver(library, {
293
+ defaultMappings: manifest.defaultMappings,
294
+ capabilityMappings: manifest.capabilityMappings,
295
+ instanceMappings: manifest.instanceMappings,
296
+ globalConfiguration: manifest.configuration
297
+ });
298
+ }
299
+ //# sourceMappingURL=resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/library/resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Instance Factory Validator
3
+ *
4
+ * Validates instance factory compatibility and requirements.
5
+ */
6
+ import type { InstanceFactory, ResolvedImplementation } from '../types/index.js';
7
+ /**
8
+ * Compatibility validation result
9
+ */
10
+ export interface CompatibilityResult {
11
+ /** Whether the instance factory is compatible */
12
+ compatible: boolean;
13
+ /** Error messages if incompatible */
14
+ errors?: string[];
15
+ /** Warning messages */
16
+ warnings?: string[];
17
+ }
18
+ /**
19
+ * Dependency resolution result
20
+ */
21
+ export interface DependencyResolutionResult {
22
+ /** Whether all dependencies are satisfied */
23
+ satisfied: boolean;
24
+ /** Missing dependencies */
25
+ missing?: string[];
26
+ /** Version conflicts */
27
+ conflicts?: Array<{
28
+ capability: string;
29
+ required: string;
30
+ available?: string;
31
+ }>;
32
+ }
33
+ /**
34
+ * Validator for instance factory compatibility
35
+ */
36
+ export declare class InstanceFactoryValidator {
37
+ /**
38
+ * Validate instance factory against SpecVerse version
39
+ */
40
+ validateCompatibility(factory: InstanceFactory, options?: {
41
+ specverseVersion?: string;
42
+ nodeVersion?: string;
43
+ }): CompatibilityResult;
44
+ /**
45
+ * Validate that all required capabilities are provided
46
+ */
47
+ validateCapabilities(factory: InstanceFactory, availableCapabilities: string[]): CompatibilityResult;
48
+ /**
49
+ * Validate dependencies between resolved implementations
50
+ */
51
+ validateDependencies(resolved: ResolvedImplementation[]): DependencyResolutionResult;
52
+ /**
53
+ * Validate that an instance factory can extend another
54
+ */
55
+ validateExtension(child: InstanceFactory, parent: InstanceFactory): CompatibilityResult;
56
+ /**
57
+ * Validate complete instance factory
58
+ */
59
+ validateComplete(factory: InstanceFactory, options?: {
60
+ specverseVersion?: string;
61
+ nodeVersion?: string;
62
+ availableCapabilities?: string[];
63
+ }): CompatibilityResult;
64
+ }
65
+ //# sourceMappingURL=validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/library/validator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEjF;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,iDAAiD;IACjD,UAAU,EAAE,OAAO,CAAC;IAEpB,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAElB,uBAAuB;IACvB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,6CAA6C;IAC7C,SAAS,EAAE,OAAO,CAAC;IAEnB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB,wBAAwB;IACxB,SAAS,CAAC,EAAE,KAAK,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,qBAAa,wBAAwB;IACnC;;OAEG;IACH,qBAAqB,CACnB,OAAO,EAAE,eAAe,EACxB,OAAO,GAAE;QACP,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;KACjB,GACL,mBAAmB;IA2EtB;;OAEG;IACH,oBAAoB,CAClB,OAAO,EAAE,eAAe,EACxB,qBAAqB,EAAE,MAAM,EAAE,GAC9B,mBAAmB;IAuCtB;;OAEG;IACH,oBAAoB,CAClB,QAAQ,EAAE,sBAAsB,EAAE,GACjC,0BAA0B;IAyD7B;;OAEG;IACH,iBAAiB,CACf,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,eAAe,GACtB,mBAAmB;IAmCtB;;OAEG;IACH,gBAAgB,CACd,OAAO,EAAE,eAAe,EACxB,OAAO,GAAE;QACP,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;KAC7B,GACL,mBAAmB;CAsBvB"}