brainExplorerSelection.test.tsxfeat(agents): four namespaces, a default file, and an agent doc that opens as the agent
An agent's folder now reads as four namespaces — playbook, config/, memory/ and
everything else as output — by CLASSIFICATION rather than migration, so not one
document row moves. The thing that actually writes these paths is prompt text, some
of it stored in seeded agent bodies, and `overview` is addressed by exact-path
equality while `archives/` is matched by a metadata-stamping regex; re-pointing the
helpers would have been a silent-failure change. This generalises the split the
coaching agent already ships.
`default_file` frontmatter says which file the Files tab opens. Relative to the
agent's folder so it survives duplicate and publish, resolved once on the server so
no client re-derives the default, absent meaning `overview` so nothing changes on
deploy. Set from the agent's menu, a file row, `agent.create` or the CLI. The
frontmatter patcher learned to REMOVE a key, which is what makes "back to the
default" expressible at all.
A document whose type is `agent` renders as the agent. Five surfaces rendered one as
prose and only one mounted the structured header, so the raw YAML showed with no
header at all on the rest — and the hider was looking for a horizontal-rule run when
the server emits a `frontmatter` sentinel code block. Both are fixed: the render is
keyed on documentType, and the settings are a collapsed form above the editor
carrying every key, with unknown ones kept in their own block rather than dropped.
Brain documents share one measure and one left edge: the reading column drops to
80ch with no horizontal padding, its back gutter is resized to match, and a stale
`ml-4` on the playbook crumb is gone.
Co-Authored-By: Claude Opus 5 (1M context) <<email>>Sep 2, 2026, 11:51 PMcreateNodePopoverBoard.test.tsxfeat(files): search the whole document base, and one picker for every create
The /brain file search only ever filtered the nodes the client had already
pulled down, so a document three folders deep was invisible to a search for
its own title until you had found it by hand first. It now runs both halves:
the local filter for instant feedback, and files.searchNodes over every row in
the org and user scopes, merged local-first and deduped.
The create flow was a six-tab strip inside a popover, above a name field, and
a header + that asked which ROOT before it asked what to make. Both are now
one OptionPicker of "New …" rows with the row's own actions under them — Delete
last, destructive-coloured, under a hairline — advancing to the type's short
form with a Back button. The root became a Location field beside the name,
which is the only place it was still ambiguous.
Also: a Type column in the shared kit (the word plus the row's own type glyph,
which the tile hides behind the emoji whenever a document has one), and the
Brain / Files breadcrumb back on the row with the Tree/Graph tabs.
Co-Authored-By: Claude Opus 5 (1M context) <<email>>Sep 1, 2026, 9:52 PM