Repository navigation
v0.1.0
First release. Two panes in one conversation tab: move context between conversations, and manage
the conversations of a workspace.
Added
- 整理 pane — relocate context. Pick messages out of the conversation you are in and carry them
into another conversation: an existing one, or a brand-new one in any workspace. The selection is
rendered as oneuser/message(source.kind='plugin',plugin='baize-session') rather than
replayed as events, because the session store requires a seed to be contiguous from seq 0 and an
arbitrary selection is not a valid prefix. The block ends with当前工作区是 <path>。请在此基础上继续。
so the receiving model knows the quoted history came from other directories. +on every assistant reply (conversation.chat.assistant-actions) to collect material without
leaving the chat flow. The basket is keyed per conversation.- Two destinations: a new conversation (created with the content as its seed — a seed because dsh
persists on checkpoints, so anappendinto a fresh session never reaches disk), or an append into
a conversation that is open. - 工作区 pane — workspace management. Lists every conversation of the current workspace, archived
ones included, withAll / Active / Archivedfilters and counts.- Archive and restore any conversation. Restore is implemented against the registry's
durable state (dsh shipsarchiveSessionbut no inverse). - Delete for real: agent teardown, live-store detach (so every client drops the row), removal
from the workspace ledger and the archive set, then the artifact directory. Gated twice — only an
archived conversation can be deleted, and the request must carryconfirm: true. - Move to another workspace: rewrites the artifact's header
cwd(keepingversion) through a
temp file and atomic renames, then swaps the ledger, then updates the in-memory pointers (live
write state, session header, registry indexes) — with the original bytes restored if any step
fails. Works for conversations that are still open, including ones with an agent attached.
Refused for archived conversations and subagent children. - Multi-select with a batch bar for the same four actions, reported per id so one refusal does
not abort the rest.
- Archive and restore any conversation. Restore is implemented against the registry's
- Conversation kind and state as two independent columns: kind
空对话 / 已对话 / 子代理(has a
conversation started?) and state进行中 / 已打开 / 未打开 / 已归档(where does it live now?). They are
separate because an empty conversation can be in progress — an agent is attached from creation,
before the first prompt. - Author badges on message rows:
user/assistant/context/tool, coloured from the
official Trajectory view's kind tags.contextis separated fromuserbecause dsh logs human
prompts and harness injections under the sameuser/messageevent type (a sampled session was
{user: 4, plugin: 10}). /baize-sessioncommand —info | take <seq…> | list | drop | to <path> | add <id>, driving the
same runtimes as the panel./baize-session.apion the host web server:GETfor both panes,POSTopstake,untake,
drop,estimate,relocate,archive,restore,deleteSession,moveSession.- Token budget (
maxInjectTokens, default 8000): a selection above the budget is refused with the
measured size instead of being silently truncated.
Notes
- The plugin keeps no state of its own: the basket is in-memory, and everything it touches
(session artifacts, the workspace registry) belongs to dsh. - The browser half is hand-authored (
lib/client.js) because the officialclientBundletsdown preset
is not published; it is covered bytest/client.smoke.mjs, which renders the real bundle and asserts
both panes' behaviour.