agentic-mermaid 0.1.0 → 0.1.2

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 (333) hide show
  1. package/CHANGELOG.md +149 -4
  2. package/LICENSES/Apache-2.0.txt +202 -0
  3. package/README.md +25 -32
  4. package/THIRD_PARTY_NOTICES.md +29 -0
  5. package/assets/fonts/FONT-LICENSES.md +9 -5
  6. package/assets/fonts/Inter-Bold.ttf +0 -0
  7. package/assets/fonts/Inter-Medium.ttf +0 -0
  8. package/assets/fonts/Inter-Regular.ttf +0 -0
  9. package/assets/fonts/Inter-SemiBold.ttf +0 -0
  10. package/dist/agent-core.d.ts +463 -0
  11. package/dist/agent-core.js +397 -0
  12. package/dist/agent.d.ts +81 -1822
  13. package/dist/agent.js +336 -36839
  14. package/dist/agentic-mermaid-mcp.js +7 -37908
  15. package/dist/am.js +33638 -36261
  16. package/dist/chunk-4QECACIA.js +4702 -0
  17. package/dist/chunk-CDPKJ2BQ.js +37 -0
  18. package/dist/chunk-QKDLMOJJ.js +3487 -0
  19. package/dist/chunk-WI35L7IR.js +615 -0
  20. package/dist/chunk-WN3YDOBG.js +149 -0
  21. package/dist/chunk-ZYMMKQ3I.js +62637 -0
  22. package/dist/index-D54dqSdC.d.ts +6777 -0
  23. package/dist/index.d.ts +1 -1
  24. package/dist/index.js +310 -32836
  25. package/dist/mcp-cli-SBQSTJFC.js +17 -0
  26. package/docs/README.md +14 -6
  27. package/docs/schemas/style-spec.schema.json +1221 -30
  28. package/examples/styles/catalog.json +54 -0
  29. package/examples/styles/cloudflare-workers-inspired-prototype.mmd +9 -0
  30. package/examples/styles/cloudflare-workers-inspired-prototype.style.json +110 -0
  31. package/examples/styles/cupertino-prototype.mmd +10 -0
  32. package/examples/styles/cupertino-prototype.style.json +63 -0
  33. package/examples/styles/mid-century-report.style.json +2 -2
  34. package/examples/styles/star-chart-atlas.style.json +2 -1
  35. package/examples/styles/transit-route-map.style.json +2 -2
  36. package/examples/styles/vercel-inspired-prototype.mmd +6 -0
  37. package/examples/styles/vercel-inspired-prototype.style.json +87 -0
  38. package/package.json +70 -43
  39. package/server.json +41 -0
  40. package/skills/agentic-mermaid-diagram-workflow/SKILL.md +17 -36
  41. package/skills/agentic-mermaid-diagram-workflow/references/cli.md +4 -5
  42. package/skills/agentic-mermaid-diagram-workflow/references/code-mode.md +15 -31
  43. package/skills/agentic-mermaid-diagram-workflow/references/sequence.md +10 -14
  44. package/skills/agentic-mermaid-live-editor/SKILL.md +100 -206
  45. package/AGENT_NATIVE.md +0 -602
  46. package/Instructions_for_agents.md +0 -83
  47. package/TODO.md +0 -662
  48. package/assets/hero.png +0 -0
  49. package/dist/index-x2Cj1dVv.d.ts +0 -1089
  50. package/docs/agent-api-cookbook.md +0 -308
  51. package/docs/agent-mutation-policy.md +0 -104
  52. package/docs/agent-workflow-examples.md +0 -46
  53. package/docs/api.md +0 -203
  54. package/docs/ascii.md +0 -103
  55. package/docs/assets/improvements/box-start-connector.png +0 -0
  56. package/docs/assets/improvements/comment-dropped-lint.png +0 -0
  57. package/docs/assets/improvements/er-content-loss.png +0 -0
  58. package/docs/assets/improvements/fan-in-trunks.png +0 -0
  59. package/docs/assets/improvements/gantt-family.png +0 -0
  60. package/docs/assets/improvements/gantt-milestone-clamp.png +0 -0
  61. package/docs/assets/improvements/gantt-verify-seam.png +0 -0
  62. package/docs/assets/improvements/subgraph-container-edges.png +0 -0
  63. package/docs/assets/improvements/wrapper-frontmatter.png +0 -0
  64. package/docs/assets/improvements/wrapper-init-directive.png +0 -0
  65. package/docs/assets/improvements/wrapper-leading-comment.png +0 -0
  66. package/docs/assets/style-cookbook/mid-century-report.png +0 -0
  67. package/docs/assets/style-cookbook/star-chart-atlas.png +0 -0
  68. package/docs/assets/style-cookbook/transit-route-map.png +0 -0
  69. package/docs/comparison.md +0 -94
  70. package/docs/config.md +0 -105
  71. package/docs/contributing/adding-diagram-types.md +0 -144
  72. package/docs/contributing/diagram-family-citizenship.matrix.json +0 -2127
  73. package/docs/contributing/diagram-family-citizenship.md +0 -82
  74. package/docs/contributing/harvesting-upstream-tests.md +0 -126
  75. package/docs/contributing/lessons-learned.md +0 -276
  76. package/docs/contributing/releasing.md +0 -71
  77. package/docs/contributing/visual-review-evidence.md +0 -53
  78. package/docs/custom-style-cookbook.md +0 -154
  79. package/docs/design/families/README.md +0 -26
  80. package/docs/design/families/architecture-beta.md +0 -48
  81. package/docs/design/families/flowchart-parser-conformance.md +0 -22
  82. package/docs/design/families/gantt-research.md +0 -137
  83. package/docs/design/families/gantt.md +0 -329
  84. package/docs/design/families/journey-agentic-cards-before.png +0 -0
  85. package/docs/design/families/journey-mermaid-classic-implementation.png +0 -0
  86. package/docs/design/families/journey-mermaid-classic-prototype.png +0 -0
  87. package/docs/design/families/journey-mermaid-classic-prototype.svg +0 -163
  88. package/docs/design/families/journey-mermaid-classic-prototype.svg.png +0 -0
  89. package/docs/design/families/journey-migration-parity.md +0 -433
  90. package/docs/design/families/journey-usage-research.md +0 -423
  91. package/docs/design/families/journey.md +0 -125
  92. package/docs/design/families/xychart.md +0 -85
  93. package/docs/design/system/README.md +0 -45
  94. package/docs/design/system/abstraction-audit.md +0 -224
  95. package/docs/design/system/abstraction-recommendations.md +0 -655
  96. package/docs/design/system/architecture.mmd +0 -29
  97. package/docs/design/system/architecture.svg +0 -137
  98. package/docs/design/system/layout-guarantees-and-robustness.md +0 -351
  99. package/docs/design/system/layout-rubric.md +0 -138
  100. package/docs/design/system/route-contracts.md +0 -848
  101. package/docs/design/system/source-preservation-ladder.md +0 -52
  102. package/docs/design/system/styles-rollout.md +0 -216
  103. package/docs/design/system/ugly-layouts.md +0 -119
  104. package/docs/diagram-families.md +0 -193
  105. package/docs/features.md +0 -147
  106. package/docs/fork-differences.md +0 -130
  107. package/docs/getting-started.md +0 -175
  108. package/docs/issue-derived-test-cases.md +0 -156
  109. package/docs/layout-characterization/README.md +0 -245
  110. package/docs/layout-characterization/contact-sheet-families.md +0 -496
  111. package/docs/layout-characterization/contact-sheet.md +0 -638
  112. package/docs/layout-characterization/properties.md +0 -281
  113. package/docs/layout-characterization/visual-quality.md +0 -160
  114. package/docs/layout-characterization/visual-snapshots/architecture.svg +0 -79
  115. package/docs/layout-characterization/visual-snapshots/class.svg +0 -60
  116. package/docs/layout-characterization/visual-snapshots/er.svg +0 -61
  117. package/docs/layout-characterization/visual-snapshots/flowchart.svg +0 -58
  118. package/docs/layout-characterization/visual-snapshots/gantt.svg +0 -52
  119. package/docs/layout-characterization/visual-snapshots/journey.svg +0 -118
  120. package/docs/layout-characterization/visual-snapshots/pie.svg +0 -36
  121. package/docs/layout-characterization/visual-snapshots/quadrant.svg +0 -47
  122. package/docs/layout-characterization/visual-snapshots/sequence.svg +0 -59
  123. package/docs/layout-characterization/visual-snapshots/state.svg +0 -52
  124. package/docs/layout-characterization/visual-snapshots/timeline.svg +0 -64
  125. package/docs/layout-characterization/visual-snapshots/xychart.svg +0 -97
  126. package/docs/mcp-code-mode-rationale.md +0 -101
  127. package/docs/mcp-http-transport.md +0 -223
  128. package/docs/mermaid-layout-complaints.md +0 -837
  129. package/docs/mutation-testing.md +0 -206
  130. package/docs/project/divergences.md +0 -98
  131. package/docs/project/dogfooding-docs-strategy.md +0 -66
  132. package/docs/project/hosted-mcp-cloudflare-plan.md +0 -338
  133. package/docs/project/lessons-learned.md +0 -1019
  134. package/docs/project/remove-role-styling-plan.md +0 -176
  135. package/docs/quality.md +0 -212
  136. package/docs/react.md +0 -97
  137. package/docs/style-authoring.md +0 -133
  138. package/docs/testing-strategy.md +0 -335
  139. package/docs/theming.md +0 -162
  140. package/examples/agent-improve-auth-flow.ts +0 -206
  141. package/examples/agent-loop.ts +0 -53
  142. package/examples/mcp-vs-cli-complex-diagrams.ts +0 -133
  143. package/llms.txt +0 -104
  144. package/skill-evals/README.md +0 -77
  145. package/skill-evals/fixtures/architecture-cache/input.mmd +0 -5
  146. package/skill-evals/fixtures/class-payment/input.mmd +0 -4
  147. package/skill-evals/fixtures/er-orders/input.mmd +0 -10
  148. package/skill-evals/fixtures/flowchart-cache/input.mmd +0 -3
  149. package/skill-evals/fixtures/gantt-release/input.mmd +0 -7
  150. package/skill-evals/fixtures/journey-checkout/input.mmd +0 -6
  151. package/skill-evals/fixtures/pie-exports/input.mmd +0 -5
  152. package/skill-evals/fixtures/quadrant-priorities/input.mmd +0 -11
  153. package/skill-evals/fixtures/sequence-retry/input.mmd +0 -8
  154. package/skill-evals/fixtures/state-lifecycle/input.mmd +0 -5
  155. package/skill-evals/fixtures/timeline-release/input.mmd +0 -6
  156. package/skill-evals/fixtures/xychart-growth/input.mmd +0 -5
  157. package/skill-evals/shared-benchmark.json +0 -510
  158. package/src/agent/analyze.ts +0 -157
  159. package/src/agent/apply.ts +0 -146
  160. package/src/agent/architecture-body.ts +0 -458
  161. package/src/agent/certificates.ts +0 -110
  162. package/src/agent/class-body.ts +0 -319
  163. package/src/agent/core.ts +0 -207
  164. package/src/agent/create.ts +0 -106
  165. package/src/agent/describe.ts +0 -364
  166. package/src/agent/er-body.ts +0 -224
  167. package/src/agent/facts.ts +0 -337
  168. package/src/agent/families-builtin.ts +0 -934
  169. package/src/agent/families.ts +0 -232
  170. package/src/agent/family-layouts.ts +0 -826
  171. package/src/agent/flowchart-body.ts +0 -372
  172. package/src/agent/flowchart-unsupported.ts +0 -243
  173. package/src/agent/gantt-body.ts +0 -495
  174. package/src/agent/index.ts +0 -10
  175. package/src/agent/journey-body.ts +0 -414
  176. package/src/agent/label-metrics.ts +0 -28
  177. package/src/agent/layout-to-rendered.ts +0 -63
  178. package/src/agent/mutate.ts +0 -97
  179. package/src/agent/mutation-ops.ts +0 -51
  180. package/src/agent/op-schema.ts +0 -439
  181. package/src/agent/parse.ts +0 -223
  182. package/src/agent/pie-body.ts +0 -270
  183. package/src/agent/png.ts +0 -117
  184. package/src/agent/quadrant-body.ts +0 -336
  185. package/src/agent/quality.ts +0 -363
  186. package/src/agent/readability-audit.ts +0 -92
  187. package/src/agent/rendered-route-audit.ts +0 -61
  188. package/src/agent/sequence-body.ts +0 -345
  189. package/src/agent/serialize.ts +0 -214
  190. package/src/agent/state-body.ts +0 -589
  191. package/src/agent/structural-count.ts +0 -150
  192. package/src/agent/timeline-body.ts +0 -280
  193. package/src/agent/trace-log.ts +0 -43
  194. package/src/agent/types.ts +0 -979
  195. package/src/agent/verify.ts +0 -571
  196. package/src/agent/xychart-body.ts +0 -472
  197. package/src/architecture/config.ts +0 -282
  198. package/src/architecture/layout.ts +0 -496
  199. package/src/architecture/parser.ts +0 -375
  200. package/src/architecture/renderer.ts +0 -611
  201. package/src/architecture/types.ts +0 -113
  202. package/src/ascii/ansi.ts +0 -423
  203. package/src/ascii/architecture.ts +0 -210
  204. package/src/ascii/canvas.ts +0 -443
  205. package/src/ascii/class-diagram.ts +0 -697
  206. package/src/ascii/converter.ts +0 -475
  207. package/src/ascii/draw.ts +0 -1693
  208. package/src/ascii/edge-bundling.ts +0 -328
  209. package/src/ascii/edge-routing.ts +0 -330
  210. package/src/ascii/er-diagram.ts +0 -439
  211. package/src/ascii/gantt.ts +0 -276
  212. package/src/ascii/grid.ts +0 -747
  213. package/src/ascii/index.ts +0 -196
  214. package/src/ascii/journey.ts +0 -189
  215. package/src/ascii/meta.ts +0 -244
  216. package/src/ascii/multiline-utils.ts +0 -80
  217. package/src/ascii/pathfinder.ts +0 -301
  218. package/src/ascii/pie.ts +0 -67
  219. package/src/ascii/quadrant.ts +0 -158
  220. package/src/ascii/reverse.ts +0 -216
  221. package/src/ascii/sequence.ts +0 -499
  222. package/src/ascii/shapes/circle.ts +0 -27
  223. package/src/ascii/shapes/corners.ts +0 -143
  224. package/src/ascii/shapes/diamond.ts +0 -27
  225. package/src/ascii/shapes/hexagon.ts +0 -27
  226. package/src/ascii/shapes/index.ts +0 -106
  227. package/src/ascii/shapes/rectangle.ts +0 -168
  228. package/src/ascii/shapes/rounded.ts +0 -27
  229. package/src/ascii/shapes/special.ts +0 -332
  230. package/src/ascii/shapes/stadium.ts +0 -110
  231. package/src/ascii/shapes/state.ts +0 -192
  232. package/src/ascii/shapes/types.ts +0 -73
  233. package/src/ascii/timeline.ts +0 -128
  234. package/src/ascii/types.ts +0 -312
  235. package/src/ascii/validate.ts +0 -120
  236. package/src/ascii/width.ts +0 -81
  237. package/src/ascii/xychart.ts +0 -919
  238. package/src/browser.ts +0 -29
  239. package/src/class/layout.ts +0 -240
  240. package/src/class/parser.ts +0 -332
  241. package/src/class/renderer.ts +0 -638
  242. package/src/class/types.ts +0 -129
  243. package/src/cli/agent-instructions.ts +0 -1
  244. package/src/cli/am-bin.ts +0 -6
  245. package/src/cli/exit-codes.ts +0 -18
  246. package/src/cli/index.ts +0 -1117
  247. package/src/cli/init-agent.ts +0 -147
  248. package/src/color-resolver.ts +0 -152
  249. package/src/elk-instance.ts +0 -114
  250. package/src/er/layout.ts +0 -187
  251. package/src/er/parser.ts +0 -226
  252. package/src/er/renderer.ts +0 -792
  253. package/src/er/types.ts +0 -99
  254. package/src/font-manifest.ts +0 -27
  255. package/src/gantt/layout.ts +0 -365
  256. package/src/gantt/parser.ts +0 -282
  257. package/src/gantt/pipeline.ts +0 -27
  258. package/src/gantt/renderer.ts +0 -414
  259. package/src/gantt/schedule.ts +0 -513
  260. package/src/gantt/types.ts +0 -255
  261. package/src/index.ts +0 -368
  262. package/src/journey/layout.ts +0 -520
  263. package/src/journey/parser.ts +0 -218
  264. package/src/journey/renderer.ts +0 -811
  265. package/src/journey/types.ts +0 -144
  266. package/src/layout/geometry.ts +0 -182
  267. package/src/layout/pass.ts +0 -142
  268. package/src/layout/passes/index.ts +0 -3916
  269. package/src/layout-engine.ts +0 -1565
  270. package/src/layout-rubric.ts +0 -659
  271. package/src/mcp/artifacts.ts +0 -137
  272. package/src/mcp/dynamic-harness.ts +0 -31
  273. package/src/mcp/dynamic-modules.d.ts +0 -7
  274. package/src/mcp/facade.ts +0 -608
  275. package/src/mcp/harness-runtime.ts +0 -203
  276. package/src/mcp/hosted-server.ts +0 -468
  277. package/src/mcp/mcp-bin.ts +0 -3
  278. package/src/mcp/mcp-cli.ts +0 -82
  279. package/src/mcp/protocol.ts +0 -13
  280. package/src/mcp/sandbox.ts +0 -195
  281. package/src/mcp/sdk-decl.ts +0 -387
  282. package/src/mcp/server.ts +0 -362
  283. package/src/mcp/tool-surface.ts +0 -146
  284. package/src/mermaid-source.ts +0 -655
  285. package/src/multiline-utils.ts +0 -228
  286. package/src/parser.ts +0 -1031
  287. package/src/pie/layout.ts +0 -168
  288. package/src/pie/parser.ts +0 -136
  289. package/src/pie/renderer.ts +0 -234
  290. package/src/pie/types.ts +0 -82
  291. package/src/quadrant/layout.ts +0 -191
  292. package/src/quadrant/parser.ts +0 -183
  293. package/src/quadrant/renderer.ts +0 -322
  294. package/src/quadrant/types.ts +0 -113
  295. package/src/render-family-hooks.ts +0 -244
  296. package/src/renderer.ts +0 -1099
  297. package/src/route-contracts.ts +0 -2723
  298. package/src/scene/backend.ts +0 -76
  299. package/src/scene/fidelity.ts +0 -183
  300. package/src/scene/hybrid-backend.ts +0 -174
  301. package/src/scene/ir.ts +0 -181
  302. package/src/scene/marks.ts +0 -127
  303. package/src/scene/rough-backend.ts +0 -378
  304. package/src/scene/seed.ts +0 -46
  305. package/src/scene/style-registry.ts +0 -556
  306. package/src/sequence/layout.ts +0 -456
  307. package/src/sequence/parser.ts +0 -255
  308. package/src/sequence/renderer.ts +0 -604
  309. package/src/sequence/types.ts +0 -154
  310. package/src/shape-clipping.ts +0 -351
  311. package/src/shared/accessibility-directives.ts +0 -22
  312. package/src/shared/batched.ts +0 -61
  313. package/src/shared/color-math.ts +0 -72
  314. package/src/shared/svg-a11y.ts +0 -29
  315. package/src/shared/syntax-error.ts +0 -17
  316. package/src/shared/unicode-ranges.ts +0 -135
  317. package/src/styles.ts +0 -318
  318. package/src/svg-paths.ts +0 -28
  319. package/src/text-metrics.ts +0 -248
  320. package/src/theme.ts +0 -639
  321. package/src/timeline/layout.ts +0 -381
  322. package/src/timeline/parser.ts +0 -215
  323. package/src/timeline/renderer.ts +0 -538
  324. package/src/timeline/types.ts +0 -105
  325. package/src/types.ts +0 -454
  326. package/src/website-worker-modules.d.ts +0 -18
  327. package/src/xychart/axis-utils.ts +0 -109
  328. package/src/xychart/colors.ts +0 -124
  329. package/src/xychart/config.ts +0 -88
  330. package/src/xychart/layout.ts +0 -656
  331. package/src/xychart/parser.ts +0 -504
  332. package/src/xychart/renderer.ts +0 -640
  333. package/src/xychart/types.ts +0 -282
