@planu/cli 0.27.0 → 0.29.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 (273) hide show
  1. package/dist/config/model-routing-rules.json +98 -0
  2. package/dist/config/tool-groups.json +140 -0
  3. package/dist/engine/ai-cost-estimator/core.d.ts +1 -1
  4. package/dist/engine/ai-cost-estimator/core.d.ts.map +1 -1
  5. package/dist/engine/ai-cost-estimator/core.js +3 -167
  6. package/dist/engine/ai-cost-estimator/core.js.map +1 -1
  7. package/dist/engine/ai-cost-estimator/recommender.d.ts +8 -0
  8. package/dist/engine/ai-cost-estimator/recommender.d.ts.map +1 -0
  9. package/dist/engine/ai-cost-estimator/recommender.js +94 -0
  10. package/dist/engine/ai-cost-estimator/recommender.js.map +1 -0
  11. package/dist/engine/ai-cost-estimator/spec-loader.d.ts +13 -0
  12. package/dist/engine/ai-cost-estimator/spec-loader.d.ts.map +1 -0
  13. package/dist/engine/ai-cost-estimator/spec-loader.js +102 -0
  14. package/dist/engine/ai-cost-estimator/spec-loader.js.map +1 -0
  15. package/dist/engine/code-transforms/transform-engine.d.ts +7 -0
  16. package/dist/engine/code-transforms/transform-engine.d.ts.map +1 -0
  17. package/dist/engine/code-transforms/transform-engine.js +67 -0
  18. package/dist/engine/code-transforms/transform-engine.js.map +1 -0
  19. package/dist/engine/code-transforms/typescript/add-error-handling.d.ts +6 -0
  20. package/dist/engine/code-transforms/typescript/add-error-handling.d.ts.map +1 -0
  21. package/dist/engine/code-transforms/typescript/add-error-handling.js +92 -0
  22. package/dist/engine/code-transforms/typescript/add-error-handling.js.map +1 -0
  23. package/dist/engine/code-transforms/typescript/add-jsdoc.d.ts +6 -0
  24. package/dist/engine/code-transforms/typescript/add-jsdoc.d.ts.map +1 -0
  25. package/dist/engine/code-transforms/typescript/add-jsdoc.js +83 -0
  26. package/dist/engine/code-transforms/typescript/add-jsdoc.js.map +1 -0
  27. package/dist/engine/code-transforms/typescript/add-types.d.ts +3 -0
  28. package/dist/engine/code-transforms/typescript/add-types.d.ts.map +1 -0
  29. package/dist/engine/code-transforms/typescript/add-types.js +182 -0
  30. package/dist/engine/code-transforms/typescript/add-types.js.map +1 -0
  31. package/dist/engine/code-transforms/typescript/ast-utils.d.ts +38 -0
  32. package/dist/engine/code-transforms/typescript/ast-utils.d.ts.map +1 -0
  33. package/dist/engine/code-transforms/typescript/ast-utils.js +90 -0
  34. package/dist/engine/code-transforms/typescript/ast-utils.js.map +1 -0
  35. package/dist/engine/code-transforms/typescript/extract-interface.d.ts +6 -0
  36. package/dist/engine/code-transforms/typescript/extract-interface.d.ts.map +1 -0
  37. package/dist/engine/code-transforms/typescript/extract-interface.js +103 -0
  38. package/dist/engine/code-transforms/typescript/extract-interface.js.map +1 -0
  39. package/dist/engine/code-transforms/typescript/modernize-syntax.d.ts +3 -0
  40. package/dist/engine/code-transforms/typescript/modernize-syntax.d.ts.map +1 -0
  41. package/dist/engine/code-transforms/typescript/modernize-syntax.js +213 -0
  42. package/dist/engine/code-transforms/typescript/modernize-syntax.js.map +1 -0
  43. package/dist/engine/code-transforms/typescript/rename-symbol.d.ts +8 -0
  44. package/dist/engine/code-transforms/typescript/rename-symbol.d.ts.map +1 -0
  45. package/dist/engine/code-transforms/typescript/rename-symbol.js +40 -0
  46. package/dist/engine/code-transforms/typescript/rename-symbol.js.map +1 -0
  47. package/dist/engine/focus-tracker.d.ts.map +1 -1
  48. package/dist/engine/focus-tracker.js +1 -0
  49. package/dist/engine/focus-tracker.js.map +1 -1
  50. package/dist/engine/mermaid/core.d.ts +18 -0
  51. package/dist/engine/mermaid/core.d.ts.map +1 -0
  52. package/dist/engine/mermaid/core.js +88 -0
  53. package/dist/engine/mermaid/core.js.map +1 -0
  54. package/dist/engine/mermaid/diagram-generators.d.ts +22 -0
  55. package/dist/engine/mermaid/diagram-generators.d.ts.map +1 -0
  56. package/dist/engine/mermaid/diagram-generators.js +139 -0
  57. package/dist/engine/mermaid/diagram-generators.js.map +1 -0
  58. package/dist/engine/mermaid/helpers.d.ts +8 -0
  59. package/dist/engine/mermaid/helpers.d.ts.map +1 -0
  60. package/dist/engine/mermaid/helpers.js +61 -0
  61. package/dist/engine/mermaid/helpers.js.map +1 -0
  62. package/dist/engine/mermaid-generator.d.ts +2 -37
  63. package/dist/engine/mermaid-generator.d.ts.map +1 -1
  64. package/dist/engine/mermaid-generator.js +4 -276
  65. package/dist/engine/mermaid-generator.js.map +1 -1
  66. package/dist/engine/model-router/complexity-analyzer.d.ts +26 -0
  67. package/dist/engine/model-router/complexity-analyzer.d.ts.map +1 -0
  68. package/dist/engine/model-router/complexity-analyzer.js +182 -0
  69. package/dist/engine/model-router/complexity-analyzer.js.map +1 -0
  70. package/dist/engine/model-router/cost-estimator.d.ts +6 -0
  71. package/dist/engine/model-router/cost-estimator.d.ts.map +1 -0
  72. package/dist/engine/model-router/cost-estimator.js +60 -0
  73. package/dist/engine/model-router/cost-estimator.js.map +1 -0
  74. package/dist/engine/model-router/historical-learner.d.ts +26 -0
  75. package/dist/engine/model-router/historical-learner.d.ts.map +1 -0
  76. package/dist/engine/model-router/historical-learner.js +91 -0
  77. package/dist/engine/model-router/historical-learner.js.map +1 -0
  78. package/dist/engine/model-router/rules-engine.d.ts +13 -0
  79. package/dist/engine/model-router/rules-engine.d.ts.map +1 -0
  80. package/dist/engine/model-router/rules-engine.js +142 -0
  81. package/dist/engine/model-router/rules-engine.js.map +1 -0
  82. package/dist/engine/planu-config-writer.d.ts +2 -2
  83. package/dist/engine/planu-config-writer.d.ts.map +1 -1
  84. package/dist/engine/planu-config-writer.js +4 -6
  85. package/dist/engine/planu-config-writer.js.map +1 -1
  86. package/dist/engine/spec-coverage/criteria-mapper.d.ts +1 -2
  87. package/dist/engine/spec-coverage/criteria-mapper.d.ts.map +1 -1
  88. package/dist/engine/spec-coverage/criteria-mapper.js +4 -203
  89. package/dist/engine/spec-coverage/criteria-mapper.js.map +1 -1
  90. package/dist/engine/spec-coverage/keyword-extractor.d.ts +10 -0
  91. package/dist/engine/spec-coverage/keyword-extractor.d.ts.map +1 -0
  92. package/dist/engine/spec-coverage/keyword-extractor.js +147 -0
  93. package/dist/engine/spec-coverage/keyword-extractor.js.map +1 -0
  94. package/dist/engine/spec-coverage/test-matchers.d.ts +9 -0
  95. package/dist/engine/spec-coverage/test-matchers.d.ts.map +1 -0
  96. package/dist/engine/spec-coverage/test-matchers.js +59 -0
  97. package/dist/engine/spec-coverage/test-matchers.js.map +1 -0
  98. package/dist/engine/spec-migrator.d.ts +17 -0
  99. package/dist/engine/spec-migrator.d.ts.map +1 -0
  100. package/dist/engine/spec-migrator.js +119 -0
  101. package/dist/engine/spec-migrator.js.map +1 -0
  102. package/dist/engine/spec-templates/catalog-extra.d.ts +1 -1
  103. package/dist/engine/spec-templates/catalog-extra.d.ts.map +1 -1
  104. package/dist/engine/spec-templates/catalog-extra.js +8 -363
  105. package/dist/engine/spec-templates/catalog-extra.js.map +1 -1
  106. package/dist/engine/spec-templates/catalog.d.ts.map +1 -1
  107. package/dist/engine/spec-templates/catalog.js +10 -381
  108. package/dist/engine/spec-templates/catalog.js.map +1 -1
  109. package/dist/engine/spec-templates/templates-api-ui.d.ts +6 -0
  110. package/dist/engine/spec-templates/templates-api-ui.d.ts.map +1 -0
  111. package/dist/engine/spec-templates/templates-api-ui.js +188 -0
  112. package/dist/engine/spec-templates/templates-api-ui.js.map +1 -0
  113. package/dist/engine/spec-templates/templates-auth-crud.d.ts +6 -0
  114. package/dist/engine/spec-templates/templates-auth-crud.d.ts.map +1 -0
  115. package/dist/engine/spec-templates/templates-auth-crud.js +198 -0
  116. package/dist/engine/spec-templates/templates-auth-crud.js.map +1 -0
  117. package/dist/engine/spec-templates/templates-data-security.d.ts +6 -0
  118. package/dist/engine/spec-templates/templates-data-security.d.ts.map +1 -0
  119. package/dist/engine/spec-templates/templates-data-security.js +172 -0
  120. package/dist/engine/spec-templates/templates-data-security.js.map +1 -0
  121. package/dist/engine/spec-templates/templates-perf-integration.d.ts +6 -0
  122. package/dist/engine/spec-templates/templates-perf-integration.d.ts.map +1 -0
  123. package/dist/engine/spec-templates/templates-perf-integration.js +199 -0
  124. package/dist/engine/spec-templates/templates-perf-integration.js.map +1 -0
  125. package/dist/engine/tool-groups/context-analyzer.d.ts +11 -0
  126. package/dist/engine/tool-groups/context-analyzer.d.ts.map +1 -0
  127. package/dist/engine/tool-groups/context-analyzer.js +40 -0
  128. package/dist/engine/tool-groups/context-analyzer.js.map +1 -0
  129. package/dist/engine/tool-groups/group-manager.d.ts +35 -0
  130. package/dist/engine/tool-groups/group-manager.d.ts.map +1 -0
  131. package/dist/engine/tool-groups/group-manager.js +201 -0
  132. package/dist/engine/tool-groups/group-manager.js.map +1 -0
  133. package/dist/engine/vector-store/hnsw.d.ts +37 -0
  134. package/dist/engine/vector-store/hnsw.d.ts.map +1 -0
  135. package/dist/engine/vector-store/hnsw.js +294 -0
  136. package/dist/engine/vector-store/hnsw.js.map +1 -0
  137. package/dist/engine/vector-store/similarity.d.ts +21 -0
  138. package/dist/engine/vector-store/similarity.d.ts.map +1 -0
  139. package/dist/engine/vector-store/similarity.js +86 -0
  140. package/dist/engine/vector-store/similarity.js.map +1 -0
  141. package/dist/engine/vector-store/tfidf.d.ts +35 -0
  142. package/dist/engine/vector-store/tfidf.d.ts.map +1 -0
  143. package/dist/engine/vector-store/tfidf.js +255 -0
  144. package/dist/engine/vector-store/tfidf.js.map +1 -0
  145. package/dist/engine/web-fetcher/registry-loader.d.ts.map +1 -1
  146. package/dist/engine/web-fetcher/registry-loader.js +2 -0
  147. package/dist/engine/web-fetcher/registry-loader.js.map +1 -1
  148. package/dist/index.js +19 -0
  149. package/dist/index.js.map +1 -1
  150. package/dist/storage/vector-store/backend-factory.d.ts +9 -0
  151. package/dist/storage/vector-store/backend-factory.d.ts.map +1 -0
  152. package/dist/storage/vector-store/backend-factory.js +33 -0
  153. package/dist/storage/vector-store/backend-factory.js.map +1 -0
  154. package/dist/storage/vector-store/json-fallback.d.ts +21 -0
  155. package/dist/storage/vector-store/json-fallback.d.ts.map +1 -0
  156. package/dist/storage/vector-store/json-fallback.js +85 -0
  157. package/dist/storage/vector-store/json-fallback.js.map +1 -0
  158. package/dist/storage/vector-store/migrator.d.ts +10 -0
  159. package/dist/storage/vector-store/migrator.d.ts.map +1 -0
  160. package/dist/storage/vector-store/migrator.js +139 -0
  161. package/dist/storage/vector-store/migrator.js.map +1 -0
  162. package/dist/storage/vector-store/sqlite-adapter.d.ts +28 -0
  163. package/dist/storage/vector-store/sqlite-adapter.d.ts.map +1 -0
  164. package/dist/storage/vector-store/sqlite-adapter.js +142 -0
  165. package/dist/storage/vector-store/sqlite-adapter.js.map +1 -0
  166. package/dist/tools/create-spec/constitution-validator.d.ts +4 -0
  167. package/dist/tools/create-spec/constitution-validator.d.ts.map +1 -0
  168. package/dist/tools/create-spec/constitution-validator.js +37 -0
  169. package/dist/tools/create-spec/constitution-validator.js.map +1 -0
  170. package/dist/tools/create-spec/post-creation.d.ts +11 -0
  171. package/dist/tools/create-spec/post-creation.d.ts.map +1 -0
  172. package/dist/tools/create-spec/post-creation.js +48 -0
  173. package/dist/tools/create-spec/post-creation.js.map +1 -0
  174. package/dist/tools/create-spec/spec-builder.d.ts +14 -0
  175. package/dist/tools/create-spec/spec-builder.d.ts.map +1 -0
  176. package/dist/tools/create-spec/spec-builder.js +131 -0
  177. package/dist/tools/create-spec/spec-builder.js.map +1 -0
  178. package/dist/tools/create-spec.d.ts.map +1 -1
  179. package/dist/tools/create-spec.js +42 -172
  180. package/dist/tools/create-spec.js.map +1 -1
  181. package/dist/tools/data-governance/audit-handler.d.ts.map +1 -1
  182. package/dist/tools/data-governance/audit-handler.js +1 -0
  183. package/dist/tools/data-governance/audit-handler.js.map +1 -1
  184. package/dist/tools/design-schema.d.ts.map +1 -1
  185. package/dist/tools/design-schema.js +1 -0
  186. package/dist/tools/design-schema.js.map +1 -1
  187. package/dist/tools/init-project/handler.d.ts.map +1 -1
  188. package/dist/tools/init-project/handler.js +48 -14
  189. package/dist/tools/init-project/handler.js.map +1 -1
  190. package/dist/tools/recommend-model-handler.d.ts +8 -0
  191. package/dist/tools/recommend-model-handler.d.ts.map +1 -0
  192. package/dist/tools/recommend-model-handler.js +65 -0
  193. package/dist/tools/recommend-model-handler.js.map +1 -0
  194. package/dist/tools/register-ai-cost-tools.js +1 -1
  195. package/dist/tools/register-ai-cost-tools.js.map +1 -1
  196. package/dist/tools/register-model-tools.d.ts +3 -0
  197. package/dist/tools/register-model-tools.d.ts.map +1 -0
  198. package/dist/tools/register-model-tools.js +50 -0
  199. package/dist/tools/register-model-tools.js.map +1 -0
  200. package/dist/tools/register-search-tools.d.ts +7 -0
  201. package/dist/tools/register-search-tools.d.ts.map +1 -0
  202. package/dist/tools/register-search-tools.js +34 -0
  203. package/dist/tools/register-search-tools.js.map +1 -0
  204. package/dist/tools/register-spec-tools/core-spec-tools.d.ts.map +1 -1
  205. package/dist/tools/register-spec-tools/core-spec-tools.js +0 -4
  206. package/dist/tools/register-spec-tools/core-spec-tools.js.map +1 -1
  207. package/dist/tools/register-tool-groups.d.ts +7 -0
  208. package/dist/tools/register-tool-groups.d.ts.map +1 -0
  209. package/dist/tools/register-tool-groups.js +39 -0
  210. package/dist/tools/register-tool-groups.js.map +1 -0
  211. package/dist/tools/register-transform-tools.d.ts +3 -0
  212. package/dist/tools/register-transform-tools.d.ts.map +1 -0
  213. package/dist/tools/register-transform-tools.js +29 -0
  214. package/dist/tools/register-transform-tools.js.map +1 -0
  215. package/dist/tools/semantic-search-handler.d.ts +7 -0
  216. package/dist/tools/semantic-search-handler.d.ts.map +1 -0
  217. package/dist/tools/semantic-search-handler.js +72 -0
  218. package/dist/tools/semantic-search-handler.js.map +1 -0
  219. package/dist/tools/suggest-tooling/orchestration-generator.js +1 -1
  220. package/dist/tools/suggest-tooling/orchestration-generator.js.map +1 -1
  221. package/dist/tools/tool-group-handler.d.ts +9 -0
  222. package/dist/tools/tool-group-handler.d.ts.map +1 -0
  223. package/dist/tools/tool-group-handler.js +82 -0
  224. package/dist/tools/tool-group-handler.js.map +1 -0
  225. package/dist/tools/transform-code-handler.d.ts +7 -0
  226. package/dist/tools/transform-code-handler.d.ts.map +1 -0
  227. package/dist/tools/transform-code-handler.js +58 -0
  228. package/dist/tools/transform-code-handler.js.map +1 -0
  229. package/dist/types/advanced-framework.d.ts +47 -0
  230. package/dist/types/advanced-framework.d.ts.map +1 -0
  231. package/dist/types/advanced-framework.js +3 -0
  232. package/dist/types/advanced-framework.js.map +1 -0
  233. package/dist/types/code-transforms.d.ts +114 -0
  234. package/dist/types/code-transforms.d.ts.map +1 -0
  235. package/dist/types/code-transforms.js +11 -0
  236. package/dist/types/code-transforms.js.map +1 -0
  237. package/dist/types/css-framework.d.ts +110 -0
  238. package/dist/types/css-framework.d.ts.map +1 -0
  239. package/dist/types/css-framework.js +3 -0
  240. package/dist/types/css-framework.js.map +1 -0
  241. package/dist/types/dashboard.d.ts +77 -0
  242. package/dist/types/dashboard.d.ts.map +1 -0
  243. package/dist/types/dashboard.js +2 -0
  244. package/dist/types/dashboard.js.map +1 -0
  245. package/dist/types/index.d.ts +4 -0
  246. package/dist/types/index.d.ts.map +1 -1
  247. package/dist/types/index.js +4 -0
  248. package/dist/types/index.js.map +1 -1
  249. package/dist/types/model-routing.d.ts +127 -0
  250. package/dist/types/model-routing.d.ts.map +1 -0
  251. package/dist/types/model-routing.js +3 -0
  252. package/dist/types/model-routing.js.map +1 -0
  253. package/dist/types/project/inputs.d.ts +0 -1
  254. package/dist/types/project/inputs.d.ts.map +1 -1
  255. package/dist/types/spec/core.d.ts +28 -1
  256. package/dist/types/spec/core.d.ts.map +1 -1
  257. package/dist/types/spec/inputs.d.ts +9 -6
  258. package/dist/types/spec/inputs.d.ts.map +1 -1
  259. package/dist/types/tool-groups.d.ts +57 -0
  260. package/dist/types/tool-groups.d.ts.map +1 -0
  261. package/dist/types/tool-groups.js +3 -0
  262. package/dist/types/tool-groups.js.map +1 -0
  263. package/dist/types/ui.d.ts +3 -231
  264. package/dist/types/ui.d.ts.map +1 -1
  265. package/dist/types/ui.js +7 -1
  266. package/dist/types/ui.js.map +1 -1
  267. package/dist/types/vector-store.d.ts +137 -0
  268. package/dist/types/vector-store.d.ts.map +1 -0
  269. package/dist/types/vector-store.js +3 -0
  270. package/dist/types/vector-store.js.map +1 -0
  271. package/package.json +1 -1
  272. package/src/config/model-routing-rules.json +98 -0
  273. package/src/config/tool-groups.json +140 -0
