Files
dirigent/architecture.svg
T
2026-05-09 19:52:44 +02:00

83 lines
6.6 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 440" width="720" height="440" font-family="system-ui, sans-serif" font-size="11">
<defs>
<marker id="arr" markerWidth="8" markerHeight="6" refX="8" refY="3" orient="auto">
<path d="M0,0 L8,3 L0,6" fill="none" stroke="#666" stroke-width="1"/>
</marker>
</defs>
<rect width="720" height="440" rx="8" fill="#f8f9fa"/>
<text x="360" y="24" text-anchor="middle" font-size="14" font-weight="bold" fill="#1a1a2e">Dirigent package architecture</text>
<!-- Layer: Consumers (shadow — not in this repo) -->
<rect x="20" y="40" width="680" height="55" rx="8" fill="#f0f0f0" stroke="#999" stroke-width="1" stroke-dasharray="4,3"/>
<text x="30" y="56" font-size="10" font-weight="600" fill="#999">CONSUMERS (not in this repo)</text>
<rect x="40" y="62" width="110" height="24" rx="5" fill="#f8f8f8" stroke="#bbb" stroke-dasharray="3,2"/>
<text x="95" y="78" text-anchor="middle" fill="#999" font-size="9">server assembly</text>
<rect x="165" y="62" width="100" height="24" rx="5" fill="#f8f8f8" stroke="#bbb" stroke-dasharray="3,2"/>
<text x="215" y="78" text-anchor="middle" fill="#999" font-size="9">web application</text>
<rect x="280" y="62" width="85" height="24" rx="5" fill="#f8f8f8" stroke="#bbb" stroke-dasharray="3,2"/>
<text x="322" y="78" text-anchor="middle" fill="#999" font-size="9">API layer</text>
<rect x="380" y="62" width="85" height="24" rx="5" fill="#f8f8f8" stroke="#bbb" stroke-dasharray="3,2"/>
<text x="422" y="78" text-anchor="middle" fill="#999" font-size="9">integrations</text>
<rect x="480" y="62" width="70" height="24" rx="5" fill="#f8f8f8" stroke="#bbb" stroke-dasharray="3,2"/>
<text x="515" y="78" text-anchor="middle" fill="#999" font-size="9">archival</text>
<rect x="565" y="62" width="120" height="24" rx="5" fill="#f8f8f8" stroke="#bbb" stroke-dasharray="3,2"/>
<text x="625" y="78" text-anchor="middle" fill="#999" font-size="9">parsers + importers</text>
<!-- Layer: External Tools -->
<rect x="20" y="110" width="680" height="70" rx="8" fill="#e8f0fe" stroke="#4285f4" stroke-width="1.5"/>
<text x="30" y="128" font-size="10" font-weight="600" fill="#4285f4">STANDALONE TOOLS</text>
<rect x="40" y="136" width="130" height="32" rx="6" fill="#fff" stroke="#4285f4"/>
<text x="105" y="156" text-anchor="middle" fill="#333" font-weight="600">fermata</text>
<rect x="200" y="136" width="130" height="32" rx="6" fill="#fff" stroke="#4285f4"/>
<text x="265" y="156" text-anchor="middle" fill="#333" font-weight="600">dirigate</text>
<rect x="360" y="136" width="130" height="32" rx="6" fill="#fff" stroke="#4285f4"/>
<text x="425" y="156" text-anchor="middle" fill="#333" font-weight="600">anth</text>
<text x="530" y="150" fill="#4285f4" font-size="10" font-style="italic">&#x2190; own repos, installable</text>
<!-- Layer: Orchestration -->
<rect x="20" y="200" width="680" height="80" rx="8" fill="#fef9e7" stroke="#f0ad4e" stroke-width="1.5"/>
<text x="30" y="218" font-size="10" font-weight="600" fill="#b9770e">ORCHESTRATION</text>
<rect x="40" y="228" width="200" height="36" rx="6" fill="#fff" stroke="#f0ad4e"/>
<text x="140" y="242" text-anchor="middle" fill="#333" font-size="10" font-weight="600">dirigent_core</text>
<text x="140" y="255" text-anchor="middle" fill="#888" font-size="9">connector runtime</text>
<rect x="270" y="228" width="170" height="36" rx="6" fill="#fff" stroke="#f0ad4e"/>
<text x="355" y="242" text-anchor="middle" fill="#333" font-size="10" font-weight="600">dirigent_acp_api</text>
<text x="355" y="255" text-anchor="middle" fill="#888" font-size="9">ACP server</text>
<rect x="470" y="228" width="220" height="36" rx="6" fill="#fff" stroke="#f0ad4e"/>
<text x="580" y="242" text-anchor="middle" fill="#333" font-size="10" font-weight="600">dirigent_inspector</text>
<text x="580" y="255" text-anchor="middle" fill="#888" font-size="9">introspection tree</text>
<!-- Layer: Foundation -->
<rect x="20" y="300" width="680" height="80" rx="8" fill="#e8f8f0" stroke="#1e8449" stroke-width="1.5"/>
<text x="30" y="318" font-size="10" font-weight="600" fill="#1e8449">FOUNDATION</text>
<rect x="40" y="328" width="120" height="36" rx="6" fill="#fff" stroke="#1e8449"/>
<text x="100" y="342" text-anchor="middle" fill="#333" font-size="10" font-weight="600">protocol</text>
<text x="100" y="355" text-anchor="middle" fill="#888" font-size="9">ACP types</text>
<rect x="180" y="328" width="90" height="36" rx="6" fill="#fff" stroke="#1e8449"/>
<text x="225" y="342" text-anchor="middle" fill="#333" font-size="10" font-weight="600">tools</text>
<text x="225" y="355" text-anchor="middle" fill="#888" font-size="9">sandbox</text>
<rect x="290" y="328" width="90" height="36" rx="6" fill="#fff" stroke="#1e8449"/>
<text x="335" y="342" text-anchor="middle" fill="#333" font-size="10" font-weight="600">config</text>
<text x="335" y="355" text-anchor="middle" fill="#888" font-size="9">paths + toml</text>
<rect x="400" y="328" width="80" height="36" rx="6" fill="#fff" stroke="#1e8449"/>
<text x="440" y="342" text-anchor="middle" fill="#333" font-size="10" font-weight="600">auth</text>
<text x="440" y="355" text-anchor="middle" fill="#888" font-size="9">accounts</text>
<rect x="500" y="328" width="85" height="36" rx="6" fill="#fff" stroke="#1e8449"/>
<text x="542" y="342" text-anchor="middle" fill="#333" font-size="10" font-weight="600">process</text>
<text x="542" y="355" text-anchor="middle" fill="#888" font-size="9">lifecycle</text>
<rect x="605" y="328" width="85" height="36" rx="6" fill="#fff" stroke="#1e8449"/>
<text x="647" y="342" text-anchor="middle" fill="#333" font-size="10" font-weight="600">opencode</text>
<text x="647" y="355" text-anchor="middle" fill="#888" font-size="9">HTTP client</text>
<!-- Dependency arrows -->
<line x1="265" y1="168" x2="140" y2="228" stroke="#666" stroke-width="1" marker-end="url(#arr)"/>
<line x1="265" y1="168" x2="355" y2="228" stroke="#666" stroke-width="1" marker-end="url(#arr)"/>
<line x1="140" y1="264" x2="100" y2="328" stroke="#666" stroke-width="1" marker-end="url(#arr)"/>
<line x1="140" y1="264" x2="225" y2="328" stroke="#666" stroke-width="1" marker-end="url(#arr)"/>
<line x1="355" y1="264" x2="100" y2="328" stroke="#666" stroke-width="1" marker-end="url(#arr)"/>
<!-- Footer -->
<text x="360" y="408" text-anchor="middle" font-size="9" fill="#999">Shadow boxes = downstream consumers not included in this repository</text>
<text x="360" y="422" text-anchor="middle" font-size="9" fill="#999">9 crates &#x2014; minimal set for dirigate and standalone tool dependencies</text>
</svg>