@eventcatalog/core 5.0.0-beta.9 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (460) hide show
  1. package/LICENSE +13 -12
  2. package/README.md +5 -5
  3. package/dist/analytics/analytics.cjs +1 -1
  4. package/dist/analytics/analytics.js +2 -2
  5. package/dist/analytics/log-build.cjs +91 -44
  6. package/dist/analytics/log-build.d.cts +2 -2
  7. package/dist/analytics/log-build.d.ts +2 -2
  8. package/dist/analytics/log-build.js +6 -5
  9. package/dist/analytics/studio-usage.cjs +90 -0
  10. package/dist/analytics/studio-usage.d.cts +5 -0
  11. package/dist/analytics/studio-usage.d.ts +5 -0
  12. package/dist/analytics/studio-usage.js +10 -0
  13. package/dist/catalog-runtime.cjs +1 -1
  14. package/dist/{chunk-RFIXKATC.js → chunk-4G7FSRPN.js} +35 -42
  15. package/dist/{chunk-AWOO63ME.js → chunk-AD7CL772.js} +11 -4
  16. package/dist/chunk-CA6WCQ2T.js +54 -0
  17. package/dist/{chunk-GAHKCOQM.js → chunk-JZN4RSMF.js} +1 -1
  18. package/dist/{chunk-JQMYHZWI.js → chunk-NEAVAFSJ.js} +16 -8
  19. package/dist/{chunk-4CFZUHGG.js → chunk-NIVST4WY.js} +1 -1
  20. package/dist/{chunk-ENAG6UH7.js → chunk-NKNOXQ62.js} +1 -6
  21. package/dist/{chunk-ZEY2XUJN.js → chunk-OX6TSVHY.js} +6 -6
  22. package/dist/{chunk-36RYTYT5.js → chunk-PD7KTSYN.js} +1 -1
  23. package/dist/{chunk-EUNQJO3J.js → chunk-RE7UTPWH.js} +1 -1
  24. package/dist/chunk-S5GWAUG5.js +29 -0
  25. package/dist/{chunk-TZVDMWQX.js → chunk-YQGRMDRB.js} +4 -2
  26. package/dist/constants.cjs +1 -1
  27. package/dist/constants.js +1 -1
  28. package/dist/docs/api/02-config.md +57 -7
  29. package/dist/docs/development/00-why-eventcatalog.md +11 -11
  30. package/dist/docs/development/01-fundamentals.md +20 -13
  31. package/dist/docs/development/01-getting-started/configuration-overview.md +2 -2
  32. package/dist/docs/development/01-getting-started/installation.md +9 -1
  33. package/dist/docs/development/_getting-started.mdx +1 -1
  34. package/dist/docs/development/ask-your-architecture/01-intro.md +5 -5
  35. package/dist/docs/development/ask-your-architecture/02-eventcatalog-assistant/01-what-is-eventcatalog-assistant.md +0 -4
  36. package/dist/docs/development/ask-your-architecture/02-eventcatalog-assistant/02-configuration.md +15 -3
  37. package/dist/docs/development/ask-your-architecture/02-eventcatalog-assistant/03-bring-your-own-tools.md +0 -3
  38. package/dist/docs/development/ask-your-architecture/02-eventcatalog-assistant/_category_.json +1 -1
  39. package/dist/docs/development/ask-your-architecture/02-llms.txt.md +1 -1
  40. package/dist/docs/development/ask-your-architecture/{05-skills/01-introduction.md → 03-install-skills.md} +57 -7
  41. package/dist/docs/development/ask-your-architecture/03-mcp-server/_category_.json +1 -1
  42. package/dist/docs/development/ask-your-architecture/03-mcp-server/getting-started.md +86 -33
  43. package/dist/docs/development/ask-your-architecture/03-mcp-server/introduction.md +14 -4
  44. package/dist/docs/development/ask-your-architecture/03-schemas.txt.md +1 -1
  45. package/dist/docs/development/ask-your-architecture/04-agents/_category_.json +1 -1
  46. package/dist/docs/development/authentication/01-introduction.md +2 -23
  47. package/dist/docs/development/authentication/02-enabling-authentication.md +0 -20
  48. package/dist/docs/development/authentication/07-rbac-middleware.md +0 -2
  49. package/dist/docs/development/authentication/providers/03-setting-up-github.md +0 -2
  50. package/dist/docs/development/authentication/providers/03a-setting-up-google.md +0 -2
  51. package/dist/docs/development/authentication/providers/04-setting-up-azure-ad.md +0 -2
  52. package/dist/docs/development/authentication/providers/05-setting-up-okta.md +0 -3
  53. package/dist/docs/development/authentication/providers/06-setting-up-auth0.md +0 -2
  54. package/dist/docs/development/bring-your-own-documentation/01-introduction.md +0 -4
  55. package/dist/docs/development/bring-your-own-documentation/custom-pages/01-introduction.md +0 -3
  56. package/dist/docs/development/bring-your-own-documentation/custom-pages/02-adding-custom-docs.md +0 -17
  57. package/dist/docs/development/bring-your-own-documentation/custom-pages/03-components.md +0 -4
  58. package/dist/docs/development/bring-your-own-documentation/custom-pages/04-owners.md +0 -2
  59. package/dist/docs/development/bring-your-own-documentation/resource-docs/01-introduction.md +1 -3
  60. package/dist/docs/development/bring-your-own-documentation/resource-docs/02-adding-resource-docs.md +1 -4
  61. package/dist/docs/development/bring-your-own-documentation/resource-docs/03-categories.md +0 -2
  62. package/dist/docs/development/bring-your-own-documentation/resource-docs/04-versioning.md +1 -3
  63. package/dist/docs/development/components/components/11-flow.md +17 -0
  64. package/dist/docs/development/components/components/15-nodegraph.md +43 -10
  65. package/dist/docs/development/components/components/18-remote-schema.md +1 -4
  66. package/dist/docs/development/components/custom-components/07-reference.md +14 -0
  67. package/dist/docs/development/customization/02-themes.md +0 -5
  68. package/dist/docs/development/customization/03-search.md +1 -1
  69. package/dist/docs/development/customization/05-custom-pages-and-api-routes/01-introduction.md +0 -2
  70. package/dist/docs/development/customization/05-custom-pages-and-api-routes/04-reference.md +7 -1
  71. package/dist/docs/development/customization/05-resource-sidebar.md +1 -1
  72. package/dist/docs/development/customization/09-embed-eventcatalog.md +20 -25
  73. package/dist/docs/development/deployment/hosting-options.md +7 -2
  74. package/dist/docs/development/developer-tools/eventcatalog-linter/how-to/05-fix-common-problems.md +16 -0
  75. package/dist/docs/development/developer-tools/eventcatalog-linter/reference/03-rules.md +31 -1
  76. package/dist/docs/development/developer-tools/eventcatalog-linter/reference/05-supported-resources.md +1 -1
  77. package/dist/docs/development/governance/architecture-change-detection/01-introduction.md +0 -10
  78. package/dist/docs/development/governance/architecture-change-detection/06-pipeline-gates.md +0 -4
  79. package/dist/docs/development/guides/97-architecture-graph.md +1 -1
  80. package/dist/docs/development/guides/99-adding-analytics.md +0 -7
  81. package/dist/docs/development/guides/domains/03-model-subdomains.md +2 -2
  82. package/dist/docs/development/guides/domains/04-add-resources-to-domains/01-add-systems-to-domains.md +3 -1
  83. package/dist/docs/development/guides/domains/04-add-resources-to-domains/02-add-services-to-domains.md +5 -1
  84. package/dist/docs/development/guides/domains/04-add-resources-to-domains/03-add-messages-to-domains.md +2 -2
  85. package/dist/docs/development/guides/domains/04-add-resources-to-domains/05-add-entities-to-domains.md +1 -1
  86. package/dist/docs/development/guides/domains/04-add-resources-to-domains/06-domain-resources-page.md +40 -0
  87. package/dist/docs/development/guides/domains/06-visualize-domains/01-domain-diagram.md +89 -0
  88. package/dist/docs/development/guides/domains/06-visualize-domains/_category_.json +1 -2
  89. package/dist/docs/development/guides/domains/09-reference.md +4 -4
  90. package/dist/docs/development/guides/owners/automated-teams-and-users/create-your-own-connector.md +0 -2
  91. package/dist/docs/development/guides/owners/automated-teams-and-users/sync-from-github.md +0 -3
  92. package/dist/docs/development/guides/owners/automated-teams-and-users/sync-from-microsoft-entra.md +0 -2
  93. package/dist/docs/development/guides/resources/adrs/03-linking-resources.md +8 -0
  94. package/dist/docs/development/guides/resources/adrs/06-reference.md +4 -4
  95. package/dist/docs/development/guides/resources/agents/11-reference.md +1 -1
  96. package/dist/docs/development/guides/resources/data/04-reference.md +1 -1
  97. package/dist/docs/development/guides/resources/data-products/07-reference.md +1 -1
  98. package/dist/docs/development/guides/resources/entities/05-entity-maps.md +1 -1
  99. package/dist/docs/development/guides/resources/entities/06-reference.md +2 -2
  100. package/dist/docs/development/guides/resources/flows/01-introduction.md +11 -1
  101. package/dist/docs/development/guides/resources/flows/03-model-flow-steps.md +65 -6
  102. package/dist/docs/development/guides/resources/flows/05-explore-flows.md +112 -0
  103. package/dist/docs/development/guides/resources/flows/06-reference.md +25 -4
  104. package/dist/docs/development/guides/resources/messages/01-what-are-messages.md +19 -0
  105. package/dist/docs/development/guides/resources/messages/04-message-channels/01-introduction.md +16 -0
  106. package/dist/docs/development/guides/resources/messages/04-message-channels/05-reference.md +2 -1
  107. package/dist/docs/development/guides/resources/messages/10-reference.md +6 -3
  108. package/dist/docs/development/guides/resources/schemas/04-explore-schemas/01-schema-explorer.md +2 -2
  109. package/dist/docs/development/guides/resources/schemas/04-explore-schemas/02-fields-explorer.md +0 -9
  110. package/dist/docs/development/guides/resources/schemas/05-schema-api.md +0 -3
  111. package/dist/docs/development/guides/resources/schemas/06-schema-mcp.md +11 -3
  112. package/dist/docs/development/guides/resources/services/04-add-resources-to-services/03-add-entities-to-services.md +1 -1
  113. package/dist/docs/development/guides/resources/services/05-resources-page.md +50 -0
  114. package/dist/docs/development/guides/resources/services/08-reference.md +2 -1
  115. package/dist/docs/development/guides/systems/01-introduction.md +1 -1
  116. package/dist/docs/development/guides/systems/02-create-system.md +2 -2
  117. package/dist/docs/development/guides/systems/03-add-resources-to-systems.md +35 -9
  118. package/dist/docs/development/guides/systems/04-model-relationships-and-actors.md +5 -3
  119. package/dist/docs/development/guides/systems/05-system-context-maps.md +39 -22
  120. package/dist/docs/development/guides/systems/06-reference.md +4 -4
  121. package/dist/docs/development/license/01-license-file.md +151 -0
  122. package/dist/docs/development/license/_category_.json +12 -0
  123. package/dist/docs/development/license-keys/_category_.json +3 -3
  124. package/dist/docs/development/license-keys/integrations.md +7 -37
  125. package/dist/docs/development/license-keys/license-validation.md +4 -0
  126. package/dist/docs/development/license-keys/overview.md +5 -1
  127. package/dist/docs/development/license-keys/plans.md +4 -2
  128. package/dist/docs/development/studio/01-introduction.md +60 -0
  129. package/dist/docs/development/studio/02-create-a-canvas.md +103 -0
  130. package/dist/docs/development/studio/03-set-up-persistent-storage.md +59 -0
  131. package/dist/docs/development/studio/04-collaborate-on-a-canvas.md +78 -0
  132. package/dist/docs/development/studio/05-connect-your-agent.md +102 -0
  133. package/dist/docs/development/studio/06-run-studio-in-production.md +54 -0
  134. package/dist/docs/development/studio/07-reference.md +294 -0
  135. package/dist/docs/development/studio/_category_.json +12 -0
  136. package/dist/docs/development/upgrading/v5.md +345 -0
  137. package/dist/docs/federation/00-overview.md +2 -8
  138. package/dist/docs/federation/01-first-federation.md +6 -18
  139. package/dist/docs/federation/explanation/how-it-works.md +0 -4
  140. package/dist/docs/federation/explanation/lockfile-and-cache.md +0 -4
  141. package/dist/docs/federation/explanation/mvp-status-and-feedback.md +0 -4
  142. package/dist/docs/federation/explanation/ownership-and-references.md +0 -4
  143. package/dist/docs/federation/how-to/configure-github-sources.md +6 -5
  144. package/dist/docs/federation/how-to/configure-validation-rules.md +0 -4
  145. package/dist/docs/federation/how-to/run-in-ci.md +2 -9
  146. package/dist/docs/federation/how-to/share-assets-and-components.md +0 -4
  147. package/dist/docs/federation/how-to/use-local-sources.md +0 -4
  148. package/dist/docs/federation/legacy-federation/00-introduction.md +4 -22
  149. package/dist/docs/federation/legacy-federation/01-installation.md +7 -58
  150. package/dist/docs/federation/legacy-federation/02-plugin-configuration.md +3 -21
  151. package/dist/docs/federation/legacy-federation/03-examples.md +3 -5
  152. package/dist/docs/federation/legacy-federation/04-configuration.md +3 -8
  153. package/dist/docs/federation/legacy-federation/05-setup-team-catalog.md +3 -6
  154. package/dist/docs/federation/reference/cli.md +2 -8
  155. package/dist/docs/federation/reference/configuration.md +0 -4
  156. package/dist/docs/federation/reference/diagnostic-rules.md +0 -5
  157. package/dist/docs/federation/reference/generated-output.md +0 -4
  158. package/dist/docs/federation/reference/supported-content.md +0 -4
  159. package/dist/docs/federation/reference/troubleshooting.md +0 -14
  160. package/dist/docs/plugins/02-generators.md +1 -1
  161. package/dist/docs/plugins/amazon-apigateway/00-intro.md +3 -28
  162. package/dist/docs/plugins/amazon-apigateway/01-installation.md +4 -56
  163. package/dist/docs/plugins/amazon-apigateway/02-plugin-configuration.md +1 -6
  164. package/dist/docs/plugins/apicurio/00-intro.md +2 -31
  165. package/dist/docs/plugins/apicurio/01-installation.md +2 -26
  166. package/dist/docs/plugins/apicurio/02-plugin-configuration.md +5 -13
  167. package/dist/docs/plugins/apicurio/03-features.md +1 -3
  168. package/dist/docs/plugins/asyncapi/00-intro.md +2 -28
  169. package/dist/docs/plugins/asyncapi/01-installation.md +3 -54
  170. package/dist/docs/plugins/asyncapi/02-plugin-configuration.md +2 -1
  171. package/dist/docs/plugins/aws-glue-registry/00-intro.md +4 -32
  172. package/dist/docs/plugins/aws-glue-registry/00a-installation.md +3 -53
  173. package/dist/docs/plugins/azure-schema-registry/00-intro.md +4 -32
  174. package/dist/docs/plugins/azure-schema-registry/01-installation.md +6 -33
  175. package/dist/docs/plugins/azure-schema-registry/02-plugin-configuration.md +1 -14
  176. package/dist/docs/plugins/azure-schema-registry/04-examples.md +0 -2
  177. package/dist/docs/plugins/backstage/00-overview.md +1 -7
  178. package/dist/docs/plugins/backstage/01-get-started.md +6 -15
  179. package/dist/docs/plugins/backstage/06-configuration.md +2 -8
  180. package/dist/docs/plugins/confluent-schema-registry/00-intro.md +2 -29
  181. package/dist/docs/plugins/confluent-schema-registry/01-installation.md +2 -26
  182. package/dist/docs/plugins/eventbridge/00-intro.md +0 -4
  183. package/dist/docs/plugins/eventbridge/00a-installation.md +1 -87
  184. package/dist/docs/plugins/eventbridge/03-api.md +2 -20
  185. package/dist/docs/plugins/github/00-intro.md +0 -31
  186. package/dist/docs/plugins/github/01-installation.md +2 -34
  187. package/dist/docs/plugins/graphql/00-intro.md +0 -30
  188. package/dist/docs/plugins/graphql/01-installation.md +1 -53
  189. package/dist/docs/plugins/graphql/02-plugin-configuration.md +0 -1
  190. package/dist/docs/plugins/hookdeck/01-intro.md +1 -1
  191. package/dist/docs/plugins/openapi/00-intro.md +0 -30
  192. package/dist/docs/plugins/openapi/01-installation.md +1 -57
  193. package/dist/docs/plugins/openapi/02-plugin-configuration.md +0 -5
  194. package/dist/docs/plugins/openapi/03-features.md +0 -4
  195. package/dist/eventcatalog-config-file-utils.cjs +34 -41
  196. package/dist/eventcatalog-config-file-utils.d.cts +56 -58
  197. package/dist/eventcatalog-config-file-utils.d.ts +56 -58
  198. package/dist/eventcatalog-config-file-utils.js +1 -1
  199. package/dist/eventcatalog.cjs +340 -249
  200. package/dist/eventcatalog.config.d.cts +18 -15
  201. package/dist/eventcatalog.config.d.ts +18 -15
  202. package/dist/eventcatalog.js +51 -33
  203. package/dist/features.cjs +36 -49
  204. package/dist/features.d.cts +1 -3
  205. package/dist/features.d.ts +1 -3
  206. package/dist/features.js +4 -6
  207. package/dist/federation/federate.cjs +37 -44
  208. package/dist/federation/federate.js +5 -5
  209. package/dist/federation/source-provider.js +2 -2
  210. package/dist/generate.cjs +37 -42
  211. package/dist/generate.js +4 -4
  212. package/dist/resolve-catalog-dependencies.cjs +34 -41
  213. package/dist/resolve-catalog-dependencies.js +2 -2
  214. package/dist/runtime-dependencies/@eventcatalog__visualiser__studio-fonts.css.mjs +3 -0
  215. package/dist/runtime-dependencies/@eventcatalog__visualiser__studio.css.mjs +3 -0
  216. package/dist/runtime-dependencies/@eventcatalog__visualiser__studio.mjs +3 -0
  217. package/dist/runtime-dependencies/htmlparser2.mjs +3 -0
  218. package/dist/runtime-dependencies/manifest.json +5 -1
  219. package/dist/runtime-dependencies/react-syntax-highlighter__dist__cjs__create-element.js.mjs +3 -0
  220. package/dist/utils/child-process-signals.cjs +53 -0
  221. package/dist/utils/child-process-signals.d.cts +19 -0
  222. package/dist/utils/child-process-signals.d.ts +19 -0
  223. package/dist/utils/child-process-signals.js +6 -0
  224. package/dist/utils/cli-logger.cjs +1 -1
  225. package/dist/utils/cli-logger.js +2 -2
  226. package/dist/utils/license-status.cjs +11 -4
  227. package/dist/utils/license-status.d.cts +3 -2
  228. package/dist/utils/license-status.d.ts +3 -2
  229. package/dist/utils/license-status.js +1 -1
  230. package/eventcatalog/astro.config.mjs +21 -1
  231. package/eventcatalog/integrations/config-loader.mjs +56 -58
  232. package/eventcatalog/integrations/skip-startup-reload.mjs +31 -0
  233. package/eventcatalog/integrations/stable-dependency-order.mjs +29 -0
  234. package/eventcatalog/integrations/storage.mjs +20 -0
  235. package/eventcatalog/integrations/studio-server.mjs +4 -1
  236. package/eventcatalog/src/components/CatalogGraph/CatalogForceGraph.tsx +39 -0
  237. package/eventcatalog/src/components/ChatPanel/ChatPanel.tsx +2 -0
  238. package/eventcatalog/src/components/Homepage/CatalogDashboard.astro +342 -0
  239. package/eventcatalog/src/components/MDX/NodeGraph/AstroNodeGraph.tsx +60 -4
  240. package/eventcatalog/src/components/MDX/NodeGraph/NodeGraph.astro +5 -1
  241. package/eventcatalog/src/components/NavigationProgress.astro +7 -0
  242. package/eventcatalog/src/components/SchemaExplorer/ApiContentViewer.tsx +2 -0
  243. package/eventcatalog/src/components/SchemaExplorer/ExamplesViewer.tsx +2 -0
  244. package/eventcatalog/src/components/SchemaExplorer/SchemaCodeModal.tsx +2 -0
  245. package/eventcatalog/src/components/SchemaExplorer/SchemaContentViewer.tsx +2 -0
  246. package/eventcatalog/src/components/Search/SearchDataLoader.astro +16 -28
  247. package/eventcatalog/src/components/Search/SearchModal.tsx +2 -10
  248. package/eventcatalog/src/components/Search/search-utils.ts +26 -0
  249. package/eventcatalog/src/components/Seo.astro +5 -1
  250. package/eventcatalog/src/components/Settings/AssistantSettingsForm.tsx +53 -48
  251. package/eventcatalog/src/components/Settings/GeneralSettingsForm.tsx +183 -178
  252. package/eventcatalog/src/components/Settings/LicenseSettings.tsx +140 -31
  253. package/eventcatalog/src/components/Settings/LlmAccessSettingsForm.tsx +40 -35
  254. package/eventcatalog/src/components/Settings/LogoUpload.tsx +1 -1
  255. package/eventcatalog/src/components/Settings/McpSettingsForm.tsx +9 -8
  256. package/eventcatalog/src/components/Settings/Row.tsx +7 -4
  257. package/eventcatalog/src/components/Settings/SettingsShared.tsx +3 -3
  258. package/eventcatalog/src/components/SideNav/NestedSideBar/index.tsx +37 -76
  259. package/eventcatalog/src/components/SideNav/NestedSideBar/storage.ts +2 -0
  260. package/eventcatalog/src/components/SideNav/NestedSideBar/utils.ts +122 -1
  261. package/eventcatalog/src/components/SideNav/SideNav.astro +9 -1
  262. package/eventcatalog/src/components/TrialBadge.astro +20 -9
  263. package/eventcatalog/src/content.config.ts +19 -2
  264. package/eventcatalog/src/features/auth/error.astro +4 -2
  265. package/eventcatalog/src/features/auth/login.astro +2 -1
  266. package/eventcatalog/src/features/auth/middleware/middleware-auth.ts +21 -1
  267. package/eventcatalog/src/features/auth/unauthorized.astro +1 -1
  268. package/eventcatalog/src/features/fields/pages/fields.astro +1 -1
  269. package/eventcatalog/src/features/integrations/eventcatalog-features.ts +13 -7
  270. package/eventcatalog/src/features/mcp/apps/architecture-diagram/node-chat.tsx +6 -45
  271. package/eventcatalog/src/features/mcp/apps/canvas/shared.ts +3 -3
  272. package/eventcatalog/src/features/mcp/apps/canvas/styles.css +3 -1
  273. package/eventcatalog/src/features/mcp/apps/canvas/view.tsx +7 -5
  274. package/eventcatalog/src/features/mcp/apps/generated/canvas.html +123 -98
  275. package/eventcatalog/src/features/mcp/apps/generated/viewer.html +118 -101
  276. package/eventcatalog/src/features/mcp/mcp-server.ts +20 -4
  277. package/eventcatalog/src/features/server/start.ts +25 -0
  278. package/eventcatalog/src/features/storage/database.ts +88 -0
  279. package/eventcatalog/src/features/storage/migrations.ts +85 -0
  280. package/eventcatalog/src/features/storage/sql/database.sql +5 -0
  281. package/eventcatalog/src/features/storage/sql/migrations/0001-studio-canvases.sql +12 -0
  282. package/eventcatalog/src/features/storage/sql/migrations.sql +15 -0
  283. package/eventcatalog/src/features/storage/sql.ts +28 -0
  284. package/eventcatalog/src/features/studio/agent-choreography.ts +13 -10
  285. package/eventcatalog/src/features/studio/agents.ts +28 -0
  286. package/eventcatalog/src/features/studio/api/canvases-api.ts +219 -0
  287. package/eventcatalog/src/features/studio/api/canvases.ts +25 -0
  288. package/eventcatalog/src/features/studio/api/client.ts +40 -0
  289. package/eventcatalog/src/features/studio/canvas-actions.ts +160 -34
  290. package/eventcatalog/src/features/studio/canvas-preview.ts +1 -2
  291. package/eventcatalog/src/features/studio/catalog.ts +16 -14
  292. package/eventcatalog/src/features/studio/components/CanvasHeader.tsx +274 -105
  293. package/eventcatalog/src/features/studio/components/CanvasStatusMenu.tsx +15 -14
  294. package/eventcatalog/src/features/studio/components/ConnectAgentDialog.tsx +272 -119
  295. package/eventcatalog/src/features/studio/components/ConnectionsChooser.tsx +1 -2
  296. package/eventcatalog/src/features/studio/components/DeleteCanvasDialog.tsx +65 -0
  297. package/eventcatalog/src/features/studio/components/Dialog.tsx +60 -0
  298. package/eventcatalog/src/features/studio/components/JoinForm.tsx +101 -26
  299. package/eventcatalog/src/features/studio/components/LeftPanel.tsx +122 -230
  300. package/eventcatalog/src/features/studio/components/NodeDetails.tsx +183 -0
  301. package/eventcatalog/src/features/studio/components/OpenInStudioDialog.tsx +79 -0
  302. package/eventcatalog/src/features/studio/components/Presence.tsx +52 -45
  303. package/eventcatalog/src/features/studio/components/ShareDialog.tsx +277 -141
  304. package/eventcatalog/src/features/studio/components/ShortcutsDialog.tsx +41 -0
  305. package/eventcatalog/src/features/studio/components/StudioDesigner.tsx +1314 -385
  306. package/eventcatalog/src/features/studio/components/StudioNotice.astro +24 -0
  307. package/eventcatalog/src/features/studio/document-name.ts +7 -0
  308. package/eventcatalog/src/features/studio/from-visualiser.ts +138 -0
  309. package/eventcatalog/src/features/studio/hooks/presence-sender.ts +19 -2
  310. package/eventcatalog/src/features/studio/hooks/use-canvas-webmcp.ts +9 -3
  311. package/eventcatalog/src/features/studio/hooks/use-comments.ts +2 -2
  312. package/eventcatalog/src/features/studio/hooks/use-follow-camera.ts +8 -3
  313. package/eventcatalog/src/features/studio/hooks/use-studio-flow.ts +244 -32
  314. package/eventcatalog/src/features/studio/identity.ts +25 -1
  315. package/eventcatalog/src/features/studio/limits.ts +2 -0
  316. package/eventcatalog/src/features/studio/pages/[id].astro +42 -16
  317. package/eventcatalog/src/features/studio/pages/index.astro +596 -373
  318. package/eventcatalog/src/features/studio/pages/webmcp-relay.ts +12 -15
  319. package/eventcatalog/src/features/studio/server/canvas-mcp.ts +8 -23
  320. package/eventcatalog/src/features/studio/server/runtime.ts +150 -46
  321. package/eventcatalog/src/features/studio/server/sql/storage.sql +18 -0
  322. package/eventcatalog/src/features/studio/server/storage.ts +53 -73
  323. package/eventcatalog/src/features/studio/webmcp-relay/LICENSE +21 -0
  324. package/eventcatalog/src/features/studio/webmcp-relay/README.md +5 -0
  325. package/eventcatalog/src/features/studio/webmcp-relay/embed.js +2 -0
  326. package/eventcatalog/src/features/studio/webmcp-relay/widget.html +10 -0
  327. package/eventcatalog/src/features/studio/webmcp-relay/widget.js +1 -0
  328. package/eventcatalog/src/features/tools/catalog-tools.ts +3 -1
  329. package/eventcatalog/src/layouts/BaseLayout.astro +4 -4
  330. package/eventcatalog/src/layouts/SettingsLayout.astro +2 -2
  331. package/eventcatalog/src/layouts/VerticalSideBarLayout.astro +3 -2
  332. package/eventcatalog/src/pages/_index.astro +5 -342
  333. package/eventcatalog/src/pages/architecture/[type]/[id]/[version]/_index.data.spec.ts +2 -3
  334. package/eventcatalog/src/pages/architecture/[type]/[id]/[version]/_index.data.ts +0 -7
  335. package/eventcatalog/src/pages/architecture/[type]/[id]/[version]/index.astro +3 -1
  336. package/eventcatalog/src/pages/diagrams/[id]/[version]/_index.data.ts +0 -7
  337. package/eventcatalog/src/pages/diagrams/[id]/[version]/embed.astro +1 -0
  338. package/eventcatalog/src/pages/diagrams/[id]/[version]/index.astro +1 -0
  339. package/eventcatalog/src/pages/directory/[type]/_index.data.ts +5 -7
  340. package/eventcatalog/src/pages/directory/[type]/index.astro +3 -1
  341. package/eventcatalog/src/pages/discover/[type]/_index.data.ts +5 -7
  342. package/eventcatalog/src/pages/discover/[type]/index.astro +3 -1
  343. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/[docVersion]/_index.data.ts +0 -7
  344. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/[docVersion]/index.astro +1 -0
  345. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/_index.data.ts +0 -7
  346. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/index.astro +1 -0
  347. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/_index.data.ts +0 -7
  348. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/asyncapi/[filename].astro +3 -1
  349. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/asyncapi/_[filename].data.ts +0 -7
  350. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/changelog/_index.data.ts +0 -7
  351. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/changelog/index.astro +1 -0
  352. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/examples/[...filename].astro +1 -0
  353. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/examples/_[...filename].data.ts +0 -4
  354. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/field-lineage/_index.data.ts +0 -7
  355. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/field-lineage/index.astro +1 -0
  356. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/graphql/[filename].astro +3 -1
  357. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/graphql/_[filename].data.ts +0 -7
  358. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/index.astro +1 -0
  359. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/resources/_index.data.spec.ts +2 -3
  360. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/resources/_index.data.ts +0 -7
  361. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/resources/index.astro +1 -0
  362. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/spec/[filename].astro +1 -0
  363. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/spec/_[filename].data.ts +0 -7
  364. package/eventcatalog/src/pages/docs/[type]/[id]/_index.data.ts +0 -7
  365. package/eventcatalog/src/pages/docs/[type]/[id]/index.astro +2 -1
  366. package/eventcatalog/src/pages/docs/[type]/[id]/language/[dictionaryId]/_index.data.ts +0 -7
  367. package/eventcatalog/src/pages/docs/[type]/[id]/language/[dictionaryId]/index.astro +1 -0
  368. package/eventcatalog/src/pages/docs/[type]/[id]/language/_index.data.ts +0 -7
  369. package/eventcatalog/src/pages/docs/[type]/[id]/language/index.astro +1 -0
  370. package/eventcatalog/src/pages/docs/custom/[...path]/_index.data.ts +0 -7
  371. package/eventcatalog/src/pages/docs/custom/[...path]/index.astro +1 -0
  372. package/eventcatalog/src/pages/docs/services/[id]/[docType]/[docId]/index.astro +1 -1
  373. package/eventcatalog/src/pages/docs/services/[id]/[version]/resources/index.astro +1 -0
  374. package/eventcatalog/src/pages/docs/services/[id]/asyncapi/[filename].astro +1 -1
  375. package/eventcatalog/src/pages/docs/services/[id]/changelog/index.astro +1 -1
  376. package/eventcatalog/src/pages/docs/services/[id]/graphql/[filename].astro +1 -1
  377. package/eventcatalog/src/pages/docs/services/[id]/spec/[filename].astro +1 -1
  378. package/eventcatalog/src/pages/docs/teams/[id]/_index.data.ts +0 -7
  379. package/eventcatalog/src/pages/docs/teams/[id]/index.astro +1 -0
  380. package/eventcatalog/src/pages/docs/users/[id]/_index.data.ts +0 -7
  381. package/eventcatalog/src/pages/docs/users/[id]/index.astro +1 -0
  382. package/eventcatalog/src/pages/index.astro +4 -2
  383. package/eventcatalog/src/pages/schemas/[type]/[id]/[version]/_index.data.ts +0 -7
  384. package/eventcatalog/src/pages/schemas/[type]/[id]/[version]/index.astro +9 -1
  385. package/eventcatalog/src/pages/schemas/explorer/_index.data.ts +0 -7
  386. package/eventcatalog/src/pages/schemas/explorer/index.astro +4 -2
  387. package/eventcatalog/src/pages/settings/license.astro +9 -1
  388. package/eventcatalog/src/pages/triggers/[type]/[id]/[version]/_index.data.ts +0 -7
  389. package/eventcatalog/src/pages/triggers/[type]/[id]/[version]/index.astro +1 -0
  390. package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/_index.data.ts +0 -7
  391. package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/data/_index.data.ts +0 -7
  392. package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/data/index.astro +1 -0
  393. package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/entity-map/_index.data.ts +0 -7
  394. package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/entity-map/index.astro +1 -0
  395. package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/index.astro +1 -0
  396. package/eventcatalog/src/pages/visualiser/[type]/[id]/_index.data.ts +38 -0
  397. package/eventcatalog/src/pages/visualiser/[type]/[id]/index.astro +18 -41
  398. package/eventcatalog/src/pages/visualiser/designs/[id]/_index.data.ts +0 -7
  399. package/eventcatalog/src/pages/visualiser/designs/[id]/index.astro +2 -1
  400. package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/entity-map/_index.data.ts +0 -7
  401. package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/entity-map/index.astro +1 -0
  402. package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/index.astro +1 -0
  403. package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/systems-context/_index.data.ts +0 -7
  404. package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/systems-context/index.astro +1 -0
  405. package/eventcatalog/src/pages/visualiser/systems/[id]/[version]/context/_index.data.ts +0 -7
  406. package/eventcatalog/src/pages/visualiser/systems/[id]/[version]/context/index.astro +1 -0
  407. package/eventcatalog/src/pages/visualiser/systems/[id]/[version]/index.astro +1 -0
  408. package/eventcatalog/src/types/react-syntax-highlighter.d.ts +10 -0
  409. package/eventcatalog/src/utils/collections/flows.ts +20 -7
  410. package/eventcatalog/src/utils/collections/resource-owners.ts +8 -2
  411. package/eventcatalog/src/utils/collections/resources.ts +2 -0
  412. package/eventcatalog/src/utils/collections/util.ts +8 -4
  413. package/eventcatalog/src/utils/git.ts +11 -0
  414. package/eventcatalog/src/utils/homepage-dashboard.ts +143 -0
  415. package/eventcatalog/src/utils/license.ts +1 -1
  416. package/eventcatalog/src/utils/link-validation.ts +25 -19
  417. package/eventcatalog/src/utils/node-graphs/domain-entity-map.ts +3 -1
  418. package/eventcatalog/src/utils/node-graphs/domain-levels-node-graph.ts +3 -3
  419. package/eventcatalog/src/utils/node-graphs/field-node-graph.ts +4 -2
  420. package/eventcatalog/src/utils/node-graphs/layout-node-graph.ts +20 -1
  421. package/eventcatalog/src/utils/node-graphs/node-resource.ts +67 -0
  422. package/eventcatalog/src/utils/node-graphs/systems-node-graph.ts +1 -1
  423. package/eventcatalog/src/utils/page-loaders/hybrid-page.ts +4 -15
  424. package/eventcatalog/src/utils/page-title.ts +15 -0
  425. package/eventcatalog/src/utils/syntax-highlighter-renderer.ts +64 -0
  426. package/eventcatalog/src/utils/trial.ts +13 -0
  427. package/package.json +11 -11
  428. package/dist/docs/development/ask-your-architecture/05-skills/02-installation.md +0 -60
  429. package/dist/docs/development/ask-your-architecture/05-skills/_category_.json +0 -11
  430. package/dist/docs/development/ask-your-architecture/06-slack-integration/01-introduction.md +0 -63
  431. package/dist/docs/development/ask-your-architecture/06-slack-integration/02-slack-app-setup.md +0 -154
  432. package/dist/docs/development/ask-your-architecture/06-slack-integration/03-installation.md +0 -169
  433. package/dist/docs/development/ask-your-architecture/06-slack-integration/04-deployment.md +0 -236
  434. package/dist/docs/development/ask-your-architecture/06-slack-integration/05-usage.md +0 -140
  435. package/dist/docs/development/ask-your-architecture/06-slack-integration/06-troubleshooting.md +0 -268
  436. package/dist/docs/development/ask-your-architecture/06-slack-integration/_category_.json +0 -13
  437. package/dist/docs/development/guides/domains/06-visualize-domains/01-domain-integration-map.md +0 -40
  438. package/dist/runtime-dependencies/@mcp-b__webmcp-local-relay.mjs +0 -3
  439. package/eventcatalog/src/features/studio/canvas-doc.ts +0 -409
  440. package/eventcatalog/src/features/studio/clipboard.ts +0 -97
  441. package/eventcatalog/src/features/studio/components/CanvasControls.tsx +0 -154
  442. package/eventcatalog/src/features/studio/components/Comments.tsx +0 -770
  443. package/eventcatalog/src/features/studio/components/ContainerChooser.tsx +0 -145
  444. package/eventcatalog/src/features/studio/components/DragGhost.tsx +0 -115
  445. package/eventcatalog/src/features/studio/components/Picture.tsx +0 -21
  446. package/eventcatalog/src/features/studio/components/PropertiesPanel.tsx +0 -212
  447. package/eventcatalog/src/features/studio/components/canvas-nodes.tsx +0 -255
  448. package/eventcatalog/src/features/studio/components/icons.ts +0 -53
  449. package/eventcatalog/src/features/studio/components/status.ts +0 -51
  450. package/eventcatalog/src/features/studio/edges.ts +0 -56
  451. package/eventcatalog/src/features/studio/flow-state.ts +0 -92
  452. package/eventcatalog/src/features/studio/grouping.ts +0 -226
  453. package/eventcatalog/src/features/studio/layout.ts +0 -42
  454. package/eventcatalog/src/features/studio/levels.ts +0 -282
  455. package/eventcatalog/src/features/studio/node-types.ts +0 -205
  456. package/eventcatalog/src/features/studio/pages/new.astro +0 -24
  457. package/eventcatalog/src/features/studio/pages/wake.ts +0 -15
  458. package/eventcatalog/src/features/studio/placement.ts +0 -197
  459. package/eventcatalog/src/features/studio/studio.css +0 -273
  460. package/dist/{chunk-A2RZR3U4.js → chunk-6K7XZAYI.js} +3 -3