@@ -0,0 +1,88 @@
1
+ // engine/mermaid/core.ts — Main orchestrator for Mermaid diagram generation.
2
+ // Extracted from mermaid-generator.ts to keep file sizes within limits.
3
+ import { isScopeAtLeast, buildLayers } from './helpers.js';
4
+ import { generateErDiagram, generateSequenceDiagram, generateComponentDiagram, generateStateDiagram, generateArchitectureDiagram, } from './diagram-generators.js';
5
+ import { generateClassDiagram, generateGanttDiagram, generatePieDiagram, } from '../mermaid-extended.js';
6
+ /**
7
+ * Generate all applicable diagrams for a spec based on its scope and context.
8
+ */
9
+ export function generateDiagrams(spec, knowledge, options) {
10
+ const diagrams = [];
11
+ // Data flow diagram for ALL specs (except trivial)
12
+ if (spec.scope !== 'trivial') {
13
+ diagrams.push(generateDataFlowDiagram(spec, knowledge));
14
+ }
15
+ // ER diagram if database changes
16
+ if (options.hasDatabase) {
17
+ diagrams.push(generateErDiagram(spec, knowledge));
18
+ }
19
+ // Sequence diagram if scope >= cross-module
20
+ if (isScopeAtLeast(spec.scope, 'cross-module')) {
21
+ diagrams.push(generateSequenceDiagram(spec, knowledge));
22
+ }
23
+ // Component diagram if UI
24
+ if (options.hasUi) {
25
+ diagrams.push(generateComponentDiagram(spec, knowledge));
26
+ }
27
+ // State machine diagram if transitions
28
+ if (options.hasTransitions) {
29
+ diagrams.push(generateStateDiagram(spec));
30
+ }
31
+ // Architecture diagram if scope = architectural
32
+ if (spec.scope === 'architectural') {
33
+ diagrams.push(generateArchitectureDiagram(spec, knowledge));
34
+ }
35
+ // Class diagram for cross-module+ backend/shared specs
36
+ if (isScopeAtLeast(spec.scope, 'cross-module') &&
37
+ (spec.target === 'backend' || spec.target === 'shared' || spec.target === 'fullstack')) {
38
+ diagrams.push(generateClassDiagram(spec));
39
+ }
40
+ // Gantt diagram for larger specs (> 8 dev hours)
41
+ if (spec.estimation.devHours > 8) {
42
+ diagrams.push(generateGanttDiagram(spec));
43
+ }
44
+ // Pie chart for effort distribution (always for per-spec reports)
45
+ diagrams.push(generatePieDiagram(spec));
46
+ return diagrams;
47
+ }
48
+ /**
49
+ * Generate a data flow diagram: Client -> Action -> Service -> Repo -> DB
50
+ */
51
+ export function generateDataFlowDiagram(spec, knowledge) {
52
+ const layers = buildLayers(spec.target, knowledge);
53
+ const lines = ['graph LR'];
54
+ layers.forEach((from, i) => {
55
+ const to = layers[i + 1];
56
+ if (to) {
57
+ lines.push(` ${from.id}[${from.label}] --> ${to.id}[${to.label}]`);
58
+ }
59
+ });
60
+ return {
61
+ type: 'data-flow',
62
+ title: `Data Flow — ${spec.title}`,
63
+ format: 'mermaid',
64
+ content: lines.join('\n'),
65
+ description: 'Data flow diagram showing how data moves through the system layers.',
66
+ };
67
+ }
68
+ /**
69
+ * Format diagrams as Mermaid code blocks for inclusion in markdown.
70
+ */
71
+ export function formatDiagramsAsMarkdown(diagrams) {
72
+ if (diagrams.length === 0) {
73
+ return '';
74
+ }
75
+ const sections = [];
76
+ for (const diagram of diagrams) {
77
+ sections.push(`### ${diagram.title}`);
78
+ sections.push('');
79
+ sections.push(`> ${diagram.description}`);
80
+ sections.push('');
81
+ sections.push('```mermaid');
82
+ sections.push(diagram.content);
83
+ sections.push('```');
84
+ sections.push('');
85
+ }
86
+ return sections.join('\n');
87
+ }
88
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/engine/mermaid/core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { SpecDiagram, Spec, ProjectKnowledge } from '../../types/index.js';
2
+ /**
3
+ * Generate an ER diagram for database changes.
4
+ */
5
+ export declare function generateErDiagram(spec: Spec, knowledge: ProjectKnowledge | null): SpecDiagram;
6
+ /**
7
+ * Generate a sequence diagram for cross-module interactions.
8
+ */
9
+ export declare function generateSequenceDiagram(spec: Spec, knowledge: ProjectKnowledge | null): SpecDiagram;
10
+ /**
11
+ * Generate a component diagram for UI specs.
12
+ */
13
+ export declare function generateComponentDiagram(spec: Spec, knowledge: ProjectKnowledge | null): SpecDiagram;
14
+ /**
15
+ * Generate a state machine diagram for transitions.
16
+ */
17
+ export declare function generateStateDiagram(spec: Spec): SpecDiagram;
18
+ /**
19
+ * Generate an architecture diagram for architectural specs.
20
+ */
21
+ export declare function generateArchitectureDiagram(spec: Spec, knowledge: ProjectKnowledge | null): SpecDiagram;
22
+ //# sourceMappingURL=diagram-generators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagram-generators.d.ts","sourceRoot":"","sources":["../../../src/engine/mermaid/diagram-generators.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGhF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,gBAAgB,GAAG,IAAI,GAAG,WAAW,CA2B7F;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,gBAAgB,GAAG,IAAI,GACjC,WAAW,CA+Bb;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,gBAAgB,GAAG,IAAI,GACjC,WAAW,CAqBb;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,WAAW,CAmB5D;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,gBAAgB,GAAG,IAAI,GACjC,WAAW,CA8Bb"}
@@ -0,0 +1,139 @@
1
+ // engine/mermaid/diagram-generators.ts — Individual diagram type generators.
2
+ // Extracted from mermaid-generator.ts to keep file sizes within limits.
3
+ import { buildParticipants } from './helpers.js';
4
+ /**
5
+ * Generate an ER diagram for database changes.
6
+ */
7
+ export function generateErDiagram(spec, knowledge) {
8
+ const dbEngine = knowledge?.database ?? 'unknown';
9
+ const lines = [
10
+ 'erDiagram',
11
+ ` %% Database: ${dbEngine}`,
12
+ ` %% Spec: ${spec.title}`,
13
+ ' ENTITY_A {',
14
+ ' string id PK',
15
+ ' string name',
16
+ ' datetime created_at',
17
+ ' }',
18
+ ' ENTITY_B {',
19
+ ' string id PK',
20
+ ' string entity_a_id FK',
21
+ ' string value',
22
+ ' }',
23
+ ' ENTITY_A ||--o{ ENTITY_B : "has many"',
24
+ ];
25
+ return {
26
+ type: 'er',
27
+ title: `Entity Relationship — ${spec.title}`,
28
+ format: 'mermaid',
29
+ content: lines.join('\n'),
30
+ description: 'Entity-relationship diagram for database schema changes. Customize entities to match your domain.',
31
+ };
32
+ }
33
+ /**
34
+ * Generate a sequence diagram for cross-module interactions.
35
+ */
36
+ export function generateSequenceDiagram(spec, knowledge) {
37
+ const participants = buildParticipants(spec.target, knowledge);
38
+ const lines = ['sequenceDiagram'];
39
+ for (const p of participants) {
40
+ lines.push(` participant ${p.id} as ${p.label}`);
41
+ }
42
+ // Generate basic request-response flow
43
+ const first = participants[0];
44
+ const second = participants[1];
45
+ if (first && second) {
46
+ lines.push(` ${first.id}->>+${second.id}: Request`);
47
+ const third = participants[2];
48
+ if (third) {
49
+ lines.push(` ${second.id}->>+${third.id}: Process`);
50
+ lines.push(` ${third.id}-->>-${second.id}: Result`);
51
+ }
52
+ lines.push(` ${second.id}-->>-${first.id}: Response`);
53
+ }
54
+ return {
55
+ type: 'sequence',
56
+ title: `Sequence Diagram — ${spec.title}`,
57
+ format: 'mermaid',
58
+ content: lines.join('\n'),
59
+ description: 'Sequence diagram showing interactions between modules. Customize messages to match your flow.',
60
+ };
61
+ }
62
+ /**
63
+ * Generate a component diagram for UI specs.
64
+ */
65
+ export function generateComponentDiagram(spec, knowledge) {
66
+ const framework = knowledge?.framework ?? 'UI';
67
+ const lines = [
68
+ 'graph TD',
69
+ ` Page["${spec.title} Page"]`,
70
+ ` Page --> Header[Header]`,
71
+ ` Page --> Main[Main Content]`,
72
+ ` Page --> Footer[Footer]`,
73
+ ` Main --> CompA["Component A"]`,
74
+ ` Main --> CompB["Component B"]`,
75
+ ` CompA --> Store["${framework} State"]`,
76
+ ` CompB --> Store`,
77
+ ];
78
+ return {
79
+ type: 'component',
80
+ title: `Component Diagram — ${spec.title}`,
81
+ format: 'mermaid',
82
+ content: lines.join('\n'),
83
+ description: 'UI component hierarchy diagram. Customize components to match your design.',
84
+ };
85
+ }
86
+ /**
87
+ * Generate a state machine diagram for transitions.
88
+ */
89
+ export function generateStateDiagram(spec) {
90
+ const lines = [
91
+ 'stateDiagram-v2',
92
+ ` [*] --> Initial`,
93
+ ` Initial --> Processing: Start`,
94
+ ` Processing --> Success: Complete`,
95
+ ` Processing --> Error: Fail`,
96
+ ` Error --> Processing: Retry`,
97
+ ` Success --> [*]`,
98
+ ];
99
+ return {
100
+ type: 'state-machine',
101
+ title: `State Machine — ${spec.title}`,
102
+ format: 'mermaid',
103
+ content: lines.join('\n'),
104
+ description: 'State machine diagram showing state transitions. Customize states to match your domain.',
105
+ };
106
+ }
107
+ /**
108
+ * Generate an architecture diagram for architectural specs.
109
+ */
110
+ export function generateArchitectureDiagram(spec, knowledge) {
111
+ const arch = knowledge?.architecture;
112
+ const pattern = arch ? arch.primary : 'layered';
113
+ const externalServices = knowledge?.externalServices ?? [];
114
+ const externalLabel = externalServices.length > 0 ? externalServices.slice(0, 2).join(' / ') : 'External Services';
115
+ const lines = [
116
+ 'graph TB',
117
+ ` subgraph "${spec.title}"`,
118
+ ` direction TB`,
119
+ ` Client["Client Layer"]`,
120
+ ` API["API Gateway"]`,
121
+ ` Service["Service Layer"]`,
122
+ ` Data["Data Layer"]`,
123
+ ` Client --> API`,
124
+ ` API --> Service`,
125
+ ` Service --> Data`,
126
+ ` end`,
127
+ ` External["${externalLabel}"]`,
128
+ ` Service --> External`,
129
+ ` %% Architecture: ${pattern}`,
130
+ ];
131
+ return {
132
+ type: 'architecture',
133
+ title: `Architecture — ${spec.title}`,
134
+ format: 'mermaid',
135
+ content: lines.join('\n'),
136
+ description: `Architecture diagram using ${pattern} pattern. Customize to match your system.`,
137
+ };
138
+ }
139
+ //# sourceMappingURL=diagram-generators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagram-generators.js","sourceRoot":"","sources":["../../../src/engine/mermaid/diagram-generators.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { SpecScope, SpecTarget, ProjectKnowledge, LayerNode } from '../../types/index.js';
2
+ /** Checks if a scope meets or exceeds a threshold in the scope ordering. */
3
+ export declare function isScopeAtLeast(scope: SpecScope, threshold: SpecScope): boolean;
4
+ /** Builds layer nodes for data flow diagrams based on target and knowledge. */
5
+ export declare function buildLayers(target: SpecTarget, knowledge: ProjectKnowledge | null): LayerNode[];
6
+ /** Builds participant nodes for sequence diagrams based on target and knowledge. */
7
+ export declare function buildParticipants(target: SpecTarget, knowledge: ProjectKnowledge | null): LayerNode[];
8
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/engine/mermaid/helpers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAE/F,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAQ9E;AAED,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,EAAE,CA4C/F;AAED,oFAAoF;AACpF,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,gBAAgB,GAAG,IAAI,GACjC,SAAS,EAAE,CAgBb"}
@@ -0,0 +1,61 @@
1
+ // engine/mermaid/helpers.ts — Shared helpers for mermaid diagram generation.
2
+ // Extracted from mermaid-generator.ts to keep file sizes within limits.
3
+ /** Checks if a scope meets or exceeds a threshold in the scope ordering. */
4
+ export function isScopeAtLeast(scope, threshold) {
5
+ const order = {
6
+ trivial: 0,
7
+ feature: 1,
8
+ 'cross-module': 2,
9
+ architectural: 3,
10
+ };
11
+ return order[scope] >= order[threshold];
12
+ }
13
+ /** Builds layer nodes for data flow diagrams based on target and knowledge. */
14
+ export function buildLayers(target, knowledge) {
15
+ // If knowledge has real architecture layers, prefer them over target-inferred ones
16
+ if (knowledge && knowledge.architecture.layers.length > 0) {
17
+ return knowledge.architecture.layers.map((l) => ({
18
+ id: l.name.replace(/[^a-zA-Z0-9]/g, '_'),
19
+ label: l.name,
20
+ }));
21
+ }
22
+ const framework = knowledge?.framework ?? '';
23
+ const layers = [];
24
+ if (target === 'frontend' || target === 'fullstack') {
25
+ layers.push({ id: 'Client', label: framework ? `Client (${framework})` : 'Client' });
26
+ }
27
+ if (target !== 'database' && target !== 'infrastructure') {
28
+ layers.push({ id: 'Action', label: 'Action/Controller' });
29
+ layers.push({ id: 'Service', label: 'Service' });
30
+ }
31
+ if (target === 'backend' || target === 'fullstack' || target === 'database') {
32
+ layers.push({ id: 'Repo', label: 'Repository' });
33
+ const dbRaw = knowledge?.database ?? 'DB';
34
+ const db = dbRaw === 'unknown' ? 'DB' : dbRaw;
35
+ layers.push({ id: 'DB', label: db });
36
+ }
37
+ if (target === 'infrastructure') {
38
+ layers.push({ id: 'Infra', label: 'Infrastructure' });
39
+ layers.push({ id: 'Cloud', label: 'Cloud Provider' });
40
+ }
41
+ // Fallback if empty
42
+ if (layers.length === 0) {
43
+ layers.push({ id: 'Input', label: 'Input' }, { id: 'Process', label: 'Process' }, { id: 'Output', label: 'Output' });
44
+ }
45
+ return layers;
46
+ }
47
+ /** Builds participant nodes for sequence diagrams based on target and knowledge. */
48
+ export function buildParticipants(target, knowledge) {
49
+ const participants = [];
50
+ if (target === 'frontend' || target === 'fullstack') {
51
+ participants.push({ id: 'UI', label: 'UI' });
52
+ }
53
+ participants.push({ id: 'API', label: 'API' });
54
+ participants.push({ id: 'SVC', label: 'Service' });
55
+ if (target === 'backend' || target === 'fullstack' || target === 'database') {
56
+ const db = knowledge?.database ?? 'DB';
57
+ participants.push({ id: 'DB', label: db });
58
+ }
59
+ return participants;
60
+ }
61
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/engine/mermaid/helpers.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,wEAAwE;AAIxE,4EAA4E;AAC5E,MAAM,UAAU,cAAc,CAAC,KAAgB,EAAE,SAAoB;IACnE,MAAM,KAAK,GAA8B;QACvC,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;QACV,cAAc,EAAE,CAAC;QACjB,aAAa,EAAE,CAAC;KACjB,CAAC;IACF,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;AAC1C,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,WAAW,CAAC,MAAkB,EAAE,SAAkC;IAChF,mFAAmF;IACnF,IAAI,SAAS,IAAI,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1D,OAAO,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/C,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC;YACxC,KAAK,EAAE,CAAC,CAAC,IAAI;SACd,CAAC,CAAC,CAAC;IACN,CAAC;IAED,MAAM,SAAS,GAAG,SAAS,EAAE,SAAS,IAAI,EAAE,CAAC;IAE7C,MAAM,MAAM,GAAgB,EAAE,CAAC;IAE/B,IAAI,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,WAAW,SAAS,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IACvF,CAAC;IAED,IAAI,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,gBAAgB,EAAE,CAAC;QACzD,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAC1D,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC5E,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,SAAS,EAAE,QAAQ,IAAI,IAAI,CAAC;QAC1C,MAAM,EAAE,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9C,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,MAAM,KAAK,gBAAgB,EAAE,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACtD,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,oBAAoB;IACpB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CACT,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAC/B,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,EACnC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAClC,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,iBAAiB,CAC/B,MAAkB,EAClB,SAAkC;IAElC,MAAM,YAAY,GAAgB,EAAE,CAAC;IAErC,IAAI,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;QACpD,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/C,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAEnD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC5E,MAAM,EAAE,GAAG,SAAS,EAAE,QAAQ,IAAI,IAAI,CAAC;QACvC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC"}
@@ -1,39 +1,4 @@
1
- import type { SpecDiagram, Spec, ProjectKnowledge } from '../types/index.js';
1
+ export { generateDiagrams, generateDataFlowDiagram, formatDiagramsAsMarkdown, } from './mermaid/core.js';
2
+ export { generateErDiagram, generateSequenceDiagram, generateComponentDiagram, generateStateDiagram, generateArchitectureDiagram, } from './mermaid/diagram-generators.js';
2
3
  export { generateClassDiagram, generateGanttDiagram, generatePieDiagram, } from './mermaid-extended.js';
