eva4j 1.0.14 β 1.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/skill-creator/LICENSE.txt +202 -0
- package/.agents/skills/skill-creator/SKILL.md +485 -0
- package/.agents/skills/skill-creator/agents/analyzer.md +274 -0
- package/.agents/skills/skill-creator/agents/comparator.md +202 -0
- package/.agents/skills/skill-creator/agents/grader.md +223 -0
- package/.agents/skills/skill-creator/assets/eval_review.html +146 -0
- package/.agents/skills/skill-creator/eval-viewer/generate_review.py +471 -0
- package/.agents/skills/skill-creator/eval-viewer/viewer.html +1325 -0
- package/.agents/skills/skill-creator/references/schemas.md +430 -0
- package/.agents/skills/skill-creator/scripts/__init__.py +0 -0
- package/.agents/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/.agents/skills/skill-creator/scripts/generate_report.py +326 -0
- package/.agents/skills/skill-creator/scripts/improve_description.py +247 -0
- package/.agents/skills/skill-creator/scripts/package_skill.py +136 -0
- package/.agents/skills/skill-creator/scripts/quick_validate.py +103 -0
- package/.agents/skills/skill-creator/scripts/run_eval.py +310 -0
- package/.agents/skills/skill-creator/scripts/run_loop.py +328 -0
- package/.agents/skills/skill-creator/scripts/utils.py +47 -0
- package/AGENTS.md +268 -6
- package/COMMAND_EVALUATION.md +15 -16
- package/DOMAIN_YAML_GUIDE.md +430 -14
- package/FUTURE_FEATURES.md +1627 -1168
- package/README.md +461 -13
- package/bin/eva4j.js +32 -14
- package/config/defaults.json +1 -0
- package/docs/commands/EVALUATE_SYSTEM.md +746 -261
- package/docs/commands/EXPORT_DIAGRAM.md +153 -0
- package/docs/commands/GENERATE_ENTITIES.md +599 -6
- package/docs/commands/INDEX.md +7 -0
- package/examples/domain-events.yaml +166 -20
- package/examples/domain-listeners.yaml +212 -0
- package/examples/domain-one-to-many.yaml +1 -0
- package/examples/domain-one-to-one.yaml +1 -0
- package/examples/domain-ports.yaml +414 -0
- package/examples/domain-soft-delete.yaml +47 -44
- package/examples/system/notification.yaml +147 -0
- package/examples/system/product.yaml +185 -0
- package/examples/system/system.yaml +112 -0
- package/examples/system-report.html +971 -0
- package/examples/system.yaml +46 -3
- package/package.json +2 -1
- package/src/agents/design-reviewer.agent.md +163 -0
- package/src/commands/build.js +714 -0
- package/src/commands/create.js +1 -0
- package/src/commands/detach.js +149 -108
- package/src/commands/evaluate-system.js +234 -8
- package/src/commands/export-diagram.js +522 -0
- package/src/commands/generate-entities.js +685 -66
- package/src/commands/generate-http-exchange.js +2 -0
- package/src/commands/generate-kafka-event.js +43 -10
- package/src/generators/base-generator.js +18 -6
- package/src/generators/postman-generator.js +188 -0
- package/src/generators/shared-generator.js +12 -2
- package/src/skills/build-system-yaml/SKILL.md +323 -0
- package/src/skills/build-system-yaml/references/domain-yaml-spec.md +410 -0
- package/src/skills/build-system-yaml/references/module-spec.md +367 -0
- package/src/skills/build-system-yaml/references/system-yaml-spec.md +178 -0
- package/src/utils/config-manager.js +54 -0
- package/src/utils/context-builder.js +1 -0
- package/src/utils/domain-diagram.js +192 -0
- package/src/utils/domain-validator.js +1020 -0
- package/src/utils/fake-data.js +376 -0
- package/src/utils/system-validator.js +319 -199
- package/src/utils/yaml-to-entity.js +272 -7
- package/templates/aggregate/AggregateMapper.java.ejs +3 -2
- package/templates/aggregate/AggregateRepository.java.ejs +3 -2
- package/templates/aggregate/AggregateRepositoryImpl.java.ejs +6 -5
- package/templates/aggregate/AggregateRoot.java.ejs +60 -2
- package/templates/aggregate/DomainEventHandler.java.ejs +4 -1
- package/templates/aggregate/DomainEventRecord.java.ejs +24 -8
- package/templates/aggregate/DomainEventSnapshot.java.ejs +46 -0
- package/templates/aggregate/JpaAggregateRoot.java.ejs +6 -0
- package/templates/base/docker/Dockerfile.ejs +21 -0
- package/templates/base/gradle/build.gradle.ejs +3 -2
- package/templates/base/root/AGENTS.md.ejs +306 -45
- package/templates/crud/ApplicationMapper.java.ejs +4 -0
- package/templates/crud/Controller.java.ejs +4 -4
- package/templates/crud/CreateCommand.java.ejs +4 -0
- package/templates/crud/CreateCommandHandler.java.ejs +3 -6
- package/templates/crud/CreateItemDto.java.ejs +4 -0
- package/templates/crud/CreateValueObjectDto.java.ejs +4 -0
- package/templates/crud/DeleteCommandHandler.java.ejs +12 -6
- package/templates/crud/EndpointsController.java.ejs +6 -6
- package/templates/crud/FindByQuery.java.ejs +1 -1
- package/templates/crud/FindByQueryHandler.java.ejs +3 -9
- package/templates/crud/GetQueryHandler.java.ejs +2 -5
- package/templates/crud/ListQuery.java.ejs +1 -1
- package/templates/crud/ListQueryHandler.java.ejs +8 -14
- package/templates/crud/ScaffoldCommandHandler.java.ejs +2 -4
- package/templates/crud/ScaffoldQuery.java.ejs +3 -2
- package/templates/crud/ScaffoldQueryHandler.java.ejs +5 -6
- package/templates/crud/SubEntityAddCommand.java.ejs +4 -0
- package/templates/crud/SubEntityAddCommandHandler.java.ejs +2 -6
- package/templates/crud/SubEntityRemoveCommandHandler.java.ejs +2 -7
- package/templates/crud/TransitionCommandHandler.java.ejs +2 -6
- package/templates/crud/UpdateCommand.java.ejs +4 -0
- package/templates/crud/UpdateCommandHandler.java.ejs +2 -5
- package/templates/evaluate/report.html.ejs +394 -2
- package/templates/kafka-event/DomainEventHandlerMethod.ejs +3 -1
- package/templates/kafka-event/Event.java.ejs +9 -0
- package/templates/kafka-listener/KafkaController.java.ejs +1 -1
- package/templates/kafka-listener/KafkaListenerClass.java.ejs +1 -1
- package/templates/kafka-listener/ListenerClass.java.ejs +65 -0
- package/templates/kafka-listener/ListenerCommand.java.ejs +31 -0
- package/templates/kafka-listener/ListenerCommandHandler.java.ejs +25 -0
- package/templates/kafka-listener/ListenerIntegrationEvent.java.ejs +37 -0
- package/templates/kafka-listener/ListenerMethod.java.ejs +1 -1
- package/templates/kafka-listener/ListenerNestedType.java.ejs +28 -0
- package/templates/mock/MockEvent.java.ejs +10 -0
- package/templates/mock/MockMessageBrokerImpl.java.ejs +35 -0
- package/templates/mock/MockMessageBrokerImplMethod.java.ejs +6 -0
- package/templates/mock/SpringEventListener.java.ejs +61 -0
- package/templates/ports/PortDomainModel.java.ejs +35 -0
- package/templates/ports/PortFeignAdapter.java.ejs +67 -0
- package/templates/ports/PortFeignClient.java.ejs +45 -0
- package/templates/ports/PortFeignConfig.java.ejs +24 -0
- package/templates/ports/PortInterface.java.ejs +45 -0
- package/templates/ports/PortNestedType.java.ejs +28 -0
- package/templates/ports/PortRequestDto.java.ejs +30 -0
- package/templates/ports/PortResponseDto.java.ejs +28 -0
- package/templates/postman/Collection.json.ejs +1 -1
- package/templates/postman/UnifiedCollection.json.ejs +185 -0
- package/templates/shared/annotations/LogAfter.java.ejs +2 -0
- package/templates/shared/annotations/LogBefore.java.ejs +2 -0
- package/templates/shared/annotations/LogExceptions.java.ejs +2 -0
- package/templates/shared/annotations/LogLevel.java.ejs +8 -0
- package/templates/shared/annotations/LogTimer.java.ejs +1 -0
- package/templates/shared/annotations/Loggable.java.ejs +17 -0
- package/templates/shared/configurations/eventPublicationConfig/EventPublicationSchemaConfig.java.ejs +109 -0
- package/templates/shared/configurations/loggerConfig/HandlerLogs.java.ejs +120 -32
- package/templates/shared/errorMessage/ErrorResponse.java.ejs +23 -0
- package/templates/shared/handlerException/HandlerExceptions.java.ejs +99 -79
- package/src/commands/generate-system.js +0 -243
- package/templates/base/root/skill-build-domain-yaml-references-generate-entities.md.ejs +0 -1103
- package/templates/base/root/skill-build-domain-yaml.ejs +0 -292
- package/templates/base/root/skill-build-system-yaml.ejs +0 -252
- package/templates/shared/errorMessage/ErrorMessage.java.ejs +0 -5
- package/templates/shared/errorMessage/FullErrorMessage.java.ejs +0 -9
- package/templates/shared/errorMessage/ShortErrorMessage.java.ejs +0 -6
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
# Command `export diagram`
|
|
2
|
+
|
|
3
|
+
## π Description
|
|
4
|
+
|
|
5
|
+
Converts Mermaid C4 architecture diagrams (`.mmd` files) into Draw.io XML files (`.drawio`) ready to open in [app.diagrams.net](https://app.diagrams.net/).
|
|
6
|
+
|
|
7
|
+
## π― Purpose
|
|
8
|
+
|
|
9
|
+
After running `eva evaluate system`, the `system/` folder contains auto-generated Mermaid C4 diagrams. This command turns those text-based diagrams into fully styled, editable Draw.io files β without any manual redrawing.
|
|
10
|
+
|
|
11
|
+
## π Syntax
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
eva export diagram
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
### Parameters
|
|
18
|
+
|
|
19
|
+
This command takes no additional parameters. It always looks for source files inside the `system/` folder of the current working directory.
|
|
20
|
+
|
|
21
|
+
## π Input / Output
|
|
22
|
+
|
|
23
|
+
| Source file (Mermaid) | Generated file (Draw.io) |
|
|
24
|
+
|---|---|
|
|
25
|
+
| `system/c4-container.mmd` | `system/c4-container.drawio` |
|
|
26
|
+
| `system/c4-context.mmd` | `system/c4-context.drawio` |
|
|
27
|
+
|
|
28
|
+
If a source file does not exist, it is skipped with a warning. The command exits with an error only when **neither** diagram file is found.
|
|
29
|
+
|
|
30
|
+
## π‘ Example
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
# From the project root (must contain a system/ folder)
|
|
34
|
+
eva export diagram
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
**Console output:**
|
|
38
|
+
```
|
|
39
|
+
β
C4 Container β system/c4-container.drawio
|
|
40
|
+
8 nodes, 6 relationships
|
|
41
|
+
β
C4 Context β system/c4-context.drawio
|
|
42
|
+
4 nodes, 3 relationships
|
|
43
|
+
|
|
44
|
+
Open the .drawio files at https://app.diagrams.net/
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## πΊοΈ Supported Mermaid C4 Syntax
|
|
48
|
+
|
|
49
|
+
The parser understands the following C4 keywords:
|
|
50
|
+
|
|
51
|
+
### Diagram types
|
|
52
|
+
|
|
53
|
+
| Keyword | Description |
|
|
54
|
+
|---|---|
|
|
55
|
+
| `C4Container` | Container-level diagram |
|
|
56
|
+
| `C4Context` | Context-level diagram |
|
|
57
|
+
|
|
58
|
+
### Node types
|
|
59
|
+
|
|
60
|
+
| Keyword | Example | Draw.io shape |
|
|
61
|
+
|---|---|---|
|
|
62
|
+
| `Person` | `Person(id, "Name", "Desc")` | Blue C4 person |
|
|
63
|
+
| `System` | `System(id, "Name", "Desc")` | Dark-blue rounded box |
|
|
64
|
+
| `System_Ext` | `System_Ext(id, "Name", "Desc")` | Grey rounded box |
|
|
65
|
+
| `Container` | `Container(id, "Name", "Tech", "Desc")` | Blue rounded box |
|
|
66
|
+
| `ContainerDb` | `ContainerDb(id, "Name", "Tech", "Desc")` | Blue data-store shape |
|
|
67
|
+
| `ContainerQueue` | `ContainerQueue(id, "Name", "Tech", "Desc")` | Blue cylinder |
|
|
68
|
+
|
|
69
|
+
### Boundary wrapper
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
System_Boundary(id, "Label") {
|
|
73
|
+
Container(...)
|
|
74
|
+
ContainerDb(...)
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Nodes declared inside a `System_Boundary` block are recognised correctly. The boundary itself is rendered as a dashed-border container in the generated diagram.
|
|
79
|
+
|
|
80
|
+
### Relationships
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
Rel(fromId, toId, "Label")
|
|
84
|
+
Rel(fromId, toId, "Label", "Technology")
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Relationship arrows are automatically colored by type:
|
|
88
|
+
|
|
89
|
+
| Condition | Arrow color |
|
|
90
|
+
|---|---|
|
|
91
|
+
| Source or target is a `Person` | Green |
|
|
92
|
+
| Source or target is a `ContainerQueue` (broker) | Orange |
|
|
93
|
+
| All other connections | Blue |
|
|
94
|
+
|
|
95
|
+
## π¨ Visual Style
|
|
96
|
+
|
|
97
|
+
All shapes follow the **C4 model color conventions**:
|
|
98
|
+
|
|
99
|
+
| Element | Fill color |
|
|
100
|
+
|---|---|
|
|
101
|
+
| Person | `#08427B` (dark blue) |
|
|
102
|
+
| Container | `#438DD5` (medium blue) |
|
|
103
|
+
| ContainerDb | `#438DD5` (medium blue) |
|
|
104
|
+
| ContainerQueue | `#438DD5` (medium blue) |
|
|
105
|
+
| System | `#1168BD` (blue) |
|
|
106
|
+
| System_Ext | `#999999` (grey) |
|
|
107
|
+
| System_Boundary | No fill, dashed border |
|
|
108
|
+
|
|
109
|
+
## π Auto-layout
|
|
110
|
+
|
|
111
|
+
The command applies an automatic top-to-bottom layout:
|
|
112
|
+
|
|
113
|
+
| Row | Content |
|
|
114
|
+
|---|---|
|
|
115
|
+
| 1 | Persons (centered) |
|
|
116
|
+
| 2 | Containers |
|
|
117
|
+
| 3 | Databases (`ContainerDb`) |
|
|
118
|
+
| 4 | Brokers / queues (`ContainerQueue`) |
|
|
119
|
+
| 5 | External systems (`System_Ext`) |
|
|
120
|
+
|
|
121
|
+
For `C4Context` diagrams (no containers), the layout is:
|
|
122
|
+
|
|
123
|
+
| Row | Content |
|
|
124
|
+
|---|---|
|
|
125
|
+
| 1 | Persons |
|
|
126
|
+
| 2 | Internal systems (`System`) |
|
|
127
|
+
| 3 | External systems (`System_Ext`) |
|
|
128
|
+
|
|
129
|
+
## β οΈ Requirements
|
|
130
|
+
|
|
131
|
+
- Must be run from a directory that contains a `system/` folder.
|
|
132
|
+
- Source `.mmd` files must follow the supported C4 syntax above.
|
|
133
|
+
- No external diagramming tools or internet access required β conversion runs entirely locally.
|
|
134
|
+
|
|
135
|
+
## π Typical Workflow
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
# 1. Design your system
|
|
139
|
+
# β edit system/system.yaml
|
|
140
|
+
|
|
141
|
+
# 2. Evaluate and generate C4 Mermaid diagrams
|
|
142
|
+
eva evaluate system
|
|
143
|
+
|
|
144
|
+
# 3. Convert to Draw.io for sharing / presentations
|
|
145
|
+
eva export diagram
|
|
146
|
+
|
|
147
|
+
# 4. Open in browser
|
|
148
|
+
# β https://app.diagrams.net/ β File β Open from Device
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## π Related Commands
|
|
152
|
+
|
|
153
|
+
- **[evaluate system](./EVALUATE_SYSTEM.md)** β generates the `system/c4-container.mmd` and `system/c4-context.mmd` source files consumed by this command
|