docs(plans): agent transcript redesign — tool groups, state chips, slash picker, kimi M4 wire-tail#363
Merged
physercoe merged 3 commits intoJul 23, 2026
Conversation
added 2 commits
July 22, 2026 22:41
…ash picker, kimi M4 wire-tail Comprehensive redesign plan for the agent transcript on both clients, evidenced by live probing of kimi-code 0.28.1 (ACP session + wire.jsonl + kimi web API) and a code map of both termipod clients. Phases: P1 tool-group cards + plan fold-in-place + desktop streaming parity, P2 state-chip row with Todos (n/m), P3 engine-neutral slash picker from the ACP available_commands catalog, P4 kimi wire.jsonl tail adapter as kimi's M4 mode. Reference designs: kimi-web (MIT), Cline, Zed, Goose. Mobile turn navigation and mode/plan/goal composer toggles explicitly deferred per director decision.
…k-model state, source-verified corrections Amendments after reading the kimi-web source (MIT): - P0 (new): embed kimi web as a session web panel in the desktop app — reuse the Read surface's hardened <webview> stack, spawn/attach 'kimi web' locally, SSH forwardOut wedge for remote hosts. Caveats recorded: SPA has no per-session deep link; parallel UI, not an integration. - State chips corrected from 'lens filters' to the ChatDock model: ambient chips toggle a detail panel; lens/funnel untouched; mobile gets a dedicated todo tab/sheet. - Tool groups: expanded by default, never auto-collapse (kimi-web behavior), aggregate state running > error > done; threshold >=2. - Todos render inside the dock panel with shared status glyphs; foreground subagents inline, background-only chips. - §7 questions re-scoped (P0 scope, web-panel registry, expansion default, P4 guard, mobile todo surface).
…b mechanics, Insight-mode rename Maintainer review amendments before merge: - §7 open questions closed as decisions: P0 accepted local-first (remote SSH-forward as follow-up PR), kimi-scoped web panel with registry-shaped internals, kimi-web group-expansion behavior as written, M1-enrichment out of P4, mobile todos as bottom sheet first. - P1: the hub message_id stamp alone cannot deliver fold-in-place — collapseStreamingPartials folds only text|thought (feed_reducer.dart kind allowlist); clients must add 'plan' to the allowlist. Also the plan arm needs stampTurnID (posts tagIfReplay-only today). - P0: webtab.ts will-attach-webview rejects any partition other than persist:webtab and its policy allows any http(s) origin — P0's real main-process work is a partition allowlist with per-partition policy; kimiweb partition non-persistent (bearer token rides the URL hash). - P3: busy-parity anchor — synthesized slash-command state must stay on the _isAgentBusy skip path. - P4: gate on wire metadata protocol version; tolerate partial trailing lines. - P5: 'Inspect surface' renamed to transcript Insight mode — not a new surface, and not J3 Inspect (name taken by the checkpoint inspector). - Path fix: AgentTranscript.tsx lives in desktop/src/surfaces/. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
physercoe
approved these changes
Jul 23, 2026
physercoe
pushed a commit
that referenced
this pull request
Jul 23, 2026
…t radius, rollout order, decisions Maintainer review amendments before merge: - §6 open questions closed as decisions: in_review as a new status; send-back to in_progress when the assignee session is alive, else todo; DnD always opens the agent picker; resizable split with automatic tri-pane at >=1600px; W5 review-feedback lands in THIS plan (transcript plan's P5 rollup stays a cross-link). - §1/§4/W2: the derivation was flattened — agent terminated splits on result_summary (with summary -> done, without -> cancelled, v1.0.619 abandoned-task rule), and blocked/cancelled are never overwritten (v1.0.628). W2 now flips only terminated+summary to in_review; abandoned tasks stay cancelled and never enter the review queue. - W2: 'migration for the new enum value' removed — task status has no CHECK constraint; the real hub surface is named instead: deriveTaskStatusFromAgent, proposePermittedTaskStatuses (send-back needs the propose vocabulary extended), digest_store.go:303 assignee query (must include in_review), handlers_agents.go:1351 spawn gate (in_review must allow spawns = new attempt / send-back). - W2: rollout order added — clients learn in_review (plus an unknown-status fallback bucket, issue #61 bug class) BEFORE the hub flips derivation. - W3: desktop AgentSpawn has no task_id plumbing today; the reuse adds the prop. - W4: progress bar labeled as the phase-weighted /v1/insights metric, not a task count. TL;DR: #363 is merged (c97c522), not in flight. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
physercoe
pushed a commit
to agentfleets/termipod
that referenced
this pull request
Jul 23, 2026
…d transport, envelope re-seal, host-key trust, decisions Maintainer review amendments before merge: - Teleport reordered pause-first per ADR-014's single-appender invariant: terminate-after-verify cut the engine-state bundle while the source engine could still append (silent turn loss) and put two engines on one logical store during the verify window. Pause is now step 2; every later failure falls back to resume-on-source — the existing resumePausedSession path. - Transport section added: /v1/blobs caps at 25 MiB and buffers uploads in memory, so single-blob tars (256 MB workdir cap, large engine stores) are impossible — teleport rides a chunked bundle manifest (<=25 MiB parts + manifest blob + whole-tar hash). - E3 x Part 2 interaction stated: env_secret_envelope is sealed to the source host's key; the initiating client re-resolves and re-seals to the target host during teleport; headless teleport of secret-bearing sessions is impossible by design. - E3 host-key enrollment gains ADR-052 D-4's explicit trust step (fingerprint short-code confirm, pinned thereafter, re-key = re-trust) — without it a hub could substitute keys and open every envelope. - env_profile_rev dropped: the entity has no revision machinery; snapshot = materialize resolved env_vars + setup_script into the spawn spec, env_profile_id kept for provenance. - Open questions closed as decisions; companion links updated (physercoe#363 c97c522, physercoe#364 c797538; branch merged with main so both resolve). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
A comprehensive redesign plan for the agent transcript on both clients:
docs/plans/agent-transcript-redesign.md. Docs-only PR — no code changes.Why
Three felt problems, all verified in code and by live probing:
FoldableToolCall, desktop<details>), so scanning a work session means expanding card after card.plan/todo updates render as a new snapshot card per update; usage/mode state is scattered; cron/background has no representation.Evidence gathered (all live, 2026-07-23, kimi-code 0.28.1)
kimi --yolo acpover JSON-RPC):planupdates,available_commands_update, andrequest_permission(fires even under--yolo) all cross the wire; usage/subagent/background do not.~/.kimi-code/sessions/.../wire.jsonl, protocol v1.4):usage.record(per-turn tokens + cache split),tools.update_store(todo state), tool calls with kimidisplayhints, per-subagent wire files,workspaces.jsoncwd→wd mapping (no hash reverse-engineering needed).apps/kimi-web(the reference transcript UI:ToolGroup.vue,TodoCard.vue, filter chips…),apps/vis,apps/kimi-inspect,apps/vscode(baseline.manager.ts),packages/protocol(canonical v2 schema),packages/transcript,packages/acp-adapter.Bash (32) · Sub Agent (3) · Todos (3/5)), composer Mode toggles.collapseStreamingPartials; always-hidestool_call_updateand demotesthought).The plan
message_id) + desktop streaming parity.available_commandscatalog (mobile's strip already consumessession.init.slash_commands; desktop gets a newComposer.tsxpicker; static kimi snippet profile as fallback).wire.jsonlper the OSSpackages/protocolschema — structured usage/todo/tool/subagent events instead of raw pane text.Reference designs tabulated with licenses: kimi-web (MIT), Cline, Zed (design-only), Goose, codex/gemini TUI. Visual-design stance: keep termipod's dark Linear/Radix tokens — borrow patterns, not palette.
Verification
scripts/lint-docs.sh✓ (287 docs pass, incl. this one)scripts/lint-doc-anchors.sh✓Open questions for the maintainer are in §7 (grouping threshold/default expansion, chips vs lens coexistence, P4 scope guard, Todos popover placement, mobile funnel swap).