3
- /**
4
- * Generate all applicable diagrams for a spec based on its scope and context.
5
- */
6
- export declare function generateDiagrams(spec: Spec, knowledge: ProjectKnowledge | null, options: {
7
- hasDatabase: boolean;
8
- hasUi: boolean;
9
- hasTransitions: boolean;
10
- }): SpecDiagram[];
11
- /**
12
- * Generate a data flow diagram: Client -> Action -> Service -> Repo -> DB
13
- */
14
- export declare function generateDataFlowDiagram(spec: Spec, knowledge: ProjectKnowledge | null): SpecDiagram;
15
- /**
16
- * Generate an ER diagram for database changes.
17
- */
18
- export declare function generateErDiagram(spec: Spec, knowledge: ProjectKnowledge | null): SpecDiagram;
19
- /**
20
- * Generate a sequence diagram for cross-module interactions.
21
- */
22
- export declare function generateSequenceDiagram(spec: Spec, knowledge: ProjectKnowledge | null): SpecDiagram;
23
- /**
24
- * Generate a component diagram for UI specs.
25
- */
26
- export declare function generateComponentDiagram(spec: Spec, knowledge: ProjectKnowledge | null): SpecDiagram;
27
- /**
28
- * Generate a state machine diagram for transitions.
29
- */
30
- export declare function generateStateDiagram(spec: Spec): SpecDiagram;
31
- /**
32
- * Generate an architecture diagram for architectural specs.
33
- */
34
- export declare function generateArchitectureDiagram(spec: Spec, knowledge: ProjectKnowledge | null): SpecDiagram;
35
- /**
36
- * Format diagrams as Mermaid code blocks for inclusion in markdown.
37
- */
38
- export declare function formatDiagramsAsMarkdown(diagrams: SpecDiagram[]): string;
39
4
  //# sourceMappingURL=mermaid-generator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mermaid-generator.d.ts","sourceRoot":"","sources":["../../src/engine/mermaid-generator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,WAAW,EACX,IAAI,EAGJ,gBAAgB,EAEjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAO/B;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,gBAAgB,GAAG,IAAI,EAClC,OAAO,EAAE;IAAE,WAAW,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,cAAc,EAAE,OAAO,CAAA;CAAE,GACzE,WAAW,EAAE,CAkDf;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,gBAAgB,GAAG,IAAI,GACjC,WAAW,CAkBb;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,gBAAgB,GAAG,IAAI,GAAG,WAAW,CA2B7F;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,gBAAgB,GAAG,IAAI,GACjC,WAAW,CA+Bb;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,gBAAgB,GAAG,IAAI,GACjC,WAAW,CAqBb;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,WAAW,CAmB5D;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,gBAAgB,GAAG,IAAI,GACjC,WAAW,CA8Bb;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,CAkBxE"}
1
+ {"version":3,"file":"mermaid-generator.d.ts","sourceRoot":"","sources":["../../src/engine/mermaid-generator.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC"}