From 2210e2e37b0e46fc8243ec628d7ca64e42c99621 Mon Sep 17 00:00:00 2001 From: Taylor Ho Date: Sun, 3 May 2026 15:54:16 -0700 Subject: [PATCH 01/26] feat(chat): order-driven tool-chain grouping with deterministic summary MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reimplements the tool-chain grouping work from PR #8772 + #8773 entirely on the client, using existing tool-call order in the assistant message as the sole grouping signal. Drops the server-side `_goose/tool-chain-id` / `_goose/tool-chain-summary` ACP metadata and the per-session chain bookkeeping that lived in `crates/goose/src/acp/server.rs` on the foundation branch — the wire is unchanged from main, and live/replay produce identical groupings by construction. - Add `ui/goose2/src/features/chat/lib/toolChainGrouping.ts` with pure helpers `getToolItemName`, `getToolItemStatus`, `getChainAggregateStatus`, and `shouldRenderAsGroupedChain`. Aggregate status follows the error → stopped → executing → pending → completed priority so collapsed parents never mask a failed step behind a still-pending sibling (PR #8773 P2 fix). - Add `ui/goose2/src/features/chat/lib/toolChainSummary.ts` — TypeScript port of the foundation Rust `summarize_tool_chain` / `classify_tool_chain_step` (reviewing files / running commands / updating files / checking resources). Returns i18n keys, not pre-translated strings. - Update `ui/goose2/src/features/chat/ui/ToolChainCards.tsx` to render a parent chain card around 2+ adjacent tool items with a deterministic, localized title; single-item sections still render inline. The header switches to "working through N steps" while any step is still in flight and to "