Built so a program edits the same way you do.
The architecture is finished and the surface is not. This page separates the two: what is true today is a property of shipped code, and everything marked planned has no implementation behind it.
- Actions in the set today
- 6
- Senders wired
- 2 of 3
- Undo histories
- 1
- Endpoints an agent can call today
- 0
The reducer is already the API.
There is one dispatcher and every edit goes through it. Dragging a box, typing a number in the inspector, applying markup in the code pane and placing a preset are four gestures that produce the same small set of actions — because the alternative, a canvas that mutates the tree directly, is what makes a code pane impossible to write in.
That decision was made for the two-mode editor, and it happens to be the entire precondition for a programmatic surface. An agent does not need a parallel write path; it needs the one that already exists.
- One action set for people and for programs.
- One undo history, so a machine edit reverts like a human one.
- One serialiser, so what an agent writes is what the code pane shows.
| Action | Payload | What it does |
|---|---|---|
move | { id, x, y } | Place a node at a coordinate |
resize | { id, box } | Set width and height, per breakpoint layer |
setText | { id, text } | Replace a text node |
addClass | { id, name } | Append to an element class list |
insert | { parent, node, at } | Add a node at an index |
setCss | { css } | Replace the project stylesheet |
A second write path into the document
- A second vocabulary, kept in step with the editor's by hand.
- A second history, or machine edits that land outside undo.
- A second serialiser, so the code pane and the API can disagree.
- Every new editor feature has to be implemented twice.
The path the canvas already uses
- One action set, for people and for programs.
- One undo history, so a machine edit reverts like a human one.
- One serialiser, so what an agent writes is what the pane shows.
- A new editor feature is an action, and the agent has it too.
What is planned, stated as planned.
Three pieces. None of them exists yet; each is described so the shape can be argued with before it is written.
01 Agent access Planned
A scoped, workspace-keyed way to dispatch into a project's document from outside the browser. The intended shape is the action set above, unchanged — not a convenience layer on top of it, because a second vocabulary is a second thing to keep in step with the editor.
Tenancy is the part that is already settled: every durable object
hangs off workspace_id, and row-level security is
enabled on every table, so an access token is scoped by the same
rules a browser session is.
02 An MCP server Planned
The workspace exposed as tools to an external client: list projects, read a page, place a section, assign a class, apply a stylesheet, open a preview. The tool list is deliberately close to the panel list — an agent that can do more than the UI is an agent whose output nobody can inspect.
This depends on document persistence, which is itself unbuilt. An MCP server against an in-memory document that dies with a browser tab would be a demo, not a feature.
03 Review and undo Planned
An agent edit should arrive as an ordinary history entry — visible on
the canvas, revertible with ⌘Z, attributable in the
revision table that migration 0005 already defines. The failure mode
to avoid is a machine edit that lands outside the undo stack, where
the only way back is a backup.
Publishing stays a separate, explicit act for the same reason blocks are copied rather than live-bound: nothing automated should be able to change what a client's visitors see without somebody saying so.
| Tool | The panel it corresponds to | Access |
|---|---|---|
list_projects | The projects screen | Read |
read_page | Opening a page in the designer | Read |
place_section | The Add panel | Write |
set_classes | The inspector class field | Write |
apply_stylesheet | The Theme panel | Write |
open_preview | The Preview button | Read |
Argue with the shape before it is built.
The architecture is finished and the surface is not. If the tool list above is wrong, now is the cheap time to say so.