@eventcatalog/core 5.8.0 → 5.9.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 (50) hide show
  1. package/dist/analytics/analytics.cjs +1 -1
  2. package/dist/analytics/analytics.js +2 -2
  3. package/dist/analytics/log-build.cjs +1 -1
  4. package/dist/analytics/log-build.js +3 -3
  5. package/dist/{chunk-Z6UUCTIB.js → chunk-26C26LFE.js} +1 -1
  6. package/dist/{chunk-YU6FEGOK.js → chunk-C4L6B5KR.js} +1 -1
  7. package/dist/{chunk-WLXXZTLD.js → chunk-SZU7I2PD.js} +1 -1
  8. package/dist/{chunk-DT63JMNP.js → chunk-UIJUSHOT.js} +1 -1
  9. package/dist/{chunk-E636DOFG.js → chunk-WN6ZFSXF.js} +1 -1
  10. package/dist/constants.cjs +1 -1
  11. package/dist/constants.js +1 -1
  12. package/dist/docs/api/02-config.md +1 -1
  13. package/dist/docs/development/00-why-eventcatalog.md +12 -8
  14. package/dist/docs/development/01-adopting-eventcatalog.md +51 -0
  15. package/dist/docs/development/{ask-your-architecture/03-install-skills.md → 01-getting-started/install-skills.md} +10 -4
  16. package/dist/docs/development/01-getting-started/installation.md +5 -1
  17. package/dist/docs/development/ask-your-architecture/01-intro.md +7 -5
  18. package/dist/docs/development/ask-your-architecture/03-mcp-server/getting-started.md +17 -3
  19. package/dist/docs/development/ask-your-architecture/03-mcp-server/introduction.md +3 -0
  20. package/dist/docs/development/ask-your-architecture/06-sync-docs-with-your-code.md +220 -0
  21. package/dist/docs/development/ask-your-architecture/07-catch-breaking-changes.md +142 -0
  22. package/dist/docs/development/components/custom-components/02-create-your-first-component.md +4 -0
  23. package/dist/docs/development/customization/customize-visualizer/00-visualizer-nodes.md +7 -5
  24. package/dist/docs/development/developer-tools/api-catalog.md +1 -1
  25. package/dist/docs/development/{ask-your-architecture/02-llms.txt.md → developer-tools/llms.txt.md} +2 -0
  26. package/dist/docs/development/{ask-your-architecture/03-schemas.txt.md → developer-tools/schemas.txt.md} +1 -1
  27. package/dist/docs/development/developer-tools/ubiquitous-language.txt.md +42 -0
  28. package/dist/docs/development/guides/domains/03-ownership-and-language/02-adding-ubiquitous-language.md +3 -0
  29. package/dist/eventcatalog.cjs +1 -1
  30. package/dist/eventcatalog.js +5 -5
  31. package/dist/generate.cjs +1 -1
  32. package/dist/generate.js +3 -3
  33. package/dist/utils/cli-logger.cjs +1 -1
  34. package/dist/utils/cli-logger.js +2 -2
  35. package/eventcatalog/src/components/Settings/LlmAccessSettingsForm.tsx +23 -3
  36. package/eventcatalog/src/features/auth/middleware/middleware-auth.ts +1 -0
  37. package/eventcatalog/src/features/mcp/apps/generated/viewer.html +1 -1
  38. package/eventcatalog/src/features/mcp/mcp-scoped-tools.ts +7 -4
  39. package/eventcatalog/src/features/mcp/mcp-server.ts +13 -1
  40. package/eventcatalog/src/features/tools/catalog-tools.ts +97 -30
  41. package/eventcatalog/src/pages/docs/llm/llms.txt.ts +24 -17
  42. package/eventcatalog/src/pages/docs/llm/schemas.txt.ts +1 -1
  43. package/eventcatalog/src/pages/docs/llm/ubiquitous-language.txt.ts +68 -0
  44. package/eventcatalog/src/pages/settings/llm-access.astro +2 -0
  45. package/eventcatalog/src/utils/collections/domains.ts +84 -0
  46. package/package.json +3 -3
  47. package/dist/docs/development/ask-your-architecture/04-agents/01-overview.md +0 -27
  48. package/dist/docs/development/ask-your-architecture/04-agents/02-code-to-docs.md +0 -124
  49. package/dist/docs/development/ask-your-architecture/04-agents/03-breaking-changes.md +0 -170
  50. package/dist/docs/development/ask-your-architecture/04-agents/_category_.json +0 -12
