@eventcatalog/core 4.0.0-beta.1 → 4.0.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/bin/eventcatalog.config.d.ts +1 -1
  2. package/dist/analytics/analytics.cjs +1 -1
  3. package/dist/analytics/analytics.js +2 -2
  4. package/dist/analytics/log-build.cjs +1 -1
  5. package/dist/analytics/log-build.js +3 -3
  6. package/dist/{chunk-TZTPGQGL.js → chunk-77HKKB65.js} +1 -1
  7. package/dist/{chunk-MBVTS76Q.js → chunk-CMFOHBTI.js} +1 -1
  8. package/dist/{chunk-JTZT2SDF.js → chunk-GHYHLEQZ.js} +1 -1
  9. package/dist/{chunk-U5OTNDVQ.js → chunk-ID4TZKSG.js} +1 -1
  10. package/dist/{chunk-M2ZRT7KQ.js → chunk-J5GFXQT3.js} +1 -1
  11. package/dist/constants.cjs +1 -1
  12. package/dist/constants.js +1 -1
  13. package/dist/eventcatalog.cjs +1 -1
  14. package/dist/eventcatalog.config.d.cts +40 -7
  15. package/dist/eventcatalog.config.d.ts +40 -7
  16. package/dist/eventcatalog.js +5 -5
  17. package/dist/generate.cjs +1 -1
  18. package/dist/generate.js +3 -3
  19. package/dist/utils/cli-logger.cjs +1 -1
  20. package/dist/utils/cli-logger.js +2 -2
  21. package/eventcatalog/src/components/ChatPanel/ChatPanel.tsx +16 -2
  22. package/eventcatalog/src/components/CopyAsMarkdown.tsx +6 -57
  23. package/eventcatalog/src/content.config.ts +21 -29
  24. package/eventcatalog/src/enterprise/ai/chat-api.ts +4 -2
  25. package/eventcatalog/src/enterprise/custom-documentation/pages/docs/custom/index.astro +26 -7
  26. package/eventcatalog/src/enterprise/directory/user-team-directory.ts +3 -3
  27. package/eventcatalog/src/enterprise/feature.ts +0 -4
  28. package/eventcatalog/src/enterprise/integrations/eventcatalog-features.ts +0 -9
  29. package/eventcatalog/src/enterprise/tools/catalog-tools.ts +6 -1
  30. package/eventcatalog/src/layouts/VerticalSideBarLayout.astro +343 -282
  31. package/eventcatalog/src/pages/diagrams/[id]/[version]/index.astro +6 -81
  32. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/index.astro +0 -8
  33. package/eventcatalog/src/stores/sidebar-store/state.ts +4 -4
  34. package/eventcatalog/src/utils/collections/glob-loader.ts +70 -0
  35. package/eventcatalog/src/utils/feature.ts +0 -2
  36. package/package.json +2 -1
  37. package/eventcatalog/src/enterprise/print/_message.data.ts +0 -63
  38. package/eventcatalog/src/enterprise/print/components/PrintHeader.astro +0 -183
  39. package/eventcatalog/src/enterprise/print/components/PrintLayout.astro +0 -271
  40. package/eventcatalog/src/enterprise/print/components/PrintParticipantsTable.astro +0 -64
  41. package/eventcatalog/src/enterprise/print/components/PrintSchemaPropertiesTable.astro +0 -65
  42. package/eventcatalog/src/enterprise/print/components/PrintSchemaViewer.tsx +0 -55
  43. package/eventcatalog/src/enterprise/print/components/PrintSection.astro +0 -17
  44. package/eventcatalog/src/enterprise/print/message.astro +0 -353
  45. package/eventcatalog/src/enterprise/print/utils.ts +0 -58
  46. package/eventcatalog/src/utils/sidebar-visibility.ts +0 -41
@@ -1,6 +1,5 @@
1
1
  import { defineCollection, reference } from 'astro:content';
2
2
  import { z } from 'astro/zod';
3
- import { glob } from 'astro/loaders';
4
3
  import { glob as globPackage } from 'glob';
5
4
  import { v4 as uuidv4 } from 'uuid';
6
5
  import { badge, ownerReference } from './content.config-shared-collections';
@@ -10,6 +9,7 @@ import path from 'path';
10
9
  import { userTeamDirectoryLoader } from './enterprise/directory/user-team-directory';
