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.
- package/CHANGELOG.md +149 -4
- package/LICENSES/Apache-2.0.txt +202 -0
- package/README.md +25 -32
- package/THIRD_PARTY_NOTICES.md +29 -0
- package/assets/fonts/FONT-LICENSES.md +9 -5
- package/assets/fonts/Inter-Bold.ttf +0 -0
- package/assets/fonts/Inter-Medium.ttf +0 -0
- package/assets/fonts/Inter-Regular.ttf +0 -0
- package/assets/fonts/Inter-SemiBold.ttf +0 -0
- package/dist/agent-core.d.ts +463 -0
- package/dist/agent-core.js +397 -0
- package/dist/agent.d.ts +81 -1822
- package/dist/agent.js +336 -36839
- package/dist/agentic-mermaid-mcp.js +7 -37908
- package/dist/am.js +33638 -36261
- package/dist/chunk-4QECACIA.js +4702 -0
- package/dist/chunk-CDPKJ2BQ.js +37 -0
- package/dist/chunk-QKDLMOJJ.js +3487 -0
- package/dist/chunk-WI35L7IR.js +615 -0
- package/dist/chunk-WN3YDOBG.js +149 -0
- package/dist/chunk-ZYMMKQ3I.js +62637 -0
- package/dist/index-D54dqSdC.d.ts +6777 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +310 -32836
- package/dist/mcp-cli-SBQSTJFC.js +17 -0
- package/docs/README.md +14 -6
- package/docs/schemas/style-spec.schema.json +1221 -30
- package/examples/styles/catalog.json +54 -0
- package/examples/styles/cloudflare-workers-inspired-prototype.mmd +9 -0
- package/examples/styles/cloudflare-workers-inspired-prototype.style.json +110 -0
- package/examples/styles/cupertino-prototype.mmd +10 -0
- package/examples/styles/cupertino-prototype.style.json +63 -0
- package/examples/styles/mid-century-report.style.json +2 -2
- package/examples/styles/star-chart-atlas.style.json +2 -1
- package/examples/styles/transit-route-map.style.json +2 -2
- package/examples/styles/vercel-inspired-prototype.mmd +6 -0
- package/examples/styles/vercel-inspired-prototype.style.json +87 -0
- package/package.json +70 -43
- package/server.json +41 -0
- package/skills/agentic-mermaid-diagram-workflow/SKILL.md +17 -36
- package/skills/agentic-mermaid-diagram-workflow/references/cli.md +4 -5
- package/skills/agentic-mermaid-diagram-workflow/references/code-mode.md +15 -31
- package/skills/agentic-mermaid-diagram-workflow/references/sequence.md +10 -14
- package/skills/agentic-mermaid-live-editor/SKILL.md +100 -206
- package/AGENT_NATIVE.md +0 -602
- package/Instructions_for_agents.md +0 -83
- package/TODO.md +0 -662
- package/assets/hero.png +0 -0
- package/dist/index-x2Cj1dVv.d.ts +0 -1089
- package/docs/agent-api-cookbook.md +0 -308
- package/docs/agent-mutation-policy.md +0 -104
- package/docs/agent-workflow-examples.md +0 -46
- package/docs/api.md +0 -203
- package/docs/ascii.md +0 -103
- package/docs/assets/improvements/box-start-connector.png +0 -0
- package/docs/assets/improvements/comment-dropped-lint.png +0 -0
- package/docs/assets/improvements/er-content-loss.png +0 -0
- package/docs/assets/improvements/fan-in-trunks.png +0 -0
- package/docs/assets/improvements/gantt-family.png +0 -0
- package/docs/assets/improvements/gantt-milestone-clamp.png +0 -0
- package/docs/assets/improvements/gantt-verify-seam.png +0 -0
- package/docs/assets/improvements/subgraph-container-edges.png +0 -0
- package/docs/assets/improvements/wrapper-frontmatter.png +0 -0
- package/docs/assets/improvements/wrapper-init-directive.png +0 -0
- package/docs/assets/improvements/wrapper-leading-comment.png +0 -0
- package/docs/assets/style-cookbook/mid-century-report.png +0 -0
- package/docs/assets/style-cookbook/star-chart-atlas.png +0 -0
- package/docs/assets/style-cookbook/transit-route-map.png +0 -0
- package/docs/comparison.md +0 -94
- package/docs/config.md +0 -105
- package/docs/contributing/adding-diagram-types.md +0 -144
- package/docs/contributing/diagram-family-citizenship.matrix.json +0 -2127
- package/docs/contributing/diagram-family-citizenship.md +0 -82
- package/docs/contributing/harvesting-upstream-tests.md +0 -126
- package/docs/contributing/lessons-learned.md +0 -276
- package/docs/contributing/releasing.md +0 -71
- package/docs/contributing/visual-review-evidence.md +0 -53
- package/docs/custom-style-cookbook.md +0 -154
- package/docs/design/families/README.md +0 -26
- package/docs/design/families/architecture-beta.md +0 -48
- package/docs/design/families/flowchart-parser-conformance.md +0 -22
- package/docs/design/families/gantt-research.md +0 -137
- package/docs/design/families/gantt.md +0 -329
- package/docs/design/families/journey-agentic-cards-before.png +0 -0
- package/docs/design/families/journey-mermaid-classic-implementation.png +0 -0
- package/docs/design/families/journey-mermaid-classic-prototype.png +0 -0
- package/docs/design/families/journey-mermaid-classic-prototype.svg +0 -163
- package/docs/design/families/journey-mermaid-classic-prototype.svg.png +0 -0
- package/docs/design/families/journey-migration-parity.md +0 -433
- package/docs/design/families/journey-usage-research.md +0 -423
- package/docs/design/families/journey.md +0 -125
- package/docs/design/families/xychart.md +0 -85
- package/docs/design/system/README.md +0 -45
- package/docs/design/system/abstraction-audit.md +0 -224
- package/docs/design/system/abstraction-recommendations.md +0 -655
- package/docs/design/system/architecture.mmd +0 -29
- package/docs/design/system/architecture.svg +0 -137
- package/docs/design/system/layout-guarantees-and-robustness.md +0 -351
- package/docs/design/system/layout-rubric.md +0 -138
- package/docs/design/system/route-contracts.md +0 -848
- package/docs/design/system/source-preservation-ladder.md +0 -52
- package/docs/design/system/styles-rollout.md +0 -216
- package/docs/design/system/ugly-layouts.md +0 -119
- package/docs/diagram-families.md +0 -193
- package/docs/features.md +0 -147
- package/docs/fork-differences.md +0 -130
- package/docs/getting-started.md +0 -175
- package/docs/issue-derived-test-cases.md +0 -156
- package/docs/layout-characterization/README.md +0 -245
- package/docs/layout-characterization/contact-sheet-families.md +0 -496
- package/docs/layout-characterization/contact-sheet.md +0 -638
- package/docs/layout-characterization/properties.md +0 -281
- package/docs/layout-characterization/visual-quality.md +0 -160
- package/docs/layout-characterization/visual-snapshots/architecture.svg +0 -79
- package/docs/layout-characterization/visual-snapshots/class.svg +0 -60
- package/docs/layout-characterization/visual-snapshots/er.svg +0 -61
- package/docs/layout-characterization/visual-snapshots/flowchart.svg +0 -58
- package/docs/layout-characterization/visual-snapshots/gantt.svg +0 -52
- package/docs/layout-characterization/visual-snapshots/journey.svg +0 -118
- package/docs/layout-characterization/visual-snapshots/pie.svg +0 -36
- package/docs/layout-characterization/visual-snapshots/quadrant.svg +0 -47
- package/docs/layout-characterization/visual-snapshots/sequence.svg +0 -59
- package/docs/layout-characterization/visual-snapshots/state.svg +0 -52
- package/docs/layout-characterization/visual-snapshots/timeline.svg +0 -64
- package/docs/layout-characterization/visual-snapshots/xychart.svg +0 -97
- package/docs/mcp-code-mode-rationale.md +0 -101
- package/docs/mcp-http-transport.md +0 -223
- package/docs/mermaid-layout-complaints.md +0 -837
- package/docs/mutation-testing.md +0 -206
- package/docs/project/divergences.md +0 -98
- package/docs/project/dogfooding-docs-strategy.md +0 -66
- package/docs/project/hosted-mcp-cloudflare-plan.md +0 -338
- package/docs/project/lessons-learned.md +0 -1019
- package/docs/project/remove-role-styling-plan.md +0 -176
- package/docs/quality.md +0 -212
- package/docs/react.md +0 -97
- package/docs/style-authoring.md +0 -133
- package/docs/testing-strategy.md +0 -335
- package/docs/theming.md +0 -162
- package/examples/agent-improve-auth-flow.ts +0 -206
- package/examples/agent-loop.ts +0 -53
- package/examples/mcp-vs-cli-complex-diagrams.ts +0 -133
- package/llms.txt +0 -104
- package/skill-evals/README.md +0 -77
- package/skill-evals/fixtures/architecture-cache/input.mmd +0 -5
- package/skill-evals/fixtures/class-payment/input.mmd +0 -4
- package/skill-evals/fixtures/er-orders/input.mmd +0 -10
- package/skill-evals/fixtures/flowchart-cache/input.mmd +0 -3
- package/skill-evals/fixtures/gantt-release/input.mmd +0 -7
- package/skill-evals/fixtures/journey-checkout/input.mmd +0 -6
- package/skill-evals/fixtures/pie-exports/input.mmd +0 -5
- package/skill-evals/fixtures/quadrant-priorities/input.mmd +0 -11
- package/skill-evals/fixtures/sequence-retry/input.mmd +0 -8
- package/skill-evals/fixtures/state-lifecycle/input.mmd +0 -5
- package/skill-evals/fixtures/timeline-release/input.mmd +0 -6
- package/skill-evals/fixtures/xychart-growth/input.mmd +0 -5
- package/skill-evals/shared-benchmark.json +0 -510
- package/src/agent/analyze.ts +0 -157
- package/src/agent/apply.ts +0 -146
- package/src/agent/architecture-body.ts +0 -458
- package/src/agent/certificates.ts +0 -110
- package/src/agent/class-body.ts +0 -319
- package/src/agent/core.ts +0 -207
- package/src/agent/create.ts +0 -106
- package/src/agent/describe.ts +0 -364
- package/src/agent/er-body.ts +0 -224
- package/src/agent/facts.ts +0 -337
- package/src/agent/families-builtin.ts +0 -934
- package/src/agent/families.ts +0 -232
- package/src/agent/family-layouts.ts +0 -826
- package/src/agent/flowchart-body.ts +0 -372
- package/src/agent/flowchart-unsupported.ts +0 -243
- package/src/agent/gantt-body.ts +0 -495
- package/src/agent/index.ts +0 -10
- package/src/agent/journey-body.ts +0 -414
- package/src/agent/label-metrics.ts +0 -28
- package/src/agent/layout-to-rendered.ts +0 -63
- package/src/agent/mutate.ts +0 -97
- package/src/agent/mutation-ops.ts +0 -51
- package/src/agent/op-schema.ts +0 -439
- package/src/agent/parse.ts +0 -223
- package/src/agent/pie-body.ts +0 -270
- package/src/agent/png.ts +0 -117
- package/src/agent/quadrant-body.ts +0 -336
- package/src/agent/quality.ts +0 -363
- package/src/agent/readability-audit.ts +0 -92
- package/src/agent/rendered-route-audit.ts +0 -61
- package/src/agent/sequence-body.ts +0 -345
- package/src/agent/serialize.ts +0 -214
- package/src/agent/state-body.ts +0 -589
- package/src/agent/structural-count.ts +0 -150
- package/src/agent/timeline-body.ts +0 -280
- package/src/agent/trace-log.ts +0 -43
- package/src/agent/types.ts +0 -979
- package/src/agent/verify.ts +0 -571
- package/src/agent/xychart-body.ts +0 -472
- package/src/architecture/config.ts +0 -282
- package/src/architecture/layout.ts +0 -496
- package/src/architecture/parser.ts +0 -375
- package/src/architecture/renderer.ts +0 -611
- package/src/architecture/types.ts +0 -113
- package/src/ascii/ansi.ts +0 -423
- package/src/ascii/architecture.ts +0 -210
- package/src/ascii/canvas.ts +0 -443
- package/src/ascii/class-diagram.ts +0 -697
- package/src/ascii/converter.ts +0 -475
- package/src/ascii/draw.ts +0 -1693
- package/src/ascii/edge-bundling.ts +0 -328
- package/src/ascii/edge-routing.ts +0 -330
- package/src/ascii/er-diagram.ts +0 -439
- package/src/ascii/gantt.ts +0 -276
- package/src/ascii/grid.ts +0 -747
- package/src/ascii/index.ts +0 -196
- package/src/ascii/journey.ts +0 -189
- package/src/ascii/meta.ts +0 -244
- package/src/ascii/multiline-utils.ts +0 -80
- package/src/ascii/pathfinder.ts +0 -301
- package/src/ascii/pie.ts +0 -67
- package/src/ascii/quadrant.ts +0 -158
- package/src/ascii/reverse.ts +0 -216
- package/src/ascii/sequence.ts +0 -499
- package/src/ascii/shapes/circle.ts +0 -27
- package/src/ascii/shapes/corners.ts +0 -143
- package/src/ascii/shapes/diamond.ts +0 -27
- package/src/ascii/shapes/hexagon.ts +0 -27
- package/src/ascii/shapes/index.ts +0 -106
- package/src/ascii/shapes/rectangle.ts +0 -168
- package/src/ascii/shapes/rounded.ts +0 -27
- package/src/ascii/shapes/special.ts +0 -332
- package/src/ascii/shapes/stadium.ts +0 -110
- package/src/ascii/shapes/state.ts +0 -192
- package/src/ascii/shapes/types.ts +0 -73
- package/src/ascii/timeline.ts +0 -128
- package/src/ascii/types.ts +0 -312
- package/src/ascii/validate.ts +0 -120
- package/src/ascii/width.ts +0 -81
- package/src/ascii/xychart.ts +0 -919
- package/src/browser.ts +0 -29
- package/src/class/layout.ts +0 -240
- package/src/class/parser.ts +0 -332
- package/src/class/renderer.ts +0 -638
- package/src/class/types.ts +0 -129
- package/src/cli/agent-instructions.ts +0 -1
- package/src/cli/am-bin.ts +0 -6
- package/src/cli/exit-codes.ts +0 -18
- package/src/cli/index.ts +0 -1117
- package/src/cli/init-agent.ts +0 -147
- package/src/color-resolver.ts +0 -152
- package/src/elk-instance.ts +0 -114
- package/src/er/layout.ts +0 -187
- package/src/er/parser.ts +0 -226
- package/src/er/renderer.ts +0 -792
- package/src/er/types.ts +0 -99
- package/src/font-manifest.ts +0 -27
- package/src/gantt/layout.ts +0 -365
- package/src/gantt/parser.ts +0 -282
- package/src/gantt/pipeline.ts +0 -27
- package/src/gantt/renderer.ts +0 -414
- package/src/gantt/schedule.ts +0 -513
- package/src/gantt/types.ts +0 -255
- package/src/index.ts +0 -368
- package/src/journey/layout.ts +0 -520
- package/src/journey/parser.ts +0 -218
- package/src/journey/renderer.ts +0 -811
- package/src/journey/types.ts +0 -144
- package/src/layout/geometry.ts +0 -182
- package/src/layout/pass.ts +0 -142
- package/src/layout/passes/index.ts +0 -3916
- package/src/layout-engine.ts +0 -1565
- package/src/layout-rubric.ts +0 -659
- package/src/mcp/artifacts.ts +0 -137
- package/src/mcp/dynamic-harness.ts +0 -31
- package/src/mcp/dynamic-modules.d.ts +0 -7
- package/src/mcp/facade.ts +0 -608
- package/src/mcp/harness-runtime.ts +0 -203
- package/src/mcp/hosted-server.ts +0 -468
- package/src/mcp/mcp-bin.ts +0 -3
- package/src/mcp/mcp-cli.ts +0 -82
- package/src/mcp/protocol.ts +0 -13
- package/src/mcp/sandbox.ts +0 -195
- package/src/mcp/sdk-decl.ts +0 -387
- package/src/mcp/server.ts +0 -362
- package/src/mcp/tool-surface.ts +0 -146
- package/src/mermaid-source.ts +0 -655
- package/src/multiline-utils.ts +0 -228
- package/src/parser.ts +0 -1031
- package/src/pie/layout.ts +0 -168
- package/src/pie/parser.ts +0 -136
- package/src/pie/renderer.ts +0 -234
- package/src/pie/types.ts +0 -82
- package/src/quadrant/layout.ts +0 -191
- package/src/quadrant/parser.ts +0 -183
- package/src/quadrant/renderer.ts +0 -322
- package/src/quadrant/types.ts +0 -113
- package/src/render-family-hooks.ts +0 -244
- package/src/renderer.ts +0 -1099
- package/src/route-contracts.ts +0 -2723
- package/src/scene/backend.ts +0 -76
- package/src/scene/fidelity.ts +0 -183
- package/src/scene/hybrid-backend.ts +0 -174
- package/src/scene/ir.ts +0 -181
- package/src/scene/marks.ts +0 -127
- package/src/scene/rough-backend.ts +0 -378
- package/src/scene/seed.ts +0 -46
- package/src/scene/style-registry.ts +0 -556
- package/src/sequence/layout.ts +0 -456
- package/src/sequence/parser.ts +0 -255
- package/src/sequence/renderer.ts +0 -604
- package/src/sequence/types.ts +0 -154
- package/src/shape-clipping.ts +0 -351
- package/src/shared/accessibility-directives.ts +0 -22
- package/src/shared/batched.ts +0 -61
- package/src/shared/color-math.ts +0 -72
- package/src/shared/svg-a11y.ts +0 -29
- package/src/shared/syntax-error.ts +0 -17
- package/src/shared/unicode-ranges.ts +0 -135
- package/src/styles.ts +0 -318
- package/src/svg-paths.ts +0 -28
- package/src/text-metrics.ts +0 -248
- package/src/theme.ts +0 -639
- package/src/timeline/layout.ts +0 -381
- package/src/timeline/parser.ts +0 -215
- package/src/timeline/renderer.ts +0 -538
- package/src/timeline/types.ts +0 -105
- package/src/types.ts +0 -454
- package/src/website-worker-modules.d.ts +0 -18
- package/src/xychart/axis-utils.ts +0 -109
- package/src/xychart/colors.ts +0 -124
- package/src/xychart/config.ts +0 -88
- package/src/xychart/layout.ts +0 -656
- package/src/xychart/parser.ts +0 -504
- package/src/xychart/renderer.ts +0 -640
- package/src/xychart/types.ts +0 -282
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
# Custom style cookbook
|
|
2
|
-
|
|
3
|
-
Custom styles are JSON files. Put the file under version control, pass it to
|
|
4
|
-
`--style`, and add a `seed` when you want reproducible sketch variation.
|
|
5
|
-
|
|
6
|
-
```bash
|
|
7
|
-
am render diagram.mmd --format svg --style examples/styles/transit-route-map.style.json --seed 11 > diagram.svg
|
|
8
|
-
am render diagram.mmd --format png --style examples/styles/transit-route-map.style.json --seed 11 --output diagram.png
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
The schema is published in this repo as
|
|
12
|
-
[`docs/schemas/style-spec.schema.json`](./schemas/style-spec.schema.json) and
|
|
13
|
-
from the package as `agentic-mermaid/style-spec.schema.json`. Example files use
|
|
14
|
-
`$schema` so editors can offer field completion. The renderer ignores that
|
|
15
|
-
field.
|
|
16
|
-
|
|
17
|
-
Runtime validation still matters. A schema catches the file shape; the renderer
|
|
18
|
-
uses `validateStyleSpec` before accepting untrusted records.
|
|
19
|
-
|
|
20
|
-
```ts
|
|
21
|
-
import { readFileSync } from 'node:fs'
|
|
22
|
-
import { validateStyleSpec } from 'agentic-mermaid'
|
|
23
|
-
|
|
24
|
-
const style = JSON.parse(readFileSync('examples/styles/transit-route-map.style.json', 'utf8'))
|
|
25
|
-
const problems = validateStyleSpec(style)
|
|
26
|
-
if (problems.length) throw new Error(problems.join('\n'))
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
## Transit route map
|
|
30
|
-
|
|
31
|
-
Complete file:
|
|
32
|
-
[`examples/styles/transit-route-map.style.json`](../examples/styles/transit-route-map.style.json).
|
|
33
|
-
|
|
34
|
-

