system-diff 0.3.4__tar.gz → 0.4.2__tar.gz
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.
- {system_diff-0.3.4 → system_diff-0.4.2}/PKG-INFO +27 -1
- {system_diff-0.3.4 → system_diff-0.4.2}/README.md +26 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/docs/diagrams/system.json +81 -15
- {system_diff-0.3.4 → system_diff-0.4.2}/docs/diagrams/system.svg +44 -37
- {system_diff-0.3.4 → system_diff-0.4.2}/mods/system-diff/.claude-plugin/plugin.json +1 -1
- {system_diff-0.3.4 → system_diff-0.4.2}/mods/system-diff/hooks/page.tsx +9 -6
- {system_diff-0.3.4 → system_diff-0.4.2}/mods/system-diff/hooks/pane.test.tsx +17 -2
- {system_diff-0.3.4 → system_diff-0.4.2}/mods/system-diff/hooks/register.tsx +24 -4
- {system_diff-0.3.4 → system_diff-0.4.2}/mods/system-diff/types/index.d.ts +2 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/pyproject.toml +1 -1
- {system_diff-0.3.4 → system_diff-0.4.2}/src/system_diff/__init__.py +1 -1
- {system_diff-0.3.4 → system_diff-0.4.2}/src/system_diff/agent.py +32 -12
- system_diff-0.4.2/src/system_diff/agents.py +351 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/src/system_diff/canvas.py +17 -7
- {system_diff-0.3.4 → system_diff-0.4.2}/src/system_diff/cli.py +3 -2
- {system_diff-0.3.4 → system_diff-0.4.2}/src/system_diff/mcp_server.py +44 -2
- {system_diff-0.3.4 → system_diff-0.4.2}/src/system_diff/pane.py +121 -4
- {system_diff-0.3.4 → system_diff-0.4.2}/src/system_diff/panel.py +3 -2
- {system_diff-0.3.4 → system_diff-0.4.2}/system-diff.toml +8 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/tests/test_checkpoint_watch_mcp.py +2 -1
- {system_diff-0.3.4 → system_diff-0.4.2}/tests/test_design_and_pane.py +92 -1
- {system_diff-0.3.4 → system_diff-0.4.2}/tests/test_terminal_and_learning.py +7 -1
- {system_diff-0.3.4 → system_diff-0.4.2}/.claude-plugin/marketplace.json +0 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/.gitattributes +0 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/.github/workflows/ci.yml +0 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/.github/workflows/release.yml +0 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/.github/workflows/system-diff.yml +0 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/.gitignore +0 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/LICENSE +0 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/mods/system-diff/hooks/hooks.json +0 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/src/system_diff/__main__.py +0 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/src/system_diff/activity.py +0 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/src/system_diff/architecture.py +0 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/src/system_diff/companion.py +0 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/src/system_diff/compare.py +0 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/src/system_diff/config.py +0 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/src/system_diff/design.py +0 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/src/system_diff/diff.py +0 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/src/system_diff/extract.py +0 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/src/system_diff/graph.py +0 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/src/system_diff/inside.py +0 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/src/system_diff/learn.py +0 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/src/system_diff/narrate.py +0 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/src/system_diff/pictures.py +0 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/src/system_diff/png.py +0 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/src/system_diff/profile.py +0 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/src/system_diff/readme.py +0 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/src/system_diff/sources.py +0 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/src/system_diff/statusline.py +0 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/src/system_diff/textmap.py +0 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/src/system_diff/topics.py +0 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/src/system_diff/tui.py +0 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/src/system_diff/watch.py +0 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/tests/conftest.py +0 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/tests/test_capture.py +0 -0
- {system_diff-0.3.4 → system_diff-0.4.2}/tests/test_system_diff.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: system-diff
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.2
|
|
4
4
|
Summary: Draws your system from its code (parts, entry points, data, outside systems) and what each change adds, changes or removes. No dependencies; SVG pictures for PRs and READMEs.
|
|
5
5
|
Project-URL: Homepage, https://github.com/simplifiedmachine/system-diff
|
|
6
6
|
Project-URL: Documentation, https://github.com/simplifiedmachine/system-diff/wiki
|
|
@@ -92,6 +92,8 @@ Claude is changing in it. `/system-diff close` (or "× close" in its tab row) hi
|
|
|
92
92
|
- **Zoom:** Enter (or a second click) zooms in on a container's components, with the lines between them. `b` goes
|
|
93
93
|
back, `f` follows Claude again.
|
|
94
94
|
- **Scroll:** `[` `]` scroll a wide diagram across; shift ↑ ↓, Page Up/Down or the wheel scroll a tall one.
|
|
95
|
+
- **Zoom:** ⊖ and ⊕ in the tab row (or `-` and `=`) draw the diagrams compact (narrower boxes, no flow labels) or
|
|
96
|
+
tiny (titles only), to fit more of the system in a narrow pane; below 110 columns it is compact by itself.
|
|
95
97
|
- **This turn**: each change to the design, and what it trades off.
|
|
96
98
|
- **Learn**: how the part Claude works on is designed.
|
|
97
99
|
- The principle its place calls for: an edge of the system, an adapter, a shared foundation, a coordinator.
|
|
@@ -100,6 +102,9 @@ Claude is changing in it. `/system-diff close` (or "× close" in its tab row) hi
|
|
|
100
102
|
- **What just happened**: the system diff, step by step. Each change an edit made is said in plain words, with why
|
|
101
103
|
it matters and the file it came from. Edits that changed no structure are told once.
|
|
102
104
|
- **Map**: the system diagram since your checkpoint, every box to pick and zoom into.
|
|
105
|
+
- **Agents**: the team at work. Each agent's area, the blocks it owns and edited, and unread messages; the system
|
|
106
|
+
diagram with `@agent` after each block it works on; the bus, newest first; and a warning when two agents edit one
|
|
107
|
+
block, or one edits a block claimed for another.
|
|
103
108
|
- **Changes**: every change since your checkpoint, and this turn, read for design. Once you have understood it, tell
|
|
104
109
|
Claude "mark it as seen" (or run `system-diff checkpoint`): from then on you see only what is new to you.
|
|
105
110
|
- **Topics**: the stack, technology by technology. Pick one and the parts that use it light up in the diagram; space
|
|
@@ -116,6 +121,27 @@ One meaning per colour, so your eye goes where it should:
|
|
|
116
121
|
|
|
117
122
|
`n` `m` `c` `t` switch views.
|
|
118
123
|
|
|
124
|
+
### A team of agents, by the system's blocks
|
|
125
|
+
|
|
126
|
+
Claude does most work alone unless asked otherwise, so system-diff asks it to plan a team:
|
|
127
|
+
|
|
128
|
+
- **Planning:** at each prompt, the hook tells Claude to call `plan_agents` with the task. The plan splits the task by
|
|
129
|
+
the system's blocks, one agent per area it touches (a container, else a part). Each agent gets the blocks it owns
|
|
130
|
+
(claimed for it), the blocks it depends on, and a brief to launch it with. Claude then launches the agents in
|
|
131
|
+
parallel as subagents. Turn this off with `[agents] orchestrate = false` in `system-diff.toml`.
|
|
132
|
+
- **The bus:** an async publish/subscribe channel whose topics are the blocks. Each agent follows the blocks its own
|
|
133
|
+
depend on. Every change an agent makes to a block's structure is published on that block's topic as it happens
|
|
134
|
+
("API no longer answers DELETE /orders/{id}"), with why it matters. Agents publish their own notes with `publish`
|
|
135
|
+
(to a block, to "all", or to "agent:<name>"). Each agent's unread messages reach it with its next tool result:
|
|
136
|
+
nobody waits on anybody.
|
|
137
|
+
- **Claims:** `claim` gives an agent its blocks. An edit to someone else's block is published to its owner and shown
|
|
138
|
+
under Needs your attention.
|
|
139
|
+
- **One agent, one area:** when an agent (the main conversation included) edits blocks in two or more areas in one
|
|
140
|
+
turn, the edit hook tells it, once that turn, to plan a team with `plan_agents` and hand the rest to agents.
|
|
141
|
+
|
|
142
|
+
The MCP tools: `plan_agents`, `claim`, `publish`, `subscribe`, `inbox`, `team`. It all stays in `.git/system-diff/`
|
|
143
|
+
(`agents.json`, `bus.jsonl`), never pushed.
|
|
144
|
+
|
|
119
145
|
### In the conversation
|
|
120
146
|
|
|
121
147
|
- **After an edit that changes the system's structure**, one line under it: "System diff: API now answers GET
|
|
@@ -60,6 +60,8 @@ Claude is changing in it. `/system-diff close` (or "× close" in its tab row) hi
|
|
|
60
60
|
- **Zoom:** Enter (or a second click) zooms in on a container's components, with the lines between them. `b` goes
|
|
61
61
|
back, `f` follows Claude again.
|
|
62
62
|
- **Scroll:** `[` `]` scroll a wide diagram across; shift ↑ ↓, Page Up/Down or the wheel scroll a tall one.
|
|
63
|
+
- **Zoom:** ⊖ and ⊕ in the tab row (or `-` and `=`) draw the diagrams compact (narrower boxes, no flow labels) or
|
|
64
|
+
tiny (titles only), to fit more of the system in a narrow pane; below 110 columns it is compact by itself.
|
|
63
65
|
- **This turn**: each change to the design, and what it trades off.
|
|
64
66
|
- **Learn**: how the part Claude works on is designed.
|
|
65
67
|
- The principle its place calls for: an edge of the system, an adapter, a shared foundation, a coordinator.
|
|
@@ -68,6 +70,9 @@ Claude is changing in it. `/system-diff close` (or "× close" in its tab row) hi
|
|
|
68
70
|
- **What just happened**: the system diff, step by step. Each change an edit made is said in plain words, with why
|
|
69
71
|
it matters and the file it came from. Edits that changed no structure are told once.
|
|
70
72
|
- **Map**: the system diagram since your checkpoint, every box to pick and zoom into.
|
|
73
|
+
- **Agents**: the team at work. Each agent's area, the blocks it owns and edited, and unread messages; the system
|
|
74
|
+
diagram with `@agent` after each block it works on; the bus, newest first; and a warning when two agents edit one
|
|
75
|
+
block, or one edits a block claimed for another.
|
|
71
76
|
- **Changes**: every change since your checkpoint, and this turn, read for design. Once you have understood it, tell
|
|
72
77
|
Claude "mark it as seen" (or run `system-diff checkpoint`): from then on you see only what is new to you.
|
|
73
78
|
- **Topics**: the stack, technology by technology. Pick one and the parts that use it light up in the diagram; space
|
|
@@ -84,6 +89,27 @@ One meaning per colour, so your eye goes where it should:
|
|
|
84
89
|
|
|
85
90
|
`n` `m` `c` `t` switch views.
|
|
86
91
|
|
|
92
|
+
### A team of agents, by the system's blocks
|
|
93
|
+
|
|
94
|
+
Claude does most work alone unless asked otherwise, so system-diff asks it to plan a team:
|
|
95
|
+
|
|
96
|
+
- **Planning:** at each prompt, the hook tells Claude to call `plan_agents` with the task. The plan splits the task by
|
|
97
|
+
the system's blocks, one agent per area it touches (a container, else a part). Each agent gets the blocks it owns
|
|
98
|
+
(claimed for it), the blocks it depends on, and a brief to launch it with. Claude then launches the agents in
|
|
99
|
+
parallel as subagents. Turn this off with `[agents] orchestrate = false` in `system-diff.toml`.
|
|
100
|
+
- **The bus:** an async publish/subscribe channel whose topics are the blocks. Each agent follows the blocks its own
|
|
101
|
+
depend on. Every change an agent makes to a block's structure is published on that block's topic as it happens
|
|
102
|
+
("API no longer answers DELETE /orders/{id}"), with why it matters. Agents publish their own notes with `publish`
|
|
103
|
+
(to a block, to "all", or to "agent:<name>"). Each agent's unread messages reach it with its next tool result:
|
|
104
|
+
nobody waits on anybody.
|
|
105
|
+
- **Claims:** `claim` gives an agent its blocks. An edit to someone else's block is published to its owner and shown
|
|
106
|
+
under Needs your attention.
|
|
107
|
+
- **One agent, one area:** when an agent (the main conversation included) edits blocks in two or more areas in one
|
|
108
|
+
turn, the edit hook tells it, once that turn, to plan a team with `plan_agents` and hand the rest to agents.
|
|
109
|
+
|
|
110
|
+
The MCP tools: `plan_agents`, `claim`, `publish`, `subscribe`, `inbox`, `team`. It all stays in `.git/system-diff/`
|
|
111
|
+
(`agents.json`, `bus.jsonl`), never pushed.
|
|
112
|
+
|
|
87
113
|
### In the conversation
|
|
88
114
|
|
|
89
115
|
- **After an edit that changes the system's structure**, one line under it: "System diff: API now answers GET
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"label": "Agent activity",
|
|
18
18
|
"layer": "",
|
|
19
19
|
"kind": "data",
|
|
20
|
-
"order":
|
|
20
|
+
"order": 24,
|
|
21
21
|
"container": "",
|
|
22
22
|
"declared": true,
|
|
23
23
|
"files": 1,
|
|
@@ -33,7 +33,19 @@
|
|
|
33
33
|
"container": "",
|
|
34
34
|
"declared": true,
|
|
35
35
|
"files": 1,
|
|
36
|
-
"lines":
|
|
36
|
+
"lines": 456,
|
|
37
|
+
"hub": false,
|
|
38
|
+
"quiet": false
|
|
39
|
+
},
|
|
40
|
+
"agents": {
|
|
41
|
+
"label": "Agent team",
|
|
42
|
+
"layer": "",
|
|
43
|
+
"kind": "logic",
|
|
44
|
+
"order": 14,
|
|
45
|
+
"container": "",
|
|
46
|
+
"declared": true,
|
|
47
|
+
"files": 1,
|
|
48
|
+
"lines": 296,
|
|
37
49
|
"hub": false,
|
|
38
50
|
"quiet": false
|
|
39
51
|
},
|
|
@@ -53,7 +65,7 @@
|
|
|
53
65
|
"label": "Pane pictures",
|
|
54
66
|
"layer": "",
|
|
55
67
|
"kind": "logic",
|
|
56
|
-
"order":
|
|
68
|
+
"order": 16,
|
|
57
69
|
"container": "",
|
|
58
70
|
"declared": true,
|
|
59
71
|
"files": 1,
|
|
@@ -65,7 +77,7 @@
|
|
|
65
77
|
"label": "Panes beside the agent",
|
|
66
78
|
"layer": "",
|
|
67
79
|
"kind": "logic",
|
|
68
|
-
"order":
|
|
80
|
+
"order": 21,
|
|
69
81
|
"container": "",
|
|
70
82
|
"declared": true,
|
|
71
83
|
"files": 1,
|
|
@@ -101,7 +113,7 @@
|
|
|
101
113
|
"label": "Design notes",
|
|
102
114
|
"layer": "",
|
|
103
115
|
"kind": "logic",
|
|
104
|
-
"order":
|
|
116
|
+
"order": 15,
|
|
105
117
|
"container": "",
|
|
106
118
|
"declared": true,
|
|
107
119
|
"files": 1,
|
|
@@ -149,7 +161,7 @@
|
|
|
149
161
|
"label": "Lessons and topics",
|
|
150
162
|
"layer": "",
|
|
151
163
|
"kind": "logic",
|
|
152
|
-
"order":
|
|
164
|
+
"order": 19,
|
|
153
165
|
"container": "",
|
|
154
166
|
"declared": true,
|
|
155
167
|
"files": 3,
|
|
@@ -165,7 +177,7 @@
|
|
|
165
177
|
"container": "",
|
|
166
178
|
"declared": true,
|
|
167
179
|
"files": 1,
|
|
168
|
-
"lines":
|
|
180
|
+
"lines": 282,
|
|
169
181
|
"hub": false,
|
|
170
182
|
"quiet": false
|
|
171
183
|
},
|
|
@@ -173,7 +185,7 @@
|
|
|
173
185
|
"label": "LLM summary",
|
|
174
186
|
"layer": "",
|
|
175
187
|
"kind": "logic",
|
|
176
|
-
"order":
|
|
188
|
+
"order": 18,
|
|
177
189
|
"container": "",
|
|
178
190
|
"declared": true,
|
|
179
191
|
"files": 1,
|
|
@@ -189,7 +201,7 @@
|
|
|
189
201
|
"container": "",
|
|
190
202
|
"declared": true,
|
|
191
203
|
"files": 2,
|
|
192
|
-
"lines":
|
|
204
|
+
"lines": 732,
|
|
193
205
|
"hub": false,
|
|
194
206
|
"quiet": false
|
|
195
207
|
},
|
|
@@ -209,7 +221,7 @@
|
|
|
209
221
|
"label": "PNG rendering",
|
|
210
222
|
"layer": "",
|
|
211
223
|
"kind": "logic",
|
|
212
|
-
"order":
|
|
224
|
+
"order": 22,
|
|
213
225
|
"container": "",
|
|
214
226
|
"declared": true,
|
|
215
227
|
"files": 1,
|
|
@@ -221,7 +233,7 @@
|
|
|
221
233
|
"label": "README section",
|
|
222
234
|
"layer": "",
|
|
223
235
|
"kind": "logic",
|
|
224
|
-
"order":
|
|
236
|
+
"order": 17,
|
|
225
237
|
"container": "",
|
|
226
238
|
"declared": true,
|
|
227
239
|
"files": 1,
|
|
@@ -233,7 +245,7 @@
|
|
|
233
245
|
"label": "Git and folder sources",
|
|
234
246
|
"layer": "",
|
|
235
247
|
"kind": "data",
|
|
236
|
-
"order":
|
|
248
|
+
"order": 23,
|
|
237
249
|
"container": "",
|
|
238
250
|
"declared": true,
|
|
239
251
|
"files": 1,
|
|
@@ -257,7 +269,7 @@
|
|
|
257
269
|
"label": "Terminal pictures",
|
|
258
270
|
"layer": "",
|
|
259
271
|
"kind": "logic",
|
|
260
|
-
"order":
|
|
272
|
+
"order": 20,
|
|
261
273
|
"container": "",
|
|
262
274
|
"declared": true,
|
|
263
275
|
"files": 1,
|
|
@@ -296,6 +308,7 @@
|
|
|
296
308
|
"activity>learn": 1,
|
|
297
309
|
"activity>sources": 1,
|
|
298
310
|
"agent>activity": 1,
|
|
311
|
+
"agent>agents": 1,
|
|
299
312
|
"agent>companion": 1,
|
|
300
313
|
"agent>compare": 1,
|
|
301
314
|
"agent>config": 1,
|
|
@@ -303,6 +316,10 @@
|
|
|
303
316
|
"agent>extract": 1,
|
|
304
317
|
"agent>learn": 1,
|
|
305
318
|
"agent>sources": 1,
|
|
319
|
+
"agents>activity": 1,
|
|
320
|
+
"agents>architecture": 1,
|
|
321
|
+
"agents>design": 1,
|
|
322
|
+
"agents>sources": 1,
|
|
306
323
|
"architecture>design": 2,
|
|
307
324
|
"architecture>diff": 1,
|
|
308
325
|
"architecture>extract": 1,
|
|
@@ -347,6 +364,7 @@
|
|
|
347
364
|
"learn>narrate": 1,
|
|
348
365
|
"learn>sources": 1,
|
|
349
366
|
"mcp>activity": 1,
|
|
367
|
+
"mcp>agents": 1,
|
|
350
368
|
"mcp>compare": 1,
|
|
351
369
|
"mcp>config": 1,
|
|
352
370
|
"mcp>extract": 2,
|
|
@@ -356,6 +374,7 @@
|
|
|
356
374
|
"mcp>sources": 1,
|
|
357
375
|
"mcp>textmap": 1,
|
|
358
376
|
"panel>activity": 2,
|
|
377
|
+
"panel>agents": 1,
|
|
359
378
|
"panel>architecture": 2,
|
|
360
379
|
"panel>canvas": 1,
|
|
361
380
|
"panel>compare": 2,
|
|
@@ -412,6 +431,10 @@
|
|
|
412
431
|
"write_state",
|
|
413
432
|
"READ"
|
|
414
433
|
],
|
|
434
|
+
"agent>agents": [
|
|
435
|
+
"ORCHESTRATE",
|
|
436
|
+
"after_edit"
|
|
437
|
+
],
|
|
415
438
|
"agent>companion": [
|
|
416
439
|
"add_vscode_task",
|
|
417
440
|
"open_beside",
|
|
@@ -441,6 +464,27 @@
|
|
|
441
464
|
"agent>sources": [
|
|
442
465
|
"git"
|
|
443
466
|
],
|
|
467
|
+
"agents>activity": [
|
|
468
|
+
"EDIT",
|
|
469
|
+
"_replace",
|
|
470
|
+
"PROMPT",
|
|
471
|
+
"READ",
|
|
472
|
+
"is_system",
|
|
473
|
+
"part_of"
|
|
474
|
+
],
|
|
475
|
+
"agents>architecture": [
|
|
476
|
+
"groups_of"
|
|
477
|
+
],
|
|
478
|
+
"agents>design": [
|
|
479
|
+
"depends",
|
|
480
|
+
"and_list",
|
|
481
|
+
"fan_in",
|
|
482
|
+
"kinds",
|
|
483
|
+
"summarize"
|
|
484
|
+
],
|
|
485
|
+
"agents>sources": [
|
|
486
|
+
"git_dir"
|
|
487
|
+
],
|
|
444
488
|
"architecture>design": [
|
|
445
489
|
"kinds"
|
|
446
490
|
],
|
|
@@ -617,6 +661,14 @@
|
|
|
617
661
|
"events",
|
|
618
662
|
"now"
|
|
619
663
|
],
|
|
664
|
+
"mcp>agents": [
|
|
665
|
+
"claim",
|
|
666
|
+
"inbox",
|
|
667
|
+
"messages",
|
|
668
|
+
"plan",
|
|
669
|
+
"publish",
|
|
670
|
+
"state"
|
|
671
|
+
],
|
|
620
672
|
"mcp>compare": [
|
|
621
673
|
"compare",
|
|
622
674
|
"checkpoint",
|
|
@@ -659,12 +711,19 @@
|
|
|
659
711
|
],
|
|
660
712
|
"panel>activity": [
|
|
661
713
|
"events",
|
|
662
|
-
"now",
|
|
663
714
|
"label",
|
|
715
|
+
"now",
|
|
664
716
|
"EDIT",
|
|
665
717
|
"PROMPT",
|
|
666
718
|
"STOP"
|
|
667
719
|
],
|
|
720
|
+
"panel>agents": [
|
|
721
|
+
"MAIN",
|
|
722
|
+
"state",
|
|
723
|
+
"inbox",
|
|
724
|
+
"messages",
|
|
725
|
+
"who_worked"
|
|
726
|
+
],
|
|
668
727
|
"panel>architecture": [
|
|
669
728
|
"system",
|
|
670
729
|
"container",
|
|
@@ -672,8 +731,8 @@
|
|
|
672
731
|
"internals"
|
|
673
732
|
],
|
|
674
733
|
"panel>canvas": [
|
|
675
|
-
"Page",
|
|
676
734
|
"cut",
|
|
735
|
+
"Page",
|
|
677
736
|
"detail_rows",
|
|
678
737
|
"Grid",
|
|
679
738
|
"chips",
|
|
@@ -870,6 +929,13 @@
|
|
|
870
929
|
"sys": 1,
|
|
871
930
|
"typing": 1
|
|
872
931
|
},
|
|
932
|
+
"agents": {
|
|
933
|
+
"json": 1,
|
|
934
|
+
"pathlib": 1,
|
|
935
|
+
"re": 1,
|
|
936
|
+
"time": 1,
|
|
937
|
+
"typing": 1
|
|
938
|
+
},
|
|
873
939
|
"architecture": {
|
|
874
940
|
"collections": 2,
|
|
875
941
|
"typing": 2,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="756" height="
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="756" height="1058" viewBox="0 0 756 1058" role="img" aria-label="System map">
|
|
2
2
|
<style>
|
|
3
3
|
text { font-family: 'Segoe UI', FreeSans, 'Helvetica Neue', Arial, sans-serif; }
|
|
4
4
|
.bg { fill: #f8f9fb; stroke: #e1e5eb; }
|
|
@@ -47,23 +47,28 @@ text { font-family: 'Segoe UI', FreeSans, 'Helvetica Neue', Arial, sans-serif; }
|
|
|
47
47
|
.note .box { fill: #fff3dd; stroke: #e9c98f; } .note text { font-size: 11.5px; fill: #9a5600; }
|
|
48
48
|
</style>
|
|
49
49
|
<defs><marker id="ar-call-same" class="ar k-call s-same" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path d="M0,0 L10,5 L0,10 z"/></marker></defs>
|
|
50
|
-
<rect class="bg" x="0.5" y="0.5" width="755" height="
|
|
50
|
+
<rect class="bg" x="0.5" y="0.5" width="755" height="1057" rx="10"/>
|
|
51
51
|
<text class="col" x="14" y="18">ENTRY POINTS</text>
|
|
52
52
|
<text class="col" x="278" y="18">LOGIC</text>
|
|
53
53
|
<text class="col" x="542" y="18">DATA ACCESS</text>
|
|
54
54
|
<path class="be k-call s-same" d="M542,112 C513,112 513,248 484,248" marker-end="url(#ar-call-same)"><title>activity → diff</title></path>
|
|
55
55
|
<path class="be k-call s-same" d="M542,112 C513,112 513,188 484,188" marker-end="url(#ar-call-same)"><title>activity → extract</title></path>
|
|
56
|
-
<path class="be k-call s-same" d="M542,112 C513,112 513,
|
|
56
|
+
<path class="be k-call s-same" d="M542,112 C513,112 513,788 484,788" marker-end="url(#ar-call-same)"><title>activity → learn</title></path>
|
|
57
57
|
<path class="be k-call s-same" d="M742,112 C778,112 778,52 748,52" marker-end="url(#ar-call-same)"><title>activity → sources</title></path>
|
|
58
58
|
<path class="be k-call s-same" d="M214,172 C246,172 246,159 278,159 L478,159 C507,159 507,112 536,112" marker-end="url(#ar-call-same)"><title>agent → activity</title></path>
|
|
59
|
-
<path class="be k-call s-same" d="M214,172 C243,172 243,
|
|
59
|
+
<path class="be k-call s-same" d="M214,172 C243,172 243,488 272,488" marker-end="url(#ar-call-same)"><title>agent → agents</title></path>
|
|
60
|
+
<path class="be k-call s-same" d="M214,172 C243,172 243,908 272,908" marker-end="url(#ar-call-same)"><title>agent → companion</title></path>
|
|
60
61
|
<path class="be k-call s-same" d="M214,172 C243,172 243,52 272,52" marker-end="url(#ar-call-same)"><title>agent → compare</title></path>
|
|
61
62
|
<path class="be k-call s-same" d="M214,172 C243,172 243,128 272,128" marker-end="url(#ar-call-same)"><title>agent → config</title></path>
|
|
62
|
-
<path class="be k-call s-same" d="M214,172 C243,172 243,
|
|
63
|
+
<path class="be k-call s-same" d="M214,172 C243,172 243,548 272,548" marker-end="url(#ar-call-same)"><title>agent → design</title></path>
|
|
63
64
|
<path class="be k-call s-same" d="M214,172 C243,172 243,188 272,188" marker-end="url(#ar-call-same)"><title>agent → extract</title></path>
|
|
64
|
-
<path class="be k-call s-same" d="M214,172 C243,172 243,
|
|
65
|
+
<path class="be k-call s-same" d="M214,172 C243,172 243,788 272,788" marker-end="url(#ar-call-same)"><title>agent → learn</title></path>
|
|
65
66
|
<path class="be k-call s-same" d="M214,172 C246,172 246,99 278,99 L478,99 C507,99 507,52 536,52" marker-end="url(#ar-call-same)"><title>agent → sources</title></path>
|
|
66
|
-
<path class="be k-call s-same" d="M478,
|
|
67
|
+
<path class="be k-call s-same" d="M478,488 C507,488 507,112 536,112" marker-end="url(#ar-call-same)"><title>agents → activity</title></path>
|
|
68
|
+
<path class="be k-call s-same" d="M478,488 C514,488 514,428 484,428" marker-end="url(#ar-call-same)"><title>agents → architecture</title></path>
|
|
69
|
+
<path class="be k-call s-same" d="M478,488 C514,488 514,548 484,548" marker-end="url(#ar-call-same)"><title>agents → design</title></path>
|
|
70
|
+
<path class="be k-call s-same" d="M478,488 C507,488 507,52 536,52" marker-end="url(#ar-call-same)"><title>agents → sources</title></path>
|
|
71
|
+
<path class="be k-call s-same" d="M478,428 C524,428 524,548 484,548" marker-end="url(#ar-call-same)"><title>architecture → design</title></path>
|
|
67
72
|
<path class="be k-call s-same" d="M478,428 C524,428 524,308 484,308" marker-end="url(#ar-call-same)"><title>architecture → graph</title></path>
|
|
68
73
|
<path class="be k-call s-same" d="M478,428 C534,428 534,248 484,248" marker-end="url(#ar-call-same)"><title>architecture → diff</title></path>
|
|
69
74
|
<path class="be k-call s-same" d="M478,428 C544,428 544,188 484,188" marker-end="url(#ar-call-same)"><title>architecture → extract</title></path>
|
|
@@ -72,37 +77,38 @@ text { font-family: 'Segoe UI', FreeSans, 'Helvetica Neue', Arial, sans-serif; }
|
|
|
72
77
|
<path class="be k-call s-same" d="M214,52 C243,52 243,128 272,128" marker-end="url(#ar-call-same)"><title>cli → config</title></path>
|
|
73
78
|
<path class="be k-call s-same" d="M214,52 C243,52 243,188 272,188" marker-end="url(#ar-call-same)"><title>cli → extract</title></path>
|
|
74
79
|
<path class="be k-call s-same" d="M214,52 C243,52 243,308 272,308" marker-end="url(#ar-call-same)"><title>cli → graph</title></path>
|
|
75
|
-
<path class="be k-call s-same" d="M214,52 C243,52 243,
|
|
80
|
+
<path class="be k-call s-same" d="M214,52 C243,52 243,788 272,788" marker-end="url(#ar-call-same)"><title>cli → learn</title></path>
|
|
76
81
|
<path class="be k-call s-same" d="M214,52 C246,52 246,99 278,99 L478,99 C507,99 507,112 536,112" marker-end="url(#ar-call-same)"><title>cli → activity</title></path>
|
|
77
|
-
<path class="be k-call s-same" d="M214,52 C243,52 243,
|
|
82
|
+
<path class="be k-call s-same" d="M214,52 C243,52 243,908 272,908" marker-end="url(#ar-call-same)"><title>cli → companion</title></path>
|
|
78
83
|
<path class="be k-call s-same" d="M214,52 C243,52 243,52 272,52" marker-end="url(#ar-call-same)"><title>cli → compare</title></path>
|
|
79
84
|
<path class="be k-call s-same" d="M214,52 C243,52 243,248 272,248" marker-end="url(#ar-call-same)"><title>cli → diff</title></path>
|
|
80
85
|
<path class="be k-call s-same" d="M214,52 C250,52 250,112 220,112" marker-end="url(#ar-call-same)"><title>cli → mcp</title></path>
|
|
81
|
-
<path class="be k-call s-same" d="M478,
|
|
86
|
+
<path class="be k-call s-same" d="M478,908 C507,908 507,52 536,52" marker-end="url(#ar-call-same)"><title>companion → sources</title></path>
|
|
82
87
|
<path class="be k-call s-same" d="M478,52 C516.7,52 516.7,128 484,128" marker-end="url(#ar-call-same)"><title>compare → config</title></path>
|
|
83
88
|
<path class="be k-call s-same" d="M478,52 C536.7,52 536.7,248 484,248" marker-end="url(#ar-call-same)"><title>compare → diff</title></path>
|
|
84
89
|
<path class="be k-call s-same" d="M478,52 C526.7,52 526.7,188 484,188" marker-end="url(#ar-call-same)"><title>compare → extract</title></path>
|
|
85
90
|
<path class="be k-call s-same" d="M478,52 C507,52 507,52 536,52" marker-end="url(#ar-call-same)"><title>compare → sources</title></path>
|
|
86
|
-
<path class="be k-call s-same" d="M478,
|
|
91
|
+
<path class="be k-call s-same" d="M478,548 C544,548 544,308 484,308" marker-end="url(#ar-call-same)"><title>design → graph</title></path>
|
|
87
92
|
<path class="be k-call s-same" d="M478,248 C514,248 514,188 484,188" marker-end="url(#ar-call-same)"><title>diff → extract</title></path>
|
|
88
93
|
<path class="be k-call s-same" d="M478,248 C507,248 507,52 536,52" marker-end="url(#ar-call-same)"><title>diff → sources</title></path>
|
|
89
94
|
<path class="be k-call s-same" d="M478,188 C514,188 514,128 484,128" marker-end="url(#ar-call-same)"><title>extract → config</title></path>
|
|
90
95
|
<path class="be k-call s-same" d="M478,308 C514,308 514,248 484,248" marker-end="url(#ar-call-same)"><title>graph → diff</title></path>
|
|
91
|
-
<path class="be k-call s-same" d="M478,
|
|
92
|
-
<path class="be k-call s-same" d="M478,
|
|
93
|
-
<path class="be k-call s-same" d="M478,
|
|
94
|
-
<path class="be k-call s-same" d="M478,
|
|
95
|
-
<path class="be k-call s-same" d="M478,
|
|
96
|
-
<path class="be k-call s-same" d="M478,
|
|
96
|
+
<path class="be k-call s-same" d="M478,788 C507,788 507,112 536,112" marker-end="url(#ar-call-same)"><title>learn → activity</title></path>
|
|
97
|
+
<path class="be k-call s-same" d="M478,788 C544,788 544,248 484,248" marker-end="url(#ar-call-same)"><title>learn → diff</title></path>
|
|
98
|
+
<path class="be k-call s-same" d="M478,788 C544,788 544,188 484,188" marker-end="url(#ar-call-same)"><title>learn → extract</title></path>
|
|
99
|
+
<path class="be k-call s-same" d="M478,788 C544,788 544,308 484,308" marker-end="url(#ar-call-same)"><title>learn → graph</title></path>
|
|
100
|
+
<path class="be k-call s-same" d="M478,788 C514,788 514,728 484,728" marker-end="url(#ar-call-same)"><title>learn → narrate</title></path>
|
|
101
|
+
<path class="be k-call s-same" d="M478,788 C507,788 507,52 536,52" marker-end="url(#ar-call-same)"><title>learn → sources</title></path>
|
|
97
102
|
<path class="be k-call s-same" d="M214,112 C243,112 243,188 272,188" marker-end="url(#ar-call-same)"><title>mcp → extract</title></path>
|
|
98
103
|
<path class="be k-call s-same" d="M214,112 C246,112 246,99 278,99 L478,99 C507,99 507,112 536,112" marker-end="url(#ar-call-same)"><title>mcp → activity</title></path>
|
|
104
|
+
<path class="be k-call s-same" d="M214,112 C243,112 243,488 272,488" marker-end="url(#ar-call-same)"><title>mcp → agents</title></path>
|
|
99
105
|
<path class="be k-call s-same" d="M214,112 C243,112 243,52 272,52" marker-end="url(#ar-call-same)"><title>mcp → compare</title></path>
|
|
100
106
|
<path class="be k-call s-same" d="M214,112 C243,112 243,128 272,128" marker-end="url(#ar-call-same)"><title>mcp → config</title></path>
|
|
101
107
|
<path class="be k-call s-same" d="M214,112 C243,112 243,308 272,308" marker-end="url(#ar-call-same)"><title>mcp → graph</title></path>
|
|
102
|
-
<path class="be k-call s-same" d="M214,112 C243,112 243,
|
|
108
|
+
<path class="be k-call s-same" d="M214,112 C243,112 243,788 272,788" marker-end="url(#ar-call-same)"><title>mcp → learn</title></path>
|
|
103
109
|
<path class="be k-call s-same" d="M214,112 C246,112 246,99 278,99 L478,99 C507,99 507,52 536,52" marker-end="url(#ar-call-same)"><title>mcp → sources</title></path>
|
|
104
|
-
<path class="be k-call s-same" d="M214,112 C243,112 243,
|
|
105
|
-
<path class="be k-call s-same" d="M214,368 C243,368 243,
|
|
110
|
+
<path class="be k-call s-same" d="M214,112 C243,112 243,848 272,848" marker-end="url(#ar-call-same)"><title>mcp → textmap</title></path>
|
|
111
|
+
<path class="be k-call s-same" d="M214,368 C243,368 243,788 272,788" marker-end="url(#ar-call-same)"><title>panel → learn</title></path>
|
|
106
112
|
<path class="be k-call s-same" d="M214,368 C246,368 246,219 278,219 L478,219 C507,219 507,112 536,112" marker-end="url(#ar-call-same)"><title>panel → activity</title></path>
|
|
107
113
|
<path class="be k-call s-same" d="M214,368 C243,368 243,428 272,428" marker-end="url(#ar-call-same)"><title>panel → architecture</title></path>
|
|
108
114
|
<path class="be k-call s-same" d="M214,368 C243,368 243,52 272,52" marker-end="url(#ar-call-same)"><title>panel → compare</title></path>
|
|
@@ -110,26 +116,26 @@ text { font-family: 'Segoe UI', FreeSans, 'Helvetica Neue', Arial, sans-serif; }
|
|
|
110
116
|
<path class="be k-call s-same" d="M214,368 C243,368 243,188 272,188" marker-end="url(#ar-call-same)"><title>panel → extract</title></path>
|
|
111
117
|
<path class="be k-call s-same" d="M214,368 C243,368 243,308 272,308" marker-end="url(#ar-call-same)"><title>panel → graph</title></path>
|
|
112
118
|
<path class="be k-call s-same" d="M214,368 C246,368 246,219 278,219 L478,219 C507,219 507,52 536,52" marker-end="url(#ar-call-same)"><title>panel → sources</title></path>
|
|
113
|
-
<path class="be k-call s-same" d="M214,368 C243,368 243,
|
|
114
|
-
<path class="be k-call s-same" d="M214,368 C243,368 243,
|
|
119
|
+
<path class="be k-call s-same" d="M214,368 C243,368 243,488 272,488" marker-end="url(#ar-call-same)"><title>panel → agents</title></path>
|
|
120
|
+
<path class="be k-call s-same" d="M214,368 C243,368 243,608 272,608" marker-end="url(#ar-call-same)"><title>panel → canvas</title></path>
|
|
115
121
|
<path class="be k-call s-same" d="M214,428 C246,428 246,279 278,279 L478,279 C507,279 507,112 536,112" marker-end="url(#ar-call-same)"><title>statusline → activity</title></path>
|
|
116
122
|
<path class="be k-call s-same" d="M214,428 C243,428 243,128 272,128" marker-end="url(#ar-call-same)"><title>statusline → config</title></path>
|
|
117
123
|
<path class="be k-call s-same" d="M214,428 C243,428 243,188 272,188" marker-end="url(#ar-call-same)"><title>statusline → extract</title></path>
|
|
118
124
|
<path class="be k-call s-same" d="M214,428 C246,428 246,219 278,219 L478,219 C507,219 507,52 536,52" marker-end="url(#ar-call-same)"><title>statusline → sources</title></path>
|
|
119
|
-
<path class="be k-call s-same" d="M214,428 C243,428 243,
|
|
125
|
+
<path class="be k-call s-same" d="M214,428 C243,428 243,848 272,848" marker-end="url(#ar-call-same)"><title>statusline → textmap</title></path>
|
|
120
126
|
<path class="be k-call s-same" d="M214,308 C246,308 246,219 278,219 L478,219 C507,219 507,112 536,112" marker-end="url(#ar-call-same)"><title>tui → activity</title></path>
|
|
121
|
-
<path class="be k-call s-same" d="M214,308 C243,308 243,
|
|
127
|
+
<path class="be k-call s-same" d="M214,308 C243,308 243,908 272,908" marker-end="url(#ar-call-same)"><title>tui → companion</title></path>
|
|
122
128
|
<path class="be k-call s-same" d="M214,308 C243,308 243,308 272,308" marker-end="url(#ar-call-same)"><title>tui → graph</title></path>
|
|
123
|
-
<path class="be k-call s-same" d="M214,308 C243,308 243,
|
|
129
|
+
<path class="be k-call s-same" d="M214,308 C243,308 243,788 272,788" marker-end="url(#ar-call-same)"><title>tui → learn</title></path>
|
|
124
130
|
<path class="be k-call s-same" d="M214,308 C246,308 246,159 278,159 L478,159 C507,159 507,52 536,52" marker-end="url(#ar-call-same)"><title>tui → sources</title></path>
|
|
125
|
-
<path class="be k-call s-same" d="M214,308 C243,308 243,
|
|
131
|
+
<path class="be k-call s-same" d="M214,308 C243,308 243,848 272,848" marker-end="url(#ar-call-same)"><title>tui → textmap</title></path>
|
|
126
132
|
<path class="be k-call s-same" d="M214,308 C250,308 250,248 220,248" marker-end="url(#ar-call-same)"><title>tui → watch</title></path>
|
|
127
133
|
<path class="be k-call s-same" d="M214,248 C246,248 246,159 278,159 L478,159 C507,159 507,112 536,112" marker-end="url(#ar-call-same)"><title>watch → activity</title></path>
|
|
128
134
|
<path class="be k-call s-same" d="M214,248 C243,248 243,52 272,52" marker-end="url(#ar-call-same)"><title>watch → compare</title></path>
|
|
129
135
|
<path class="be k-call s-same" d="M214,248 C243,248 243,248 272,248" marker-end="url(#ar-call-same)"><title>watch → diff</title></path>
|
|
130
136
|
<path class="be k-call s-same" d="M214,248 C243,248 243,188 272,188" marker-end="url(#ar-call-same)"><title>watch → extract</title></path>
|
|
131
137
|
<path class="be k-call s-same" d="M214,248 C243,248 243,308 272,308" marker-end="url(#ar-call-same)"><title>watch → graph</title></path>
|
|
132
|
-
<path class="be k-call s-same" d="M214,248 C243,248 243,
|
|
138
|
+
<path class="be k-call s-same" d="M214,248 C243,248 243,788 272,788" marker-end="url(#ar-call-same)"><title>watch → learn</title></path>
|
|
133
139
|
<path class="be k-call s-same" d="M214,248 C246,248 246,159 278,159 L478,159 C507,159 507,52 536,52" marker-end="url(#ar-call-same)"><title>watch → sources</title></path>
|
|
134
140
|
<g class="bn t-component s-same" transform="translate(14,30)"><rect class="box" width="200" height="46" rx="8"/><text x="12" y="19" class="bn-t">Command line</text><text x="12" y="35" class="bn-s">3 files</text><title>Command line</title></g>
|
|
135
141
|
<g class="bn t-component s-same" transform="translate(14,90)"><rect class="box" width="200" height="46" rx="8"/><text x="12" y="19" class="bn-t">MCP server</text><text x="12" y="35" class="bn-s">1 file</text><title>MCP server</title></g>
|
|
@@ -145,16 +151,17 @@ text { font-family: 'Segoe UI', FreeSans, 'Helvetica Neue', Arial, sans-serif; }
|
|
|
145
151
|
<g class="bn t-component s-same" transform="translate(278,286)"><rect class="box" width="200" height="46" rx="8"/><text x="12" y="19" class="bn-t">Map layout</text><text x="12" y="35" class="bn-s">1 file</text><title>Map layout</title></g>
|
|
146
152
|
<g class="bn t-component s-same" transform="translate(278,346)"><rect class="box" width="200" height="46" rx="8"/><text x="12" y="19" class="bn-t">SVG pictures</text><text x="12" y="35" class="bn-s">used across the code</text><title>SVG pictures</title></g>
|
|
147
153
|
<g class="bn t-component s-same" transform="translate(278,406)"><rect class="box" width="200" height="46" rx="8"/><text x="12" y="19" class="bn-t">System diagram</text><text x="12" y="35" class="bn-s">2 files</text><title>System diagram</title></g>
|
|
148
|
-
<g class="bn t-component s-same" transform="translate(278,466)"><rect class="box" width="200" height="46" rx="8"/><text x="12" y="19" class="bn-t">
|
|
149
|
-
<g class="bn t-component s-same" transform="translate(278,526)"><rect class="box" width="200" height="46" rx="8"/><text x="12" y="19" class="bn-t">
|
|
150
|
-
<g class="bn t-component s-same" transform="translate(278,586)"><rect class="box" width="200" height="46" rx="8"/><text x="12" y="19" class="bn-t">
|
|
151
|
-
<g class="bn t-component s-same" transform="translate(278,646)"><rect class="box" width="200" height="46" rx="8"/><text x="12" y="19" class="bn-t">
|
|
152
|
-
<g class="bn t-component s-same" transform="translate(278,706)"><rect class="box" width="200" height="46" rx="8"/><text x="12" y="19" class="bn-t">
|
|
153
|
-
<g class="bn t-component s-same" transform="translate(278,766)"><rect class="box" width="200" height="46" rx="8"/><text x="12" y="19" class="bn-t">
|
|
154
|
-
<g class="bn t-component s-same" transform="translate(278,826)"><rect class="box" width="200" height="46" rx="8"/><text x="12" y="19" class="bn-t">
|
|
155
|
-
<g class="bn t-component s-same" transform="translate(278,886)"><rect class="box" width="200" height="46" rx="8"/><text x="12" y="19" class="bn-t">
|
|
154
|
+
<g class="bn t-component s-same" transform="translate(278,466)"><rect class="box" width="200" height="46" rx="8"/><text x="12" y="19" class="bn-t">Agent team</text><text x="12" y="35" class="bn-s">1 file</text><title>Agent team</title></g>
|
|
155
|
+
<g class="bn t-component s-same" transform="translate(278,526)"><rect class="box" width="200" height="46" rx="8"/><text x="12" y="19" class="bn-t">Design notes</text><text x="12" y="35" class="bn-s">1 file</text><title>Design notes</title></g>
|
|
156
|
+
<g class="bn t-component s-same" transform="translate(278,586)"><rect class="box" width="200" height="46" rx="8"/><text x="12" y="19" class="bn-t">Pane pictures</text><text x="12" y="35" class="bn-s">1 file</text><title>Pane pictures</title></g>
|
|
157
|
+
<g class="bn t-component s-same" transform="translate(278,646)"><rect class="box" width="200" height="46" rx="8"/><text x="12" y="19" class="bn-t">README section</text><text x="12" y="35" class="bn-s">1 file</text><title>README section</title></g>
|
|
158
|
+
<g class="bn t-component s-same" transform="translate(278,706)"><rect class="box" width="200" height="46" rx="8"/><text x="12" y="19" class="bn-t">LLM summary</text><text x="12" y="35" class="bn-s">1 file</text><title>LLM summary</title></g>
|
|
159
|
+
<g class="bn t-component s-same" transform="translate(278,766)"><rect class="box" width="200" height="46" rx="8"/><text x="12" y="19" class="bn-t">Lessons and topics</text><text x="12" y="35" class="bn-s">3 files</text><title>Lessons and topics</title></g>
|
|
160
|
+
<g class="bn t-component s-same" transform="translate(278,826)"><rect class="box" width="200" height="46" rx="8"/><text x="12" y="19" class="bn-t">Terminal pictures</text><text x="12" y="35" class="bn-s">1 file</text><title>Terminal pictures</title></g>
|
|
161
|
+
<g class="bn t-component s-same" transform="translate(278,886)"><rect class="box" width="200" height="46" rx="8"/><text x="12" y="19" class="bn-t">Panes beside the agent</text><text x="12" y="35" class="bn-s">1 file</text><title>Panes beside the agent</title></g>
|
|
162
|
+
<g class="bn t-component s-same" transform="translate(278,946)"><rect class="box" width="200" height="46" rx="8"/><text x="12" y="19" class="bn-t">PNG rendering</text><text x="12" y="35" class="bn-s">1 file</text><title>PNG rendering</title></g>
|
|
156
163
|
<g class="bn t-component s-same" transform="translate(542,30)"><rect class="box" width="200" height="46" rx="8"/><text x="12" y="19" class="bn-t">Git and folder sources</text><text x="12" y="35" class="bn-s">1 file</text><title>Git and folder sources</title></g>
|
|
157
164
|
<g class="bn t-component s-same" transform="translate(542,90)"><rect class="box" width="200" height="46" rx="8"/><text x="12" y="19" class="bn-t">Agent activity</text><text x="12" y="35" class="bn-s">1 file</text><title>Agent activity</title></g>
|
|
158
|
-
<path class="be k-call" d="M16,
|
|
159
|
-
<text x="42" y="
|
|
165
|
+
<path class="be k-call" d="M16,1032 L36,1032" style="opacity:1"/>
|
|
166
|
+
<text x="42" y="1036" class="lg">calls</text>
|
|
160
167
|
</svg>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "system-diff",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"description": "A pane beside the chat: what Claude is working on in your system, zoomed in, what just happened and why it matters, and a topic to learn (system-diff)",
|
|
5
5
|
"types": "./types/index.d.ts",
|
|
6
6
|
"author": {
|
|
@@ -12,7 +12,7 @@ import type { Page, PageBlock, Row, Run } from '../types'
|
|
|
12
12
|
// the rest keeps its colours: yellow what changed, green what is new, red what went, gray the background.
|
|
13
13
|
|
|
14
14
|
type Props = { page: Page; canGoBack: boolean }
|
|
15
|
-
type State = { sel: string; sx: number; mine: boolean; ticking?: boolean }
|
|
15
|
+
type State = { sel: string; sx: number; mine: boolean; ticking?: boolean; free?: boolean } // free: scrolled by hand
|
|
16
16
|
|
|
17
17
|
const COLORS: Record<string, string> = {
|
|
18
18
|
accent: 'blue', focus: 'blue', near: 'blue', data: 'blue',
|
|
@@ -88,7 +88,7 @@ const PageView: ClientModule<JsonValue, State> = (raw, surface) => {
|
|
|
88
88
|
const state = surface.state
|
|
89
89
|
const sel = state?.mine && byId.has(state.sel) ? state.sel : byId.has(page.pick) ? page.pick : (page.blocks[0]?.id ?? '')
|
|
90
90
|
const picked = byId.get(sel)
|
|
91
|
-
const sx = across(page, cols, state?.mine ? state.sx : 0, picked)
|
|
91
|
+
const sx = across(page, cols, state?.mine ? state.sx : 0, state?.free ? undefined : picked)
|
|
92
92
|
|
|
93
93
|
// The pane was laid out for another width (the split moved): ask for this one once it holds, not for every
|
|
94
94
|
// width a drag passes on its way.
|
|
@@ -104,7 +104,8 @@ const PageView: ClientModule<JsonValue, State> = (raw, surface) => {
|
|
|
104
104
|
surface.post({ width: askedWidth })
|
|
105
105
|
}
|
|
106
106
|
})
|
|
107
|
-
surface.setState({ sel: state?.sel ?? '', sx: state?.sx ?? 0, mine: state?.mine ?? false, ticking: true
|
|
107
|
+
surface.setState({ sel: state?.sel ?? '', sx: state?.sx ?? 0, mine: state?.mine ?? false, ticking: true,
|
|
108
|
+
free: state?.free })
|
|
108
109
|
}
|
|
109
110
|
|
|
110
111
|
const pick = (b: PageBlock | undefined, x = sx) => {
|
|
@@ -127,8 +128,10 @@ const PageView: ClientModule<JsonValue, State> = (raw, surface) => {
|
|
|
127
128
|
} else if (['up', 'down', 'left', 'right'].includes(e.key)) {
|
|
128
129
|
pick(move(page.blocks, picked, e.key))
|
|
129
130
|
} else if (e.key === '[' || e.key === ']') {
|
|
130
|
-
surface.setState({ sel, sx: across(page, cols, sx + (e.key === '[' ? -STEP : STEP), undefined), mine: true,
|
|
131
|
+
surface.setState({ sel, sx: across(page, cols, sx + (e.key === '[' ? -STEP : STEP), undefined), mine: true, free: true,
|
|
131
132
|
ticking: true })
|
|
133
|
+
} else if (e.key === '-' || e.key === '=' || e.key === '+') {
|
|
134
|
+
surface.post({ zoomBy: e.key === '-' ? 1 : -1 }) // - shows more of the system, = bigger boxes
|
|
132
135
|
} else if (e.key === 'return') {
|
|
133
136
|
act(picked, 'enter')
|
|
134
137
|
} else if (e.key === ' ') {
|
|
@@ -137,8 +140,8 @@ const PageView: ClientModule<JsonValue, State> = (raw, surface) => {
|
|
|
137
140
|
surface.post({ back: true })
|
|
138
141
|
} else if (e.key === 'f') {
|
|
139
142
|
surface.post({ follow: true })
|
|
140
|
-
} else if (['n', 'm', 'c', 't'].includes(e.key)) {
|
|
141
|
-
surface.post({ view: { n: 'now', m: 'map', c: 'changes', t: 'topics' }[e.key] ?? 'now' })
|
|
143
|
+
} else if (['n', 'm', 'a', 'c', 't'].includes(e.key)) {
|
|
144
|
+
surface.post({ view: { n: 'now', m: 'map', a: 'agents', c: 'changes', t: 'topics' }[e.key] ?? 'now' })
|
|
142
145
|
}
|
|
143
146
|
})
|
|
144
147
|
// The detail of the picked block, in the slot under its picture.
|