@@ -0,0 +1,142 @@
1
+ ---
2
+ sidebar_position: 7
3
+ keywords:
4
+ - Breaking Changes
5
+ - EventCatalog Agents
6
+ - schema governance
7
+ - schema compatibility
8
+ - GitHub Actions
9
+ sidebar_label: Catch breaking changes
10
+ title: Catch breaking changes
11
+ description: The Breaking Changes workflow comments on pull requests when a schema change would break a consumer documented in your EventCatalog, with the consumers and their owners.
12
+ slug: /development/agents/set-up-breaking-changes
13
+ ---
14
+
15
+ import { BreakingChangesComment } from '@site/src/components/AgentOutputs';
16
+ import { AgentPrompt } from '@site/src/components/AgentPrompt';
17
+
18
+ The **Breaking Changes** workflow checks the message schemas changed in a pull request. If a change would break consumers documented in your catalog, it comments with what breaks, who is affected, and who owns them, before the change merges. It never edits your catalog.
19
+
20
+ <AgentPrompt variant="breaking-changes" />
21
+
22
+ <BreakingChangesComment />
23
+
24
+ ## How it works
25
+
26
+ 1. **Finds changed schemas.** It looks for changed schema files in the pull request.
27
+ 2. **Checks each change.** A change is breaking when existing consumers could fail: a removed or renamed field, a changed type, a new required field, a narrowed enum, and similar. Additive changes, such as a new optional field, are not breaking.
28
+ 3. **Finds the consumers.** It matches the schema to its message in your catalog, then finds every service, agent or domain that receives it at an affected version.
29
+ 4. **Comments on the pull request** with the breaking lines and each consumer with its owners.
30
+
31
+ If the pull request changes no schemas, or none of the changes are breaking, it doesn't comment. If a breaking change has no consumers in your catalog, the comment says so.
32
+
33
+ A consumer is affected when it receives the message at its current version, at `latest` or with no version, or at a range that includes the current version, such as `1.x`. Consumers pinned to an older version are listed too, with their version. The reason given for each consumer comes from your catalog, such as "Receives payment-succeeded 1.0.0". The agent doesn't guess how a consumer uses particular fields.
34
+
35
+ ## Before you start
36
+
37
+ You need:
38
+
39
+ - An EventCatalog in a GitHub repository (the **catalog repository**), with the catalog at the root of the repository, and the consumers of your messages documented in it.
40
+ - A repository with message schemas (the **source repository**).
41
+ - An API key for an AI model provider.
42
+
43
+ ## Set it up
44
+
45
+ In your source repository, add two secrets under **Settings → Secrets and variables → Actions**:
46
+
47
+ - `ANTHROPIC_API_KEY`, or the key for [your model provider](#models).
48
+ - `EVENTCATALOG_TOKEN`, a GitHub token that can read your catalog repository. The workflow never writes to it.
49
+
50
+ Then add the workflow. It runs while the pull request is open, so the warning arrives before the change merges:
51
+
52
+ ```yaml title=".github/workflows/eventcatalog-breaking-changes.yml"
53
+ on:
54
+ pull_request:
55
+ types: [opened, synchronize, reopened]
56
+
57
+ jobs:
58
+ breaking-changes:
59
+ runs-on: ubuntu-latest
60
+ permissions:
61
+ contents: read
62
+ issues: write
63
+ pull-requests: write
64
+ steps:
65
+ - uses: actions/checkout@v6
66
+ with:
67
+ ref: ${{ github.event.pull_request.head.sha }}
68
+ fetch-depth: 0
69
+ - uses: event-catalog/agents@v2
70
+ env:
71
+ ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
72
+ with:
73
+ agent: breaking-changes
74
+ catalog-repo: your-org/your-catalog
75
+ catalog-token: ${{ secrets.EVENTCATALOG_TOKEN }}
76
+ ```
77
+
78
+ Replace `your-org/your-catalog` with your catalog repository. Keep `fetch-depth: 0`: the agent needs it to compare the pull request with its base branch.
79
+
80
+ To check it works, open a pull request that removes a field from a schema that a service in your catalog consumes.
81
+
82
+ If you also [sync docs with your code](/docs/development/agents/set-up-code-to-docs), you can run both from one workflow file: add `closed` to the `types`, and give each job an `if`:
83
+
84
+ ```yaml
85
+ on:
86
+ pull_request:
87
+ types: [opened, synchronize, reopened, closed]
88
+
89
+ jobs:
90
+ breaking-changes:
91
+ if: github.event.action != 'closed'
92
+ # ... as above
93
+
94
+ code-to-docs:
95
+ if: github.event.action == 'closed' && github.event.pull_request.merged == true
96
+ # ...
97
+ ```
98
+
99
+ ## Configuration
100
+
101
+ | Input | Required | Default | Description |
102
+ | --- | --- | --- | --- |
103
+ | `agent` | Yes | | Set to `breaking-changes` to run this workflow. |
104
+ | `catalog-repo` | Yes | | Your catalog repository, in `owner/repo` format. |
105
+ | `catalog-ref` | No | `main` | The catalog branch to read. |
106
+ | `catalog-token` | No | `github.token` | A token that can read the catalog repository. |
107
+ | `catalog-url` | No | | The URL of your hosted catalog. The comment links consumers and owners to it. |
108
+ | `model` | No | `anthropic/claude-sonnet-4-6` | The model the agent uses. See [models](#models). |
109
+ | `schema-extensions` | No | `.json,.yml,.yaml,.avro,.avsc,.proto,.graphql,.gql` | The file extensions treated as message schemas. |
110
+ | `ignore-paths` | No | Build and dependency folders | Comma-separated paths or glob patterns to leave out of the review. |
111
+
112
+ To check message contracts in other files, such as TypeScript types, set `schema-extensions`. Your list replaces the defaults, so include every extension you want checked:
113
+
114
+ ```yaml
115
+ with:
116
+ schema-extensions: .json,.yaml,.ts
117
+ ```
118
+
119
+ Only add source code extensions for files that contain message contracts: every changed file with a listed extension is checked.
120
+
121
+ ## Models
122
+
123
+ Use any model from [these providers](https://pi.dev/models). Set `model` to a provider and model name, and pass your provider's key as an environment variable on the step:
124
+
125
+ | Provider | Model example | Environment variable |
126
+ | --- | --- | --- |
127
+ | Anthropic | `anthropic/claude-sonnet-4-6` | `ANTHROPIC_API_KEY` |
128
+ | OpenAI | `openai/gpt-5.1` | `OPENAI_API_KEY` |
129
+ | OpenRouter | `openrouter/anthropic/claude-sonnet-4.6` | `OPENROUTER_API_KEY` |
130
+
131
+ To use models in your own AWS account, use an `amazon-bedrock/` model, such as `amazon-bedrock/eu.anthropic.claude-sonnet-4-6`, and give the job AWS credentials with [`aws-actions/configure-aws-credentials`](https://github.com/aws-actions/configure-aws-credentials).
132
+
133
+ ## Data and privacy
134
+
135
+ - **It's read-only.** It only comments on pull requests, and never edits your catalog.
136
+ - **Your code goes to one place:** the model provider you configure. The agent runs in your GitHub Actions runner. EventCatalog never receives your code, your catalog or your pull requests.
137
+
138
+ Each run sends one anonymous usage event: the outcome and the kind of error if it failed, the model, the run's duration, whether the pull request was open or merged, and the repository name. It never contains code, file names, paths, diffs or pull request content. To turn it off, set `POSTHOG_KEY: ''` in the step's `env`.
139
+
140
+ ## Versions
141
+
142
+ Use `event-catalog/agents@v2` for the latest v2 release, or an exact release such as `event-catalog/agents@v2.1.0`, which never changes. Releases are listed on [GitHub](https://github.com/event-catalog/agents/tags).
@@ -5,8 +5,12 @@ title: Create your first component
5
5
  description: Create a small reusable component and render it in a catalog page.
6
6
  ---
7
7
 
8
+ import { AgentPrompt } from '@site/src/components/AgentPrompt';
9
+
8
10
  In this guide, we will create a simple component and add it to a service page.
9
11
 
12
+ <AgentPrompt variant="custom-component" />
13
+
10
14
  ## Create the component
11
15
 
12
16
  Create a new file in your catalog.
@@ -30,8 +30,8 @@ name: Notification Service
30
30
  summary: |
31
31
  Service that handles orders
32
32
  styles:
33
- icon: "BellIcon"
34
- node:
33
+ icon: /icons/bell.svg
34
+ node:
35
35
  color: purple
36
36
  label: "Custom"
37
37
  ---
@@ -45,6 +45,8 @@ styles:
45
45
 
46
46
  | ID | Required | Default | Description |
47
47
  | --- | --- | --- | --- |
48
- | `styles.icon` | No | Depends on resource type | The icon to use for the resource. Icons are from [hero icons](https://heroicons.com/). <br/> You can find a list of icons [here](https://unpkg.com/browse/@heroicons/react@2.1.5/24/outline/). |
49
- | `styles.node.color` | No | Depends on resource type | The color to use for the node. These are tailwind colors and you can find a list of them [here](https://tailwindcss.com/docs/colors). |
50
- | `styles.node.label` | No | Depends on resource type | The label to use for the node (side label). |
48
+ | `styles.icon` | No | Depends on resource type | An icon shown next to the resource's name: a path to an image in your catalog's `public` folder (e.g. `/icons/bell.svg`) or an image URL. Domain, flow and entity nodes also take a [Heroicons](https://heroicons.com/) name (e.g. `BellIcon`). |
49
+ | `styles.node.color` | No | Depends on resource type | The color to use for the node: a [Tailwind color](https://tailwindcss.com/docs/colors) name (e.g. `blue`, `emerald`) or a hex color (e.g. `#0ea5e9`). It colors the node's border, badge and handles. |
50
+ | `styles.node.label` | No | Depends on resource type | The label shown in the node's type badge, in place of its type (e.g. `Service`). |
51
+
52
+ Colors and labels apply to services, events, commands, queries, channels, data stores, data products, agents and flows.
@@ -109,4 +109,4 @@ When the EventCatalog MCP server is enabled, an additional entry pointing at `/d
109
109
 
110
110
  Only services and domains are included in v1 of this endpoint. Events, commands, queries, data products, schemas, diagrams, teams, and users are out of scope for this release.
111
111
 
112
- For a broader machine-readable index of your catalog content, see [llms.txt](/docs/development/ask-your-architecture/llms.txt) and [schemas.txt](/docs/development/ask-your-architecture/schemas.txt).
112
+ For a broader machine-readable index of your catalog content, see [llms.txt](/docs/development/developer-tools/llms.txt) and [schemas.txt](/docs/development/developer-tools/schemas.txt).
@@ -52,6 +52,8 @@ The recommended URLs for AI tools are at the catalog root:
52
52
  - `https://<your-catalog-url>/llms-full.txt`
53
53
  - Demo: https://demo.eventcatalog.dev/llms-full.txt
54
54
 
55
+ The ubiquitous language of your catalog is also available as [ubiquitous-language.txt](/docs/development/developer-tools/ubiquitous-language.txt).
56
+
55
57
  The legacy paths `/docs/llm/llms.txt` and `/docs/llm/llms-full.txt` still work for backward compatibility.
56
58
 
57
59
  ### How to use LLMS.txt?
@@ -17,7 +17,7 @@ Message schemas and service specifications can be fetched from your EventCatalog
17
17
 
18
18
  ### What is schemas.txt?
19
19
 
20
- Schemas.txt is very similar to [LLMS.txt](/docs/development/ask-your-architecture/llms.txt), but it is specifically for schemas in your EventCatalog.
20
+ Schemas.txt is very similar to [LLMS.txt](/docs/development/developer-tools/llms.txt), but it is specifically for schemas in your EventCatalog.
21
21
 
22
22
  Schemas.txt supports any schema format for your messages (e.g Avro, Protobuf, JSON Schema etc) and any specification for your services (e.g OpenAPI, AsyncAPI, GraphQL etc).
23
23
 
@@ -0,0 +1,42 @@
1
+ ---
2
+ sidebar_position: 8
3
+ keywords:
4
+ - ubiquitous language
5
+ - glossary
6
+ - AI
7
+ - LLM
8
+ sidebar_label: ubiquitous-language.txt
9
+ title: ubiquitous-language.txt
10
+ description: Give AI tools the ubiquitous language of your organization
11
+ ---
12
+
13
+ import AddedIn from '@site/src/components/MDX/AddedIn';
14
+
15
+ <AddedIn version="5.9.0" />
16
+
17
+ Give AI tools one file with the ubiquitous language of your whole organization.
18
+
19
+ ### What is ubiquitous-language.txt?
20
+
21
+ The file lists the terms of every domain and subdomain, with subdomains under their parent domain. It is generated from your [`ubiquitous-language.mdx`](/docs/development/guides/domains/ownership-and-language/adding-ubiquitous-language) files, so there is nothing to configure.
22
+
23
+ Terms are never merged, because a word can mean different things in different domains. Terms defined in more than one domain are listed together at the top of the file, with the meaning in each domain.
24
+
25
+ ```txt
26
+ ## Terms defined in more than one domain
27
+ - Reservation
28
+ - Fulfilment: A temporary hold on stock for a specific order, taken during checkout.
29
+ - Ordering: A temporary hold on stock for the items in a cart, taken during checkout.
30
+ ```
31
+
32
+ Each term is one line with its summary (or its description, flattened to one line, when it has no summary). Each domain section links to that domain's `/docs/domains/{id}/language.mdx` for the full definitions.
33
+
34
+ ### Access the file
35
+
36
+ - `https://<your-catalog-url>/docs/llm/ubiquitous-language.txt`
37
+
38
+ The file is turned on and off with the `llmsTxt` setting, the same as [llms.txt](/docs/development/developer-tools/llms.txt). When it is disabled the file returns a 404. It is linked from the LLM access settings page, and from the Ubiquitous Language section of `llms.txt`.
39
+
40
+ ### Use with the MCP server
41
+
42
+ The [EventCatalog MCP server](/docs/development/ask-your-architecture/mcp-server/getting-started#available-tools) exposes the same language through the `explainUbiquitousLanguageTerms` tool.
@@ -96,5 +96,8 @@ When you add a ubiquitous language dictionary to your domain, it will automatica
96
96
 
97
97
  Clicking on a term in the Domain Language explorer will open that term in a new page.
98
98
 
99
+ ### Share with AI tools
99
100
 
101
+ <AddedIn version="5.9.0" />
100
102
 
103
+ Your terms from every domain are also available to AI tools in one file, [ubiquitous-language.txt](/docs/development/developer-tools/ubiquitous-language.txt), and through the `explainUbiquitousLanguageTerms` tool of the [MCP server](/docs/development/ask-your-architecture/mcp-server/getting-started#explain-ubiquitous-language).
@@ -174,7 +174,7 @@ var verifyRequiredFieldsAreInCatalogConfigFile = async (projectDirectory) => {
174
174
  var import_picocolors = __toESM(require("picocolors"), 1);
175
175
 
176
176
  // package.json
177
- var version = "5.8.0";
177
+ var version = "5.9.0";
178
178
 
179
179
  // src/constants.ts
180
180
  var VERSION = version;
@@ -7,12 +7,12 @@ import {
7
7
  import "./chunk-CA4U2JP7.js";
8
8
  import {
9
9
  log_build_default
10
- } from "./chunk-E636DOFG.js";
10
+ } from "./chunk-WN6ZFSXF.js";
11
11
  import {
12
12
  getLicenseStatus,
13
13
  printLicenseStatus
14
14
  } from "./chunk-AD7CL772.js";
15
- import "./chunk-Z6UUCTIB.js";
15
+ import "./chunk-26C26LFE.js";
16
16
  import "./chunk-YRZK7HKX.js";
17
17
  import "./chunk-CA6WCQ2T.js";
18
18
  import "./chunk-CPW6G62V.js";
@@ -39,10 +39,10 @@ import {
39
39
  } from "./chunk-NKNOXQ62.js";
40
40
  import {
41
41
  generate
42
- } from "./chunk-DT63JMNP.js";
42
+ } from "./chunk-UIJUSHOT.js";
43
43
  import {
44
44
  logger
45
- } from "./chunk-WLXXZTLD.js";
45
+ } from "./chunk-SZU7I2PD.js";
46
46
  import {
47
47
  resolve_catalog_dependencies_default
48
48
  } from "./chunk-PD7KTSYN.js";
@@ -79,7 +79,7 @@ import {
79
79
  } from "./chunk-LFQJXLHG.js";
80
80
  import {
81
81
  VERSION
82
- } from "./chunk-YU6FEGOK.js";
82
+ } from "./chunk-C4L6B5KR.js";
83
83
  import {
84
84
  getEventCatalogConfigFile,
85
85
  verifyRequiredFieldsAreInCatalogConfigFile
package/dist/generate.cjs CHANGED
@@ -105,7 +105,7 @@ var getEventCatalogConfigFile = async (projectDirectory) => {
105
105
  var import_picocolors = __toESM(require("picocolors"), 1);
106
106
 
107
107
  // package.json
108
- var version = "5.8.0";
108
+ var version = "5.9.0";
109
109
 
110
110
  // src/constants.ts
111
111
  var VERSION = version;
package/dist/generate.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  generate
3
- } from "./chunk-DT63JMNP.js";
4
- import "./chunk-WLXXZTLD.js";
5
- import "./chunk-YU6FEGOK.js";
3
+ } from "./chunk-UIJUSHOT.js";
4
+ import "./chunk-SZU7I2PD.js";
5
+ import "./chunk-C4L6B5KR.js";
6
6
  import "./chunk-4G7FSRPN.js";
7
7
  export {
8
8
  generate
@@ -36,7 +36,7 @@ module.exports = __toCommonJS(cli_logger_exports);
36
36
  var import_picocolors = __toESM(require("picocolors"), 1);
37
37
 
38
38
  // package.json
39
- var version = "5.8.0";
39
+ var version = "5.9.0";
40
40
 
41
41
  // src/constants.ts
42
42
  var VERSION = version;
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  logger
3
- } from "../chunk-WLXXZTLD.js";
4
- import "../chunk-YU6FEGOK.js";
3
+ } from "../chunk-SZU7I2PD.js";
4
+ import "../chunk-C4L6B5KR.js";
5
5
  export {
6
6
  logger
7
7
  };
@@ -12,10 +12,19 @@ interface Props {
12
12
  apiBase: string;
13
13
  llmsTxtUrl: string;
14
14
  llmsFullTxtUrl: string;
15
+ ubiquitousLanguageTxtUrl: string;
15
16
  schemasTxtUrl: string;
16
17
  }
17
18
 
18
- export const LlmAccessSettingsForm = ({ canEdit, initial, apiBase, llmsTxtUrl, llmsFullTxtUrl, schemasTxtUrl }: Props) => {
19
+ export const LlmAccessSettingsForm = ({
20
+ canEdit,
21
+ initial,
22
+ apiBase,
23
+ llmsTxtUrl,
24
+ llmsFullTxtUrl,
25
+ schemasTxtUrl,
26
+ ubiquitousLanguageTxtUrl,
27
+ }: Props) => {
19
28
  const [llmsTxtEnabled, setLlmsTxtEnabled] = useState(initial.llmsTxtEnabled);
20
29
  const [pristine, setPristine] = useState(initial.llmsTxtEnabled);
21
30
  const [saving, setSaving] = useState(false);
@@ -94,7 +103,9 @@ export const LlmAccessSettingsForm = ({ canEdit, initial, apiBase, llmsTxtUrl, l
94
103
  disabled={!canEdit}
95
104
  onChange={setLlmsTxtEnabled}
96
105
  />
97
- {llmsTxtEnabled && <LlmsTxtPreview url={llmsTxtUrl} fullUrl={llmsFullTxtUrl} />}
106
+ {llmsTxtEnabled && (
107
+ <LlmsTxtPreview url={llmsTxtUrl} fullUrl={llmsFullTxtUrl} ubiquitousLanguageUrl={ubiquitousLanguageTxtUrl} />
108
+ )}
98
109
  </Row>
99
110
 
100
111
  <Row
@@ -110,10 +121,19 @@ export const LlmAccessSettingsForm = ({ canEdit, initial, apiBase, llmsTxtUrl, l
110
121
  );
111
122
  };
112
123
 
113
- const LlmsTxtPreview = ({ url, fullUrl }: { url: string; fullUrl: string }) => {
124
+ const LlmsTxtPreview = ({
125
+ url,
126
+ fullUrl,
127
+ ubiquitousLanguageUrl,
128
+ }: {
129
+ url: string;
130
+ fullUrl: string;
131
+ ubiquitousLanguageUrl: string;
132
+ }) => {
114
133
  const variants = [
115
134
  { label: 'Index', path: url },
116
135
  { label: 'Full', path: fullUrl },
136
+ { label: 'Ubiquitous Language', path: ubiquitousLanguageUrl },
117
137
  ];
118
138
  return (
119
139
  <div className="rounded-lg border border-[rgb(var(--ec-page-border))] bg-[rgb(var(--ec-page-bg)/0.4)] px-4 py-3">
@@ -89,6 +89,7 @@ export function getPublicRoutes(isLLMSTextEnabled: boolean) {
89
89
  '/docs/llm/llms.txt',
90
90
  '/docs/llm/llms-full.txt',
91
91
  '/docs/llm/schemas.txt',
92
+ '/docs/llm/ubiquitous-language.txt',
92
93
  ];
93
94
  }
94
95