agentic-mermaid 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENT_NATIVE.md +155 -91
- package/CHANGELOG.md +163 -4
- package/Instructions_for_agents.md +10 -10
- package/LICENSES/Apache-2.0.txt +202 -0
- package/README.md +31 -38
- package/THIRD_PARTY_NOTICES.md +29 -0
- package/assets/hero.png +0 -0
- package/dist/agent-core.d.ts +463 -0
- package/dist/agent-core.js +397 -0
- package/dist/agent.d.ts +73 -1868
- package/dist/agent.js +336 -37325
- package/dist/agentic-mermaid-mcp.js +7 -38399
- package/dist/am.js +33626 -40446
- package/dist/chunk-2P5FKUQC.js +3485 -0
- package/dist/chunk-2S3VSS6I.js +149 -0
- package/dist/chunk-2SILJDW2.js +37 -0
- package/dist/chunk-BJYMBT4I.js +61963 -0
- package/dist/chunk-FDM43XU7.js +615 -0
- package/dist/chunk-MYPDVZCO.js +4702 -0
- package/dist/index-DWPa2MJs.d.ts +6780 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +310 -33014
- package/dist/mcp-cli-5J47WEY3.js +17 -0
- package/docs/README.md +39 -31
- package/docs/agent-api-cookbook.md +44 -35
- package/docs/agent-mutation-policy.md +1 -1
- package/docs/agent-workflow-examples.md +2 -2
- package/docs/api.md +284 -77
- package/docs/ascii.md +26 -16
- package/docs/code-mode-impact.md +214 -0
- package/docs/comparison.md +23 -11
- package/docs/computational-aesthetics-prototype-plan.md +252 -0
- package/docs/config.md +26 -10
- package/docs/custom-fonts.md +265 -0
- package/docs/custom-style-cookbook.md +130 -9
- package/docs/diagram-families.md +48 -23
- package/docs/features.md +59 -52
- package/docs/fork-differences.md +6 -3
- package/docs/getting-started.md +23 -16
- package/docs/issue-derived-test-cases.md +29 -22
- package/docs/mcp-code-mode-rationale.md +13 -6
- package/docs/mcp-http-transport.md +20 -13
- package/docs/mermaid-layout-complaints.md +66 -52
- package/docs/mutation-testing.md +145 -66
- package/docs/quality.md +23 -14
- package/docs/react.md +2 -2
- package/docs/schemas/style-spec.schema.json +1221 -30
- package/docs/style-authoring.md +241 -38
- package/docs/svg-semantic-contract.md +49 -0
- package/docs/testing-strategy.md +166 -58
- package/docs/theming.md +19 -32
- 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 +85 -45
- package/server.json +2 -2
- 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/TODO.md +0 -684
- package/dist/index-wjRjbsP-.d.ts +0 -1102
- 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/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 -82
- package/docs/contributing/visual-review-evidence.md +0 -53
- 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-experience-curve-implementation.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 -439
- package/docs/design/families/journey-section-overlap-after.png +0 -0
- package/docs/design/families/journey-section-overlap-before.png +0 -0
- package/docs/design/families/journey-usage-research.md +0 -423
- package/docs/design/families/journey.md +0 -153
- 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/layout-characterization/README.md +0 -245
- package/docs/layout-characterization/contact-sheet-families.md +0 -498
- 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 -98
- 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/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/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 -368
- package/src/agent/er-body.ts +0 -224
- package/src/agent/facts.ts +0 -360
- package/src/agent/families-builtin.ts +0 -920
- package/src/agent/families.ts +0 -232
- package/src/agent/family-layouts.ts +0 -832
- package/src/agent/flowchart-body.ts +0 -372
- package/src/agent/flowchart-unsupported.ts +0 -243
- package/src/agent/font-coverage.ts +0 -288
- package/src/agent/gantt-body.ts +0 -495
- package/src/agent/index.ts +0 -10
- package/src/agent/journey-body.ts +0 -374
- 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 -443
- package/src/agent/parse.ts +0 -223
- package/src/agent/pie-body.ts +0 -270
- package/src/agent/png.ts +0 -171
- 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 -995
- package/src/agent/verify.ts +0 -603
- 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 -169
- 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 -141
- package/src/ascii/types.ts +0 -312
- package/src/ascii/validate.ts +0 -120
- package/src/ascii/width.ts +0 -81
- package/src/ascii/wrap.ts +0 -131
- 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 -1132
- package/src/cli/init-agent.ts +0 -147
- package/src/cli/run-entrypoint.ts +0 -10
- 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/family-rubric.ts +0 -425
- package/src/font-manifest.ts +0 -31
- 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 -554
- package/src/journey/parse-core.ts +0 -251
- package/src/journey/parser.ts +0 -101
- package/src/journey/renderer.ts +0 -917
- 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 -391
- 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 -93
- 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 -710
- 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 -462
- 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,638 +0,0 @@
|
|
|
1
|
-
# Contact sheet — ASCII grid layout algorithm
|
|
2
|
-
|
|
3
|
-
> Generated by `scripts/characterization/contact-sheet.ts`. Do not edit by hand —
|
|
4
|
-
> re-run the generator and review the diff (approval-test workflow).
|
|
5
|
-
|
|
6
|
-
These are the **minimum set of worked examples** that together exercise every
|
|
7
|
-
load-bearing decision in the hand-written grid + A\* layout. Each example
|
|
8
|
-
isolates one behaviour. Output is shown in ASCII mode (`useAscii: true`) so the
|
|
9
|
-
structure is legible in plain text. See `properties.md` for the
|
|
10
|
-
property catalogue these examples motivate, and `README.md` for context.
|
|
11
|
-
|
|
12
|
-
| # | Example | Characterises |
|
|
13
|
-
|---|---------|---------------|
|
|
14
|
-
| 01 | [Single node (base case)](#01-single-node) | A node is a 3×3 grid block sized to its label |
|
|
15
|
-
| 02 | [Linear chain, top-down](#02-chain-td) | Layer assignment along the flow axis: each child sits one level (stride 4) below its parent |
|
|
16
|
-
| 03 | [Linear chain, left-right (transpose of TD)](#03-chain-lr) | Direction duality: LR is the x/y transpose of the identical placement code |
|
|
17
|
-
| 04 | [Linear chain, bottom-up](#04-chain-bt) | BT is laid out as TD, then the finished canvas is flipped vertically and arrow glyphs are remapped (v↔^). |
|
|
18
|
-
| 05 | [Fan-out from one source](#05-fan-out) | Sibling edges sharing a source are bundled onto a shared trunk that splits at a single junction row. |
|
|
19
|
-
| 06 | [Fan-in to one target](#06-fan-in) | Edges sharing a target merge into one trunk |
|
|
20
|
-
| 07 | [Branch then merge (diamond)](#07-branch-merge) | A node that is both a fan-out target and a fan-in source: split, two parallel layers, rejoin without crossing. |
|
|
21
|
-
| 08 | [Feedback cycle (back edge)](#08-feedback-cycle) | The forward path stays straight |
|
|
22
|
-
| 09 | [Self-loop](#09-self-loop) | A node pointing at itself routes a small loop off one side |
|
|
23
|
-
| 10 | [Parallel edges into a target](#10-parallel-edges) | Two independent roots feeding one target are placed contiguously and share the merge trunk (no crossed trunks). |
|
|
24
|
-
| 11 | [Edge labels on a fan-out](#11-edge-labels) | Labelled edges cannot bundle |
|
|
25
|
-
| 12 | [Node shapes](#12-node-shapes) | Shape-aware sizing: diamond/round/circle change the box glyphs and grid dimensions but keep the 3×3 invariant and orthogonal routing. |
|
|
26
|
-
| 13 | [Subgraph (bounding box)](#13-subgraph) | A subgraph draws a labelled box whose bounds contain every member node |
|
|
27
|
-
| 14 | [Subgraph with direction override](#14-subgraph-direction) | A subgraph can override the flow direction (LR inside TD) |
|
|
28
|
-
| 15 | [Disconnected components](#15-disconnected) | Multiple roots / components are laid out side by side |
|
|
29
|
-
| 16 | [State diagram start/end](#16-state-markers) | State diagrams reuse the flowchart pipeline |
|
|
30
|
-
|
|
31
|
-
## <a id="01-single-node"></a>01. Single node (base case)
|
|
32
|
-
|
|
33
|
-
**Characterises:** A node is a 3×3 grid block sized to its label; the canvas is the box plus border. No edges, no routing.
|
|
34
|
-
|
|
35
|
-
**Code:** `grid.ts reserveSpotInGrid / setColumnWidth; draw.ts drawBox`
|
|
36
|
-
|
|
37
|
-
Source:
|
|
38
|
-
|
|
39
|
-
```mermaid
|
|
40
|
-
graph TD
|
|
41
|
-
A[Start]
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
Rendered:
|
|
45
|
-
|
|
46
|
-
```
|
|
47
|
-
+-------+
|
|
48
|
-
| |
|
|
49
|
-
| Start |
|
|
50
|
-
| |
|
|
51
|
-
+-------+
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
## <a id="02-chain-td"></a>02. Linear chain, top-down
|
|
55
|
-
|
|
56
|
-
**Characterises:** Layer assignment along the flow axis: each child sits one level (stride 4) below its parent; one node per layer.
|
|
57
|
-
|
|
58
|
-
**Code:** `grid.ts:539 childLevel = gc.y + 4`
|
|
59
|
-
|
|
60
|
-
Source:
|
|
61
|
-
|
|
62
|
-
```mermaid
|
|
63
|
-
graph TD
|
|
64
|
-
A --> B --> C
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
Rendered:
|
|
68
|
-
|
|
69
|
-
```
|
|
70
|
-
+---+
|
|
71
|
-
| |
|
|
72
|
-
| A |
|
|
73
|
-
| |
|
|
74
|
-
+---+
|
|
75
|
-
|
|
|
76
|
-
|
|
|
77
|
-
|
|
|
78
|
-
|
|
|
79
|
-
v
|
|
80
|
-
+---+
|
|
81
|
-
| |
|
|
82
|
-
| B |
|
|
83
|
-
| |
|
|
84
|
-
+---+
|
|
85
|
-
|
|
|
86
|
-
|
|
|
87
|
-
|
|
|
88
|
-
|
|
|
89
|
-
v
|
|
90
|
-
+---+
|
|
91
|
-
| |
|
|
92
|
-
| C |
|
|
93
|
-
| |
|
|
94
|
-
+---+
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
## <a id="03-chain-lr"></a>03. Linear chain, left-right (transpose of TD)
|
|
98
|
-
|
|
99
|
-
**Characterises:** Direction duality: LR is the x/y transpose of the identical placement code; flow axis becomes x.
|
|
100
|
-
|
|
101
|
-
**Code:** `grid.ts:496-571 (x↔y swap)`
|
|
102
|
-
|
|
103
|
-
Source:
|
|
104
|
-
|
|
105
|
-
```mermaid
|
|
106
|
-
graph LR
|
|
107
|
-
A --> B --> C
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
Rendered:
|
|
111
|
-
|
|
112
|
-
```
|
|
113
|
-
+---+ +---+ +---+
|
|
114
|
-
| | | | | |
|
|
115
|
-
| A |---->| B |---->| C |
|
|
116
|
-
| | | | | |
|
|
117
|
-
+---+ +---+ +---+
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
## <a id="04-chain-bt"></a>04. Linear chain, bottom-up
|
|
121
|
-
|
|
122
|
-
**Characterises:** BT is laid out as TD, then the finished canvas is flipped vertically and arrow glyphs are remapped (v↔^).
|
|
123
|
-
|
|
124
|
-
**Code:** `index.ts:179-194; canvas.ts flipCanvasVertically`
|
|
125
|
-
|
|
126
|
-
Source:
|
|
127
|
-
|
|
128
|
-
```mermaid
|
|
129
|
-
graph BT
|
|
130
|
-
A --> B --> C
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
Rendered:
|
|
134
|
-
|
|
135
|
-
```
|
|
136
|
-
+---+
|
|
137
|
-
| |
|
|
138
|
-
| C |
|
|
139
|
-
| |
|
|
140
|
-
+---+
|
|
141
|
-
^
|
|
142
|
-
|
|
|
143
|
-
|
|
|
144
|
-
|
|
|
145
|
-
|
|
|
146
|
-
+---+
|
|
147
|
-
| |
|
|
148
|
-
| B |
|
|
149
|
-
| |
|
|
150
|
-
+---+
|
|
151
|
-
^
|
|
152
|
-
|
|
|
153
|
-
|
|
|
154
|
-
|
|
|
155
|
-
|
|
|
156
|
-
+---+
|
|
157
|
-
| |
|
|
158
|
-
| A |
|
|
159
|
-
| |
|
|
160
|
-
+---+
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
## <a id="05-fan-out"></a>05. Fan-out from one source
|
|
164
|
-
|
|
165
|
-
**Characterises:** Sibling edges sharing a source are bundled onto a shared trunk that splits at a single junction row.
|
|
166
|
-
|
|
167
|
-
**Code:** `edge-bundling.ts analyzeEdgeBundles / processBundles (TD only)`
|
|
168
|
-
|
|
169
|
-
Source:
|
|
170
|
-
|
|
171
|
-
```mermaid
|
|
172
|
-
graph TD
|
|
173
|
-
A --> B
|
|
174
|
-
A --> C
|
|
175
|
-
A --> D
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
Rendered:
|
|
179
|
-
|
|
180
|
-
```
|
|
181
|
-
+---+
|
|
182
|
-
| |
|
|
183
|
-
| A |
|
|
184
|
-
| |
|
|
185
|
-
+---+
|
|
186
|
-
|
|
|
187
|
-
|
|
|
188
|
-
+---------+---------+
|
|
189
|
-
| | |
|
|
190
|
-
v v v
|
|
191
|
-
+---+ +---+ +---+
|
|
192
|
-
| | | | | |
|
|
193
|
-
| B | | C | | D |
|
|
194
|
-
| | | | | |
|
|
195
|
-
+---+ +---+ +---+
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
## <a id="06-fan-in"></a>06. Fan-in to one target
|
|
199
|
-
|
|
200
|
-
**Characterises:** Edges sharing a target merge into one trunk; fan-in targets align under their parent group (in-degree heuristic).
|
|
201
|
-
|
|
202
|
-
**Code:** `grid.ts:478-492 inDegree; grid.ts:555-563`
|
|
203
|
-
|
|
204
|
-
Source:
|
|
205
|
-
|
|
206
|
-
```mermaid
|
|
207
|
-
graph TD
|
|
208
|
-
B --> A
|
|
209
|
-
C --> A
|
|
210
|
-
D --> A
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
Rendered:
|
|
214
|
-
|
|
215
|
-
```
|
|
216
|
-
+---+ +---+ +---+
|
|
217
|
-
| | | | | |
|
|
218
|
-
| B | | C | | D |
|
|
219
|
-
| | | | | |
|
|
220
|
-
+---+ +---+ +---+
|
|
221
|
-
| | |
|
|
222
|
-
| | |
|
|
223
|
-
+---------+---------+
|
|
224
|
-
|
|
|
225
|
-
v
|
|
226
|
-
+---+
|
|
227
|
-
| |
|
|
228
|
-
| A |
|
|
229
|
-
| |
|
|
230
|
-
+---+
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
## <a id="07-branch-merge"></a>07. Branch then merge (diamond)
|
|
234
|
-
|
|
235
|
-
**Characterises:** A node that is both a fan-out target and a fan-in source: split, two parallel layers, rejoin without crossing.
|
|
236
|
-
|
|
237
|
-
**Code:** `grid.ts createMapping multi-pass placement`
|
|
238
|
-
|
|
239
|
-
Source:
|
|
240
|
-
|
|
241
|
-
```mermaid
|
|
242
|
-
graph TD
|
|
243
|
-
A --> B
|
|
244
|
-
A --> C
|
|
245
|
-
B --> D
|
|
246
|
-
C --> D
|
|
247
|
-
```
|
|
248
|
-
|
|
249
|
-
Rendered:
|
|
250
|
-
|
|
251
|
-
```
|
|
252
|
-
+---+
|
|
253
|
-
| |
|
|
254
|
-
| A |
|
|
255
|
-
| |
|
|
256
|
-
+---+
|
|
257
|
-
|
|
|
258
|
-
|
|
|
259
|
-
+---------+
|
|
260
|
-
| |
|
|
261
|
-
v v
|
|
262
|
-
+---+ +---+
|
|
263
|
-
| | | |
|
|
264
|
-
| B | | C |
|
|
265
|
-
| | | |
|
|
266
|
-
+---+ +---+
|
|
267
|
-
| |
|
|
268
|
-
| |
|
|
269
|
-
+---------+
|
|
270
|
-
|
|
|
271
|
-
v
|
|
272
|
-
+---+
|
|
273
|
-
| |
|
|
274
|
-
| D |
|
|
275
|
-
| |
|
|
276
|
-
+---+
|
|
277
|
-
```
|
|
278
|
-
|
|
279
|
-
## <a id="08-feedback-cycle"></a>08. Feedback cycle (back edge)
|
|
280
|
-
|
|
281
|
-
**Characterises:** The forward path stays straight; the cycle-closing edge is routed back around by A* as a detour, not a diagonal.
|
|
282
|
-
|
|
283
|
-
**Code:** `pathfinder.ts getPath; grid.ts:582 multi-pass safety break`
|
|
284
|
-
|
|
285
|
-
Source:
|
|
286
|
-
|
|
287
|
-
```mermaid
|
|
288
|
-
graph LR
|
|
289
|
-
A --> B --> C
|
|
290
|
-
C --> A
|
|
291
|
-
```
|
|
292
|
-
|
|
293
|
-
Rendered:
|
|
294
|
-
|
|
295
|
-
```
|
|
296
|
-
+---+ +---+ +---+
|
|
297
|
-
| | | | | |
|
|
298
|
-
| A |---->| B |---->| C |
|
|
299
|
-
| | | | | |
|
|
300
|
-
+---+ +---+ +---+
|
|
301
|
-
^ |
|
|
302
|
-
+-------------------+
|
|
303
|
-
```
|
|
304
|
-
|
|
305
|
-
## <a id="09-self-loop"></a>09. Self-loop
|
|
306
|
-
|
|
307
|
-
**Characterises:** A node pointing at itself routes a small loop off one side; self-loops are excluded from fan-in degree.
|
|
308
|
-
|
|
309
|
-
**Code:** `edge-routing.ts selfReferenceDirection; grid.ts:487`
|
|
310
|
-
|
|
311
|
-
Source:
|
|
312
|
-
|
|
313
|
-
```mermaid
|
|
314
|
-
graph TD
|
|
315
|
-
A --> A
|
|
316
|
-
A --> B
|
|
317
|
-
```
|
|
318
|
-
|
|
319
|
-
Rendered:
|
|
320
|
-
|
|
321
|
-
```
|
|
322
|
-
+---+
|
|
323
|
-
| |
|
|
324
|
-
| A |<+
|
|
325
|
-
| | |
|
|
326
|
-
+---+ |
|
|
327
|
-
| |
|
|
328
|
-
| |
|
|
329
|
-
+---+
|
|
330
|
-
|
|
|
331
|
-
v
|
|
332
|
-
+---+
|
|
333
|
-
| |
|
|
334
|
-
| B |
|
|
335
|
-
| |
|
|
336
|
-
+---+
|
|
337
|
-
```
|
|
338
|
-
|
|
339
|
-
## <a id="10-parallel-edges"></a>10. Parallel edges into a target
|
|
340
|
-
|
|
341
|
-
**Characterises:** Two independent roots feeding one target are placed contiguously and share the merge trunk (no crossed trunks).
|
|
342
|
-
|
|
343
|
-
**Code:** `grid.ts:455-470 root grouping by shared first-target`
|
|
344
|
-
|
|
345
|
-
Source:
|
|
346
|
-
|
|
347
|
-
```mermaid
|
|
348
|
-
graph TD
|
|
349
|
-
A --> C
|
|
350
|
-
B --> C
|
|
351
|
-
```
|
|
352
|
-
|
|
353
|
-
Rendered:
|
|
354
|
-
|
|
355
|
-
```
|
|
356
|
-
+---+ +---+
|
|
357
|
-
| | | |
|
|
358
|
-
| A | | B |
|
|
359
|
-
| | | |
|
|
360
|
-
+---+ +---+
|
|
361
|
-
| |
|
|
362
|
-
| |
|
|
363
|
-
+---------+
|
|
364
|
-
|
|
|
365
|
-
v
|
|
366
|
-
+---+
|
|
367
|
-
| |
|
|
368
|
-
| C |
|
|
369
|
-
| |
|
|
370
|
-
+---+
|
|
371
|
-
```
|
|
372
|
-
|
|
373
|
-
## <a id="11-edge-labels"></a>11. Edge labels on a fan-out
|
|
374
|
-
|
|
375
|
-
**Characterises:** Labelled edges cannot bundle; the label lands on a per-sibling branch segment and widens that column.
|
|
376
|
-
|
|
377
|
-
**Code:** `edge-routing.ts determineLabelLine; grid.ts shareSiblingEdgeTrunks`
|
|
378
|
-
|
|
379
|
-
Source:
|
|
380
|
-
|
|
381
|
-
```mermaid
|
|
382
|
-
graph LR
|
|
383
|
-
A -->|yes| B
|
|
384
|
-
A -->|no| C
|
|
385
|
-
```
|
|
386
|
-
|
|
387
|
-
Rendered:
|
|
388
|
-
|
|
389
|
-
```
|
|
390
|
-
+---+ +---+
|
|
391
|
-
| | | |
|
|
392
|
-
| A |---yes->| B |
|
|
393
|
-
| | | |
|
|
394
|
-
+---+ +---+
|
|
395
|
-
|
|
|
396
|
-
|
|
|
397
|
-
|
|
|
398
|
-
|
|
|
399
|
-
|
|
|
400
|
-
| +---+
|
|
401
|
-
| | |
|
|
402
|
-
+---no---->| C |
|
|
403
|
-
| |
|
|
404
|
-
+---+
|
|
405
|
-
```
|
|
406
|
-
|
|
407
|
-
## <a id="12-node-shapes"></a>12. Node shapes
|
|
408
|
-
|
|
409
|
-
**Characterises:** Shape-aware sizing: diamond/round/circle change the box glyphs and grid dimensions but keep the 3×3 invariant and orthogonal routing.
|
|
410
|
-
|
|
411
|
-
**Code:** `shapes/* getShapeDimensions; grid.ts setColumnWidth`
|
|
412
|
-
|
|
413
|
-
Source:
|
|
414
|
-
|
|
415
|
-
```mermaid
|
|
416
|
-
graph LR
|
|
417
|
-
A[Rect] --> B(Round)
|
|
418
|
-
B --> C{Decision}
|
|
419
|
-
C --> D((Circle))
|
|
420
|
-
```
|
|
421
|
-
|
|
422
|
-
Rendered:
|
|
423
|
-
|
|
424
|
-
```
|
|
425
|
-
+------+ .-------. <----------> o--------o
|
|
426
|
-
| | | | | | | |
|
|
427
|
-
| Rect |---->| Round |---->| Decision |---->| Circle |
|
|
428
|
-
| | | | | | | |
|
|
429
|
-
+------+ '-------' <----------> o--------o
|
|
430
|
-
```
|
|
431
|
-
|
|
432
|
-
## <a id="13-subgraph"></a>13. Subgraph (bounding box)
|
|
433
|
-
|
|
434
|
-
**Characterises:** A subgraph draws a labelled box whose bounds contain every member node; edges cross the border cleanly.
|
|
435
|
-
|
|
436
|
-
**Code:** `grid.ts calculateSubgraphBoundingBoxes; offsetDrawingForSubgraphs`
|
|
437
|
-
|
|
438
|
-
Source:
|
|
439
|
-
|
|
440
|
-
```mermaid
|
|
441
|
-
graph TD
|
|
442
|
-
A --> B
|
|
443
|
-
subgraph G [Group]
|
|
444
|
-
B --> C
|
|
445
|
-
end
|
|
446
|
-
C --> D
|
|
447
|
-
```
|
|
448
|
-
|
|
449
|
-
Rendered:
|
|
450
|
-
|
|
451
|
-
```
|
|
452
|
-
+---+
|
|
453
|
-
| |
|
|
454
|
-
| A |
|
|
455
|
-
| |
|
|
456
|
-
+---+
|
|
457
|
-
|
|
|
458
|
-
|
|
|
459
|
-
|
|
|
460
|
-
|
|
|
461
|
-
v
|
|
462
|
-
+---+
|
|
463
|
-
| |
|
|
464
|
-
| B |
|
|
465
|
-
| |
|
|
466
|
-
+---+
|
|
467
|
-
|
|
|
468
|
-
|
|
|
469
|
-
|
|
|
470
|
-
|
|
|
471
|
-
|
|
|
472
|
-
+---|---+
|
|
473
|
-
| Group |
|
|
474
|
-
| | |
|
|
475
|
-
| v |
|
|
476
|
-
| +---+ |
|
|
477
|
-
| | | |
|
|
478
|
-
| | C | |
|
|
479
|
-
| | | |
|
|
480
|
-
| +---+ |
|
|
481
|
-
| | |
|
|
482
|
-
+---|---+
|
|
483
|
-
|
|
|
484
|
-
|
|
|
485
|
-
v
|
|
486
|
-
+---+
|
|
487
|
-
| |
|
|
488
|
-
| D |
|
|
489
|
-
| |
|
|
490
|
-
+---+
|
|
491
|
-
```
|
|
492
|
-
|
|
493
|
-
## <a id="14-subgraph-direction"></a>14. Subgraph with direction override
|
|
494
|
-
|
|
495
|
-
**Characterises:** A subgraph can override the flow direction (LR inside TD); the override applies only to edges internal to it.
|
|
496
|
-
|
|
497
|
-
**Code:** `grid.ts:533-537 effectiveDir; converter.ts:196-199`
|
|
498
|
-
|
|
499
|
-
Source:
|
|
500
|
-
|
|
501
|
-
```mermaid
|
|
502
|
-
graph TD
|
|
503
|
-
A --> B
|
|
504
|
-
subgraph G [Inner]
|
|
505
|
-
direction LR
|
|
506
|
-
B --> C --> E
|
|
507
|
-
end
|
|
508
|
-
E --> D
|
|
509
|
-
```
|
|
510
|
-
|
|
511
|
-
Rendered:
|
|
512
|
-
|
|
513
|
-
```
|
|
514
|
-
+---+
|
|
515
|
-
| |
|
|
516
|
-
| A |
|
|
517
|
-
| |
|
|
518
|
-
+---+
|
|
519
|
-
|
|
|
520
|
-
|
|
|
521
|
-
|
|
|
522
|
-
|
|
|
523
|
-
v
|
|
524
|
-
+---+
|
|
525
|
-
| |
|
|
526
|
-
| B |
|
|
527
|
-
| |
|
|
528
|
-
+---+
|
|
529
|
-
|
|
|
530
|
-
|
|
|
531
|
-
|
|
|
532
|
-
|
|
|
533
|
-
|
|
|
534
|
-
+---|-------------+
|
|
535
|
-
| | Inner |
|
|
536
|
-
| | |
|
|
537
|
-
| v |
|
|
538
|
-
| +---+ +---+ |
|
|
539
|
-
| | | | | |
|
|
540
|
-
| | C |---->| E | |
|
|
541
|
-
| | | | | |
|
|
542
|
-
| +---+ +---+ |
|
|
543
|
-
| | |
|
|
544
|
-
+-------------|---+
|
|
545
|
-
|
|
|
546
|
-
|
|
|
547
|
-
|
|
|
548
|
-
+---+ |
|
|
549
|
-
| | |
|
|
550
|
-
| D |<------+
|
|
551
|
-
| |
|
|
552
|
-
+---+
|
|
553
|
-
```
|
|
554
|
-
|
|
555
|
-
## <a id="15-disconnected"></a>15. Disconnected components
|
|
556
|
-
|
|
557
|
-
**Characterises:** Multiple roots / components are laid out side by side; each is an independent placement pass.
|
|
558
|
-
|
|
559
|
-
**Code:** `grid.ts root detection + multi-pass placement`
|
|
560
|
-
|
|
561
|
-
Source:
|
|
562
|
-
|
|
563
|
-
```mermaid
|
|
564
|
-
graph TD
|
|
565
|
-
A --> B
|
|
566
|
-
C --> D
|
|
567
|
-
```
|
|
568
|
-
|
|
569
|
-
Rendered:
|
|
570
|
-
|
|
571
|
-
```
|
|
572
|
-
+---+ +---+
|
|
573
|
-
| | | |
|
|
574
|
-
| A | | C |
|
|
575
|
-
| | | |
|
|
576
|
-
+---+ +---+
|
|
577
|
-
| |
|
|
578
|
-
| |
|
|
579
|
-
| |
|
|
580
|
-
| |
|
|
581
|
-
v v
|
|
582
|
-
+---+ +---+
|
|
583
|
-
| | | |
|
|
584
|
-
| B | | D |
|
|
585
|
-
| | | |
|
|
586
|
-
+---+ +---+
|
|
587
|
-
```
|
|
588
|
-
|
|
589
|
-
## <a id="16-state-markers"></a>16. State diagram start/end
|
|
590
|
-
|
|
591
|
-
**Characterises:** State diagrams reuse the flowchart pipeline; [*] becomes start/end markers and states render as rounded boxes.
|
|
592
|
-
|
|
593
|
-
**Code:** `index.ts flowchart pipeline (state shares it); shapes/state.ts`
|
|
594
|
-
|
|
595
|
-
Source:
|
|
596
|
-
|
|
597
|
-
```mermaid
|
|
598
|
-
stateDiagram-v2
|
|
599
|
-
[*] --> Idle
|
|
600
|
-
Idle --> Running
|
|
601
|
-
Running --> [*]
|
|
602
|
-
```
|
|
603
|
-
|
|
604
|
-
Rendered:
|
|
605
|
-
|
|
606
|
-
```
|
|
607
|
-
*---------*
|
|
608
|
-
| |
|
|
609
|
-
*---------*
|
|
610
|
-
|
|
|
611
|
-
|
|
|
612
|
-
|
|
|
613
|
-
|
|
|
614
|
-
v
|
|
615
|
-
.---------.
|
|
616
|
-
| |
|
|
617
|
-
| Idle |
|
|
618
|
-
| |
|
|
619
|
-
'---------'
|
|
620
|
-
|
|
|
621
|
-
|
|
|
622
|
-
|
|
|
623
|
-
|
|
|
624
|
-
v
|
|
625
|
-
.---------.
|
|
626
|
-
| |
|
|
627
|
-
| Running |
|
|
628
|
-
| |
|
|
629
|
-
'---------'
|
|
630
|
-
|
|
|
631
|
-
|
|
|
632
|
-
|
|
|
633
|
-
|
|
|
634
|
-
v
|
|
635
|
-
#=========#
|
|
636
|
-
‖ ‖
|
|
637
|
-
#=========#
|
|
638
|
-
```
|