@@ -0,0 +1,54 @@
1
+ // src/analytics/studio-usage.js
2
+ import fs from "fs";
3
+ import path from "path";
4
+ var DAY_IN_MS = 24 * 60 * 60 * 1e3;
5
+ var DEFAULT_DATABASE_PATH = ".eventcatalog/eventcatalog.db";
6
+ var getStudioMode = (configFile) => {
7
+ const enabled = configFile.studio?.enabled;
8
+ if (enabled === false) return "off";
9
+ return configFile.output === "server" && enabled === true ? "server" : "dev";
10
+ };
11
+ var getStorageType = (configFile) => configFile.storage?.type || "memory";
12
+ var loadSqlite = () => {
13
+ const emitWarning = process.emitWarning;
14
+ process.emitWarning = function(warning, ...args) {
15
+ const type = typeof args[0] === "object" ? args[0]?.type : args[0];
16
+ const message = typeof warning === "string" ? warning : warning?.message;
17
+ if (type === "ExperimentalWarning" && message?.startsWith("SQLite")) return;
18
+ return emitWarning.call(this, warning, ...args);
19
+ };
20
+ try {
21
+ return process.getBuiltinModule?.("node:sqlite");
22
+ } catch {
23
+ return void 0;
24
+ } finally {
25
+ process.emitWarning = emitWarning;
26
+ }
27
+ };
28
+ var UNKNOWN = "canvases:unknown";
29
+ var serializeStudioUsage = (projectDirectory, configFile, now = Date.now()) => {
30
+ if (getStudioMode(configFile) === "off" || getStorageType(configFile) !== "sqlite") return UNKNOWN;
31
+ const file = path.resolve(projectDirectory, configFile.storage.path ?? DEFAULT_DATABASE_PATH);
32
+ if (!fs.existsSync(file)) return "canvases:0,changed7d:0,changed30d:0,deleted:0";
33
+ let database;
34
+ try {
35
+ const sqlite = loadSqlite();
36
+ if (!sqlite?.DatabaseSync) return UNKNOWN;
37
+ database = new sqlite.DatabaseSync(file, { readOnly: true });
38
+ const canvases = database.prepare(
39
+ "SELECT COUNT(*) AS total, SUM(updated_at >= ?) AS changed7d, SUM(updated_at >= ?) AS changed30d FROM studio_canvases"
40
+ ).get(now - 7 * DAY_IN_MS, now - 30 * DAY_IN_MS);
41
+ const { deleted } = database.prepare("SELECT COUNT(*) AS deleted FROM studio_deleted_canvases").get();
42
+ return `canvases:${canvases.total},changed7d:${canvases.changed7d ?? 0},changed30d:${canvases.changed30d ?? 0},deleted:${deleted}`;
43
+ } catch {
44
+ return UNKNOWN;
45
+ } finally {
46
+ database?.close();
47
+ }
48
+ };
49
+
50
+ export {
51
+ getStudioMode,
52
+ getStorageType,
53
+ serializeStudioUsage
54
+ };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  VERSION
3
- } from "./chunk-EUNQJO3J.js";
3
+ } from "./chunk-RE7UTPWH.js";
4
4
 
