Commit Graph

2036 Commits

Author SHA1 Message Date
Jarrod Whelan
211a5b2314 feat(ui): compact tool output implmentation
1. Scaffolding and Foundation Changes

- feat(cli): add compactToolOutput ui setting
- feat(cli): add DenseToolMessage component and supporting rendering logic
- feat(cli): implement compact tool output rendering logic in ToolGroupMessage
- feat(core): add tool display name constants and update tool constructors
- feat(cli): update compact output allowlist to use DISPLAY_NAME constants
- test(cli): add compact tool output rendering and spacing tests

2. Output Layout, Borders and Spacing

- fix(ui): update ToolGroupMessage to support stitched borders and dynamic margins
- fix(ui): implement border stitching in history pushing to eliminate gaps
- test(ui): update snapshots and test assertions for new layout
- style(ui): wrap dense tool payloads with vertical margins
    - Adds margins above and below dense payload content to allow compact output to consume a single line until expanded.
- fix(ui): unify spacing logic and border handling for tool groups
    - Corrects transitions between compact and standard tools to not add redundant empty lines and ensures history stitching respects boundaries.
- fix(ui): ensure top border is rendered within completed history for standard tool output when following compact tool output
    - Addresses an issue where non-compact tools pushed to history at the end of a batch (via onComplete) were missing their top border and proper margin if they followed compact tools already pushed to history.
    - The fix updates the onComplete callback in useGeminiStream.ts to be transition-aware. It now explicitly detects when a final push starts with a non-compact tool following a compact tool from the same batch, forcing borderTop: true in that case.
    - Previously, the logic relied solely on isFirstToolInGroupRef, which would be false if any earlier tools in the batch had already been pushed, causing the final non-compact tools to incorrectly inherit a borderless state from the preceding compact tools.

3. Tool Content Fixes/Changes

fix(core): use full file content for accurate diff stats in edit tool

 - Ensures the edit tool uses fully calculated new file content (instead of just the replacement snippet) when generating diff stats. This prevents the bug where 'mass deletion' were inaccurately reports in the UI.
 - The fix calculates the 'AI-recommended' full file state when user modifications are present. This allows getDiffStat to receive three full-file strings, maintaining accurate telemetry for AI vs. user contributions while fixing the visual bug.

feat(ui): structured compact payloads for list and grep tool output

 - leverages structured object return types (ReadManyFilesResult, ListDirectoryResult, GrepResult) to enable rich, expandable compact output in the CLI.
 - Updates the underlying core tools (read_many_files, ls, grep) to return these objects and wires up the UI in DenseToolMessage to parse and render them as expandable lists.

4. fix(cli,core): resolve build issues with structured tool result display

- Added `isStructuredToolResult` type guard to safely check for `summary` properties on tool results in `ToolResultDisplay`.
- Resolved `data.slice is not a function` errors in UI tests caused by structured tool results falling back to `AnsiOutput` parsing.
- Updated `DiffRenderer` assertions to include `disableColor: false`.
- Updated `ReadManyFilesTool` tests to assert against the new `ReadManyFilesResult` object structure instead of flat strings.
- wrap waitUntilReady in `act` to resolve spinner warnings

5. fix(cli): strengthen identity management and resolve key collisions / key duplication issues

- Improve history ID generation logic to be strictly increasing, preventing "Transition Race" collisions between pending and finalized items.
- Strengthen ID tracking to correctly handle session resumes by ensuring new IDs always start after the highest existing entry.
- Assign unique negative IDs and negatively indexed keys (`pending-${i}`) to pending history items in `MainContent`.
- Add a global `callIdCounter` to `acpClient` to safeguard against sub-millisecond tool call collisions.
- Harden `DenseToolMessage` rendering with stable string keys for conditional UI components.
- Update unit tests to verify strictly increasing ID generation and align with negatively indexed pending IDs.

6. consolidate Ctrl+O expansion toggle logic between shell tool and compact tool output; resolve rendering issues

Interaction:
- Unify SHOW_MORE_LINES (Ctrl+O) handler in AppContainer to atomically toggle height constraints and compact tool expansions.
- Update DenseToolMessage toggle text to "[click here to show/hide details]" for improved clarity.

