@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.
- package/assets/examples/09-api/ai-spec.yaml +194 -0
- package/assets/examples/09-api/converted.yaml +95 -0
- package/assets/examples/09-api/diagram-architecture.mmd +10 -0
- package/assets/examples/09-api/diagram-er.mmd +10 -0
- package/assets/examples/09-api/documentation.html +104 -0
- package/assets/examples/09-api/documentation.md +95 -0
- package/assets/examples/09-api/inferred-spec.yaml +420 -0
- package/assets/examples/09-api/openapi.json +61 -0
- package/assets/examples/10-api/README.md +216 -0
- package/assets/examples/10-api/ai-spec.yaml +194 -0
- package/assets/examples/10-api/converted.yaml +96 -0
- package/assets/examples/10-api/diagram-architecture.mmd +10 -0
- package/assets/examples/10-api/diagram-er.mmd +10 -0
- package/assets/examples/10-api/documentation.html +104 -0
- package/assets/examples/10-api/documentation.md +95 -0
- package/assets/examples/10-api/inferred-spec.yaml +7 -0
- package/assets/examples/10-api/metadata.yaml +89 -0
- package/assets/examples/10-api/openapi.json +61 -0
- package/assets/examples/10-api/package-integration-test.js +177 -0
- package/assets/examples/10-api/usage-example.js +323 -0
- package/assets/examples/10-api/usage-example.ts +363 -0
- package/assets/examples/10-api/workflow-test.js +113 -0
- package/assets/examples/manifests/01-simple-default-mappings.yaml +36 -0
- package/assets/examples/manifests/02-capability-mappings.yaml +55 -0
- package/assets/examples/manifests/03-hybrid-mappings.yaml +109 -0
- package/assets/examples/manifests/README.md +245 -0
- package/assets/examples/manifests/backend-only.yaml +43 -0
- package/assets/examples/manifests/blog-api.md +78 -0
- package/assets/examples/manifests/blog-api.specly +79 -0
- package/assets/examples/manifests/frontend-only.yaml +27 -0
- package/assets/examples/manifests/fullstack-app.yaml +44 -0
- package/assets/examples/manifests/fullstack-monorepo.yaml +62 -0
- package/assets/examples/validate-examples-with-expected-failures.cjs +328 -0
- package/assets/examples/validate-examples.cjs +225 -0
- package/assets/examples-decomposed/cloud-native-manifest.example.yaml +8 -0
- package/assets/examples-decomposed/cloud-native-manifest.md +379 -0
- package/assets/examples-decomposed/cloud-native-manifest.specly +60 -0
- package/assets/examples-decomposed/docker-compose-manifest.example.yaml +8 -0
- package/assets/examples-decomposed/docker-compose-manifest.md +326 -0
- package/assets/examples-decomposed/docker-compose-manifest.specly +40 -0
- package/assets/examples-decomposed/kubernetes-deployment-manifest.example.yaml +8 -0
- package/assets/examples-decomposed/kubernetes-deployment-manifest.md +237 -0
- package/assets/examples-decomposed/kubernetes-deployment-manifest.specly +41 -0
- package/assets/templates/README.md +559 -0
- package/assets/templates/TEMPLATE-ENHANCEMENTS-V33.md +462 -0
- package/assets/templates/backend-only/CLAUDE.md +73 -0
- package/assets/templates/backend-only/README.md +197 -0
- package/assets/templates/backend-only/deployments/README.md +149 -0
- package/assets/templates/backend-only/deployments/development.specly +53 -0
- package/assets/templates/backend-only/deployments/production.specly +87 -0
- package/assets/templates/backend-only/docs/README.md +50 -0
- package/assets/templates/backend-only/docs/api/README.md +7 -0
- package/assets/templates/backend-only/docs/diagrams/README.md +85 -0
- package/assets/templates/backend-only/docs/example-documentation-template.md +269 -0
- package/assets/templates/backend-only/docs/guides/README.md +15 -0
- package/assets/templates/backend-only/dot.env.example +18 -0
- package/assets/templates/backend-only/generated/README.md +56 -0
- package/assets/templates/backend-only/generated/code/integration-test.template.js +320 -0
- package/assets/templates/backend-only/generated/code/package.json.template +34 -0
- package/assets/templates/backend-only/generated/docs/README.md +49 -0
- package/assets/templates/backend-only/gitignore +54 -0
- package/assets/templates/backend-only/manifests/README.md +72 -0
- package/assets/templates/backend-only/manifests/docker-compose.specly +91 -0
- package/assets/templates/backend-only/manifests/implementation.yaml +100 -0
- package/assets/templates/backend-only/manifests/kubernetes.specly +140 -0
- package/assets/templates/backend-only/package.json +59 -0
- package/assets/templates/backend-only/scripts/test-all.sh +160 -0
- package/assets/templates/backend-only/scripts/test-generated-code.sh +165 -0
- package/assets/templates/backend-only/specs/main.specly +67 -0
- package/assets/templates/default/CLAUDE.md +141 -0
- package/assets/templates/default/README.md +404 -0
- package/assets/templates/default/deployments/README.md +149 -0
- package/assets/templates/default/deployments/development.specly +53 -0
- package/assets/templates/default/deployments/production.specly +87 -0
- package/assets/templates/default/docs/README.md +50 -0
- package/assets/templates/default/docs/api/README.md +7 -0
- package/assets/templates/default/docs/diagrams/README.md +85 -0
- package/assets/templates/default/docs/example-documentation-template.md +269 -0
- package/assets/templates/default/docs/guides/README.md +15 -0
- package/assets/templates/default/dot.env.example +18 -0
- package/assets/templates/default/generated/README.md +56 -0
- package/assets/templates/default/generated/code/integration-test.template.js +320 -0
- package/assets/templates/default/generated/code/package.json.template +34 -0
- package/assets/templates/default/generated/docs/README.md +49 -0
- package/assets/templates/default/gitignore +54 -0
- package/assets/templates/default/manifests/README.md +72 -0
- package/assets/templates/default/manifests/docker-compose.specly +91 -0
- package/assets/templates/default/manifests/implementation.yaml +176 -0
- package/assets/templates/default/manifests/kubernetes.specly +140 -0
- package/assets/templates/default/package.json +61 -0
- package/assets/templates/default/scripts/test-all.sh +160 -0
- package/assets/templates/default/scripts/test-generated-code.sh +165 -0
- package/assets/templates/default/specs/main.specly +67 -0
- package/assets/templates/frontend-only/CLAUDE.md +75 -0
- package/assets/templates/frontend-only/README.md +231 -0
- package/assets/templates/frontend-only/deployments/README.md +149 -0
- package/assets/templates/frontend-only/deployments/development.specly +53 -0
- package/assets/templates/frontend-only/deployments/production.specly +87 -0
- package/assets/templates/frontend-only/docs/README.md +50 -0
- package/assets/templates/frontend-only/docs/api/README.md +7 -0
- package/assets/templates/frontend-only/docs/diagrams/README.md +85 -0
- package/assets/templates/frontend-only/docs/example-documentation-template.md +269 -0
- package/assets/templates/frontend-only/docs/guides/README.md +15 -0
- package/assets/templates/frontend-only/dot.env.example +18 -0
- package/assets/templates/frontend-only/generated/README.md +56 -0
- package/assets/templates/frontend-only/generated/code/integration-test.template.js +320 -0
- package/assets/templates/frontend-only/generated/code/package.json.template +34 -0
- package/assets/templates/frontend-only/generated/docs/README.md +49 -0
- package/assets/templates/frontend-only/gitignore +54 -0
- package/assets/templates/frontend-only/manifests/README.md +72 -0
- package/assets/templates/frontend-only/manifests/docker-compose.specly +91 -0
- package/assets/templates/frontend-only/manifests/implementation.yaml +58 -0
- package/assets/templates/frontend-only/manifests/kubernetes.specly +140 -0
- package/assets/templates/frontend-only/package.json +59 -0
- package/assets/templates/frontend-only/scripts/test-all.sh +160 -0
- package/assets/templates/frontend-only/scripts/test-generated-code.sh +165 -0
- package/assets/templates/frontend-only/specs/main.specly +57 -0
- package/assets/templates/full-stack/AI-GUIDE.md +60 -0
- package/assets/templates/full-stack/CLAUDE.md +141 -0
- package/assets/templates/full-stack/README.md +382 -0
- package/assets/templates/full-stack/archive/AI-GUIDE-legacy.md +392 -0
- package/assets/templates/full-stack/deployments/README.md +149 -0
- package/assets/templates/full-stack/deployments/development.specly +53 -0
- package/assets/templates/full-stack/deployments/production.specly +87 -0
- package/assets/templates/full-stack/docs/README.md +51 -0
- package/assets/templates/full-stack/docs/api/README.md +7 -0
- package/assets/templates/full-stack/docs/diagrams/README.md +85 -0
- package/assets/templates/full-stack/docs/example-documentation-template.md +269 -0
- package/assets/templates/full-stack/docs/guides/README.md +15 -0
- package/assets/templates/full-stack/generated/README.md +56 -0
- package/assets/templates/full-stack/generated/code/integration-test.template.js +320 -0
- package/assets/templates/full-stack/generated/code/package.json.template +34 -0
- package/assets/templates/full-stack/generated/docs/README.md +49 -0
- package/assets/templates/full-stack/gitignore +54 -0
- package/assets/templates/full-stack/manifests/README.md +72 -0
- package/assets/templates/full-stack/manifests/docker-compose.specly +91 -0
- package/assets/templates/full-stack/manifests/implementation.yaml +155 -0
- package/assets/templates/full-stack/manifests/kubernetes.specly +140 -0
- package/assets/templates/full-stack/package.json +45 -0
- package/assets/templates/full-stack/scripts/test-all.sh +160 -0
- package/assets/templates/full-stack/scripts/test-generated-code.sh +165 -0
- package/assets/templates/full-stack/specs/example-v33.specly +297 -0
- package/assets/templates/full-stack/specs/main-simple.specly +73 -0
- package/assets/templates/full-stack/specs/main.specly +408 -0
- package/dist/engines/code-generator.d.ts +86 -0
- package/dist/engines/code-generator.d.ts.map +1 -0
- package/dist/engines/code-generator.js +159 -0
- package/dist/engines/code-generator.js.map +1 -0
- package/dist/engines/engine-registry.d.ts +94 -0
- package/dist/engines/engine-registry.d.ts.map +1 -0
- package/dist/engines/engine-registry.js +163 -0
- package/dist/engines/engine-registry.js.map +1 -0
- package/dist/engines/index.d.ts +10 -0
- package/dist/engines/index.d.ts.map +1 -0
- package/dist/engines/index.js +12 -0
- package/dist/engines/index.js.map +1 -0
- package/dist/engines/typescript-engine.d.ts +74 -0
- package/dist/engines/typescript-engine.d.ts.map +1 -0
- package/dist/engines/typescript-engine.js +288 -0
- package/dist/engines/typescript-engine.js.map +1 -0
- package/dist/generators/index.d.ts +11 -0
- package/dist/generators/index.d.ts.map +1 -0
- package/dist/generators/index.js +11 -0
- package/dist/generators/index.js.map +1 -0
- package/dist/index.d.ts +48 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +434 -0
- package/dist/index.js.map +1 -0
- package/dist/library/index.d.ts +12 -0
- package/dist/library/index.d.ts.map +1 -0
- package/dist/library/index.js +15 -0
- package/dist/library/index.js.map +1 -0
- package/dist/library/library.d.ts +132 -0
- package/dist/library/library.d.ts.map +1 -0
- package/dist/library/library.js +343 -0
- package/dist/library/library.js.map +1 -0
- package/dist/library/loader.d.ts +73 -0
- package/dist/library/loader.d.ts.map +1 -0
- package/dist/library/loader.js +150 -0
- package/dist/library/loader.js.map +1 -0
- package/dist/library/resolver.d.ts +104 -0
- package/dist/library/resolver.d.ts.map +1 -0
- package/dist/library/resolver.js +299 -0
- package/dist/library/resolver.js.map +1 -0
- package/dist/library/validator.d.ts +65 -0
- package/dist/library/validator.d.ts.map +1 -0
- package/dist/library/validator.js +203 -0
- package/dist/library/validator.js.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +7 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/instance-factory.d.ts +289 -0
- package/dist/types/instance-factory.d.ts.map +1 -0
- package/dist/types/instance-factory.js +8 -0
- package/dist/types/instance-factory.js.map +1 -0
- package/dist/types/unified-mappings.d.ts +163 -0
- package/dist/types/unified-mappings.d.ts.map +1 -0
- package/dist/types/unified-mappings.js +110 -0
- package/dist/types/unified-mappings.js.map +1 -0
- package/dist/utils/ai-spec-loader.d.ts +77 -0
- package/dist/utils/ai-spec-loader.d.ts.map +1 -0
- package/dist/utils/ai-spec-loader.js +138 -0
- package/dist/utils/ai-spec-loader.js.map +1 -0
- package/dist/utils/index.d.ts +9 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +9 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/manifest-loader.d.ts +107 -0
- package/dist/utils/manifest-loader.d.ts.map +1 -0
- package/dist/utils/manifest-loader.js +168 -0
- package/dist/utils/manifest-loader.js.map +1 -0
- package/dist/utils/mapping-migration.d.ts +53 -0
- package/dist/utils/mapping-migration.d.ts.map +1 -0
- package/dist/utils/mapping-migration.js +194 -0
- package/dist/utils/mapping-migration.js.map +1 -0
- package/libs/instance-factories/CURVED-INTERFACE.md +278 -0
- package/libs/instance-factories/README.md +433 -0
- package/libs/instance-factories/applications/generic-app.yaml +52 -0
- package/libs/instance-factories/applications/react-app.yaml +186 -0
- package/libs/instance-factories/applications/templates/generic/backend-env-generator.ts +31 -0
- package/libs/instance-factories/applications/templates/generic/backend-package-json-generator.ts +80 -0
- package/libs/instance-factories/applications/templates/generic/backend-tsconfig-generator.ts +69 -0
- package/libs/instance-factories/applications/templates/generic/main-generator.ts +308 -0
- package/libs/instance-factories/applications/templates/react/_view-components-source.ts +555 -0
- package/libs/instance-factories/applications/templates/react/api-client-generator.ts +436 -0
- package/libs/instance-factories/applications/templates/react/api-types-generator.ts +153 -0
- package/libs/instance-factories/applications/templates/react/app-tsx-generator.ts +94 -0
- package/libs/instance-factories/applications/templates/react/env-example-generator.ts +24 -0
- package/libs/instance-factories/applications/templates/react/field-helpers-generator.ts +106 -0
- package/libs/instance-factories/applications/templates/react/gitignore-generator.ts +38 -0
- package/libs/instance-factories/applications/templates/react/index-css-generator.ts +85 -0
- package/libs/instance-factories/applications/templates/react/index-html-generator.ts +30 -0
- package/libs/instance-factories/applications/templates/react/main-tsx-generator.ts +34 -0
- package/libs/instance-factories/applications/templates/react/package-json-generator.ts +54 -0
- package/libs/instance-factories/applications/templates/react/pattern-adapter-generator.ts +179 -0
- package/libs/instance-factories/applications/templates/react/react-pattern-adapter.tsx +1347 -0
- package/libs/instance-factories/applications/templates/react/relationship-field-generator.ts +150 -0
- package/libs/instance-factories/applications/templates/react/tailwind-adapter-generator.ts +704 -0
- package/libs/instance-factories/applications/templates/react/tailwind-adapter-wrapper-generator.ts +84 -0
- package/libs/instance-factories/applications/templates/react/tsconfig-generator.ts +35 -0
- package/libs/instance-factories/applications/templates/react/use-api-hooks-generator.ts +121 -0
- package/libs/instance-factories/applications/templates/react/view-dashboard-generator.ts +150 -0
- package/libs/instance-factories/applications/templates/react/view-detail-generator.ts +150 -0
- package/libs/instance-factories/applications/templates/react/view-form-generator.ts +362 -0
- package/libs/instance-factories/applications/templates/react/view-list-generator.ts +98 -0
- package/libs/instance-factories/applications/templates/react/view-router-generator.ts +89 -0
- package/libs/instance-factories/applications/templates/react/vite-config-generator.ts +49 -0
- package/libs/instance-factories/archived/fastify-prisma.yaml +104 -0
- package/libs/instance-factories/cli/commander-js.yaml +55 -0
- package/libs/instance-factories/cli/templates/commander/cli-entry-generator.d.ts +12 -0
- package/libs/instance-factories/cli/templates/commander/cli-entry-generator.d.ts.map +1 -0
- package/libs/instance-factories/cli/templates/commander/cli-entry-generator.js +115 -0
- package/libs/instance-factories/cli/templates/commander/cli-entry-generator.js.map +1 -0
- package/libs/instance-factories/cli/templates/commander/cli-entry-generator.ts +145 -0
- package/libs/instance-factories/cli/templates/commander/command-generator.d.ts +14 -0
- package/libs/instance-factories/cli/templates/commander/command-generator.d.ts.map +1 -0
- package/libs/instance-factories/cli/templates/commander/command-generator.js +182 -0
- package/libs/instance-factories/cli/templates/commander/command-generator.js.map +1 -0
- package/libs/instance-factories/cli/templates/commander/command-generator.ts +992 -0
- package/libs/instance-factories/communication/event-emitter.yaml +56 -0
- package/libs/instance-factories/communication/rabbitmq-events.yaml +87 -0
- package/libs/instance-factories/communication/templates/eventemitter/bus-generator.ts +93 -0
- package/libs/instance-factories/communication/templates/eventemitter/publisher-generator.ts +117 -0
- package/libs/instance-factories/communication/templates/eventemitter/subscriber-generator.ts +101 -0
- package/libs/instance-factories/controllers/fastify.yaml +127 -0
- package/libs/instance-factories/controllers/templates/fastify/meta-routes-generator.ts +103 -0
- package/libs/instance-factories/controllers/templates/fastify/routes-generator.ts +389 -0
- package/libs/instance-factories/controllers/templates/fastify/server-generator.ts +76 -0
- package/libs/instance-factories/infrastructure/docker-k8s.yaml +61 -0
- package/libs/instance-factories/infrastructure/templates/docker-k8s/infrastructure-generator.ts +46 -0
- package/libs/instance-factories/orms/prisma.yaml +89 -0
- package/libs/instance-factories/orms/templates/prisma/schema-generator.ts +563 -0
- package/libs/instance-factories/orms/templates/prisma/services-generator.ts +408 -0
- package/libs/instance-factories/scaffolding/generic-scaffold.yaml +65 -0
- package/libs/instance-factories/scaffolding/templates/generic/env-example-generator.ts +73 -0
- package/libs/instance-factories/scaffolding/templates/generic/env-generator.ts +85 -0
- package/libs/instance-factories/scaffolding/templates/generic/gitignore-generator.ts +69 -0
- package/libs/instance-factories/scaffolding/templates/generic/package-json-generator.ts +176 -0
- package/libs/instance-factories/scaffolding/templates/generic/readme-generator.ts +207 -0
- package/libs/instance-factories/scaffolding/templates/generic/tsconfig-generator.ts +78 -0
- package/libs/instance-factories/scaffolding/templates/generic/tsconfig-react-generator.ts +41 -0
- package/libs/instance-factories/sdks/python-sdk.yaml +66 -0
- package/libs/instance-factories/sdks/templates/python/sdk-generator.ts +50 -0
- package/libs/instance-factories/sdks/templates/typescript/sdk-generator.ts +49 -0
- package/libs/instance-factories/sdks/typescript-sdk.yaml +59 -0
- package/libs/instance-factories/services/prisma-services.yaml +71 -0
- package/libs/instance-factories/services/templates/prisma/behavior-generator.ts +303 -0
- package/libs/instance-factories/services/templates/prisma/controller-generator.ts +532 -0
- package/libs/instance-factories/services/templates/prisma/service-generator.ts +315 -0
- package/libs/instance-factories/shared/path-resolver.ts +111 -0
- package/libs/instance-factories/storage/mongodb.yaml +79 -0
- package/libs/instance-factories/storage/postgresql.yaml +75 -0
- package/libs/instance-factories/storage/redis.yaml +79 -0
- package/libs/instance-factories/storage/templates/mongodb/config-generator.ts +15 -0
- package/libs/instance-factories/storage/templates/mongodb/docker-generator.ts +18 -0
- package/libs/instance-factories/storage/templates/postgresql/config-generator.ts +54 -0
- package/libs/instance-factories/storage/templates/postgresql/docker-generator.ts +55 -0
- package/libs/instance-factories/storage/templates/redis/config-generator.ts +16 -0
- package/libs/instance-factories/storage/templates/redis/docker-generator.ts +18 -0
- package/libs/instance-factories/test-generation.ts +192 -0
- package/libs/instance-factories/testing/templates/vitest/tests-generator.ts +51 -0
- package/libs/instance-factories/testing/vitest-tests.yaml +63 -0
- package/libs/instance-factories/tools/templates/mcp/mcp-server-generator.ts +136 -0
- package/libs/instance-factories/tools/templates/mcp/static/docs/DEPLOYMENT_GUIDE.md +630 -0
- package/libs/instance-factories/tools/templates/mcp/static/docs/HYBRID_RESOURCE_SYSTEM.md +330 -0
- package/libs/instance-factories/tools/templates/mcp/static/docs/deployments/EXTENSION_DEPLOYMENT.md +552 -0
- package/libs/instance-factories/tools/templates/mcp/static/docs/deployments/LOCAL_DEPLOYMENT.md +164 -0
- package/libs/instance-factories/tools/templates/mcp/static/docs/deployments/WEB_DEPLOYMENT.md +247 -0
- package/libs/instance-factories/tools/templates/mcp/static/package.json +92 -0
- package/libs/instance-factories/tools/templates/mcp/static/scripts/build-enterprise.js +284 -0
- package/libs/instance-factories/tools/templates/mcp/static/scripts/build-extension.js +139 -0
- package/libs/instance-factories/tools/templates/mcp/static/scripts/build-local.js +74 -0
- package/libs/instance-factories/tools/templates/mcp/static/scripts/build-web.js +156 -0
- package/libs/instance-factories/tools/templates/mcp/static/scripts/copy-canonical-files.js +41 -0
- package/libs/instance-factories/tools/templates/mcp/static/scripts/test-deployments.js +259 -0
- package/libs/instance-factories/tools/templates/mcp/static/scripts/test-hybrid-resources.js +231 -0
- package/libs/instance-factories/tools/templates/mcp/static/scripts/test-hybrid-simple.js +196 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/controllers/MCPServerController.ts +293 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/events/EventEmitter.ts +90 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/index.ts +24 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/interfaces/ResourceProvider.ts +15 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/models/LibrarySuggestion.ts +106 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/models/SpecVerseResource.ts +75 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/server/mcp-server.ts +239 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/services/CLIProxyService.ts +1501 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/services/EmbeddedResourcesAdapter.ts +211 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/services/EntityModuleService.ts +308 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/services/HybridResourcesProvider.ts +210 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/services/LibraryToolsService.ts +356 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/services/OrchestratorBridge.ts +524 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/services/OrchestratorToolsService.ts +530 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/services/PromptToolsService.ts +594 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/services/ResourcesProviderService.ts +170 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/tests/unit/CLIProxyService.init.test.ts +544 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/tests/unit/CLIProxyService.test.ts +189 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/tests/unit/ResourcesProviderService.test.ts +89 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/types/index.ts +110 -0
- package/libs/instance-factories/tools/templates/mcp/static/tsconfig.json +28 -0
- package/libs/instance-factories/tools/templates/vscode/static/extension.ts +1195 -0
- package/libs/instance-factories/tools/templates/vscode/static/language-configuration.json +34 -0
- package/libs/instance-factories/tools/templates/vscode/static/schemas/specverse-v3-schema.json +4279 -0
- package/libs/instance-factories/tools/templates/vscode/static/syntaxes/specverse.tmLanguage.json +138 -0
- package/libs/instance-factories/tools/templates/vscode/static/themes/README.md +74 -0
- package/libs/instance-factories/tools/templates/vscode/static/themes/complete-specverse-colors.json +122 -0
- package/libs/instance-factories/tools/templates/vscode/static/themes/specverse-basic-theme.json +65 -0
- package/libs/instance-factories/tools/templates/vscode/static/themes/specverse-complete-theme.json +123 -0
- package/libs/instance-factories/tools/templates/vscode/static/themes/specverse-theme-colors.json +64 -0
- package/libs/instance-factories/tools/templates/vscode/vscode-extension-generator.ts +214 -0
- package/libs/instance-factories/validation/templates/zod/validation-generator.ts +46 -0
- package/libs/instance-factories/validation/zod.yaml +56 -0
- package/libs/instance-factories/views/index.d.ts +13 -0
- package/libs/instance-factories/views/index.d.ts.map +1 -0
- package/libs/instance-factories/views/index.js +18 -0
- package/libs/instance-factories/views/index.js.map +1 -0
- package/libs/instance-factories/views/index.ts +45 -0
- package/libs/instance-factories/views/react-components.yaml +129 -0
- package/libs/instance-factories/views/templates/ARCHITECTURE.md +198 -0
- package/libs/instance-factories/views/templates/react/adapters/antd-adapter.ts +869 -0
- package/libs/instance-factories/views/templates/react/adapters/mui-adapter.ts +953 -0
- package/libs/instance-factories/views/templates/react/adapters/shadcn-adapter.ts +806 -0
- package/libs/instance-factories/views/templates/react/app-generator.ts +55 -0
- package/libs/instance-factories/views/templates/react/components-generator.ts +391 -0
- package/libs/instance-factories/views/templates/react/forms-generator.ts +343 -0
- package/libs/instance-factories/views/templates/react/frontend-package-json-generator.ts +54 -0
- package/libs/instance-factories/views/templates/react/hooks-generator.ts +122 -0
- package/libs/instance-factories/views/templates/react/index-css-generator.ts +209 -0
- package/libs/instance-factories/views/templates/react/index-html-generator.ts +34 -0
- package/libs/instance-factories/views/templates/react/main-tsx-generator.ts +29 -0
- package/libs/instance-factories/views/templates/react/react-component-generator.d.ts +152 -0
- package/libs/instance-factories/views/templates/react/react-component-generator.d.ts.map +1 -0
- package/libs/instance-factories/views/templates/react/react-component-generator.js +398 -0
- package/libs/instance-factories/views/templates/react/react-component-generator.js.map +1 -0
- package/libs/instance-factories/views/templates/react/react-component-generator.ts +533 -0
- package/libs/instance-factories/views/templates/react/router-generator.ts +197 -0
- package/libs/instance-factories/views/templates/react/router-generic-generator.ts +103 -0
- package/libs/instance-factories/views/templates/react/spec-json-generator.ts +17 -0
- package/libs/instance-factories/views/templates/react/types-generator.ts +76 -0
- package/libs/instance-factories/views/templates/react/views-metadata-generator.ts +42 -0
- package/libs/instance-factories/views/templates/react/vite-config-generator.ts +38 -0
- package/libs/instance-factories/views/templates/runtime/runtime-view-renderer.d.ts.map +1 -0
- package/libs/instance-factories/views/templates/runtime/runtime-view-renderer.js.map +1 -0
- package/libs/instance-factories/views/templates/runtime/runtime-view-renderer.ts +474 -0
- package/libs/instance-factories/views/templates/shared/__tests__/composite-patterns.test.ts +242 -0
- package/libs/instance-factories/views/templates/shared/adapter-types.d.ts +77 -0
- package/libs/instance-factories/views/templates/shared/adapter-types.d.ts.map +1 -0
- package/libs/instance-factories/views/templates/shared/adapter-types.js +47 -0
- package/libs/instance-factories/views/templates/shared/adapter-types.js.map +1 -0
- package/libs/instance-factories/views/templates/shared/adapter-types.ts +142 -0
- package/libs/instance-factories/views/templates/shared/atomic-components-registry.d.ts +63 -0
- package/libs/instance-factories/views/templates/shared/atomic-components-registry.d.ts.map +1 -0
- package/libs/instance-factories/views/templates/shared/atomic-components-registry.js +822 -0
- package/libs/instance-factories/views/templates/shared/atomic-components-registry.js.map +1 -0
- package/libs/instance-factories/views/templates/shared/atomic-components-registry.ts +908 -0
- package/libs/instance-factories/views/templates/shared/base-generator.d.ts +247 -0
- package/libs/instance-factories/views/templates/shared/base-generator.d.ts.map +1 -0
- package/libs/instance-factories/views/templates/shared/base-generator.js +363 -0
- package/libs/instance-factories/views/templates/shared/base-generator.js.map +1 -0
- package/libs/instance-factories/views/templates/shared/base-generator.ts +608 -0
- package/libs/instance-factories/views/templates/shared/component-metadata.d.ts +254 -0
- package/libs/instance-factories/views/templates/shared/component-metadata.d.ts.map +1 -0
- package/libs/instance-factories/views/templates/shared/component-metadata.js +602 -0
- package/libs/instance-factories/views/templates/shared/component-metadata.js.map +1 -0
- package/libs/instance-factories/views/templates/shared/component-metadata.ts +803 -0
- package/libs/instance-factories/views/templates/shared/composite-pattern-types.ts +250 -0
- package/libs/instance-factories/views/templates/shared/composite-patterns.ts +535 -0
- package/libs/instance-factories/views/templates/shared/index.ts +68 -0
- package/libs/instance-factories/views/templates/shared/pattern-validator.ts +279 -0
- package/libs/instance-factories/views/templates/shared/property-mapper.d.ts +149 -0
- package/libs/instance-factories/views/templates/shared/property-mapper.d.ts.map +1 -0
- package/libs/instance-factories/views/templates/shared/property-mapper.js +580 -0
- package/libs/instance-factories/views/templates/shared/property-mapper.js.map +1 -0
- package/libs/instance-factories/views/templates/shared/property-mapper.ts +700 -0
- package/libs/instance-factories/views/templates/shared/syntax-mapper.d.ts +143 -0
- package/libs/instance-factories/views/templates/shared/syntax-mapper.d.ts.map +1 -0
- package/libs/instance-factories/views/templates/shared/syntax-mapper.js +420 -0
- package/libs/instance-factories/views/templates/shared/syntax-mapper.js.map +1 -0
- package/libs/instance-factories/views/templates/shared/syntax-mapper.ts +539 -0
- package/package.json +42 -0
- package/schema/SPECVERSE-SCHEMA.json +4274 -0
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
# Web Deployment Guide
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Web deployment is optimized for web-based LLM environments (Claude.ai, ChatGPT, etc.) where users cannot run local processes but need access to SpecVerse AI assistance via HTTP APIs.
|
|
6
|
+
|
|
7
|
+
## Features (Phase 3 Updated)
|
|
8
|
+
|
|
9
|
+
- ✅ **AI API Integration**: All tools powered by @specverse/lang AI API
|
|
10
|
+
- ✅ **Embedded Examples**: Essential examples bundled (~71KB total)
|
|
11
|
+
- ✅ **HTTP API**: RESTful endpoints for resource access
|
|
12
|
+
- ✅ **Serverless Ready**: Works on Vercel, Railway, Render
|
|
13
|
+
- ✅ **Zero Dependencies**: No file system access required
|
|
14
|
+
- ✅ **Fast Startup**: ~50ms startup time
|
|
15
|
+
- ✅ **Lightweight**: ~200KB deployment size (96KB smaller than before!)
|
|
16
|
+
- ✅ **CORS Support**: Web-browser compatible
|
|
17
|
+
|
|
18
|
+
## Quick Start
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# Build web deployment
|
|
22
|
+
npm run build:web
|
|
23
|
+
|
|
24
|
+
# Test locally
|
|
25
|
+
npm run start:web
|
|
26
|
+
|
|
27
|
+
# Deploy to Vercel (recommended)
|
|
28
|
+
npm run deploy:vercel
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
**Live Demo**: https://specverse-crezbwpnl-specverse.vercel.app
|
|
32
|
+
|
|
33
|
+
## Architecture
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
Web Browser (LLM Terminal)
|
|
37
|
+
↓ HTTP Requests
|
|
38
|
+
Cloud Platform (Vercel/Railway/Render)
|
|
39
|
+
↓
|
|
40
|
+
SpecVerse MCP Web Server
|
|
41
|
+
↓ AI API Integration
|
|
42
|
+
@specverse/lang AI API (Contextual Responses)
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Directory Structure (Phase 3 Optimized)
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
dist/web/
|
|
49
|
+
├── server/
|
|
50
|
+
│ └── mcp-server.js # HTTP server (entry point)
|
|
51
|
+
├── embedded-resources.js # Examples only (~71KB - was 167KB!)
|
|
52
|
+
├── deployment-manifest.json # Deployment metadata
|
|
53
|
+
├── config.json # Web configuration
|
|
54
|
+
├── controllers/ # Request handlers
|
|
55
|
+
├── services/ # AI-powered services
|
|
56
|
+
└── vercel.json # Vercel deployment config
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Available Endpoints
|
|
60
|
+
|
|
61
|
+
### Health Check
|
|
62
|
+
```bash
|
|
63
|
+
GET /health
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### MCP Resource Access
|
|
67
|
+
```bash
|
|
68
|
+
# List all resources
|
|
69
|
+
GET /mcp/resources
|
|
70
|
+
|
|
71
|
+
# Get specific resource
|
|
72
|
+
GET /mcp/resource/{uri}
|
|
73
|
+
|
|
74
|
+
# Example
|
|
75
|
+
GET /mcp/resource/specverse%3A%2F%2Fexamples%2Fchat-prompts
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Available Resources (Phase 3 Streamlined)
|
|
79
|
+
- `specverse://examples/chat-prompts` - Chat integration examples
|
|
80
|
+
- `specverse://examples/api-calls` - API integration examples
|
|
81
|
+
|
|
82
|
+
**Note**: Schemas and library information now provided through AI tools for better contextual responses.
|
|
83
|
+
|
|
84
|
+
## MCP Tools Available
|
|
85
|
+
|
|
86
|
+
All 8 AI-powered tools work in web deployment:
|
|
87
|
+
|
|
88
|
+
### Core AI Tools
|
|
89
|
+
1. `get_creation_prompt` - AI-powered creation prompts
|
|
90
|
+
2. `get_analysis_prompt` - AI-powered analysis prompts
|
|
91
|
+
3. `get_implementation_prompt` - AI-powered implementation prompts
|
|
92
|
+
4. `get_realization_prompt` - AI-powered realization prompts
|
|
93
|
+
5. `create_spec_prompt` - Alternative creation prompt name
|
|
94
|
+
6. `mcp_ai_enhance` - Enhanced prompts with library context ⭐ NEW
|
|
95
|
+
7. `mcp_library_suggest` - Intelligent library suggestions ⭐ NEW
|
|
96
|
+
8. `mcp_cost_estimate` - Cost estimates for operations ⭐ NEW
|
|
97
|
+
|
|
98
|
+
**Note**: Orchestrator tools are disabled in web deployment for security and performance.
|
|
99
|
+
|
|
100
|
+
## Deployment Platforms
|
|
101
|
+
|
|
102
|
+
### Vercel (Recommended)
|
|
103
|
+
|
|
104
|
+
1. **Setup**:
|
|
105
|
+
```bash
|
|
106
|
+
npm install -g vercel
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
2. **Deploy**:
|
|
110
|
+
```bash
|
|
111
|
+
# Build for web
|
|
112
|
+
npm run build:web
|
|
113
|
+
|
|
114
|
+
# Deploy to Vercel
|
|
115
|
+
cd dist/web && vercel
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
3. **Environment Variables**: None required (uses embedded resources)
|
|
119
|
+
|
|
120
|
+
### Railway
|
|
121
|
+
|
|
122
|
+
1. **Setup**: Connect GitHub repository to Railway
|
|
123
|
+
2. **Build Command**: `npm run build:web`
|
|
124
|
+
3. **Start Command**: `node dist/web/server/mcp-server.js --mode web`
|
|
125
|
+
|
|
126
|
+
### Render
|
|
127
|
+
|
|
128
|
+
1. **Setup**: Connect GitHub repository to Render
|
|
129
|
+
2. **Build Command**: `npm run build:web`
|
|
130
|
+
3. **Start Command**: `node dist/web/server/mcp-server.js --mode web --port $PORT`
|
|
131
|
+
|
|
132
|
+
## Configuration
|
|
133
|
+
|
|
134
|
+
### Web Config (dist/web/config.json)
|
|
135
|
+
```json
|
|
136
|
+
{
|
|
137
|
+
"mode": "web",
|
|
138
|
+
"features": {
|
|
139
|
+
"orchestrator": false,
|
|
140
|
+
"fileSystemResources": false,
|
|
141
|
+
"embeddedResources": true
|
|
142
|
+
},
|
|
143
|
+
"resourcesStrategy": "embedded",
|
|
144
|
+
"embeddedResourcesCount": 2,
|
|
145
|
+
"aiApiIntegration": true
|
|
146
|
+
}
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### Vercel Config (vercel.json)
|
|
150
|
+
```json
|
|
151
|
+
{
|
|
152
|
+
"version": 2,
|
|
153
|
+
"builds": [
|
|
154
|
+
{
|
|
155
|
+
"src": "dist/web/server/mcp-server.js",
|
|
156
|
+
"use": "@vercel/node"
|
|
157
|
+
}
|
|
158
|
+
],
|
|
159
|
+
"routes": [
|
|
160
|
+
{
|
|
161
|
+
"src": "/(.*)",
|
|
162
|
+
"dest": "dist/web/server/mcp-server.js"
|
|
163
|
+
}
|
|
164
|
+
]
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## Phase 3 Improvements
|
|
169
|
+
|
|
170
|
+
✅ **AI API Integration**: All responses are now contextual and intelligent
|
|
171
|
+
✅ **Smaller Package**: 96KB reduction (71KB vs 167KB previously)
|
|
172
|
+
✅ **Better Performance**: AI-generated responses vs static file serving
|
|
173
|
+
✅ **Simplified Architecture**: No need to serve schemas/prompts as resources
|
|
174
|
+
|
|
175
|
+
## Performance
|
|
176
|
+
|
|
177
|
+
- **Cold Start**: ~50ms (serverless)
|
|
178
|
+
- **Warm Response**: ~10ms (cached)
|
|
179
|
+
- **AI Tool Execution**: 200-2000ms (@specverse/lang API calls)
|
|
180
|
+
- **Resource Loading**: <1ms (embedded)
|
|
181
|
+
- **Memory Usage**: ~30MB
|
|
182
|
+
|
|
183
|
+
## Monitoring
|
|
184
|
+
|
|
185
|
+
### Health Endpoint Response
|
|
186
|
+
```json
|
|
187
|
+
{
|
|
188
|
+
"status": "healthy",
|
|
189
|
+
"version": "1.1.7",
|
|
190
|
+
"mode": "web",
|
|
191
|
+
"features": {
|
|
192
|
+
"orchestrator": false,
|
|
193
|
+
"embeddedResources": true
|
|
194
|
+
},
|
|
195
|
+
"resourcesCount": 2,
|
|
196
|
+
"uptime": "00:15:32",
|
|
197
|
+
"memoryUsage": {
|
|
198
|
+
"used": "28.5 MB",
|
|
199
|
+
"total": "512 MB"
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
## Integration Examples
|
|
205
|
+
|
|
206
|
+
### Web Browser LLM
|
|
207
|
+
```javascript
|
|
208
|
+
// Example: Fetch creation prompt
|
|
209
|
+
const response = await fetch('https://your-domain.com/mcp/resource/specverse%3A%2F%2Fexamples%2Fchat-prompts');
|
|
210
|
+
const examples = await response.text();
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### Curl Testing
|
|
214
|
+
```bash
|
|
215
|
+
# Health check
|
|
216
|
+
curl https://your-domain.com/health
|
|
217
|
+
|
|
218
|
+
# List resources
|
|
219
|
+
curl https://your-domain.com/mcp/resources
|
|
220
|
+
|
|
221
|
+
# Get chat examples
|
|
222
|
+
curl "https://your-domain.com/mcp/resource/specverse%3A%2F%2Fexamples%2Fchat-prompts"
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
## Troubleshooting
|
|
226
|
+
|
|
227
|
+
### Common Issues
|
|
228
|
+
|
|
229
|
+
1. **Build fails**: Ensure all dependencies installed with `npm install`
|
|
230
|
+
2. **404 errors**: Check route configuration in platform settings
|
|
231
|
+
3. **CORS errors**: Ensure CORS headers are enabled (default: yes)
|
|
232
|
+
4. **Slow AI responses**: Normal - AI API calls take 200-2000ms
|
|
233
|
+
|
|
234
|
+
### Debug Logs
|
|
235
|
+
|
|
236
|
+
```bash
|
|
237
|
+
# Local testing with verbose logging
|
|
238
|
+
npm run start:web -- --verbose
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
## Security
|
|
242
|
+
|
|
243
|
+
- ✅ **No file system access** - Uses embedded resources only
|
|
244
|
+
- ✅ **No sensitive data** - All resources are public examples
|
|
245
|
+
- ✅ **CORS enabled** - Web browser compatible
|
|
246
|
+
- ✅ **Rate limiting** - Built into AI API calls
|
|
247
|
+
- ⚠️ **No authentication** - Consider adding auth for production use
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@specverse/mcp",
|
|
3
|
+
"version": "3.5.2",
|
|
4
|
+
"description": "SpecVerse MCP Server - Universal AI assistance for all environments",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/server/mcp-server.js",
|
|
7
|
+
"types": "dist/server/mcp-server.d.ts",
|
|
8
|
+
"bin": {
|
|
9
|
+
"specverse-mcp": "dist/local/server/mcp-server.js"
|
|
10
|
+
},
|
|
11
|
+
"scripts": {
|
|
12
|
+
"build": "tsc",
|
|
13
|
+
"prebuild": "node scripts/copy-canonical-files.js",
|
|
14
|
+
"build:all": "npm run clean && npm run build:local && npm run build:web && npm run build:extension && npm run build:enterprise",
|
|
15
|
+
"build:local": "node scripts/build-local.js",
|
|
16
|
+
"build:web": "node scripts/build-web.js",
|
|
17
|
+
"build:extension": "node scripts/build-extension.js",
|
|
18
|
+
"build:enterprise": "node scripts/build-enterprise.js",
|
|
19
|
+
"dev": "tsc --watch",
|
|
20
|
+
"start": "node dist/server/mcp-server.js",
|
|
21
|
+
"start:local": "node dist/local/server/mcp-server.js --mode local",
|
|
22
|
+
"start:web": "node dist/web/server/mcp-server.js --mode remote --port 3000",
|
|
23
|
+
"start:enterprise": "node dist/enterprise/server/mcp-server.js --mode enterprise --port 3000",
|
|
24
|
+
"docker:build": "cd dist/enterprise && docker build -t specverse-mcp-enterprise .",
|
|
25
|
+
"docker:run": "docker run -p 3000:3000 specverse-mcp-enterprise",
|
|
26
|
+
"docker:compose": "cd dist/enterprise && docker-compose up -d",
|
|
27
|
+
"test": "vitest run",
|
|
28
|
+
"test:unit": "vitest src/tests/unit",
|
|
29
|
+
"test:integration": "vitest src/tests/integration",
|
|
30
|
+
"test:coverage": "vitest --coverage",
|
|
31
|
+
"lint": "eslint src/**/*.ts",
|
|
32
|
+
"lint:fix": "eslint src/**/*.ts --fix",
|
|
33
|
+
"clean": "rm -rf dist/",
|
|
34
|
+
"prepublishOnly": "npm run clean && npm run build:local"
|
|
35
|
+
},
|
|
36
|
+
"keywords": [
|
|
37
|
+
"mcp",
|
|
38
|
+
"model-context-protocol",
|
|
39
|
+
"specverse",
|
|
40
|
+
"ai-support",
|
|
41
|
+
"prompt-templates",
|
|
42
|
+
"clean-implementation"
|
|
43
|
+
],
|
|
44
|
+
"author": "SpecVerse Team",
|
|
45
|
+
"license": "MIT",
|
|
46
|
+
"dependencies": {
|
|
47
|
+
"@modelcontextprotocol/sdk": "^1.17.4",
|
|
48
|
+
"@specverse/lang": "^3.3.1",
|
|
49
|
+
"yaml": "^2.8.1",
|
|
50
|
+
"zod": "^3.25.76"
|
|
51
|
+
},
|
|
52
|
+
"peerDependencies": {
|
|
53
|
+
"@specverse/lang": "^3.2.0"
|
|
54
|
+
},
|
|
55
|
+
"devDependencies": {
|
|
56
|
+
"@types/node": "^20.19.11",
|
|
57
|
+
"@typescript-eslint/eslint-plugin": "^7.0.0",
|
|
58
|
+
"@typescript-eslint/parser": "^7.0.0",
|
|
59
|
+
"@vitest/coverage-v8": "^1.6.1",
|
|
60
|
+
"eslint": "^8.57.0",
|
|
61
|
+
"typescript": "^5.9.2",
|
|
62
|
+
"vitest": "^1.6.1"
|
|
63
|
+
},
|
|
64
|
+
"files": [
|
|
65
|
+
"dist/local/",
|
|
66
|
+
"resources/",
|
|
67
|
+
"README.md"
|
|
68
|
+
],
|
|
69
|
+
"repository": {
|
|
70
|
+
"type": "git",
|
|
71
|
+
"url": "https://github.com/specverse/specverse-lang.git",
|
|
72
|
+
"directory": "tools/specverse-mcp"
|
|
73
|
+
},
|
|
74
|
+
"engines": {
|
|
75
|
+
"node": ">=18.0.0"
|
|
76
|
+
},
|
|
77
|
+
"publishConfig": {
|
|
78
|
+
"access": "public"
|
|
79
|
+
},
|
|
80
|
+
"mcp": {
|
|
81
|
+
"server": {
|
|
82
|
+
"name": "specverse-ai-support-clean",
|
|
83
|
+
"version": "1.0.0",
|
|
84
|
+
"capabilities": {
|
|
85
|
+
"resources": true,
|
|
86
|
+
"tools": true,
|
|
87
|
+
"prompts": false,
|
|
88
|
+
"logging": true
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Build Script for Enterprise Deployment
|
|
4
|
+
* Builds containerized version with full capabilities and monitoring
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { execSync } from 'child_process';
|
|
8
|
+
import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'fs';
|
|
9
|
+
import { join, dirname } from 'path';
|
|
10
|
+
import { fileURLToPath } from 'url';
|
|
11
|
+
|
|
12
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
13
|
+
const rootDir = join(__dirname, '..');
|
|
14
|
+
|
|
15
|
+
const verbose = process.env.VERBOSE === 'true';
|
|
16
|
+
if (verbose) console.log('🔨 Building for ENTERPRISE deployment...');
|
|
17
|
+
|
|
18
|
+
// Clean and create directories
|
|
19
|
+
const distDir = join(rootDir, 'dist', 'enterprise');
|
|
20
|
+
if (!existsSync(distDir)) {
|
|
21
|
+
mkdirSync(distDir, { recursive: true });
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Build TypeScript
|
|
25
|
+
if (verbose) console.log('📦 Compiling TypeScript...');
|
|
26
|
+
execSync('npx tsc --outDir dist/enterprise', {
|
|
27
|
+
cwd: rootDir,
|
|
28
|
+
stdio: 'inherit'
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
// Copy resources
|
|
32
|
+
if (verbose) console.log('📁 Copying resources...');
|
|
33
|
+
const resourcesDir = join(rootDir, 'resources');
|
|
34
|
+
if (existsSync(resourcesDir)) {
|
|
35
|
+
execSync(`cp -r resources dist/enterprise/`, { cwd: rootDir, stdio: 'inherit' });
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Create Dockerfile
|
|
39
|
+
if (verbose) console.log('🐳 Creating Dockerfile...');
|
|
40
|
+
const dockerfile = `# Multi-stage build for Enterprise SpecVerse MCP Server
|
|
41
|
+
FROM node:18-alpine AS builder
|
|
42
|
+
|
|
43
|
+
WORKDIR /app
|
|
44
|
+
COPY package*.json ./
|
|
45
|
+
RUN npm ci --only=production
|
|
46
|
+
|
|
47
|
+
FROM node:18-alpine AS runtime
|
|
48
|
+
|
|
49
|
+
# Install system dependencies
|
|
50
|
+
RUN apk add --no-cache \
|
|
51
|
+
tini \
|
|
52
|
+
curl \
|
|
53
|
+
&& addgroup -g 1001 -S nodejs \
|
|
54
|
+
&& adduser -S specverse -u 1001
|
|
55
|
+
|
|
56
|
+
WORKDIR /app
|
|
57
|
+
|
|
58
|
+
# Copy built application
|
|
59
|
+
COPY --from=builder /app/node_modules ./node_modules
|
|
60
|
+
COPY --chown=specverse:nodejs dist/enterprise ./
|
|
61
|
+
COPY --chown=specverse:nodejs resources ./resources
|
|
62
|
+
|
|
63
|
+
# Create data and logs directories
|
|
64
|
+
RUN mkdir -p /app/data /app/logs \
|
|
65
|
+
&& chown -R specverse:nodejs /app/data /app/logs
|
|
66
|
+
|
|
67
|
+
# Health check
|
|
68
|
+
HEALTHCHECK --interval=30s --timeout=10s --start-period=30s --retries=3 \
|
|
69
|
+
CMD curl -f http://localhost:3000/health || exit 1
|
|
70
|
+
|
|
71
|
+
# Security settings
|
|
72
|
+
USER specverse
|
|
73
|
+
EXPOSE 3000
|
|
74
|
+
|
|
75
|
+
# Use tini for proper signal handling
|
|
76
|
+
ENTRYPOINT ["/sbin/tini", "--"]
|
|
77
|
+
CMD ["node", "server/mcp-server.js", "--mode", "enterprise", "--port", "3000"]
|
|
78
|
+
`;
|
|
79
|
+
|
|
80
|
+
writeFileSync(join(distDir, 'Dockerfile'), dockerfile);
|
|
81
|
+
|
|
82
|
+
// Create docker-compose.yml for full stack
|
|
83
|
+
const dockerCompose = `version: '3.8'
|
|
84
|
+
|
|
85
|
+
services:
|
|
86
|
+
specverse-mcp:
|
|
87
|
+
build: .
|
|
88
|
+
ports:
|
|
89
|
+
- "3000:3000"
|
|
90
|
+
environment:
|
|
91
|
+
- NODE_ENV=production
|
|
92
|
+
- MCP_MODE=enterprise
|
|
93
|
+
- RESOURCES_STRATEGY=hybrid
|
|
94
|
+
- PROMETHEUS_ENABLED=true
|
|
95
|
+
- LOG_LEVEL=info
|
|
96
|
+
volumes:
|
|
97
|
+
- specverse-data:/app/data
|
|
98
|
+
- specverse-logs:/app/logs
|
|
99
|
+
restart: unless-stopped
|
|
100
|
+
healthcheck:
|
|
101
|
+
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
|
|
102
|
+
interval: 30s
|
|
103
|
+
timeout: 10s
|
|
104
|
+
retries: 3
|
|
105
|
+
start_period: 30s
|
|
106
|
+
deploy:
|
|
107
|
+
resources:
|
|
108
|
+
limits:
|
|
109
|
+
memory: 512M
|
|
110
|
+
cpus: '1.0'
|
|
111
|
+
reservations:
|
|
112
|
+
memory: 256M
|
|
113
|
+
cpus: '0.5'
|
|
114
|
+
|
|
115
|
+
prometheus:
|
|
116
|
+
image: prom/prometheus:latest
|
|
117
|
+
ports:
|
|
118
|
+
- "9090:9090"
|
|
119
|
+
volumes:
|
|
120
|
+
- ./monitoring/prometheus.yml:/etc/prometheus/prometheus.yml
|
|
121
|
+
- prometheus-data:/prometheus
|
|
122
|
+
command:
|
|
123
|
+
- '--config.file=/etc/prometheus/prometheus.yml'
|
|
124
|
+
- '--storage.tsdb.path=/prometheus'
|
|
125
|
+
- '--web.console.libraries=/etc/prometheus/console_libraries'
|
|
126
|
+
- '--web.console.templates=/etc/prometheus/consoles'
|
|
127
|
+
- '--storage.tsdb.retention.time=15d'
|
|
128
|
+
- '--web.enable-lifecycle'
|
|
129
|
+
restart: unless-stopped
|
|
130
|
+
|
|
131
|
+
grafana:
|
|
132
|
+
image: grafana/grafana:latest
|
|
133
|
+
ports:
|
|
134
|
+
- "3001:3000"
|
|
135
|
+
environment:
|
|
136
|
+
- GF_SECURITY_ADMIN_PASSWORD=specverse
|
|
137
|
+
volumes:
|
|
138
|
+
- grafana-data:/var/lib/grafana
|
|
139
|
+
- ./monitoring/grafana/dashboards:/etc/grafana/provisioning/dashboards
|
|
140
|
+
- ./monitoring/grafana/datasources:/etc/grafana/provisioning/datasources
|
|
141
|
+
restart: unless-stopped
|
|
142
|
+
|
|
143
|
+
volumes:
|
|
144
|
+
specverse-data:
|
|
145
|
+
specverse-logs:
|
|
146
|
+
prometheus-data:
|
|
147
|
+
grafana-data:
|
|
148
|
+
|
|
149
|
+
networks:
|
|
150
|
+
default:
|
|
151
|
+
name: specverse-network
|
|
152
|
+
`;
|
|
153
|
+
|
|
154
|
+
writeFileSync(join(distDir, 'docker-compose.yml'), dockerCompose);
|
|
155
|
+
|
|
156
|
+
// Create monitoring configuration
|
|
157
|
+
if (verbose) console.log('📊 Creating monitoring configuration...');
|
|
158
|
+
const monitoringDir = join(distDir, 'monitoring');
|
|
159
|
+
mkdirSync(monitoringDir, { recursive: true });
|
|
160
|
+
|
|
161
|
+
const prometheusConfig = `global:
|
|
162
|
+
scrape_interval: 15s
|
|
163
|
+
evaluation_interval: 15s
|
|
164
|
+
|
|
165
|
+
rule_files:
|
|
166
|
+
- "rules/*.yml"
|
|
167
|
+
|
|
168
|
+
scrape_configs:
|
|
169
|
+
- job_name: 'specverse-mcp'
|
|
170
|
+
static_configs:
|
|
171
|
+
- targets: ['specverse-mcp:3000']
|
|
172
|
+
scrape_interval: 10s
|
|
173
|
+
metrics_path: '/metrics'
|
|
174
|
+
|
|
175
|
+
- job_name: 'node-exporter'
|
|
176
|
+
static_configs:
|
|
177
|
+
- targets: ['node-exporter:9100']
|
|
178
|
+
`;
|
|
179
|
+
|
|
180
|
+
writeFileSync(join(monitoringDir, 'prometheus.yml'), prometheusConfig);
|
|
181
|
+
|
|
182
|
+
// Create enterprise-specific configuration
|
|
183
|
+
if (verbose) console.log('⚙️ Creating enterprise configuration...');
|
|
184
|
+
const enterpriseConfig = `{
|
|
185
|
+
"mode": "enterprise",
|
|
186
|
+
"features": {
|
|
187
|
+
"orchestrator": true,
|
|
188
|
+
"fileSystemResources": true,
|
|
189
|
+
"embeddedResources": true,
|
|
190
|
+
"monitoring": true,
|
|
191
|
+
"clustering": true,
|
|
192
|
+
"healthCheck": true
|
|
193
|
+
},
|
|
194
|
+
"resourcesPath": "./resources",
|
|
195
|
+
"monitoring": {
|
|
196
|
+
"prometheus": {
|
|
197
|
+
"enabled": true,
|
|
198
|
+
"port": 9090,
|
|
199
|
+
"endpoint": "/metrics"
|
|
200
|
+
},
|
|
201
|
+
"healthCheck": {
|
|
202
|
+
"enabled": true,
|
|
203
|
+
"endpoint": "/health",
|
|
204
|
+
"interval": 30
|
|
205
|
+
}
|
|
206
|
+
},
|
|
207
|
+
"clustering": {
|
|
208
|
+
"enabled": false,
|
|
209
|
+
"nodes": 1,
|
|
210
|
+
"loadBalancer": "round-robin"
|
|
211
|
+
},
|
|
212
|
+
"security": {
|
|
213
|
+
"cors": {
|
|
214
|
+
"enabled": true,
|
|
215
|
+
"origins": ["https://*.enterprise.com"]
|
|
216
|
+
},
|
|
217
|
+
"rateLimit": {
|
|
218
|
+
"enabled": true,
|
|
219
|
+
"windowMs": 60000,
|
|
220
|
+
"maxRequests": 1000
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}`;
|
|
224
|
+
|
|
225
|
+
writeFileSync(join(distDir, 'config.json'), enterpriseConfig);
|
|
226
|
+
|
|
227
|
+
// Create deployment documentation
|
|
228
|
+
const deploymentDocs = `# Enterprise Deployment Guide
|
|
229
|
+
|
|
230
|
+
## Quick Start
|
|
231
|
+
|
|
232
|
+
1. Build the container:
|
|
233
|
+
\`\`\`bash
|
|
234
|
+
docker build -t specverse-mcp-enterprise .
|
|
235
|
+
\`\`\`
|
|
236
|
+
|
|
237
|
+
2. Start the full stack:
|
|
238
|
+
\`\`\`bash
|
|
239
|
+
docker-compose up -d
|
|
240
|
+
\`\`\`
|
|
241
|
+
|
|
242
|
+
3. Access services:
|
|
243
|
+
- MCP Server: http://localhost:3000
|
|
244
|
+
- Prometheus: http://localhost:9090
|
|
245
|
+
- Grafana: http://localhost:3001 (admin/specverse)
|
|
246
|
+
|
|
247
|
+
## Configuration
|
|
248
|
+
|
|
249
|
+
Enterprise configuration supports:
|
|
250
|
+
- Multi-node clustering
|
|
251
|
+
- Prometheus metrics
|
|
252
|
+
- Health checks
|
|
253
|
+
- CORS and rate limiting
|
|
254
|
+
- Volume persistence
|
|
255
|
+
|
|
256
|
+
## Monitoring
|
|
257
|
+
|
|
258
|
+
- Prometheus metrics at /metrics
|
|
259
|
+
- Health check at /health
|
|
260
|
+
- Grafana dashboards pre-configured
|
|
261
|
+
- Alert rules for service availability
|
|
262
|
+
|
|
263
|
+
## Security
|
|
264
|
+
|
|
265
|
+
- Runs as non-root user
|
|
266
|
+
- Resource limits configured
|
|
267
|
+
- Security contexts applied
|
|
268
|
+
- Network policies supported
|
|
269
|
+
|
|
270
|
+
## Scaling
|
|
271
|
+
|
|
272
|
+
Use Docker Swarm or Kubernetes for production scaling:
|
|
273
|
+
\`\`\`bash
|
|
274
|
+
docker service create --replicas 3 specverse-mcp-enterprise
|
|
275
|
+
\`\`\`
|
|
276
|
+
`;
|
|
277
|
+
|
|
278
|
+
writeFileSync(join(distDir, 'README.md'), deploymentDocs);
|
|
279
|
+
|
|
280
|
+
if (verbose) console.log('✅ Enterprise build complete!');
|
|
281
|
+
if (verbose) console.log('📍 Output: dist/enterprise/');
|
|
282
|
+
if (verbose) console.log('🐳 Docker configuration ready');
|
|
283
|
+
if (verbose) console.log('📊 Monitoring stack included');
|
|
284
|
+
if (verbose) console.log('🚀 Deploy with: docker-compose up -d');
|