|
|
35
|
-
|
|
36
|
-
This style is a good route-map example because it stresses brand colors and
|
|
37
|
-
connector weight. It also shows the current limit: JSON styles can set a
|
|
38
|
-
route-map palette, but they cannot yet assign stable route colors or station-dot
|
|
39
|
-
glyphs per path.
|
|
40
|
-
|
|
41
|
-
Use it when you want to test whether a style keeps connectors readable:
|
|
42
|
-
|
|
43
|
-
```json
|
|
44
|
-
{
|
|
45
|
-
"$schema": "https://agentic-mermaid.dev/schemas/style-spec.schema.json",
|
|
46
|
-
"name": "transit-route-map",
|
|
47
|
-
"colors": {
|
|
48
|
-
"bg": "#fbfbf8",
|
|
49
|
-
"fg": "#171923",
|
|
50
|
-
"line": "#d22630",
|
|
51
|
-
"accent": "#0067a8",
|
|
52
|
-
"surface": "#ffffff"
|
|
53
|
-
},
|
|
54
|
-
"font": "DejaVu Sans",
|
|
55
|
-
"stroke": "crisp",
|
|
56
|
-
"strokeWidth": 4,
|
|
57
|
-
"fill": "none"
|
|
58
|
-
}
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
## Mid-century report
|
|
62
|
-
|
|
63
|
-
Complete file:
|
|
64
|
-
[`examples/styles/mid-century-report.style.json`](../examples/styles/mid-century-report.style.json).
|
|
65
|
-
|
|
66
|
-

|
|
67
|
-
|
|
68
|
-
This is the easiest uncovered cluster to teach with today's StyleSpec. It is
|
|
69
|
-
mostly palette, fill, typography, and page treatment. No new backend capability
|
|
70
|
-
is needed.
|
|
71
|
-
|
|
72
|
-
Use it when you want a report figure with visible section bands and square
|
|
73
|
-
technical connectors:
|
|
74
|
-
|
|
75
|
-
```json
|
|
76
|
-
{
|
|
77
|
-
"$schema": "https://agentic-mermaid.dev/schemas/style-spec.schema.json",
|
|
78
|
-
"name": "mid-century-report",
|
|
79
|
-
"colors": {
|
|
80
|
-
"bg": "#f4ead8",
|
|
81
|
-
"fg": "#24211d",
|
|
82
|
-
"line": "#2f4858",
|
|
83
|
-
"accent": "#d49a2a",
|
|
84
|
-
"surface": "#78a69b"
|
|
85
|
-
},
|
|
86
|
-
"font": "DejaVu Sans",
|
|
87
|
-
"stroke": "crisp",
|
|
88
|
-
"strokeWidth": 1.6,
|
|
89
|
-
"fill": "solid"
|
|
90
|
-
}
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
## Star chart atlas
|
|
94
|
-
|
|
95
|
-
Complete file:
|
|
96
|
-
[`examples/styles/star-chart-atlas.style.json`](../examples/styles/star-chart-atlas.style.json).
|
|
97
|
-
|
|
98
|
-