5
5
  // src/utils/cli-logger.ts
6
6
  import pc from "picocolors";
@@ -1,22 +1,27 @@
1
1
  import {
2
- raiseEvent
3
- } from "./chunk-4CFZUHGG.js";
2
+ getLicenseAnalytics
3
+ } from "./chunk-AD7CL772.js";
4
4
  import {
5
5
  countResources,
6
6
  hashCatalogContent,
7
7
  serializeCounts
8
8
  } from "./chunk-ZAZHAVKB.js";
9
+ import {
10
+ getStorageType,
11
+ getStudioMode,
12
+ serializeStudioUsage
13
+ } from "./chunk-CA6WCQ2T.js";
14
+ import {
15
+ raiseEvent
16
+ } from "./chunk-NIVST4WY.js";
9
17
  import {
10
18
  TELEMETRY_REQUEST_TIMEOUT_MS,
11
19
  isTelemetryDisabled
12
20
  } from "./chunk-CPW6G62V.js";
13
- import {
14
- getLicenseAnalytics
15
- } from "./chunk-AWOO63ME.js";
16
21
  import {
17
22
  getEventCatalogConfigFile,
18
23
  verifyRequiredFieldsAreInCatalogConfigFile
19
- } from "./chunk-RFIXKATC.js";
24
+ } from "./chunk-4G7FSRPN.js";
20
25
 
