Skip to content

fix(acp): stream subagent text + reasoning chunks - #1626

Merged
pomelo-nwu merged 2 commits into
mainfrom
fix/acp-subagent-stream-text
Jan 29, 2026
Merged

pomelo-nwu merged 2 commits into
mainfrom
fix/acp-subagent-stream-text

Conversation

@tanzhenxin

@tanzhenxin tanzhenxin commented Jan 27, 2026 •

Copy link
Copy Markdown
Collaborator

TLDR

  • Unblocks missing subagent streaming in ACP mode: forward subagent STREAM_TEXT events into ACP session updates so clients see incremental text while the subagent runs.
  • Streams both output and reasoning: propagate a thought/reasoning flag so ACP can render streamed chunks as either agent_message_chunk (output) or agent_thought_chunk (reasoning).

Dive Deeper

When a subagent executes, the model may emit partial text while tools are running or between tool calls. ACP previously didn’t expose these subagent text chunks, so ACP output looked “silent” compared to the Qwen Code UI.

This change makes subagent streaming first-class in ACP:

  • Core (packages/core): each streamed response part emits SubAgentEventType.STREAM_TEXT with text and an optional thought flag (reasoning vs output).
  • CLI ACP integration (packages/cli): SubAgentTracker listens for STREAM_TEXT and forwards it via the session message emitter, mapping:
    • thought: true → agent_thought_chunk
    • thought: false/undefined → agent_message_chunk

Reviewer Test Plan

  • cd packages/cli && npx vitest run src/acp-integration/session/SubAgentTracker.test.ts
  • cd packages/core && npx vitest run src/subagents/subagent.test.ts

Linked issues / bugs

Propagate `thought` metadata through SubAgent STREAM_TEXT events and render them as agent message/thought chunks in ACP sessions.
@github-actions

Copy link
Copy Markdown
Contributor

📋 Review Summary

This PR introduces support for streaming subagent text chunks with optional thought metadata in ACP sessions. The changes propagate a thought boolean flag through the SubAgentStreamTextEvent and render text as either agent_message_chunk or agent_thought_chunk based on this flag. The implementation includes proper test coverage for the new functionality.

🔍 General Feedback

  • The implementation follows a consistent pattern with existing event handling in the SubAgentTracker
  • Good test coverage added for both message and thought chunk scenarios
  • The addition of the optional thought property maintains backward compatibility
  • Clear separation of concerns between core subagent functionality and ACP integration

🎯 Specific Feedback

🟡 High

  • File: packages/core/src/subagents/subagent.ts:415-423 - The casting (p as Part & { text?: string }).text could potentially be simplified. Consider checking if the Part type from @google/genai already includes a text property or if a more specific type assertion would be safer to prevent runtime errors.

🟢 Medium

  • File: packages/core/src/subagents/subagent-events.ts:59-63 - Consider adding JSDoc documentation for the new thought property to clarify when it should be set to true/false and what implications it has for consumers of this event.
  • File: packages/cli/src/acp-integration/session/SubAgentTracker.ts:293-296 - The comment mentions "reasoning/thinking content" but consider clarifying in the documentation what constitutes a thought vs regular output to guide future developers.

🔵 Low

  • File: packages/cli/src/acp-integration/session/SubAgentTracker.test.ts:105-115 - The helper function createStreamTextEvent is well-implemented and follows the same pattern as other helper functions in the file, which improves test readability and maintainability.
  • File: packages/cli/src/acp-integration/session/SubAgentTracker.ts:295 - Using event.thought ?? false is a good defensive approach to handle undefined values correctly.

✅ Highlights

  • Comprehensive test suite added covering various scenarios including normal text chunks, thought chunks, multiple chunks, and aborted scenarios
  • Proper cleanup of event listeners when the tracker is torn down
  • Good use of AbortSignal to prevent emissions when the operation is cancelled
  • Backward compatibility maintained by making the thought property optional with a sensible default

@tanzhenxin tanzhenxin changed the title fix(acp): stream subagent text chunks (with thoughts) fix(acp): stream subagent text + reasoning chunks Jan 27, 2026
@github-actions

github-actions Bot commented Jan 27, 2026 •

Copy link
Copy Markdown
Contributor

Code Coverage Summary