|
|
99
|
-
|
|
100
|
-
This example exercises the page axis: dark host, grid backdrop, pale strokes,
|
|
101
|
-
serif labels, and lightly rough geometry. It is useful because it reveals
|
|
102
|
-
hard-coded light fills quickly.
|
|
103
|
-
|
|
104
|
-
Use it when you need a dark page style that still keeps labels readable:
|
|
105
|
-
|
|
106
|
-
```json
|
|
107
|
-
{
|
|
108
|
-
"$schema": "https://agentic-mermaid.dev/schemas/style-spec.schema.json",
|
|
109
|
-
"name": "star-chart-atlas",
|
|
110
|
-
"colors": {
|
|
111
|
-
"bg": "#0b1026",
|
|
112
|
-
"fg": "#ece4c4",
|
|
113
|
-
"line": "#8a96c0",
|
|
114
|
-
"accent": "#f0d98a",
|
|
115
|
-
"surface": "#101733"
|
|
116
|
-
},
|
|
117
|
-
"font": "EB Garamond",
|
|
118
|
-
"stroke": "jittered",
|
|
119
|
-
"roughness": 0.35,
|
|
120
|
-
"fill": "none",
|
|
121
|
-
"backdrop": "grid"
|
|
122
|
-
}
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
## Which uncovered clusters belong in guides
|
|
126
|
-
|
|
127
|
-
Three clusters make good cookbook examples now:
|
|
128
|
-
|
|
129
|
-
- **Transit/route-map semantics.** It teaches thick connector palettes and the
|
|
130
|
-
difference between a global palette and a true route identity system.
|
|
131
|
-
- **Retro editorial palettes.** Bauhaus, mid-century, and report figures fit
|
|
132
|
-
the current fields well: color tokens, solid fills, and typography.
|
|
133
|
-
- **Star-chart/page treatments.** Dark pages and grid backdrops test whether
|
|
134
|
-
every family routes text and strokes through style tokens.
|
|
135
|
-
|
|
136
|
-
Three clusters should wait for new capabilities:
|
|
137
|
-
|
|
138
|
-
- **Stained glass, ukiyo-e, and codex.** They need material backdrops, spot
|
|
139
|
-
palettes, and stronger fill texture rules than the public JSON fields expose.
|
|
140
|
-
- **Glass, CRT amber, and neon arcade.** They need compositor/filter fields:
|
|
141
|
-
glow, blur, translucent panels, and static-export fallbacks.
|
|
142
|
-
- **Graffiti or spray paint.** They need spray, overspray, layered text
|
|
143
|
-
outlines, and drip/splatter operators before the result is more than a bright
|
|
144
|
-
marker style.
|
|
145
|
-
|
|
146
|
-
## Regenerate the screenshots
|
|
147
|
-
|
|
148
|
-
```bash
|
|
149
|
-
bun run scripts/docs/custom-style-cookbook.ts
|
|
150
|
-
bun run scripts/docs/custom-style-cookbook.ts --check
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
The generator renders the same flowchart through each JSON file. If a
|
|
154
|
-
screenshot changes, inspect it before committing the new PNG.
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
# Per-family design notes
|
|
2
|
-
|
|
3
|
-
Design notes for individual diagram families. A family's full picture is deliberately spread
|
|
4
|
-
across several surfaces; this hub points at each.
|
|
5
|
-
|
|
6
|
-
## Families with a dedicated design note
|
|
7
|
-
|
|
8
|
-
| Family | Design note | Notable cross-cutting surface |
|
|
9
|
-
|---|---|---|
|
|
10
|
-
| Architecture (`architecture-beta`) | [`architecture-beta.md`](./architecture-beta.md) | ops in `AGENT_NATIVE.md`; level in [`source-preservation-ladder.md`](../system/source-preservation-ladder.md) |
|
|
11
|
-
| Gantt | [`gantt.md`](./gantt.md) (+ [`gantt-research.md`](./gantt-research.md)) | schedule resolver; citizenship worked example |
|
|
12
|
-
| Journey | [`journey.md`](./journey.md) (+ [`journey-migration-parity.md`](./journey-migration-parity.md), [`journey-usage-research.md`](./journey-usage-research.md)) | migration parity; classic visual mode; usage research |
|
|
13
|
-
| XY chart | [`xychart.md`](./xychart.md) | — |
|
|
14
|
-
| Flowchart | [`flowchart-parser-conformance.md`](./flowchart-parser-conformance.md) (conformance) | routing in [`route-contracts.md`](../system/route-contracts.md) |
|
|
15
|
-
|
|
16
|
-
Families **without** a dedicated design note — sequence, class, ER, pie, quadrant, timeline,
|
|
17
|
-
state — are documented entirely through the cross-cutting surfaces below.
|
|
18
|
-
|
|
19
|
-
## Where every family is documented (all 12)
|
|
20
|
-
|
|
21
|
-
- **Canonical registry:** `BUILTIN_FAMILY_METADATA` in `src/agent/families.ts` — and its generated roster table in [`abstraction-audit.md`](../system/abstraction-audit.md) §2.
|
|
22
|
-
- **User-facing catalogue:** [`diagram-families.md`](../../diagram-families.md).
|
|
23
|
-
- **Mutation ops + structured/opaque scope:** [`AGENT_NATIVE.md`](../../../AGENT_NATIVE.md).
|
|
24
|
-
- **Source-preservation level (L0–L4):** [`source-preservation-ladder.md`](../system/source-preservation-ladder.md).
|
|
25
|
-
- **Cross-surface citizenship matrix:** [`diagram-family-citizenship.md`](../../contributing/diagram-family-citizenship.md).
|
|
26
|
-
- **Mermaid syntax references:** `skills/agentic-mermaid-diagram-workflow/references/`.
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
# Architecture Diagrams (`architecture-beta`) Design Notes
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
Architecture support follows the same parse -> layout -> render split used by the other specialized diagram families, while intentionally reusing the shared graph layout engine for node and group placement.
|
|
6
|
-
|
|
7
|
-
Current scope covers:
|
|
8
|
-
|
|
9
|
-
- `group`, `service`, and `junction`
|
|
10
|
-
- side-anchored edges (`L`, `R`, `T`, `B`)
|
|
11
|
-
- `{group}` boundary routing for services inside groups
|
|
12
|
-
- multi-line labels via `<br>` / `\n`
|
|
13
|
-
- SVG, PNG, and ASCII output (PNG via the shared SVG rasterization pipeline)
|
|
14
|
-
|
|
15
|
-
## Pipeline
|
|
16
|
-
|
|
17
|
-
### Parse
|
|
18
|
-
|
|
19
|
-
`src/architecture/parser.ts` builds a typed architecture model from Mermaid source and then converts it into the shared `MermaidGraph` shape for placement. The parser keeps Mermaid-oriented field names (`group`, `service`, `junction`, boundary anchors) and validates boundary edges up front so unsupported forms fail clearly.
|
|
20
|
-
|
|
21
|
-
### Layout
|
|
22
|
-
|
|
23
|
-
`src/architecture/layout.ts` delegates node and group placement to `layoutGraphSync()` through `architectureToMermaidGraph()`, then projects the positioned graph back into architecture-specific primitives.
|
|
24
|
-
|
|
25
|
-
Architecture-specific work happens after shared placement:
|
|
26
|
-
|
|
27
|
-
- services keep their card bounds from the graph layout
|
|
28
|
-
- junctions reuse the graph point-node placement
|
|
29
|
-
- group-boundary edges are rerouted against the enclosing group frame
|
|
30
|
-
- edge labels use the orthogonal polyline midpoint so labels stay on-path
|
|
31
|
-
|
|
32
|
-
### Render
|
|
33
|
-
|
|
34
|
-
`src/architecture/renderer.ts` renders architecture-specific SVG primitives rather than generic flowchart boxes:
|
|
35
|
-
|
|
36
|
-
- framed groups with header bands
|
|
37
|
-
- service cards with accent rails
|
|
38
|
-
- junction rings
|
|
39
|
-
- architecture-specific arrow markers and semantic `data-*` hooks
|
|
40
|
-
- lightweight icon badges with a fallback glyph path
|
|
41
|
-
|
|
42
|
-
## Compatibility Notes
|
|
43
|
-
|
|
44
|
-
- Mermaid's current public header for this diagram family is `architecture-beta`, so that is the supported header.
|
|
45
|
-
- Leading Mermaid comments (`%% ...`), YAML frontmatter, and Mermaid init directives before the header are stripped by the public SVG/PNG/ASCII/agent entrypoints before they call `parseArchitectureDiagram()`.
|
|
46
|
-
- The public architecture renderers interpret the merged wrapper config for a focused subset of Mermaid semantics:
|
|
47
|
-
`theme`, `themeVariables`, `fontFamily`, `fontSize`, and `architecture.padding` / `architecture.iconSize` / `architecture.fontSize`.
|
|
48
|
-
- `parseArchitectureDiagram()` expects preprocessed `architecture-beta` body lines; wrapper config is intentionally handled outside the parser because the parser returns only the diagram model.
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
# Flowchart parser conformance catalogue
|
|
2
|
-
|
|
3
|
-
Issue: #36. Last updated: 2026-06-16.
|
|
4
|
-
|
|
5
|
-
Agentic Mermaid's flowchart parser should never silently drop Mermaid source meaning. Each known syntax-range gap below is either supported directly, preserved as opaque source with an `UNSUPPORTED_SYNTAX` verify warning, or tracked as a narrower feature follow-up.
|
|
6
|
-
|
|
7
|
-
| Construct | Status | Local behavior |
|
|
8
|
-
|---|---|---|
|
|
9
|
-
| Compact edge syntax: `A-->B`, `A-->|x|B`, `A-- text -->B`, `A-.->B;`, `A---oB` | Supported | Parses nodes/edges without phantom shaft nodes; renders/layouts normally; structured serialization canonicalizes spacing. |
|
|
10
|
-
| Compact `&` chains: `A & B--> C & D` | Supported | Parses the documented Cartesian fanout/fanin topology. |
|
|
11
|
-
| Same-line semicolon statements: `A-->B; B-->C` | Supported | Splits top-level semicolons outside labels/metadata and parses every statement. |
|
|
12
|
-
| Variable-length and invisible links: `---->`, `-..->`, `====>`, `~~~` | Supported | Fixed by PR #30 and pinned in `src/__tests__/link-grammar.test.ts`. |
|
|
13
|
-
| Flowchart node metadata: `A@{ shape: ..., label: ... }` | Safety-supported | Agent parse is opaque/source-preserving; legacy render/layout preserves topology and label with rectangle fallback. Full shape vocabulary is #44. |
|
|
14
|
-
| Edge IDs: `A e1@--> B` | Preserved + warned | Legacy parser ignores the ID for layout but preserves topology. Agent parse is opaque/source-preserving. `verifyMermaid` emits `UNSUPPORTED_SYNTAX` with `syntax: flowchart_edge_id`. |
|
|
15
|
-
| Edge metadata: `e1@{ animate: true }`, `e1@{ curve: natural }` | Preserved + warned | Legacy parser ignores metadata and never creates a phantom `e1` node. Agent parse is opaque/source-preserving. `verifyMermaid` emits `UNSUPPORTED_SYNTAX` with `syntax: flowchart_edge_metadata`. |
|
|
16
|
-
| Interaction directives: `click A ...`, `click A href ...`, `href` | Preserved + warned | Ignored by local render/layout for security and geometry; never creates a phantom `click` node. Agent parse is opaque/source-preserving. `verifyMermaid` emits `syntax: flowchart_interaction_directive`. |
|
|
17
|
-
| Mermaid markdown strings / multiline markdown labels | Preserved + warned | Backtick-marked flowchart source falls back to opaque and emits `syntax: flowchart_markdown_string`; full markdown label modeling is not implemented. |
|
|
18
|
-
| Multiple `classDef` names and escaped commas: `classDef a,b stroke-dasharray: 9\,5` | Supported | Class definitions are expanded per name and escaped commas stay inside style values. |
|
|
19
|
-
| Edge class styling / animation via `class e1 animate` | Preserved when paired with edge IDs | The source remains opaque when edge IDs are present. Local layout does not model edge classes/animation yet. |
|
|
20
|
-
| Full Mermaid v11 typed-shape vocabulary | Follow-up | Tracked in #44; this issue only ensures no silent loss/phantom nodes. |
|
|
21
|
-
|
|
22
|
-
Primary regression coverage: `src/__tests__/flowchart-parser-conformance.test.ts`, `src/__tests__/flowchart-metadata.test.ts`, and `src/__tests__/link-grammar.test.ts`.
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
# Gantt research appendix
|
|
2
|
-
|
|
3
|
-
Status: evidence appendix for [`gantt.md`](./gantt.md). Snapshot date: 2026-06-11.
|
|
4
|
-
|
|
5
|
-
This appendix records the wider research requested after the initial Gantt spec: a broad academic search, a commercial/product UX survey, and the changes those sources imply for Agentic Mermaid. The implementation contract remains Mermaid-compatible; this appendix identifies internal hooks and future UI features that should not leak into Mermaid syntax.
|
|
6
|
-
|
|
7
|
-
## Method
|
|
8
|
-
|
|
9
|
-
Search channels:
|
|
10
|
-
|
|
11
|
-
- GitHub issue/PR searches across `mermaid-js/mermaid`, `lukilabs/beautiful-mermaid`, `adewale/agentic-mermaid`, and Mermaid ASCII forks.
|
|
12
|
-
- Crossref DOI search for Gantt, task schedules, project scheduling, timeline visualization, critical path, uncertainty, and resource-constrained scheduling.
|
|
13
|
-
- Official product docs and feature pages for commercial Gantt/timeline tools.
|
|
14
|
-
- Local source inspection of `upstream/phase1-charts`, `pgavlin/mermaid-ascii`, `kais-radwan/ascii-mermaid`, `razor-ai/ascii-mermaid`, and `mermaid-ast`.
|
|
15
|
-
|
|
16
|
-
Representative academic queries:
|
|
17
|
-
|
|
18
|
-
- `Gantt chart project management visualization`
|
|
19
|
-
- `Gantt chart limitations project scheduling visualization`
|
|
20
|
-
- `Gantt charts dependencies resource leveling visualization`
|
|
21
|
-
- `A Literature-based Visualization Task Taxonomy for Gantt Charts`
|
|
22
|
-
- `Comparing Static Gantt and Mosaic Charts for Visualization of Task Schedules`
|
|
23
|
-
- `Visualization of Task Time Schedule Uncertainty in Project Management`
|
|
24
|
-
- `Project management under uncertainty resource flexibility visualization in the schedule`
|
|
25
|
-
- `timeline visualization survey temporal data`
|
|
26
|
-
- `visualizing temporal data survey time-oriented data`
|
|
27
|
-
- `critical path method project scheduling Gantt chart`
|
|
28
|
-
- `resource constrained project scheduling survey visualization`
|
|
29
|
-
|
|
30
|
-
Exclusions:
|
|
31
|
-
|
|
32
|
-
- SEO tutorials that explain what a Gantt chart is but do not add syntax, layout, or testing requirements.
|
|
33
|
-
- Tools that only call Mermaid or Mermaid CLI and return an SVG screenshot.
|
|
34
|
-
- Vendor pages without enough detail to infer an interaction or scheduling feature.
|
|
35
|
-
|
|
36
|
-
Limit: this is Google-Scholar-style breadth using Crossref and web-accessible metadata, not a formal systematic review with database-specific inclusion scoring. The implementation decisions below rely only on stable, cited claims.
|
|
37
|
-
|
|
38
|
-
## Academic literature
|
|
39
|
-
|
|
40
|
-
### Gantt-specific visualization and schedule displays
|
|
41
|
-
|
|
42
|
-
| Source | Finding | Spec implication |
|
|
43
|
-
|---|---|---|
|
|
44
|
-
| Sakin and Isaacs, [“A Literature-based Visualization Task Taxonomy for Gantt Charts”](https://doi.org/10.1109/VIS55277.2024.00055), IEEE VIS 2024 | Gantt charts have enough distinct visualization tasks to merit their own task taxonomy. | Add Gantt-specific `describe` and quality checks instead of treating Gantt as generic bars. Test tasks such as locate task, compare durations, find dependencies, find critical tasks, inspect schedule range, and detect overlap/crowding. |
|
|
45
|
-
| Luz and Masoodian, [“Comparing Static Gantt and Mosaic Charts for Visualization of Task Schedules”](https://doi.org/10.1109/IV.2011.53), IV 2011 | Static Gantt is not always the best representation for dense task schedules; alternatives can make different comparisons easier. | Keep first release to Mermaid Gantt, but separate schedule model from renderer so future ASCII/SVG modes can add condensed or grouped views without changing parser semantics. |
|
|
46
|
-
| Maravas and Pantouvakis, [“Schedula Anima: Dynamic Visualization of Gantt Charts and Resource Usage Graphs in Project Scheduling”](https://doi.org/10.3390/buildings15030393), Buildings 2025 | The paper animates schedule states between early and late dates and pairs Gantt bars with resource graphs; the abstract notes earlier delays have larger downstream effects. | The resolver should compute earliest/latest dates and slack internally when dependencies are available. Do not draw the critical path in v1 unless the computation is explicit and tested. |
|
|
47
|
-
| Lu, Mao, and Chai, [“Visualization of Task Time Schedule Uncertainty in Project Management”](https://doi.org/10.3724/SP.J.1089.2018.16718), Journal of CAD & Computer Graphics 2018 | Schedule uncertainty is a first-class visualization problem, not a styling detail. | Do not invent uncertainty syntax. Leave room in the model for optional intervals or confidence bands if Mermaid or a future Agentic extension adds them. |
|
|
48
|
-
| Lima, Tereso, and Faria, [“Project management under uncertainty: resource flexibility visualization in the schedule”](https://doi.org/10.1016/j.procs.2019.12.197), Procedia Computer Science 2019 | Resource flexibility and schedule uncertainty interact; useful displays combine schedule and resource information. | Resource capacity belongs in a future analysis/UI layer unless Mermaid standardizes resource fields. The v1 parser should not infer resources from labels or assignees. |
|
|
49
|
-
| Ong, Wang, and Zainon, [“Integrated Earned Value Gantt Chart (EV-Gantt) Tool for Project Portfolio Planning and Monitoring Optimization”](https://doi.org/10.1080/10429247.2015.1135033), Engineering Management Journal 2016 | Portfolio monitoring benefits from planned-vs-actual and earned-value information layered onto schedules. | Baselines and planned-vs-actual are common product features, but Mermaid Gantt lacks native baseline syntax. Keep them out of syntax; possible future: `describe` can report plan/actual only if the source model gains explicit fields. |
|
|
50
|
-
| Scully-Allison and Isaacs, [“Evaluating Communication Pattern Representations in Execution Trace Gantt Charts”](https://doi.org/10.1109/VISSOFT64034.2024.00011), VISSOFT 2024 | Gantt-like timelines appear outside project management, including execution traces where communication patterns matter. | Keep renderer primitives generic enough for intervals, lanes, markers, and links. Do not bake project-management-only assumptions into layout code. |
|
|
51
|
-
|
|
52
|
-
### Timeline and temporal-data visualization
|
|
53
|
-
|
|
54
|
-
| Source | Finding | Spec implication |
|
|
55
|
-
|---|---|---|
|
|
56
|
-
| Shneiderman, [“The Eyes Have It: A Task by Data Type Taxonomy for Information Visualizations”](https://doi.org/10.1109/VL.1996.545307), IEEE VL 1996 | The useful interaction sequence is “overview first, zoom and filter, then details-on-demand.” | The live editor should eventually add zoom/filter/details for large Gantts. ASCII should preserve overview by keeping labels and dates visible outside bars. |
|
|
57
|
-
| Brehmer et al., [“Timelines Revisited: A Design Space and Considerations for Expressive Storytelling”](https://doi.org/10.1109/TVCG.2016.2614803), TVCG 2017 | Timeline design separates scale, layout, representation, and annotation choices. | Keep parser, scheduler, layout, and renderer as separate modules. `vert` markers are annotations; they should never be parsed as tasks. |
|
|
58
|
-
| Plaisant et al., [“LifeLines: Visualizing Personal Histories”](https://doi.org/10.1145/238386.238493), CHI 1996 | Temporal records benefit from overview plus drill-down and from aligning events across categories. | Section grouping and row alignment are not cosmetic. They should be part of layout tests and AX-tree output. |
|
|
59
|
-
| Aigner et al., [“Visualization of Time-Oriented Data”](https://doi.org/10.1007/978-0-85729-079-3), 2011 | Time-oriented data visualization has recurring design decisions: time primitives, scale, calendar, granularity, and interaction. | Model date-only and date-time diagrams explicitly. Avoid raw JavaScript `Date` arithmetic at renderer call sites. |
|
|
60
|
-
| Heer and Shneiderman, [“Interactive Dynamics for Visual Analysis”](https://doi.org/10.1145/2133806.2133821), CACM 2012 | Interaction primitives include selection, filtering, navigation, coordination, and history. | Renderer v1 should emit stable task IDs and regions so future UI selection and details panels do not require SVG scraping. |
|
|
61
|
-
| Munzner, [“A Nested Model for Visualization Design and Validation”](https://doi.org/10.1109/TVCG.2009.111), TVCG 2009 | Visualization work should validate domain problem, data/task abstraction, visual encoding, and algorithms separately. | Testing should mirror the model: parser fixtures, scheduler properties, layout assertions, SVG/ASCII goldens, and E2E editor checks. |
|
|
62
|
-
|
|
63
|
-
### Scheduling theory and project-management analysis
|
|
64
|
-
|
|
65
|
-
| Source | Finding | Spec implication |
|
|
66
|
-
|---|---|---|
|
|
67
|
-
| Kelley and Walker, [“Critical-Path Planning and Scheduling”](https://doi.org/10.1145/1460299.1460318), 1959 | CPM derives project duration from dependency paths. | Critical path is computable from dependencies/durations; it should be an analysis output, not a syntax extension. |
|
|
68
|
-
| Kelley, [“Critical-Path Planning and Scheduling: Mathematical Basis”](https://doi.org/10.1287/opre.9.3.296), Operations Research 1961 | CPM uses earliest/latest times and slack. | If Gantt `describe` adds critical-path evidence, it should report slack and the assumptions used. |
|
|
69
|
-
| Hartmann and Briskorn, [“A survey of variants and extensions of the resource-constrained project scheduling problem”](https://doi.org/10.1016/j.ejor.2009.11.005), EJOR 2010; updated survey [doi:10.1016/j.ejor.2021.05.004](https://doi.org/10.1016/j.ejor.2021.05.004) | Resource-constrained scheduling has many variants and constraints. | Do not implement resource leveling by inference. The parser should reject or preserve non-Mermaid resource syntax rather than pretending to schedule resources. |
|
|
70
|
-
|
|
71
|
-
## Commercial and library UX survey
|
|
72
|
-
|
|
73
|
-
Commercial tools converge on a small set of Gantt affordances. These are useful product references, but they should not change the Mermaid parser unless Mermaid core adds syntax.
|
|
74
|
-
|
|
75
|
-
| Tool / source | Observed features | What Agentic Mermaid should do |
|
|
76
|
-
|---|---|---|
|
|
77
|
-
| Microsoft Project, [critical path support](https://support.microsoft.com/en-us/office/show-the-critical-path-of-your-project-in-project-desktop-ad6e3b08-7748-4231-afc4-a2046207fd86) | Critical path, slack, dependencies, milestones, baselines, progress, resource concepts. | Compute critical path/slack only as optional analysis once the scheduler is reliable. Do not expose Microsoft-specific concepts in syntax. |
|
|
78
|
-
| Smartsheet, [Gantt/project settings](https://help.smartsheet.com/articles/765755-working-with-gantt-charts) and [dependencies/predecessors](https://help.smartsheet.com/articles/765727-enabling-dependencies-using-predecessors) | Grid + Gantt pairing, predecessors, dependencies, duration, milestones, critical path. | Agentic editor should keep source and rendered view side-by-side. CLI should keep source as the edit format, not introduce a grid file format. |
|
|
79
|
-
| Asana, [Gantt chart basics](https://asana.com/resources/gantt-chart-basics) | Dependencies, milestones, owners, critical path, progress, drag-style planning concepts. | Owner/resource metadata is outside Mermaid Gantt. The AX tree can still make dependencies and milestones explicit. |
|
|
80
|
-
| TeamGantt, [features](https://www.teamgantt.com/features) and [Gantt chart software](https://www.teamgantt.com/gantt-chart-software) | Lead/lag dependencies, planned-vs-actual baselines, critical path, workload, exports, sharing. | Lead/lag belongs on the watchlist because Mermaid users request delay syntax in [#818](https://github.com/mermaid-js/mermaid/issues/818). Baselines/workload stay future UI-only unless syntax emerges. |
|
|
81
|
-
| ClickUp, [Gantt view](https://help.clickup.com/hc/en-us/articles/6310249474967-Gantt-view) | Dependencies, resources, progress, delays, critical path, baselines, milestones, zoom, drag, filters, exports. | Live editor follow-up: zoom/filter/details controls. Spec v1 should only guarantee deterministic static output. |
|
|
82
|
-
| monday.com, [Gantt](https://monday.com/features/gantt) | Drag timelines, baselines, task dependencies, critical paths, milestones, bottleneck spotting. | “Bottleneck” can map to future warnings once critical path/slack exists. It is not a parse requirement. |
|
|
83
|
-
| Instagantt, [product page](https://instagantt.com/) | Drag-and-drop scheduling, dependencies, milestones, workload, baselines, dashboards, exports, read-only sharing. | Sharing/export maps to existing SVG/PNG/MCP artifacts. Workload/baseline remain out of syntax. |
|
|
84
|
-
| Zoho Projects, [Gantt charts](https://www.zoho.com/projects/gantt-charts.html) | Dependencies, drag rescheduling, critical path, baselines, milestones, progress, bottlenecks. | Reinforces critical-path/slack as useful analysis. No syntax change. |
|
|
85
|
-
| OpenProject, [Gantt docs](https://www.openproject.org/docs/user-guide/gantt-chart/) | Add predecessors/successors in Gantt, drag dates, dependencies, baseline comparison, filters, exports, collapse/expand, progress. | Future editor UX could let users inspect dependency references, but source remains authoritative. Collapse/expand is a UI concern unless Mermaid adds syntax. |
|
|
86
|
-
| DHTMLX Gantt, [library page](https://dhtmlx.com/docs/products/dhtmlxGantt/) | Auto-scheduling, critical path, resources, baselines, deadlines, calendars, exports, split tasks, live updates. | JS Gantt libraries separate a scheduling engine from rendering. Agentic Mermaid should do the same: `schedule.ts` should be tested independently. |
|
|
87
|
-
| Bryntum Gantt, [library page](https://bryntum.com/products/gantt/) | Scheduling engine, dependencies, constraints, scheduling modes, baselines, progress, critical paths, resource calendars, server-side engine. | Keep the Gantt resolver DOM-free and pure so it can run in CLI/MCP without browser APIs. |
|
|
88
|
-
| Highcharts Gantt, [docs](https://www.highcharts.com/docs/gantt/getting-started-gantt) | Tasks/events/resources along a timeline, dependencies, drag, zoom, tooltips, exporting. | Task regions should be stable so future browser layers can attach tooltips without changing SVG structure. |
|
|
89
|
-
| Google Charts Gantt, [docs](https://developers.google.com/chart/interactive/docs/gallery/ganttchart) | Start/end/duration, dependencies, resources, tooltip, critical path colored red by default, dependency arrow styling. | Critical path should be opt-in or theme-aware, not a hard-coded red default. Strict security must still hold. |
|
|
90
|
-
| Frappe Gantt, [repository](https://github.com/frappe/gantt) | Open-source JS Gantt with dependencies, progress, drag interactions, view modes, popup/details, holidays/weekend handling. | View modes and popups are good editor ideas. Parser syntax remains Mermaid. |
|
|
91
|
-
| Airtable Timeline, [docs](https://support.airtable.com/docs/timeline-view) | Timeline grouping/filtering/sharing, more database timeline than scheduling engine. | Useful contrast: not every timeline is a Gantt scheduler. Agentic Mermaid should not degrade Gantt into a generic timeline. |
|
|
92
|
-
|
|
93
|
-
## Requirements added by the wider research
|
|
94
|
-
|
|
95
|
-
These requirements refine the base spec.
|
|
96
|
-
|
|
97
|
-
1. **Keep scheduling pure.** `src/gantt/schedule.ts` should have no SVG, no canvas, no DOM, and no wall-clock calls. This matches scheduling-engine practice in commercial Gantt libraries and makes property tests possible.
|
|
98
|
-
2. **Expose analysis without inventing syntax.** Critical path, slack, schedule range, entry tasks, terminal tasks, and dependency cycles can be computed from standard Mermaid source. They belong in `describe`, `verify`, optional overlays, or future editor UI.
|
|
99
|
-
3. **Leave resource and baseline features out of v1 syntax.** Commercial tools rely heavily on baselines, workload, and resource calendars, but Mermaid Gantt does not define portable source syntax for them. Preserve unknown syntax if Mermaid accepts it; otherwise error clearly.
|
|
100
|
-
4. **Design for large schedules.** Labels, zoom/filter affordances, bounded tick generation, compact layout, and top-axis support are not polish. They address known Mermaid issues and commercial-product expectations.
|
|
101
|
-
5. **Make uncertainty future-safe.** The model should not preclude optional intervals or planned-vs-actual bands, but first release must render one deterministic interval per task.
|
|
102
|
-
6. **Test by task, not by file only.** Gantt-specific tasks from the VIS taxonomy and commercial survey should become named fixtures: locate milestone, compare durations, inspect dependency chain, find critical path, detect crowded compact layout, inspect excluded weekend, verify top axis.
|
|
103
|
-
7. **Keep accessibility semantic.** The AX tree should expose section/task/dependency/date-range information even when SVG bars are visually dense.
|
|
104
|
-
|
|
105
|
-
## Proposed spec amendments
|
|
106
|
-
|
|
107
|
-
The base [`gantt.md`](./gantt.md) should keep its syntax matrix unchanged, but implementation planning should add these follow-up hooks:
|
|
108
|
-
|
|
109
|
-
- `GanttScheduleAnalysis`: `{ criticalPathTaskIds, slackByTaskId, projectStart, projectEnd, entryTaskIds, sinkTaskIds }`, computed only when the dependency graph is valid.
|
|
110
|
-
- `GanttRenderedRegion`: stable regions for sections, task bars, milestones, vertical markers, axis ticks, and dependency references. This supports future TUI/editor click mapping.
|
|
111
|
-
- `GanttRenderMode`: an internal option, not syntax, for `standard | compact | overview`. First release implements `standard` and Mermaid `displayMode: compact`; future overview mode may serve large schedules.
|
|
112
|
-
- `GanttClock`: explicit `today`, never implicit wall-clock.
|
|
113
|
-
- `GanttCompatibilityReport`: optional debug output listing parsed-but-ignored directives and unsupported proposals.
|
|
114
|
-
|
|
115
|
-
## Research-backed non-goals
|
|
116
|
-
|
|
117
|
-
- Do not add baselines, resources, owners, or workload syntax unless Mermaid core standardizes it.
|
|
118
|
-
- Do not infer critical path when dependencies are missing or cyclic.
|
|
119
|
-
- Do not render dependency arrows in v1 unless they are separately tested for label/tick overlap.
|
|
120
|
-
- Do not use a browser Gantt library as the implementation; it would violate Agentic Mermaid’s synchronous, DOM-free core.
|
|
121
|
-
- Do not optimize for interactive drag editing in v1. Source remains the edit format.
|
|
122
|
-
|
|
123
|
-
## Search artifacts to repeat before implementation
|
|
124
|
-
|
|
125
|
-
Before coding Gantt, repeat these checks because Mermaid Gantt is active:
|
|
126
|
-
|
|
127
|
-
```bash
|
|
128
|
-
gh search issues "gantt repo:mermaid-js/mermaid" --limit 100
|
|
129
|
-
gh search prs "gantt" --repo mermaid-js/mermaid --limit 100
|
|
130
|
-
gh search code "gantt mermaid-ascii fork:true" --limit 100
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
Also re-check Mermaid docs and grammar:
|
|
134
|
-
|
|
135
|
-
- <https://mermaid.js.org/syntax/gantt.html>
|
|
136
|
-
- <https://github.com/mermaid-js/mermaid/blob/develop/packages/mermaid/src/docs/syntax/gantt.md>
|
|
137
|
-
- <https://github.com/mermaid-js/mermaid/blob/develop/packages/mermaid/src/diagrams/gantt/parser/gantt.jison>
|