21
26
  // src/analytics/log-build.js
22
27
  var isMCPEnabled = (configFile) => configFile.output === "server" && (configFile.mcp?.enabled ?? true);
@@ -31,7 +36,9 @@ var getFeatures = async (configFile) => {
31
36
  environments: Array.isArray(configFile.environments) && configFile.environments.length > 0,
32
37
  output: configFile.output || "static",
33
38
  mcp,
34
- mcpAuth: mcp && (configFile.mcp?.auth?.enabled ?? false)
39
+ mcpAuth: mcp && (configFile.mcp?.auth?.enabled ?? false),
40
+ studio: getStudioMode(configFile),
41
+ storage: getStorageType(configFile)
35
42
  };
36
43
  };
37
44
  var getDirectoryProvider = (source) => {
@@ -132,7 +139,8 @@ var main = async (projectDir, { command = "build", license } = {}) => {
132
139
  generators: generatorNames.toString(),
133
140
  features: Object.keys(features).map((feature) => `${feature}:${features[feature]}`).join(","),
134
141
  directorySources: serializeDirectorySources(configFile),
135
- resources: serializeCounts(resourceCounts)
142
+ resources: serializeCounts(resourceCounts),
143
+ studio: serializeStudioUsage(projectDir, configFile)
136
144
  },
137
145
  configFile
138
146
  );
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-CPW6G62V.js";
5
5
  import {
6
6
  VERSION
7
- } from "./chunk-EUNQJO3J.js";
7
+ } from "./chunk-RE7UTPWH.js";
8
8
 
