fabro/docs/public/images/tutorial-ensemble.svg
Bryan Helmkamp 283eab181f
refactor(docs): split docs/ into public/ and internal/
Invert the docs convention so the Mintlify-published site lives under
docs/public/ and internal artifacts (strategy docs, brainstorms, plans,
etc.) sit at docs/ root or docs/internal/. Tools that default to writing
into docs/ now land in the catch-all instead of leaking into the
published tree.

- Move Mintlify content (administration/, agents/, api-reference/,
  changelog/, core-concepts/, examples/, execution/, getting-started/,
  human-tools/, integrations/, languages/, reference/, tutorials/,
  workflows/, images/, logo/, docs.json, favicon.svg, dot-highlight.js)
  into docs/public/.
- Collapse docs-internal/ into docs/internal/.
- Update Rust path references (fabro-api/build.rs, fabro-server,
  fabro-dev), TypeScript generator arg, CI path filters, clippy.toml
  reasons, AGENTS.md/CLAUDE.md, and README.md image refs.

Mintlify dashboard project root must be updated to docs/public/ in a
follow-up. .mintignore move/trim and .claude/skills/ updates land in a
separate commit.
2026-04-27 07:21:13 -07:00

161 lines
9.2 KiB
XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 14.1.2 (20260124.0452)
-->
<!-- Title: Ensemble Pages: 1 -->
<svg width="585pt" height="206pt"
viewBox="0.00 0.00 585.00 206.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<style>
@media (prefers-color-scheme: dark) {
[fill="#1a1a1a"] { fill: #e5e5e5; }
[fill="#666666"] { fill: #aaaaaa; }
[stroke="#666666"] { stroke: #aaaaaa; }
[stroke="#999999"] { stroke: #777777; }
}
</style>
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 202)">
<title>Ensemble</title>
<!-- start -->
<g id="node1" class="node">
<title>start</title>
<polygon fill="none" stroke="#357f9e" points="35.26,-117 0,-99 35.26,-81 70.52,-99 35.26,-117"/>
<polyline fill="none" stroke="#357f9e" points="10.69,-104.46 10.69,-93.54"/>
<polyline fill="none" stroke="#357f9e" points="24.57,-86.46 45.95,-86.46"/>
<polyline fill="none" stroke="#357f9e" points="59.83,-93.54 59.83,-104.46"/>
<polyline fill="none" stroke="#357f9e" points="45.95,-111.54 24.57,-111.54"/>
<text xml:space="preserve" text-anchor="middle" x="35.26" y="-93.97" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#1a1a1a">Start</text>
</g>
<!-- fork -->
<g id="node3" class="node">
<title>fork</title>
<polygon fill="none" stroke="#357f9e" points="165.27,-117 106.52,-117 106.52,-113 102.52,-113 102.52,-109 106.52,-109 106.52,-89 102.52,-89 102.52,-85 106.52,-85 106.52,-81 165.27,-81 165.27,-117"/>
<polyline fill="none" stroke="#357f9e" points="106.52,-113 110.52,-113 110.52,-109 106.52,-109"/>
<polyline fill="none" stroke="#357f9e" points="106.52,-89 110.52,-89 110.52,-85 106.52,-85"/>
<text xml:space="preserve" text-anchor="middle" x="135.9" y="-93.97" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#1a1a1a">Fan Out</text>
</g>
<!-- start&#45;&gt;fork -->
<g id="edge1" class="edge">
<title>start&#45;&gt;fork</title>
<path fill="none" stroke="#666666" d="M71.59,-99C79.15,-99 87.19,-99 94.92,-99"/>
<polygon fill="#666666" stroke="#666666" points="94.78,-102.5 104.78,-99 94.78,-95.5 94.78,-102.5"/>
</g>
<!-- exit -->
<g id="node2" class="node">
<title>exit</title>
<polygon fill="none" stroke="#357f9e" points="577.17,-117.12 540.92,-117.12 540.92,-80.88 577.17,-80.88 577.17,-117.12"/>
<polyline fill="none" stroke="#357f9e" points="552.92,-117.12 540.92,-105.12"/>
<polyline fill="none" stroke="#357f9e" points="540.92,-92.88 552.92,-80.88"/>
<polyline fill="none" stroke="#357f9e" points="565.17,-80.88 577.17,-92.88"/>
<polyline fill="none" stroke="#357f9e" points="577.17,-105.12 565.17,-117.12"/>
<text xml:space="preserve" text-anchor="middle" x="559.04" y="-93.97" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#1a1a1a">Exit</text>
</g>
<!-- opus -->
<g id="node4" class="node">
<title>opus</title>
<polygon fill="none" stroke="#357f9e" points="275.77,-198 213.27,-198 213.27,-202 201.27,-202 201.27,-162 275.77,-162 275.77,-198"/>
<polyline fill="none" stroke="#357f9e" points="201.27,-198 213.27,-198"/>
<text xml:space="preserve" text-anchor="middle" x="238.52" y="-181.35" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#1a1a1a">Opus</text>
<text xml:space="preserve" text-anchor="middle" x="238.52" y="-168.6" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#1a1a1a">(Anthropic)</text>
</g>
<!-- fork&#45;&gt;opus -->
<g id="edge2" class="edge">
<title>fork&#45;&gt;opus</title>
<path fill="none" stroke="#666666" d="M158.1,-117.31C170.53,-127.92 186.63,-141.42 201.27,-153 201.94,-153.53 202.62,-154.06 203.3,-154.6"/>
<polygon fill="#666666" stroke="#666666" points="201.15,-157.36 211.22,-160.67 205.42,-151.81 201.15,-157.36"/>
</g>
<!-- gemini -->
<g id="node5" class="node">
<title>gemini</title>
<polygon fill="none" stroke="#357f9e" points="269.77,-144 219.27,-144 219.27,-148 207.27,-148 207.27,-108 269.77,-108 269.77,-144"/>
<polyline fill="none" stroke="#357f9e" points="207.27,-144 219.27,-144"/>
<text xml:space="preserve" text-anchor="middle" x="238.52" y="-127.35" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#1a1a1a">Gemini</text>
<text xml:space="preserve" text-anchor="middle" x="238.52" y="-114.6" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#1a1a1a">(Google)</text>
</g>
<!-- fork&#45;&gt;gemini -->
<g id="edge3" class="edge">
<title>fork&#45;&gt;gemini</title>
<path fill="none" stroke="#666666" d="M165.73,-106.74C175.2,-109.28 185.92,-112.15 196.13,-114.89"/>
<polygon fill="#666666" stroke="#666666" points="194.9,-118.19 205.47,-117.4 196.71,-111.43 194.9,-118.19"/>
</g>
<!-- codex -->
<g id="node6" class="node">
<title>codex</title>
<polygon fill="none" stroke="#357f9e" points="270.52,-90 218.52,-90 218.52,-94 206.52,-94 206.52,-54 270.52,-54 270.52,-90"/>
<polyline fill="none" stroke="#357f9e" points="206.52,-90 218.52,-90"/>
<text xml:space="preserve" text-anchor="middle" x="238.52" y="-73.35" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#1a1a1a">Codex</text>
<text xml:space="preserve" text-anchor="middle" x="238.52" y="-60.6" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#1a1a1a">(OpenAI)</text>
</g>
<!-- fork&#45;&gt;codex -->
<g id="edge4" class="edge">
<title>fork&#45;&gt;codex</title>
<path fill="none" stroke="#666666" d="M165.73,-91.26C174.93,-88.79 185.31,-86.01 195.26,-83.34"/>
<polygon fill="#666666" stroke="#666666" points="196,-86.76 204.76,-80.79 194.19,-80 196,-86.76"/>
</g>
<!-- mercury -->
<g id="node7" class="node">
<title>mercury</title>
<polygon fill="none" stroke="#357f9e" points="274.65,-36 214.4,-36 214.4,-40 202.4,-40 202.4,0 274.65,0 274.65,-36"/>
<polyline fill="none" stroke="#357f9e" points="202.4,-36 214.4,-36"/>
<text xml:space="preserve" text-anchor="middle" x="238.52" y="-19.35" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#1a1a1a">Mercury</text>
<text xml:space="preserve" text-anchor="middle" x="238.52" y="-6.6" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#1a1a1a">(Inception)</text>
</g>
<!-- fork&#45;&gt;mercury -->
<g id="edge5" class="edge">
<title>fork&#45;&gt;mercury</title>
<path fill="none" stroke="#666666" d="M158.1,-80.69C170.53,-70.08 186.63,-56.58 201.27,-45 201.94,-44.47 202.62,-43.94 203.3,-43.4"/>
<polygon fill="#666666" stroke="#666666" points="205.42,-46.19 211.22,-37.33 201.15,-40.64 205.42,-46.19"/>
</g>
<!-- merge -->
<g id="node8" class="node">
<title>merge</title>
<polygon fill="none" stroke="#357f9e" points="385.67,-91.54 385.67,-106.46 366.37,-117 339.07,-117 319.77,-106.46 319.77,-91.54 339.07,-81 366.37,-81 385.67,-91.54"/>
<polygon fill="none" stroke="#357f9e" points="389.67,-89.17 389.67,-108.83 367.39,-121 338.05,-121 315.77,-108.83 315.77,-89.17 338.05,-77 367.39,-77 389.67,-89.17"/>
<polygon fill="none" stroke="#357f9e" points="393.67,-86.8 393.67,-111.2 368.41,-125 337.03,-125 311.77,-111.2 311.77,-86.8 337.03,-73 368.41,-73 393.67,-86.8"/>
<text xml:space="preserve" text-anchor="middle" x="352.72" y="-93.97" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#1a1a1a">Merge</text>
</g>
<!-- opus&#45;&gt;merge -->
<g id="edge6" class="edge">
<title>opus&#45;&gt;merge</title>
<path fill="none" stroke="#666666" d="M264.98,-161.62C280.04,-150.75 299.34,-136.81 315.92,-124.85"/>
<polygon fill="#666666" stroke="#666666" points="317.51,-128.01 323.57,-119.32 313.41,-122.34 317.51,-128.01"/>
</g>
<!-- gemini&#45;&gt;merge -->
<g id="edge7" class="edge">
<title>gemini&#45;&gt;merge</title>
<path fill="none" stroke="#666666" d="M270.18,-118.62C279.52,-116.37 290.05,-113.84 300.37,-111.36"/>
<polygon fill="#666666" stroke="#666666" points="301.04,-114.8 309.94,-109.05 299.4,-107.99 301.04,-114.8"/>
</g>
<!-- codex&#45;&gt;merge -->
<g id="edge8" class="edge">
<title>codex&#45;&gt;merge</title>
<path fill="none" stroke="#666666" d="M270.78,-79.52C279.92,-81.72 290.16,-84.19 300.2,-86.6"/>
<polygon fill="#666666" stroke="#666666" points="299.38,-90 309.92,-88.94 301.02,-83.2 299.38,-90"/>
</g>
<!-- mercury&#45;&gt;merge -->
<g id="edge9" class="edge">
<title>mercury&#45;&gt;merge</title>
<path fill="none" stroke="#666666" d="M264.98,-36.38C280.04,-47.25 299.34,-61.19 315.92,-73.15"/>
<polygon fill="#666666" stroke="#666666" points="313.41,-75.66 323.57,-78.68 317.51,-69.99 313.41,-75.66"/>
</g>
<!-- synth -->
<g id="node9" class="node">
<title>synth</title>
<polygon fill="none" stroke="#357f9e" points="504.92,-117 441.67,-117 441.67,-121 429.67,-121 429.67,-81 504.92,-81 504.92,-117"/>
<polyline fill="none" stroke="#357f9e" points="429.67,-117 441.67,-117"/>
<text xml:space="preserve" text-anchor="middle" x="467.29" y="-93.97" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#1a1a1a">Synthesize</text>
</g>
<!-- merge&#45;&gt;synth -->
<g id="edge10" class="edge">
<title>merge&#45;&gt;synth</title>
<path fill="none" stroke="#666666" d="M394.04,-99C401.76,-99 409.91,-99 417.85,-99"/>
<polygon fill="#666666" stroke="#666666" points="417.74,-102.5 427.74,-99 417.74,-95.5 417.74,-102.5"/>
</g>
<!-- synth&#45;&gt;exit -->
<g id="edge11" class="edge">
<title>synth&#45;&gt;exit</title>
<path fill="none" stroke="#666666" d="M505.32,-99C513.21,-99 521.43,-99 528.97,-99"/>
<polygon fill="#666666" stroke="#666666" points="528.96,-102.5 538.96,-99 528.96,-95.5 528.96,-102.5"/>
</g>
</g>
</svg>