@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,4274 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://specverse.org/schemas/v3.5.0.json",
4
+ "title": "SpecVerse Unified Schema v3.5.0",
5
+ "description": "Unified schema for SpecVerse specifications, manifests, and instance factories. Supports components (WHAT), deployments (WHERE), and manifests (HOW) with instance-based technology mapping.",
6
+ "version": "3.5.0",
7
+ "oneOf": [
8
+ {
9
+ "$comment": "Specification file (.specly) - contains components and/or deployments",
10
+ "type": "object",
11
+ "properties": {
12
+ "components": {
13
+ "$ref": "#/$defs/ComponentsContainer"
14
+ },
15
+ "deployments": {
16
+ "$ref": "#/$defs/DeploymentsContainer"
17
+ },
18
+ "manifests": {
19
+ "$ref": "#/$defs/ManifestsContainer"
20
+ }
21
+ },
22
+ "anyOf": [
23
+ {
24
+ "required": [
25
+ "components"
26
+ ]
27
+ },
28
+ {
29
+ "required": [
30
+ "deployments"
31
+ ]
32
+ },
33
+ {
34
+ "required": [
35
+ "components",
36
+ "deployments"
37
+ ]
38
+ },
39
+ {
40
+ "required": [
41
+ "manifests"
42
+ ]
43
+ },
44
+ {
45
+ "required": [
46
+ "manifests",
47
+ "components"
48
+ ]
49
+ },
50
+ {
51
+ "required": [
52
+ "manifests",
53
+ "deployments"
54
+ ]
55
+ },
56
+ {
57
+ "required": [
58
+ "manifests",
59
+ "components",
60
+ "deployments"
61
+ ]
62
+ }
63
+ ],
64
+ "additionalProperties": false
65
+ },
66
+ {
67
+ "$comment": "Standalone manifest file (manifest.yaml) - maps deployment instances to instance factories",
68
+ "$ref": "#/$defs/ManifestDefinition"
69
+ },
70
+ {
71
+ "$comment": "Instance factory definition (e.g., fastify-prisma.yaml) - reusable technology specification",
72
+ "$ref": "#/$defs/InstanceFactoryDefinition"
73
+ }
74
+ ],
75
+ "$defs": {
76
+ "NamespaceString": {
77
+ "type": "string",
78
+ "pattern": "^(@[a-z0-9][a-z0-9-]*[a-z0-9]/[a-z0-9][a-z0-9-]*[a-z0-9](/[a-z0-9][a-z0-9-]*[a-z0-9])?|[a-z0-9][a-z0-9-]*[a-z0-9]|[A-Za-z][A-Za-z0-9_-]*)$",
79
+ "description": "Namespace: @org/package, @org/domain/module, unscoped package (kebab-case), or component name (PascalCase)"
80
+ },
81
+ "SemanticVersion": {
82
+ "type": "string",
83
+ "pattern": "^(\\d+\\.\\d+\\.\\d+(?:-[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*)?(?:\\+[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*)?)$",
84
+ "description": "Semantic version: 1.0.0, 1.0.0-alpha.1, 1.0.0+build.1"
85
+ },
86
+ "TypeReference": {
87
+ "type": "string",
88
+ "pattern": "^((@[a-z0-9][a-z0-9-]*[a-z0-9]/[a-z0-9][a-z0-9-]*[a-z0-9](/[a-z0-9][a-z0-9-]*[a-z0-9])?|[a-z0-9][a-z0-9-]*[a-z0-9])\\.)?[A-Z][A-Za-z0-9_]*$",
89
+ "description": "Type reference: Type or namespace.Type"
90
+ },
91
+ "AttributesSection": {
92
+ "type": "object",
93
+ "patternProperties": {
94
+ "^[a-z][a-zA-Z0-9_]*$": {
95
+ "oneOf": [
96
+ {
97
+ "type": "string",
98
+ "pattern": "^(?:Array<[A-Z][A-Za-z0-9_]*>|[A-Z][A-Za-z0-9_]*(?:\\[\\])?)(?:\\s+(?:required|optional|unique|auto=\\w+|min=\\d+(?:\\.\\d+)?|max=\\d+(?:\\.\\d+)?|default=(?:[\\w.]+|\"[^\"]*\")|verified|searchable|values=\\[[^\\]]+\\]))*$",
99
+ "description": "Convention format: Type, Type[], or Array<Type> with modifiers (required, optional, unique, etc.)"
100
+ },
101
+ {
102
+ "type": "object",
103
+ "properties": {
104
+ "name": {
105
+ "type": "string"
106
+ },
107
+ "type": {
108
+ "type": "string"
109
+ },
110
+ "required": {
111
+ "type": "boolean"
112
+ },
113
+ "unique": {
114
+ "type": "boolean"
115
+ },
116
+ "isArray": {
117
+ "type": "boolean"
118
+ },
119
+ "auto": {
120
+ "type": "string"
121
+ },
122
+ "min": {
123
+ "type": "number"
124
+ },
125
+ "max": {
126
+ "type": "number"
127
+ },
128
+ "default": {
129
+ "type": "string"
130
+ },
131
+ "verified": {
132
+ "type": "boolean"
133
+ },
134
+ "searchable": {
135
+ "type": "boolean"
136
+ },
137
+ "values": {
138
+ "type": "array",
139
+ "items": {
140
+ "type": "string"
141
+ }
142
+ }
143
+ },
144
+ "required": [
145
+ "name",
146
+ "type"
147
+ ],
148
+ "additionalProperties": false
149
+ }
150
+ ]
151
+ }
152
+ },
153
+ "additionalProperties": false
154
+ },
155
+ "ExecutableProperties": {
156
+ "type": "object",
157
+ "properties": {
158
+ "description": {
159
+ "type": "string"
160
+ },
161
+ "parameters": {
162
+ "$ref": "#/$defs/AttributesSection"
163
+ },
164
+ "returns": {
165
+ "type": "string"
166
+ },
167
+ "requires": {
168
+ "oneOf": [
169
+ {
170
+ "type": "string"
171
+ },
172
+ {
173
+ "type": "array",
174
+ "items": {
175
+ "type": "string"
176
+ }
177
+ }
178
+ ]
179
+ },
180
+ "ensures": {
181
+ "oneOf": [
182
+ {
183
+ "type": "string"
184
+ },
185
+ {
186
+ "type": "array",
187
+ "items": {
188
+ "type": "string"
189
+ }
190
+ }
191
+ ]
192
+ },
193
+ "publishes": {
194
+ "oneOf": [
195
+ {
196
+ "type": "string"
197
+ },
198
+ {
199
+ "type": "array",
200
+ "items": {
201
+ "type": "string"
202
+ }
203
+ }
204
+ ]
205
+ },
206
+ "steps": {
207
+ "type": "array",
208
+ "items": {
209
+ "type": "string"
210
+ },
211
+ "description": "Sequential steps describing the execution process"
212
+ }
213
+ },
214
+ "additionalProperties": false
215
+ },
216
+ "SubscriptionsPattern": {
217
+ "oneOf": [
218
+ {
219
+ "type": "array",
220
+ "items": {
221
+ "type": "string"
222
+ }
223
+ },
224
+ {
225
+ "type": "object",
226
+ "patternProperties": {
227
+ "^[A-Z][A-Za-z0-9_]*$": {
228
+ "type": "string"
229
+ }
230
+ }
231
+ }
232
+ ]
233
+ },
234
+ "CapabilityList": {
235
+ "anyOf": [
236
+ {
237
+ "type": "string"
238
+ },
239
+ {
240
+ "type": "array",
241
+ "items": {
242
+ "type": "string"
243
+ }
244
+ }
245
+ ],
246
+ "description": "Capability patterns: '*', 'behaviors.*', 'User.*', or explicit list"
247
+ },
248
+ "ComponentsContainer": {
249
+ "type": "object",
250
+ "patternProperties": {
251
+ "^(@[a-z0-9][a-z0-9-]*[a-z0-9]/[a-z0-9][a-z0-9-]*[a-z0-9](/[a-z0-9][a-z0-9-]*[a-z0-9])?|[A-Za-z][A-Za-z0-9_-]*)$": {
252
+ "type": "object",
253
+ "properties": {
254
+ "version": {
255
+ "$ref": "#/$defs/SemanticVersion"
256
+ },
257
+ "description": {
258
+ "type": "string"
259
+ },
260
+ "tags": {
261
+ "type": "array",
262
+ "items": {
263
+ "type": "string"
264
+ }
265
+ },
266
+ "import": {
267
+ "$ref": "#/$defs/ImportSection"
268
+ },
269
+ "export": {
270
+ "$ref": "#/$defs/ExportSection"
271
+ },
272
+ "primitives": {
273
+ "$ref": "#/$defs/PrimitivesSection"
274
+ },
275
+ "models": {
276
+ "$ref": "#/$defs/ModelsSection"
277
+ },
278
+ "controllers": {
279
+ "$ref": "#/$defs/ControllersSection"
280
+ },
281
+ "services": {
282
+ "$ref": "#/$defs/ServicesSection"
283
+ },
284
+ "views": {
285
+ "$ref": "#/$defs/ViewsSection"
286
+ },
287
+ "events": {
288
+ "$ref": "#/$defs/EventsSection"
289
+ },
290
+ "commands": {
291
+ "$ref": "#/$defs/CommandsSection"
292
+ },
293
+ "constraints": {
294
+ "type": "array",
295
+ "items": {
296
+ "type": "string"
297
+ },
298
+ "description": "Behavioural conventions that expand into Quint invariants. Example: 'models must have attributes'"
299
+ }
300
+ },
301
+ "required": [
302
+ "version"
303
+ ],
304
+ "additionalProperties": false
305
+ }
306
+ },
307
+ "additionalProperties": false
308
+ },
309
+ "ImportSection": {
310
+ "type": "array",
311
+ "description": "Import from other components/packages",
312
+ "items": {
313
+ "type": "object",
314
+ "properties": {
315
+ "from": {
316
+ "$ref": "#/$defs/NamespaceString"
317
+ },
318
+ "file": {
319
+ "type": "string"
320
+ },
321
+ "package": {
322
+ "type": "string"
323
+ },
324
+ "namespace": {
325
+ "type": "string"
326
+ },
327
+ "version": {
328
+ "type": "string"
329
+ },
330
+ "select": {
331
+ "type": "array",
332
+ "items": {
333
+ "type": "string"
334
+ },
335
+ "description": "Types to import"
336
+ },
337
+ "as": {
338
+ "type": "object",
339
+ "patternProperties": {
340
+ "^[A-Z][A-Za-z0-9_]*$": {
341
+ "type": "string"
342
+ }
343
+ },
344
+ "description": "Type aliases: { ImportedType: LocalAlias }"
345
+ }
346
+ },
347
+ "oneOf": [
348
+ {
349
+ "required": [
350
+ "from",
351
+ "select"
352
+ ]
353
+ },
354
+ {
355
+ "required": [
356
+ "file",
357
+ "select"
358
+ ]
359
+ },
360
+ {
361
+ "required": [
362
+ "package",
363
+ "version",
364
+ "select"
365
+ ]
366
+ },
367
+ {
368
+ "required": [
369
+ "namespace",
370
+ "from"
371
+ ]
372
+ }
373
+ ],
374
+ "additionalProperties": false
375
+ }
376
+ },
377
+ "ExportSection": {
378
+ "type": "object",
379
+ "description": "What this component exports for others to import",
380
+ "properties": {
381
+ "primitives": {
382
+ "type": "array",
383
+ "items": {
384
+ "type": "string"
385
+ }
386
+ },
387
+ "models": {
388
+ "type": "array",
389
+ "items": {
390
+ "type": "string"
391
+ }
392
+ },
393
+ "controllers": {
394
+ "type": "array",
395
+ "items": {
396
+ "type": "string"
397
+ }
398
+ },
399
+ "services": {
400
+ "type": "array",
401
+ "items": {
402
+ "type": "string"
403
+ }
404
+ },
405
+ "views": {
406
+ "type": "array",
407
+ "items": {
408
+ "type": "string"
409
+ }
410
+ },
411
+ "events": {
412
+ "type": "array",
413
+ "items": {
414
+ "type": "string"
415
+ }
416
+ }
417
+ },
418
+ "additionalProperties": false
419
+ },
420
+ "ModelsSection": {
421
+ "type": "object",
422
+ "patternProperties": {
423
+ "^[A-Z][A-Za-z0-9_]*$": {
424
+ "type": "object",
425
+ "properties": {
426
+ "description": {
427
+ "type": "string"
428
+ },
429
+ "extends": {
430
+ "$ref": "#/$defs/TypeReference"
431
+ },
432
+ "profiles": {
433
+ "type": "array",
434
+ "items": {
435
+ "$ref": "#/$defs/TypeReference"
436
+ },
437
+ "description": "Profiles currently attached to this model (runtime state)"
438
+ },
439
+ "metadata": {
440
+ "$ref": "#/$defs/ModelMetadataSpec"
441
+ },
442
+ "attributes": {
443
+ "$ref": "#/$defs/AttributesSection"
444
+ },
445
+ "relationships": {
446
+ "$ref": "#/$defs/RelationshipsSection"
447
+ },
448
+ "lifecycles": {
449
+ "$ref": "#/$defs/LifecyclesSection"
450
+ },
451
+ "behaviors": {
452
+ "$ref": "#/$defs/BehaviorsSection"
453
+ },
454
+ "profile-attachment": {
455
+ "$ref": "#/$defs/ProfileAttachmentSection"
456
+ }
457
+ },
458
+ "additionalProperties": false
459
+ }
460
+ },
461
+ "additionalProperties": false
462
+ },
463
+ "RelationshipsSection": {
464
+ "type": "object",
465
+ "patternProperties": {
466
+ "^[a-z][a-zA-Z0-9_]*$": {
467
+ "oneOf": [
468
+ {
469
+ "type": "string",
470
+ "pattern": "^(hasMany|hasOne|belongsTo|manyToMany)\\s+[A-Z][A-Za-z0-9_]*(?:\\s+(?:cascade|dependent|eager|lazy|optional|through=[A-Z][A-Za-z0-9_]*))*$"
471
+ },
472
+ {
473
+ "type": "object",
474
+ "properties": {
475
+ "name": {
476
+ "type": "string"
477
+ },
478
+ "type": {
479
+ "enum": [
480
+ "hasMany",
481
+ "hasOne",
482
+ "belongsTo",
483
+ "manyToMany"
484
+ ]
485
+ },
486
+ "target": {
487
+ "$ref": "#/$defs/TypeReference"
488
+ },
489
+ "cascade": {
490
+ "type": "boolean"
491
+ },
492
+ "dependent": {
493
+ "type": "boolean"
494
+ },
495
+ "eager": {
496
+ "type": "boolean"
497
+ },
498
+ "lazy": {
499
+ "type": "boolean"
500
+ },
501
+ "through": {
502
+ "type": "string"
503
+ }
504
+ },
505
+ "required": [
506
+ "name",
507
+ "type",
508
+ "target"
509
+ ],
510
+ "additionalProperties": false
511
+ }
512
+ ]
513
+ }
514
+ },
515
+ "additionalProperties": false
516
+ },
517
+ "LifecyclesSection": {
518
+ "type": "object",
519
+ "patternProperties": {
520
+ "^[a-z][a-zA-Z0-9_]*$": {
521
+ "oneOf": [
522
+ {
523
+ "type": "object",
524
+ "properties": {
525
+ "flow": {
526
+ "type": "string",
527
+ "pattern": "^\\w+(?:\\s*->\\s*\\w+)*$"
528
+ }
529
+ },
530
+ "required": [
531
+ "flow"
532
+ ],
533
+ "additionalProperties": false
534
+ },
535
+ {
536
+ "type": "object",
537
+ "properties": {
538
+ "states": {
539
+ "type": "array",
540
+ "items": {
541
+ "type": "string"
542
+ }
543
+ },
544
+ "transitions": {
545
+ "type": "object",
546
+ "patternProperties": {
547
+ "^[a-z][a-zA-Z0-9_]*$": {
548
+ "type": "string"
549
+ }
550
+ }
551
+ }
552
+ },
553
+ "required": [
554
+ "states",
555
+ "transitions"
556
+ ],
557
+ "additionalProperties": false
558
+ },
559
+ {
560
+ "type": "object",
561
+ "properties": {
562
+ "name": {
563
+ "type": "string"
564
+ },
565
+ "type": {
566
+ "type": "string"
567
+ },
568
+ "states": {
569
+ "type": "array",
570
+ "items": {
571
+ "type": "string"
572
+ }
573
+ },
574
+ "actions": {
575
+ "type": "array",
576
+ "items": {
577
+ "type": "string"
578
+ }
579
+ }
580
+ },
581
+ "required": [
582
+ "name",
583
+ "type",
584
+ "states",
585
+ "actions"
586
+ ],
587
+ "additionalProperties": false
588
+ }
589
+ ]
590
+ }
591
+ },
592
+ "additionalProperties": false
593
+ },
594
+ "BehaviorsSection": {
595
+ "type": "object",
596
+ "patternProperties": {
597
+ "^[a-z][a-zA-Z0-9_]*$": {
598
+ "$ref": "#/$defs/ExecutableProperties"
599
+ }
600
+ },
601
+ "additionalProperties": false
602
+ },
603
+ "ProfileAttachmentSection": {
604
+ "type": "object",
605
+ "description": "Configuration for profile attachment - defines which models this profile can attach to",
606
+ "properties": {
607
+ "profiles": {
608
+ "type": "array",
609
+ "items": {
610
+ "$ref": "#/$defs/TypeReference"
611
+ },
612
+ "description": "List of model types this profile can attach to"
613
+ },
614
+ "conditions": {
615
+ "type": "object",
616
+ "description": "Optional conditions for when this profile should attach",
617
+ "additionalProperties": {
618
+ "type": "string"
619
+ }
620
+ },
621
+ "priority": {
622
+ "type": "integer",
623
+ "description": "Attachment priority when multiple profiles compete",
624
+ "default": 0
625
+ }
626
+ },
627
+ "required": [
628
+ "profiles"
629
+ ],
630
+ "additionalProperties": false
631
+ },
632
+ "ModelMetadataSpec": {
633
+ "type": "object",
634
+ "description": "Metadata configuration for models - generates common synthetic attributes (id, audit, softDelete, labels, status, version)",
635
+ "properties": {
636
+ "id": {
637
+ "oneOf": [
638
+ {
639
+ "type": "string",
640
+ "enum": [
641
+ "auto",
642
+ "manual",
643
+ "composite",
644
+ "uuid",
645
+ "integer"
646
+ ],
647
+ "description": "ID generation strategy (simple form)"
648
+ },
649
+ {
650
+ "type": "object",
651
+ "description": "ID generation configuration (advanced form)",
652
+ "properties": {
653
+ "type": {
654
+ "type": "string",
655
+ "enum": [
656
+ "auto",
657
+ "manual",
658
+ "composite",
659
+ "uuid",
660
+ "integer"
661
+ ],
662
+ "description": "ID generation type"
663
+ },
664
+ "name": {
665
+ "type": "string",
666
+ "description": "Custom name for ID field (default: 'id')"
667
+ },
668
+ "fields": {
669
+ "type": "array",
670
+ "items": {
671
+ "type": "string"
672
+ },
673
+ "description": "Fields for composite ID"
674
+ }
675
+ },
676
+ "required": [
677
+ "type"
678
+ ],
679
+ "additionalProperties": false
680
+ }
681
+ ],
682
+ "description": "ID field generation strategy"
683
+ },
684
+ "label": {
685
+ "oneOf": [
686
+ {
687
+ "type": "string",
688
+ "description": "Single field to use as display label"
689
+ },
690
+ {
691
+ "type": "array",
692
+ "items": {
693
+ "type": "string"
694
+ },
695
+ "description": "Multiple fields to combine for display label"
696
+ }
697
+ ],
698
+ "description": "Field(s) to use as display label in UIs"
699
+ },
700
+ "audit": {
701
+ "oneOf": [
702
+ {
703
+ "type": "boolean",
704
+ "description": "Enable audit fields with defaults (createdAt, updatedAt)"
705
+ },
706
+ {
707
+ "type": "object",
708
+ "description": "Advanced audit configuration",
709
+ "properties": {
710
+ "timestamps": {
711
+ "type": "boolean",
712
+ "default": true,
713
+ "description": "Enable timestamp tracking (createdAt, updatedAt)"
714
+ },
715
+ "users": {
716
+ "type": "boolean",
717
+ "default": false,
718
+ "description": "Enable user tracking (createdBy, updatedBy)"
719
+ },
720
+ "timestampNames": {
721
+ "type": "object",
722
+ "description": "Custom names for timestamp fields",
723
+ "properties": {
724
+ "created": {
725
+ "type": "string",
726
+ "default": "createdAt",
727
+ "description": "Name for creation timestamp"
728
+ },
729
+ "updated": {
730
+ "type": "string",
731
+ "default": "updatedAt",
732
+ "description": "Name for update timestamp"
733
+ }
734
+ },
735
+ "additionalProperties": false
736
+ },
737
+ "userNames": {
738
+ "type": "object",
739
+ "description": "Custom names for user tracking fields",
740
+ "properties": {
741
+ "created": {
742
+ "type": "string",
743
+ "default": "createdBy",
744
+ "description": "Name for creation user field"
745
+ },
746
+ "updated": {
747
+ "type": "string",
748
+ "default": "updatedBy",
749
+ "description": "Name for update user field"
750
+ }
751
+ },
752
+ "additionalProperties": false
753
+ }
754
+ },
755
+ "additionalProperties": false
756
+ }
757
+ ],
758
+ "description": "Enable audit fields (timestamps + optional user tracking)"
759
+ },
760
+ "softDelete": {
761
+ "oneOf": [
762
+ {
763
+ "type": "boolean",
764
+ "description": "Enable soft delete with defaults (deletedAt, isDeleted)"
765
+ },
766
+ {
767
+ "type": "object",
768
+ "description": "Advanced soft delete configuration",
769
+ "properties": {
770
+ "enabled": {
771
+ "type": "boolean",
772
+ "default": true,
773
+ "description": "Enable soft delete"
774
+ },
775
+ "fieldNames": {
776
+ "type": "object",
777
+ "description": "Custom names for soft delete fields",
778
+ "properties": {
779
+ "deletedAt": {
780
+ "type": "string",
781
+ "default": "deletedAt",
782
+ "description": "Name for deletion timestamp"
783
+ },
784
+ "isDeleted": {
785
+ "type": "string",
786
+ "default": "isDeleted",
787
+ "description": "Name for deleted flag"
788
+ }
789
+ },
790
+ "additionalProperties": false
791
+ }
792
+ },
793
+ "additionalProperties": false
794
+ }
795
+ ],
796
+ "description": "Enable soft delete (mark as deleted instead of hard delete)"
797
+ },
798
+ "status": {
799
+ "oneOf": [
800
+ {
801
+ "type": "string",
802
+ "description": "Lifecycle name to derive status field from"
803
+ },
804
+ {
805
+ "type": "object",
806
+ "description": "Advanced status configuration",
807
+ "properties": {
808
+ "field": {
809
+ "type": "string",
810
+ "default": "status",
811
+ "description": "Name for status field"
812
+ },
813
+ "lifecycle": {
814
+ "type": "string",
815
+ "description": "Lifecycle to derive states from"
816
+ },
817
+ "values": {
818
+ "type": "array",
819
+ "items": {
820
+ "type": "string"
821
+ },
822
+ "description": "Explicit status values (if no lifecycle)"
823
+ }
824
+ },
825
+ "additionalProperties": false
826
+ }
827
+ ],
828
+ "description": "Status field configuration (from lifecycle or explicit values)"
829
+ },
830
+ "version": {
831
+ "oneOf": [
832
+ {
833
+ "type": "boolean",
834
+ "description": "Enable versioning with defaults (integer version field)"
835
+ },
836
+ {
837
+ "type": "object",
838
+ "description": "Advanced versioning configuration",
839
+ "properties": {
840
+ "enabled": {
841
+ "type": "boolean",
842
+ "default": true,
843
+ "description": "Enable versioning"
844
+ },
845
+ "field": {
846
+ "type": "string",
847
+ "default": "version",
848
+ "description": "Name for version field"
849
+ },
850
+ "type": {
851
+ "type": "string",
852
+ "enum": [
853
+ "integer",
854
+ "timestamp"
855
+ ],
856
+ "default": "integer",
857
+ "description": "Type of version field"
858
+ }
859
+ },
860
+ "additionalProperties": false
861
+ }
862
+ ],
863
+ "description": "Enable versioning for optimistic locking"
864
+ }
865
+ },
866
+ "additionalProperties": false
867
+ },
868
+ "PrimitivesSection": {
869
+ "type": "object",
870
+ "description": "Custom primitive definitions with validation rules",
871
+ "patternProperties": {
872
+ "^[A-Z][A-Za-z0-9_]*$": {
873
+ "oneOf": [
874
+ {
875
+ "type": "string",
876
+ "description": "Convention syntax: 'String pattern=regex values=[a,b] min=0 max=100'"
877
+ },
878
+ {
879
+ "$ref": "#/$defs/PrimitiveDefinition"
880
+ }
881
+ ]
882
+ }
883
+ },
884
+ "additionalProperties": false
885
+ },
886
+ "PrimitiveDefinition": {
887
+ "type": "object",
888
+ "description": "Full primitive definition with validation rules",
889
+ "properties": {
890
+ "name": {
891
+ "type": "string"
892
+ },
893
+ "baseType": {
894
+ "type": "string",
895
+ "enum": [
896
+ "String",
897
+ "Integer",
898
+ "Number",
899
+ "Boolean"
900
+ ],
901
+ "description": "Base primitive type"
902
+ },
903
+ "description": {
904
+ "type": "string"
905
+ },
906
+ "typeAlias": {
907
+ "type": "boolean",
908
+ "default": true
909
+ },
910
+ "required": {
911
+ "type": "boolean"
912
+ },
913
+ "unique": {
914
+ "type": "boolean"
915
+ },
916
+ "validation": {
917
+ "type": "object",
918
+ "properties": {
919
+ "pattern": {
920
+ "type": "string",
921
+ "description": "Regular expression pattern"
922
+ },
923
+ "values": {
924
+ "type": "array",
925
+ "items": {
926
+ "type": "string"
927
+ },
928
+ "description": "Enum values"
929
+ },
930
+ "min": {
931
+ "type": "number",
932
+ "description": "Minimum value"
933
+ },
934
+ "max": {
935
+ "type": "number",
936
+ "description": "Maximum value"
937
+ },
938
+ "format": {
939
+ "type": "string",
940
+ "enum": [
941
+ "Email",
942
+ "URL",
943
+ "UUID",
944
+ "Date",
945
+ "DateTime"
946
+ ],
947
+ "description": "Standard format validation"
948
+ }
949
+ },
950
+ "additionalProperties": false
951
+ }
952
+ },
953
+ "required": [
954
+ "baseType"
955
+ ],
956
+ "additionalProperties": false
957
+ },
958
+ "ControllersSection": {
959
+ "type": "object",
960
+ "patternProperties": {
961
+ "^[A-Z][A-Za-z0-9_]*$": {
962
+ "type": "object",
963
+ "properties": {
964
+ "model": {
965
+ "$ref": "#/$defs/TypeReference"
966
+ },
967
+ "description": {
968
+ "type": "string"
969
+ },
970
+ "subscribes_to": {
971
+ "$ref": "#/$defs/SubscriptionsPattern"
972
+ },
973
+ "cured": {
974
+ "$ref": "#/$defs/CuredOperations"
975
+ },
976
+ "actions": {
977
+ "type": "object",
978
+ "patternProperties": {
979
+ "^[a-z][a-zA-Z0-9_]*$": {
980
+ "$ref": "#/$defs/ExecutableProperties"
981
+ }
982
+ }
983
+ }
984
+ },
985
+ "additionalProperties": false
986
+ }
987
+ },
988
+ "additionalProperties": false
989
+ },
990
+ "CuredOperations": {
991
+ "type": "object",
992
+ "properties": {
993
+ "create": {
994
+ "$ref": "#/$defs/ExecutableProperties"
995
+ },
996
+ "retrieve": {
997
+ "$ref": "#/$defs/ExecutableProperties"
998
+ },
999
+ "retrieve_many": {
1000
+ "$ref": "#/$defs/ExecutableProperties"
1001
+ },
1002
+ "update": {
1003
+ "$ref": "#/$defs/ExecutableProperties"
1004
+ },
1005
+ "evolve": {
1006
+ "$ref": "#/$defs/ExecutableProperties"
1007
+ },
1008
+ "delete": {
1009
+ "$ref": "#/$defs/ExecutableProperties"
1010
+ },
1011
+ "validate": {
1012
+ "$ref": "#/$defs/ExecutableProperties"
1013
+ }
1014
+ },
1015
+ "additionalProperties": false
1016
+ },
1017
+ "ServicesSection": {
1018
+ "type": "object",
1019
+ "patternProperties": {
1020
+ "^[A-Z][A-Za-z0-9_]*$": {
1021
+ "type": "object",
1022
+ "properties": {
1023
+ "description": {
1024
+ "type": "string"
1025
+ },
1026
+ "subscribes_to": {
1027
+ "$ref": "#/$defs/SubscriptionsPattern"
1028
+ },
1029
+ "operations": {
1030
+ "type": "object",
1031
+ "patternProperties": {
1032
+ "^[a-z][a-zA-Z0-9_]*$": {
1033
+ "$ref": "#/$defs/ExecutableProperties"
1034
+ }
1035
+ }
1036
+ }
1037
+ },
1038
+ "additionalProperties": false
1039
+ }
1040
+ },
1041
+ "additionalProperties": false
1042
+ },
1043
+ "EventsSection": {
1044
+ "type": "object",
1045
+ "patternProperties": {
1046
+ "^[A-Z][A-Za-z0-9_]*$": {
1047
+ "type": "object",
1048
+ "properties": {
1049
+ "description": {
1050
+ "type": "string"
1051
+ },
1052
+ "attributes": {
1053
+ "$ref": "#/$defs/AttributesSection"
1054
+ },
1055
+ "version": {
1056
+ "type": "integer",
1057
+ "minimum": 1,
1058
+ "default": 1,
1059
+ "description": "Event schema version number"
1060
+ },
1061
+ "previousVersions": {
1062
+ "type": "array",
1063
+ "description": "Previous schema versions for compatibility tracking",
1064
+ "items": {
1065
+ "type": "object",
1066
+ "properties": {
1067
+ "version": {
1068
+ "type": "integer",
1069
+ "minimum": 1
1070
+ },
1071
+ "compatibility": {
1072
+ "type": "string",
1073
+ "enum": [
1074
+ "backward",
1075
+ "forward",
1076
+ "full",
1077
+ "none"
1078
+ ],
1079
+ "default": "none",
1080
+ "description": "Compatibility mode with current version"
1081
+ },
1082
+ "deprecated": {
1083
+ "type": "boolean",
1084
+ "default": false
1085
+ },
1086
+ "deprecationMessage": {
1087
+ "type": "string"
1088
+ }
1089
+ },
1090
+ "required": [
1091
+ "version"
1092
+ ],
1093
+ "additionalProperties": false
1094
+ }
1095
+ }
1096
+ },
1097
+ "additionalProperties": false
1098
+ }
1099
+ },
1100
+ "additionalProperties": false
1101
+ },
1102
+ "ViewsSection": {
1103
+ "type": "object",
1104
+ "description": "View definitions for UI layer",
1105
+ "patternProperties": {
1106
+ "^[A-Z][A-Za-z0-9_]*$": {
1107
+ "type": "object",
1108
+ "description": "View definition for UI layer",
1109
+ "properties": {
1110
+ "description": {
1111
+ "type": "string",
1112
+ "description": "Human-readable description of the view"
1113
+ },
1114
+ "type": {
1115
+ "type": "string",
1116
+ "description": "View type/category. Standard types: page, list, detail, form, dashboard, modal, dialog, drawer, wizard, split. Custom types allowed (camelCase)."
1117
+ },
1118
+ "model": {
1119
+ "oneOf": [
1120
+ {
1121
+ "$ref": "#/$defs/TypeReference"
1122
+ },
1123
+ {
1124
+ "type": "array",
1125
+ "items": {
1126
+ "$ref": "#/$defs/TypeReference"
1127
+ }
1128
+ }
1129
+ ],
1130
+ "description": "Primary model(s) for this view"
1131
+ },
1132
+ "tags": {
1133
+ "type": "array",
1134
+ "items": {
1135
+ "type": "string"
1136
+ },
1137
+ "description": "Tags for categorization"
1138
+ },
1139
+ "export": {
1140
+ "type": "boolean",
1141
+ "description": "Whether this view is exported for reuse"
1142
+ },
1143
+ "layout": {
1144
+ "oneOf": [
1145
+ {
1146
+ "$ref": "#/$defs/StandardLayout"
1147
+ },
1148
+ {
1149
+ "type": "object",
1150
+ "description": "Custom layout configuration"
1151
+ }
1152
+ ],
1153
+ "description": "View layout definition"
1154
+ },
1155
+ "subscribes_to": {
1156
+ "$ref": "#/$defs/SubscriptionsPattern",
1157
+ "description": "Events this view subscribes to"
1158
+ },
1159
+ "uiComponents": {
1160
+ "type": "object",
1161
+ "description": "UI components within this view (visual elements like tables, forms, buttons)",
1162
+ "patternProperties": {
1163
+ "^[a-zA-Z][a-zA-Z0-9_ ]*$": {
1164
+ "oneOf": [
1165
+ {
1166
+ "$ref": "#/$defs/ViewComponent"
1167
+ },
1168
+ {
1169
+ "type": "string",
1170
+ "description": "Reference to component type (e.g., 'UI.FormView')"
1171
+ }
1172
+ ]
1173
+ }
1174
+ },
1175
+ "additionalProperties": false
1176
+ },
1177
+ "properties": {
1178
+ "$ref": "#/$defs/ViewProperties",
1179
+ "description": "View-level feature flags and configuration"
1180
+ }
1181
+ },
1182
+ "additionalProperties": false
1183
+ }
1184
+ },
1185
+ "additionalProperties": false
1186
+ },
1187
+ "DeploymentsContainer": {
1188
+ "type": "object",
1189
+ "patternProperties": {
1190
+ "^(@[a-z0-9][a-z0-9-]*[a-z0-9]/[a-z0-9][a-z0-9-]*[a-z0-9](/[a-z0-9][a-z0-9-]*[a-z0-9])?|[A-Za-z][A-Za-z0-9_-]*)$": {
1191
+ "type": "object",
1192
+ "properties": {
1193
+ "version": {
1194
+ "$ref": "#/$defs/SemanticVersion"
1195
+ },
1196
+ "description": {
1197
+ "type": "string"
1198
+ },
1199
+ "environment": {
1200
+ "type": "string"
1201
+ },
1202
+ "instances": {
1203
+ "$ref": "#/$defs/InstancesSection"
1204
+ }
1205
+ },
1206
+ "required": [
1207
+ "version"
1208
+ ],
1209
+ "additionalProperties": false
1210
+ }
1211
+ },
1212
+ "additionalProperties": false
1213
+ },
1214
+ "InstancesSection": {
1215
+ "type": "object",
1216
+ "properties": {
1217
+ "controllers": {
1218
+ "$ref": "#/$defs/ControllerInstances"
1219
+ },
1220
+ "services": {
1221
+ "$ref": "#/$defs/ServiceInstances"
1222
+ },
1223
+ "views": {
1224
+ "$ref": "#/$defs/ViewInstances"
1225
+ },
1226
+ "communications": {
1227
+ "$ref": "#/$defs/CommunicationInstances"
1228
+ },
1229
+ "storage": {
1230
+ "$ref": "#/$defs/StorageInstances"
1231
+ },
1232
+ "security": {
1233
+ "$ref": "#/$defs/SecurityInstances"
1234
+ },
1235
+ "infrastructure": {
1236
+ "$ref": "#/$defs/InfrastructureInstances"
1237
+ },
1238
+ "monitoring": {
1239
+ "$ref": "#/$defs/MonitoringInstances"
1240
+ }
1241
+ },
1242
+ "additionalProperties": false
1243
+ },
1244
+ "ControllerInstances": {
1245
+ "type": "object",
1246
+ "patternProperties": {
1247
+ "^[a-z][a-zA-Z0-9_]*$": {
1248
+ "type": "object",
1249
+ "properties": {
1250
+ "component": {
1251
+ "$ref": "#/$defs/NamespaceString"
1252
+ },
1253
+ "namespace": {
1254
+ "type": "string"
1255
+ },
1256
+ "advertises": {
1257
+ "$ref": "#/$defs/CapabilityList"
1258
+ },
1259
+ "uses": {
1260
+ "$ref": "#/$defs/CapabilityList"
1261
+ },
1262
+ "scale": {
1263
+ "type": "integer",
1264
+ "minimum": 1,
1265
+ "default": 1
1266
+ },
1267
+ "config": {
1268
+ "type": "object"
1269
+ },
1270
+ "rateLimit": {
1271
+ "$ref": "#/$defs/RateLimitPolicy"
1272
+ },
1273
+ "timeout": {
1274
+ "type": "object",
1275
+ "description": "Request timeout configuration",
1276
+ "properties": {
1277
+ "enabled": {
1278
+ "type": "boolean",
1279
+ "default": true
1280
+ },
1281
+ "requestMs": {
1282
+ "type": "integer",
1283
+ "minimum": 100,
1284
+ "description": "Request timeout in milliseconds"
1285
+ },
1286
+ "keepAliveMs": {
1287
+ "type": "integer",
1288
+ "description": "Keep-alive timeout"
1289
+ }
1290
+ },
1291
+ "additionalProperties": false
1292
+ },
1293
+ "operations": {
1294
+ "type": "object",
1295
+ "description": "Per-operation deployment policies",
1296
+ "patternProperties": {
1297
+ "^[a-z][a-zA-Z0-9_]*$": {
1298
+ "$ref": "#/$defs/OperationPolicies"
1299
+ }
1300
+ },
1301
+ "additionalProperties": false
1302
+ },
1303
+ "resources": {
1304
+ "$ref": "#/$defs/ResourceConfiguration"
1305
+ },
1306
+ "autoscaling": {
1307
+ "$ref": "#/$defs/AutoscalingConfiguration"
1308
+ }
1309
+ },
1310
+ "required": [
1311
+ "component"
1312
+ ],
1313
+ "additionalProperties": false
1314
+ }
1315
+ },
1316
+ "additionalProperties": false
1317
+ },
1318
+ "ServiceInstances": {
1319
+ "type": "object",
1320
+ "patternProperties": {
1321
+ "^[a-z][a-zA-Z0-9_]*$": {
1322
+ "type": "object",
1323
+ "properties": {
1324
+ "component": {
1325
+ "$ref": "#/$defs/NamespaceString"
1326
+ },
1327
+ "namespace": {
1328
+ "type": "string"
1329
+ },
1330
+ "advertises": {
1331
+ "$ref": "#/$defs/CapabilityList"
1332
+ },
1333
+ "uses": {
1334
+ "$ref": "#/$defs/CapabilityList"
1335
+ },
1336
+ "scale": {
1337
+ "type": "integer",
1338
+ "minimum": 1,
1339
+ "default": 1
1340
+ },
1341
+ "config": {
1342
+ "type": "object"
1343
+ },
1344
+ "operations": {
1345
+ "type": "object",
1346
+ "description": "Per-operation deployment policies",
1347
+ "patternProperties": {
1348
+ "^[a-z][a-zA-Z0-9_]*$": {
1349
+ "$ref": "#/$defs/OperationPolicies"
1350
+ }
1351
+ },
1352
+ "additionalProperties": false
1353
+ }
1354
+ },
1355
+ "required": [
1356
+ "component"
1357
+ ],
1358
+ "additionalProperties": false
1359
+ }
1360
+ },
1361
+ "additionalProperties": false
1362
+ },
1363
+ "ViewInstances": {
1364
+ "type": "object",
1365
+ "patternProperties": {
1366
+ "^[a-z][a-zA-Z0-9_]*$": {
1367
+ "type": "object",
1368
+ "properties": {
1369
+ "component": {
1370
+ "$ref": "#/$defs/NamespaceString"
1371
+ },
1372
+ "namespace": {
1373
+ "type": "string"
1374
+ },
1375
+ "uses": {
1376
+ "$ref": "#/$defs/CapabilityList"
1377
+ },
1378
+ "scale": {
1379
+ "type": "integer",
1380
+ "minimum": 1,
1381
+ "default": 1
1382
+ },
1383
+ "config": {
1384
+ "type": "object"
1385
+ }
1386
+ },
1387
+ "required": [
1388
+ "component"
1389
+ ],
1390
+ "additionalProperties": false
1391
+ }
1392
+ },
1393
+ "additionalProperties": false
1394
+ },
1395
+ "CommunicationInstances": {
1396
+ "type": "object",
1397
+ "patternProperties": {
1398
+ "^[a-z][a-zA-Z0-9_]*$": {
1399
+ "type": "object",
1400
+ "properties": {
1401
+ "namespace": {
1402
+ "type": "string"
1403
+ },
1404
+ "capabilities": {
1405
+ "type": "array",
1406
+ "items": {
1407
+ "type": "string"
1408
+ },
1409
+ "description": "Capabilities available on this communication channel"
1410
+ },
1411
+ "type": {
1412
+ "type": "string",
1413
+ "enum": [
1414
+ "pubsub",
1415
+ "streaming",
1416
+ "rpc",
1417
+ "queue"
1418
+ ],
1419
+ "default": "pubsub"
1420
+ },
1421
+ "config": {
1422
+ "type": "object"
1423
+ },
1424
+ "consumer": {
1425
+ "type": "object",
1426
+ "description": "Consumer configuration",
1427
+ "properties": {
1428
+ "concurrency": {
1429
+ "type": "integer",
1430
+ "minimum": 1,
1431
+ "default": 1,
1432
+ "description": "Number of concurrent consumers"
1433
+ },
1434
+ "prefetch": {
1435
+ "type": "integer",
1436
+ "minimum": 1,
1437
+ "default": 1,
1438
+ "description": "Messages to prefetch per consumer"
1439
+ },
1440
+ "autoAck": {
1441
+ "type": "boolean",
1442
+ "default": false,
1443
+ "description": "Automatically acknowledge messages"
1444
+ }
1445
+ },
1446
+ "additionalProperties": false
1447
+ }
1448
+ },
1449
+ "additionalProperties": false
1450
+ }
1451
+ },
1452
+ "additionalProperties": false
1453
+ },
1454
+ "StorageInstances": {
1455
+ "type": "object",
1456
+ "patternProperties": {
1457
+ "^[a-z][a-zA-Z0-9_]*$": {
1458
+ "type": "object",
1459
+ "properties": {
1460
+ "component": {
1461
+ "$ref": "#/$defs/NamespaceString"
1462
+ },
1463
+ "namespace": {
1464
+ "type": "string"
1465
+ },
1466
+ "type": {
1467
+ "type": "string",
1468
+ "enum": [
1469
+ "relational",
1470
+ "document",
1471
+ "keyvalue",
1472
+ "cache",
1473
+ "file",
1474
+ "blob",
1475
+ "queue",
1476
+ "search"
1477
+ ],
1478
+ "description": "Type of storage system"
1479
+ },
1480
+ "advertises": {
1481
+ "$ref": "#/$defs/CapabilityList"
1482
+ },
1483
+ "uses": {
1484
+ "$ref": "#/$defs/CapabilityList"
1485
+ },
1486
+ "scale": {
1487
+ "type": "integer",
1488
+ "minimum": 1,
1489
+ "default": 1
1490
+ },
1491
+ "persistence": {
1492
+ "type": "string",
1493
+ "enum": [
1494
+ "durable",
1495
+ "session",
1496
+ "cache",
1497
+ "temporary"
1498
+ ],
1499
+ "description": "Data persistence policy (logical requirement)"
1500
+ },
1501
+ "consistency": {
1502
+ "type": "string",
1503
+ "enum": [
1504
+ "strong",
1505
+ "eventual",
1506
+ "weak"
1507
+ ],
1508
+ "description": "Data consistency policy (logical requirement)"
1509
+ },
1510
+ "encryption": {
1511
+ "type": "boolean",
1512
+ "description": "Whether encryption is required (logical requirement)"
1513
+ },
1514
+ "backup": {
1515
+ "type": "boolean",
1516
+ "description": "Whether backups are required (logical requirement)"
1517
+ },
1518
+ "replication": {
1519
+ "type": "integer",
1520
+ "minimum": 1,
1521
+ "description": "Minimum number of data replicas required (logical requirement)"
1522
+ }
1523
+ },
1524
+ "required": [
1525
+ "component",
1526
+ "type"
1527
+ ],
1528
+ "additionalProperties": false
1529
+ }
1530
+ },
1531
+ "additionalProperties": false
1532
+ },
1533
+ "SecurityInstances": {
1534
+ "type": "object",
1535
+ "patternProperties": {
1536
+ "^[a-z][a-zA-Z0-9_]*$": {
1537
+ "type": "object",
1538
+ "properties": {
1539
+ "component": {
1540
+ "$ref": "#/$defs/NamespaceString"
1541
+ },
1542
+ "namespace": {
1543
+ "type": "string"
1544
+ },
1545
+ "type": {
1546
+ "type": "string",
1547
+ "enum": [
1548
+ "authentication",
1549
+ "authorization",
1550
+ "encryption",
1551
+ "audit",
1552
+ "firewall",
1553
+ "scanning",
1554
+ "secrets",
1555
+ "identity"
1556
+ ],
1557
+ "description": "Type of security system"
1558
+ },
1559
+ "advertises": {
1560
+ "$ref": "#/$defs/CapabilityList"
1561
+ },
1562
+ "uses": {
1563
+ "$ref": "#/$defs/CapabilityList"
1564
+ },
1565
+ "scale": {
1566
+ "type": "integer",
1567
+ "minimum": 1,
1568
+ "default": 1
1569
+ },
1570
+ "scope": {
1571
+ "type": "string",
1572
+ "enum": [
1573
+ "global",
1574
+ "component",
1575
+ "operation"
1576
+ ],
1577
+ "description": "Security scope policy (logical requirement)"
1578
+ },
1579
+ "policies": {
1580
+ "type": "array",
1581
+ "items": {
1582
+ "type": "string"
1583
+ },
1584
+ "description": "Security policy names to enforce (logical requirement)"
1585
+ },
1586
+ "encryption": {
1587
+ "type": "string",
1588
+ "enum": [
1589
+ "strong",
1590
+ "basic",
1591
+ "none"
1592
+ ],
1593
+ "description": "Encryption strength requirement (logical requirement)"
1594
+ },
1595
+ "auditLevel": {
1596
+ "type": "string",
1597
+ "enum": [
1598
+ "comprehensive",
1599
+ "detailed",
1600
+ "basic",
1601
+ "minimal"
1602
+ ],
1603
+ "description": "Audit logging level requirement (logical requirement)"
1604
+ }
1605
+ },
1606
+ "required": [
1607
+ "component",
1608
+ "type"
1609
+ ],
1610
+ "additionalProperties": false
1611
+ }
1612
+ },
1613
+ "additionalProperties": false
1614
+ },
1615
+ "InfrastructureInstances": {
1616
+ "type": "object",
1617
+ "patternProperties": {
1618
+ "^[a-z][a-zA-Z0-9_]*$": {
1619
+ "type": "object",
1620
+ "properties": {
1621
+ "component": {
1622
+ "$ref": "#/$defs/NamespaceString"
1623
+ },
1624
+ "namespace": {
1625
+ "type": "string"
1626
+ },
1627
+ "type": {
1628
+ "type": "string",
1629
+ "enum": [
1630
+ "gateway",
1631
+ "loadbalancer",
1632
+ "proxy",
1633
+ "cdn",
1634
+ "dns",
1635
+ "registry",
1636
+ "mesh",
1637
+ "ingress"
1638
+ ],
1639
+ "description": "Type of infrastructure system"
1640
+ },
1641
+ "advertises": {
1642
+ "$ref": "#/$defs/CapabilityList"
1643
+ },
1644
+ "uses": {
1645
+ "$ref": "#/$defs/CapabilityList"
1646
+ },
1647
+ "scale": {
1648
+ "type": "integer",
1649
+ "minimum": 1,
1650
+ "default": 1
1651
+ },
1652
+ "healthCheck": {
1653
+ "type": "boolean",
1654
+ "description": "Whether health checking is required (logical requirement)"
1655
+ },
1656
+ "loadBalancing": {
1657
+ "type": "boolean",
1658
+ "description": "Whether load balancing is required (logical requirement)"
1659
+ },
1660
+ "redundancy": {
1661
+ "type": "string",
1662
+ "enum": [
1663
+ "high",
1664
+ "medium",
1665
+ "low"
1666
+ ],
1667
+ "description": "Redundancy level requirement (logical requirement)"
1668
+ }
1669
+ },
1670
+ "required": [
1671
+ "component",
1672
+ "type"
1673
+ ],
1674
+ "additionalProperties": false
1675
+ }
1676
+ },
1677
+ "additionalProperties": false
1678
+ },
1679
+ "MonitoringInstances": {
1680
+ "type": "object",
1681
+ "patternProperties": {
1682
+ "^[a-z][a-zA-Z0-9_]*$": {
1683
+ "type": "object",
1684
+ "properties": {
1685
+ "component": {
1686
+ "$ref": "#/$defs/NamespaceString"
1687
+ },
1688
+ "namespace": {
1689
+ "type": "string"
1690
+ },
1691
+ "type": {
1692
+ "type": "string",
1693
+ "enum": [
1694
+ "metrics",
1695
+ "logging",
1696
+ "tracing",
1697
+ "alerting",
1698
+ "analytics",
1699
+ "profiling",
1700
+ "uptime",
1701
+ "synthetic"
1702
+ ],
1703
+ "description": "Type of monitoring system"
1704
+ },
1705
+ "advertises": {
1706
+ "$ref": "#/$defs/CapabilityList"
1707
+ },
1708
+ "uses": {
1709
+ "$ref": "#/$defs/CapabilityList"
1710
+ },
1711
+ "scale": {
1712
+ "type": "integer",
1713
+ "minimum": 1,
1714
+ "default": 1
1715
+ },
1716
+ "config": {
1717
+ "type": "object"
1718
+ },
1719
+ "scope": {
1720
+ "type": "string",
1721
+ "enum": [
1722
+ "global",
1723
+ "regional",
1724
+ "local"
1725
+ ],
1726
+ "description": "Monitoring scope"
1727
+ },
1728
+ "retention": {
1729
+ "type": "string",
1730
+ "description": "Data retention period (e.g., '30d', '1y')"
1731
+ },
1732
+ "alerting": {
1733
+ "type": "boolean",
1734
+ "description": "Enable alerting capabilities"
1735
+ },
1736
+ "sampling": {
1737
+ "type": "number",
1738
+ "minimum": 0,
1739
+ "maximum": 1,
1740
+ "description": "Sampling rate (0.0 to 1.0)"
1741
+ }
1742
+ },
1743
+ "required": [
1744
+ "component",
1745
+ "type"
1746
+ ],
1747
+ "additionalProperties": false
1748
+ }
1749
+ },
1750
+ "additionalProperties": false
1751
+ },
1752
+ "CommandsSection": {
1753
+ "type": "object",
1754
+ "patternProperties": {
1755
+ "^[a-z][a-zA-Z0-9_-]*$": {
1756
+ "type": "object",
1757
+ "properties": {
1758
+ "description": {
1759
+ "type": "string"
1760
+ },
1761
+ "arguments": {
1762
+ "type": "object",
1763
+ "additionalProperties": {
1764
+ "type": "object",
1765
+ "properties": {
1766
+ "type": {
1767
+ "type": "string"
1768
+ },
1769
+ "required": {
1770
+ "type": "boolean"
1771
+ },
1772
+ "positional": {
1773
+ "type": "boolean"
1774
+ },
1775
+ "description": {
1776
+ "type": "string"
1777
+ },
1778
+ "default": {}
1779
+ }
1780
+ }
1781
+ },
1782
+ "flags": {
1783
+ "type": "object",
1784
+ "patternProperties": {
1785
+ "^--[a-z][a-zA-Z0-9-]*$": {
1786
+ "type": "object",
1787
+ "properties": {
1788
+ "type": {
1789
+ "type": "string"
1790
+ },
1791
+ "default": {},
1792
+ "description": {
1793
+ "type": "string"
1794
+ },
1795
+ "alias": {
1796
+ "type": "string"
1797
+ }
1798
+ }
1799
+ }
1800
+ }
1801
+ },
1802
+ "returns": {
1803
+ "type": "string"
1804
+ },
1805
+ "exitCodes": {
1806
+ "type": "object",
1807
+ "patternProperties": {
1808
+ "^[0-9]+$": {
1809
+ "type": "string"
1810
+ }
1811
+ }
1812
+ },
1813
+ "subcommands": {
1814
+ "type": "object",
1815
+ "additionalProperties": {
1816
+ "type": "object"
1817
+ }
1818
+ }
1819
+ },
1820
+ "additionalProperties": false
1821
+ }
1822
+ },
1823
+ "additionalProperties": false
1824
+ },
1825
+ "ConventionsSection": {
1826
+ "type": "object",
1827
+ "patternProperties": {
1828
+ "^[A-Z][A-Za-z0-9_]*$": {
1829
+ "type": "object",
1830
+ "properties": {
1831
+ "baseType": {
1832
+ "type": "string"
1833
+ },
1834
+ "description": {
1835
+ "type": "string"
1836
+ },
1837
+ "implies": {
1838
+ "type": "object",
1839
+ "additionalProperties": true
1840
+ },
1841
+ "when_modified_by": {
1842
+ "type": "object",
1843
+ "additionalProperties": {
1844
+ "type": "object",
1845
+ "properties": {
1846
+ "adds": {
1847
+ "type": "array",
1848
+ "items": {
1849
+ "type": "string"
1850
+ }
1851
+ },
1852
+ "sets": {
1853
+ "type": "object",
1854
+ "additionalProperties": true
1855
+ },
1856
+ "validates": {
1857
+ "type": "string"
1858
+ }
1859
+ }
1860
+ }
1861
+ },
1862
+ "appliesTo": {
1863
+ "type": "array",
1864
+ "items": {
1865
+ "type": "string"
1866
+ }
1867
+ }
1868
+ },
1869
+ "required": [
1870
+ "baseType"
1871
+ ],
1872
+ "additionalProperties": false
1873
+ }
1874
+ },
1875
+ "additionalProperties": false
1876
+ },
1877
+ "MeasuresSection": {
1878
+ "type": "object",
1879
+ "patternProperties": {
1880
+ "^[a-z][a-zA-Z0-9_]*$": {
1881
+ "type": "object",
1882
+ "properties": {
1883
+ "description": {
1884
+ "type": "string"
1885
+ },
1886
+ "source": {
1887
+ "type": "string"
1888
+ },
1889
+ "aggregation": {
1890
+ "type": "string",
1891
+ "enum": [
1892
+ "sum",
1893
+ "count",
1894
+ "avg",
1895
+ "min",
1896
+ "max",
1897
+ "custom"
1898
+ ]
1899
+ },
1900
+ "field": {
1901
+ "type": "string"
1902
+ },
1903
+ "computation": {
1904
+ "type": "string"
1905
+ },
1906
+ "filter": {
1907
+ "type": "string"
1908
+ },
1909
+ "dimensions": {
1910
+ "type": "array",
1911
+ "items": {
1912
+ "type": "string"
1913
+ }
1914
+ },
1915
+ "format": {
1916
+ "type": "string"
1917
+ }
1918
+ },
1919
+ "required": [
1920
+ "source",
1921
+ "aggregation"
1922
+ ],
1923
+ "additionalProperties": false
1924
+ }
1925
+ },
1926
+ "additionalProperties": false
1927
+ },
1928
+ "ManifestsContainer": {
1929
+ "type": "object",
1930
+ "description": "Container for implementation manifests",
1931
+ "patternProperties": {
1932
+ "^(@[a-z0-9][a-z0-9-]*[a-z0-9]/[a-z0-9][a-z0-9-]*[a-z0-9](/[a-z0-9][a-z0-9-]*[a-z0-9])?|[A-Za-z][A-Za-z0-9_-]*)$": {
1933
+ "$ref": "#/$defs/ManifestDefinition"
1934
+ }
1935
+ },
1936
+ "additionalProperties": false
1937
+ },
1938
+ "ManifestDefinition": {
1939
+ "type": "object",
1940
+ "description": "Implementation manifest - maps deployment instances to instance factories",
1941
+ "required": [
1942
+ "specVersion",
1943
+ "name",
1944
+ "version",
1945
+ "deployment"
1946
+ ],
1947
+ "properties": {
1948
+ "specVersion": {
1949
+ "type": "string",
1950
+ "description": "SpecVerse specification version",
1951
+ "enum": [
1952
+ "3.5.0"
1953
+ ]
1954
+ },
1955
+ "name": {
1956
+ "type": "string",
1957
+ "description": "Manifest name"
1958
+ },
1959
+ "description": {
1960
+ "type": "string",
1961
+ "description": "Manifest description"
1962
+ },
1963
+ "version": {
1964
+ "type": "string",
1965
+ "pattern": "^\\d+\\.\\d+\\.\\d+$",
1966
+ "description": "Manifest version (semver)"
1967
+ },
1968
+ "deployment": {
1969
+ "type": "object",
1970
+ "description": "Reference to deployment specification",
1971
+ "required": [
1972
+ "deploymentSource",
1973
+ "deploymentName"
1974
+ ],
1975
+ "properties": {
1976
+ "deploymentSource": {
1977
+ "type": "string",
1978
+ "description": "Path to .specly file containing deployment"
1979
+ },
1980
+ "deploymentName": {
1981
+ "type": "string",
1982
+ "description": "Name of deployment in the spec"
1983
+ },
1984
+ "deploymentVersion": {
1985
+ "type": "string",
1986
+ "description": "Version constraint for deployment"
1987
+ }
1988
+ }
1989
+ },
1990
+ "defaultMappings": {
1991
+ "type": "object",
1992
+ "description": "Default instance factory by category (lowest priority)",
1993
+ "properties": {
1994
+ "controller": {
1995
+ "type": "string",
1996
+ "description": "Default for controller instances"
1997
+ },
1998
+ "service": {
1999
+ "type": "string",
2000
+ "description": "Default for service instances"
2001
+ },
2002
+ "view": {
2003
+ "type": "string",
2004
+ "description": "Default for view instances"
2005
+ },
2006
+ "storage": {
2007
+ "type": "string",
2008
+ "description": "Default for storage instances"
2009
+ },
2010
+ "security": {
2011
+ "type": "string",
2012
+ "description": "Default for security instances"
2013
+ },
2014
+ "infrastructure": {
2015
+ "type": "string",
2016
+ "description": "Default for infrastructure instances"
2017
+ },
2018
+ "monitoring": {
2019
+ "type": "string",
2020
+ "description": "Default for monitoring instances"
2021
+ },
2022
+ "communication": {
2023
+ "type": "string",
2024
+ "description": "Default for communication instances"
2025
+ }
2026
+ },
2027
+ "additionalProperties": false
2028
+ },
2029
+ "capabilityMappings": {
2030
+ "type": "array",
2031
+ "description": "Map capabilities to instance factories with pattern matching (medium priority)",
2032
+ "items": {
2033
+ "type": "object",
2034
+ "required": [
2035
+ "capability",
2036
+ "instanceFactory"
2037
+ ],
2038
+ "properties": {
2039
+ "capability": {
2040
+ "type": "string",
2041
+ "pattern": "^[a-z][a-z0-9]*(\\.[a-z*][a-z0-9*]*)*$",
2042
+ "description": "Capability pattern (supports wildcards: api.rest.*)"
2043
+ },
2044
+ "instanceFactory": {
2045
+ "type": "string",
2046
+ "description": "Instance factory name"
2047
+ },
2048
+ "version": {
2049
+ "type": "string",
2050
+ "description": "Version constraint for instance factory"
2051
+ },
2052
+ "configuration": {
2053
+ "type": "object",
2054
+ "description": "Configuration overrides",
2055
+ "additionalProperties": true
2056
+ }
2057
+ }
2058
+ }
2059
+ },
2060
+ "instanceMappings": {
2061
+ "type": "array",
2062
+ "description": "Explicit instance-to-factory mappings (highest priority)",
2063
+ "items": {
2064
+ "type": "object",
2065
+ "required": [
2066
+ "instanceName",
2067
+ "instanceFactory"
2068
+ ],
2069
+ "properties": {
2070
+ "instanceName": {
2071
+ "type": "string",
2072
+ "description": "Specific instance name from deployment"
2073
+ },
2074
+ "instanceFactory": {
2075
+ "type": "string",
2076
+ "description": "Instance factory name"
2077
+ },
2078
+ "version": {
2079
+ "type": "string",
2080
+ "description": "Version constraint for instance factory"
2081
+ },
2082
+ "configuration": {
2083
+ "type": "object",
2084
+ "description": "Configuration overrides",
2085
+ "additionalProperties": true
2086
+ }
2087
+ }
2088
+ }
2089
+ },
2090
+ "manifestTemplates": {
2091
+ "type": "array",
2092
+ "description": "Import common technology combinations",
2093
+ "items": {
2094
+ "type": "object",
2095
+ "required": [
2096
+ "template"
2097
+ ],
2098
+ "properties": {
2099
+ "template": {
2100
+ "type": "string",
2101
+ "description": "Template from library (e.g., '@specverse/manifest-templates/jamstack')"
2102
+ },
2103
+ "version": {
2104
+ "type": "string",
2105
+ "description": "Version constraint"
2106
+ }
2107
+ }
2108
+ }
2109
+ },
2110
+ "configuration": {
2111
+ "type": "object",
2112
+ "description": "Global configuration settings",
2113
+ "additionalProperties": true
2114
+ },
2115
+ "conditionalMappings": {
2116
+ "type": "array",
2117
+ "description": "Environment-based capability mappings",
2118
+ "items": {
2119
+ "type": "object",
2120
+ "properties": {
2121
+ "condition": {
2122
+ "type": "object",
2123
+ "properties": {
2124
+ "environment": {
2125
+ "oneOf": [
2126
+ {
2127
+ "type": "string"
2128
+ },
2129
+ {
2130
+ "type": "array",
2131
+ "items": {
2132
+ "type": "string"
2133
+ }
2134
+ }
2135
+ ],
2136
+ "description": "Target environment(s)"
2137
+ },
2138
+ "region": {
2139
+ "oneOf": [
2140
+ {
2141
+ "type": "string"
2142
+ },
2143
+ {
2144
+ "type": "array",
2145
+ "items": {
2146
+ "type": "string"
2147
+ }
2148
+ }
2149
+ ]
2150
+ },
2151
+ "featureFlags": {
2152
+ "type": "array",
2153
+ "items": {
2154
+ "type": "string"
2155
+ },
2156
+ "description": "Required feature flags (prefix ! for negation)"
2157
+ },
2158
+ "scale": {
2159
+ "type": "object",
2160
+ "properties": {
2161
+ "min": {
2162
+ "type": "integer"
2163
+ },
2164
+ "max": {
2165
+ "type": "integer"
2166
+ }
2167
+ },
2168
+ "additionalProperties": false
2169
+ }
2170
+ },
2171
+ "additionalProperties": false
2172
+ },
2173
+ "capabilityMappings": {
2174
+ "type": "array",
2175
+ "items": {
2176
+ "type": "object",
2177
+ "properties": {
2178
+ "capability": {
2179
+ "type": "string"
2180
+ },
2181
+ "instanceFactory": {
2182
+ "type": "string"
2183
+ },
2184
+ "version": {
2185
+ "type": "string"
2186
+ },
2187
+ "configuration": {
2188
+ "type": "object",
2189
+ "additionalProperties": true
2190
+ },
2191
+ "fallback": {
2192
+ "type": "array",
2193
+ "description": "Fallback instance factories",
2194
+ "items": {
2195
+ "type": "object",
2196
+ "properties": {
2197
+ "instanceFactory": {
2198
+ "type": "string"
2199
+ },
2200
+ "degradedMode": {
2201
+ "type": "boolean",
2202
+ "default": false
2203
+ },
2204
+ "warnings": {
2205
+ "type": "array",
2206
+ "items": {
2207
+ "type": "string"
2208
+ }
2209
+ },
2210
+ "errors": {
2211
+ "type": "array",
2212
+ "items": {
2213
+ "type": "string"
2214
+ }
2215
+ },
2216
+ "requiredAcknowledgment": {
2217
+ "type": "boolean",
2218
+ "default": false
2219
+ }
2220
+ },
2221
+ "required": [
2222
+ "instanceFactory"
2223
+ ],
2224
+ "additionalProperties": false
2225
+ }
2226
+ }
2227
+ },
2228
+ "required": [
2229
+ "capability",
2230
+ "instanceFactory"
2231
+ ],
2232
+ "additionalProperties": false
2233
+ }
2234
+ }
2235
+ },
2236
+ "required": [
2237
+ "condition",
2238
+ "capabilityMappings"
2239
+ ],
2240
+ "additionalProperties": false
2241
+ }
2242
+ },
2243
+ "conflicts": {
2244
+ "type": "array",
2245
+ "description": "Technology conflict declarations",
2246
+ "items": {
2247
+ "type": "object",
2248
+ "properties": {
2249
+ "instanceFactories": {
2250
+ "type": "array",
2251
+ "items": {
2252
+ "type": "string"
2253
+ },
2254
+ "minItems": 2,
2255
+ "description": "Conflicting instance factory names"
2256
+ },
2257
+ "reason": {
2258
+ "type": "string",
2259
+ "description": "Explanation of conflict"
2260
+ },
2261
+ "severity": {
2262
+ "type": "string",
2263
+ "enum": [
2264
+ "error",
2265
+ "warning"
2266
+ ],
2267
+ "default": "error"
2268
+ }
2269
+ },
2270
+ "required": [
2271
+ "instanceFactories",
2272
+ "reason"
2273
+ ],
2274
+ "additionalProperties": false
2275
+ }
2276
+ },
2277
+ "instanceFactories": {
2278
+ "type": "array",
2279
+ "description": "List of instance factories used by this manifest.",
2280
+ "items": {
2281
+ "$ref": "#/$defs/InstanceFactoryRef"
2282
+ }
2283
+ }
2284
+ },
2285
+ "additionalProperties": false
2286
+ },
2287
+ "ManifestImportSection": {
2288
+ "type": "array",
2289
+ "description": "Import standard definition libraries for implementation types",
2290
+ "items": {
2291
+ "type": "object",
2292
+ "description": "Import standard definition library",
2293
+ "required": [
2294
+ "library"
2295
+ ],
2296
+ "properties": {
2297
+ "library": {
2298
+ "type": "string",
2299
+ "description": "Library path (e.g., '@specverse/standards/nextjs')"
2300
+ },
2301
+ "version": {
2302
+ "type": "string",
2303
+ "description": "Version constraint (e.g., '^1.0.0')"
2304
+ },
2305
+ "select": {
2306
+ "type": "array",
2307
+ "description": "Select specific definitions from library",
2308
+ "items": {
2309
+ "type": "string"
2310
+ }
2311
+ },
2312
+ "alias": {
2313
+ "type": "string",
2314
+ "description": "Optional alias for the imported library"
2315
+ }
2316
+ }
2317
+ }
2318
+ },
2319
+ "ManifestComponentReference": {
2320
+ "type": "object",
2321
+ "description": "Information about the v3.1.0 Component specification",
2322
+ "required": [
2323
+ "componentSource",
2324
+ "componentVersion"
2325
+ ],
2326
+ "additionalProperties": false,
2327
+ "properties": {
2328
+ "componentSource": {
2329
+ "type": "string",
2330
+ "description": "Source of the component"
2331
+ },
2332
+ "componentVersion": {
2333
+ "type": "string",
2334
+ "description": "Version constraint for the component (should be ^3.1.0)",
2335
+ "pattern": "^(\\^|>=|~)?3\\.[1-9]\\.[0-9]+"
2336
+ },
2337
+ "description": {
2338
+ "type": "string",
2339
+ "description": "Description of the component"
2340
+ }
2341
+ }
2342
+ },
2343
+ "ManifestDeploymentReference": {
2344
+ "type": "object",
2345
+ "description": "Information about the v3.1.0 Deployment specification",
2346
+ "required": [
2347
+ "deploymentSource",
2348
+ "deploymentVersion"
2349
+ ],
2350
+ "additionalProperties": false,
2351
+ "properties": {
2352
+ "deploymentSource": {
2353
+ "type": "string",
2354
+ "description": "Source of the deployment specification"
2355
+ },
2356
+ "deploymentVersion": {
2357
+ "type": "string",
2358
+ "description": "Version constraint for the deployment (should be ^3.1.0)",
2359
+ "pattern": "^(\\^|>=|~)?3\\.[1-9]\\.[0-9]+"
2360
+ },
2361
+ "description": {
2362
+ "type": "string",
2363
+ "description": "Description of the deployment"
2364
+ }
2365
+ }
2366
+ },
2367
+ "ImplementationTypesSection": {
2368
+ "type": "object",
2369
+ "description": "Reusable implementation type definitions",
2370
+ "additionalProperties": false,
2371
+ "patternProperties": {
2372
+ "^[a-zA-Z][a-zA-Z0-9_-]*$": {
2373
+ "type": "object",
2374
+ "oneOf": [
2375
+ {
2376
+ "description": "Extend from imported standard definition",
2377
+ "required": [
2378
+ "extends"
2379
+ ],
2380
+ "additionalProperties": false,
2381
+ "properties": {
2382
+ "extends": {
2383
+ "type": "string",
2384
+ "description": "Reference to imported standard definition"
2385
+ },
2386
+ "overrides": {
2387
+ "type": "object",
2388
+ "description": "Override any standard definition properties"
2389
+ },
2390
+ "localExtensions": {
2391
+ "type": "object",
2392
+ "description": "Technology-specific local extensions"
2393
+ }
2394
+ }
2395
+ },
2396
+ {
2397
+ "description": "Custom local definition",
2398
+ "required": [
2399
+ "type",
2400
+ "technology"
2401
+ ],
2402
+ "additionalProperties": false,
2403
+ "properties": {
2404
+ "type": {
2405
+ "type": "string",
2406
+ "enum": [
2407
+ "controller",
2408
+ "service",
2409
+ "view",
2410
+ "database",
2411
+ "authentication",
2412
+ "messaging",
2413
+ "cache",
2414
+ "storage",
2415
+ "api"
2416
+ ],
2417
+ "description": "Category of implementation"
2418
+ },
2419
+ "technology": {
2420
+ "type": "string",
2421
+ "description": "Core technology (e.g., 'NextJS', 'PostgreSQL')"
2422
+ },
2423
+ "framework": {
2424
+ "type": "string"
2425
+ },
2426
+ "adapter": {
2427
+ "type": "string"
2428
+ },
2429
+ "provider": {
2430
+ "type": "string"
2431
+ },
2432
+ "libraries": {
2433
+ "type": "array",
2434
+ "items": {
2435
+ "type": "string"
2436
+ }
2437
+ },
2438
+ "environmentVariables": {
2439
+ "type": "array",
2440
+ "items": {
2441
+ "type": "string"
2442
+ }
2443
+ },
2444
+ "defaultPath": {
2445
+ "type": "string"
2446
+ },
2447
+ "configuration": {
2448
+ "type": "object"
2449
+ },
2450
+ "capabilities": {
2451
+ "type": "array",
2452
+ "items": {
2453
+ "type": "string"
2454
+ }
2455
+ }
2456
+ }
2457
+ }
2458
+ ]
2459
+ }
2460
+ }
2461
+ },
2462
+ "BehaviorMappingsSection": {
2463
+ "type": "array",
2464
+ "description": "Model behavior implementation mappings",
2465
+ "items": {
2466
+ "type": "object",
2467
+ "required": [
2468
+ "modelName",
2469
+ "behaviorName",
2470
+ "implementationMethod"
2471
+ ],
2472
+ "additionalProperties": false,
2473
+ "properties": {
2474
+ "modelName": {
2475
+ "type": "string"
2476
+ },
2477
+ "behaviorName": {
2478
+ "type": "string"
2479
+ },
2480
+ "implementationMethod": {
2481
+ "type": "string"
2482
+ },
2483
+ "implementationPath": {
2484
+ "type": "string"
2485
+ },
2486
+ "description": {
2487
+ "type": "string"
2488
+ }
2489
+ }
2490
+ }
2491
+ },
2492
+ "CapabilityMappingsSection": {
2493
+ "type": "array",
2494
+ "description": "v3.1.0 capability mappings using implementation types",
2495
+ "items": {
2496
+ "type": "object",
2497
+ "required": [
2498
+ "capability",
2499
+ "implementationType"
2500
+ ],
2501
+ "additionalProperties": false,
2502
+ "properties": {
2503
+ "capability": {
2504
+ "type": "string",
2505
+ "description": "Capability pattern (e.g., '*', 'models.*')"
2506
+ },
2507
+ "implementationType": {
2508
+ "type": "string",
2509
+ "description": "Reference to implementationType"
2510
+ },
2511
+ "capabilityType": {
2512
+ "type": "string",
2513
+ "enum": [
2514
+ "advertises",
2515
+ "uses",
2516
+ "bidirectional"
2517
+ ]
2518
+ },
2519
+ "namespace": {
2520
+ "type": "string"
2521
+ },
2522
+ "channelBinding": {
2523
+ "type": "string"
2524
+ }
2525
+ }
2526
+ }
2527
+ },
2528
+ "CommunicationChannelsSection": {
2529
+ "type": "array",
2530
+ "description": "v3.1.0 communication channel mappings",
2531
+ "items": {
2532
+ "type": "object",
2533
+ "required": [
2534
+ "channelName",
2535
+ "implementationType"
2536
+ ],
2537
+ "additionalProperties": false,
2538
+ "properties": {
2539
+ "channelName": {
2540
+ "type": "string"
2541
+ },
2542
+ "implementationType": {
2543
+ "type": "string"
2544
+ },
2545
+ "namespace": {
2546
+ "type": "string"
2547
+ },
2548
+ "capabilities": {
2549
+ "type": "array",
2550
+ "items": {
2551
+ "type": "string"
2552
+ }
2553
+ }
2554
+ }
2555
+ }
2556
+ },
2557
+ "LogicalDeploymentSection": {
2558
+ "type": "object",
2559
+ "description": "v3.1.0 logical deployment configuration",
2560
+ "additionalProperties": false,
2561
+ "properties": {
2562
+ "deploymentName": {
2563
+ "type": "string"
2564
+ },
2565
+ "environment": {
2566
+ "type": "string"
2567
+ },
2568
+ "instances": {
2569
+ "type": "object",
2570
+ "properties": {
2571
+ "controllers": {
2572
+ "$ref": "#/$defs/LogicalInstanceMapping"
2573
+ },
2574
+ "services": {
2575
+ "$ref": "#/$defs/LogicalInstanceMapping"
2576
+ },
2577
+ "views": {
2578
+ "$ref": "#/$defs/LogicalInstanceMapping"
2579
+ },
2580
+ "communications": {
2581
+ "$ref": "#/$defs/LogicalInstanceMapping"
2582
+ }
2583
+ }
2584
+ }
2585
+ }
2586
+ },
2587
+ "LogicalInstanceMapping": {
2588
+ "type": "object",
2589
+ "patternProperties": {
2590
+ "^[a-zA-Z][a-zA-Z0-9_]*$": {
2591
+ "oneOf": [
2592
+ {
2593
+ "type": "string",
2594
+ "description": "Reference to implementationType"
2595
+ },
2596
+ {
2597
+ "type": "object",
2598
+ "properties": {
2599
+ "implementationType": {
2600
+ "type": "string"
2601
+ },
2602
+ "overrides": {
2603
+ "type": "object"
2604
+ }
2605
+ },
2606
+ "required": [
2607
+ "implementationType"
2608
+ ]
2609
+ }
2610
+ ]
2611
+ }
2612
+ }
2613
+ },
2614
+ "NamespaceConfigurationSection": {
2615
+ "type": "object",
2616
+ "description": "v3.1.0 namespace scoping configuration",
2617
+ "additionalProperties": false,
2618
+ "properties": {
2619
+ "strategy": {
2620
+ "type": "string",
2621
+ "enum": [
2622
+ "single",
2623
+ "domain-based",
2624
+ "environment-based",
2625
+ "tenant-based"
2626
+ ]
2627
+ },
2628
+ "namespaces": {
2629
+ "type": "object",
2630
+ "patternProperties": {
2631
+ "^[a-zA-Z][a-zA-Z0-9_-]*$": {
2632
+ "type": "object",
2633
+ "properties": {
2634
+ "description": {
2635
+ "type": "string"
2636
+ },
2637
+ "isolation": {
2638
+ "type": "string",
2639
+ "enum": [
2640
+ "strict",
2641
+ "permissive"
2642
+ ]
2643
+ },
2644
+ "resourceLimits": {
2645
+ "type": "object"
2646
+ },
2647
+ "securityPolicy": {
2648
+ "type": "string"
2649
+ }
2650
+ }
2651
+ }
2652
+ }
2653
+ },
2654
+ "crossNamespacePolicy": {
2655
+ "type": "string",
2656
+ "enum": [
2657
+ "deny",
2658
+ "allow",
2659
+ "explicit"
2660
+ ]
2661
+ }
2662
+ }
2663
+ },
2664
+ "InstanceFactoryDefinition": {
2665
+ "type": "object",
2666
+ "description": "Instance factory definition - reusable technology specification for deployment instances",
2667
+ "required": [
2668
+ "name",
2669
+ "version",
2670
+ "category",
2671
+ "capabilities",
2672
+ "technology",
2673
+ "codeTemplates"
2674
+ ],
2675
+ "properties": {
2676
+ "name": {
2677
+ "type": "string",
2678
+ "pattern": "^[A-Za-z][A-Za-z0-9]*$",
2679
+ "description": "Unique name (e.g., 'FastifyPrismaAPI', 'PostgreSQL15')"
2680
+ },
2681
+ "version": {
2682
+ "type": "string",
2683
+ "pattern": "^\\d+\\.\\d+\\.\\d+(-[A-Za-z0-9-]+)?(\\+[A-Za-z0-9-]+)?$",
2684
+ "description": "Semantic version"
2685
+ },
2686
+ "category": {
2687
+ "type": "string",
2688
+ "enum": [
2689
+ "controller",
2690
+ "service",
2691
+ "view",
2692
+ "storage",
2693
+ "security",
2694
+ "infrastructure",
2695
+ "monitoring",
2696
+ "communication",
2697
+ "scaffolding",
2698
+ "application",
2699
+ "cli"
2700
+ ],
2701
+ "description": "Which deployment instance category this implements"
2702
+ },
2703
+ "description": {
2704
+ "type": "string",
2705
+ "description": "Human-readable description"
2706
+ },
2707
+ "compatibility": {
2708
+ "type": "object",
2709
+ "description": "Version compatibility requirements",
2710
+ "required": [
2711
+ "specverse"
2712
+ ],
2713
+ "properties": {
2714
+ "specverse": {
2715
+ "type": "string",
2716
+ "description": "SpecVerse version range (semver)"
2717
+ },
2718
+ "node": {
2719
+ "type": "string",
2720
+ "description": "Node.js version requirement"
2721
+ }
2722
+ },
2723
+ "additionalProperties": {
2724
+ "type": "string"
2725
+ }
2726
+ },
2727
+ "capabilities": {
2728
+ "type": "object",
2729
+ "description": "What this instance provides and requires",
2730
+ "required": [
2731
+ "provides"
2732
+ ],
2733
+ "properties": {
2734
+ "provides": {
2735
+ "type": "array",
2736
+ "description": "Capabilities this instance type provides",
2737
+ "items": {
2738
+ "type": "string",
2739
+ "pattern": "^[a-z][a-z0-9]*\\.[a-z][a-z0-9]*(\\.[a-z*][a-z0-9*]*)*$"
2740
+ },
2741
+ "minItems": 1
2742
+ },
2743
+ "requires": {
2744
+ "type": "array",
2745
+ "description": "Capabilities this instance type requires",
2746
+ "items": {
2747
+ "type": "string"
2748
+ }
2749
+ }
2750
+ }
2751
+ },
2752
+ "technology": {
2753
+ "type": "object",
2754
+ "description": "Technology stack information",
2755
+ "required": [
2756
+ "runtime",
2757
+ "language"
2758
+ ],
2759
+ "properties": {
2760
+ "runtime": {
2761
+ "type": "string",
2762
+ "pattern": "^[a-z][a-z0-9-]+$",
2763
+ "description": "Runtime environment identifier. Standard runtimes: node, deno, bun, python, rust, go, browser. See SpecVerse Registry for complete list.",
2764
+ "examples": [
2765
+ "node",
2766
+ "deno",
2767
+ "bun"
2768
+ ],
2769
+ "$comment": "Validation: Linter checks against SpecVerse runtime registry"
2770
+ },
2771
+ "language": {
2772
+ "type": "string",
2773
+ "pattern": "^[a-z][a-z0-9-]+$",
2774
+ "description": "Programming language identifier (kebab-case). Standard languages: typescript, javascript, python, rust, go, java, csharp, php, ruby, kotlin, swift. See SpecVerse Registry for complete list.",
2775
+ "examples": [
2776
+ "typescript",
2777
+ "python",
2778
+ "rust"
2779
+ ],
2780
+ "$comment": "Validation: Linter checks against SpecVerse language registry"
2781
+ },
2782
+ "framework": {
2783
+ "type": "string",
2784
+ "description": "Framework name (e.g., 'fastify', 'express', 'nextjs')"
2785
+ },
2786
+ "database": {
2787
+ "type": "string",
2788
+ "description": "Database system (e.g., 'postgresql', 'mongodb')"
2789
+ },
2790
+ "version": {
2791
+ "type": "string",
2792
+ "description": "Technology version"
2793
+ }
2794
+ },
2795
+ "additionalProperties": {
2796
+ "type": "string",
2797
+ "description": "Additional tech-specific fields (e.g., orm, validation, cache)"
2798
+ }
2799
+ },
2800
+ "dependencies": {
2801
+ "type": "object",
2802
+ "description": "Package dependencies",
2803
+ "properties": {
2804
+ "runtime": {
2805
+ "type": "array",
2806
+ "description": "Runtime dependencies",
2807
+ "items": {
2808
+ "type": "object",
2809
+ "required": [
2810
+ "name",
2811
+ "version"
2812
+ ],
2813
+ "properties": {
2814
+ "name": {
2815
+ "type": "string"
2816
+ },
2817
+ "version": {
2818
+ "type": "string"
2819
+ },
2820
+ "optional": {
2821
+ "type": "boolean"
2822
+ }
2823
+ }
2824
+ }
2825
+ },
2826
+ "dev": {
2827
+ "type": "array",
2828
+ "description": "Development dependencies",
2829
+ "items": {
2830
+ "type": "object",
2831
+ "required": [
2832
+ "name",
2833
+ "version"
2834
+ ],
2835
+ "properties": {
2836
+ "name": {
2837
+ "type": "string"
2838
+ },
2839
+ "version": {
2840
+ "type": "string"
2841
+ }
2842
+ }
2843
+ }
2844
+ },
2845
+ "peer": {
2846
+ "type": "array",
2847
+ "description": "Peer dependencies",
2848
+ "items": {
2849
+ "type": "object",
2850
+ "required": [
2851
+ "name",
2852
+ "version"
2853
+ ],
2854
+ "properties": {
2855
+ "name": {
2856
+ "type": "string"
2857
+ },
2858
+ "version": {
2859
+ "type": "string"
2860
+ }
2861
+ }
2862
+ }
2863
+ }
2864
+ }
2865
+ },
2866
+ "codeTemplates": {
2867
+ "type": "object",
2868
+ "description": "Code generation templates",
2869
+ "additionalProperties": {
2870
+ "type": "object",
2871
+ "required": [
2872
+ "engine",
2873
+ "outputPattern"
2874
+ ],
2875
+ "properties": {
2876
+ "engine": {
2877
+ "type": "string",
2878
+ "description": "Template engine to use",
2879
+ "enum": [
2880
+ "typescript",
2881
+ "handlebars",
2882
+ "ai"
2883
+ ]
2884
+ },
2885
+ "template": {
2886
+ "type": "string",
2887
+ "description": "Template content or path (for handlebars)"
2888
+ },
2889
+ "generator": {
2890
+ "type": "string",
2891
+ "description": "Path to generator function (for typescript)"
2892
+ },
2893
+ "prompt": {
2894
+ "type": "string",
2895
+ "description": "Generation prompt (for AI)"
2896
+ },
2897
+ "outputPattern": {
2898
+ "type": "string",
2899
+ "description": "Output file path pattern with variables"
2900
+ },
2901
+ "validators": {
2902
+ "type": "array",
2903
+ "description": "Validation function paths",
2904
+ "items": {
2905
+ "type": "string"
2906
+ }
2907
+ },
2908
+ "postProcessors": {
2909
+ "type": "array",
2910
+ "description": "Post-processing function paths",
2911
+ "items": {
2912
+ "type": "string"
2913
+ }
2914
+ }
2915
+ }
2916
+ },
2917
+ "minProperties": 1
2918
+ },
2919
+ "configuration": {
2920
+ "type": "object",
2921
+ "description": "Default configuration (tech-specific structure)",
2922
+ "additionalProperties": true
2923
+ },
2924
+ "configurationSchema": {
2925
+ "description": "Optional JSON Schema to validate configuration overrides",
2926
+ "oneOf": [
2927
+ {
2928
+ "type": "object",
2929
+ "description": "Inline JSON Schema"
2930
+ },
2931
+ {
2932
+ "type": "object",
2933
+ "required": [
2934
+ "$ref"
2935
+ ],
2936
+ "properties": {
2937
+ "$ref": {
2938
+ "type": "string",
2939
+ "description": "Path to external schema file"
2940
+ }
2941
+ }
2942
+ }
2943
+ ]
2944
+ },
2945
+ "configurationDocs": {
2946
+ "type": "object",
2947
+ "description": "Documentation for configuration options",
2948
+ "additionalProperties": {
2949
+ "type": "string"
2950
+ }
2951
+ },
2952
+ "extends": {
2953
+ "type": "string",
2954
+ "description": "Parent instance type to extend from"
2955
+ },
2956
+ "metadata": {
2957
+ "type": "object",
2958
+ "description": "Additional metadata",
2959
+ "properties": {
2960
+ "author": {
2961
+ "type": "string"
2962
+ },
2963
+ "repository": {
2964
+ "type": "string",
2965
+ "format": "uri"
2966
+ },
2967
+ "homepage": {
2968
+ "type": "string",
2969
+ "format": "uri"
2970
+ },
2971
+ "license": {
2972
+ "type": "string"
2973
+ },
2974
+ "tags": {
2975
+ "type": "array",
2976
+ "items": {
2977
+ "type": "string"
2978
+ }
2979
+ },
2980
+ "keywords": {
2981
+ "type": "array",
2982
+ "items": {
2983
+ "type": "string"
2984
+ }
2985
+ },
2986
+ "documentation": {
2987
+ "type": "string",
2988
+ "format": "uri"
2989
+ }
2990
+ }
2991
+ },
2992
+ "requirements": {
2993
+ "type": "object",
2994
+ "description": "Generic requirements declared by this implementation type for scaffolding (runtime-agnostic structure)",
2995
+ "properties": {
2996
+ "dependencies": {
2997
+ "type": "object",
2998
+ "description": "Package/library dependencies (structure varies by runtime: npm, pip, cargo, go-mod, etc.)",
2999
+ "additionalProperties": true
3000
+ },
3001
+ "environment": {
3002
+ "type": "array",
3003
+ "description": "Environment variables and configuration (universal structure)",
3004
+ "items": {
3005
+ "type": "object",
3006
+ "required": [
3007
+ "name"
3008
+ ],
3009
+ "properties": {
3010
+ "name": {
3011
+ "type": "string",
3012
+ "description": "Environment variable name"
3013
+ },
3014
+ "description": {
3015
+ "type": "string",
3016
+ "description": "Human-readable description"
3017
+ },
3018
+ "example": {
3019
+ "type": "string",
3020
+ "description": "Example value"
3021
+ },
3022
+ "required": {
3023
+ "type": "boolean",
3024
+ "description": "Whether this variable is required"
3025
+ },
3026
+ "category": {
3027
+ "type": "string",
3028
+ "description": "Category for grouping (e.g., 'Database', 'Server', 'Authentication')"
3029
+ }
3030
+ },
3031
+ "additionalProperties": true
3032
+ }
3033
+ },
3034
+ "configuration": {
3035
+ "type": "object",
3036
+ "description": "Build/runtime configuration files (structure varies by runtime: tsconfig, pyproject, cargo-toml, etc.)",
3037
+ "additionalProperties": true
3038
+ },
3039
+ "files": {
3040
+ "type": "array",
3041
+ "description": "Additional files to generate (optional)",
3042
+ "items": {
3043
+ "type": "object",
3044
+ "required": [
3045
+ "path"
3046
+ ],
3047
+ "properties": {
3048
+ "path": {
3049
+ "type": "string",
3050
+ "description": "File path relative to project root"
3051
+ },
3052
+ "description": {
3053
+ "type": "string",
3054
+ "description": "Description of what this file is for"
3055
+ }
3056
+ },
3057
+ "additionalProperties": true
3058
+ }
3059
+ }
3060
+ },
3061
+ "additionalProperties": true
3062
+ },
3063
+ "middleware": {
3064
+ "type": "object",
3065
+ "description": "Framework-specific middleware configuration",
3066
+ "properties": {
3067
+ "global": {
3068
+ "type": "array",
3069
+ "items": {
3070
+ "type": "string"
3071
+ }
3072
+ },
3073
+ "preHandler": {
3074
+ "type": "array",
3075
+ "items": {
3076
+ "type": "string"
3077
+ }
3078
+ },
3079
+ "postHandler": {
3080
+ "type": "array",
3081
+ "items": {
3082
+ "type": "string"
3083
+ }
3084
+ },
3085
+ "onResponse": {
3086
+ "type": "array",
3087
+ "items": {
3088
+ "type": "string"
3089
+ }
3090
+ },
3091
+ "onError": {
3092
+ "type": "array",
3093
+ "items": {
3094
+ "type": "string"
3095
+ }
3096
+ }
3097
+ },
3098
+ "additionalProperties": false
3099
+ },
3100
+ "interceptors": {
3101
+ "type": "object",
3102
+ "description": "Framework-specific interceptors",
3103
+ "properties": {
3104
+ "global": {
3105
+ "type": "array",
3106
+ "items": {
3107
+ "type": "string"
3108
+ }
3109
+ },
3110
+ "controller": {
3111
+ "type": "array",
3112
+ "items": {
3113
+ "type": "string"
3114
+ }
3115
+ },
3116
+ "route": {
3117
+ "type": "array",
3118
+ "items": {
3119
+ "type": "string"
3120
+ }
3121
+ }
3122
+ },
3123
+ "additionalProperties": false
3124
+ },
3125
+ "guards": {
3126
+ "type": "array",
3127
+ "items": {
3128
+ "type": "string"
3129
+ },
3130
+ "description": "Framework-specific guards"
3131
+ },
3132
+ "pipes": {
3133
+ "type": "array",
3134
+ "items": {
3135
+ "type": "string"
3136
+ },
3137
+ "description": "Framework-specific validation pipes"
3138
+ },
3139
+ "dependencyInjection": {
3140
+ "type": "object",
3141
+ "description": "DI system configuration",
3142
+ "properties": {
3143
+ "defaultScope": {
3144
+ "type": "string",
3145
+ "enum": [
3146
+ "singleton",
3147
+ "transient",
3148
+ "request",
3149
+ "session"
3150
+ ],
3151
+ "default": "singleton"
3152
+ },
3153
+ "scopeOptions": {
3154
+ "type": "array",
3155
+ "items": {
3156
+ "type": "string"
3157
+ }
3158
+ }
3159
+ },
3160
+ "additionalProperties": false
3161
+ },
3162
+ "lifecycle": {
3163
+ "type": "object",
3164
+ "description": "Framework-specific lifecycle hook mappings",
3165
+ "properties": {
3166
+ "mount": {
3167
+ "type": "string"
3168
+ },
3169
+ "unmount": {
3170
+ "type": "string"
3171
+ },
3172
+ "update": {
3173
+ "type": "string"
3174
+ },
3175
+ "beforeUpdate": {
3176
+ "type": "string"
3177
+ },
3178
+ "afterUpdate": {
3179
+ "type": "string"
3180
+ }
3181
+ },
3182
+ "additionalProperties": false
3183
+ },
3184
+ "contentNegotiation": {
3185
+ "type": "object",
3186
+ "description": "Content type serialization/parsing",
3187
+ "properties": {
3188
+ "serializers": {
3189
+ "type": "array",
3190
+ "items": {
3191
+ "type": "object",
3192
+ "properties": {
3193
+ "contentType": {
3194
+ "type": "string"
3195
+ },
3196
+ "handler": {
3197
+ "type": "string"
3198
+ }
3199
+ },
3200
+ "required": [
3201
+ "contentType",
3202
+ "handler"
3203
+ ],
3204
+ "additionalProperties": false
3205
+ }
3206
+ },
3207
+ "parsers": {
3208
+ "type": "array",
3209
+ "items": {
3210
+ "type": "object",
3211
+ "properties": {
3212
+ "contentType": {
3213
+ "type": "string"
3214
+ },
3215
+ "handler": {
3216
+ "type": "string"
3217
+ }
3218
+ },
3219
+ "required": [
3220
+ "contentType",
3221
+ "handler"
3222
+ ],
3223
+ "additionalProperties": false
3224
+ }
3225
+ }
3226
+ },
3227
+ "additionalProperties": false
3228
+ },
3229
+ "eventRouting": {
3230
+ "type": "object",
3231
+ "description": "Technology-specific event routing",
3232
+ "properties": {
3233
+ "mechanism": {
3234
+ "type": "string",
3235
+ "enum": [
3236
+ "topic",
3237
+ "queue",
3238
+ "direct",
3239
+ "fanout",
3240
+ "partition"
3241
+ ]
3242
+ },
3243
+ "exchangeType": {
3244
+ "type": "string"
3245
+ },
3246
+ "topicStrategy": {
3247
+ "type": "string"
3248
+ },
3249
+ "partitionStrategy": {
3250
+ "type": "string",
3251
+ "enum": [
3252
+ "hash",
3253
+ "roundRobin",
3254
+ "custom"
3255
+ ]
3256
+ },
3257
+ "routingKeyPattern": {
3258
+ "type": "string"
3259
+ }
3260
+ },
3261
+ "additionalProperties": false
3262
+ },
3263
+ "consumer": {
3264
+ "type": "object",
3265
+ "description": "Consumer implementation details",
3266
+ "properties": {
3267
+ "groupIdPattern": {
3268
+ "type": "string"
3269
+ },
3270
+ "queuePattern": {
3271
+ "type": "string"
3272
+ },
3273
+ "autoCommit": {
3274
+ "type": "boolean"
3275
+ },
3276
+ "prefetch": {
3277
+ "type": "integer"
3278
+ }
3279
+ },
3280
+ "additionalProperties": false
3281
+ },
3282
+ "deadLetterQueue": {
3283
+ "type": "object",
3284
+ "description": "DLQ implementation",
3285
+ "properties": {
3286
+ "enabled": {
3287
+ "type": "boolean",
3288
+ "default": false
3289
+ },
3290
+ "namingPattern": {
3291
+ "type": "string"
3292
+ },
3293
+ "mechanism": {
3294
+ "type": "string"
3295
+ }
3296
+ },
3297
+ "additionalProperties": false
3298
+ },
3299
+ "webhookVerification": {
3300
+ "type": "object",
3301
+ "description": "Webhook signature verification",
3302
+ "properties": {
3303
+ "signatureHeader": {
3304
+ "type": "string"
3305
+ },
3306
+ "algorithm": {
3307
+ "type": "string",
3308
+ "enum": [
3309
+ "sha256",
3310
+ "sha512",
3311
+ "rsa"
3312
+ ]
3313
+ },
3314
+ "verificationMethod": {
3315
+ "type": "string",
3316
+ "enum": [
3317
+ "hmac",
3318
+ "rsa",
3319
+ "custom"
3320
+ ]
3321
+ }
3322
+ },
3323
+ "additionalProperties": false
3324
+ },
3325
+ "styling": {
3326
+ "type": "object",
3327
+ "description": "Styling implementation approach",
3328
+ "properties": {
3329
+ "method": {
3330
+ "type": "string",
3331
+ "enum": [
3332
+ "cssModules",
3333
+ "styledComponents",
3334
+ "scopedStyles",
3335
+ "emotion",
3336
+ "tailwind"
3337
+ ]
3338
+ },
3339
+ "fileExtension": {
3340
+ "type": "string"
3341
+ },
3342
+ "classNameStrategy": {
3343
+ "type": "string",
3344
+ "enum": [
3345
+ "camelCase",
3346
+ "kebab-case",
3347
+ "snake_case"
3348
+ ]
3349
+ },
3350
+ "library": {
3351
+ "type": "string"
3352
+ },
3353
+ "preprocessor": {
3354
+ "type": "string",
3355
+ "enum": [
3356
+ "scss",
3357
+ "sass",
3358
+ "less",
3359
+ "stylus"
3360
+ ]
3361
+ },
3362
+ "scoped": {
3363
+ "type": "boolean"
3364
+ }
3365
+ },
3366
+ "additionalProperties": false
3367
+ },
3368
+ "migrations": {
3369
+ "type": "array",
3370
+ "description": "Version migration paths",
3371
+ "items": {
3372
+ "type": "object",
3373
+ "properties": {
3374
+ "from": {
3375
+ "type": "string"
3376
+ },
3377
+ "to": {
3378
+ "type": "string"
3379
+ },
3380
+ "breaking": {
3381
+ "type": "boolean",
3382
+ "default": false
3383
+ },
3384
+ "migrationSteps": {
3385
+ "type": "array",
3386
+ "items": {
3387
+ "type": "object",
3388
+ "properties": {
3389
+ "step": {
3390
+ "type": "string"
3391
+ },
3392
+ "description": {
3393
+ "type": "string"
3394
+ },
3395
+ "automated": {
3396
+ "type": "boolean",
3397
+ "default": false
3398
+ },
3399
+ "command": {
3400
+ "type": "string"
3401
+ },
3402
+ "codemod": {
3403
+ "type": "string"
3404
+ },
3405
+ "documentation": {
3406
+ "type": "string"
3407
+ },
3408
+ "warnings": {
3409
+ "type": "array",
3410
+ "items": {
3411
+ "type": "string"
3412
+ }
3413
+ }
3414
+ },
3415
+ "required": [
3416
+ "step",
3417
+ "description"
3418
+ ],
3419
+ "additionalProperties": false
3420
+ }
3421
+ },
3422
+ "estimatedDuration": {
3423
+ "type": "string"
3424
+ },
3425
+ "rollbackStrategy": {
3426
+ "type": "object",
3427
+ "properties": {
3428
+ "automatic": {
3429
+ "type": "boolean",
3430
+ "default": false
3431
+ },
3432
+ "backupRequired": {
3433
+ "type": "boolean",
3434
+ "default": false
3435
+ }
3436
+ },
3437
+ "additionalProperties": false
3438
+ },
3439
+ "deprecations": {
3440
+ "type": "array",
3441
+ "items": {
3442
+ "type": "object",
3443
+ "properties": {
3444
+ "api": {
3445
+ "type": "string"
3446
+ },
3447
+ "replacement": {
3448
+ "type": "string"
3449
+ }
3450
+ },
3451
+ "additionalProperties": false
3452
+ }
3453
+ }
3454
+ },
3455
+ "required": [
3456
+ "from",
3457
+ "to"
3458
+ ],
3459
+ "additionalProperties": false
3460
+ }
3461
+ }
3462
+ },
3463
+ "additionalProperties": false
3464
+ },
3465
+ "InstanceFactoryRef": {
3466
+ "type": "object",
3467
+ "properties": {
3468
+ "name": {
3469
+ "type": "string"
3470
+ },
3471
+ "source": {
3472
+ "type": "string"
3473
+ },
3474
+ "version": {
3475
+ "type": "string"
3476
+ },
3477
+ "peerDependencies": {
3478
+ "type": "array",
3479
+ "items": {
3480
+ "type": "object",
3481
+ "properties": {
3482
+ "name": {
3483
+ "type": "string"
3484
+ },
3485
+ "version": {
3486
+ "type": "string",
3487
+ "description": "Semver range"
3488
+ },
3489
+ "optional": {
3490
+ "type": "boolean",
3491
+ "default": false
3492
+ }
3493
+ },
3494
+ "required": [
3495
+ "name",
3496
+ "version"
3497
+ ]
3498
+ },
3499
+ "additionalProperties": false
3500
+ }
3501
+ },
3502
+ "required": [
3503
+ "name",
3504
+ "source"
3505
+ ],
3506
+ "additionalProperties": false
3507
+ },
3508
+ "ViewComponent": {
3509
+ "type": "object",
3510
+ "description": "Individual UI component within a view",
3511
+ "properties": {
3512
+ "type": {
3513
+ "anyOf": [
3514
+ {
3515
+ "type": "string",
3516
+ "enum": [
3517
+ "table",
3518
+ "list",
3519
+ "grid",
3520
+ "card",
3521
+ "chart",
3522
+ "tree",
3523
+ "timeline",
3524
+ "avatar",
3525
+ "image",
3526
+ "form",
3527
+ "input",
3528
+ "textarea",
3529
+ "select",
3530
+ "checkbox",
3531
+ "radio",
3532
+ "slider",
3533
+ "switch",
3534
+ "autocomplete",
3535
+ "datepicker",
3536
+ "timepicker",
3537
+ "button",
3538
+ "button-group",
3539
+ "link",
3540
+ "icon",
3541
+ "menu",
3542
+ "modal",
3543
+ "dialog",
3544
+ "drawer",
3545
+ "popover",
3546
+ "tooltip",
3547
+ "alert",
3548
+ "snackbar",
3549
+ "badge",
3550
+ "spinner",
3551
+ "tabs",
3552
+ "breadcrumb",
3553
+ "navbar",
3554
+ "sidebar",
3555
+ "pagination",
3556
+ "accordion",
3557
+ "carousel",
3558
+ "container",
3559
+ "divider",
3560
+ "header",
3561
+ "footer",
3562
+ "progress-bar",
3563
+ "progress-circle",
3564
+ "searchBar",
3565
+ "filterPanel"
3566
+ ],
3567
+ "description": "Standard component types"
3568
+ },
3569
+ {
3570
+ "type": "string",
3571
+ "pattern": "^[A-Z][a-zA-Z0-9]*$",
3572
+ "description": "Custom component type (PascalCase)"
3573
+ },
3574
+ {
3575
+ "type": "string",
3576
+ "pattern": "^[a-z][a-z0-9-]*$",
3577
+ "description": "Custom component type (kebab-case)"
3578
+ }
3579
+ ],
3580
+ "description": "Component type identifier"
3581
+ },
3582
+ "model": {
3583
+ "$ref": "#/$defs/TypeReference",
3584
+ "description": "Model this component operates on"
3585
+ },
3586
+ "columns": {
3587
+ "type": "array",
3588
+ "items": {
3589
+ "type": "string"
3590
+ },
3591
+ "description": "Column names for table/grid components"
3592
+ },
3593
+ "fields": {
3594
+ "type": "array",
3595
+ "items": {
3596
+ "oneOf": [
3597
+ {
3598
+ "type": "string"
3599
+ },
3600
+ {
3601
+ "type": "object",
3602
+ "properties": {
3603
+ "name": {
3604
+ "type": "string"
3605
+ },
3606
+ "label": {
3607
+ "type": "string"
3608
+ },
3609
+ "type": {
3610
+ "type": "string"
3611
+ },
3612
+ "required": {
3613
+ "type": "boolean"
3614
+ },
3615
+ "placeholder": {
3616
+ "type": "string"
3617
+ }
3618
+ },
3619
+ "required": [
3620
+ "name"
3621
+ ]
3622
+ }
3623
+ ]
3624
+ },
3625
+ "description": "Form fields or filter fields"
3626
+ },
3627
+ "chartType": {
3628
+ "type": "string",
3629
+ "enum": [
3630
+ "pie",
3631
+ "bar",
3632
+ "line",
3633
+ "area",
3634
+ "scatter",
3635
+ "donut"
3636
+ ],
3637
+ "description": "Chart type for chart components"
3638
+ },
3639
+ "dataSource": {
3640
+ "type": "string",
3641
+ "description": "Data source reference (e.g., 'tasks.status', 'events')"
3642
+ },
3643
+ "source": {
3644
+ "type": "string",
3645
+ "description": "Source reference for component data"
3646
+ },
3647
+ "options": {
3648
+ "type": "array",
3649
+ "items": {
3650
+ "oneOf": [
3651
+ {
3652
+ "type": "string"
3653
+ },
3654
+ {
3655
+ "type": "object",
3656
+ "properties": {
3657
+ "label": {
3658
+ "type": "string"
3659
+ },
3660
+ "value": {
3661
+ "type": "string"
3662
+ }
3663
+ },
3664
+ "required": [
3665
+ "label",
3666
+ "value"
3667
+ ]
3668
+ }
3669
+ ]
3670
+ },
3671
+ "description": "Options for select/dropdown components (strings or {label, value} objects)"
3672
+ },
3673
+ "properties": {
3674
+ "type": "object",
3675
+ "description": "Component-specific properties",
3676
+ "additionalProperties": true
3677
+ },
3678
+ "events": {
3679
+ "type": "object",
3680
+ "description": "Event handlers",
3681
+ "patternProperties": {
3682
+ "^on[A-Z][a-zA-Z0-9]*$": {
3683
+ "type": "string",
3684
+ "description": "Handler reference (e.g., 'UserController.updateUser')"
3685
+ }
3686
+ },
3687
+ "additionalProperties": false
3688
+ },
3689
+ "validation": {
3690
+ "type": "object",
3691
+ "description": "Validation rules for form components",
3692
+ "properties": {
3693
+ "required": {
3694
+ "type": "boolean"
3695
+ },
3696
+ "pattern": {
3697
+ "type": "string"
3698
+ },
3699
+ "min": {
3700
+ "type": "number"
3701
+ },
3702
+ "max": {
3703
+ "type": "number"
3704
+ },
3705
+ "minLength": {
3706
+ "type": "integer"
3707
+ },
3708
+ "maxLength": {
3709
+ "type": "integer"
3710
+ }
3711
+ }
3712
+ }
3713
+ },
3714
+ "additionalProperties": true
3715
+ },
3716
+ "StandardLayout": {
3717
+ "type": "object",
3718
+ "description": "Standard layout patterns",
3719
+ "properties": {
3720
+ "type": {
3721
+ "type": "string",
3722
+ "enum": [
3723
+ "single-column",
3724
+ "two-column",
3725
+ "three-column",
3726
+ "grid",
3727
+ "flex",
3728
+ "sidebar-left",
3729
+ "sidebar-right",
3730
+ "sidebar-both",
3731
+ "header-content",
3732
+ "header-content-footer",
3733
+ "master-detail",
3734
+ "split-horizontal",
3735
+ "split-vertical"
3736
+ ],
3737
+ "description": "Layout pattern type"
3738
+ },
3739
+ "regions": {
3740
+ "type": "object",
3741
+ "description": "Named layout regions",
3742
+ "patternProperties": {
3743
+ "^[a-z][a-zA-Z0-9_]*$": {
3744
+ "type": "object",
3745
+ "properties": {
3746
+ "width": {
3747
+ "type": "string"
3748
+ },
3749
+ "minWidth": {
3750
+ "type": "string"
3751
+ },
3752
+ "maxWidth": {
3753
+ "type": "string"
3754
+ },
3755
+ "height": {
3756
+ "type": "string"
3757
+ },
3758
+ "minHeight": {
3759
+ "type": "string"
3760
+ },
3761
+ "maxHeight": {
3762
+ "type": "string"
3763
+ },
3764
+ "flex": {
3765
+ "type": "string"
3766
+ },
3767
+ "order": {
3768
+ "type": "integer"
3769
+ },
3770
+ "align": {
3771
+ "type": "string",
3772
+ "enum": [
3773
+ "start",
3774
+ "center",
3775
+ "end",
3776
+ "stretch"
3777
+ ]
3778
+ }
3779
+ }
3780
+ }
3781
+ }
3782
+ },
3783
+ "spacing": {
3784
+ "type": "string",
3785
+ "description": "Gap between regions"
3786
+ },
3787
+ "responsive": {
3788
+ "type": "object",
3789
+ "description": "Responsive breakpoint overrides",
3790
+ "properties": {
3791
+ "mobile": {
3792
+ "type": "object"
3793
+ },
3794
+ "tablet": {
3795
+ "type": "object"
3796
+ },
3797
+ "desktop": {
3798
+ "type": "object"
3799
+ }
3800
+ }
3801
+ }
3802
+ },
3803
+ "required": [
3804
+ "type"
3805
+ ]
3806
+ },
3807
+ "ViewProperties": {
3808
+ "type": "object",
3809
+ "description": "View-level feature flags and configuration",
3810
+ "properties": {
3811
+ "responsive": {
3812
+ "type": "boolean"
3813
+ },
3814
+ "authenticated": {
3815
+ "type": "boolean"
3816
+ },
3817
+ "authorized": {
3818
+ "type": "boolean"
3819
+ },
3820
+ "realtime": {
3821
+ "type": "boolean"
3822
+ },
3823
+ "sortable": {
3824
+ "type": "boolean"
3825
+ },
3826
+ "filterable": {
3827
+ "type": "boolean"
3828
+ },
3829
+ "searchable": {
3830
+ "type": "boolean"
3831
+ },
3832
+ "paginated": {
3833
+ "type": "boolean"
3834
+ },
3835
+ "pagination": {
3836
+ "type": "boolean"
3837
+ },
3838
+ "exportable": {
3839
+ "type": "boolean"
3840
+ },
3841
+ "printable": {
3842
+ "type": "boolean"
3843
+ },
3844
+ "bookmarkable": {
3845
+ "type": "boolean"
3846
+ },
3847
+ "cacheable": {
3848
+ "type": "boolean"
3849
+ },
3850
+ "editable": {
3851
+ "type": "boolean"
3852
+ },
3853
+ "refreshInterval": {
3854
+ "type": "integer",
3855
+ "description": "Auto-refresh interval in milliseconds"
3856
+ },
3857
+ "theme": {
3858
+ "type": "string",
3859
+ "enum": [
3860
+ "light",
3861
+ "dark",
3862
+ "auto",
3863
+ "system"
3864
+ ]
3865
+ },
3866
+ "locale": {
3867
+ "type": "string",
3868
+ "pattern": "^[a-z]{2}(-[A-Z]{2})?$"
3869
+ }
3870
+ },
3871
+ "additionalProperties": {
3872
+ "oneOf": [
3873
+ {
3874
+ "type": "boolean"
3875
+ },
3876
+ {
3877
+ "type": "string"
3878
+ },
3879
+ {
3880
+ "type": "number"
3881
+ },
3882
+ {
3883
+ "type": "array"
3884
+ },
3885
+ {
3886
+ "type": "object"
3887
+ }
3888
+ ]
3889
+ }
3890
+ },
3891
+ "OperationPolicies": {
3892
+ "type": "object",
3893
+ "description": "Deployment-specific operational policies for an operation",
3894
+ "properties": {
3895
+ "transactional": {
3896
+ "type": "object",
3897
+ "description": "Transaction management configuration",
3898
+ "properties": {
3899
+ "enabled": {
3900
+ "type": "boolean",
3901
+ "default": false
3902
+ },
3903
+ "isolation": {
3904
+ "type": "string",
3905
+ "enum": [
3906
+ "READ_UNCOMMITTED",
3907
+ "READ_COMMITTED",
3908
+ "REPEATABLE_READ",
3909
+ "SERIALIZABLE"
3910
+ ],
3911
+ "default": "READ_COMMITTED",
3912
+ "description": "Transaction isolation level"
3913
+ },
3914
+ "propagation": {
3915
+ "type": "string",
3916
+ "enum": [
3917
+ "REQUIRED",
3918
+ "REQUIRES_NEW",
3919
+ "SUPPORTS",
3920
+ "NOT_SUPPORTED",
3921
+ "MANDATORY",
3922
+ "NEVER"
3923
+ ],
3924
+ "default": "REQUIRED",
3925
+ "description": "Transaction propagation behavior"
3926
+ },
3927
+ "timeout": {
3928
+ "type": "integer",
3929
+ "minimum": 1,
3930
+ "description": "Transaction timeout in seconds"
3931
+ },
3932
+ "readOnly": {
3933
+ "type": "boolean",
3934
+ "default": false,
3935
+ "description": "Mark transaction as read-only for optimization"
3936
+ }
3937
+ },
3938
+ "additionalProperties": false
3939
+ },
3940
+ "retry": {
3941
+ "$ref": "#/$defs/RetryPolicy"
3942
+ },
3943
+ "circuitBreaker": {
3944
+ "$ref": "#/$defs/CircuitBreakerPolicy"
3945
+ },
3946
+ "idempotency": {
3947
+ "type": "object",
3948
+ "description": "Idempotency enforcement",
3949
+ "properties": {
3950
+ "enabled": {
3951
+ "type": "boolean",
3952
+ "default": false
3953
+ },
3954
+ "keyField": {
3955
+ "type": "string",
3956
+ "description": "Parameter field to use as idempotency key"
3957
+ },
3958
+ "ttlSeconds": {
3959
+ "type": "integer",
3960
+ "minimum": 1,
3961
+ "description": "How long to remember idempotency keys"
3962
+ }
3963
+ },
3964
+ "additionalProperties": false
3965
+ },
3966
+ "cache": {
3967
+ "type": "object",
3968
+ "description": "Operation-level caching",
3969
+ "properties": {
3970
+ "enabled": {
3971
+ "type": "boolean",
3972
+ "default": false
3973
+ },
3974
+ "ttlSeconds": {
3975
+ "type": "integer",
3976
+ "minimum": 1,
3977
+ "description": "Cache TTL in seconds"
3978
+ },
3979
+ "keyFields": {
3980
+ "type": "array",
3981
+ "items": {
3982
+ "type": "string"
3983
+ },
3984
+ "description": "Parameter fields to include in cache key"
3985
+ }
3986
+ },
3987
+ "additionalProperties": false
3988
+ }
3989
+ },
3990
+ "additionalProperties": false
3991
+ },
3992
+ "RateLimitPolicy": {
3993
+ "type": "object",
3994
+ "description": "Rate limiting configuration",
3995
+ "properties": {
3996
+ "enabled": {
3997
+ "type": "boolean",
3998
+ "default": false
3999
+ },
4000
+ "requestsPerMinute": {
4001
+ "type": "integer",
4002
+ "minimum": 1,
4003
+ "description": "Maximum requests per minute"
4004
+ },
4005
+ "burstSize": {
4006
+ "type": "integer",
4007
+ "minimum": 1,
4008
+ "description": "Burst allowance above rate limit"
4009
+ },
4010
+ "byIP": {
4011
+ "type": "boolean",
4012
+ "default": true,
4013
+ "description": "Apply limit per IP address"
4014
+ },
4015
+ "byUser": {
4016
+ "type": "boolean",
4017
+ "default": false,
4018
+ "description": "Apply limit per authenticated user"
4019
+ },
4020
+ "byApiKey": {
4021
+ "type": "boolean",
4022
+ "default": false,
4023
+ "description": "Apply limit per API key"
4024
+ }
4025
+ },
4026
+ "additionalProperties": false
4027
+ },
4028
+ "RetryPolicy": {
4029
+ "type": "object",
4030
+ "description": "Retry policy configuration",
4031
+ "properties": {
4032
+ "enabled": {
4033
+ "type": "boolean",
4034
+ "default": false
4035
+ },
4036
+ "maxAttempts": {
4037
+ "type": "integer",
4038
+ "minimum": 1,
4039
+ "maximum": 10,
4040
+ "default": 3,
4041
+ "description": "Maximum retry attempts"
4042
+ },
4043
+ "backoffMs": {
4044
+ "type": "integer",
4045
+ "minimum": 100,
4046
+ "description": "Initial backoff delay in milliseconds"
4047
+ },
4048
+ "backoffMultiplier": {
4049
+ "type": "number",
4050
+ "minimum": 1,
4051
+ "default": 2,
4052
+ "description": "Exponential backoff multiplier"
4053
+ },
4054
+ "maxBackoffMs": {
4055
+ "type": "integer",
4056
+ "minimum": 100,
4057
+ "description": "Maximum backoff delay"
4058
+ },
4059
+ "retryableErrors": {
4060
+ "type": "array",
4061
+ "items": {
4062
+ "type": "string"
4063
+ },
4064
+ "description": "Error types/codes that should trigger retry"
4065
+ }
4066
+ },
4067
+ "additionalProperties": false
4068
+ },
4069
+ "CircuitBreakerPolicy": {
4070
+ "type": "object",
4071
+ "description": "Circuit breaker policy configuration",
4072
+ "properties": {
4073
+ "enabled": {
4074
+ "type": "boolean",
4075
+ "default": false
4076
+ },
4077
+ "failureThreshold": {
4078
+ "type": "integer",
4079
+ "minimum": 1,
4080
+ "default": 5,
4081
+ "description": "Number of failures before opening circuit"
4082
+ },
4083
+ "successThreshold": {
4084
+ "type": "integer",
4085
+ "minimum": 1,
4086
+ "default": 2,
4087
+ "description": "Number of successes before closing circuit"
4088
+ },
4089
+ "timeoutMs": {
4090
+ "type": "integer",
4091
+ "minimum": 100,
4092
+ "description": "Operation timeout before considering it a failure"
4093
+ },
4094
+ "halfOpenAfterMs": {
4095
+ "type": "integer",
4096
+ "minimum": 1000,
4097
+ "default": 60000,
4098
+ "description": "Time to wait before attempting half-open state"
4099
+ }
4100
+ },
4101
+ "additionalProperties": false
4102
+ },
4103
+ "ResourceConfiguration": {
4104
+ "type": "object",
4105
+ "description": "Resource requests and limits",
4106
+ "properties": {
4107
+ "requests": {
4108
+ "type": "object",
4109
+ "description": "Guaranteed resource allocation",
4110
+ "properties": {
4111
+ "cpu": {
4112
+ "type": "string",
4113
+ "pattern": "^[0-9]+(m|[0-9]*\\.?[0-9]+)?$",
4114
+ "description": "CPU request (e.g., 100m, 0.5, 1)"
4115
+ },
4116
+ "memory": {
4117
+ "type": "string",
4118
+ "pattern": "^[0-9]+([KMGT]i?)?$",
4119
+ "description": "Memory request (e.g., 128Mi, 1Gi)"
4120
+ },
4121
+ "ephemeralStorage": {
4122
+ "type": "string",
4123
+ "pattern": "^[0-9]+([KMGT]i?)?$",
4124
+ "description": "Ephemeral storage request"
4125
+ }
4126
+ },
4127
+ "additionalProperties": false
4128
+ },
4129
+ "limits": {
4130
+ "type": "object",
4131
+ "description": "Maximum resource allocation",
4132
+ "properties": {
4133
+ "cpu": {
4134
+ "type": "string",
4135
+ "pattern": "^[0-9]+(m|[0-9]*\\.?[0-9]+)?$",
4136
+ "description": "CPU limit"
4137
+ },
4138
+ "memory": {
4139
+ "type": "string",
4140
+ "pattern": "^[0-9]+([KMGT]i?)?$",
4141
+ "description": "Memory limit"
4142
+ },
4143
+ "ephemeralStorage": {
4144
+ "type": "string",
4145
+ "pattern": "^[0-9]+([KMGT]i?)?$",
4146
+ "description": "Ephemeral storage limit"
4147
+ }
4148
+ },
4149
+ "additionalProperties": false
4150
+ }
4151
+ },
4152
+ "additionalProperties": false
4153
+ },
4154
+ "AutoscalingConfiguration": {
4155
+ "type": "object",
4156
+ "description": "Horizontal pod autoscaling configuration",
4157
+ "properties": {
4158
+ "enabled": {
4159
+ "type": "boolean",
4160
+ "default": false
4161
+ },
4162
+ "minReplicas": {
4163
+ "type": "integer",
4164
+ "minimum": 1,
4165
+ "default": 1,
4166
+ "description": "Minimum number of replicas"
4167
+ },
4168
+ "maxReplicas": {
4169
+ "type": "integer",
4170
+ "minimum": 1,
4171
+ "default": 10,
4172
+ "description": "Maximum number of replicas"
4173
+ },
4174
+ "targetCPU": {
4175
+ "type": "integer",
4176
+ "minimum": 1,
4177
+ "maximum": 100,
4178
+ "description": "Target CPU utilization percentage"
4179
+ },
4180
+ "targetMemory": {
4181
+ "type": "integer",
4182
+ "minimum": 1,
4183
+ "maximum": 100,
4184
+ "description": "Target memory utilization percentage"
4185
+ },
4186
+ "customMetrics": {
4187
+ "type": "array",
4188
+ "description": "Custom metrics for scaling",
4189
+ "items": {
4190
+ "type": "object",
4191
+ "properties": {
4192
+ "name": {
4193
+ "type": "string"
4194
+ },
4195
+ "type": {
4196
+ "type": "string",
4197
+ "enum": [
4198
+ "pods",
4199
+ "object",
4200
+ "external"
4201
+ ]
4202
+ },
4203
+ "target": {
4204
+ "type": "object",
4205
+ "properties": {
4206
+ "type": {
4207
+ "type": "string",
4208
+ "enum": [
4209
+ "Utilization",
4210
+ "Value",
4211
+ "AverageValue"
4212
+ ]
4213
+ },
4214
+ "averageValue": {
4215
+ "type": "string"
4216
+ },
4217
+ "value": {
4218
+ "type": "string"
4219
+ }
4220
+ },
4221
+ "additionalProperties": false
4222
+ }
4223
+ },
4224
+ "additionalProperties": false
4225
+ }
4226
+ },
4227
+ "scaleDown": {
4228
+ "type": "object",
4229
+ "description": "Scale down behavior",
4230
+ "properties": {
4231
+ "stabilizationWindowSeconds": {
4232
+ "type": "integer",
4233
+ "minimum": 0,
4234
+ "default": 300,
4235
+ "description": "Cooldown period before scaling down"
4236
+ },
4237
+ "selectPolicy": {
4238
+ "type": "string",
4239
+ "enum": [
4240
+ "Max",
4241
+ "Min",
4242
+ "Disabled"
4243
+ ],
4244
+ "default": "Max"
4245
+ }
4246
+ },
4247
+ "additionalProperties": false
4248
+ },
4249
+ "scaleUp": {
4250
+ "type": "object",
4251
+ "description": "Scale up behavior",
4252
+ "properties": {
4253
+ "stabilizationWindowSeconds": {
4254
+ "type": "integer",
4255
+ "minimum": 0,
4256
+ "default": 0
4257
+ },
4258
+ "selectPolicy": {
4259
+ "type": "string",
4260
+ "enum": [
4261
+ "Max",
4262
+ "Min",
4263
+ "Disabled"
4264
+ ],
4265
+ "default": "Max"
4266
+ }
4267
+ },
4268
+ "additionalProperties": false
4269
+ }
4270
+ },
4271
+ "additionalProperties": false
4272
+ }
4273
+ }
4274
+ }