9
9
  // src/analytics/analytics.js
10
10
  import os from "os";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getEventCatalogConfigFile
3
- } from "./chunk-RFIXKATC.js";
3
+ } from "./chunk-4G7FSRPN.js";
4
4
 
5
5
  // src/features.ts
6
6
  import { join } from "path";
@@ -13,10 +13,6 @@ var isOutputServer = async () => {
13
13
  const config = await getEventCatalogConfigFile(process.env.PROJECT_DIR || "");
14
14
  return config?.output === "server";
15
15
  };
16
- var isStudioEnabled = async () => {
17
- const config = await getEventCatalogConfigFile(process.env.PROJECT_DIR || "");
18
- return config?.output === "server" && config?.studio?.enabled === true;
19
- };
20
16
  var isIndexedSearchEnabled = async () => {
21
17
  const config = await getEventCatalogConfigFile(process.env.PROJECT_DIR || "");
22
18
  return config?.search?.type === "indexed";
@@ -30,7 +26,6 @@ var isAuthEnabled = async () => {
30
26
  export {
31
27
  getProjectOutDir,
32
28
  isOutputServer,
33
- isStudioEnabled,
34
29
  isIndexedSearchEnabled,
35
30
  isAuthEnabled
36
31
  };
@@ -1,7 +1,3 @@
1
- import {
2
- getFederationDiagnostics,
3
- resolveFederationRules
4
- } from "./chunk-JJPB6EOZ.js";
5
1
  import {
6
2
  withFederationOutputTransaction
7
3
  } from "./chunk-WRNH5C3U.js";
@@ -10,13 +6,17 @@ import {
10
6
  } from "./chunk-5EPNFDT5.js";
11
7
  import {
12
8
  createFederationSourceProvider
13
- } from "./chunk-A2RZR3U4.js";
9
+ } from "./chunk-6K7XZAYI.js";
14
10
  import {
15
11
  createFederationContentCache
16
12
  } from "./chunk-R7Z5ALYI.js";
13
+ import {
14
+ getFederationDiagnostics,
15
+ resolveFederationRules
16
+ } from "./chunk-JJPB6EOZ.js";
17
17
  import {
18
18
  getEventCatalogConfigFile
19
- } from "./chunk-RFIXKATC.js";
19
+ } from "./chunk-4G7FSRPN.js";
20
20
 