Package Lines Statements Functions Branches
CLI 64.61% 64.61% 71.46% 80.91%
Core 76.06% 76.06% 79.37% 82.77%
CLI Package - Full Text Report
-------------------|---------|----------|---------|---------|-------------------
File               | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
-------------------|---------|----------|---------|---------|-------------------
All files          |   64.61 |    80.91 |   71.46 |   64.61 |                   
 src               |   75.53 |    67.37 |      70 |   75.53 |                   
  gemini.tsx       |   63.23 |    62.96 |      75 |   63.23 | ...68,473-481,489 
  ...ractiveCli.ts |   80.11 |     67.1 |   42.85 |   80.11 | ...83-384,404,452 
  ...liCommands.ts |   83.18 |     67.5 |     100 |   83.18 | ...07,242,244,367 
  ...ActiveAuth.ts |   93.84 |    82.35 |     100 |   93.84 | 24-27             
 ...cp-integration |   45.78 |       75 |   23.07 |   45.78 |                   
  acp.ts           |   11.22 |      100 |   27.27 |   11.22 | ...93-398,401-408 
  acpAgent.ts      |    3.18 |        0 |       0 |    3.18 | 36-55,58-405      
  errorCodes.ts    |     100 |      100 |     100 |     100 |                   
  schema.ts        |     100 |      100 |     100 |     100 |                   
 ...ration/service |   75.47 |    66.66 |      50 |   75.47 |                   
  filesystem.ts    |   75.47 |    66.66 |      50 |   75.47 | 39,54,58-67,69-70 
 ...ration/session |   46.76 |     62.4 |   66.66 |   46.76 |                   
  ...ryReplayer.ts |   73.43 |    81.25 |   88.88 |   73.43 | ...57-186,199-200 
  Session.ts       |   33.05 |    44.23 |      50 |   33.05 | ...1037,1058-1126 
  ...entTracker.ts |   82.27 |    74.35 |      90 |   82.27 | ...49-356,359-360 
  index.ts         |       0 |        0 |       0 |       0 | 1-40              
  types.ts         |       0 |        0 |       0 |       0 | 1                 
 ...ssion/emitters |   96.98 |    94.84 |   91.66 |   96.98 |                   
  BaseEmitter.ts   |   84.61 |      100 |      75 |   84.61 | 35-36             
  ...ageEmitter.ts |     100 |      100 |     100 |     100 |                   
  PlanEmitter.ts   |     100 |      100 |     100 |     100 |                   
  ...allEmitter.ts |   98.88 |    92.98 |     100 |   98.88 | 295,303           
  index.ts         |       0 |        0 |       0 |       0 | 1-10              
 src/commands      |   95.65 |      100 |      50 |   95.65 |                   
  extensions.tsx   |   96.55 |      100 |      50 |   96.55 | 37                
  mcp.ts           |   94.11 |      100 |      50 |   94.11 | 26                
 ...nds/extensions |   86.54 |    94.01 |   81.81 |   86.54 |                   
  consent.ts       |   73.56 |    92.59 |   42.85 |   73.56 | 22-30,84-140      
  disable.ts       |     100 |      100 |     100 |     100 |                   
  enable.ts        |     100 |      100 |     100 |     100 |                   
  install.ts       |   81.55 |    83.33 |   66.66 |   81.55 | ...16-119,122-129 
  link.ts          |     100 |      100 |     100 |     100 |                   
  list.ts          |     100 |      100 |     100 |     100 |                   
  new.ts           |     100 |      100 |     100 |     100 |                   
  settings.ts      |   99.15 |      100 |   83.33 |   99.15 | 150               
  uninstall.ts     |   36.36 |      100 |   33.33 |   36.36 | 22-44,56-63,66-69 
  update.ts        |   96.24 |      100 |     100 |   96.24 | 98-102            
  utils.ts         |   67.14 |       40 |     100 |   67.14 | ...68,70-74,76-80 
 ...les/mcp-server |       0 |        0 |       0 |       0 |                   
  example.ts       |       0 |        0 |       0 |       0 | 1-60              
 src/commands/mcp  |   97.19 |     86.2 |    90.9 |   97.19 |                   
  add.ts           |     100 |    96.15 |     100 |     100 | 210               
  list.ts          |   91.15 |    80.76 |      80 |   91.15 | ...18-120,145-146 
  remove.ts        |     100 |    66.66 |     100 |     100 | 19-23             
 src/config        |   90.61 |    81.59 |    82.6 |   90.61 |                   
  auth.ts          |   86.92 |    78.84 |     100 |   86.92 | ...98-199,215-216 
  config.ts        |   90.18 |    85.89 |      70 |   90.18 | ...90,847,906-923 
  keyBindings.ts   |     100 |      100 |     100 |     100 |                   
  ...idersScope.ts |      92 |       90 |     100 |      92 | 11-12             
  sandboxConfig.ts |   54.16 |    23.07 |   66.66 |   54.16 | ...44,54-68,73-89 
  settings.ts      |   83.49 |       80 |   80.76 |   83.49 | ...97-919,922-945 
  ...ingsSchema.ts |     100 |      100 |     100 |     100 |                   
  ...tedFolders.ts |   96.87 |       94 |     100 |   96.87 | ...87-188,203-204 
  webSearch.ts     |    40.9 |    11.11 |     100 |    40.9 | ...95-102,105-121 
 src/core          |   18.66 |      100 |       0 |   18.66 |                   
  auth.ts          |    9.52 |      100 |       0 |    9.52 | 21-48             
  initializer.ts   |   17.07 |      100 |       0 |   17.07 | 34-78             
  theme.ts         |   38.46 |      100 |       0 |   38.46 | 17-24             
 src/generated     |     100 |      100 |     100 |     100 |                   
  git-commit.ts    |     100 |      100 |     100 |     100 |                   
 src/i18n          |   28.36 |    77.77 |   18.75 |   28.36 |                   
  index.ts         |   19.33 |    77.77 |      20 |   19.33 | ...36-237,247-258 
  languages.ts     |   88.88 |      100 |       0 |   88.88 | 46-48             
 src/i18n/locales  |       0 |        0 |       0 |       0 |                   
  de.js            |       0 |        0 |       0 |       0 | 1-1363            
  en.js            |       0 |        0 |       0 |       0 | 1-1356            
  ru.js            |       0 |        0 |       0 |       0 | 1-1368            
  zh.js            |       0 |        0 |       0 |       0 | 1-1192            
 ...nonInteractive |   63.42 |     65.6 |   68.88 |   63.42 |                   
  session.ts       |   66.87 |    63.24 |   81.81 |   66.87 | ...43-644,658-668 
  types.ts         |    42.5 |      100 |   33.33 |    42.5 | ...63-564,567-568 
 ...active/control |   75.65 |    87.03 |   78.94 |   75.65 |                   
  ...rolContext.ts |    7.69 |        0 |       0 |    7.69 | 47-79             
  ...Dispatcher.ts |   89.32 |    90.38 |   88.23 |   89.32 | ...50-370,385,388 
  ...rolService.ts |       8 |        0 |       0 |       8 | 46-179            
 ...ol/controllers |    6.59 |       80 |   13.79 |    6.59 |                   
  ...Controller.ts |   16.66 |      100 |      60 |   16.66 | 77-114,123-210    
  ...Controller.ts |       0 |        0 |       0 |       0 | 1-56              
  ...Controller.ts |    3.92 |      100 |   11.11 |    3.92 | ...63-381,391-498 
  ...Controller.ts |   13.23 |      100 |       0 |   13.23 | ...82-121,134-137 
  ...Controller.ts |    4.95 |      100 |       0 |    4.95 | ...94-406,415-442 
 .../control/types |       0 |        0 |       0 |       0 |                   
  serviceAPIs.ts   |       0 |        0 |       0 |       0 | 1                 
 ...Interactive/io |   96.41 |    91.34 |   95.94 |   96.41 |                   
  ...putAdapter.ts |    96.3 |     90.5 |     100 |    96.3 | ...1246,1271-1272 
  ...putAdapter.ts |   95.45 |      100 |   85.71 |   95.45 | 51-52             
  ...nputReader.ts |     100 |    94.73 |     100 |     100 | 67                
  ...putAdapter.ts |   96.15 |     92.3 |    87.5 |   96.15 | ...81,107-108,289 
 src/patches       |       0 |        0 |       0 |       0 |                   
  is-in-ci.ts      |       0 |        0 |       0 |       0 | 1-17              
 src/services      |   87.75 |       85 |   95.83 |   87.75 |                   
  ...mandLoader.ts |     100 |    77.77 |     100 |     100 | 82                
  ...andService.ts |     100 |      100 |     100 |     100 |                   
  ...mandLoader.ts |   87.44 |    81.48 |     100 |   87.44 | ...16-321,326-331 
  ...omptLoader.ts |    75.1 |    80.64 |   83.33 |    75.1 | ...03-204,270-271 
  ...nd-factory.ts |   91.01 |    93.33 |     100 |   91.01 | 116-123           
  ...ation-tool.ts |     100 |    95.45 |     100 |     100 | 125               
  ...and-parser.ts |   89.47 |    85.71 |     100 |   89.47 | 54-57             
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...mpt-processors |   97.25 |    92.59 |     100 |   97.25 |                   
  ...tProcessor.ts |     100 |      100 |     100 |     100 |                   
  ...eProcessor.ts |   94.44 |    84.21 |     100 |   94.44 | 43-44,90-91       
  ...tionParser.ts |     100 |      100 |     100 |     100 |                   
  ...lProcessor.ts |   97.38 |    93.02 |     100 |   97.38 | 96-99             
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/test-utils    |   93.46 |    83.33 |      80 |   93.46 |                   
  ...omMatchers.ts |   69.69 |       50 |      50 |   69.69 | 32-35,37-39,45-47 
  ...andContext.ts |     100 |      100 |     100 |     100 |                   
  render.tsx       |     100 |      100 |     100 |     100 |                   
 src/ui            |   66.51 |    74.35 |   55.26 |   66.51 |                   
  App.tsx          |     100 |      100 |     100 |     100 |                   
  AppContainer.tsx |    71.4 |    64.86 |      50 |    71.4 | ...1168,1182-1243 
  ...tionNudge.tsx |    9.58 |      100 |       0 |    9.58 | 24-94             
  ...ackDialog.tsx |   29.23 |      100 |       0 |   29.23 | 25-75             
  ...tionNudge.tsx |    7.69 |      100 |       0 |    7.69 | 25-103            
  colors.ts        |   63.63 |      100 |   41.17 |   63.63 | ...52,54-55,60-61 
  constants.ts     |     100 |      100 |     100 |     100 |                   
  keyMatchers.ts   |   95.65 |    95.65 |     100 |   95.65 | 25-26             
  ...tic-colors.ts |     100 |      100 |     100 |     100 |                   
  textConstants.ts |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/ui/auth       |   29.13 |    72.72 |   42.85 |   29.13 |                   
  AuthDialog.tsx   |   86.66 |    76.19 |      60 |   86.66 | ...01-102,147-153 
  ...nProgress.tsx |       0 |        0 |       0 |       0 | 1-64              
  useAuth.ts       |    3.21 |      100 |       0 |    3.21 | 30-324            
 src/ui/commands   |   66.99 |    80.74 |      52 |   66.99 |                   
  aboutCommand.ts  |     100 |      100 |     100 |     100 |                   
  agentsCommand.ts |    64.7 |      100 |       0 |    64.7 | ...30,35-36,39-41 
  ...odeCommand.ts |     100 |      100 |     100 |     100 |                   
  authCommand.ts   |     100 |      100 |     100 |     100 |                   
  bugCommand.ts    |   76.47 |    66.66 |      50 |   76.47 | 21-22,57-66       
  clearCommand.ts  |   88.23 |    66.66 |      50 |   88.23 | 16-17,41-42       
  ...essCommand.ts |   64.13 |    57.89 |      50 |   64.13 | ...34-138,153-156 
  copyCommand.ts   |   96.22 |      100 |      50 |   96.22 | 15-16             
  ...ryCommand.tsx |   67.53 |    73.07 |      50 |   67.53 | ...75-176,184-192 
  docsCommand.ts   |   95.23 |       80 |      50 |   95.23 | 20-21             
  editorCommand.ts |     100 |      100 |     100 |     100 |                   
  ...onsCommand.ts |   75.45 |    82.89 |   47.82 |   75.45 | ...51-652,661-662 
  helpCommand.ts   |     100 |      100 |     100 |     100 |                   
  ideCommand.ts    |   56.79 |    57.69 |   35.29 |   56.79 | ...00-301,304-318 
  initCommand.ts   |    81.7 |       70 |      50 |    81.7 | ...67,81-86,88-93 
  ...ageCommand.ts |    89.7 |    84.61 |   76.92 |    89.7 | ...11-312,334-335 
  mcpCommand.ts    |   37.54 |    80.95 |   22.22 |   37.54 | ...12-352,358-361 
  memoryCommand.ts |   70.47 |    77.14 |   33.33 |   70.47 | ...84,291-292,310 
  modelCommand.ts  |     100 |      100 |     100 |     100 |                   
  ...onsCommand.ts |     100 |      100 |     100 |     100 |                   
  quitCommand.ts   |   93.75 |      100 |      50 |   93.75 | 15-16             
  ...oreCommand.ts |      92 |    87.09 |     100 |      92 | ...,82-87,128-129 
  resumeCommand.ts |     100 |      100 |     100 |     100 |                   
  ...ngsCommand.ts |     100 |      100 |     100 |     100 |                   
  ...hubCommand.ts |    82.8 |    66.66 |      75 |    82.8 | ...57-160,163-166 
  skillsCommand.ts |    10.9 |      100 |       0 |    10.9 | ...86-102,105-132 
  statsCommand.ts  |   76.92 |       75 |      50 |   76.92 | ...36,50-51,65-66 
  ...aryCommand.ts |    4.74 |      100 |       0 |    4.74 | 21-24,27-314      
  ...tupCommand.ts |     100 |      100 |     100 |     100 |                   
  themeCommand.ts  |     100 |      100 |     100 |     100 |                   
  toolsCommand.ts  |   95.12 |      100 |      50 |   95.12 | 18-19             
  types.ts         |     100 |      100 |     100 |     100 |                   
  vimCommand.ts    |   42.85 |      100 |       0 |   42.85 | 14-15,18-28       
 src/ui/components |   70.43 |       77 |   67.47 |   70.43 |                   
  AboutBox.tsx     |     100 |      100 |     100 |     100 |                   
  AnsiOutput.tsx   |     100 |      100 |     100 |     100 |                   
  AppHeader.tsx    |     100 |       50 |     100 |     100 | 26,38             
  ...odeDialog.tsx |     9.7 |      100 |       0 |     9.7 | 35-47,50-182      
  AsciiArt.ts      |     100 |      100 |     100 |     100 |                   
  ...Indicator.tsx |   15.38 |      100 |       0 |   15.38 | 18-53             
  Composer.tsx     |   96.07 |    69.23 |     100 |   96.07 | 40,46,118,127     
  ...itDisplay.tsx |   55.81 |      100 |      50 |   55.81 | 22-38,42-43       
  ...entPrompt.tsx |     100 |      100 |     100 |     100 |                   
  ...ryDisplay.tsx |   21.05 |      100 |       0 |   21.05 | 17-35             
  ...ryDisplay.tsx |   75.89 |    62.06 |     100 |   75.89 | ...,88,93-108,113 
  ...geDisplay.tsx |    90.9 |       75 |     100 |    90.9 | 21-22             
  ...gProfiler.tsx |       0 |        0 |       0 |       0 | 1-36              
  ...esDisplay.tsx |   10.34 |      100 |       0 |   10.34 | 24-83             
  ...ogManager.tsx |   12.23 |      100 |       0 |   12.23 | 48-334            
  ...ngsDialog.tsx |    7.84 |      100 |       0 |    7.84 | 32-190            
  ExitWarning.tsx  |     100 |      100 |     100 |     100 |                   
  ...ustDialog.tsx |     100 |      100 |     100 |     100 |                   
  Footer.tsx       |   75.89 |    31.57 |     100 |   75.89 | ...,86-90,106-110 
  ...ngSpinner.tsx |   54.28 |       50 |      50 |   54.28 | 31-48,61          
  Header.tsx       |    82.3 |       60 |   66.66 |    82.3 | ...19,121,126-129 
  Help.tsx         |   98.69 |    73.33 |     100 |   98.69 | 74,129            
  ...emDisplay.tsx |   79.38 |    48.14 |     100 |   79.38 | ...67-171,174,177 
  ...ngeDialog.tsx |     100 |      100 |     100 |     100 |                   
  InputPrompt.tsx  |    88.1 |    82.46 |     100 |    88.1 | ...84,744-745,860 
  ...Shortcuts.tsx |   22.89 |      100 |       0 |   22.89 | ...8,41-43,59-117 
  ...Indicator.tsx |     100 |      100 |     100 |     100 |                   
  ...firmation.tsx |   91.42 |      100 |      50 |   91.42 | 26-31             
  MainContent.tsx  |   16.39 |      100 |       0 |   16.39 | 22-76             
  ...geDisplay.tsx |       0 |        0 |       0 |       0 | 1-41              
  ModelDialog.tsx  |   79.22 |    68.05 |     100 |   79.22 | ...39-355,368-372 
  ...tsDisplay.tsx |     100 |      100 |     100 |     100 |                   
  ...tchDialog.tsx |     100 |      100 |     100 |     100 |                   
  ...fications.tsx |   17.02 |      100 |       0 |   17.02 | 15-62             
  ...KeyPrompt.tsx |   45.49 |     12.5 |   33.33 |   45.49 | ...80-198,214-216 
  ...ustDialog.tsx |     100 |    81.81 |     100 |     100 | 71-86             
  ...ryDisplay.tsx |      20 |      100 |       0 |      20 | 20-41             
  ...icePrompt.tsx |   88.14 |    83.87 |     100 |   88.14 | ...01-105,133-138 
  PrepareLabel.tsx |   91.66 |    76.19 |     100 |   91.66 | 73-75,77-79,110   
  ...geDisplay.tsx |     100 |      100 |     100 |     100 |                   
  ...ngDisplay.tsx |   21.42 |      100 |       0 |   21.42 | 13-39             
  ...hProgress.tsx |   90.78 |    95.55 |     100 |   90.78 | 247-273           
  ...ionPicker.tsx |   94.18 |    92.85 |     100 |   94.18 | 79,194-202        
  ...ryDisplay.tsx |     100 |      100 |     100 |     100 |                   
  ...putPrompt.tsx |   72.56 |       80 |      40 |   72.56 | ...06-109,114-117 
  ...ngsDialog.tsx |   66.71 |    72.66 |     100 |   66.71 | ...70-778,784-785 
  ...ionDialog.tsx |   87.01 |      100 |   33.33 |   87.01 | 36-39,44-51       
  ...putPrompt.tsx |      15 |      100 |       0 |      15 | 19-57             
  ...Indicator.tsx |   44.44 |      100 |       0 |   44.44 | 12-17             
  ...MoreLines.tsx |      28 |      100 |       0 |      28 | 18-40             
  ...ionPicker.tsx |    6.97 |      100 |       0 |    6.97 | 20-128            
  StatsDisplay.tsx |   98.66 |    93.33 |     100 |   98.66 | 199-201           
  ...nsDisplay.tsx |   84.09 |    57.14 |     100 |   84.09 | ...16-118,125-127 
  ThemeDialog.tsx  |   90.95 |    44.44 |      75 |   90.95 | ...16-117,159-161 
  Tips.tsx         |   57.14 |      100 |       0 |   57.14 | 24-37             
  TodoDisplay.tsx  |     100 |      100 |     100 |     100 |                   
  ...tsDisplay.tsx |     100 |     87.5 |     100 |     100 | 31-32             
  ...ification.tsx |   36.36 |      100 |       0 |   36.36 | 15-22             
  ...ackDialog.tsx |    7.84 |      100 |       0 |    7.84 | 24-134            
 ...nents/messages |   78.16 |    80.25 |    60.6 |   78.16 |                   
  ...onMessage.tsx |   91.93 |    82.35 |     100 |   91.93 | 57-59,61,63       
  DiffRenderer.tsx |   93.17 |    86.17 |     100 |   93.17 | ...08,236-237,303 
  ErrorMessage.tsx |   22.22 |      100 |       0 |   22.22 | 16-31             
  ...niMessage.tsx |     100 |      100 |     100 |     100 |                   
  ...geContent.tsx |     100 |      100 |     100 |     100 |                   
  ...htMessage.tsx |   17.85 |      100 |       0 |   17.85 | 24-48             
  ...geContent.tsx |   31.57 |      100 |       0 |   31.57 | 26-40             
  InfoMessage.tsx  |   22.72 |      100 |       0 |   22.72 | 18-37             
  ...ryMessage.tsx |   12.82 |      100 |       0 |   12.82 | 22-59             
  ...onMessage.tsx |   77.48 |    77.77 |   33.33 |   77.48 | ...57-158,179-194 
  ...upMessage.tsx |   90.74 |       84 |     100 |   90.74 | 40-43,55,140-144  
  ToolMessage.tsx  |   80.54 |       70 |      80 |   80.54 | ...77-382,456-458 
  UserMessage.tsx  |     100 |      100 |     100 |     100 |                   
  ...llMessage.tsx |   36.36 |      100 |       0 |   36.36 | 17-25             
  ...ngMessage.tsx |   26.31 |      100 |       0 |   26.31 | 17-32             
 ...ponents/shared |   80.81 |    77.19 |   94.11 |   80.81 |                   
  ...ctionList.tsx |   99.02 |    95.65 |     100 |   99.02 | 82                
  ...tonSelect.tsx |     100 |      100 |     100 |     100 |                   
  EnumSelector.tsx |     100 |    96.42 |     100 |     100 | 58                
  MaxSizedBox.tsx  |   81.62 |    81.96 |   88.88 |   81.62 | ...07-508,613-614 
  ...tonSelect.tsx |     100 |      100 |     100 |     100 |                   
  ...eSelector.tsx |     100 |       60 |     100 |     100 | 40-45             
  TextInput.tsx    |    7.94 |      100 |       0 |    7.94 | 32-194            
  text-buffer.ts   |   82.06 |    75.96 |   96.87 |   82.06 | ...1895,1922,1984 
  ...er-actions.ts |   86.71 |    67.79 |     100 |   86.71 | ...07-608,809-811 
 ...ents/subagents |    32.1 |      100 |       0 |    32.1 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  reducers.tsx     |    12.1 |      100 |       0 |    12.1 | 33-190            
  types.ts         |     100 |      100 |     100 |     100 |                   
  utils.ts         |   10.95 |      100 |       0 |   10.95 | ...1,56-57,60-102 
 ...bagents/create |    8.66 |      100 |       0 |    8.66 |                   
  ...ionWizard.tsx |    6.38 |      100 |       0 |    6.38 | 34-339            
  ...rSelector.tsx |   14.75 |      100 |       0 |   14.75 | 26-85             
  ...onSummary.tsx |    3.51 |      100 |       0 |    3.51 | 24-328            
  ...tionInput.tsx |    8.63 |      100 |       0 |    8.63 | 23-177            
  ...dSelector.tsx |   33.33 |      100 |       0 |   33.33 | 20-21,26-27,36-63 
  ...nSelector.tsx |    37.5 |      100 |       0 |    37.5 | 20-21,26-27,36-58 
  ...EntryStep.tsx |   12.76 |      100 |       0 |   12.76 | 34-78             
  ToolSelector.tsx |    4.16 |      100 |       0 |    4.16 | 31-253            
 ...bagents/manage |    8.01 |      100 |       0 |    8.01 |                   
  ...ctionStep.tsx |   10.25 |      100 |       0 |   10.25 | 21-103            
  ...eleteStep.tsx |   17.07 |      100 |       0 |   17.07 | 20-59             
  ...tEditStep.tsx |   25.53 |      100 |       0 |   25.53 | ...2,37-38,51-124 
  ...ctionStep.tsx |    2.29 |      100 |       0 |    2.29 | 28-449            
  ...iewerStep.tsx |   15.21 |      100 |       0 |   15.21 | 18-66             
  ...gerDialog.tsx |    6.03 |      100 |       0 |    6.03 | 32-338            
 ...agents/runtime |    7.83 |      100 |       0 |    7.83 |                   
  ...onDisplay.tsx |    7.83 |      100 |       0 |    7.83 | ...72-502,511-549 
 ...mponents/views |   84.97 |    69.23 |      75 |   84.97 |                   
  ...sionsList.tsx |    87.3 |    73.68 |     100 |    87.3 | 62-69             
  McpStatus.tsx    |   87.34 |    60.52 |     100 |   87.34 | ...79,182-184,269 
  SkillsList.tsx   |   27.27 |      100 |       0 |   27.27 | 18-35             
  ToolsList.tsx    |     100 |      100 |     100 |     100 |                   
 src/ui/contexts   |   77.47 |    79.32 |    86.2 |   77.47 |                   
  AppContext.tsx   |      40 |      100 |       0 |      40 | 17-22             
  ...igContext.tsx |   81.81 |       50 |     100 |   81.81 | 15-16             
  ...ssContext.tsx |   85.24 |    84.21 |     100 |   85.24 | ...52-754,757-759 
  ...owContext.tsx |   89.28 |       80 |   66.66 |   89.28 | 34,47-48,60-62    
  ...onContext.tsx |   47.02 |     62.5 |   71.42 |   47.02 | ...36-239,243-246 
  ...gsContext.tsx |   83.33 |       50 |     100 |   83.33 | 17-18             
  ...usContext.tsx |     100 |      100 |     100 |     100 |                   
  ...ngContext.tsx |   71.42 |       50 |     100 |   71.42 | 17-20             
  ...nsContext.tsx |   88.88 |       50 |     100 |   88.88 | 83-84             
  ...teContext.tsx |   83.33 |       50 |     100 |   83.33 | 141-142           
  ...deContext.tsx |   76.08 |    72.72 |     100 |   76.08 | 47-48,52-59,77-78 
 src/ui/editors    |   93.33 |    85.71 |   66.66 |   93.33 |                   
  ...ngsManager.ts |   93.33 |    85.71 |   66.66 |   93.33 | 49,63-64          
 src/ui/hooks      |   81.37 |    82.89 |   84.39 |   81.37 |                   
  ...dProcessor.ts |   78.76 |    80.19 |     100 |   78.76 | ...47-450,461-479 
  keyToAnsi.ts     |    3.92 |      100 |       0 |    3.92 | 19-77             
  ...dProcessor.ts |   94.75 |    70.58 |     100 |   94.75 | ...70-271,276-277 
  ...dProcessor.ts |   80.14 |    65.59 |      80 |   80.14 | ...29,584,603-609 
  ...agerDialog.ts |   88.23 |      100 |     100 |   88.23 | 20,24             
  ...odeCommand.ts |   58.82 |      100 |     100 |   58.82 | 28,33-48          
  ...Completion.ts |   92.77 |    89.28 |     100 |   92.77 | ...85-186,219-222 
  ...ifications.ts |     100 |      100 |     100 |     100 |                   
  ...tIndicator.ts |     100 |     87.5 |     100 |     100 | 43                
  ...ketedPaste.ts |    23.8 |      100 |       0 |    23.8 | 19-37             
  ...ompletion.tsx |   94.87 |    80.55 |     100 |   94.87 | ...99-200,202-203 
  ...dMigration.ts |   90.62 |       75 |     100 |   90.62 | 38-40             
  useCompletion.ts |    92.4 |     87.5 |     100 |    92.4 | 68-69,93-94,98-99 
  ...leMessages.ts |   98.68 |       95 |     100 |   98.68 | 55                
  ...ialogClose.ts |      25 |      100 |     100 |      25 | 57-94             
  ...orSettings.ts |     100 |      100 |     100 |     100 |                   
  ...ionUpdates.ts |   93.45 |     92.3 |     100 |   93.45 | ...83-287,300-306 
  ...backDialog.ts |      50 |    77.77 |   33.33 |      50 | ...56-172,193-194 
  useFocus.ts      |     100 |      100 |     100 |     100 |                   
  ...olderTrust.ts |     100 |      100 |     100 |     100 |                   
  ...miniStream.ts |   75.04 |    75.24 |      75 |   75.04 | ...1199,1232-1333 
  ...BranchName.ts |    90.9 |     92.3 |     100 |    90.9 | 19-20,55-58       
  ...oryManager.ts |   98.41 |    93.33 |     100 |   98.41 | 43                
  ...stListener.ts |     100 |      100 |     100 |     100 |                   
  ...nAuthError.ts |   76.19 |       50 |     100 |   76.19 | 39-40,43-45       
  ...putHistory.ts |    92.5 |    85.71 |     100 |    92.5 | 62-63,71,93-95    
  ...storyStore.ts |     100 |    94.11 |     100 |     100 | 66                
  useKeypress.ts   |     100 |      100 |     100 |     100 |                   
  ...rdProtocol.ts |   36.36 |      100 |       0 |   36.36 | 24-31             
  ...unchEditor.ts |    8.97 |      100 |       0 |    8.97 | 20-67,74-125      
  ...gIndicator.ts |     100 |      100 |     100 |     100 |                   
  useLogger.ts     |   21.05 |      100 |       0 |   21.05 | 15-37             
  ...oryMonitor.ts |     100 |      100 |     100 |     100 |                   
  ...ssageQueue.ts |     100 |      100 |     100 |     100 |                   
  ...delCommand.ts |     100 |      100 |     100 |     100 |                   
  ...odifyTrust.ts |     100 |      100 |     100 |     100 |                   
  ...raseCycler.ts |   84.48 |    76.47 |     100 |   84.48 | ...47,50-51,67-69 
  useQwenAuth.ts   |     100 |      100 |     100 |     100 |                   
  ...lScheduler.ts |   85.06 |    94.73 |     100 |   85.06 | ...00-203,291-301 
  ...oryCommand.ts |       0 |        0 |       0 |       0 | 1-7               
  ...umeCommand.ts |   95.45 |    83.33 |     100 |   95.45 | 55-56             
  ...ompletion.tsx |   90.59 |    83.33 |     100 |   90.59 | ...01,104,137-140 
  ...ectionList.ts |   96.18 |    93.67 |     100 |   96.18 | ...58-159,205-208 
  ...sionPicker.ts |   91.66 |    72.34 |     100 |   91.66 | ...45-246,250-251 
  ...ngsCommand.ts |   18.75 |      100 |       0 |   18.75 | 10-25             
  ...ellHistory.ts |   91.66 |    79.41 |     100 |   91.66 | ...69,117-118,128 
  ...oryCommand.ts |       0 |        0 |       0 |       0 | 1-76              
  ...Completion.ts |   80.88 |     84.4 |   91.66 |   80.88 | ...66-468,476-484 
  ...tateAndRef.ts |   13.63 |      100 |       0 |   13.63 | 16-36             
  ...eateDialog.ts |   88.23 |      100 |     100 |   88.23 | 14,18             
  ...rminalSize.ts |   76.19 |      100 |      50 |   76.19 | 21-25             
  ...emeCommand.ts |    8.04 |      100 |       0 |    8.04 | 25-112            
  useTimer.ts      |   88.09 |    85.71 |     100 |   88.09 | 44-45,51-53       
  ...lMigration.ts |       0 |        0 |       0 |       0 |                   
  ...AutoSwitch.ts |   91.84 |    88.57 |     100 |   91.84 | ...07,173,233-241 
  ...elcomeBack.ts |   69.44 |    54.54 |     100 |   69.44 | ...85,89-90,96-98 
  vim.ts           |   83.57 |     79.5 |     100 |   83.57 | ...38,742-750,759 
 src/ui/layouts    |   89.65 |       80 |     100 |   89.65 |                   
  ...AppLayout.tsx |     100 |      100 |     100 |     100 |                   
  ...AppLayout.tsx |   79.31 |       50 |     100 |   79.31 | 28-33             
 src/ui/models     |    91.5 |     87.5 |   81.81 |    91.5 |                   
  ...ableModels.ts |    91.5 |     87.5 |   81.81 |    91.5 | 70-71,79-85       
 ...noninteractive |     100 |      100 |    9.09 |     100 |                   
  ...eractiveUi.ts |     100 |      100 |    9.09 |     100 |                   
 src/ui/state      |   94.91 |    81.81 |     100 |   94.91 |                   
  extensions.ts    |   94.91 |    81.81 |     100 |   94.91 | 68-69,88          
 src/ui/themes     |   99.09 |    59.06 |     100 |   99.09 |                   
  ansi-light.ts    |     100 |      100 |     100 |     100 |                   
  ansi.ts          |     100 |      100 |     100 |     100 |                   
  atom-one-dark.ts |     100 |      100 |     100 |     100 |                   
  ayu-light.ts     |     100 |      100 |     100 |     100 |                   
  ayu.ts           |     100 |      100 |     100 |     100 |                   
  color-utils.ts   |     100 |      100 |     100 |     100 |                   
  default-light.ts |     100 |      100 |     100 |     100 |                   
  default.ts       |     100 |      100 |     100 |     100 |                   
  dracula.ts       |     100 |      100 |     100 |     100 |                   
  github-dark.ts   |     100 |      100 |     100 |     100 |                   
  github-light.ts  |     100 |      100 |     100 |     100 |                   
  googlecode.ts    |     100 |      100 |     100 |     100 |                   
  no-color.ts      |     100 |      100 |     100 |     100 |                   
  qwen-dark.ts     |     100 |      100 |     100 |     100 |                   
  qwen-light.ts    |     100 |      100 |     100 |     100 |                   
  ...tic-tokens.ts |     100 |      100 |     100 |     100 |                   
  ...-of-purple.ts |     100 |      100 |     100 |     100 |                   
  theme-manager.ts |   88.08 |    79.68 |     100 |   88.08 | ...00-306,311-312 
  theme.ts         |     100 |    29.41 |     100 |     100 | 270-458           
  xcode.ts         |     100 |      100 |     100 |     100 |                   
 src/ui/utils      |   69.43 |    83.16 |   79.01 |   69.43 |                   
  ...Colorizer.tsx |   82.19 |    88.23 |     100 |   82.19 | ...08-109,191-217 
  ...olePatcher.ts |      70 |    55.55 |   66.66 |      70 | ...56,59-60,64-67 
  ...nRenderer.tsx |   58.74 |    38.23 |     100 |   58.74 | ...30-136,146-148 
  ...wnDisplay.tsx |   85.75 |    88.05 |     100 |   85.75 | ...76-284,317-342 
  ...eRenderer.tsx |   77.88 |    76.19 |     100 |   77.88 | 54-82             
  ...boardUtils.ts |   29.29 |     37.5 |     100 |   29.29 | ...59-120,135-151 
  commandUtils.ts  |   93.16 |    88.37 |     100 |   93.16 | ...29,133,135-136 
  computeStats.ts  |     100 |      100 |     100 |     100 |                   
  displayUtils.ts  |     100 |      100 |     100 |     100 |                   
  formatters.ts    |   94.11 |    97.82 |     100 |   94.11 | 91-94             
  highlight.ts     |   98.63 |       95 |     100 |   98.63 | 93                
  isNarrowWidth.ts |     100 |      100 |     100 |     100 |                   
  ...olDetector.ts |    7.89 |      100 |       0 |    7.89 | ...11-112,115-116 
  ...nUtilities.ts |   69.84 |    85.71 |     100 |   69.84 | 75-91,100-101     
  ...mConstants.ts |     100 |      100 |     100 |     100 |                   
  ...storyUtils.ts |   85.58 |    70.96 |     100 |   85.58 | ...28,236-241,289 
  ...ickerUtils.ts |     100 |      100 |     100 |     100 |                   
  terminalSetup.ts |    3.67 |      100 |       0 |    3.67 | 41-390            
  textUtils.ts     |   96.52 |    94.44 |    87.5 |   96.52 | 19-20,148-149     
  updateCheck.ts   |     100 |    80.95 |     100 |     100 | 27-39             
 src/utils         |   67.78 |    90.65 |   93.75 |   67.78 |                   
  ...tification.ts |      92 |    71.42 |     100 |      92 | 34-35             
  checks.ts        |   33.33 |      100 |       0 |   33.33 | 23-28             
  cleanup.ts       |   65.38 |      100 |   66.66 |   65.38 | 28-37             
  commands.ts      |     100 |      100 |     100 |     100 |                   
  commentJson.ts   |     100 |      100 |     100 |     100 |                   
  deepMerge.ts     |     100 |    89.65 |     100 |     100 | 41-43,49          
  ...ScopeUtils.ts |   97.56 |    88.88 |     100 |   97.56 | 67                
  ...arResolver.ts |   94.28 |    88.46 |     100 |   94.28 | 28-29,125-126     
  errors.ts        |   98.27 |    95.12 |     100 |   98.27 | 40-41             
  events.ts        |     100 |      100 |     100 |     100 |                   
  gitUtils.ts      |   91.75 |    84.61 |     100 |   91.75 | 75-78,121-124     
  ...AutoUpdate.ts |   52.71 |     87.5 |      50 |   52.71 | 88-153            
  ...lationInfo.ts |     100 |      100 |     100 |     100 |                   
  languageUtils.ts |   97.87 |    96.29 |     100 |   97.87 | 131-132           
  math.ts          |       0 |        0 |       0 |       0 | 1-15              
  ...onfigUtils.ts |     100 |      100 |     100 |     100 |                   
  ...iveHelpers.ts |   95.72 |    92.36 |     100 |   95.72 | ...46-447,552,565 
  package.ts       |   88.88 |       80 |     100 |   88.88 | 33-34             
  processUtils.ts  |     100 |      100 |     100 |     100 |                   
  readStdin.ts     |   79.24 |       90 |      80 |   79.24 | 31-38,50-52       
  relaunch.ts      |      98 |    83.33 |     100 |      98 | 68                
  resolvePath.ts   |   66.66 |       25 |     100 |   66.66 | 12-13,16,18-19    
  sandbox.ts       |       0 |        0 |       0 |       0 | 1-989             
  settingsUtils.ts |   88.23 |    93.63 |   96.87 |   88.23 | ...95,460-493,524 
  spawnWrapper.ts  |     100 |      100 |     100 |     100 |                   
  ...upWarnings.ts |     100 |      100 |     100 |     100 |                   
  systemInfo.ts    |   98.94 |    90.32 |     100 |   98.94 | 168               
  ...InfoFields.ts |   91.11 |    64.51 |     100 |   91.11 | ...,80-81,116-117 
  ...entEmitter.ts |     100 |      100 |     100 |     100 |                   
  ...upWarnings.ts |   91.17 |    82.35 |     100 |   91.17 | 67-68,73-74,77-78 
  version.ts       |     100 |       50 |     100 |     100 | 11                
  windowTitle.ts   |     100 |      100 |     100 |     100 |                   
