From fb7eb3105e1fbbdefdad9348f9132815b5bbe52d Mon Sep 17 00:00:00 2001 From: Adam Malczewski Date: Thu, 20 Aug 2026 19:36:12 +0900 Subject: feat(named-agents): sidebar view, synthetic provider, auto-save, snapshot semantics MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Implement the frontend of the Named Agents feature (plan §5-§9): - New features/named-agents module: pure logic (types re-exported from @dispatch/wire + transport-contract, validation, provider/model options, snapshot helpers, network normalizers, auto-save status model) + an injected auto-save controller (name debounce, immediate provider/model save, monotonic stale-response guard) + the collapsible sidebar card view. - Store: /named-agents CRUD + boot seed; selectModel(model, snapshot?) persists the raw model WITH the namedAgent snapshot; draft promotion carries it; refreshModel restores ModelResponse.namedAgent. - Chat store setNamedAgent (sends namedAgent on chat.send); Tab.snapshot + setSnapshot (retained across rename/remove, persisted with tabs). - Model selector: synthetic Named Agents provider ALWAYS first; selecting one resolves to the raw model + records a snapshot; a retained snapshot of a renamed/removed agent still displays as unavailable (plan §7). - Composition root wires the view (viewKinds + loaded-modules manifest) + feeds the selector. Tests: logic + controller + selector + app-store CRUD (1246 pass), typecheck 0, biome clean (only pre-existing config infos pending a future migrate), build OK. --- AGENTS.md | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'AGENTS.md') diff --git a/AGENTS.md b/AGENTS.md index 8636b61..b29811e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -145,6 +145,16 @@ reasoning-effort selector (Model view, under the provider/model dropdowns; stick `GET`/`PUT /reasoning-effort`, `null` ⇒ "high (default)"). Plan in `../backend/notes/frontend-design.md` §10. +NAMED AGENTS DONE + committed (feature/named-agents): a collapsible **Named Agents** sidebar view +(cards with name/provider/model controls, auto-save statuses incl. debounced name edits + the +monotonic stale-response guard, Remove/Add/empty state), the synthetic **Named Agents** provider as +the ALWAYS-FIRST option in the regular model selector (selecting one resolves it to its raw model and +records a `NamedAgentSelectionSnapshot` on the conversation — plan §7), full CRUD over +`GET/POST/PUT/DELETE /named-agents`, and snapshot semantics retained on tabs (survive rename/remove + +persist to localStorage). Backend contract (this worktree) carries `NamedAgent`/`NamedAgentSelectionSnapshot` +(`@dispatch/wire`) + `/named-agents` types and `ChatRequest.namedAgent`/`ModelResponse.namedAgent`/ +`SetModelRequest.namedAgent` (`@dispatch/transport-contract`); see `backend-handoff.md`. + ## Reports Optionally record a finished milestone in `reports/.md` (gitignored): what you built, the public surface, verification output, and any contract gaps / backend-contract CRs. -- cgit v1.2.3