Skip to content

fix(agent-manager): stabilize concurrent subagent rendering#11433

Open
marius-kilocode wants to merge 4 commits into
mainfrom
candy-mouth
Open

fix(agent-manager): stabilize concurrent subagent rendering#11433
marius-kilocode wants to merge 4 commits into
mainfrom
candy-mouth

Conversation

@marius-kilocode

Copy link
Copy Markdown
Collaborator

Agent Manager can become a completely gray editor while several subagents stream or while a subagent-heavy transcript is scrolled. The extension host and editor shell remain alive, but the webview renderer has terminated. This is different from an ordinary Solid rendering exception or a blank application state.

Crashpad dumps produced by repeated reproductions consistently report a renderer SIGIOT/SIGTRAP at the same Electron instruction offset. Embedded assertion and source strings point to Blink accessibility inline-text traversal around AXBlockFlowData::ComputeNeighborOnLine and the invariant that a physical box fragment still owns inline items. The webview console remains empty because the failure occurs below JavaScript inside Chromium.

The failing layout combines several independently valid behaviors:

  • Virtua mounts and removes transcript rows as they enter and leave the viewport.
  • Concurrent child sessions rapidly update tool rows from pending to running to completed.
  • Compact tool metadata inserts separator glyphs with CSS generated content, which Blink exposes as generated accessibility text.
  • Nested content-visibility: auto can discard physical layout fragments independently from Virtua.
  • A full-transcript role="log" aria-live="polite" asks the accessibility subsystem to continuously process every changing text fragment.

Together these create a narrow state where accessibility traversal can observe generated inline text or a subagent tool row while its Solid owner or physical fragment is being replaced. Local main reproduces reliably. Independently stabilizing row identity or keeping layout fragments available interrupted the failure, so this change applies both protections with Agent Manager-specific scope.

The durable behavior is:

  • Child tool parts are reconciled by tool ID, and expanded task rows use Solid Index, preserving proxy and DOM identity across streaming status updates.
  • Agent Manager replaces the full transcript live log with a small, stable Working/Done status region and marks the transcript busy during active work. Sidebar chat retains its existing live-log behavior.
  • Virtua remains the transcript virtualizer, while nested message, tool, file, code, and diff nodes stay layout-visible so Blink does not independently discard their physical fragments.
  • CSS-generated separator text is suppressed only in Agent Manager tool rows. The compact sidebar presentation remains unchanged.

The change intentionally avoids renderer watchdogs, automatic reloads, recovery UI, arbitrary child-history limits, and broad shared-UI changes. It prevents the invalid accessibility/layout state instead of attempting to recover after Chromium has already terminated the renderer.

Comment thread packages/kilo-vscode/tests/unit/task-tool-identity.test.ts Outdated
@kilo-code-bot

kilo-code-bot Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

Code Review Summary

Status: 1 Issue Found | Recommendation: Address before merge

Overview

Severity Count
CRITICAL 0
WARNING 1
SUGGESTION 0

Fix these issues in Kilo Cloud

Issue Details (click to expand)

WARNING

File Line Issue
packages/kilo-vscode/tests/unit/task-tool-identity.test.ts 44 The revised regression test still renders a hand-written Index instead of TaskToolExpanded, so it would keep passing if that component regressed from <Index> back to <For> and started replacing child rows again.
Other Observations (not in diff)

No additional out-of-diff issues noted. The earlier source-string brittleness concern appears resolved in this revision.

Files Reviewed (3 files)
  • bun.lock - 0 issues
  • packages/kilo-vscode/package.json - 0 issues
  • packages/kilo-vscode/tests/unit/task-tool-identity.test.ts - 1 issue
Previous Review Summaries (3 snapshots, latest commit 9d2c896)

Current summary above is authoritative. Previous snapshots are kept for context only.

Previous review (commit 9d2c896)

Status: 1 Issue Found | Recommendation: Address before merge

Overview

Severity Count
CRITICAL 0
WARNING 1
SUGGESTION 0

Fix these issues in Kilo Cloud

Issue Details (click to expand)

WARNING

File Line Issue
packages/kilo-vscode/tests/unit/task-tool-identity.test.ts 34 The updated test now checks store-proxy identity only, so it would still pass if TaskToolExpanded regressed and started replacing rendered child rows again.
Other Observations (not in diff)

No additional out-of-diff issues noted. The prior source-string brittleness concern on this test appears resolved in the current revision.

Files Reviewed (1 file)
  • packages/kilo-vscode/tests/unit/task-tool-identity.test.ts - 1 issue

Previous review (commit 8e62225)

Status: No Issues Found | Recommendation: Merge

Files Reviewed (8 files)
  • .changeset/stabilize-agent-manager-transcripts.md
  • packages/kilo-vscode/tests/accessibility.spec.ts
  • packages/kilo-vscode/tests/unit/task-tool-identity.test.ts
  • packages/kilo-vscode/webview-ui/agent-manager/agent-manager.css
  • packages/kilo-vscode/webview-ui/src/components/chat/ChatView.tsx
  • packages/kilo-vscode/webview-ui/src/components/chat/MessageList.tsx
  • packages/kilo-vscode/webview-ui/src/components/chat/TaskToolExpanded.tsx
  • packages/kilo-vscode/webview-ui/src/context/session.tsx

Previous review (commit 867beac)

Status: 1 Issue Found | Recommendation: Address before merge

Overview

Severity Count
CRITICAL 0
WARNING 0
SUGGESTION 1

Fix these issues in Kilo Cloud

Issue Details (click to expand)

SUGGESTION

File Line Issue
packages/kilo-vscode/tests/unit/task-tool-identity.test.ts 13 Source-string assertions make the regression test brittle and over-couple it to the current implementation.
Other Observations (not in diff)

No additional out-of-diff issues noted.

Files Reviewed (8 files)
  • .changeset/stabilize-agent-manager-transcripts.md - 0 issues
  • packages/kilo-vscode/tests/accessibility.spec.ts - 0 issues
  • packages/kilo-vscode/tests/unit/task-tool-identity.test.ts - 1 issue
  • packages/kilo-vscode/webview-ui/agent-manager/agent-manager.css - 0 issues
  • packages/kilo-vscode/webview-ui/src/components/chat/ChatView.tsx - 0 issues
  • packages/kilo-vscode/webview-ui/src/components/chat/MessageList.tsx - 0 issues
  • packages/kilo-vscode/webview-ui/src/components/chat/TaskToolExpanded.tsx - 0 issues
  • packages/kilo-vscode/webview-ui/src/context/session.tsx - 0 issues

Reviewed by gpt-5.4-20260305 · 276,602 tokens

Review guidance: REVIEW.md from base branch main

Comment thread packages/kilo-vscode/tests/unit/task-tool-identity.test.ts Outdated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant