@eventcatalog/core 5.0.0-beta.9 → 5.0.1
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/LICENSE +13 -12
- package/README.md +5 -5
- package/dist/analytics/analytics.cjs +1 -1
- package/dist/analytics/analytics.js +2 -2
- package/dist/analytics/log-build.cjs +91 -44
- package/dist/analytics/log-build.d.cts +2 -2
- package/dist/analytics/log-build.d.ts +2 -2
- package/dist/analytics/log-build.js +6 -5
- package/dist/analytics/studio-usage.cjs +90 -0
- package/dist/analytics/studio-usage.d.cts +5 -0
- package/dist/analytics/studio-usage.d.ts +5 -0
- package/dist/analytics/studio-usage.js +10 -0
- package/dist/catalog-runtime.cjs +1 -1
- package/dist/{chunk-ZEY2XUJN.js → chunk-46TBJZC3.js} +1 -1
- package/dist/{chunk-RFIXKATC.js → chunk-4G7FSRPN.js} +35 -42
- package/dist/{chunk-AWOO63ME.js → chunk-AD7CL772.js} +11 -4
- package/dist/chunk-CA6WCQ2T.js +54 -0
- package/dist/{chunk-GAHKCOQM.js → chunk-DVHJTQWQ.js} +1 -1
- package/dist/{chunk-TZVDMWQX.js → chunk-HFR5OPHV.js} +4 -2
- package/dist/{chunk-4CFZUHGG.js → chunk-KTXSCPEK.js} +1 -1
- package/dist/{chunk-ENAG6UH7.js → chunk-NKNOXQ62.js} +1 -6
- package/dist/{chunk-36RYTYT5.js → chunk-PD7KTSYN.js} +1 -1
- package/dist/chunk-S5GWAUG5.js +29 -0
- package/dist/{chunk-EUNQJO3J.js → chunk-UWAXRTAJ.js} +1 -1
- package/dist/{chunk-JQMYHZWI.js → chunk-YPWK5ITM.js} +15 -7
- package/dist/constants.cjs +1 -1
- package/dist/constants.js +1 -1
- package/dist/docs/api/02-config.md +57 -7
- package/dist/docs/development/00-why-eventcatalog.md +11 -11
- package/dist/docs/development/01-fundamentals.md +20 -13
- package/dist/docs/development/01-getting-started/configuration-overview.md +2 -2
- package/dist/docs/development/01-getting-started/installation.md +9 -1
- package/dist/docs/development/_getting-started.mdx +1 -1
- package/dist/docs/development/ask-your-architecture/01-intro.md +5 -5
- package/dist/docs/development/ask-your-architecture/02-eventcatalog-assistant/01-what-is-eventcatalog-assistant.md +0 -4
- package/dist/docs/development/ask-your-architecture/02-eventcatalog-assistant/02-configuration.md +15 -3
- package/dist/docs/development/ask-your-architecture/02-eventcatalog-assistant/03-bring-your-own-tools.md +0 -3
- package/dist/docs/development/ask-your-architecture/02-eventcatalog-assistant/_category_.json +1 -1
- package/dist/docs/development/ask-your-architecture/02-llms.txt.md +1 -1
- package/dist/docs/development/ask-your-architecture/{05-skills/01-introduction.md → 03-install-skills.md} +57 -7
- package/dist/docs/development/ask-your-architecture/03-mcp-server/_category_.json +1 -1
- package/dist/docs/development/ask-your-architecture/03-mcp-server/getting-started.md +86 -33
- package/dist/docs/development/ask-your-architecture/03-mcp-server/introduction.md +14 -4
- package/dist/docs/development/ask-your-architecture/03-schemas.txt.md +1 -1
- package/dist/docs/development/ask-your-architecture/04-agents/_category_.json +1 -1
- package/dist/docs/development/authentication/01-introduction.md +2 -23
- package/dist/docs/development/authentication/02-enabling-authentication.md +0 -20
- package/dist/docs/development/authentication/07-rbac-middleware.md +0 -2
- package/dist/docs/development/authentication/providers/03-setting-up-github.md +0 -2
- package/dist/docs/development/authentication/providers/03a-setting-up-google.md +0 -2
- package/dist/docs/development/authentication/providers/04-setting-up-azure-ad.md +0 -2
- package/dist/docs/development/authentication/providers/05-setting-up-okta.md +0 -3
- package/dist/docs/development/authentication/providers/06-setting-up-auth0.md +0 -2
- package/dist/docs/development/bring-your-own-documentation/01-introduction.md +0 -4
- package/dist/docs/development/bring-your-own-documentation/custom-pages/01-introduction.md +0 -3
- package/dist/docs/development/bring-your-own-documentation/custom-pages/02-adding-custom-docs.md +0 -17
- package/dist/docs/development/bring-your-own-documentation/custom-pages/03-components.md +0 -4
- package/dist/docs/development/bring-your-own-documentation/custom-pages/04-owners.md +0 -2
- package/dist/docs/development/bring-your-own-documentation/resource-docs/01-introduction.md +1 -3
- package/dist/docs/development/bring-your-own-documentation/resource-docs/02-adding-resource-docs.md +1 -4
- package/dist/docs/development/bring-your-own-documentation/resource-docs/03-categories.md +0 -2
- package/dist/docs/development/bring-your-own-documentation/resource-docs/04-versioning.md +1 -3
- package/dist/docs/development/components/components/11-flow.md +17 -0
- package/dist/docs/development/components/components/15-nodegraph.md +43 -10
- package/dist/docs/development/components/components/18-remote-schema.md +1 -4
- package/dist/docs/development/components/custom-components/07-reference.md +14 -0
- package/dist/docs/development/customization/02-themes.md +0 -5
- package/dist/docs/development/customization/03-search.md +1 -1
- package/dist/docs/development/customization/05-custom-pages-and-api-routes/01-introduction.md +0 -2
- package/dist/docs/development/customization/05-custom-pages-and-api-routes/04-reference.md +7 -1
- package/dist/docs/development/customization/05-resource-sidebar.md +1 -1
- package/dist/docs/development/customization/09-embed-eventcatalog.md +20 -25
- package/dist/docs/development/deployment/hosting-options.md +7 -2
- package/dist/docs/development/developer-tools/eventcatalog-linter/how-to/05-fix-common-problems.md +16 -0
- package/dist/docs/development/developer-tools/eventcatalog-linter/reference/03-rules.md +31 -1
- package/dist/docs/development/developer-tools/eventcatalog-linter/reference/05-supported-resources.md +1 -1
- package/dist/docs/development/governance/architecture-change-detection/01-introduction.md +0 -10
- package/dist/docs/development/governance/architecture-change-detection/06-pipeline-gates.md +0 -4
- package/dist/docs/development/guides/97-architecture-graph.md +1 -1
- package/dist/docs/development/guides/99-adding-analytics.md +0 -7
- package/dist/docs/development/guides/domains/03-model-subdomains.md +2 -2
- package/dist/docs/development/guides/domains/04-add-resources-to-domains/01-add-systems-to-domains.md +3 -1
- package/dist/docs/development/guides/domains/04-add-resources-to-domains/02-add-services-to-domains.md +5 -1
- package/dist/docs/development/guides/domains/04-add-resources-to-domains/03-add-messages-to-domains.md +2 -2
- package/dist/docs/development/guides/domains/04-add-resources-to-domains/05-add-entities-to-domains.md +1 -1
- package/dist/docs/development/guides/domains/04-add-resources-to-domains/06-domain-resources-page.md +40 -0
- package/dist/docs/development/guides/domains/06-visualize-domains/01-domain-diagram.md +89 -0
- package/dist/docs/development/guides/domains/06-visualize-domains/_category_.json +1 -2
- package/dist/docs/development/guides/domains/09-reference.md +4 -4
- package/dist/docs/development/guides/owners/automated-teams-and-users/create-your-own-connector.md +0 -2
- package/dist/docs/development/guides/owners/automated-teams-and-users/sync-from-github.md +0 -3
- package/dist/docs/development/guides/owners/automated-teams-and-users/sync-from-microsoft-entra.md +0 -2
- package/dist/docs/development/guides/resources/adrs/03-linking-resources.md +8 -0
- package/dist/docs/development/guides/resources/adrs/06-reference.md +4 -4
- package/dist/docs/development/guides/resources/agents/11-reference.md +1 -1
- package/dist/docs/development/guides/resources/data/04-reference.md +1 -1
- package/dist/docs/development/guides/resources/data-products/07-reference.md +1 -1
- package/dist/docs/development/guides/resources/entities/05-entity-maps.md +1 -1
- package/dist/docs/development/guides/resources/entities/06-reference.md +2 -2
- package/dist/docs/development/guides/resources/flows/01-introduction.md +11 -1
- package/dist/docs/development/guides/resources/flows/03-model-flow-steps.md +65 -6
- package/dist/docs/development/guides/resources/flows/05-explore-flows.md +112 -0
- package/dist/docs/development/guides/resources/flows/06-reference.md +25 -4
- package/dist/docs/development/guides/resources/messages/01-what-are-messages.md +19 -0
- package/dist/docs/development/guides/resources/messages/04-message-channels/01-introduction.md +16 -0
- package/dist/docs/development/guides/resources/messages/04-message-channels/05-reference.md +2 -1
- package/dist/docs/development/guides/resources/messages/10-reference.md +6 -3
- package/dist/docs/development/guides/resources/schemas/04-explore-schemas/01-schema-explorer.md +2 -2
- package/dist/docs/development/guides/resources/schemas/04-explore-schemas/02-fields-explorer.md +0 -9
- package/dist/docs/development/guides/resources/schemas/05-schema-api.md +0 -3
- package/dist/docs/development/guides/resources/schemas/06-schema-mcp.md +11 -3
- package/dist/docs/development/guides/resources/services/04-add-resources-to-services/03-add-entities-to-services.md +1 -1
- package/dist/docs/development/guides/resources/services/05-resources-page.md +50 -0
- package/dist/docs/development/guides/resources/services/08-reference.md +2 -1
- package/dist/docs/development/guides/systems/01-introduction.md +1 -1
- package/dist/docs/development/guides/systems/02-create-system.md +2 -2
- package/dist/docs/development/guides/systems/03-add-resources-to-systems.md +35 -9
- package/dist/docs/development/guides/systems/04-model-relationships-and-actors.md +5 -3
- package/dist/docs/development/guides/systems/05-system-context-maps.md +39 -22
- package/dist/docs/development/guides/systems/06-reference.md +4 -4
- package/dist/docs/development/license/01-license-file.md +151 -0
- package/dist/docs/development/license/_category_.json +12 -0
- package/dist/docs/development/license-keys/_category_.json +3 -3
- package/dist/docs/development/license-keys/integrations.md +7 -37
- package/dist/docs/development/license-keys/license-validation.md +4 -0
- package/dist/docs/development/license-keys/overview.md +5 -1
- package/dist/docs/development/license-keys/plans.md +4 -2
- package/dist/docs/development/studio/01-introduction.md +60 -0
- package/dist/docs/development/studio/02-create-a-canvas.md +103 -0
- package/dist/docs/development/studio/03-set-up-persistent-storage.md +59 -0
- package/dist/docs/development/studio/04-collaborate-on-a-canvas.md +78 -0
- package/dist/docs/development/studio/05-connect-your-agent.md +102 -0
- package/dist/docs/development/studio/06-run-studio-in-production.md +54 -0
- package/dist/docs/development/studio/07-reference.md +294 -0
- package/dist/docs/development/studio/_category_.json +12 -0
- package/dist/docs/development/upgrading/v5.md +345 -0
- package/dist/docs/federation/00-overview.md +2 -8
- package/dist/docs/federation/01-first-federation.md +6 -18
- package/dist/docs/federation/explanation/how-it-works.md +0 -4
- package/dist/docs/federation/explanation/lockfile-and-cache.md +0 -4
- package/dist/docs/federation/explanation/mvp-status-and-feedback.md +0 -4
- package/dist/docs/federation/explanation/ownership-and-references.md +0 -4
- package/dist/docs/federation/how-to/configure-github-sources.md +6 -5
- package/dist/docs/federation/how-to/configure-validation-rules.md +0 -4
- package/dist/docs/federation/how-to/run-in-ci.md +2 -9
- package/dist/docs/federation/how-to/share-assets-and-components.md +0 -4
- package/dist/docs/federation/how-to/use-local-sources.md +0 -4
- package/dist/docs/federation/legacy-federation/00-introduction.md +4 -22
- package/dist/docs/federation/legacy-federation/01-installation.md +7 -58
- package/dist/docs/federation/legacy-federation/02-plugin-configuration.md +3 -21
- package/dist/docs/federation/legacy-federation/03-examples.md +3 -5
- package/dist/docs/federation/legacy-federation/04-configuration.md +3 -8
- package/dist/docs/federation/legacy-federation/05-setup-team-catalog.md +3 -6
- package/dist/docs/federation/reference/cli.md +2 -8
- package/dist/docs/federation/reference/configuration.md +0 -4
- package/dist/docs/federation/reference/diagnostic-rules.md +0 -5
- package/dist/docs/federation/reference/generated-output.md +0 -4
- package/dist/docs/federation/reference/supported-content.md +0 -4
- package/dist/docs/federation/reference/troubleshooting.md +0 -14
- package/dist/docs/plugins/02-generators.md +1 -1
- package/dist/docs/plugins/amazon-apigateway/00-intro.md +3 -28
- package/dist/docs/plugins/amazon-apigateway/01-installation.md +4 -56
- package/dist/docs/plugins/amazon-apigateway/02-plugin-configuration.md +1 -6
- package/dist/docs/plugins/apicurio/00-intro.md +2 -31
- package/dist/docs/plugins/apicurio/01-installation.md +2 -26
- package/dist/docs/plugins/apicurio/02-plugin-configuration.md +5 -13
- package/dist/docs/plugins/apicurio/03-features.md +1 -3
- package/dist/docs/plugins/asyncapi/00-intro.md +2 -28
- package/dist/docs/plugins/asyncapi/01-installation.md +3 -54
- package/dist/docs/plugins/asyncapi/02-plugin-configuration.md +2 -1
- package/dist/docs/plugins/aws-glue-registry/00-intro.md +4 -32
- package/dist/docs/plugins/aws-glue-registry/00a-installation.md +3 -53
- package/dist/docs/plugins/azure-schema-registry/00-intro.md +4 -32
- package/dist/docs/plugins/azure-schema-registry/01-installation.md +6 -33
- package/dist/docs/plugins/azure-schema-registry/02-plugin-configuration.md +1 -14
- package/dist/docs/plugins/azure-schema-registry/04-examples.md +0 -2
- package/dist/docs/plugins/backstage/00-overview.md +1 -7
- package/dist/docs/plugins/backstage/01-get-started.md +6 -15
- package/dist/docs/plugins/backstage/06-configuration.md +2 -8
- package/dist/docs/plugins/confluent-schema-registry/00-intro.md +2 -29
- package/dist/docs/plugins/confluent-schema-registry/01-installation.md +2 -26
- package/dist/docs/plugins/eventbridge/00-intro.md +0 -4
- package/dist/docs/plugins/eventbridge/00a-installation.md +1 -87
- package/dist/docs/plugins/eventbridge/03-api.md +2 -20
- package/dist/docs/plugins/github/00-intro.md +0 -31
- package/dist/docs/plugins/github/01-installation.md +2 -34
- package/dist/docs/plugins/graphql/00-intro.md +0 -30
- package/dist/docs/plugins/graphql/01-installation.md +1 -53
- package/dist/docs/plugins/graphql/02-plugin-configuration.md +0 -1
- package/dist/docs/plugins/hookdeck/01-intro.md +1 -1
- package/dist/docs/plugins/openapi/00-intro.md +0 -30
- package/dist/docs/plugins/openapi/01-installation.md +1 -57
- package/dist/docs/plugins/openapi/02-plugin-configuration.md +0 -5
- package/dist/docs/plugins/openapi/03-features.md +0 -4
- package/dist/eventcatalog-config-file-utils.cjs +34 -41
- package/dist/eventcatalog-config-file-utils.d.cts +56 -58
- package/dist/eventcatalog-config-file-utils.d.ts +56 -58
- package/dist/eventcatalog-config-file-utils.js +1 -1
- package/dist/eventcatalog.cjs +340 -249
- package/dist/eventcatalog.config.d.cts +18 -15
- package/dist/eventcatalog.config.d.ts +18 -15
- package/dist/eventcatalog.js +46 -28
- package/dist/features.cjs +36 -49
- package/dist/features.d.cts +1 -3
- package/dist/features.d.ts +1 -3
- package/dist/features.js +4 -6
- package/dist/federation/federate.cjs +37 -44
- package/dist/federation/federate.js +2 -2
- package/dist/generate.cjs +37 -42
- package/dist/generate.js +4 -4
- package/dist/resolve-catalog-dependencies.cjs +34 -41
- package/dist/resolve-catalog-dependencies.js +2 -2
- package/dist/runtime-dependencies/@eventcatalog__visualiser__studio-fonts.css.mjs +3 -0
- package/dist/runtime-dependencies/@eventcatalog__visualiser__studio.css.mjs +3 -0
- package/dist/runtime-dependencies/@eventcatalog__visualiser__studio.mjs +3 -0
- package/dist/runtime-dependencies/htmlparser2.mjs +3 -0
- package/dist/runtime-dependencies/manifest.json +5 -1
- package/dist/runtime-dependencies/react-syntax-highlighter__dist__cjs__create-element.js.mjs +3 -0
- package/dist/utils/child-process-signals.cjs +53 -0
- package/dist/utils/child-process-signals.d.cts +19 -0
- package/dist/utils/child-process-signals.d.ts +19 -0
- package/dist/utils/child-process-signals.js +6 -0
- package/dist/utils/cli-logger.cjs +1 -1
- package/dist/utils/cli-logger.js +2 -2
- package/dist/utils/license-status.cjs +11 -4
- package/dist/utils/license-status.d.cts +3 -2
- package/dist/utils/license-status.d.ts +3 -2
- package/dist/utils/license-status.js +1 -1
- package/eventcatalog/astro.config.mjs +21 -1
- package/eventcatalog/integrations/config-loader.mjs +56 -58
- package/eventcatalog/integrations/skip-startup-reload.mjs +31 -0
- package/eventcatalog/integrations/stable-dependency-order.mjs +29 -0
- package/eventcatalog/integrations/storage.mjs +20 -0
- package/eventcatalog/integrations/studio-server.mjs +4 -1
- package/eventcatalog/src/components/CatalogGraph/CatalogForceGraph.tsx +39 -0
- package/eventcatalog/src/components/ChatPanel/ChatPanel.tsx +2 -0
- package/eventcatalog/src/components/Homepage/CatalogDashboard.astro +342 -0
- package/eventcatalog/src/components/MDX/NodeGraph/AstroNodeGraph.tsx +60 -4
- package/eventcatalog/src/components/MDX/NodeGraph/NodeGraph.astro +5 -1
- package/eventcatalog/src/components/NavigationProgress.astro +7 -0
- package/eventcatalog/src/components/SchemaExplorer/ApiContentViewer.tsx +2 -0
- package/eventcatalog/src/components/SchemaExplorer/ExamplesViewer.tsx +2 -0
- package/eventcatalog/src/components/SchemaExplorer/SchemaCodeModal.tsx +2 -0
- package/eventcatalog/src/components/SchemaExplorer/SchemaContentViewer.tsx +2 -0
- package/eventcatalog/src/components/Search/SearchDataLoader.astro +16 -28
- package/eventcatalog/src/components/Search/SearchModal.tsx +2 -10
- package/eventcatalog/src/components/Search/search-utils.ts +26 -0
- package/eventcatalog/src/components/Seo.astro +5 -1
- package/eventcatalog/src/components/Settings/AssistantSettingsForm.tsx +53 -48
- package/eventcatalog/src/components/Settings/GeneralSettingsForm.tsx +183 -178
- package/eventcatalog/src/components/Settings/LicenseSettings.tsx +140 -31
- package/eventcatalog/src/components/Settings/LlmAccessSettingsForm.tsx +40 -35
- package/eventcatalog/src/components/Settings/LogoUpload.tsx +1 -1
- package/eventcatalog/src/components/Settings/McpSettingsForm.tsx +9 -8
- package/eventcatalog/src/components/Settings/Row.tsx +7 -4
- package/eventcatalog/src/components/Settings/SettingsShared.tsx +3 -3
- package/eventcatalog/src/components/SideNav/NestedSideBar/index.tsx +37 -76
- package/eventcatalog/src/components/SideNav/NestedSideBar/storage.ts +2 -0
- package/eventcatalog/src/components/SideNav/NestedSideBar/utils.ts +122 -1
- package/eventcatalog/src/components/SideNav/SideNav.astro +9 -1
- package/eventcatalog/src/components/TrialBadge.astro +20 -9
- package/eventcatalog/src/content.config.ts +19 -2
- package/eventcatalog/src/features/auth/error.astro +4 -2
- package/eventcatalog/src/features/auth/login.astro +2 -1
- package/eventcatalog/src/features/auth/middleware/middleware-auth.ts +21 -1
- package/eventcatalog/src/features/auth/unauthorized.astro +1 -1
- package/eventcatalog/src/features/fields/pages/fields.astro +1 -1
- package/eventcatalog/src/features/integrations/eventcatalog-features.ts +13 -7
- package/eventcatalog/src/features/mcp/apps/architecture-diagram/node-chat.tsx +6 -45
- package/eventcatalog/src/features/mcp/apps/canvas/shared.ts +3 -3
- package/eventcatalog/src/features/mcp/apps/canvas/styles.css +3 -1
- package/eventcatalog/src/features/mcp/apps/canvas/view.tsx +7 -5
- package/eventcatalog/src/features/mcp/apps/generated/canvas.html +123 -98
- package/eventcatalog/src/features/mcp/apps/generated/viewer.html +118 -101
- package/eventcatalog/src/features/mcp/mcp-server.ts +20 -4
- package/eventcatalog/src/features/server/start.ts +25 -0
- package/eventcatalog/src/features/storage/database.ts +88 -0
- package/eventcatalog/src/features/storage/migrations.ts +85 -0
- package/eventcatalog/src/features/storage/sql/database.sql +5 -0
- package/eventcatalog/src/features/storage/sql/migrations/0001-studio-canvases.sql +12 -0
- package/eventcatalog/src/features/storage/sql/migrations.sql +15 -0
- package/eventcatalog/src/features/storage/sql.ts +28 -0
- package/eventcatalog/src/features/studio/agent-choreography.ts +13 -10
- package/eventcatalog/src/features/studio/agents.ts +28 -0
- package/eventcatalog/src/features/studio/api/canvases-api.ts +219 -0
- package/eventcatalog/src/features/studio/api/canvases.ts +25 -0
- package/eventcatalog/src/features/studio/api/client.ts +40 -0
- package/eventcatalog/src/features/studio/canvas-actions.ts +160 -34
- package/eventcatalog/src/features/studio/canvas-preview.ts +1 -2
- package/eventcatalog/src/features/studio/catalog.ts +16 -14
- package/eventcatalog/src/features/studio/components/CanvasHeader.tsx +274 -105
- package/eventcatalog/src/features/studio/components/CanvasStatusMenu.tsx +15 -14
- package/eventcatalog/src/features/studio/components/ConnectAgentDialog.tsx +272 -119
- package/eventcatalog/src/features/studio/components/ConnectionsChooser.tsx +1 -2
- package/eventcatalog/src/features/studio/components/DeleteCanvasDialog.tsx +65 -0
- package/eventcatalog/src/features/studio/components/Dialog.tsx +60 -0
- package/eventcatalog/src/features/studio/components/JoinForm.tsx +101 -26
- package/eventcatalog/src/features/studio/components/LeftPanel.tsx +122 -230
- package/eventcatalog/src/features/studio/components/NodeDetails.tsx +183 -0
- package/eventcatalog/src/features/studio/components/OpenInStudioDialog.tsx +79 -0
- package/eventcatalog/src/features/studio/components/Presence.tsx +52 -45
- package/eventcatalog/src/features/studio/components/ShareDialog.tsx +277 -141
- package/eventcatalog/src/features/studio/components/ShortcutsDialog.tsx +41 -0
- package/eventcatalog/src/features/studio/components/StudioDesigner.tsx +1314 -385
- package/eventcatalog/src/features/studio/components/StudioNotice.astro +24 -0
- package/eventcatalog/src/features/studio/document-name.ts +7 -0
- package/eventcatalog/src/features/studio/from-visualiser.ts +138 -0
- package/eventcatalog/src/features/studio/hooks/presence-sender.ts +19 -2
- package/eventcatalog/src/features/studio/hooks/use-canvas-webmcp.ts +9 -3
- package/eventcatalog/src/features/studio/hooks/use-comments.ts +2 -2
- package/eventcatalog/src/features/studio/hooks/use-follow-camera.ts +8 -3
- package/eventcatalog/src/features/studio/hooks/use-studio-flow.ts +244 -32
- package/eventcatalog/src/features/studio/identity.ts +25 -1
- package/eventcatalog/src/features/studio/limits.ts +2 -0
- package/eventcatalog/src/features/studio/pages/[id].astro +42 -16
- package/eventcatalog/src/features/studio/pages/index.astro +596 -373
- package/eventcatalog/src/features/studio/pages/webmcp-relay.ts +12 -15
- package/eventcatalog/src/features/studio/server/canvas-mcp.ts +8 -23
- package/eventcatalog/src/features/studio/server/runtime.ts +150 -46
- package/eventcatalog/src/features/studio/server/sql/storage.sql +18 -0
- package/eventcatalog/src/features/studio/server/storage.ts +53 -73
- package/eventcatalog/src/features/studio/webmcp-relay/LICENSE +21 -0
- package/eventcatalog/src/features/studio/webmcp-relay/README.md +5 -0
- package/eventcatalog/src/features/studio/webmcp-relay/embed.js +2 -0
- package/eventcatalog/src/features/studio/webmcp-relay/widget.html +10 -0
- package/eventcatalog/src/features/studio/webmcp-relay/widget.js +1 -0
- package/eventcatalog/src/features/tools/catalog-tools.ts +3 -1
- package/eventcatalog/src/layouts/BaseLayout.astro +4 -4
- package/eventcatalog/src/layouts/SettingsLayout.astro +2 -2
- package/eventcatalog/src/layouts/VerticalSideBarLayout.astro +3 -2
- package/eventcatalog/src/pages/_index.astro +5 -342
- package/eventcatalog/src/pages/architecture/[type]/[id]/[version]/_index.data.spec.ts +2 -3
- package/eventcatalog/src/pages/architecture/[type]/[id]/[version]/_index.data.ts +0 -7
- package/eventcatalog/src/pages/architecture/[type]/[id]/[version]/index.astro +3 -1
- package/eventcatalog/src/pages/diagrams/[id]/[version]/_index.data.ts +0 -7
- package/eventcatalog/src/pages/diagrams/[id]/[version]/embed.astro +1 -0
- package/eventcatalog/src/pages/diagrams/[id]/[version]/index.astro +1 -0
- package/eventcatalog/src/pages/directory/[type]/_index.data.ts +5 -7
- package/eventcatalog/src/pages/directory/[type]/index.astro +3 -1
- package/eventcatalog/src/pages/discover/[type]/_index.data.ts +5 -7
- package/eventcatalog/src/pages/discover/[type]/index.astro +3 -1
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/[docVersion]/_index.data.ts +0 -7
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/[docVersion]/index.astro +1 -0
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/_index.data.ts +0 -7
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/index.astro +1 -0
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/_index.data.ts +0 -7
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/asyncapi/[filename].astro +3 -1
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/asyncapi/_[filename].data.ts +0 -7
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/changelog/_index.data.ts +0 -7
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/changelog/index.astro +1 -0
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/examples/[...filename].astro +1 -0
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/examples/_[...filename].data.ts +0 -4
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/field-lineage/_index.data.ts +0 -7
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/field-lineage/index.astro +1 -0
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/graphql/[filename].astro +3 -1
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/graphql/_[filename].data.ts +0 -7
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/index.astro +1 -0
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/resources/_index.data.spec.ts +2 -3
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/resources/_index.data.ts +0 -7
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/resources/index.astro +1 -0
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/spec/[filename].astro +1 -0
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/spec/_[filename].data.ts +0 -7
- package/eventcatalog/src/pages/docs/[type]/[id]/_index.data.ts +0 -7
- package/eventcatalog/src/pages/docs/[type]/[id]/index.astro +2 -1
- package/eventcatalog/src/pages/docs/[type]/[id]/language/[dictionaryId]/_index.data.ts +0 -7
- package/eventcatalog/src/pages/docs/[type]/[id]/language/[dictionaryId]/index.astro +1 -0
- package/eventcatalog/src/pages/docs/[type]/[id]/language/_index.data.ts +0 -7
- package/eventcatalog/src/pages/docs/[type]/[id]/language/index.astro +1 -0
- package/eventcatalog/src/pages/docs/custom/[...path]/_index.data.ts +0 -7
- package/eventcatalog/src/pages/docs/custom/[...path]/index.astro +1 -0
- package/eventcatalog/src/pages/docs/services/[id]/[docType]/[docId]/index.astro +1 -1
- package/eventcatalog/src/pages/docs/services/[id]/[version]/resources/index.astro +1 -0
- package/eventcatalog/src/pages/docs/services/[id]/asyncapi/[filename].astro +1 -1
- package/eventcatalog/src/pages/docs/services/[id]/changelog/index.astro +1 -1
- package/eventcatalog/src/pages/docs/services/[id]/graphql/[filename].astro +1 -1
- package/eventcatalog/src/pages/docs/services/[id]/spec/[filename].astro +1 -1
- package/eventcatalog/src/pages/docs/teams/[id]/_index.data.ts +0 -7
- package/eventcatalog/src/pages/docs/teams/[id]/index.astro +1 -0
- package/eventcatalog/src/pages/docs/users/[id]/_index.data.ts +0 -7
- package/eventcatalog/src/pages/docs/users/[id]/index.astro +1 -0
- package/eventcatalog/src/pages/index.astro +4 -2
- package/eventcatalog/src/pages/schemas/[type]/[id]/[version]/_index.data.ts +0 -7
- package/eventcatalog/src/pages/schemas/[type]/[id]/[version]/index.astro +9 -1
- package/eventcatalog/src/pages/schemas/explorer/_index.data.ts +0 -7
- package/eventcatalog/src/pages/schemas/explorer/index.astro +4 -2
- package/eventcatalog/src/pages/settings/license.astro +9 -1
- package/eventcatalog/src/pages/triggers/[type]/[id]/[version]/_index.data.ts +0 -7
- package/eventcatalog/src/pages/triggers/[type]/[id]/[version]/index.astro +1 -0
- package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/_index.data.ts +0 -7
- package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/data/_index.data.ts +0 -7
- package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/data/index.astro +1 -0
- package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/entity-map/_index.data.ts +0 -7
- package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/entity-map/index.astro +1 -0
- package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/index.astro +1 -0
- package/eventcatalog/src/pages/visualiser/[type]/[id]/_index.data.ts +38 -0
- package/eventcatalog/src/pages/visualiser/[type]/[id]/index.astro +18 -41
- package/eventcatalog/src/pages/visualiser/designs/[id]/_index.data.ts +0 -7
- package/eventcatalog/src/pages/visualiser/designs/[id]/index.astro +2 -1
- package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/entity-map/_index.data.ts +0 -7
- package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/entity-map/index.astro +1 -0
- package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/index.astro +1 -0
- package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/systems-context/_index.data.ts +0 -7
- package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/systems-context/index.astro +1 -0
- package/eventcatalog/src/pages/visualiser/systems/[id]/[version]/context/_index.data.ts +0 -7
- package/eventcatalog/src/pages/visualiser/systems/[id]/[version]/context/index.astro +1 -0
- package/eventcatalog/src/pages/visualiser/systems/[id]/[version]/index.astro +1 -0
- package/eventcatalog/src/types/react-syntax-highlighter.d.ts +10 -0
- package/eventcatalog/src/utils/collections/flows.ts +20 -7
- package/eventcatalog/src/utils/collections/resource-owners.ts +8 -2
- package/eventcatalog/src/utils/collections/resources.ts +2 -0
- package/eventcatalog/src/utils/collections/util.ts +8 -4
- package/eventcatalog/src/utils/git.ts +11 -0
- package/eventcatalog/src/utils/homepage-dashboard.ts +143 -0
- package/eventcatalog/src/utils/license.ts +1 -1
- package/eventcatalog/src/utils/link-validation.ts +25 -19
- package/eventcatalog/src/utils/node-graphs/domain-entity-map.ts +3 -1
- package/eventcatalog/src/utils/node-graphs/domain-levels-node-graph.ts +3 -3
- package/eventcatalog/src/utils/node-graphs/field-node-graph.ts +4 -2
- package/eventcatalog/src/utils/node-graphs/layout-node-graph.ts +20 -1
- package/eventcatalog/src/utils/node-graphs/node-resource.ts +67 -0
- package/eventcatalog/src/utils/node-graphs/systems-node-graph.ts +1 -1
- package/eventcatalog/src/utils/page-loaders/hybrid-page.ts +4 -15
- package/eventcatalog/src/utils/page-title.ts +15 -0
- package/eventcatalog/src/utils/syntax-highlighter-renderer.ts +64 -0
- package/eventcatalog/src/utils/trial.ts +13 -0
- package/package.json +12 -12
- package/dist/docs/development/ask-your-architecture/05-skills/02-installation.md +0 -60
- package/dist/docs/development/ask-your-architecture/05-skills/_category_.json +0 -11
- package/dist/docs/development/ask-your-architecture/06-slack-integration/01-introduction.md +0 -63
- package/dist/docs/development/ask-your-architecture/06-slack-integration/02-slack-app-setup.md +0 -154
- package/dist/docs/development/ask-your-architecture/06-slack-integration/03-installation.md +0 -169
- package/dist/docs/development/ask-your-architecture/06-slack-integration/04-deployment.md +0 -236
- package/dist/docs/development/ask-your-architecture/06-slack-integration/05-usage.md +0 -140
- package/dist/docs/development/ask-your-architecture/06-slack-integration/06-troubleshooting.md +0 -268
- package/dist/docs/development/ask-your-architecture/06-slack-integration/_category_.json +0 -13
- package/dist/docs/development/guides/domains/06-visualize-domains/01-domain-integration-map.md +0 -40
- package/dist/runtime-dependencies/@mcp-b__webmcp-local-relay.mjs +0 -3
- package/eventcatalog/src/features/studio/canvas-doc.ts +0 -409
- package/eventcatalog/src/features/studio/clipboard.ts +0 -97
- package/eventcatalog/src/features/studio/components/CanvasControls.tsx +0 -154
- package/eventcatalog/src/features/studio/components/Comments.tsx +0 -770
- package/eventcatalog/src/features/studio/components/ContainerChooser.tsx +0 -145
- package/eventcatalog/src/features/studio/components/DragGhost.tsx +0 -115
- package/eventcatalog/src/features/studio/components/Picture.tsx +0 -21
- package/eventcatalog/src/features/studio/components/PropertiesPanel.tsx +0 -212
- package/eventcatalog/src/features/studio/components/canvas-nodes.tsx +0 -255
- package/eventcatalog/src/features/studio/components/icons.ts +0 -53
- package/eventcatalog/src/features/studio/components/status.ts +0 -51
- package/eventcatalog/src/features/studio/edges.ts +0 -56
- package/eventcatalog/src/features/studio/flow-state.ts +0 -92
- package/eventcatalog/src/features/studio/grouping.ts +0 -226
- package/eventcatalog/src/features/studio/layout.ts +0 -42
- package/eventcatalog/src/features/studio/levels.ts +0 -282
- package/eventcatalog/src/features/studio/node-types.ts +0 -205
- package/eventcatalog/src/features/studio/pages/new.astro +0 -24
- package/eventcatalog/src/features/studio/pages/wake.ts +0 -15
- package/eventcatalog/src/features/studio/placement.ts +0 -197
- package/eventcatalog/src/features/studio/studio.css +0 -273
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
---
|
|
2
|
+
sidebar_position: 5
|
|
3
|
+
keywords:
|
|
4
|
+
- EventCatalog Studio
|
|
5
|
+
- AI agents
|
|
6
|
+
- MCP
|
|
7
|
+
- MCP Apps
|
|
8
|
+
sidebar_label: Connect your agent to a canvas
|
|
9
|
+
title: Connect your agent to a canvas
|
|
10
|
+
description: Bring Claude, ChatGPT, Cursor or another AI agent onto a canvas to design with you.
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
AI agents can join a canvas and work on it with you, live. An agent can add resources from your catalog, sketch new components, connect them, tidy the layout, comment and change the status.
|
|
14
|
+
|
|
15
|
+
Agents join like a person does. Each one has its own pointer and name, and you see what it's doing ("Connecting InstalmentPlanApproved to Notification Service") as it works. Choose **Follow** on the "is working" banner to move your view with it.
|
|
16
|
+
|
|
17
|
+

|
|
18
|
+
|
|
19
|
+
## Before you start
|
|
20
|
+
|
|
21
|
+
Agents connect through the [EventCatalog MCP server](/docs/development/ask-your-architecture/mcp-server/introduction), so your catalog must run with `output: 'server'`, including when you use `eventcatalog dev`.
|
|
22
|
+
|
|
23
|
+
The MCP server is at `/docs/mcp`, for example `https://your-eventcatalog.com/docs/mcp`.
|
|
24
|
+
|
|
25
|
+
## Connect with one prompt
|
|
26
|
+
|
|
27
|
+
1. On the canvas, choose **Share**, then **Connect agent**. Or open the canvas menu and choose **Connect your AI agent**.
|
|
28
|
+
2. Choose **Copy prompt**.
|
|
29
|
+
3. Paste the prompt into your agent.
|
|
30
|
+
|
|
31
|
+
The prompt tells the agent which canvas to join and how to connect to your catalog.
|
|
32
|
+
|
|
33
|
+

|
|
34
|
+
|
|
35
|
+
## Set up your client
|
|
36
|
+
|
|
37
|
+
### Claude
|
|
38
|
+
|
|
39
|
+
1. Open **Settings → Connectors** and choose **Add custom connector**.
|
|
40
|
+
2. Name it `EventCatalog` and paste your MCP server URL.
|
|
41
|
+
3. In a chat, turn the connector on and ask Claude to join your canvas.
|
|
42
|
+
|
|
43
|
+
### Claude Code
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
claude mcp add --transport http eventcatalog https://your-eventcatalog.com/docs/mcp
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Then ask Claude Code to join your canvas.
|
|
50
|
+
|
|
51
|
+
### ChatGPT
|
|
52
|
+
|
|
53
|
+
1. Open **Settings → Apps & Connectors**, turn on developer mode and create a connector with your MCP server URL.
|
|
54
|
+
2. In a chat, add the connector and ask ChatGPT to join your canvas.
|
|
55
|
+
|
|
56
|
+
### Cursor
|
|
57
|
+
|
|
58
|
+
```json title=".cursor/mcp.json"
|
|
59
|
+
{
|
|
60
|
+
"mcpServers": {
|
|
61
|
+
"eventcatalog": { "url": "https://your-eventcatalog.com/docs/mcp" }
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### VS Code
|
|
67
|
+
|
|
68
|
+
Use Copilot's agent mode.
|
|
69
|
+
|
|
70
|
+
```json title=".vscode/mcp.json"
|
|
71
|
+
{
|
|
72
|
+
"servers": {
|
|
73
|
+
"eventcatalog": { "type": "http", "url": "https://your-eventcatalog.com/docs/mcp" }
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Agents in your browser
|
|
79
|
+
|
|
80
|
+
In the **Connect your AI agent** dialog, choose **This browser**, then **Turn on**. Agents in your browser, such as the MCP-B extension, can then use the open canvas through WebMCP.
|
|
81
|
+
|
|
82
|
+
## The canvas inside your chat
|
|
83
|
+
|
|
84
|
+
In clients that support [MCP Apps](/docs/development/ask-your-architecture/mcp-server/getting-started#interactive-diagrams-and-schemas), such as Claude and ChatGPT, the agent can open the canvas inside the conversation. You and the agent work on it there, and everyone with the canvas open in EventCatalog sees the same changes.
|
|
85
|
+
|
|
86
|
+
## Things to ask
|
|
87
|
+
|
|
88
|
+
**Design ideas together**
|
|
89
|
+
|
|
90
|
+
- "Add a payments service that listens to OrderPlaced"
|
|
91
|
+
- "How could we split the orders service?"
|
|
92
|
+
- "Add retries and a dead letter queue to this"
|
|
93
|
+
|
|
94
|
+
**Understand how it works**
|
|
95
|
+
|
|
96
|
+
- "Put everything the Orders domain owns on the canvas"
|
|
97
|
+
- "Walk me through what happens when a payment fails"
|
|
98
|
+
- "Which services consume this event?"
|
|
99
|
+
|
|
100
|
+
Agents work from your catalog, so the services and messages they add are the ones your teams document. They talk to you in the chat, and only comment on the canvas when you ask them to, for example to review it.
|
|
101
|
+
|
|
102
|
+
See the [reference](/docs/development/studio/reference#mcp-tools) for the MCP tools agents use.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
sidebar_position: 6
|
|
3
|
+
keywords:
|
|
4
|
+
- EventCatalog Studio
|
|
5
|
+
- production
|
|
6
|
+
- deployment
|
|
7
|
+
sidebar_label: Run Studio in production
|
|
8
|
+
title: Run Studio in production
|
|
9
|
+
description: Turn on Studio for a deployed catalog.
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
Studio is on when you run `eventcatalog dev`. To use it in a deployed catalog, run your catalog in [server mode](/docs/development/deployment/build-ssr-mode) and turn Studio on. Studio isn't available in a static build.
|
|
13
|
+
|
|
14
|
+
1. In `eventcatalog.config.js`, set `output` to `'server'` and `studio.enabled` to `true`:
|
|
15
|
+
|
|
16
|
+
```js title="eventcatalog.config.js"
|
|
17
|
+
export default {
|
|
18
|
+
output: 'server',
|
|
19
|
+
studio: {
|
|
20
|
+
enabled: true,
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
2. [Set up persistent storage](/docs/development/studio/set-up-persistent-storage). Without it, canvases are lost when the server restarts.
|
|
26
|
+
|
|
27
|
+
3. Build your catalog and serve it with `eventcatalog start`:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npx eventcatalog build
|
|
31
|
+
npx eventcatalog start
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Behind a proxy or load balancer
|
|
35
|
+
|
|
36
|
+
- **Forward WebSocket connections.** Live collaboration uses a WebSocket on the same port as your catalog.
|
|
37
|
+
- **Trust your HTTPS host.** If your proxy serves the catalog over HTTPS, add your host to `security.allowedDomains`. Otherwise forms such as **New canvas** fail the origin check.
|
|
38
|
+
|
|
39
|
+
```js title="eventcatalog.config.js"
|
|
40
|
+
export default {
|
|
41
|
+
output: 'server',
|
|
42
|
+
security: {
|
|
43
|
+
allowedDomains: [{ hostname: 'catalog.example.com', protocol: 'https' }],
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Only let signed-in people in
|
|
49
|
+
|
|
50
|
+
Turn on [authentication](/docs/development/authentication/introduction). Only signed-in people can then open canvases.
|
|
51
|
+
|
|
52
|
+
## Turn Studio off
|
|
53
|
+
|
|
54
|
+
Set `studio.enabled` to `false`. This turns Studio off everywhere, including in `eventcatalog dev`.
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
---
|
|
2
|
+
sidebar_position: 7
|
|
3
|
+
keywords:
|
|
4
|
+
- EventCatalog Studio
|
|
5
|
+
- reference
|
|
6
|
+
sidebar_label: Reference
|
|
7
|
+
title: Studio reference
|
|
8
|
+
description: Configuration, canvas controls, components, connection labels, MCP tools, keyboard shortcuts and limits for EventCatalog Studio.
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
Everything about Studio and its canvases in one place.
|
|
12
|
+
|
|
13
|
+
## Configuration {#configuration}
|
|
14
|
+
|
|
15
|
+
### `studio`
|
|
16
|
+
|
|
17
|
+
| Option | Type | Default | Description |
|
|
18
|
+
|---|---|---|---|
|
|
19
|
+
| `studio.enabled` | `boolean` | `false` | Turns Studio on in production. Studio is on in `eventcatalog dev` unless this is `false`. `false` turns it off everywhere. |
|
|
20
|
+
|
|
21
|
+
### `storage`
|
|
22
|
+
|
|
23
|
+
| Option | Type | Default | Description |
|
|
24
|
+
|---|---|---|---|
|
|
25
|
+
| `storage.type` | `'memory'` \| `'sqlite'` | `'memory'` | `'memory'` keeps canvases while the server runs. `'sqlite'` keeps them in a database file. |
|
|
26
|
+
| `storage.path` | `string` | `'.eventcatalog/eventcatalog.db'` | The SQLite database file, relative to your catalog. |
|
|
27
|
+
|
|
28
|
+
SQLite storage needs Node.js 22.13 or later.
|
|
29
|
+
|
|
30
|
+
### Related options
|
|
31
|
+
|
|
32
|
+
| Option | Why it matters for Studio |
|
|
33
|
+
|---|---|
|
|
34
|
+
| `output` | Must be `'server'` for Studio in production, and for agents to connect through the MCP server. |
|
|
35
|
+
| `auth.enabled` | With [authentication](/docs/development/authentication/introduction) on, only signed-in people can open canvases. |
|
|
36
|
+
| `mcp.enabled` | Agents connect through the MCP server. Setting it to `false` stops agents connecting. |
|
|
37
|
+
| `security.allowedDomains` | Needed when a proxy serves your catalog over HTTPS. |
|
|
38
|
+
|
|
39
|
+
### When Studio is on
|
|
40
|
+
|
|
41
|
+
| Command | `studio.enabled` not set | `true` | `false` |
|
|
42
|
+
|---|---|---|---|
|
|
43
|
+
| `eventcatalog dev` | On | On | Off |
|
|
44
|
+
| `eventcatalog start` (`output: 'server'`) | Off | On | Off |
|
|
45
|
+
| Static build (`output: 'static'`) | Off | Off | Off |
|
|
46
|
+
|
|
47
|
+
### Example
|
|
48
|
+
|
|
49
|
+
```js title="eventcatalog.config.js"
|
|
50
|
+
export default {
|
|
51
|
+
output: 'server',
|
|
52
|
+
studio: {
|
|
53
|
+
enabled: true,
|
|
54
|
+
},
|
|
55
|
+
storage: {
|
|
56
|
+
type: 'sqlite',
|
|
57
|
+
path: '/data/eventcatalog.db',
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
See the [full configuration reference](/docs/api/config) for every EventCatalog option.
|
|
63
|
+
|
|
64
|
+
## Canvas {#canvas}
|
|
65
|
+
|
|
66
|
+
### Toolbar
|
|
67
|
+
|
|
68
|
+
| Button | Shortcut | What it does |
|
|
69
|
+
|---|---|---|
|
|
70
|
+
| Lock | | Locks the canvas, so it can be looked at but not changed |
|
|
71
|
+
| Select | <kbd>V</kbd> | Select and move nodes |
|
|
72
|
+
| Hand | <kbd>H</kbd> | Drag to move around |
|
|
73
|
+
| L1 / L2 / L3 | <kbd>1</kbd> <kbd>2</kbd> <kbd>3</kbd> | Change the [level](#levels) |
|
|
74
|
+
| Sticky note | <kbd>N</kbd> | Click where the note goes |
|
|
75
|
+
| Text | <kbd>T</kbd> | Click anywhere and type |
|
|
76
|
+
| Comment | <kbd>C</kbd> | Click a node, or a spot, to comment |
|
|
77
|
+
| Hotspot | <kbd>A</kbd> | Click a node, or a spot, to flag a risk |
|
|
78
|
+
|
|
79
|
+
The controls at the bottom left zoom, undo and redo, fit the view (<kbd>⇧</kbd> <kbd>1</kbd>), reorder the diagram, and list comments and hotspots.
|
|
80
|
+
|
|
81
|
+
### Levels
|
|
82
|
+
|
|
83
|
+
| Level | Shows |
|
|
84
|
+
|---|---|
|
|
85
|
+
| **L1** | Domains, systems and their relationships |
|
|
86
|
+
| **L2** | Services and data stores |
|
|
87
|
+
| **L3** | Everything, including messages and channels |
|
|
88
|
+
|
|
89
|
+
L1 is unavailable until the canvas has a domain or system.
|
|
90
|
+
|
|
91
|
+
### Canvas menu
|
|
92
|
+
|
|
93
|
+
The three dots next to the canvas title.
|
|
94
|
+
|
|
95
|
+

|
|
96
|
+
|
|
97
|
+
| Item | Shortcut |
|
|
98
|
+
|---|---|
|
|
99
|
+
| Open… | <kbd>⌘</kbd> <kbd>O</kbd> |
|
|
100
|
+
| Save to file… | <kbd>⌘</kbd> <kbd>S</kbd> |
|
|
101
|
+
| Export image… | <kbd>⌘</kbd> <kbd>⇧</kbd> <kbd>E</kbd> |
|
|
102
|
+
| Live collaboration… | |
|
|
103
|
+
| Connect your AI agent… | |
|
|
104
|
+
| Help | <kbd>?</kbd> |
|
|
105
|
+
| Rename canvas | |
|
|
106
|
+
| Copy link | |
|
|
107
|
+
| New canvas | |
|
|
108
|
+
| Delete canvas | |
|
|
109
|
+
|
|
110
|
+
The bottom of the menu shows the connection status, for example **Connected**.
|
|
111
|
+
|
|
112
|
+
### Right-click menus
|
|
113
|
+
|
|
114
|
+
| On | Items |
|
|
115
|
+
|---|---|
|
|
116
|
+
| A node | Add comment, Add hotspot, Add a note, Edit details, Copy, Duplicate, Delete |
|
|
117
|
+
| The canvas | Add comment, Add hotspot, Add a sticky note, Paste here, Reorder diagram |
|
|
118
|
+
|
|
119
|
+
### Statuses
|
|
120
|
+
|
|
121
|
+
| Status | Meaning |
|
|
122
|
+
|---|---|
|
|
123
|
+
| **Draft** | Being worked on. Every canvas starts as a draft. |
|
|
124
|
+
| **Proposed** | Ready for review |
|
|
125
|
+
| **Accepted** | The agreed design |
|
|
126
|
+
| **Rejected** | Decided against, kept for the record |
|
|
127
|
+
|
|
128
|
+
- Each status change can have a note. The status menu shows the history, with who changed it, when and the note.
|
|
129
|
+
- Changing the nodes or connections on an accepted or rejected canvas makes it a draft again.
|
|
130
|
+
|
|
131
|
+
### Hotspots
|
|
132
|
+
|
|
133
|
+
| Field | Values |
|
|
134
|
+
|---|---|
|
|
135
|
+
| Severity | **Critical** (red), **Warning** (amber) or **Info** (blue) |
|
|
136
|
+
| Title | Up to 120 characters, for example "Single point of failure" |
|
|
137
|
+
| Description | Optional. Why it matters, and what to do about it |
|
|
138
|
+
|
|
139
|
+
- A hotspot is on a node, and moves with it, or on a spot on the canvas.
|
|
140
|
+
- The **Hotspots** list shows the most severe first.
|
|
141
|
+
- At L1 and L2, hotspots inside a domain or system are shown on that domain or system.
|
|
142
|
+
|
|
143
|
+
### Studio page
|
|
144
|
+
|
|
145
|
+
The Studio page lists canvases with their status, contents, open comments, who created them, and when they were last updated. Filter by name or status. Each canvas's menu has **Make a copy** and **Delete**.
|
|
146
|
+
|
|
147
|
+
### Limits
|
|
148
|
+
|
|
149
|
+
| Limit | Value |
|
|
150
|
+
|---|---|
|
|
151
|
+
| Canvas title | 200 characters |
|
|
152
|
+
| Your name | 60 characters |
|
|
153
|
+
| `.eventcatalog` file | 2 MB |
|
|
154
|
+
|
|
155
|
+
## Components and connections {#components-and-connections}
|
|
156
|
+
|
|
157
|
+
### Components
|
|
158
|
+
|
|
159
|
+
New components start at version `0.0.1`.
|
|
160
|
+
|
|
161
|
+
| Group | Component | Description |
|
|
162
|
+
|---|---|---|
|
|
163
|
+
| Boundaries | Domain | A business area, e.g. Sales |
|
|
164
|
+
| | System | Services doing one job |
|
|
165
|
+
| Services | Service | An API, worker or function |
|
|
166
|
+
| | View | A screen or app people use |
|
|
167
|
+
| | External System | A third party you use |
|
|
168
|
+
| | Agent | An AI agent at work |
|
|
169
|
+
| Messages | Event | Something that happened |
|
|
170
|
+
| | Command | A request to do something |
|
|
171
|
+
| | Query | A request for data |
|
|
172
|
+
| | Channel | A topic, queue or bus |
|
|
173
|
+
| Data | Database | Tables, e.g. PostgreSQL |
|
|
174
|
+
| | Cache | Fast data, e.g. Redis |
|
|
175
|
+
| | Search index | Search, e.g. Elasticsearch |
|
|
176
|
+
| | Object store | Files and blobs, e.g. S3 |
|
|
177
|
+
| | Entity | Part of the domain model |
|
|
178
|
+
| People | Actor | Someone who uses it |
|
|
179
|
+
| | Team | Who owns what |
|
|
180
|
+
|
|
181
|
+
Sticky notes and text are added from the toolbar.
|
|
182
|
+
|
|
183
|
+
### Catalog resources
|
|
184
|
+
|
|
185
|
+
You can add these resources from your catalog: domains, systems, services, events, commands, queries, channels and data stores. They are added at their latest version, with their name, version and summary from your catalog.
|
|
186
|
+
|
|
187
|
+
### Connection labels
|
|
188
|
+
|
|
189
|
+
When you connect two nodes, Studio labels the connection with EventCatalog's wording:
|
|
190
|
+
|
|
191
|
+
| From | To | Label |
|
|
192
|
+
|---|---|---|
|
|
193
|
+
| Service, agent, actor, external system or view | Event | publishes event |
|
|
194
|
+
| Service, agent, actor, external system or view | Command | invokes |
|
|
195
|
+
| Service, agent, actor, external system or view | Query | requests |
|
|
196
|
+
| Event | Anything but a message or channel | subscribed by |
|
|
197
|
+
| Command or query | Anything but a message or channel | accepts |
|
|
198
|
+
| Message | Message | triggers |
|
|
199
|
+
| Message | Channel | sent to |
|
|
200
|
+
| Channel | Anything | routes to |
|
|
201
|
+
| Anything else | Channel | publishes to |
|
|
202
|
+
| Anything | Data store | writes to |
|
|
203
|
+
| Data store | Anything | read by |
|
|
204
|
+
| Actor | Anything | uses |
|
|
205
|
+
| Anything | View | serves |
|
|
206
|
+
| Anything | External system | calls |
|
|
207
|
+
| Anything | Actor | notifies |
|
|
208
|
+
| Team | Anything | owns |
|
|
209
|
+
| Entity | Entity | references |
|
|
210
|
+
| Message | Entity | carries |
|
|
211
|
+
| Anything else | Entity | manages |
|
|
212
|
+
|
|
213
|
+
Agents can set their own labels through the [MCP tools](#mcp-tools).
|
|
214
|
+
|
|
215
|
+
## MCP tools {#mcp-tools}
|
|
216
|
+
|
|
217
|
+
When Studio is on, the [EventCatalog MCP server](/docs/development/ask-your-architecture/mcp-server/introduction) has these tools for canvases. Unlike the other MCP tools, they change your canvases.
|
|
218
|
+
|
|
219
|
+
| Tool | What it does |
|
|
220
|
+
|---|---|
|
|
221
|
+
| `openCanvas` | Shows a canvas in the chat, in clients that support MCP Apps |
|
|
222
|
+
| `listCanvases` | Lists canvases and who is on each one |
|
|
223
|
+
| `createCanvas` | Creates a canvas and returns its link |
|
|
224
|
+
| `getCanvas` | Reads a canvas: its nodes, connections, comments and who is on it |
|
|
225
|
+
| `addToCanvas` | Adds catalog resources or new components, and connects them |
|
|
226
|
+
| `updateCanvasNode` | Renames, describes, versions or moves a node |
|
|
227
|
+
| `connectCanvasNodes` | Connects nodes |
|
|
228
|
+
| `removeFromCanvas` | Removes nodes or connections |
|
|
229
|
+
| `layoutCanvas` | Lays out the whole canvas |
|
|
230
|
+
| `setCanvasStatus` | Sets the status to draft, proposed, accepted or rejected, with a note |
|
|
231
|
+
| `commentOnCanvas` | Starts a comment thread on a node or a spot |
|
|
232
|
+
| `replyToCanvasComment` | Replies to a thread |
|
|
233
|
+
| `resolveCanvasComment` | Resolves or reopens a thread |
|
|
234
|
+
|
|
235
|
+
Every tool takes an optional `agentName`, the name people on the canvas see. It defaults to the name of the client, for example Claude, Claude Code, ChatGPT or Cursor.
|
|
236
|
+
|
|
237
|
+
### How agents appear
|
|
238
|
+
|
|
239
|
+
- An agent has its own pointer and name on the canvas.
|
|
240
|
+
- Its changes appear one step at a time, with what it is doing, for example "Connecting InstalmentPlanApproved to Notification Service".
|
|
241
|
+
- A banner shows when an agent is working. Choose **Follow** to move your view with it.
|
|
242
|
+
|
|
243
|
+
### Browser tools (WebMCP)
|
|
244
|
+
|
|
245
|
+
When WebMCP is turned on in the **Connect your AI agent** dialog, the open canvas offers agents in the browser these tools: `get_canvas`, `search_catalog`, `add_to_canvas`, `update_node`, `connect_nodes`, `remove_from_canvas`, `layout_canvas`, `set_canvas_status`, `add_comment`, `reply_to_comment`, `resolve_comment` and `show_nodes`.
|
|
246
|
+
|
|
247
|
+
## Keyboard shortcuts {#keyboard-shortcuts}
|
|
248
|
+
|
|
249
|
+
Press <kbd>?</kbd> on a canvas to see these shortcuts. On Windows and Linux, use <kbd>Ctrl</kbd> instead of <kbd>⌘</kbd>.
|
|
250
|
+
|
|
251
|
+

|
|
252
|
+
|
|
253
|
+
### Tools
|
|
254
|
+
|
|
255
|
+
| Action | Shortcut |
|
|
256
|
+
|---|---|
|
|
257
|
+
| Select | <kbd>V</kbd> |
|
|
258
|
+
| Hand (move around) | <kbd>H</kbd> |
|
|
259
|
+
| Sticky note | <kbd>N</kbd> |
|
|
260
|
+
| Text | <kbd>T</kbd> |
|
|
261
|
+
| Comment | <kbd>C</kbd> |
|
|
262
|
+
| Hotspot | <kbd>A</kbd> |
|
|
263
|
+
| Level 1 / 2 / 3 | <kbd>1</kbd> <kbd>2</kbd> <kbd>3</kbd> |
|
|
264
|
+
| Back to selecting | <kbd>Esc</kbd> |
|
|
265
|
+
|
|
266
|
+
### Canvas
|
|
267
|
+
|
|
268
|
+
| Action | Shortcut |
|
|
269
|
+
|---|---|
|
|
270
|
+
| Select everything | <kbd>⌘</kbd> <kbd>A</kbd> |
|
|
271
|
+
| Select several | <kbd>⇧</kbd> + click |
|
|
272
|
+
| Delete what's selected | <kbd>Delete</kbd> |
|
|
273
|
+
| Duplicate | <kbd>⌘</kbd> <kbd>D</kbd> |
|
|
274
|
+
| Copy / paste | <kbd>⌘</kbd> <kbd>C</kbd> / <kbd>⌘</kbd> <kbd>V</kbd> |
|
|
275
|
+
| Undo / redo | <kbd>⌘</kbd> <kbd>Z</kbd> / <kbd>⌘</kbd> <kbd>⇧</kbd> <kbd>Z</kbd> |
|
|
276
|
+
| Move around | Scroll |
|
|
277
|
+
| Zoom | <kbd>⌘</kbd> + scroll |
|
|
278
|
+
| Fit view | <kbd>⇧</kbd> <kbd>1</kbd> |
|
|
279
|
+
|
|
280
|
+
### Notes and text
|
|
281
|
+
|
|
282
|
+
| Action | Shortcut |
|
|
283
|
+
|---|---|
|
|
284
|
+
| Write on one | Double-click |
|
|
285
|
+
| Finish writing | <kbd>Esc</kbd> |
|
|
286
|
+
|
|
287
|
+
### Files
|
|
288
|
+
|
|
289
|
+
| Action | Shortcut |
|
|
290
|
+
|---|---|
|
|
291
|
+
| Open a file | <kbd>⌘</kbd> <kbd>O</kbd> |
|
|
292
|
+
| Save to file | <kbd>⌘</kbd> <kbd>S</kbd> |
|
|
293
|
+
| Export image | <kbd>⌘</kbd> <kbd>⇧</kbd> <kbd>E</kbd> |
|
|
294
|
+
| Help | <kbd>?</kbd> |
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"label": "Studio",
|
|
3
|
+
"position": 4.5,
|
|
4
|
+
"collapsible": true,
|
|
5
|
+
"collapsed": false,
|
|
6
|
+
"link": {
|
|
7
|
+
"type": "generated-index",
|
|
8
|
+
"slug": "development/studio",
|
|
9
|
+
"title": "EventCatalog Studio",
|
|
10
|
+
"description": "Design changes to your architecture on live canvases, with your team and AI agents."
|
|
11
|
+
}
|
|
12
|
+
}
|