nandi/oripublic Fork 0
35061753be581c0ba47a3189520d64e7788c183d
Commits
Clone
git clone https://git.rickub.com/nandi/ori.git
git clone ssh://git@rickub.com/nandi/ori.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

forked from bots-garden/ori

ori-architecture.json · 170 lines · 3.3 KBJSON Blame HistoryRaw
✨ Workspace panel, selectors, previews, desktop app, sandbox template, resizable file tree, light/dark theme 76d62ac k33g yesterday1{
2 "name": "Ori Architecture",
3 "width": 1220,
4 "height": 640,
5 "nodes": [
6 {
7 "id": "browser",
8 "x": 20,
9 "y": 20,
10 "w": 220,
11 "h": 110,
12 "label": "Browser\\nReact SPA",
13 "kind": "box"
14 },
15 {
16 "id": "ui-components",
17 "x": 20,
18 "y": 150,
19 "w": 220,
20 "h": 150,
21 "label": "UI Components\\n· Agent Panel\\n· Workspace Panel\\n· File Tree\\n· Monaco Editor\\n· Terminal (xterm.js)",
22 "kind": "accent"
23 },
24 {
25 "id": "httpserver",
26 "x": 370,
27 "y": 20,
28 "w": 280,
29 "h": 90,
30 "label": "httpserver\\nServes SPA + /ws",
31 "kind": "dark"
32 },
33 {
34 "id": "bridge",
35 "x": 370,
36 "y": 140,
37 "w": 280,
38 "h": 130,
39 "label": "bridge\\n· WebSocket ⇄ ACP\\n· Event broadcast\\n· Permission routing\\n· History replay",
40 "kind": "dark"
41 },
42 {
43 "id": "agent",
44 "x": 370,
45 "y": 300,
46 "w": 135,
47 "h": 90,
48 "label": "agent\\nACP session\\nlifecycle",
49 "kind": "dark"
50 },
51 {
52 "id": "files",
53 "x": 515,
54 "y": 300,
55 "w": 135,
56 "h": 90,
57 "label": "files\\nWorkspace\\nfile API",
58 "kind": "dark"
59 },
60 {
61 "id": "terminal",
62 "x": 370,
63 "y": 410,
64 "w": 135,
65 "h": 90,
66 "label": "terminal\\nPTY per\\nconnection",
67 "kind": "dark"
68 },
69 {
70 "id": "mockagent",
71 "x": 515,
72 "y": 410,
73 "w": 135,
74 "h": 90,
75 "label": "mockagent\\nDemo agent\\n(testing)",
76 "kind": "accent"
77 },
78 {
79 "id": "acp-agent",
80 "x": 800,
81 "y": 230,
82 "w": 400,
83 "h": 130,
84 "label": "ACP Agent\\n(claude-code-acp / Gemini CLI)\\n\\nJSON-RPC over stdio\\nsession_update · permission_request",
85 "kind": "intent"
86 },
87 {
88 "id": "note",
89 "x": 20,
90 "y": 560,
91 "w": 1180,
92 "h": 60,
93 "label": "Go backend bridges browser WebSockets to ACP stdio, broadcasting agent updates to all connected browsers while routing permissions back to the waiting call.",
94 "kind": "note"
95 }
96 ],
97 "edges": [
98 { "from": "browser", "to": "httpserver", "label": "1. load SPA" },
99 {
100 "from": "browser",
101 "to": "bridge",
102 "label": "2. WebSocket\\n/ws",
103 "fromSide": "right",
104 "fromAt": 100,
105 "toSide": "left",
106 "toAt": 180
107 },
108 {
109 "from": "ui-components",
110 "to": "bridge",
111 "label": "3. prompt +\\npermission\\nresponses",
112 "fromSide": "right",
113 "fromAt": 225,
114 "toSide": "left",
115 "toAt": 225
116 },
117 {
118 "from": "bridge",
119 "to": "ui-components",
120 "label": "4. session_update\\nevents (replay)",
121 "dashed": true,
122 "waypoints": [{ "x": 310, "y": 230 }, { "x": 280, "y": 230 }]
123 },
124 {
125 "from": "bridge",
126 "to": "agent",
127 "label": "5. ACP\\nlifecycle",
128 "fromSide": "bottom",
129 "fromAt": 450,
130 "toSide": "top",
131 "toAt": 437
132 },
133 {
134 "from": "agent",
135 "to": "acp-agent",
136 "label": "6. stdio\\nJSON-RPC",
137 "fromSide": "right",
138 "fromAt": 345,
139 "toSide": "left",
140 "toAt": 295
141 },
142 {
143 "from": "acp-agent",
144 "to": "bridge",
145 "label": "7. updates +\\npermissions",
146 "dashed": true,
147 "waypoints": [{ "x": 720, "y": 200 }, { "x": 650, "y": 200 }]
148 },
149 {
150 "from": "ui-components",
151 "to": "files",
152 "label": "file ops",
153 "fromSide": "right",
154 "fromAt": 280,
155 "toSide": "left",
156 "toAt": 345,
157 "dashed": true
158 },
159 {
160 "from": "ui-components",
161 "to": "terminal",
162 "label": "shell I/O",
163 "fromSide": "bottom",
164 "fromAt": 130,
165 "toSide": "left",
166 "toAt": 455,
167 "dashed": true
168 }
169 ]
170}