-------------------|---------|----------|---------|---------|-------------------
Core Package - Full Text Report
-------------------|---------|----------|---------|---------|-------------------
File               | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
-------------------|---------|----------|---------|---------|-------------------
All files          |   76.06 |    82.77 |   79.37 |   76.06 |                   
 src               |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
 src/__mocks__/fs  |     100 |      100 |     100 |     100 |                   
  promises.ts      |     100 |      100 |     100 |     100 |                   
 src/config        |   73.78 |    77.11 |   56.41 |   73.78 |                   
  config.ts        |   72.73 |    75.13 |    53.9 |   72.73 | ...1629,1644-1645 
  constants.ts     |     100 |      100 |     100 |     100 |                   
  models.ts        |     100 |      100 |     100 |     100 |                   
  storage.ts       |   81.13 |       95 |   67.85 |   81.13 | ...30-131,134-135 
 src/core          |   83.52 |    81.61 |   86.29 |   83.52 |                   
  baseLlmClient.ts |     100 |    96.42 |     100 |     100 | 115               
  client.ts        |    81.8 |    77.77 |   71.42 |    81.8 | ...11-615,623-639 
  ...tGenerator.ts |    72.1 |    61.11 |     100 |    72.1 | ...22,324,331-334 
  ...lScheduler.ts |   78.43 |     80.1 |   89.28 |   78.43 | ...1262,1304-1308 
  geminiChat.ts    |   85.78 |    84.42 |   80.76 |   85.78 | ...93-596,639-640 
  geminiRequest.ts |     100 |      100 |     100 |     100 |                   
  logger.ts        |   82.99 |    81.81 |     100 |   82.99 | ...52-356,396-407 
  ...olExecutor.ts |   92.59 |       75 |      50 |   92.59 | 41-42             
  prompts.ts       |   88.44 |    86.15 |    87.5 |   88.44 | ...96-797,800-801 
  tokenLimits.ts   |     100 |    86.66 |     100 |     100 | 41-42             
  turn.ts          |   95.93 |    88.23 |     100 |   95.93 | ...32,345-346,394 
 ...ntentGenerator |    92.4 |    69.95 |   89.65 |    92.4 |                   
  ...tGenerator.ts |   96.48 |    72.38 |   86.66 |   96.48 | ...69-270,404,460 
  converter.ts     |   90.19 |    68.22 |     100 |   90.19 | ...07,409-410,420 
  index.ts         |       0 |        0 |       0 |       0 | 1-21              
 ...ntentGenerator |   96.42 |    80.55 |    90.9 |   96.42 |                   
  ...tGenerator.ts |   95.48 |    81.81 |      90 |   95.48 | ...28,131,178-179 
  index.ts         |     100 |    66.66 |     100 |     100 | 45                
 ...ntentGenerator |   89.92 |    69.07 |      85 |   89.92 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...tGenerator.ts |   89.87 |    69.07 |      85 |   89.87 | ...73-474,502,510 
 ...ntentGenerator |   69.84 |       82 |   87.87 |   69.84 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  converter.ts     |   59.57 |       72 |      80 |   59.57 | ...1171,1188-1197 
  errorHandler.ts  |     100 |      100 |     100 |     100 |                   
  index.ts         |       0 |        0 |       0 |       0 | 1-94              
  ...tGenerator.ts |   47.93 |    91.66 |   77.77 |   47.93 | ...07-160,163-164 
  pipeline.ts      |   98.87 |    93.54 |     100 |   98.87 | 164,210-211       
  ...CallParser.ts |   90.14 |    86.66 |     100 |   90.14 | ...15-319,349-350 
 ...rator/provider |   95.09 |    86.66 |   90.62 |   95.09 |                   
  dashscope.ts     |   96.72 |    88.73 |   93.75 |   96.72 | ...15-216,296-297 
  deepseek.ts      |   84.37 |    70.58 |      75 |   84.37 | ...41,54-55,82-85 
  default.ts       |   96.36 |    88.88 |   83.33 |   96.36 | 71-72             
  index.ts         |     100 |      100 |     100 |     100 |                   
  modelscope.ts    |     100 |      100 |     100 |     100 |                   
  openrouter.ts    |     100 |      100 |     100 |     100 |                   
  types.ts         |       0 |        0 |       0 |       0 |                   
 src/extension     |   52.18 |    87.34 |   71.68 |   52.18 |                   
  ...-converter.ts |   20.46 |     62.5 |      30 |   20.46 | ...49-657,659-751 
  ...ionManager.ts |   43.95 |    86.79 |   64.28 |   43.95 | ...1201,1222-1227 
  ...onSettings.ts |   94.97 |    93.05 |     100 |   94.97 | ...14-216,223-225 
  ...-converter.ts |   43.33 |      100 |      40 |   43.33 | 67-174            
  github.ts        |   43.76 |    89.09 |      60 |   43.76 | ...35-341,380-433 
  index.ts         |     100 |      100 |     100 |     100 |                   
  marketplace.ts   |   97.14 |    93.18 |     100 |   97.14 | ...63,183-184,247 
  override.ts      |   94.11 |    88.88 |     100 |   94.11 | 63-64,81-82       
  settings.ts      |   66.26 |      100 |      50 |   66.26 | 81-108,143-149    
  storage.ts       |   94.73 |       90 |     100 |   94.73 | 41-42             
  ...ableSchema.ts |     100 |      100 |     100 |     100 |                   
  variables.ts     |   95.91 |    88.88 |     100 |   95.91 | 37-38             
 src/fallback      |   72.54 |    27.27 |     100 |   72.54 |                   
  handler.ts       |   72.54 |    27.27 |     100 |   72.54 | ...35,45-49,68-77 
 src/generated     |     100 |      100 |     100 |     100 |                   
  git-commit.ts    |     100 |      100 |     100 |     100 |                   
 src/ide           |   68.79 |    82.74 |      75 |   68.79 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  detect-ide.ts    |     100 |      100 |     100 |     100 |                   
  ide-client.ts    |   52.32 |     78.2 |      60 |   52.32 | ...11-819,845-853 
  ide-installer.ts |   89.06 |    79.31 |     100 |   89.06 | ...36,143-147,160 
  ideContext.ts    |     100 |      100 |     100 |     100 |                   
  process-utils.ts |   84.84 |    71.79 |     100 |   84.84 | ...37,151,193-194 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/mcp           |    78.5 |    75.24 |   75.92 |    78.5 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  ...h-provider.ts |   86.56 |      100 |   33.33 |   86.56 | ...86,90,94,98-99 
  ...h-provider.ts |   73.19 |    54.16 |     100 |   73.19 | ...11-818,825-827 
  ...en-storage.ts |    98.6 |    97.72 |     100 |    98.6 | 84-85             
  oauth-utils.ts   |   70.33 |    81.48 |    90.9 |   70.33 | ...62-283,308-331 
  ...n-provider.ts |   89.47 |    95.83 |   45.45 |   89.47 | ...40,144,148-149 
 .../token-storage |   79.76 |    86.66 |   86.36 |   79.76 |                   
  ...en-storage.ts |     100 |      100 |     100 |     100 |                   
  ...en-storage.ts |   82.75 |    82.35 |   92.85 |   82.75 | ...62-172,180-181 
  ...en-storage.ts |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...en-storage.ts |   68.57 |    82.35 |   64.28 |   68.57 | ...77-291,294-310 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/mocks         |     100 |      100 |     100 |     100 |                   
  msw.ts           |     100 |      100 |     100 |     100 |                   
 src/models        |    88.6 |    82.24 |    84.9 |    88.6 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...nfigErrors.ts |   74.22 |       44 |   84.61 |   74.22 | ...,67-74,106-117 
  ...igResolver.ts |   97.94 |    87.93 |     100 |   97.94 | 135,295,311-312   
  modelRegistry.ts |     100 |    97.77 |     100 |     100 | 163               
  modelsConfig.ts  |   82.45 |    81.39 |   76.92 |   82.45 | ...06,678,701-705 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/output        |     100 |      100 |     100 |     100 |                   
  ...-formatter.ts |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/prompts       |   26.41 |      100 |      25 |   26.41 |                   
  mcp-prompts.ts   |   18.18 |      100 |       0 |   18.18 | 11-19             
  ...t-registry.ts |   28.57 |      100 |   28.57 |   28.57 | ...42,48-55,68-73 
 src/qwen          |   85.93 |    79.93 |   97.18 |   85.93 |                   
  ...tGenerator.ts |   98.63 |    98.18 |     100 |   98.63 | 103-104           
  qwenOAuth2.ts    |   84.37 |    75.78 |   93.33 |   84.37 | ...6,957-973,1000 
  ...kenManager.ts |   84.24 |    76.03 |     100 |   84.24 | ...52-757,778-783 
 src/services      |   83.31 |    80.91 |   83.15 |   83.31 |                   
  ...ionService.ts |   93.11 |    90.74 |     100 |   93.11 | ...41,173,175-179 
  ...ingService.ts |   67.42 |       50 |   84.61 |   67.42 | ...77-389,395-407 
  ...eryService.ts |   80.43 |    95.45 |      75 |   80.43 | ...19-134,140-141 
  ...temService.ts |     100 |      100 |     100 |     100 |                   
  gitService.ts    |   66.29 |     90.9 |   55.55 |   66.29 | ...03-113,116-120 
  ...ionService.ts |   97.67 |    91.25 |     100 |   97.67 | ...79-380,386-387 
  ...ionService.ts |   79.12 |    73.19 |   88.88 |   79.12 | ...50-671,679-703 
  ...ionService.ts |   82.18 |    78.63 |   73.91 |   82.18 | ...43-744,748-753 
 src/skills        |   64.86 |    83.72 |      75 |   64.86 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  skill-load.ts    |   40.54 |    69.23 |   66.66 |   40.54 | ...13,119,131-133 
  skill-manager.ts |   70.48 |    86.11 |      75 |   70.48 | ...24-532,535-544 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/subagents     |   81.03 |    79.04 |   84.81 |   81.03 |                   
  ...tin-agents.ts |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...ent-events.ts |      92 |      100 |      75 |      92 | 139-140           
  ...gent-hooks.ts |       0 |        0 |       0 |       0 | 1                 
  ...nt-manager.ts |   72.88 |    75.83 |      88 |   72.88 | ...72-894,962-963 
  ...statistics.ts |   98.19 |     81.7 |     100 |   98.19 | 128,152,193,226   
  subagent.ts      |   76.38 |    66.66 |      72 |   76.38 | ...01-902,908-909 
  types.ts         |     100 |      100 |     100 |     100 |                   
  validation.ts    |    92.4 |    96.59 |     100 |    92.4 | 54-59,63-68,72-77 
 src/telemetry     |   69.98 |    83.43 |   74.13 |   69.98 |                   
  config.ts        |     100 |      100 |     100 |     100 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  ...-exporters.ts |   36.76 |      100 |   22.22 |   36.76 | ...84,87-88,91-92 
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...t.circular.ts |       0 |        0 |       0 |       0 | 1-111             
  ...t.circular.ts |       0 |        0 |       0 |       0 | 1-128             
  loggers.ts       |   55.08 |     65.9 |   51.42 |   55.08 | ...04-919,922-948 
  metrics.ts       |   82.85 |    86.74 |   81.63 |   82.85 | ...24-725,731-749 
  sdk.ts           |   82.55 |       50 |     100 |   82.55 | ...85,189-190,192 
  ...etry-utils.ts |     100 |      100 |     100 |     100 |                   
  ...l-decision.ts |     100 |      100 |     100 |     100 |                   
  types.ts         |   80.39 |    83.67 |   84.48 |   80.39 | ...86-797,806-829 
  uiTelemetry.ts   |   94.73 |    96.15 |   91.66 |   94.73 | 136,165-171       
 ...learcut-logger |   45.11 |    70.17 |   38.09 |   45.11 |                   
  ...cut-logger.ts |   38.36 |    69.64 |   38.09 |   38.36 | ...1117,1120-1123 
  ...tadata-key.ts |     100 |      100 |     100 |     100 |                   
 ...ry/qwen-logger |   68.78 |    82.71 |   68.62 |   68.78 |                   
  event-types.ts   |       0 |        0 |       0 |       0 |                   
  qwen-logger.ts   |   68.78 |     82.5 |      68 |   68.78 | ...08-912,955-956 
 src/test-utils    |   93.88 |    93.33 |   77.77 |   93.88 |                   
  config.ts        |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  mock-tool.ts     |   92.14 |     92.3 |      76 |   92.14 | ...70,174-175,188 
  ...aceContext.ts |     100 |      100 |     100 |     100 |                   
 src/tools         |   75.09 |    82.55 |   83.38 |   75.09 |                   
  diffOptions.ts   |     100 |      100 |     100 |     100 |                   
  edit.ts          |   84.89 |    85.71 |   85.71 |   84.89 | ...60-461,550-590 
  exitPlanMode.ts  |   85.29 |    86.36 |     100 |   85.29 | ...03-108,136-148 
  glob.ts          |   95.73 |    86.53 |    90.9 |   95.73 | 91-97,139,224,227 
  grep.ts          |   71.35 |    85.29 |   76.47 |   71.35 | ...22,462,470-477 
  ls.ts            |   96.41 |     88.7 |     100 |   96.41 | 142-147,178,182   
  ...nt-manager.ts |   87.05 |     62.5 |      80 |   87.05 | ...10-117,125-126 
  mcp-client.ts    |   28.89 |    70.42 |   48.38 |   28.89 | ...1365,1369-1372 
  mcp-tool.ts      |   95.43 |    93.67 |      95 |   95.43 | 233-243,305-306   
  memoryTool.ts    |   74.42 |    83.87 |   90.47 |   74.42 | ...39-347,449-533 
  ...iable-tool.ts |     100 |    84.61 |     100 |     100 | 99,106            
  read-file.ts     |   96.34 |    86.48 |    87.5 |   96.34 | 65,67,69-70,76-77 
  ...many-files.ts |   78.99 |    78.87 |   85.71 |   78.99 | ...46-447,454-455 
  ripGrep.ts       |   95.61 |    88.67 |     100 |   95.61 | ...23,226,304-305 
  ...-transport.ts |    2.43 |      100 |       0 |    2.43 | 44-163            
  shell.ts         |   87.22 |    82.35 |     100 |   87.22 | ...75-582,587-588 
  skill.ts         |   94.57 |    85.29 |    90.9 |   94.57 | ...77,220-223,227 
  smart-edit.ts    |   82.95 |    77.86 |      88 |   82.95 | ...01-903,921-964 
  task.ts          |   66.66 |     87.5 |     100 |   66.66 | ...04-505,526-533 
  todoWrite.ts     |   78.74 |    80.95 |   71.42 |   78.74 | ...95-420,441-442 
  tool-error.ts    |     100 |      100 |     100 |     100 |                   
  tool-names.ts    |     100 |      100 |     100 |     100 |                   
  tool-registry.ts |   69.09 |    65.38 |   70.37 |   69.09 | ...24-429,437-445 
  tools.ts         |    89.2 |    89.58 |    87.5 |    89.2 | ...74-375,391-397 
  web-fetch.ts     |   85.22 |    60.86 |      90 |   85.22 | ...33-234,236-237 
  write-file.ts    |   83.33 |    83.33 |      75 |   83.33 | ...16-419,431-465 
 ...ols/web-search |   72.49 |    76.59 |   81.25 |   72.49 |                   
  base-provider.ts |    40.9 |    33.33 |     100 |    40.9 | 40-43,48-56       
  index.ts         |   76.99 |    84.61 |   91.66 |   76.99 | ...47-151,257-267 
  types.ts         |       0 |        0 |       0 |       0 | 1                 
  utils.ts         |      60 |       50 |      50 |      60 | 35-42             
 ...arch/providers |   46.73 |     64.7 |   72.72 |   46.73 |                   
  ...e-provider.ts |       8 |      100 |       0 |       8 | 68-83,89-199      
  ...e-provider.ts |      82 |    55.55 |     100 |      82 | 57-58,61-62,72-76 
  ...y-provider.ts |   89.79 |       75 |     100 |   89.79 | 62-66             
 src/utils         |   83.96 |    88.37 |   86.14 |   83.96 |                   
  LruCache.ts      |   80.64 |       75 |     100 |   80.64 | 28,30-34          
  browser.ts       |    7.69 |      100 |       0 |    7.69 | 17-56             
  ...igResolver.ts |     100 |      100 |     100 |     100 |                   
  editHelper.ts    |   91.84 |    80.45 |     100 |   91.84 | ...73-475,484-485 
  editor.ts        |   96.95 |    93.87 |     100 |   96.95 | ...90-191,193-194 
  ...arResolver.ts |   94.28 |    88.88 |     100 |   94.28 | 28-29,125-126     
  ...entContext.ts |     100 |    94.73 |     100 |     100 | 120               
  errorParsing.ts  |     100 |      100 |     100 |     100 |                   
  ...rReporting.ts |   83.72 |    84.61 |     100 |   83.72 | 82-86,107-115     
  errors.ts        |   61.45 |    88.88 |   46.15 |   61.45 | ...08-124,128-134 
  fetch.ts         |   71.97 |    71.42 |   71.42 |   71.97 | ...38,144,157,182 
  fileUtils.ts     |   94.75 |       90 |     100 |   94.75 | ...26-428,476-482 
  formatters.ts    |   54.54 |       50 |     100 |   54.54 | 12-16             
  ...eUtilities.ts |    95.4 |    94.87 |     100 |    95.4 | 16-17,45-46       
  ...rStructure.ts |   95.96 |    94.93 |     100 |   95.96 | ...14-117,345-347 
  getPty.ts        |    12.5 |      100 |       0 |    12.5 | 21-34             
  ...noreParser.ts |    92.3 |    89.13 |     100 |    92.3 | ...15-116,186-187 
  gitUtils.ts      |   59.25 |    76.92 |   66.66 |   59.25 | 41-42,51-74,88-89 
  ...rePatterns.ts |     100 |      100 |     100 |     100 |                   
  ...ionManager.ts |     100 |       90 |     100 |     100 | 23                
  jsonl-utils.ts   |    7.37 |      100 |       0 |    7.37 | ...48-181,187-193 
  ...-detection.ts |     100 |      100 |     100 |     100 |                   
  ...edit-fixer.ts |     100 |      100 |     100 |     100 |                   
  ...yDiscovery.ts |    78.5 |       65 |   66.66 |    78.5 | ...83-384,387-388 
  ...tProcessor.ts |   92.46 |    88.75 |   92.85 |   92.46 | ...09-315,398-399 
  ...Inspectors.ts |   61.53 |      100 |      50 |   61.53 | 18-23             
  ...kerChecker.ts |   83.69 |    78.94 |     100 |   83.69 | 65-66,76-81,89-95 
  openaiLogger.ts  |   85.85 |    81.48 |     100 |   85.85 | ...98-100,123-128 
  partUtils.ts     |     100 |      100 |     100 |     100 |                   
  pathReader.ts    |     100 |      100 |     100 |     100 |                   
  paths.ts         |   95.32 |    95.23 |     100 |   95.32 | ...,70-71,103-104 
  ...ectSummary.ts |    3.75 |      100 |       0 |    3.75 | 27-119            
  ...tIdContext.ts |     100 |      100 |     100 |     100 |                   
  ...rDetection.ts |   69.44 |    79.54 |     100 |   69.44 | ...25-126,166-167 
  ...noreParser.ts |   85.45 |    78.26 |     100 |   85.45 | ...59,65-66,72-73 
  retry.ts         |   68.04 |    77.19 |     100 |   68.04 | ...19-239,284-299 
  ripgrepUtils.ts  |   36.19 |       75 |   55.55 |   36.19 | ...77-230,246-334 
  ...tchOptions.ts |   34.93 |       25 |   66.66 |   34.93 | ...33-138,144-165 
  safeJsonParse.ts |      72 |    83.33 |     100 |      72 | 37-43             
  ...nStringify.ts |     100 |      100 |     100 |     100 |                   
  ...aConverter.ts |   90.78 |    87.87 |     100 |   90.78 | ...41-42,93,95-96 
  ...aValidator.ts |     100 |    88.88 |     100 |     100 | 11-25,69          
  ...r-launcher.ts |   76.52 |     87.5 |   66.66 |   76.52 | ...33,135,153-191 
  shell-utils.ts   |   86.82 |    95.55 |   93.33 |   86.82 | ...21-534,554-558 
  ...nlyChecker.ts |   85.21 |    85.52 |   81.81 |   85.21 | ...07-308,312-313 
  ...tGenerator.ts |     100 |     90.9 |     100 |     100 | 129               
  summarizer.ts    |     100 |    88.88 |     100 |     100 | 91                
  ...emEncoding.ts |   98.11 |    94.59 |     100 |   98.11 | 115-116           
  ...Serializer.ts |   99.06 |    94.54 |     100 |   99.06 | 90,147-149        
  testUtils.ts     |   53.33 |      100 |   33.33 |   53.33 | ...53,59-64,70-72 
  textUtils.ts     |   53.33 |      100 |      50 |   53.33 | 36-55             
  thoughtUtils.ts  |     100 |     92.3 |     100 |     100 | 71                
  ...-converter.ts |   94.59 |    85.71 |     100 |   94.59 | 35-36             
  tool-utils.ts    |    93.6 |       92 |     100 |    93.6 | ...58-159,162-163 
  ...aceContext.ts |   96.82 |    95.12 |    92.3 |   96.82 | 94-95,109-110     
  yaml-parser.ts   |      92 |       84 |     100 |      92 | 49-53,65-69       
 ...ils/filesearch |   96.17 |     91.4 |     100 |   96.17 |                   
  crawlCache.ts    |     100 |      100 |     100 |     100 |                   
  crawler.ts       |   96.22 |     92.3 |     100 |   96.22 | 66-67             
  fileSearch.ts    |   93.22 |    87.14 |     100 |   93.22 | ...27-228,230-231 
  ignore.ts        |     100 |      100 |     100 |     100 |                   
  result-cache.ts  |     100 |     92.3 |     100 |     100 | 46                
 ...uest-tokenizer |   56.33 |    74.52 |   74.19 |   56.33 |                   
  ...eTokenizer.ts |   41.47 |    76.47 |   69.23 |   41.47 | ...67-440,450-504 
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...tTokenizer.ts |   68.12 |    69.49 |    90.9 |   68.12 | ...21-322,324-325 
  ...ageFormats.ts |      76 |      100 |   33.33 |      76 | 45-48,55-56       
  textTokenizer.ts |     100 |      100 |     100 |     100 |                   
  types.ts         |       0 |        0 |       0 |       0 | 1                 
-------------------|---------|----------|---------|---------|-------------------

For detailed HTML reports, please see the 'coverage-reports-22.x-ubuntu-latest' artifact from the main CI run.

- Skip thought parts when accumulating roundText so reasoning content
  does not leak into the subagent's final answer.
- Remove unnecessary `as SubAgentStreamTextEvent` type assertion.
- Add core tests for STREAM_TEXT thought flag and finalText exclusion.

@pomelo-nwu pomelo-nwu left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@pomelo-nwu
pomelo-nwu merged commit 591eab8 into main Jan 29, 2026
14 checks passed
xaelistic pushed a commit to xaelistic/qwen-code that referenced this pull request Jun 7, 2026
fix(acp): stream subagent text + reasoning chunks
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.

2 participants