21
21
  // src/federation/federate.ts
22
22
  import { createHash } from "crypto";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getEventCatalogConfigFile
3
- } from "./chunk-RFIXKATC.js";
3
+ } from "./chunk-4G7FSRPN.js";
4
4
 
5
5
  // src/resolve-catalog-dependencies.js
6
6
  import path from "path";
@@ -1,5 +1,5 @@
1
1
  // package.json
2
- var version = "5.0.0-beta.9";
2
+ var version = "5.0.0";
3
3
 
4
4
  // src/constants.ts
5
5
  var VERSION = version;
@@ -0,0 +1,29 @@
1
+ // src/utils/child-process-signals.ts
2
+ import { constants } from "os";
3
+ var FORWARDED_SIGNALS = ["SIGINT", "SIGTERM", "SIGHUP"];
4
+ var isRunning = (child) => child.exitCode === null && child.signalCode === null;
5
+ var stopChildWithParent = (child, parent = process) => {
6
+ let received;
7
+ const onSignal = (signal) => {
8
+ received = signal;
9
+ if (isRunning(child)) child.kill(signal);
10
+ };
11
+ const onExit = () => {
12
+ if (isRunning(child)) child.kill("SIGTERM");
13
+ };
14
+ for (const signal of FORWARDED_SIGNALS) parent.on(signal, onSignal);
15
+ parent.on("exit", onExit);
16
+ return {
17
+ childClosed: () => {
18
+ for (const signal of FORWARDED_SIGNALS) parent.off(signal, onSignal);
19
+ parent.off("exit", onExit);
20
+ if (!received) return false;
21
+ parent.exit(128 + constants.signals[received]);
22
+ return true;
23
+ }
24
+ };
25
+ };
26
+
27
+ export {
28
+ stopChildWithParent
29
+ };
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  logger
3
- } from "./chunk-GAHKCOQM.js";
3
+ } from "./chunk-JZN4RSMF.js";
4
4
  import {
5
5
  cleanup,
6
6
  getEventCatalogConfigFile
7
- } from "./chunk-RFIXKATC.js";
7
+ } from "./chunk-4G7FSRPN.js";
8
8
 
9
9
  // src/generate.js
10
10
  import path from "path";
@@ -54,10 +54,12 @@ var generate = async (PROJECT_DIRECTORY) => {
54
54
  for (const { plugin } of errors) {
55
55
  logger.error(` - ${plugin}`, "generator");
56
56
  }
57
+ process.exitCode = 1;
57
58
  }
58
59
  } catch (error) {
59
60
  console.error(error);
60
61
  await cleanup(PROJECT_DIRECTORY);
62
+ process.exitCode = 1;
61
63
  }
62
64
  };
63
65
 
@@ -25,7 +25,7 @@ __export(constants_exports, {
25
25
  module.exports = __toCommonJS(constants_exports);
26
26
 
27
27
  // package.json
28
- var version = "5.0.0-beta.9";
28
+ var version = "5.0.0";
29
29
 
30
30
  // src/constants.ts
31
31
  var VERSION = version;
package/dist/constants.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  VERSION
3
- } from "./chunk-EUNQJO3J.js";
3
+ } from "./chunk-RE7UTPWH.js";
4
4
  export {
5
5
  VERSION
6
6
  };
