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.
Files changed (139) hide show
  1. package/.agents/skills/skill-creator/LICENSE.txt +202 -0
  2. package/.agents/skills/skill-creator/SKILL.md +485 -0
  3. package/.agents/skills/skill-creator/agents/analyzer.md +274 -0
  4. package/.agents/skills/skill-creator/agents/comparator.md +202 -0
  5. package/.agents/skills/skill-creator/agents/grader.md +223 -0
  6. package/.agents/skills/skill-creator/assets/eval_review.html +146 -0
  7. package/.agents/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  8. package/.agents/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  9. package/.agents/skills/skill-creator/references/schemas.md +430 -0
  10. package/.agents/skills/skill-creator/scripts/__init__.py +0 -0
  11. package/.agents/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  12. package/.agents/skills/skill-creator/scripts/generate_report.py +326 -0
  13. package/.agents/skills/skill-creator/scripts/improve_description.py +247 -0
  14. package/.agents/skills/skill-creator/scripts/package_skill.py +136 -0
  15. package/.agents/skills/skill-creator/scripts/quick_validate.py +103 -0
  16. package/.agents/skills/skill-creator/scripts/run_eval.py +310 -0
  17. package/.agents/skills/skill-creator/scripts/run_loop.py +328 -0
  18. package/.agents/skills/skill-creator/scripts/utils.py +47 -0
  19. package/AGENTS.md +268 -6
  20. package/COMMAND_EVALUATION.md +15 -16
  21. package/DOMAIN_YAML_GUIDE.md +430 -14
  22. package/FUTURE_FEATURES.md +1627 -1168
  23. package/README.md +461 -13
  24. package/bin/eva4j.js +32 -14
  25. package/config/defaults.json +1 -0
  26. package/docs/commands/EVALUATE_SYSTEM.md +746 -261
  27. package/docs/commands/EXPORT_DIAGRAM.md +153 -0
  28. package/docs/commands/GENERATE_ENTITIES.md +599 -6
  29. package/docs/commands/INDEX.md +7 -0
  30. package/examples/domain-events.yaml +166 -20
  31. package/examples/domain-listeners.yaml +212 -0
  32. package/examples/domain-one-to-many.yaml +1 -0
  33. package/examples/domain-one-to-one.yaml +1 -0
  34. package/examples/domain-ports.yaml +414 -0
  35. package/examples/domain-soft-delete.yaml +47 -44
  36. package/examples/system/notification.yaml +147 -0
  37. package/examples/system/product.yaml +185 -0
  38. package/examples/system/system.yaml +112 -0
  39. package/examples/system-report.html +971 -0
  40. package/examples/system.yaml +46 -3
  41. package/package.json +2 -1
  42. package/src/agents/design-reviewer.agent.md +163 -0
  43. package/src/commands/build.js +714 -0
  44. package/src/commands/create.js +1 -0
  45. package/src/commands/detach.js +149 -108
  46. package/src/commands/evaluate-system.js +234 -8
  47. package/src/commands/export-diagram.js +522 -0
  48. package/src/commands/generate-entities.js +685 -66
  49. package/src/commands/generate-http-exchange.js +2 -0
  50. package/src/commands/generate-kafka-event.js +43 -10
  51. package/src/generators/base-generator.js +18 -6
  52. package/src/generators/postman-generator.js +188 -0
  53. package/src/generators/shared-generator.js +12 -2
  54. package/src/skills/build-system-yaml/SKILL.md +323 -0
  55. package/src/skills/build-system-yaml/references/domain-yaml-spec.md +410 -0
  56. package/src/skills/build-system-yaml/references/module-spec.md +367 -0
  57. package/src/skills/build-system-yaml/references/system-yaml-spec.md +178 -0
  58. package/src/utils/config-manager.js +54 -0
  59. package/src/utils/context-builder.js +1 -0
  60. package/src/utils/domain-diagram.js +192 -0
  61. package/src/utils/domain-validator.js +1020 -0
  62. package/src/utils/fake-data.js +376 -0
  63. package/src/utils/system-validator.js +319 -199
  64. package/src/utils/yaml-to-entity.js +272 -7
  65. package/templates/aggregate/AggregateMapper.java.ejs +3 -2
  66. package/templates/aggregate/AggregateRepository.java.ejs +3 -2
  67. package/templates/aggregate/AggregateRepositoryImpl.java.ejs +6 -5
  68. package/templates/aggregate/AggregateRoot.java.ejs +60 -2
  69. package/templates/aggregate/DomainEventHandler.java.ejs +4 -1
  70. package/templates/aggregate/DomainEventRecord.java.ejs +24 -8
  71. package/templates/aggregate/DomainEventSnapshot.java.ejs +46 -0
  72. package/templates/aggregate/JpaAggregateRoot.java.ejs +6 -0
  73. package/templates/base/docker/Dockerfile.ejs +21 -0
  74. package/templates/base/gradle/build.gradle.ejs +3 -2
  75. package/templates/base/root/AGENTS.md.ejs +306 -45
  76. package/templates/crud/ApplicationMapper.java.ejs +4 -0
  77. package/templates/crud/Controller.java.ejs +4 -4
  78. package/templates/crud/CreateCommand.java.ejs +4 -0
  79. package/templates/crud/CreateCommandHandler.java.ejs +3 -6
  80. package/templates/crud/CreateItemDto.java.ejs +4 -0
  81. package/templates/crud/CreateValueObjectDto.java.ejs +4 -0
  82. package/templates/crud/DeleteCommandHandler.java.ejs +12 -6
  83. package/templates/crud/EndpointsController.java.ejs +6 -6
  84. package/templates/crud/FindByQuery.java.ejs +1 -1
  85. package/templates/crud/FindByQueryHandler.java.ejs +3 -9
  86. package/templates/crud/GetQueryHandler.java.ejs +2 -5
  87. package/templates/crud/ListQuery.java.ejs +1 -1
  88. package/templates/crud/ListQueryHandler.java.ejs +8 -14
  89. package/templates/crud/ScaffoldCommandHandler.java.ejs +2 -4
  90. package/templates/crud/ScaffoldQuery.java.ejs +3 -2
  91. package/templates/crud/ScaffoldQueryHandler.java.ejs +5 -6
  92. package/templates/crud/SubEntityAddCommand.java.ejs +4 -0
  93. package/templates/crud/SubEntityAddCommandHandler.java.ejs +2 -6
  94. package/templates/crud/SubEntityRemoveCommandHandler.java.ejs +2 -7
  95. package/templates/crud/TransitionCommandHandler.java.ejs +2 -6
  96. package/templates/crud/UpdateCommand.java.ejs +4 -0
  97. package/templates/crud/UpdateCommandHandler.java.ejs +2 -5
  98. package/templates/evaluate/report.html.ejs +394 -2
  99. package/templates/kafka-event/DomainEventHandlerMethod.ejs +3 -1
  100. package/templates/kafka-event/Event.java.ejs +9 -0
  101. package/templates/kafka-listener/KafkaController.java.ejs +1 -1
  102. package/templates/kafka-listener/KafkaListenerClass.java.ejs +1 -1
  103. package/templates/kafka-listener/ListenerClass.java.ejs +65 -0
  104. package/templates/kafka-listener/ListenerCommand.java.ejs +31 -0
  105. package/templates/kafka-listener/ListenerCommandHandler.java.ejs +25 -0
  106. package/templates/kafka-listener/ListenerIntegrationEvent.java.ejs +37 -0
  107. package/templates/kafka-listener/ListenerMethod.java.ejs +1 -1
  108. package/templates/kafka-listener/ListenerNestedType.java.ejs +28 -0
  109. package/templates/mock/MockEvent.java.ejs +10 -0
  110. package/templates/mock/MockMessageBrokerImpl.java.ejs +35 -0
  111. package/templates/mock/MockMessageBrokerImplMethod.java.ejs +6 -0
  112. package/templates/mock/SpringEventListener.java.ejs +61 -0
  113. package/templates/ports/PortDomainModel.java.ejs +35 -0
  114. package/templates/ports/PortFeignAdapter.java.ejs +67 -0
  115. package/templates/ports/PortFeignClient.java.ejs +45 -0
  116. package/templates/ports/PortFeignConfig.java.ejs +24 -0
  117. package/templates/ports/PortInterface.java.ejs +45 -0
  118. package/templates/ports/PortNestedType.java.ejs +28 -0
  119. package/templates/ports/PortRequestDto.java.ejs +30 -0
  120. package/templates/ports/PortResponseDto.java.ejs +28 -0
  121. package/templates/postman/Collection.json.ejs +1 -1
  122. package/templates/postman/UnifiedCollection.json.ejs +185 -0
  123. package/templates/shared/annotations/LogAfter.java.ejs +2 -0
  124. package/templates/shared/annotations/LogBefore.java.ejs +2 -0
  125. package/templates/shared/annotations/LogExceptions.java.ejs +2 -0
  126. package/templates/shared/annotations/LogLevel.java.ejs +8 -0
  127. package/templates/shared/annotations/LogTimer.java.ejs +1 -0
  128. package/templates/shared/annotations/Loggable.java.ejs +17 -0
  129. package/templates/shared/configurations/eventPublicationConfig/EventPublicationSchemaConfig.java.ejs +109 -0
  130. package/templates/shared/configurations/loggerConfig/HandlerLogs.java.ejs +120 -32
  131. package/templates/shared/errorMessage/ErrorResponse.java.ejs +23 -0
  132. package/templates/shared/handlerException/HandlerExceptions.java.ejs +99 -79
  133. package/src/commands/generate-system.js +0 -243
  134. package/templates/base/root/skill-build-domain-yaml-references-generate-entities.md.ejs +0 -1103
  135. package/templates/base/root/skill-build-domain-yaml.ejs +0 -292
  136. package/templates/base/root/skill-build-system-yaml.ejs +0 -252
  137. package/templates/shared/errorMessage/ErrorMessage.java.ejs +0 -5
  138. package/templates/shared/errorMessage/FullErrorMessage.java.ejs +0 -9
  139. 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