11
10
  import config from '@config';
12
11
  import { schemaLoader } from './utils/collections/schema-loader';
12
+ import { globWithSafeWatcher, withIgnoredBuildArtifacts } from './utils/collections/glob-loader';
13
13
 
14
14
  // Enterprise Collections
15
15
  import { customPagesSchema, resourceDocsSchema, resourceDocCategoriesSchema } from './enterprise/collections';
@@ -34,16 +34,8 @@ export const projectDirBase = (() => {
34
34
  return projectDir;
35
35
  })();
36
36
 
37
- const withIgnoredBuildArtifacts = (patterns: string | string[]) => {
38
- if (process.env.IGNORE_BUILD_ARTIFACTS === 'true') {
39
- const ignoredArtifacts = ['!dist/**', '!**/dist/**'];
40
- return Array.isArray(patterns) ? [...patterns, ...ignoredArtifacts] : [patterns, ...ignoredArtifacts];
41
- }
42
- return patterns;
43
- };
44
-
45
37
  const pages = defineCollection({
46
- loader: glob({
38
+ loader: globWithSafeWatcher({
47
39
  pattern: withIgnoredBuildArtifacts(['**/pages/*.(md|mdx)']),
48
40
  base: projectDirBase,
49
41
  }),
@@ -123,7 +115,7 @@ const directoryEntrySource = z.object({
123
115
  });
124
116
 
125
117
  const changelogs = defineCollection({
126
- loader: glob({
118
+ loader: globWithSafeWatcher({
127
119
  pattern: withIgnoredBuildArtifacts(['**/changelog.(md|mdx)']),
128
120
  base: projectDirBase,
129
121
  }),
@@ -264,7 +256,7 @@ const flowStep = z
264
256
  .optional();
265
257
 
266
258
  const flows = defineCollection({
267
- loader: glob({
259
+ loader: globWithSafeWatcher({
268
260
  pattern: withIgnoredBuildArtifacts(['**/flows/**/index.(md|mdx)', '**/flows/**/versioned/*/index.(md|mdx)']),
269
261
  base: projectDirBase,
270
262
  generateId: ({ data }) => {
@@ -372,7 +364,7 @@ const messageDetailsPanelPropertySchema = z.object({
372
364
  });
373
365
 
374
366
  const events = defineCollection({
375
- loader: glob({
367
+ loader: globWithSafeWatcher({
376
368
  pattern: withIgnoredBuildArtifacts(['**/events/*/index.(md|mdx)', '**/events/*/versioned/*/index.(md|mdx)']),
377
369
  base: projectDirBase,
378
370
  generateId: ({ data, ...rest }) => {
@@ -395,7 +387,7 @@ const events = defineCollection({
395
387
  });
396
388
 
397
389
  const commands = defineCollection({
398
- loader: glob({
390
+ loader: globWithSafeWatcher({
399
391
  pattern: withIgnoredBuildArtifacts(['**/commands/*/index.(md|mdx)', '**/commands/*/versioned/*/index.(md|mdx)']),
400
392
  base: projectDirBase,
401
393
  generateId: ({ data }) => {
@@ -418,7 +410,7 @@ const commands = defineCollection({
418
410
  });
419
411
 
420
412
  const queries = defineCollection({
421
- loader: glob({
413
+ loader: globWithSafeWatcher({
422
414
  pattern: withIgnoredBuildArtifacts(['**/queries/*/index.(md|mdx)', '**/queries/*/versioned/*/index.(md|mdx)']),
423
415
  base: projectDirBase,
424
416
  generateId: ({ data }) => {
@@ -453,7 +445,7 @@ const dataProductOutputPointer = z.object({
453
445
  });
454
446
 
455
447
  const dataProducts = defineCollection({
456
- loader: glob({
448
+ loader: globWithSafeWatcher({
457
449
  pattern: withIgnoredBuildArtifacts(['**/data-products/*/index.(md|mdx)', '**/data-products/*/versioned/*/index.(md|mdx)']),
458
450
  base: projectDirBase,
459
451
  generateId: ({ data }) => {
@@ -481,7 +473,7 @@ const dataProducts = defineCollection({
481
473
  });
482
474
 
483
475
  const services = defineCollection({
484
- loader: glob({
476
+ loader: globWithSafeWatcher({
485
477
  pattern: withIgnoredBuildArtifacts([
486
478
  'domains/*/services/*/index.(md|mdx)',
487
479
  'domains/*/services/*/versioned/*/index.(md|mdx)',
@@ -546,7 +538,7 @@ const agentModel = z.object({
546
538
  });
547
539
 
548
540
  const agents = defineCollection({
549
- loader: glob({
541
+ loader: globWithSafeWatcher({
550
542
  pattern: withIgnoredBuildArtifacts(['**/agents/*/index.(md|mdx)', '**/agents/*/versioned/*/index.(md|mdx)']),
551
543
  base: projectDirBase,
552
544
  generateId: ({ data }) => {
@@ -608,7 +600,7 @@ const adrResourcePointer = adrPointer.extend({
608
600
  });
609
601
 
610
602
  const adrs = defineCollection({
611
- loader: glob({
603
+ loader: globWithSafeWatcher({
612
604
  pattern: withIgnoredBuildArtifacts(['**/adrs/*/index.(md|mdx)', '**/adrs/*/versioned/*/index.(md|mdx)']),
613
605
  base: projectDirBase,
614
606
  generateId: ({ data }) => `${data.id}-${data.version}`,
@@ -658,7 +650,7 @@ const accessModeEnum = z.enum(['read', 'write', 'readWrite', 'appendOnly']);
658
650
  const dataClassificationEnum = z.enum(['public', 'internal', 'confidential', 'regulated']);
659
651
 
660
652
  const containers = defineCollection({
661
- loader: glob({
653
+ loader: globWithSafeWatcher({
662
654
  pattern: withIgnoredBuildArtifacts(['**/containers/**/index.(md|mdx)', '**/containers/**/versioned/*/index.(md|mdx)']),
663
655
  base: projectDirBase,
664
656
  generateId: ({ data }) => {
@@ -697,7 +689,7 @@ const containers = defineCollection({
697
689
  });
698
690
 
699
691
  const customPages = defineCollection({
700
- loader: glob({
692
+ loader: globWithSafeWatcher({
701
693
  // any number of child folders
702
694
  pattern: withIgnoredBuildArtifacts(['docs/*.(md|mdx)', 'docs/**/*.@(md|mdx)']),
703
695
  base: projectDirBase,
@@ -706,7 +698,7 @@ const customPages = defineCollection({
706
698
  });
707
699
 
708
700
  const resourceDocs = defineCollection({
709
- loader: glob({
701
+ loader: globWithSafeWatcher({
710
702
  // Resource-level docs are restricted to known resource paths.
711
703
  // This avoids scanning external docs such as node_modules/**/docs.
712
704
  pattern: withIgnoredBuildArtifacts([
@@ -723,7 +715,7 @@ const resourceDocs = defineCollection({
723
715
  });
724
716
 
725
717
  const resourceDocCategories = defineCollection({
726
- loader: glob({
718
+ loader: globWithSafeWatcher({
727
719
  pattern: withIgnoredBuildArtifacts([
728
720
  '{agents,events,commands,queries,services,flows,containers,channels,entities,data-products,systems}/**/docs/**/category.json',
729
721
  '{agents,events,commands,queries,services,flows,containers,channels,entities,data-products,systems}/**/docs/**/_category_.json',
@@ -740,7 +732,7 @@ const resourceDocCategories = defineCollection({
740
732
  });
741
733
 
742
734
  const domains = defineCollection({
743
- loader: glob({
735
+ loader: globWithSafeWatcher({
744
736
  pattern: withIgnoredBuildArtifacts([
745
737
  // ✅ Strictly include only index.md at the expected levels
746
738
  'domains/*/index.(md|mdx)',
@@ -808,7 +800,7 @@ const systemActorRelationship = z.object({
808
800
  });
809
801
 
810
802
  const systems = defineCollection({
811
- loader: glob({
803
+ loader: globWithSafeWatcher({
812
804
  pattern: withIgnoredBuildArtifacts([
813
805
  '**/systems/**/index.(md|mdx)',
814
806
  '**/systems/**/versioned/*/index.(md|mdx)',
@@ -865,7 +857,7 @@ const systems = defineCollection({
865
857
  });
866
858
 
867
859
  const channels = defineCollection({
868
- loader: glob({
860
+ loader: globWithSafeWatcher({
869
861
  pattern: withIgnoredBuildArtifacts(['**/channels/**/index.(md|mdx)', '**/channels/**/versioned/*/index.(md|mdx)']),
870
862
  base: projectDirBase,
871
863
  generateId: ({ data }) => {
@@ -910,7 +902,7 @@ const channels = defineCollection({
910
902
  });
911
903
 
912
904
  const ubiquitousLanguages = defineCollection({
913
- loader: glob({
905
+ loader: globWithSafeWatcher({
914
906
  pattern: withIgnoredBuildArtifacts([
915
907
  'domains/*/ubiquitous-language.(md|mdx)',
916
908
  'domains/*/subdomains/*/ubiquitous-language.(md|mdx)',
@@ -937,7 +929,7 @@ const ubiquitousLanguages = defineCollection({
937
929
  });
938
930
 
939
931
  const entities = defineCollection({
940
- loader: glob({
932
+ loader: globWithSafeWatcher({
941
933
  pattern: withIgnoredBuildArtifacts(['**/entities/*/index.(md|mdx)', '**/entities/*/versioned/*/index.(md|mdx)']),
942
934
  base: projectDirBase,
943
935
  generateId: ({ data, ...rest }) => {
@@ -1078,7 +1070,7 @@ const designs = defineCollection({
1078
1070
  });
1079
1071
 
1080
1072
  const diagrams = defineCollection({
1081
- loader: glob({
1073
+ loader: globWithSafeWatcher({
1082
1074
  pattern: withIgnoredBuildArtifacts(['**/diagrams/**/index.(md|mdx)', '**/diagrams/**/versioned/*/index.(md|mdx)']),
1083
1075
  base: projectDirBase,
1084
1076
  generateId: ({ data }) => `${data.id}-${data.version}`,
@@ -61,7 +61,7 @@ try {
61
61
  const builtInToolsMetadata = [
62
62
  {
63
63
  name: 'getResources',
64
- description: 'Get events, services, commands, queries, flows, domains, channels, entities from EventCatalog',
64
+ description: 'Get events, services, commands, queries, flows, domains, systems, channels, entities from EventCatalog',
65
65
  },
66
66
  { name: 'getResource', description: 'Get a specific resource by its id and version' },
67
67
  { name: 'getProducersAndConsumersFromSchema', description: 'Get the producers and consumers for a schema' },
@@ -101,6 +101,8 @@ There are many different resource types in EventCatalog, including:
101
101
  - example docs url: /docs/services/MyService/1.0.0
102
102
  - Domains (collection name 'domains') (business capabilities or functional areas)
103
103
  - example docs url: /docs/domains/MyDomain/1.0.0
104
+ - Systems (collection name 'systems') (business capabilities or functional areas)
105
+ - example docs url: /docs/systems/MySystem/1.0.0
104
106
  - Flows (collection name 'flows') (state machines)
105
107
  - example docs url: /docs/flows/MyFlow/1.0.0
106
108
  - Channels (collection name 'channels') (communication channels)
@@ -340,7 +342,7 @@ export const POST = async ({ request }: APIContext<{ question: string; messages:
340
342
  resourceVersion: z.string().describe('The version of the resource to get the architecture diagram for'),
341
343
  resourceCollection: visualiserCollectionSchema
342
344
  .describe(
343
- 'The collection of the resource (events, commands, queries, services, domains, flows, containers, data-products)'
345
+ 'The collection of the resource (events, commands, queries, services, domains, systems, flows, containers, data-products)'
344
346
  )
345
347
  .default('services'),
346
348
  }),
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  import VerticalSideBarLayout from '@layouts/VerticalSideBarLayout.astro';
3
- import { render } from 'astro:content';
3
+ import { getEntry, render } from 'astro:content';
4
4
  import config from '@config';
5
5
  import { AlignLeftIcon, UserIcon, UsersIcon } from 'lucide-react';
6
6
 
@@ -28,6 +28,26 @@ const nodeGraphs =
28
28
  return nodeGraph.id && nodeGraph.version && nodeGraph.type;
29
29
  }) || [];
30
30
 
31
+ const resolvedNodeGraphs = await Promise.all(
32
+ nodeGraphs.map(async (nodeGraph: any) => {
33
+ const collection = resourceToCollectionMap[nodeGraph.type as keyof typeof resourceToCollectionMap];
34
+ const domain = collection === 'domains' ? await getEntry('domains', `${nodeGraph.id}-${nodeGraph.version}`) : undefined;
35
+ const hasSystems = ((domain?.data as any)?.systems || []).length > 0;
36
+ const graphCollection = hasSystems ? 'domains-systems-context' : collection;
37
+
38
+ return {
39
+ ...nodeGraph,
40
+ collection,
41
+ graphCollection,
42
+ title: nodeGraph.title ?? (hasSystems ? 'System Context Map' : undefined),
43
+ hrefLabel: hasSystems ? 'Open System Context Map' : 'Open in Visualiser',
44
+ visualiserUrl: hasSystems
45
+ ? buildUrl(`/visualiser/domains/${nodeGraph.id}/${nodeGraph.version}/systems-context`)
46
+ : buildUrl(`/visualiser/${collection}/${nodeGraph.id}/${nodeGraph.version}`),
47
+ };
48
+ })
49
+ );
50
+
31
51
  const { prev, next } = await getAdjacentPages(currentSlug);
32
52
 
33
53
  const ownersRaw = doc?.owners || [];
@@ -129,14 +149,13 @@ const editUrl =
129
149
  </div>
130
150
 
131
151
  {
132
- nodeGraphs.length > 0 &&
133
- nodeGraphs.map((nodeGraph: any) => {
134
- const collection = resourceToCollectionMap[nodeGraph.type as keyof typeof resourceToCollectionMap];
152
+ resolvedNodeGraphs.length > 0 &&
153
+ resolvedNodeGraphs.map((nodeGraph: any) => {
135
154
  return (
136
155
  <NodeGraph
137
156
  id={nodeGraph.id}
138
157
  version={nodeGraph.version}
139
- collection={collection}
158
+ collection={nodeGraph.graphCollection}
140
159
  title={nodeGraph.title}
141
160
  mode={nodeGraph.mode || 'simple'}
142
161
  linksToVisualiser={true}
@@ -145,8 +164,8 @@ const editUrl =
145
164
  href={
146
165
  isVisualiserEnabled()
147
166
  ? {
148
- label: 'Open in Visualiser',
149
- url: buildUrl(`/visualiser/${collection}/${nodeGraph.id}/${nodeGraph.version}`),
167
+ label: nodeGraph.hrefLabel,
168
+ url: nodeGraph.visualiserUrl,
150
169
  }
151
170
  : undefined
152
171
  }
@@ -1,12 +1,12 @@
1
- import { glob, type Loader } from 'astro/loaders';
1
+ import type { Loader } from 'astro/loaders';
2
2
  import pc from 'picocolors';
3
3
  import { isEventCatalogScaleEnabled } from '../feature';
4
4
  import { EventCatalogStore } from '../../stores/eventcatalog-store';
5
+ import { globWithSafeWatcher, type GlobOptions } from '../../utils/collections/glob-loader';
5
6
 
6
7
  const colors = pc.createColors(true);
7
8
 
8
9
  type UserTeamCollection = 'users' | 'teams';
9
- type GlobOptions = Parameters<typeof glob>[0];
10
10
 
11
11
  type DirectoryEntry = {
12
12
  id: string;
@@ -58,7 +58,7 @@ export const userTeamDirectoryLoader = ({
58
58
  conflictStrategy = 'local-wins',
59
59
  storePath,
60
60
  }: UserTeamDirectoryLoaderOptions): Loader => {
61
- const localLoader = glob(local);
61
+ const localLoader = globWithSafeWatcher(local);
62
62
  const directoryStore = createDirectoryStore({ base: local.base, storePath });
63
63
 
64
64
  return {
@@ -64,12 +64,8 @@ export const isCustomStylesEnabled = () => {
64
64
  return isEventCatalogStarterEnabled() || isEventCatalogScaleEnabled();
65
65
  };
66
66
 
67
- export const isDiagramComparisonEnabled = () => isEventCatalogScaleEnabled();
68
-
69
67
  export const isEventCatalogMCPEnabled = () => isEventCatalogScaleEnabled() && isSSR();
70
68
 
71
69
  export const isEventCatalogMCPAuthEnabled = () => isEventCatalogMCPEnabled() && (config?.mcp?.auth?.enabled ?? false);
72
70
 
73
71
  export const isIntegrationsEnabled = () => isEventCatalogScaleEnabled();
74
-
75
- export const isExportPDFEnabled = () => true;
@@ -16,7 +16,6 @@ import {
16
16
  isFullCatalogAPIEnabled,
17
17
  isDevMode,
18
18
  isIntegrationsEnabled,
19
- isExportPDFEnabled,
20
19
  isCustomDocsEnabled,
21
20
  isSSR,
22
21
  } from '../../utils/feature';
@@ -137,14 +136,6 @@ export default function eventCatalogIntegration(): AstroIntegration {
137
136
  });
138
137
  }
139
138
 
140
- // Export to PDF print pages (Scale plan)
141
- if (isExportPDFEnabled()) {
142
- params.injectRoute({
143
- pattern: '/docs/print/[type]/[id]/[version]',
144
- entrypoint: path.join(catalogDirectory, 'src/enterprise/print/message.astro'),
145
- });
146
- }
147
-
148
139
  // Fields Explorer (requires SSR — pages live outside src/pages to avoid static-mode auto-discovery)
149
140
  if (isSSR()) {
150
141
  params.injectRoute({
@@ -25,6 +25,7 @@ import { getNodesAndEdges as getNodesAndEdgesForDomain } from '@utils/node-graph
25
25
  import { getNodesAndEdges as getNodesAndEdgesForFlows } from '@utils/node-graphs/flows-node-graph';
26
26
  import { getNodesAndEdges as getNodesAndEdgesForDataProduct } from '@utils/node-graphs/data-products-node-graph';
27
27
  import { getNodesAndEdges as getNodesAndEdgesForContainer } from '@utils/node-graphs/container-node-graph';
28
+ import { getNodesAndEdges as getNodesAndEdgesForSystem } from '@utils/node-graphs/systems-node-graph';
28
29
  import { convertToMermaid } from '@utils/node-graphs/export-mermaid';
29
30
  import config from '@config';
30
31
  import { glob } from 'glob';
@@ -178,6 +179,7 @@ export const collectionSchema = z.enum([
178
179
  'queries',
179
180
  'flows',
180
181
  'domains',
182
+ 'systems',
181
183
  'channels',
182
184
  'entities',
183
185
  'containers',
@@ -196,6 +198,7 @@ export const resourceCollectionSchema = z.enum([
196
198
  'queries',
197
199
  'flows',
198
200
  'domains',
201
+ 'systems',
199
202
  'channels',
200
203
  'entities',
201
204
  'data-products',
@@ -208,6 +211,7 @@ export const visualiserCollectionSchema = z.enum([
208
211
  'agents',
209
212
  'services',
210
213
  'domains',
214
+ 'systems',
211
215
  'flows',
212
216
  'containers',
213
217
  'data-products',
@@ -1028,6 +1032,7 @@ const getNodesAndEdgesFunctions = {
1028
1032
  flows: getNodesAndEdgesForFlows,
1029
1033
  containers: getNodesAndEdgesForContainer,
1030
1034
  'data-products': getNodesAndEdgesForDataProduct,
1035
+ systems: getNodesAndEdgesForSystem,
1031
1036
  };
1032
1037
 
1033
1038
  /**
@@ -1125,5 +1130,5 @@ export const toolDescriptions = {
1125
1130
  getDataProductOutputs:
1126
1131
  'Use this tool to get the outputs (resources produced) for a data product. Returns fully hydrated output resources with their id, version, name, summary, collection type, and data contracts (if defined). Data contracts include the contract name, path, format, type, and content.',
1127
1132
  getArchitectureDiagramAsMermaid:
1128
- 'Use this tool to get the architecture diagram for a resource as Mermaid flowchart code. This shows how the resource connects to other resources (agents, services, events, channels, etc.) in the architecture. The mermaid code can be rendered to visualize the architecture or used to understand relationships. Supported collections: events, commands, queries, agents, services, domains, flows, containers, data-products.',
1133
+ 'Use this tool to get the architecture diagram for a resource as Mermaid flowchart code. This shows how the resource connects to other resources (agents, services, systems, events, channels, etc.) in the architecture. The mermaid code can be rendered to visualize the architecture or used to understand relationships. Supported collections: events, commands, queries, agents, services, domains, systems, flows, containers, data-products.',
1129
1134
  };