@@ -339,7 +339,7 @@ module.exports = {
339
339
 
340
340
  ### `navigation` {#navigation}
341
341
 
342
- <AddedIn version="4.0" />
342
+ <AddedIn version="4.0.0" />
343
343
 
344
344
  - Type: `object`
345
345
 
@@ -587,7 +587,7 @@ docs: {
587
587
  Configuration for [EventCatalog Assistant](/docs/development/ask-your-architecture/eventcatalog-assistant/what-is-eventcatalog-assistant).
588
588
 
589
589
  :::info
590
- The `chat` property requires a Scale plan and `output: 'server'` to take effect.
590
+ The `chat` property requires `output: 'server'` to take effect.
591
591
  :::
592
592
 
593
593
  ```js title="eventcatalog.config.js"
@@ -608,7 +608,7 @@ module.exports = {
608
608
 
609
609
  Configuration for the built-in EventCatalog MCP server.
610
610
 
611
- The MCP server requires a Scale plan and `output: 'server'`. When those prerequisites are met, it is enabled by default. Set
611
+ The MCP server requires `output: 'server'`. When that prerequisite is met, it is enabled by default. Set
612
612
  `mcp.enabled` to `false` to prevent the MCP routes from being registered and hide the MCP connection actions on domain and
613
613
  system pages.
614
614
 
@@ -623,14 +623,62 @@ module.exports = {
623
623
 
624
624
  | Property | Type | Default | Description |
625
625
  |---|---|---|---|
626
- | `mcp.enabled` | `boolean` | `true` | Enables or disables the built-in MCP server when its SSR and Scale prerequisites are met. |
626
+ | `mcp.enabled` | `boolean` | `true` | Enables or disables the built-in MCP server when its SSR prerequisite is met. |
627
627
 
628
628
  See the [MCP server guide](/docs/development/ask-your-architecture/mcp-server/getting-started) for scoped domain and system
629
629
  endpoints, client setup, and OAuth configuration.
630
630
 
631
+ ### `studio` {#studio}
632
+
633
+ <AddedIn version="5.0.0" />
634
+
635
+ - Type: `object`
636
+
637
+ Configuration for [EventCatalog Studio](/docs/development/studio/introduction), the collaborative canvases at `/studio`.
638
+
639
+ Studio is on in `eventcatalog dev`. In production it needs `output: 'server'` and `studio.enabled: true`. Set
640
+ `studio.enabled` to `false` to turn it off everywhere.
641
+
642
+ ```js title="eventcatalog.config.js"
643
+ module.exports = {
644
+ output: 'server',
645
+ studio: {
646
+ enabled: true,
647
+ },
648
+ };
649
+ ```
650
+
651
+ | Option | Type | Default | Description |
652
+ | ------ | ---- | ------- | ----------- |
653
+ | `studio.enabled` | `boolean` | `false` | Turns Studio on in production (`output: 'server'`, served with `eventcatalog start`). Studio is on in `eventcatalog dev` unless this is `false`. |
654
+
655
+ See [Run Studio in production](/docs/development/studio/run-studio-in-production) and the [Studio configuration reference](/docs/development/studio/reference#configuration).
656
+
657
+ ### `storage` {#storage}
658
+
659
+ <AddedIn version="5.0.0" />
660
+
661
+ - Type: `object`
662
+
663
+ Where EventCatalog keeps state between restarts, such as Studio's canvases.
664
+
665
+ ```js title="eventcatalog.config.js"
666
+ module.exports = {
667
+ storage: {
668
+ type: 'sqlite',
669
+ path: '.eventcatalog/eventcatalog.db',
670
+ },
671
+ };
672
+ ```
673
+
674
+ | Option | Type | Default | Description |
675
+ | ------ | ---- | ------- | ----------- |
676
+ | `storage.type` | `'memory'` \| `'sqlite'` | `'memory'` | `'memory'` keeps state while the server runs. `'sqlite'` keeps it in a database file. SQLite needs Node.js 22.13 or later. |
677
+ | `storage.path` | `string` | `'.eventcatalog/eventcatalog.db'` | The database file, relative to your catalog. In a container, put it on a volume so it survives redeploys. |
678
+
631
679
  ### `search` {#search}
632
680
 
633
- <AddedIn version="3.36.0" />
681
+ <AddedIn version="3.36.1" />
634
682
 
635
683
  - Type: `object`
636
684
 
@@ -688,11 +736,13 @@ module.exports = {
688
736
  - Type: `string`
689
737
 
690
738
  :::tip
691
- For Scale plans. This gives you the ability to show your own GitHub repository in EventCatalog (in the header bar).
739
+ This gives you the ability to show your own GitHub repository in EventCatalog (in the header bar).
692
740
  :::
693
741
 
694
742
  URL to your repository for EventCatalog.
695
743
 
744
+ When set, the header shows a link to your repository next to the EventCatalog Discord and GitHub links. The EventCatalog links are always shown.
745
+
696
746
  ```js title="eventcatalog.config.js"
697
747
  module.exports = {
698
748
  repositoryUrl: 'https://github.com/boyney123/eventcatalog-demo',
@@ -962,7 +1012,7 @@ See the [Customize tables](/docs/development/customization/customize-tables) doc
962
1012
 
963
1013
  ### `systems` {#systems}
964
1014
 
965
- <AddedIn version="4.0" />
1015
+ <AddedIn version="4.0.0" />
966
1016
 
967
1017
  - Type: `object`
968
1018
 
@@ -5,10 +5,10 @@ keywords:
5
5
  - EventCatalog introduction
6
6
  sidebar_label: Why EventCatalog?
7
7
  title: Why EventCatalog?
8
- description: EventCatalog is an open source project to help you bring discoverability to your event-driven architecture.
8
+ description: EventCatalog helps you bring discoverability to your event-driven architecture.
9
9
  ---
10
10
 
11
- Software architecture consists of many different primitives including domains, systems, services, APIS, contracts, messages and many more.
11
+ Software architecture consists of many different primitives including [domains](/docs/development/guides/domains/introduction), [systems](/docs/development/guides/systems/introduction), [services](/docs/development/guides/resources/services/introduction), [APIs](/docs/development/guides/resources/schemas/add-specifications-to-services/add-openapi-specifications), [contracts](/docs/development/guides/resources/schemas/what-are-schemas-and-specifications), [messages](/docs/development/guides/resources/messages/what-are-messages) and many more.
12
12
 
13
13
  As systems grow, complexity grows. Documentation becomes important for teams but teams struggle to keep docs in sync, or relevant to what they are trying to model.
14
14
 
@@ -18,11 +18,11 @@ As systems grow, complexity grows. Documentation becomes important for teams but
18
18
 
19
19
  ### What is EventCatalog?
20
20
 
21
- EventCatalog is an open source documentation tool that is built for software architecture.
21
+ EventCatalog is a tool that is built for software architecture.
22
22
 
23
23
  We focus on architecture primitives like domains, systems and resources (e.g services, messages) and let you document your architecture with primitives you are already familiar with.
24
24
 
25
- EventCatalog creates an internal architecture graph of how your systems work. This makes EventCatalog accessible to your AI agents, LLMs and AI workflows and [creates context of your business and architecture](/docs/development/ask-your-architecture/intro).
25
+ EventCatalog creates an internal [architecture graph](/docs/development/guides/architecture-graph) of how your systems work. This makes EventCatalog accessible to your AI agents, LLMs and AI workflows and [creates context of your business and architecture](/docs/development/ask-your-architecture/intro).
26
26
 
27
27
  EventCatalog is technology agnostic, this means you can document and model any systems you have.
28
28
 
@@ -34,20 +34,20 @@ EventCatalog is technology agnostic, this means you can document and model any s
34
34
  - Document high level information for stakeholders while providing lower level details to your teams.
35
35
  - Connect to your AI Agents and AI Workflows. Give your LLMs the context they need.
36
36
  - **Create a documentation solution you can trust**
37
- - Sync documentation from your code with our Agent
38
- - Automate documentation from your OpenAPI, AsyncAPI, or schema registries
37
+ - Sync documentation from your code with the [EventCatalog Agent](/docs/development/ask-your-architecture/agents/code-to-docs)
38
+ - Automate documentation from your [OpenAPI](/integrations/openapi), [AsyncAPI](/integrations/asyncapi), or [schema registries](/integrations)
39
39
  - Use EventCatalog Agent to sync code to docs from your CI/CD workflows.
40
40
  - Write your own automation and plugins with the [EventCatalog SDK](/docs/sdk)
41
41
  - **Help you detect breaking changes before they reach production**
42
- - Use EventCatalog Agent to detect breaking schema changes
42
+ - Use EventCatalog Agent to [detect breaking schema changes](/docs/development/ask-your-architecture/agents/breaking-changes)
43
43
  - Bring your own model and get notified when things break
44
- - **Use natural langugage to query your architecture**
44
+ - **Use natural language to query your architecture**
45
45
  - Connect AI tools to your architecture using [EventCatalog's MCP server](/docs/development/ask-your-architecture/mcp-server/introduction)
46
- - Ask architectural questions grounded in your documented domains, services, events, data products, and schemas
46
+ - Ask architectural questions grounded in your documented domains, services, events, [data products](/docs/development/guides/resources/data-products/introduction), and schemas
47
47
  - **Help your teams understand the bigger picture**
48
48
  - Help business stakeholders understand the bigger picture
49
- - Visualize your architecture and future ideas
50
- - Document key business workflows
49
+ - Visualize your architecture, and design future ideas with [EventCatalog Studio](/docs/development/studio/introduction)
50
+ - Document key business workflows as [flows](/docs/development/guides/resources/flows/introduction)
51
51
 
52
52
  **EventCatalog is self-hosted. You own your data and host it wherever you want.**
53
53
 
@@ -8,17 +8,20 @@ title: Fundamentals
8
8
  description: Understanding the fundamentals of EventCatalog
9
9
  ---
10
10
 
11
- EventCatalog is a self hosted [open source documentation tool](https://github.com/event-catalog/eventcatalog/stargazers) for software architecture. It allows you to document your architecture using software primitives and patterns such as domains, systems and resources rather than random documentation pages (e.g Confluence).
11
+ import CatalogModel from '@site/src/components/CatalogModel';
12
+ import DiagramLevels from '@site/src/components/DiagramLevels';
13
+
14
+ EventCatalog is a self-hosted tool to document, visualize and collaborate on your software architecture. You document it using software primitives and patterns such as [domains](/docs/development/guides/domains/introduction), [systems](/docs/development/guides/systems/introduction) and [resources](/docs/resources), rather than scattered documentation pages (e.g. Confluence).
12
15
 
13
16
  EventCatalog follows the [docs-as-code](https://www.writethedocs.org/guide/docs-as-code/) pattern. Your documentation is stored in code using [markdown (MDX)](https://mdxjs.com/) and stays private, in your own repository and infrastructure.
14
17
 
15
18
  At its core, EventCatalog gives you a small set of building blocks for your documentation.
16
19
 
17
- ![EventCatalog model showing domains, systems, resources, contracts, and ownership](./img/levels-catalog.png)
20
+ <CatalogModel />
18
21
 
19
- - **Domains (Level 1)** - a domain describes a business boundary
20
- - **Systems (Level 2)** - a system is a collection of resources that work together to perform a function.
21
- - **Resources (Level 3)** - individual resources (e.g services, messages, data stores) that can be assigned to systems or domains.
22
+ - **Domains** - a domain describes a business boundary.
23
+ - **Systems** - a system is a collection of resources that work together to perform a function.
24
+ - **Resources** - individual resources (e.g. services, messages, data stores) that can be assigned to systems or domains.
22
25
 
23
26
  :::info What blocks to use?
24
27
  All building blocks are optional in your catalog. It's up to you how you want to model your documentation.
@@ -49,19 +52,23 @@ Teams and users can own domains, systems, resources, and contracts. This makes o
49
52
 
50
53
  ## Levels of detail
51
54
 
52
- Architecture documentation all have different audiences, and EventCatalog can be useful to anyone in your organization.
55
+ Architecture documentation has different audiences, and EventCatalog can be useful to anyone in your organization. Stakeholders want the big picture, and developers want the implementation details.
56
+
57
+ Every diagram in EventCatalog has three levels of detail, **L1**, **L2** and **L3**, and they mean the same thing on every diagram:
58
+
59
+ | Level | What you see | What it answers | Example |
60
+ |-------|--------------|-----------------|---------|
61
+ | **L1** | Domains, systems and the relationships between them | Which business boundaries and systems exist, and how do they depend on each other? | `Shopping` domain, `Cart System` |
62
+ | **L2** | The services and data stores inside them, and how they connect | What runs inside a system, and what does it talk to? | `Cart API`, cart database |
63
+ | **L3** | Everything in L2, plus the messages and channels | What flows between services? | `CartUpdated` event, `cart.events` topic |
53
64
 
54
- You can define a high level of information for stakeholders whilst whilst giving lower level implementation details for developers.
65
+ <DiagramLevels />
55
66
 
56
- | Level | Name | What it answers | Example |
57
- |-------|------|-----------------|---------|
58
- | Level 1 | Domains | High level, what business boundary are we looking at? | Shopping |
59
- | Level 2 | Systems | What software capability exists inside that boundary? | Cart System |
60
- | Level 3 | Resources | What makes up, connects to, or documents that system? | Cart API, cart database, checkout flow |
67
+ When a level doesn't apply to a diagram, it's greyed out. On a service diagram, for example, L1 is greyed out because there are no domains or systems to show above it. Read more in the [domain diagram](/docs/development/guides/domains/visualize-domains/domain-diagram) and [system diagram](/docs/development/guides/systems/system-context-maps) docs.
61
68
 
62
69
  Contracts and ownership sit across these levels. A service can implement an OpenAPI contract. A message can have a schema. A team can own a domain, system, or resource.
63
70
 
64
- This gives different users a way into the same catalog. Architects can start at domains, platform teams can reason about systems, and developers can drill into the resources and contracts they work with every day.
71
+ This gives different users a way into the same catalog. Architects can start at L1, platform teams can explore the services and data stores in L2, and developers can drill into the messages and contracts they work with every day in L3.
65
72
 
66
73
  ## Docs-as-code
67
74
 
@@ -15,12 +15,12 @@ Configuration lives in `eventcatalog.config.js` at the root of your project. You
15
15
 
16
16
  ## Configuring environment variables {#configuring-environment-variables}
17
17
 
18
- Some features need values that should not live directly in `eventcatalog.config.js`, such as license keys or provider credentials.
18
+ Some features need values that should not live directly in `eventcatalog.config.js`, such as API keys or provider credentials.
19
19
 
20
20
  Put those values in a `.env` file in the root of your catalog. EventCatalog loads `.env` when it runs locally and when it builds.
21
21
 
22
22
  ```bash title=".env (example)"
23
- EVENTCATALOG_SCALE_LICENSE_KEY=your-api-key
23
+ OPENAI_API_KEY=your-api-key
24
24
  ```
25
25
 
26
26
  Do not commit real secrets to source control.
@@ -54,6 +54,14 @@ npm run dev
54
54
 
55
55
  Open [http://localhost:3000](http://localhost:3000) to view your catalog.
56
56
 
57
+ :::info Licensing
58
+ EventCatalog v5 is source-available under the [Business Source License](/license). It's free in production for individuals, open-source projects, teaching and research, and organisations under $10M in revenue and under $10M raised. Larger organisations get a 60-day evaluation, then need a [commercial license](/pricing).
59
+
60
+ The "Trial" countdown you see in the header is a reminder. Trying EventCatalog with sample content, like the catalog this command creates, is always free and doesn't start your evaluation. That starts when your catalog documents real systems that people rely on. Your builds never stop working when a trial or license ends.
61
+
62
+ [Licensing FAQ](/license-faq) · [Add your license file](/docs/development/license/license-file)
63
+ :::
64
+
57
65
  ## CLI installation flags
58
66
 
59
67
  You can pass flags to `create-eventcatalog` to customize the catalog that gets created.
@@ -92,7 +100,7 @@ Then ask your AI agent to inspect your codebase and generate EventCatalog docume
92
100
  Look at my directory and generate EventCatalog documentation from information you find.
93
101
  ```
94
102
 
95
- The generated files can be edited like any other EventCatalog documentation. Learn more about [EventCatalog skills](/docs/development/ask-your-architecture/skills/introduction).
103
+ The generated files can be edited like any other EventCatalog documentation. Learn more about [EventCatalog skills](/docs/development/ask-your-architecture/install-skills).
96
104
 
97
105
  ## Optional: Use EventCatalog Editor
98
106
 
@@ -4,7 +4,7 @@ keywords:
4
4
  - EventCatalog introduction
5
5
  sidebar_label: Getting Started
6
6
  title: Getting Started
7
- description: EventCatalog is an open source project to help you bring discoverability to your event-driven architecture.
7
+ description: EventCatalog helps you bring discoverability to your event-driven architecture.
8
8
  hide_title: true
9
9
  hide_table_of_contents: true
10
10
  hide_breadcrumbs: true
@@ -11,11 +11,11 @@ import AddedIn from '@site/src/components/MDX/AddedIn';
11
11
 
12
12
  EventCatalog creates an internal graph of your architecture. Perfect for AI and LLMs.
13
13
 
14
- EventCatalog supports five ways to use AI with your catalog:
14
+ EventCatalog supports six ways to use AI with your catalog:
15
15
 
16
- - [llms.txt](/docs/development/ask-your-architecture/llms.txt) - Give AI tools a machine-readable index of your catalog.
17
- - [schemas.txt](/docs/development/ask-your-architecture/schemas.txt) - Give AI tools access to your schemas and specifications.
18
- - [EventCatalog Assistant](/docs/development/ask-your-architecture/eventcatalog-assistant/what-is-eventcatalog-assistant) - AI Chat in your Catalog.
19
16
  - [EventCatalog MCP Server](/docs/development/ask-your-architecture/mcp-server/introduction) - Connect EventCatalog to Agents through MCP
17
+ - [AI Skills](/docs/development/ask-your-architecture/install-skills) - Install our Skills to help you manage your catalog
20
18
  - [EventCatalog Agent](/docs/development/ask-your-architecture/agents/overview) - CI/CD Agent for breaking changes and doc updates
21
- - [AI Skills](/docs/development/ask-your-architecture/skills/introduction) - Install our Skills to help you manage your catalog
19
+ - [EventCatalog Assistant](/docs/development/ask-your-architecture/eventcatalog-assistant/what-is-eventcatalog-assistant) - AI Chat in your Catalog.
20
+ - [llms.txt](/docs/development/ask-your-architecture/llms.txt) - Give AI tools a machine-readable index of your catalog.
21
+ - [schemas.txt](/docs/development/ask-your-architecture/schemas.txt) - Give AI tools access to your schemas and specifications.
@@ -9,10 +9,6 @@ description: Learn how EventCatalog Assistant helps users explore documentation
9
9
 
10
10
  import AddedIn from '@site/src/components/MDX/AddedIn';
11
11
 
12
- import PlanBanner from '@site/src/components/MDX/PlanBanner';
13
-
14
- <PlanBanner plan="Scale" />
15
-
16
12
  EventCatalog Assistant brings AI chat to your catalog.
17
13
 
18
14
  It is embedded directly into your documentation site, enabling users to quickly find answers, understand your system, and succeed without manually searching through pages.
@@ -8,9 +8,6 @@ description: Configure EventCatalog Assistant
8
8
  ---
9
9
 
10
10
  import AddedIn from '@site/src/components/MDX/AddedIn';
11
- import PlanBanner from '@site/src/components/MDX/PlanBanner';
12
-
13
- <PlanBanner plan="Scale" />
14
11
 
15
12
  **EventCatalog Assistant is shown by default.**
16
13
 
@@ -82,3 +79,18 @@ export const configuration = {
82
79
  ```
83
80
 
84
81
  Once you have configured your model, restart EventCatalog and you can start asking questions about your architecture.
82
+
83
+ ### Troubleshooting
84
+
85
+ #### `eventcatalog.chat.js` fails to load
86
+
87
+ <AddedIn version="5.0.0" />
88
+
89
+ If your catalog has an `eventcatalog.chat.js` file but it fails to load (for example, a package it imports isn't installed),
90
+ the assistant explains the problem instead of answering:
91
+
92
+ - **In `eventcatalog dev`**, the assistant shows why the file didn't load and the steps to fix it: install the packages your
93
+ `eventcatalog.chat.js` imports (for example `npm install ai @ai-sdk/anthropic`), add the provider's API key to your `.env`
94
+ file, and restart EventCatalog.
95
+ - **Everywhere else**, the reason is not shown to readers. The assistant tells them that the catalog owner can find the cause
96
+ in the server logs, under `Error loading chat configuration`.
@@ -11,11 +11,8 @@ title: Custom Tools
11
11
  description: Extend EventCatalog Assistant with custom tools to bring real-time data, metrics, and integrations into your architecture conversations
12
12
  ---
13
13
 
14
- import PlanBanner from '@site/src/components/MDX/PlanBanner';
15
14
  import AddedIn from '@site/src/components/MDX/AddedIn';
16
15
 
17
- <PlanBanner plan="Scale" />
18
-
19
16
  EventCatalog Assistant comes with built-in tools that allow the AI to search and understand your architecture documentation. But what if you could go beyond static documentation and bring **real-time data** directly into your conversations?
20
17
 
21
18
  With custom tools, you can extend the assistant to query your production metrics, check service health, look up on-call engineers, fetch data from your databases, and much more.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "label": "EventCatalog Assistant",
3
- "position": 4,
3
+ "position": 5,
4
4
  "collapsible": true,
5
5
  "collapsed": true,
6
6
  "link": {
@@ -1,5 +1,5 @@
1
1
  ---
2
- sidebar_position: 2
2
+ sidebar_position: 6
3
3
  keywords:
4
4
  - llms.txt
5
5
  - AI