forked from bots-garden/ori
| ✨ Workspace panel, selectors, previews, desktop app, sandbox template, resizable file tree, light/dark theme | 1 | <mxfile host="65bd71144e"> |
| 2 | <diagram id="ori-packages" name="ori package dependencies"> | |
| 3 | <mxGraphModel dx="727" dy="240" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1200" pageHeight="850" math="0" shadow="0"> | |
| 4 | <root> | |
| 5 | <mxCell id="0"/> | |
| 6 | <mxCell id="1" parent="0"/> | |
| 7 | <mxCell id="spa" value="ui/src — React SPA (chat panel + workspace: file tree, Monaco preview/editor, markdown/asciidoc rendering, xterm.js terminal)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> | |
| 8 | <mxGeometry x="40" y="30" width="260" height="80" as="geometry"/> | |
| 9 | </mxCell> | |
| 10 | <mxCell id="uiembed" value="ui (Go package) (go:embed of the SPA production build)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1"> | |
| 11 | <mxGeometry x="380" y="40" width="240" height="60" as="geometry"/> | |
| 12 | </mxCell> | |
| 13 | <mxCell id="cmdori" value="cmd/ori (entry point: wires config, agent, bridge, http)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1"> | |
| 14 | <mxGeometry x="380" y="180" width="240" height="60" as="geometry"/> | |
| 15 | </mxCell> | |
| 16 | <mxCell id="config" value="internal/config (CLI flag parsing and validation)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1"> | |
| 17 | <mxGeometry x="60" y="300" width="220" height="60" as="geometry"/> | |
| 18 | </mxCell> | |
| 19 | <mxCell id="httpserver" value="internal/httpserver (serves the embedded SPA, /healthz, mounts /ws)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1"> | |
| 20 | <mxGeometry x="320" y="300" width="240" height="60" as="geometry"/> | |
| 21 | </mxCell> | |
| 22 | <mxCell id="bridge" value="internal/bridge (WS hub: broadcast, history replay, permission routing)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1"> | |
| 23 | <mxGeometry x="600" y="300" width="250" height="60" as="geometry"/> | |
| 24 | </mxCell> | |
| 25 | <mxCell id="agentpkg" value="internal/agent (spawns the agent process, drives the ACP session)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1"> | |
| 26 | <mxGeometry x="890" y="300" width="250" height="60" as="geometry"/> | |
| 27 | </mxCell> | |
| 28 | <mxCell id="mockagent" value="internal/mockagent (deterministic demo ACP agent scenario)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1"> | |
| 29 | <mxGeometry x="890" y="180" width="250" height="60" as="geometry"/> | |
| 30 | </mxCell> | |
| 31 | <mxCell id="cmdmock" value="cmd/ori-mock-agent (the demo agent as a stdio binary)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1"> | |
| 32 | <mxGeometry x="890" y="60" width="250" height="60" as="geometry"/> | |
| 33 | </mxCell> | |
| 34 | <mxCell id="acpsdk" value="github.com/coder/acp-go-sdk (ACP JSON-RPC client and agent library)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1"> | |
| 35 | <mxGeometry x="740" y="460" width="250" height="60" as="geometry"/> | |
| 36 | </mxCell> | |
| 37 | <mxCell id="wslib" value="github.com/coder/websocket (WebSocket implementation)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1"> | |
| 38 | <mxGeometry x="450" y="460" width="230" height="60" as="geometry"/> | |
| 39 | </mxCell> | |
| ✨ Switch the ACP adapter to @agentclientprotocol/claude-agent-acp (template 0.0.2) | 40 | <mxCell id="adapter" value="npx @agentclientprotocol/claude-agent-acp (Claude Agent SDK ACP adapter, bundles Claude Code — runtime subprocess)" style="rounded=1;whiteSpace=wrap;html=1;dashed=1;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" vertex="1"> |
| ✨ Workspace panel, selectors, previews, desktop app, sandbox template, resizable file tree, light/dark theme | 41 | <mxGeometry x="890" y="580" width="270" height="60" as="geometry"/> |
| 42 | </mxCell> | |
| 43 | <mxCell id="filespkg" value="internal/files (workspace file API: list, read, write)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1"> | |
| 44 | <mxGeometry x="60" y="420" width="220" height="60" as="geometry"/> | |
| 45 | </mxCell> | |
| 46 | <mxCell id="terminalpkg" value="internal/terminal (one shell per WebSocket, in a PTY)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1"> | |
| 47 | <mxGeometry x="60" y="520" width="220" height="60" as="geometry"/> | |
| 48 | </mxCell> | |
| 49 | <mxCell id="ptylib" value="github.com/creack/pty (pseudo-terminal allocation)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" vertex="1" parent="1"> | |
| 50 | <mxGeometry x="320" y="560" width="230" height="60" as="geometry"/> | |
| 51 | </mxCell> | |
| 52 | <mxCell id="e1" style="edgeStyle=orthogonalEdgeStyle;html=1;" parent="1" source="cmdori" target="config" edge="1"> | |
| 53 | <mxGeometry relative="1" as="geometry"/> | |
| 54 | </mxCell> | |
| 55 | <mxCell id="e2" style="edgeStyle=orthogonalEdgeStyle;html=1;" parent="1" source="cmdori" target="httpserver" edge="1"> | |
| 56 | <mxGeometry relative="1" as="geometry"/> | |
| 57 | </mxCell> | |
| 58 | <mxCell id="e3" style="edgeStyle=orthogonalEdgeStyle;html=1;" parent="1" source="cmdori" target="bridge" edge="1"> | |
| 59 | <mxGeometry relative="1" as="geometry"/> | |
| 60 | </mxCell> | |
| 61 | <mxCell id="e4" style="edgeStyle=orthogonalEdgeStyle;html=1;" parent="1" source="cmdori" target="agentpkg" edge="1"> | |
| 62 | <mxGeometry relative="1" as="geometry"/> | |
| 63 | </mxCell> | |
| 64 | <mxCell id="e5" style="edgeStyle=orthogonalEdgeStyle;html=1;" parent="1" source="cmdori" target="uiembed" edge="1"> | |
| 65 | <mxGeometry relative="1" as="geometry"/> | |
| 66 | </mxCell> | |
| 67 | <mxCell id="e6" style="edgeStyle=orthogonalEdgeStyle;html=1;" parent="1" source="cmdmock" target="mockagent" edge="1"> | |
| 68 | <mxGeometry relative="1" as="geometry"/> | |
| 69 | </mxCell> | |
| 70 | <mxCell id="e7" style="edgeStyle=orthogonalEdgeStyle;html=1;" parent="1" source="mockagent" target="acpsdk" edge="1"> | |
| 71 | <mxGeometry relative="1" as="geometry"/> | |
| 72 | </mxCell> | |
| 73 | <mxCell id="e8" style="edgeStyle=orthogonalEdgeStyle;html=1;" parent="1" source="agentpkg" target="acpsdk" edge="1"> | |
| 74 | <mxGeometry relative="1" as="geometry"/> | |
| 75 | </mxCell> | |
| 76 | <mxCell id="e9" style="edgeStyle=orthogonalEdgeStyle;html=1;" parent="1" source="bridge" target="acpsdk" edge="1"> | |
| 77 | <mxGeometry relative="1" as="geometry"/> | |
| 78 | </mxCell> | |
| 79 | <mxCell id="e10" style="edgeStyle=orthogonalEdgeStyle;html=1;" parent="1" source="bridge" target="wslib" edge="1"> | |
| 80 | <mxGeometry relative="1" as="geometry"/> | |
| 81 | </mxCell> | |
| 82 | <mxCell id="e11" style="edgeStyle=orthogonalEdgeStyle;html=1;" edge="1" parent="1" source="cmdori" target="filespkg"> | |
| 83 | <mxGeometry relative="1" as="geometry"/> | |
| 84 | </mxCell> | |
| 85 | <mxCell id="e12" style="edgeStyle=orthogonalEdgeStyle;html=1;" edge="1" parent="1" source="cmdori" target="terminalpkg"> | |
| 86 | <mxGeometry relative="1" as="geometry"/> | |
| 87 | </mxCell> | |
| 88 | <mxCell id="e13" style="edgeStyle=orthogonalEdgeStyle;html=1;" edge="1" parent="1" source="terminalpkg" target="ptylib"> | |
| 89 | <mxGeometry relative="1" as="geometry"/> | |
| 90 | </mxCell> | |
| 91 | <mxCell id="e14" style="edgeStyle=orthogonalEdgeStyle;html=1;" edge="1" parent="1" source="terminalpkg" target="wslib"> | |
| 92 | <mxGeometry relative="1" as="geometry"/> | |
| 93 | </mxCell> | |
| 94 | <mxCell id="r1" value="build embedded via go:embed" style="edgeStyle=orthogonalEdgeStyle;html=1;dashed=1;" parent="1" source="spa" target="uiembed" edge="1"> | |
| 95 | <mxGeometry relative="1" as="geometry"/> | |
| 96 | </mxCell> | |
| 97 | <mxCell id="r4" value="HTTP /api/files, /api/file" style="edgeStyle=orthogonalEdgeStyle;html=1;dashed=1;" edge="1" parent="1" source="spa" target="filespkg"> | |
| 98 | <mxGeometry relative="1" as="geometry"/> | |
| 99 | </mxCell> | |
| 100 | <mxCell id="r5" value="WebSocket /ws/terminal" style="edgeStyle=orthogonalEdgeStyle;html=1;dashed=1;" edge="1" parent="1" source="spa" target="terminalpkg"> | |
| 101 | <mxGeometry relative="1" as="geometry"/> | |
| 102 | </mxCell> | |
| 103 | <mxCell id="r2" value="WebSocket /ws (runtime)" style="edgeStyle=orthogonalEdgeStyle;html=1;dashed=1;" parent="1" source="spa" target="bridge" edge="1"> | |
| 104 | <mxGeometry relative="1" as="geometry"/> | |
| 105 | </mxCell> | |
| 106 | <mxCell id="r3" value="spawns (runtime, default --agent-cmd)" style="edgeStyle=orthogonalEdgeStyle;html=1;dashed=1;" parent="1" source="agentpkg" target="adapter" edge="1"> | |
| 107 | <mxGeometry relative="1" as="geometry"/> | |
| 108 | </mxCell> | |
| 109 | </root> | |
| 110 | </mxGraphModel> | |
| 111 | </diagram> | |
| 112 | </mxfile> |