context-mapper-mcp 1.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 (51) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +238 -0
  3. package/dist/generators/plantuml.d.ts +17 -0
  4. package/dist/generators/plantuml.d.ts.map +1 -0
  5. package/dist/generators/plantuml.js +244 -0
  6. package/dist/generators/plantuml.js.map +1 -0
  7. package/dist/index.d.ts +7 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +897 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/model/parser.d.ts +51 -0
  12. package/dist/model/parser.d.ts.map +1 -0
  13. package/dist/model/parser.js +934 -0
  14. package/dist/model/parser.js.map +1 -0
  15. package/dist/model/types.d.ts +121 -0
  16. package/dist/model/types.d.ts.map +1 -0
  17. package/dist/model/types.js +12 -0
  18. package/dist/model/types.js.map +1 -0
  19. package/dist/model/validation.d.ts +36 -0
  20. package/dist/model/validation.d.ts.map +1 -0
  21. package/dist/model/validation.js +411 -0
  22. package/dist/model/validation.js.map +1 -0
  23. package/dist/model/writer.d.ts +30 -0
  24. package/dist/model/writer.d.ts.map +1 -0
  25. package/dist/model/writer.js +305 -0
  26. package/dist/model/writer.js.map +1 -0
  27. package/dist/tools/aggregate-tools.d.ts +295 -0
  28. package/dist/tools/aggregate-tools.d.ts.map +1 -0
  29. package/dist/tools/aggregate-tools.js +965 -0
  30. package/dist/tools/aggregate-tools.js.map +1 -0
  31. package/dist/tools/context-tools.d.ts +60 -0
  32. package/dist/tools/context-tools.d.ts.map +1 -0
  33. package/dist/tools/context-tools.js +166 -0
  34. package/dist/tools/context-tools.js.map +1 -0
  35. package/dist/tools/generation-tools.d.ts +29 -0
  36. package/dist/tools/generation-tools.d.ts.map +1 -0
  37. package/dist/tools/generation-tools.js +62 -0
  38. package/dist/tools/generation-tools.js.map +1 -0
  39. package/dist/tools/model-tools.d.ts +72 -0
  40. package/dist/tools/model-tools.d.ts.map +1 -0
  41. package/dist/tools/model-tools.js +186 -0
  42. package/dist/tools/model-tools.js.map +1 -0
  43. package/dist/tools/query-tools.d.ts +170 -0
  44. package/dist/tools/query-tools.d.ts.map +1 -0
  45. package/dist/tools/query-tools.js +322 -0
  46. package/dist/tools/query-tools.js.map +1 -0
  47. package/dist/tools/relationship-tools.d.ts +68 -0
  48. package/dist/tools/relationship-tools.d.ts.map +1 -0
  49. package/dist/tools/relationship-tools.js +178 -0
  50. package/dist/tools/relationship-tools.js.map +1 -0
  51. package/package.json +52 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 thijs-hakkenberg
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,238 @@
1
+ # Context Mapper MCP Server
2
+
3
+ An MCP (Model Context Protocol) server that enables AI assistants to work with Domain-Driven Design models using Context Mapper's CML (Context Mapping Language).
4
+
5
+ ## Features
6
+
7
+ - **Parse and serialize CML files** - Full support for Context Mapper's CML syntax
8
+ - **Manage bounded contexts** - Create, update, delete bounded contexts
9
+ - **Work with aggregates** - Define entities, value objects, domain events, commands, and services
10
+ - **Context map relationships** - Define and manage relationships between bounded contexts (Partnership, SharedKernel, Upstream-Downstream with patterns like OHS, PL, ACL, CF)
11
+ - **Generate PlantUML diagrams** - Visualize context maps and aggregate structures
12
+ - **Real-time validation** - Catch errors at creation time, not at save time
13
+ - **ID Value Objects** - Dedicated tool for creating DDD-compliant identifier types
14
+
15
+ ## Validation Features
16
+
17
+ The server validates models in real-time to prevent common CML errors:
18
+
19
+ | Validation | When | Example Error |
20
+ |------------|------|---------------|
21
+ | Duplicate names | On create | `'AgentId' already exists in ContextA...` |
22
+ | Invalid types | On create | `Map<K,V> is not supported in CML...` |
23
+ | Reserved names | On create | `'Resource' is a reserved keyword...` |
24
+ | Reserved attributes | On save | Auto-escaped with `^` prefix |
25
+
26
+ ### Valid Attribute Types
27
+
28
+ - **Primitives**: `String`, `int`, `long`, `boolean`, `DateTime`, `BigDecimal`, `UUID`
29
+ - **Collections**: `List<Type>`, `Set<Type>`
30
+ - **References**: `- TypeName` (reference to domain objects)
31
+
32
+ ### Invalid Types (Rejected)
33
+
34
+ - `Map<K,V>`, `Any`, `Tuple`, `Runnable`, `Callbacks`, nested generics
35
+
36
+ ## Installation
37
+
38
+ ```bash
39
+ npm install
40
+ npm run build
41
+ ```
42
+
43
+ ## Usage
44
+
45
+ ### As MCP Server
46
+
47
+ Add to your Claude Desktop configuration (`claude_desktop_config.json`):
48
+
49
+ ```json
50
+ {
51
+ "mcpServers": {
52
+ "context-mapper": {
53
+ "command": "node",
54
+ "args": ["/path/to/context_mapper_mcp/dist/index.js"]
55
+ }
56
+ }
57
+ }
58
+ ```
59
+
60
+ ### Available Tools
61
+
62
+ #### Model Management
63
+ | Tool | Description |
64
+ |------|-------------|
65
+ | `cml_create_model` | Create a new empty CML model |
66
+ | `cml_load_model` | Load a CML file |
67
+ | `cml_save_model` | Save model to disk |
68
+ | `cml_validate_model` | Validate CML syntax and semantics |
69
+ | `cml_get_model_info` | Get model statistics |
70
+
71
+ #### Query Tools
72
+ | Tool | Description |
73
+ |------|-------------|
74
+ | `cml_list_bounded_contexts` | List all bounded contexts |
75
+ | `cml_get_bounded_context` | Get context details |
76
+ | `cml_list_aggregates` | List aggregates (optionally filtered by context) |
77
+ | `cml_get_aggregate` | Get aggregate with all its elements |
78
+ | `cml_find_elements` | Search by name pattern (regex) |
79
+ | `cml_list_relationships` | List context map relationships |
80
+
81
+ #### Context Tools
82
+ | Tool | Description |
83
+ |------|-------------|
84
+ | `cml_create_context_map` | Create a context map |
85
+ | `cml_create_bounded_context` | Create a bounded context |
86
+ | `cml_update_bounded_context` | Update a bounded context |
87
+ | `cml_delete_bounded_context` | Delete a bounded context |
88
+
89
+ #### Aggregate Tools
90
+ | Tool | Description |
91
+ |------|-------------|
92
+ | `cml_create_aggregate` | Create an aggregate |
93
+ | `cml_update_aggregate` | Update an aggregate |
94
+ | `cml_delete_aggregate` | Delete an aggregate |
95
+ | `cml_add_entity` | Add entity to aggregate |
96
+ | `cml_add_value_object` | Add value object |
97
+ | `cml_add_identifier` | Add ID value object (DDD best practice) |
98
+ | `cml_add_domain_event` | Add domain event |
99
+ | `cml_add_command` | Add command |
100
+ | `cml_add_service` | Add domain service |
101
+ | `cml_batch_add_elements` | **Batch create** multiple domain objects in one call |
102
+ | `cml_delete_entity` | Delete entity |
103
+ | `cml_delete_value_object` | Delete value object |
104
+ | `cml_delete_domain_event` | Delete domain event |
105
+ | `cml_delete_command` | Delete command |
106
+ | `cml_delete_service` | Delete service |
107
+
108
+ ##### Batch Creation (`cml_batch_add_elements`)
109
+
110
+ Create multiple domain objects in a single call for improved efficiency:
111
+
112
+ ```json
113
+ {
114
+ "contextName": "CustomerManagement",
115
+ "aggregateName": "Customer",
116
+ "identifiers": [
117
+ { "name": "CustomerId" }
118
+ ],
119
+ "entities": [
120
+ {
121
+ "name": "Customer",
122
+ "aggregateRoot": true,
123
+ "attributes": [
124
+ { "name": "id", "type": "- CustomerId", "key": true },
125
+ { "name": "email", "type": "String" }
126
+ ]
127
+ }
128
+ ],
129
+ "valueObjects": [
130
+ {
131
+ "name": "Address",
132
+ "attributes": [
133
+ { "name": "street", "type": "String" },
134
+ { "name": "city", "type": "String" }
135
+ ]
136
+ }
137
+ ],
138
+ "domainEvents": [
139
+ { "name": "CustomerRegistered", "attributes": [{ "name": "customerId", "type": "- CustomerId" }] }
140
+ ],
141
+ "commands": [
142
+ { "name": "RegisterCustomer", "attributes": [{ "name": "email", "type": "String" }] }
143
+ ]
144
+ }
145
+ ```
146
+
147
+ **Benefits:**
148
+ - **Faster**: Single round-trip instead of 8+ individual calls
149
+ - **Atomic validation**: All elements validated before any are created
150
+ - **Error handling**: Use `failFast: false` to collect all errors at once
151
+
152
+ #### Relationship Tools
153
+ | Tool | Description |
154
+ |------|-------------|
155
+ | `cml_create_relationship` | Create context map relationship |
156
+ | `cml_update_relationship` | Update relationship |
157
+ | `cml_delete_relationship` | Delete relationship |
158
+ | `cml_get_relationship` | Get relationship details |
159
+
160
+ Supported relationship types:
161
+ - **Partnership** - Symmetric, both contexts cooperate
162
+ - **SharedKernel** - Symmetric, shared code/models
163
+ - **UpstreamDownstream** - Asymmetric with patterns:
164
+ - Upstream: OHS (Open Host Service), PL (Published Language)
165
+ - Downstream: ACL (Anticorruption Layer), CF (Conformist)
166
+
167
+ #### Generation Tools
168
+ | Tool | Description |
169
+ |------|-------------|
170
+ | `cml_generate_context_map_diagram` | Generate PlantUML context map |
171
+ | `cml_generate_aggregate_diagram` | Generate aggregate class diagram |
172
+ | `cml_generate_full_diagram` | Generate full model diagram |
173
+
174
+ ## Example CML File
175
+
176
+ ```cml
177
+ ContextMap ECommerceContextMap {
178
+ type = AS_IS
179
+ contains CustomerManagement, OrderManagement, Inventory
180
+
181
+ CustomerManagement [U,OHS,PL] -> [D,ACL] OrderManagement
182
+ OrderManagement [U] -> [D,CF] Inventory
183
+ }
184
+
185
+ BoundedContext CustomerManagement {
186
+ domainVisionStatement = "Manages customer data"
187
+ implementationTechnology = "TypeScript"
188
+
189
+ Aggregate Customer {
190
+ Entity Customer {
191
+ aggregateRoot
192
+ key String customerId
193
+ String email
194
+ String firstName
195
+ }
196
+
197
+ ValueObject Address {
198
+ String street
199
+ String city
200
+ }
201
+
202
+ DomainEvent CustomerRegistered {
203
+ String customerId
204
+ Date registeredAt
205
+ }
206
+
207
+ Command RegisterCustomer {
208
+ String email
209
+ String firstName
210
+ }
211
+ }
212
+ }
213
+ ```
214
+
215
+ ## Development
216
+
217
+ ```bash
218
+ # Build
219
+ npm run build
220
+
221
+ # Watch mode
222
+ npm run dev
223
+
224
+ # Run tests
225
+ node test-run.mjs
226
+ ```
227
+
228
+ ## Architecture
229
+
230
+ - **Parser**: Chevrotain-based lexer and parser for CML syntax
231
+ - **Writer**: Serializes model back to CML format
232
+ - **Validation**: Checks model consistency and semantic rules
233
+ - **Tools**: MCP tool implementations for all operations
234
+ - **Generators**: PlantUML diagram generators
235
+
236
+ ## License
237
+
238
+ MIT
@@ -0,0 +1,17 @@
1
+ /**
2
+ * PlantUML Generator for CML models
3
+ */
4
+ import type { CMLModel, Aggregate } from '../model/types.js';
5
+ /**
6
+ * Generate a PlantUML context map diagram
7
+ */
8
+ export declare function generateContextMapDiagram(model: CMLModel, includeAggregates?: boolean): string;
9
+ /**
10
+ * Generate a PlantUML class diagram for an aggregate
11
+ */
12
+ export declare function generateAggregateDiagram(aggregate: Aggregate): string;
13
+ /**
14
+ * Generate a full model diagram with all contexts and their aggregates
15
+ */
16
+ export declare function generateFullModelDiagram(model: CMLModel): string;
17
+ //# sourceMappingURL=plantuml.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plantuml.d.ts","sourceRoot":"","sources":["../../src/generators/plantuml.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,QAAQ,EACR,SAAS,EAQV,MAAM,mBAAmB,CAAC;AAE3B;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,QAAQ,EAAE,iBAAiB,UAAQ,GAAG,MAAM,CAuD5F;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CA4HrE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAyFhE"}
@@ -0,0 +1,244 @@
1
+ /**
2
+ * PlantUML Generator for CML models
3
+ */
4
+ /**
5
+ * Generate a PlantUML context map diagram
6
+ */
7
+ export function generateContextMapDiagram(model, includeAggregates = false) {
8
+ const lines = [];
9
+ lines.push('@startuml');
10
+ lines.push('!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Context.puml');
11
+ lines.push('');
12
+ lines.push(`title Context Map: ${model.name}`);
13
+ lines.push('');
14
+ // Define bounded contexts as rectangles
15
+ for (const bc of model.boundedContexts) {
16
+ const stereotype = bc.implementationTechnology ? `<<${bc.implementationTechnology}>>` : '';
17
+ lines.push(`rectangle "${bc.name}" as ${sanitizeId(bc.name)} ${stereotype} {`);
18
+ if (includeAggregates && bc.aggregates.length > 0) {
19
+ for (const agg of bc.aggregates) {
20
+ lines.push(` card "${agg.name}" as ${sanitizeId(bc.name)}_${sanitizeId(agg.name)}`);
21
+ }
22
+ }
23
+ lines.push('}');
24
+ lines.push('');
25
+ }
26
+ // Add relationships
27
+ if (model.contextMap) {
28
+ lines.push("' Relationships");
29
+ for (const rel of model.contextMap.relationships) {
30
+ if (rel.type === 'Partnership') {
31
+ const symRel = rel;
32
+ lines.push(`${sanitizeId(symRel.participant1)} <--> ${sanitizeId(symRel.participant2)} : Partnership`);
33
+ }
34
+ else if (rel.type === 'SharedKernel') {
35
+ const symRel = rel;
36
+ lines.push(`${sanitizeId(symRel.participant1)} <--> ${sanitizeId(symRel.participant2)} : Shared Kernel`);
37
+ }
38
+ else if (rel.type === 'UpstreamDownstream') {
39
+ const udRel = rel;
40
+ let label = '';
41
+ if (udRel.upstreamPatterns && udRel.upstreamPatterns.length > 0) {
42
+ label += `[${udRel.upstreamPatterns.join(',')}] `;
43
+ }
44
+ label += 'U→D';
45
+ if (udRel.downstreamPatterns && udRel.downstreamPatterns.length > 0) {
46
+ label += ` [${udRel.downstreamPatterns.join(',')}]`;
47
+ }
48
+ lines.push(`${sanitizeId(udRel.upstream)} --> ${sanitizeId(udRel.downstream)} : ${label}`);
49
+ }
50
+ }
51
+ }
52
+ lines.push('');
53
+ lines.push('@enduml');
54
+ return lines.join('\n');
55
+ }
56
+ /**
57
+ * Generate a PlantUML class diagram for an aggregate
58
+ */
59
+ export function generateAggregateDiagram(aggregate) {
60
+ const lines = [];
61
+ lines.push('@startuml');
62
+ lines.push(`title Aggregate: ${aggregate.name}`);
63
+ lines.push('');
64
+ lines.push('skinparam classAttributeIconSize 0');
65
+ lines.push('skinparam class {');
66
+ lines.push(' BackgroundColor<<AggregateRoot>> LightGreen');
67
+ lines.push(' BackgroundColor<<Entity>> LightBlue');
68
+ lines.push(' BackgroundColor<<ValueObject>> LightYellow');
69
+ lines.push(' BackgroundColor<<DomainEvent>> LightCoral');
70
+ lines.push(' BackgroundColor<<Command>> LightGray');
71
+ lines.push(' BackgroundColor<<Service>> LightPink');
72
+ lines.push('}');
73
+ lines.push('');
74
+ // Package for the aggregate
75
+ lines.push(`package "${aggregate.name}" {`);
76
+ lines.push('');
77
+ // Entities
78
+ for (const entity of aggregate.entities) {
79
+ const stereotype = entity.aggregateRoot ? 'AggregateRoot' : 'Entity';
80
+ lines.push(` class ${sanitizeId(entity.name)} <<${stereotype}>> {`);
81
+ for (const attr of entity.attributes) {
82
+ const prefix = attr.key ? '+' : '-';
83
+ const nullable = attr.nullable ? '?' : '';
84
+ lines.push(` ${prefix}${attr.name}: ${attr.type}${nullable}`);
85
+ }
86
+ if (entity.operations && entity.operations.length > 0) {
87
+ lines.push(' --');
88
+ for (const op of entity.operations) {
89
+ const params = op.parameters.map(p => `${p.name}: ${p.type}`).join(', ');
90
+ lines.push(` +${op.name}(${params}): ${op.returnType || 'void'}`);
91
+ }
92
+ }
93
+ lines.push(' }');
94
+ lines.push('');
95
+ }
96
+ // Value Objects
97
+ for (const vo of aggregate.valueObjects) {
98
+ lines.push(` class ${sanitizeId(vo.name)} <<ValueObject>> {`);
99
+ for (const attr of vo.attributes) {
100
+ lines.push(` -${attr.name}: ${attr.type}`);
101
+ }
102
+ lines.push(' }');
103
+ lines.push('');
104
+ }
105
+ // Domain Events
106
+ for (const event of aggregate.domainEvents) {
107
+ lines.push(` class ${sanitizeId(event.name)} <<DomainEvent>> {`);
108
+ for (const attr of event.attributes) {
109
+ lines.push(` -${attr.name}: ${attr.type}`);
110
+ }
111
+ lines.push(' }');
112
+ lines.push('');
113
+ }
114
+ // Commands
115
+ for (const cmd of aggregate.commands) {
116
+ lines.push(` class ${sanitizeId(cmd.name)} <<Command>> {`);
117
+ for (const attr of cmd.attributes) {
118
+ lines.push(` -${attr.name}: ${attr.type}`);
119
+ }
120
+ lines.push(' }');
121
+ lines.push('');
122
+ }
123
+ // Services
124
+ for (const svc of aggregate.services) {
125
+ lines.push(` class ${sanitizeId(svc.name)} <<Service>> {`);
126
+ for (const op of svc.operations) {
127
+ const params = op.parameters.map(p => `${p.name}: ${p.type}`).join(', ');
128
+ lines.push(` +${op.name}(${params}): ${op.returnType || 'void'}`);
129
+ }
130
+ lines.push(' }');
131
+ lines.push('');
132
+ }
133
+ lines.push('}');
134
+ // Add relationships between entities and value objects
135
+ // Aggregate root owns entities
136
+ if (aggregate.aggregateRoot) {
137
+ for (const entity of aggregate.entities) {
138
+ if (!entity.aggregateRoot) {
139
+ lines.push(`${sanitizeId(aggregate.aggregateRoot.name)} *-- ${sanitizeId(entity.name)}`);
140
+ }
141
+ }
142
+ // Aggregate root uses value objects
143
+ for (const vo of aggregate.valueObjects) {
144
+ lines.push(`${sanitizeId(aggregate.aggregateRoot.name)} o-- ${sanitizeId(vo.name)}`);
145
+ }
146
+ // Aggregate root publishes events
147
+ for (const event of aggregate.domainEvents) {
148
+ lines.push(`${sanitizeId(aggregate.aggregateRoot.name)} ..> ${sanitizeId(event.name)} : publishes`);
149
+ }
150
+ // Commands target aggregate root
151
+ for (const cmd of aggregate.commands) {
152
+ lines.push(`${sanitizeId(cmd.name)} ..> ${sanitizeId(aggregate.aggregateRoot.name)} : targets`);
153
+ }
154
+ }
155
+ lines.push('');
156
+ lines.push('@enduml');
157
+ return lines.join('\n');
158
+ }
159
+ /**
160
+ * Generate a full model diagram with all contexts and their aggregates
161
+ */
162
+ export function generateFullModelDiagram(model) {
163
+ const lines = [];
164
+ lines.push('@startuml');
165
+ lines.push(`title Domain Model: ${model.name}`);
166
+ lines.push('');
167
+ lines.push('skinparam packageStyle rectangle');
168
+ lines.push('skinparam package {');
169
+ lines.push(' BackgroundColor<<BoundedContext>> LightBlue');
170
+ lines.push('}');
171
+ lines.push('');
172
+ // Each bounded context as a package
173
+ for (const bc of model.boundedContexts) {
174
+ lines.push(`package "${bc.name}" <<BoundedContext>> {`);
175
+ // Aggregates as packages within
176
+ for (const agg of bc.aggregates) {
177
+ lines.push(` package "${agg.name}" <<Aggregate>> {`);
178
+ // Aggregate root entity
179
+ if (agg.aggregateRoot) {
180
+ lines.push(` class ${sanitizeId(agg.aggregateRoot.name)} <<AggregateRoot>>`);
181
+ }
182
+ // Other entities
183
+ for (const entity of agg.entities) {
184
+ if (!entity.aggregateRoot) {
185
+ lines.push(` class ${sanitizeId(entity.name)} <<Entity>>`);
186
+ }
187
+ }
188
+ // Value objects
189
+ for (const vo of agg.valueObjects) {
190
+ lines.push(` class ${sanitizeId(vo.name)} <<ValueObject>>`);
191
+ }
192
+ lines.push(' }');
193
+ }
194
+ // Module aggregates
195
+ for (const mod of bc.modules) {
196
+ lines.push(` package "${mod.name}" <<Module>> {`);
197
+ for (const agg of mod.aggregates) {
198
+ lines.push(` package "${agg.name}" <<Aggregate>> {`);
199
+ if (agg.aggregateRoot) {
200
+ lines.push(` class ${sanitizeId(agg.aggregateRoot.name)} <<AggregateRoot>>`);
201
+ }
202
+ lines.push(' }');
203
+ }
204
+ lines.push(' }');
205
+ }
206
+ lines.push('}');
207
+ lines.push('');
208
+ }
209
+ // Add context map relationships
210
+ if (model.contextMap) {
211
+ lines.push("' Context Map Relationships");
212
+ for (const rel of model.contextMap.relationships) {
213
+ if (rel.type === 'Partnership') {
214
+ const symRel = rel;
215
+ lines.push(`"${symRel.participant1}" <..> "${symRel.participant2}" : Partnership`);
216
+ }
217
+ else if (rel.type === 'SharedKernel') {
218
+ const symRel = rel;
219
+ lines.push(`"${symRel.participant1}" <..> "${symRel.participant2}" : Shared Kernel`);
220
+ }
221
+ else if (rel.type === 'UpstreamDownstream') {
222
+ const udRel = rel;
223
+ let label = 'U→D';
224
+ if (udRel.upstreamPatterns && udRel.upstreamPatterns.length > 0) {
225
+ label = `[${udRel.upstreamPatterns.join(',')}] ${label}`;
226
+ }
227
+ if (udRel.downstreamPatterns && udRel.downstreamPatterns.length > 0) {
228
+ label = `${label} [${udRel.downstreamPatterns.join(',')}]`;
229
+ }
230
+ lines.push(`"${udRel.upstream}" ..> "${udRel.downstream}" : ${label}`);
231
+ }
232
+ }
233
+ }
234
+ lines.push('');
235
+ lines.push('@enduml');
236
+ return lines.join('\n');
237
+ }
238
+ /**
239
+ * Sanitize a name to be a valid PlantUML identifier
240
+ */
241
+ function sanitizeId(name) {
242
+ return name.replace(/[^a-zA-Z0-9_]/g, '_');
243
+ }
244
+ //# sourceMappingURL=plantuml.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plantuml.js","sourceRoot":"","sources":["../../src/generators/plantuml.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Context Mapper MCP Server
4
+ * Provides tools for working with Domain-Driven Design models using Context Mapper's CML
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG"}