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