@@ -1,433 +0,0 @@
1
- # Journey Migration Parity Spec
2
-
3
- Status: implemented for SVG visual metaphor, structured accessibility/literal text parity, marker namespacing, ASCII width handling, and style/palette/config coverage
4
- Last reviewed: 2026-07-09
5
- Issue: https://github.com/adewale/agentic-mermaid/issues/128
6
- Origin: https://github.com/adewale/agentic-mermaid/pull/6
7
- Research: [`journey-usage-research.md`](./journey-usage-research.md)
8
-
9
- ## Problem
10
-
11
- Journey diagrams had two different gaps that were easy to conflate:
12
-
13
- 1. Some Mermaid Journey syntax was parsed by the renderer path but still caused
14
- the agent structured parser to fall back to opaque source preservation.
15
- 2. Agentic Mermaid's previous Journey SVG used a card-based visual language,
16
- while Mermaid's native Journey renderer uses a timeline-like experience curve.
17
-
18
- The first gap was a correctness and migration-support issue. The second is a
19
- visual parity issue. Pre-launch, we do not need to preserve the previous
20
- card-based Journey layout as public behavior. The chosen direction is to make
21
- Mermaid's Journey visual metaphor the default public renderer.
22
-
23
- ## Origin
24
-
25
- Journey support was not originally requested through a tracked Agentic Mermaid
26
- issue. It landed in
27
- [`#6`](https://github.com/adewale/agentic-mermaid/pull/6), whose PR body says:
28
- there was "no tracked issue in this fork for the change." The immediate
29
- trigger was that Mermaid `journey` input failed with:
30
-
31
- ```text
32
- Invalid mermaid header: "journey"
33
- ```
34
-
35
- So the original implementation solved family coverage first: parse Mermaid
36
- Journey syntax, route it through SVG and ASCII rendering, preserve accessibility
37
- metadata, and add tests. The visual model was then made to fit the library's
38
- existing card-like house style. That is where the implementation diverged from
39
- Mermaid's own Journey metaphor.
40
-
41
- ## Goals
42
-
43
- - Preserve Mermaid Journey syntax as structured data whenever the syntax is part
44
- of Mermaid's documented Journey grammar.
45
- - Make parser failures explainable instead of silently collapsing to opaque.
46
- - Make `describe`, facts, verification, and ASCII output expose the same Journey
47
- semantics that the SVG renderer consumes.
48
- - Make the public SVG Journey renderer use Mermaid's Journey visual metaphor:
49
- a left-to-right experience curve with section spans, actor legend, actor
50
- dots, score-positioned sentiment marks, and a progression baseline.
51
- - Treat the current card layout as an implementation artifact unless we later
52
- choose to expose it as an explicitly named alternate look.
53
-
54
- ## Current Syntax Support Snapshot
55
-
56
- Agentic Mermaid now supports the documented Mermaid Journey grammar in both the
57
- renderer parser and the structured agent parser:
58
-
59
- - `journey` header;
60
- - `title ...`;
61
- - `accTitle: ...`;
62
- - inline `accDescr: ...`;
63
- - block `accDescr { ... }` and `accDescr: { ... }`;
64
- - `section ...`;
65
- - task lines in the documented form `Task name: <score>: <actor>, <actor>`;
66
- - task lines without actors, which Mermaid accepts in practice;
67
- - comments, YAML frontmatter, and `%%{init: ...}%%` / `%%{initialize: ...}%%`
68
- directives before parsing;
69
- - `<br>` / `<br/>` label normalization for title, section, task, and actor
70
- text;
71
- - title/accessibility-only Journey header furniture.
72
-
73
- Mermaid's official docs define the score as an integer from 1 through 5. The
74
- parser enforces that range rather than accepting Mermaid's currently buggy
75
- out-of-range face placement behavior.
76
-
77
- The implementation also accepts the current Mermaid `JourneyDiagramConfig`
78
- shape:
79
-
80
- - margins and sizing: `diagramMarginX`, `diagramMarginY`, `leftMargin`,
81
- `maxLabelWidth`, `width`, `height`, `taskMargin`;
82
- - title/task typography: `taskFontSize`, `taskFontFamily`, `titleColor`,
83
- `titleFontFamily`, `titleFontSize`;
84
- - Journey colors: `actorColours`, `sectionFills`, `sectionColours`;
85
- - sequence-era compatibility fields present on Mermaid's Journey config:
86
- `boxMargin`, `boxTextMargin`, `noteMargin`, `messageMargin`, `messageAlign`,
87
- `bottomMarginAdj`, `rightAngles`, `activationWidth`, `textPlacement`.
88
-
89
- The fields that visibly affect the current Journey SVG are the Journey-specific
90
- layout, typography, and color fields. The sequence-era fields are accepted for
91
- Mermaid config compatibility but do not all have meaningful Journey geometry.
92
-
93
- Known remaining syntax/parity gaps and caveats:
94
-
95
- - Semicolon-separated Journey statements are not modeled. This is not part of
96
- the documented Journey syntax, but Beautiful Mermaid issue #7 shows terminal
97
- users notice semicolon compatibility in Mermaid-like renderers.
98
- - Journey ASCII remains a compact semantic list, not a visual clone of
99
- Mermaid's SVG Journey chart. It now wraps to `maxWidth` using terminal display
100
- width, including CJK/emoji text, but it is intentionally not a miniature SVG
101
- curve renderer.
102
- - Journey marker IDs are no longer the fixed `journey-arrowhead`; they are
103
- derived from the diagram content and also participate in the repo-wide
104
- `idPrefix` post-pass. Two different Journey diagrams no longer collide by
105
- default. Repeated identical SVGs on the same page still need distinct
106
- `idPrefix` values, matching the existing multi-diagram embedding contract.
107
-
108
- ## Non-goals
109
-
110
- - Do not expand Journey into full customer journey mapping, service blueprinting,
111
- emotional-lifecycle canvases, or swimlane workflow modeling in this issue.
112
- - Do not make Journey a flowchart variant.
113
- - Do not rely on embedding Mermaid's renderer as a black box.
114
- - Do not change the meaning of Mermaid Journey scores. Scores remain integers
115
- from 1 through 5.
116
-
117
- ## Current Failure Modes
118
-
119
- ### Parser split
120
-
121
- There are two Journey parsers with different responsibilities:
122
-
123
- - `src/journey/parser.ts` powers the Journey renderer.
124
- - `src/agent/journey-body.ts` powers structured agent parsing and mutations.
125
-
126
- The renderer and structured agent parsers now accept Journey accessibility
127
- directives:
128
-
129
- - `accTitle: ...`
130
- - `accDescr: ...`
131
- - multiline `accDescr { ... }`
132
-
133
- It also normalizes quoted labels and `<br>` tags.
134
-
135
- The agent body parser now models those accessibility directives as part of the
136
- Journey body, so their presence no longer forces an opaque fallback. Title-only
137
- and accessibility-only Journey header furniture also stays structured when it is
138
- otherwise valid.
139
-
140
- This is where the implementation had gone wrong: accessibility was handled as a
141
- rendering concern, but it is also part of the family syntax contract. Every
142
- Journey syntax line that the renderer accepts must either be represented in
143
- `JourneyBody`, represented as shared diagram metadata without forcing an opaque
144
- body, or produce a targeted diagnostic.
145
-
146
- ### Opaque fallback
147
-
148
- `structuredFamilyHooks` treats Journey parse misses as opaque source.
149
- The verifier still reports broad `UNSUPPORTED_SYNTAX` / `journey_opaque`
150
- diagnostics for genuinely unmodeled source. That preserves source, which is
151
- good, but migration tooling benefits when common malformed cases are separated:
152
-
153
- - unsupported documented syntax,
154
- - malformed score,
155
- - parser drift between renderer and agent paths,
156
- - or genuinely unknown Journey extension.
157
-
158
- Invalid Journey scores now receive a Journey-specific diagnostic. Broader
159
- malformed-line taxonomy is still a useful future refinement.
160
-
161
- ### Incomplete semantic surfaces
162
-
163
- Structured Journey output still has room to become richer:
164
-
165
- - JSON describe output exposes task nodes but not a full Journey model.
166
- - Facts mention labels but do not summarize sections, score ranges, actor
167
- participation, or Journey accessibility.
168
- - Verification offers targeted invalid-score diagnostics, but not yet precise
169
- remediation for every malformed-line class.
170
- - ASCII width handling now wraps Journey task and actor text to `maxWidth` using
171
- terminal display width; a visual clone of the SVG curve remains out of scope.
172
-
173
- ### Visual expectation mismatch
174
-
175
- Before this migration, Agentic Mermaid's Journey renderer presented the diagram
176
- as section columns containing stacked task cards. Native Mermaid Journey diagrams present
177
- the same syntax as a left-to-right journey, where each task is a point in a
178
- progression and its score controls vertical placement.
179
-
180
- That difference is not a small styling mismatch. It changes the user's first
181
- read of the diagram:
182
-
183
- - Agentic Mermaid reads as a structured checklist grouped by section.
184
- - Mermaid Journey reads as an experience curve over time.
185
-
186
- ## Mermaid Journey Visual Model
187
-
188
- Mermaid's native Journey renderer treats tasks as ordered points in a horizontal
189
- progression:
190
-
191
- - tasks are laid out left to right in source order,
192
- - sections span horizontal ranges across consecutive task columns,
193
- - actor names appear in a legend at the left,
194
- - actor participation on a task is shown with small colored dots,
195
- - each score maps to a vertical position,
196
- - each scored point is represented by a face icon,
197
- - a horizontal baseline or arrow reinforces forward progression.
198
-
199
- Journey-specific Mermaid config includes controls for task spacing, task font,
200
- actor colors, section fills, section colors, title color, left margin, and actor
201
- label wrapping. The implemented renderer maps those fields onto the Mermaid-like
202
- Journey metaphor while leaving sequence-era fields that do not apply to Journey
203
- geometry as accepted compatibility metadata.
204
-
205
- ## Agentic Mermaid Visual Model
206
-
207
- The previous Agentic Mermaid Journey renderer was documented in
208
- `docs/design/families/journey.md` and implemented by:
209
-
210
- - `src/journey/layout.ts`
211
- - `src/journey/renderer.ts`
212
- - `src/ascii/journey.ts`
213
-
214
- It intentionally used Agentic Mermaid's house style:
215
-
216
- - sections are side-by-side columns,
217
- - tasks stack vertically inside each section,
218
- - each task is a card,
219
- - scores are shown as local five-cell meters,
220
- - actors are shown as local text pills,
221
- - section containers use crisp frames and header bands.
222
-
223
- That model was useful for compact, scannable documents, but it was not visually
224
- compatible with Mermaid Journey examples found in the wild.
225
-
226
- ## Visual Parity Strategy
227
-
228
- Adopt Mermaid's Journey visual metaphor as the default public SVG renderer.
229
-
230
- Prototype and visual evidence:
231
-
232
- - [`journey-agentic-cards-before.png`](./journey-agentic-cards-before.png)
233
- - [`journey-mermaid-classic-prototype.svg`](./journey-mermaid-classic-prototype.svg)
234
- - [`journey-mermaid-classic-prototype.png`](./journey-mermaid-classic-prototype.png)
235
- - [`journey-mermaid-classic-implementation.png`](./journey-mermaid-classic-implementation.png)
236
-
237
- The old card layout has been removed from the public SVG renderer. If it ever
238
- returns, it should be an explicitly named alternate look rather than the default.
239
- The public default should remain Mermaid-compatible.
240
-
241
- Possible type if the alternate survives:
242
-
243
- ```ts
244
- type JourneyLook = "mermaid-classic" | "agentic-cards";
245
- ```
246
-
247
- Default:
248
-
249
- - Use `"mermaid-classic"`.
250
-
251
- There is currently no public alternate card layout. If one survives later, its
252
- setting should live near other render style options rather than in the parser:
253
-
254
- ```ts
255
- render(source, {
256
- journey: {
257
- look: "agentic-cards"
258
- }
259
- });
260
- ```
261
-
262
- If the public API already has a stronger convention for family-specific render
263
- options, use that convention instead.
264
-
265
- ## Mermaid-classic Acceptance Criteria
266
-
267
- The `"mermaid-classic"` Journey layout must:
268
-
269
- - place tasks in one left-to-right sequence using source order,
270
- - calculate section spans from the number of tasks in each section,
271
- - draw a left actor legend with stable actor colors,
272
- - wrap long actor labels within a configured maximum label width,
273
- - mark per-task actor participation with small colored dots,
274
- - map score 5 to the highest positive position and score 1 to the lowest,
275
- - render a neutral middle position for score 3,
276
- - show score state with face icons or an equivalent unmistakable sentiment mark,
277
- - draw a horizontal progression baseline or arrow,
278
- - keep visible title and accessibility metadata behavior unchanged,
279
- - support theme colors without hardcoded contrast regressions,
280
- - avoid clipping long task labels, actor labels, and section names.
281
-
282
- The implementation reuses the existing `JourneyDiagram` model. It does not
283
- introduce a second syntax model.
284
-
285
- ## Parser and Model Spec
286
-
287
- ### JourneyBody
288
-
289
- `JourneyBody` represents the supported Journey syntax consumed by the renderer:
290
-
291
- - visible title,
292
- - ordered sections,
293
- - ordered tasks,
294
- - score per task,
295
- - actors per task,
296
- - accessibility title,
297
- - accessibility description,
298
- - source locations when available through the shared source map.
299
-
300
- Accessibility metadata also appears in shared diagram metadata, but its presence
301
- does not force `JourneyBody` to become opaque.
302
-
303
- ### Shared normalization
304
-
305
- Renderer and agent parsing share normalization behavior for:
306
-
307
- - quoted labels,
308
- - escaped quotes,
309
- - `<br>` and `<br/>`,
310
- - comments,
311
- - frontmatter and init directives before the `journey` header.
312
-
313
- The same source text should not produce different task labels depending on which
314
- surface parsed it.
315
-
316
- ### Diagnostics
317
-
318
- Journey diagnostics should distinguish at least:
319
-
320
- - invalid score range,
321
- - malformed task line,
322
- - actor list parse failure,
323
- - unsupported but preserved Journey line,
324
- - parser drift between renderer and structured parser.
325
-
326
- Opaque fallback is still allowed for source preservation, but it should include
327
- the reason that triggered opacity.
328
-
329
- ## Describe, Facts, and Verify Spec
330
-
331
- `describe(..., { format: "json" })` should expose a Journey body with:
332
-
333
- - diagram kind,
334
- - visible title,
335
- - accessibility title and description when present,
336
- - sections in source order,
337
- - tasks in source order,
338
- - task score,
339
- - task actors,
340
- - implicit section state for unsectioned tasks.
341
-
342
- Text facts should include:
343
-
344
- - section count,
345
- - task count,
346
- - actor count,
347
- - score range,
348
- - average score,
349
- - lowest-scoring tasks,
350
- - highest-scoring tasks,
351
- - actor participation counts,
352
- - accessibility title/description presence.
353
-
354
- `verify` should report Journey-specific diagnostics instead of only generic
355
- opaque warnings when the source is close enough to classify.
356
-
357
- ## ASCII Spec
358
-
359
- Journey ASCII output should remain readable in plain terminals, but it should
360
- honor width constraints:
361
-
362
- - wrap task labels,
363
- - wrap actor labels,
364
- - keep score markers adjacent to the task they describe,
365
- - preserve section order,
366
- - avoid lines longer than `maxWidth` when a width is provided and feasible.
367
-
368
- A Mermaid-classic ASCII mode is optional. The priority is making current ASCII
369
- output truthful to the structured model and width contract.
370
-
371
- ## Follow-up Implementation Plan
372
-
373
- 1. Introduce a shared Journey parse core or shared normalization helpers so
374
- `src/journey/parser.ts` and `src/agent/journey-body.ts` cannot drift on
375
- documented syntax.
376
- 2. Extend `JourneyBody` and related JSON serializers for accessibility metadata
377
- and full section/task ordering.
378
- 3. Replace Journey opaque fallback with typed parse outcomes that carry a reason.
379
- 4. Update `verify` to map Journey parse outcomes to specific diagnostics.
380
- 5. Expand Journey facts and describe output.
381
- 6. Add richer Journey facts and JSON describe summaries.
382
- 7. Keep migration fixtures based on representative Mermaid Journey examples.
383
- 8. Decide separately whether the old card layout is worth reintroducing as a
384
- deliberately named alternate look.
385
-
386
- ## Test Plan
387
-
388
- Add fixtures covering:
389
-
390
- - `accTitle: ...`
391
- - `accDescr: ...`
392
- - multiline `accDescr { ... }`
393
- - quoted title, section, task, and actor labels,
394
- - `<br>` in title, section, task, actor, and accessibility text,
395
- - score values 1 through 5,
396
- - invalid scores 0, 6, and non-numeric scores,
397
- - tasks before the first explicit section,
398
- - long task labels,
399
- - long actor labels,
400
- - multiple actors per task,
401
- - repeated actors across sections.
402
-
403
- For each valid fixture, test:
404
-
405
- - renderer parser output,
406
- - agent structured body output,
407
- - `describe` JSON,
408
- - facts text,
409
- - `verify` result,
410
- - SVG accessibility metadata,
411
- - ASCII output under a narrow `maxWidth`.
412
-
413
- For the public Journey renderer, add SVG structure tests that assert:
414
-
415
- - tasks advance horizontally,
416
- - section spans cover the expected task columns,
417
- - actor legend is present,
418
- - actor dots are associated with the right tasks,
419
- - score positions are monotonic from 1 through 5.
420
-
421
- ## Migration Decision
422
-
423
- The current Journey renderer should be treated as a supported Agentic Mermaid
424
- prototype that proved parser and renderer coverage, not as a public compatibility
425
- contract. The failure was that the implementation made Journey exist by adopting
426
- the library's card-layout house style instead of preserving Mermaid's Journey
427
- visual metaphor.
428
-
429
- The immediate fix for issue #128 should prioritize parser parity and diagnostics.
430
- Pre-launch, the visual fix should replace the default SVG layout with the
431
- Mermaid-style experience curve. The old card layout should be removed from the
432
- public renderer unless we later decide to reintroduce it as a deliberately named
433
- alternate look.