Rendering:
- Adjust ToolGroupMessage and HistoryItemDisplay layout logic to correctly manage margins and spacing, especially after thinking blocks.
- Fix "Double Empty Line" issue by removing redundant top margins from the first tool in a group.
- Fix ToolStickyHeaderRegression test expectations to correctly account for 3-line headers.
- Update snapshots across multiple components to reflect layout and text refinements.
- Update generated docs and setting artifacts

Structural:
- Shifts large logic blocks within AppContainer.tsx to resolve functional dependencies related to keyboard handlers, user feedback events, and window titles.
- Hoist tool expansion state to AppContainer for centralized control and synchronized layout updates.
- Refactor ToolActionsContext.test.tsx to use real React state for verified behavior.
2026-03-18 02:50:46 -07:00
Abhi
be7c7bb83d fix(cli): resolve subagent grouping and UI state persistence (#22252) 2026-03-18 03:11:20 +00:00
AK
7bfe6ac418 feat(core): subagent local execution and tool isolation (#22718) 2026-03-18 02:34:44 +00:00
anj-s
b8719bcd47 feat: add 'blocked' status to tasks and todos (#22735) 2026-03-17 23:24:26 +00:00
Alisa
7ae39fd622 feat(a2a): add agent acknowledgment command and enhance registry discovery (#22389) 2026-03-17 22:47:05 +00:00
anj-s
d4397dbfc5 feat(tracker): integrate task tracker protocol into core system prompt (#22442) 2026-03-17 22:19:36 +00:00
Spencer
5fb0d1f01d fix(core): add actionable warnings for terminal fallbacks (#14426) (#22211) 2026-03-17 21:57:37 +00:00
kevinjwang1
27a50191e3 Add support for dynamic model Resolution to ModelConfigService (#22578) 2026-03-17 21:15:50 +00:00
AK
2504105a1c feat(core): multi-registry architecture and tool filtering for subagents (#22712) 2026-03-17 20:54:07 +00:00
David Pierce
2f90b46537 Linux sandbox seccomp (#22815)
Co-authored-by: Gal Zahavi <38544478+galz10@users.noreply.github.com>
2026-03-17 20:29:13 +00:00
Sandy Tao
82d8680dcc refactor(core): align JIT memory placement with tiered context model (#22766) 2026-03-17 20:20:32 +00:00
Sehoon Shon
fc51e50bc6 fix(core): handle surrogate pairs in truncateString (#22754) 2026-03-17 05:41:19 +00:00
AK
695bcaea0d feat(core): add foundation for subagent tool isolation (#22708) 2026-03-17 03:54:33 +00:00
Adib234
61fd71dc29 fix(plan): allowlist get_internal_docs in Plan Mode (#22668) 2026-03-17 00:34:30 +00:00
Sandy Tao
30271d64eb feat(config): enable JIT context loading by default (#22736) 2026-03-16 22:12:28 +00:00
Adam Weidman
605432ea70 refactor(core): replace positional execute params with ExecuteOptions bag (#22674) 2026-03-16 21:50:24 +00:00
Aishanee Shah
990d010ecf feat(core): implement Stage 2 security and consistency improvements for web_fetch (#22217) 2026-03-16 21:38:53 +00:00
Bryan Morgan
b6c6da3618 feat(core): increase thought signature retry resilience (#22202)
Co-authored-by: Aishanee Shah <aishaneeshah@google.com>
2026-03-16 21:35:33 +00:00
David Pierce
8f22ffd2b1 Linux sandbox bubblewrap (#22680) 2026-03-16 21:34:48 +00:00
Adam Weidman
44ce90d76c refactor(core): introduce InjectionService with source-aware injection and backend-native background completions (#22544) 2026-03-16 21:06:29 +00:00
Sandy Tao
b91f75cd6d fix(core): fix three JIT context bugs in read_file, read_many_files, and memoryDiscovery (#22679) 2026-03-16 20:10:50 +00:00
anj-s
bba9c07541 feat(tracker): polish UI sorting and formatting (#22437) 2026-03-16 19:18:01 +00:00
Emily Hedlund
05fda0cf01 feat(extensions): implement cryptographic integrity verification for extension updates (#21772) 2026-03-16 19:01:52 +00:00
Abhi
d43ec6c8f3 feat: enable subagents (#22386) 2026-03-16 18:40:12 +00:00
Michael Bleigh
cd2096ca80 refactor(core): Creates AgentSession abstraction for consolidated agent interface. (#22270) 2026-03-16 17:59:02 +00:00
Sehoon Shon
48130ebd25 Guard pro model usage (#22665) 2026-03-16 17:44:25 +00:00
Christian Gunderman
ef5627eece Disallow Object.create() and reflect. (#22408) 2026-03-16 16:24:27 +00:00
anj-s
fad032d466 perf: optimize TrackerService dependency checks (#22384) 2026-03-16 13:40:58 +00:00
cynthialong0-0
366aa84395 feat(agent): replace the runtime npx for browser agent chrome devtool mcp with pre-built bundle (#22213)
Co-authored-by: Gaurav Ghosh <gaghosh@google.com>
Co-authored-by: Gaurav <39389231+gsquared94@users.noreply.github.com>
2026-03-16 08:05:38 +00:00
Abhi
abd9e23337 fix(core): skip discovery for incomplete MCP configs and resolve merge race condition (#22494) 2026-03-15 18:28:26 +00:00
Abhi
6061d8cac7 fix(core): merge user settings with extension-provided MCP servers (#22484) 2026-03-15 02:46:06 +00:00
N. Taylor Mullen
bd590bbde6 fix(cli): improve command conflict handling for skills (#21942) 2026-03-14 23:33:14 +00:00
kevinjwang1
0bf7ea60c5 Add ModelDefinitions to ModelConfigService (#22302) 2026-03-14 21:45:21 +00:00
Abhi
c5502b2dc5 fix(core): fix manual deletion of subagent histories (#22407) 2026-03-14 20:09:43 +00:00
Abhijit Balaji
9f7691fd88 feat(prompts): implement Topic-Action-Summary model for verbosity reduction (#21503) 2026-03-14 05:10:30 +00:00
Sandy Tao
3682842a5d fix(core): deduplicate project memory when JIT context is enabled (#22234) 2026-03-14 04:34:53 +00:00
Christian Gunderman
64c50d32ac Fix issue where config was undefined. (#22397) 2026-03-14 01:36:25 +00:00
anj-s
604d4ded8d fix(core): use session-specific temp directory for task tracker (#22382) 2026-03-13 23:35:26 +00:00
Gal Zahavi
f75bdba568 fix(mcp): handle equivalent root resource URLs in OAuth validation (#20231) 2026-03-13 23:32:40 +00:00
Sehoon Shon
8d68ece8d6 Revert "fix(cli): validate --model argument at startup" (#22378) 2026-03-13 23:17:29 +00:00
Gal Zahavi
b49fc8122d feat(security): add disableAlwaysAllow setting to disable auto-approvals (#21941) 2026-03-13 23:02:09 +00:00
anj-s
b0d151bd65 feat(tracker): add tracker policy (#22379) 2026-03-13 22:19:04 +00:00
Gal Zahavi
fa024133e6 feat(core): integrate SandboxManager to sandbox all process-spawning tools (#22231) 2026-03-13 21:11:51 +00:00
christine betts
24adacdbc2 Move keychain fallback to keychain service (#22332) 2026-03-13 20:57:08 +00:00
cynthialong0-0
bfbd3c40a7 feat(agent): add allowed domain restrictions for browser agent (#21775) 2026-03-13 19:41:40 +00:00
anj-s
dd8d4c98b3 feat(tracker): return TodoList display for tracker tools (#22060) 2026-03-13 18:18:33 +00:00
Gaurav
d368997ca3 test: add Object.create context regression test and tool confirmation integration test (#22356) 2026-03-13 17:49:33 +00:00
Alexander Farber
aa000d7d30 fix(core): show descriptive error messages when saving settings fails (#18095)
Co-authored-by: Dev Randalpura <devrandalpura@google.com>
2026-03-13 16:19:56 +00:00
Sandy Tao
7b4a822b0e feat(core): instrument file system tools for JIT context discovery (#22082) 2026-03-13 03:44:42 +00:00
Bryan Morgan
d44615ac2f feat(core): increase sub-agent turn and time limits (#22196) 2026-03-13 02:39:49 +00:00