Skip to content

IDE companion discovery: switch to ~/.qwen/ide lock files#1257

Merged
tanzhenxin merged 5 commits intomainfrom
feat/ide-companion-discovery
Dec 19, 2025
Merged

IDE companion discovery: switch to ~/.qwen/ide lock files#1257
tanzhenxin merged 5 commits intomainfrom
feat/ide-companion-discovery

Conversation

@tanzhenxin
Copy link
Copy Markdown
Collaborator

Summary

This PR updates IDE integration discovery and security:

  • Moves IDE server discovery from temp “port files” to lock files in ~/.qwen/ide/.
  • Updates the CLI/core IDE client to prefer QWEN_CODE_IDE_SERVER_PORT (when present) and otherwise select the best matching lock file for the current workspace.
  • Tightens the VS Code companion HTTP server to require Authorization: Bearer <token> on every request, matching the IDE companion spec.

What changed

  • Docs

    • Updated IDE companion spec to describe the new lock file mechanism and naming (${PID}-${PORT}.lock) and the selection/tie-break rules.
  • Core (packages/core)

    • Added Storage.getGlobalIdeDir() to centralize the global IDE dir (~/.qwen/ide).
    • Updated IdeClient to:
      • Prefer ~/.qwen/ide/<pid>-<envPort>.lock when QWEN_CODE_IDE_SERVER_PORT is set.
      • Otherwise scan ~/.qwen/ide/<pid>-*.lock, parse JSON, sort by mtime, and select a config whose workspacePath matches the CLI cwd.
      • Keep legacy support for the older single temp PID file (os.tmpdir()/qwen-code-ide-server-<pid>.json).
  • VS Code companion (packages/vscode-ide-companion)

    • Writes a single lock file at ~/.qwen/ide/${process.ppid}-${port}.lock with { port, workspacePath, ppid, authToken }.
    • Requires Authorization header on all /mcp requests; rejects missing/malformed/invalid tokens with 401.
  • Tests / formatting

    • Updated unit tests across core/cli/vscode companion to reflect the new discovery path + auth requirements.
    • Minor formatting fixes (CSS semicolon, multi-line formatting in tests).

Why

  • Reliability: lock files in ~/.qwen/ide are stable and workspace-aware, improving correctness when multiple IDE windows/servers exist.
  • Security: enforcing auth on every request aligns implementation with the spec and avoids accidental unauthenticated access.

How to test

  • Start the VS Code companion and confirm it creates ~/.qwen/ide/<ppid>-<port>.lock.
  • Run the CLI in the same workspace and verify it connects (and fails with 401 if the token is missing/incorrect).

Notes

  • This change is coordinated between core and VS Code companion; older clients that do not send Authorization will now be rejected as intended by the spec.

@github-actions
Copy link
Copy Markdown
Contributor

📋 Review Summary

This PR introduces significant improvements to IDE companion discovery and security by migrating from temporary port files to lock files in ~/.qwen/ide/ and enforcing authentication on all requests. The changes affect the core IDE client, VS Code companion extension, and associated documentation. Overall, this is a well-executed enhancement that improves both reliability and security.

🔍 General Feedback

  • The migration from temporary files to lock files in a dedicated directory is a solid architectural improvement
  • Proper authentication enforcement across all HTTP requests aligns with security best practices
  • Good backward compatibility with legacy discovery mechanisms
  • Comprehensive test coverage for the new discovery logic and authentication requirements
  • Clear documentation updates that accurately reflect the new mechanisms

🎯 Specific Feedback

🟡 High

  • File: packages/core/src/ide/ide-client.ts:580-675 - The new lock file discovery logic sorts by mtimeMs but doesn't handle the case where stat() might fail for some files, potentially causing those files to be treated as very old. While this is handled with -Infinity, it might be better to explicitly filter out files where stat fails before sorting.

🟢 Medium

  • File: packages/vscode-ide-companion/src/ide-server.ts:421-426 - The cleanup logic only attempts to remove one lock file. If multiple lock files could be created in error scenarios, this might leave orphaned files. Consider if a more thorough cleanup is needed.

🔵 Low

  • File: packages/core/src/ide/ide-client.ts:615-617 - The tie-breaking logic when multiple valid workspaces are found and QWEN_CODE_IDE_SERVER_PORT is set duplicates the filtering logic. This could be simplified by breaking early once a match is found.

✅ Highlights

  • Excellent implementation of the new lock file discovery mechanism with proper workspace validation
  • Strong security improvement by requiring authentication on all requests
  • Well-structured code with clear comments explaining the discovery precedence
  • Comprehensive test coverage including edge cases and error conditions
  • Good backward compatibility maintained with legacy discovery methods
  • Clear and accurate documentation updates

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Dec 15, 2025

Code Coverage Summary

Package Lines Statements Functions Branches
CLI 68.85% 68.85% 72.34% 81.44%
Core 77.34% 77.34% 80.1% 83.69%
CLI Package - Full Text Report
-------------------|---------|----------|---------|---------|-------------------
File               | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
-------------------|---------|----------|---------|---------|-------------------
All files          |   68.85 |    81.44 |   72.34 |   68.85 |                   
 src               |   73.69 |    68.38 |   61.11 |   73.69 |                   
  gemini.tsx       |   61.94 |    58.92 |      75 |   61.94 | ...87,492-500,508 
  ...ractiveCli.ts |   82.94 |    69.84 |      20 |   82.94 | ...73-275,294,342 
  ...liCommands.ts |    75.4 |    66.66 |   66.66 |    75.4 | ...-81,88,177-205 
  ...ActiveAuth.ts |   97.46 |     87.5 |     100 |   97.46 | 21-22             
 ...cp-integration |   44.08 |        0 |       0 |   44.08 |                   
  acp.ts           |    2.61 |        0 |       0 |    2.61 | ...77-319,322-369 
  acpAgent.ts      |    4.28 |        0 |       0 |    4.28 | 38-59,62-356      
  schema.ts        |     100 |      100 |     100 |     100 |                   
 ...ration/service |   68.88 |    57.14 |      50 |   68.88 |                   
  filesystem.ts    |   68.88 |    57.14 |      50 |   68.88 | ...47,51-60,62-63 
 ...ration/session |   26.99 |    72.46 |   72.72 |   26.99 |                   
  ...ryReplayer.ts |   73.43 |    81.25 |   88.88 |   73.43 | ...57-186,199-200 
  Session.ts       |    3.69 |        0 |       0 |    3.69 | 81-914,933-1001   
  ...entTracker.ts |   80.99 |    70.58 |   88.88 |   80.99 | ...25-332,335-336 
  index.ts         |       0 |        0 |       0 |       0 | 1-40              
  types.ts         |       0 |        0 |       0 |       0 | 1                 
 ...ssion/emitters |   96.91 |    94.84 |   91.66 |   96.91 |                   
  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.83 |    92.98 |     100 |   98.83 | 288,296           
  index.ts         |       0 |        0 |       0 |       0 | 1-10              
 src/commands      |   70.45 |      100 |      25 |   70.45 |                   
  extensions.tsx   |   55.55 |      100 |       0 |   55.55 | 21-31,35          
  mcp.ts           |   94.11 |      100 |      50 |   94.11 | 26                
 ...nds/extensions |   44.24 |    97.14 |   34.48 |   44.24 |                   
  disable.ts       |   20.68 |      100 |       0 |   20.68 | 18-31,37-63,65-69 
  enable.ts        |   19.04 |      100 |       0 |   19.04 | 18-36,42-68,70-74 
  install.ts       |   82.05 |    91.66 |   66.66 |   82.05 | 40-43,85-88,91-96 
  link.ts          |   26.31 |      100 |       0 |   26.31 | 20-37,44-49,51-54 
  list.ts          |   32.14 |      100 |       0 |   32.14 | 11-27,34-35       
  new.ts           |     100 |      100 |     100 |     100 |                   
  uninstall.ts     |   45.71 |      100 |   33.33 |   45.71 | 15-23,35-40,43-46 
  update.ts        |   12.09 |      100 |       0 |   12.09 | ...29-144,146-150 
 ...les/mcp-server |       0 |        0 |       0 |       0 |                   
  example.ts       |       0 |        0 |       0 |       0 | 1-60              
 src/commands/mcp  |   97.16 |     86.2 |    90.9 |   97.16 |                   
  add.ts           |     100 |    96.15 |     100 |     100 | 210               
  list.ts          |   90.82 |    80.76 |      80 |   90.82 | ...10-112,137-138 
  remove.ts        |     100 |    66.66 |     100 |     100 | 19-23             
 src/config        |   91.62 |    82.59 |   86.17 |   91.62 |                   
  auth.ts          |     100 |       90 |     100 |     100 | 16                
  config.ts        |   93.68 |    85.38 |      75 |   93.68 | ...-904,1056-1060 
  extension.ts     |   83.88 |     88.4 |   84.37 |   83.88 | ...73-774,777-778 
  keyBindings.ts   |     100 |      100 |     100 |     100 |                   
  sandboxConfig.ts |   54.16 |    23.07 |   66.66 |   54.16 | ...44,54-68,73-89 
  settings.ts      |   87.94 |    77.33 |      92 |   87.94 | ...50-853,861-863 
  ...ingsSchema.ts |     100 |      100 |     100 |     100 |                   
  ...tedFolders.ts |   96.87 |    93.87 |     100 |   96.87 | ...87-188,203-204 
  webSearch.ts     |    40.9 |    11.11 |     100 |    40.9 | ...95-102,105-121 
 ...fig/extensions |   70.34 |    86.66 |   94.44 |   70.34 |                   
  ...Enablement.ts |   95.45 |    95.52 |     100 |   95.45 | ...89-191,235-237 
  github.ts        |   57.38 |    83.07 |      90 |   57.38 | ...81-386,392-418 
  update.ts        |   60.54 |    53.84 |   66.66 |   60.54 | ...21-147,162-170 
  ...ableSchema.ts |     100 |      100 |     100 |     100 |                   
  variables.ts     |   95.34 |       90 |     100 |   95.34 | 30-31             
 src/core          |   64.38 |       30 |     100 |   64.38 |                   
  auth.ts          |   42.85 |       50 |     100 |   42.85 | 29-48             
  initializer.ts   |   74.35 |       20 |     100 |   74.35 | 49-54,61-64       
  theme.ts         |   69.23 |    33.33 |     100 |   69.23 | 19-22             
 src/generated     |     100 |      100 |     100 |     100 |                   
  git-commit.ts    |     100 |      100 |     100 |     100 |                   
 src/i18n          |   64.88 |    59.52 |    64.7 |   64.88 |                   
  index.ts         |   64.88 |    59.52 |    64.7 |   64.88 | ...70-173,194-212 
 src/i18n/locales  |   34.07 |        0 |       0 |   34.07 |                   
  en.js            |     100 |      100 |     100 |     100 |                   
  ru.js            |       0 |        0 |       0 |       0 | 1-1121            
  zh.js            |       0 |        0 |       0 |       0 | 1-1044            
 ...nonInteractive |   63.23 |    65.04 |   68.88 |   63.23 |                   
  session.ts       |   66.66 |     62.6 |   81.81 |   66.66 | ...36-637,651-661 
  types.ts         |    42.5 |      100 |   33.33 |    42.5 | ...63-564,567-568 
 ...active/control |   74.55 |     85.1 |   77.77 |   74.55 |                   
  ...rolContext.ts |    8.33 |        0 |       0 |    8.33 | 46-76             
  ...Dispatcher.ts |   88.46 |    88.88 |    87.5 |   88.46 | ...20-340,355,358 
  ...rolService.ts |       8 |        0 |       0 |       8 | 46-179            
 ...ol/controllers |    6.68 |       80 |   13.79 |    6.68 |                   
  ...Controller.ts |   17.09 |      100 |      60 |   17.09 | 77-114,123-205    
  ...Controller.ts |       0 |        0 |       0 |       0 | 1-56              
  ...Controller.ts |    3.96 |      100 |   11.11 |    3.96 | ...63-381,391-492 
  ...Controller.ts |   13.23 |      100 |       0 |   13.23 | ...82-121,134-137 
  ...Controller.ts |    5.12 |      100 |       0 |    5.12 | ...95-407,416-450 
 .../control/types |       0 |        0 |       0 |       0 |                   
  serviceAPIs.ts   |       0 |        0 |       0 |       0 | 1                 
 ...Interactive/io |    96.2 |    91.22 |   95.94 |    96.2 |                   
  ...putAdapter.ts |      96 |    90.34 |     100 |      96 | ...1239,1264-1265 
  ...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      |   86.92 |    87.09 |   94.11 |   86.92 |                   
  ...mandLoader.ts |     100 |      100 |     100 |     100 |                   
  ...andService.ts |     100 |      100 |     100 |     100 |                   
  ...mandLoader.ts |   93.06 |    91.48 |     100 |   93.06 | 189-194,277-284   
  ...omptLoader.ts |   74.88 |       80 |   83.33 |   74.88 | ...00-201,267-268 
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...mpt-processors |   97.12 |     93.5 |     100 |   97.12 |                   
  ...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.14 |    94.87 |     100 |   97.14 | 94-97             
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/test-utils    |   94.41 |     87.5 |   83.33 |   94.41 |                   
  ...eExtension.ts |     100 |      100 |     100 |     100 |                   
  ...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            |   74.34 |    72.67 |   62.85 |   74.34 |                   
  App.tsx          |      80 |    85.71 |     100 |      80 | 20-29             
  AppContainer.tsx |   76.06 |    63.15 |      50 |   76.06 | ...1035,1049-1110 
  ...tionNudge.tsx |       8 |      100 |       0 |       8 | 25-100            
  colors.ts        |   67.34 |      100 |   46.66 |   67.34 | ...46,48-49,54-55 
  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       |   32.71 |    72.72 |   42.85 |   32.71 |                   
  AuthDialog.tsx   |   86.66 |    76.19 |      60 |   86.66 | ...01-102,147-153 
  ...nProgress.tsx |       0 |        0 |       0 |       0 | 1-64              
  useAuth.ts       |    3.51 |      100 |       0 |    3.51 | 26-257            
 src/ui/commands   |   69.35 |    82.59 |    51.9 |   69.35 |                   
  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.92 |    66.66 |      50 |   76.92 | 24-25,62-71       
  clearCommand.ts  |   88.23 |    66.66 |      50 |   88.23 | 16-17,41-42       
  ...essCommand.ts |   97.33 |    88.88 |      50 |   97.33 | 17-18             
  copyCommand.ts   |   96.22 |      100 |      50 |   96.22 | 15-16             
  ...ryCommand.tsx |   66.83 |    73.07 |      50 |   66.83 | ...77-178,186-194 
  docsCommand.ts   |   95.23 |       80 |      50 |   95.23 | 20-21             
  editorCommand.ts |     100 |      100 |     100 |     100 |                   
  ...onsCommand.ts |   90.54 |    96.55 |   57.14 |   90.54 | ...45-146,167-168 
  helpCommand.ts   |     100 |      100 |     100 |     100 |                   
  ideCommand.ts    |   58.54 |       60 |   35.29 |   58.54 | ...88-289,292-306 
  initCommand.ts   |    81.7 |       70 |      50 |    81.7 | ...67,81-86,88-93 
  ...ageCommand.ts |   78.03 |    77.96 |    64.7 |   78.03 | ...71-472,480-492 
  mcpCommand.ts    |   37.54 |    80.95 |   22.22 |   37.54 | ...12-352,358-361 
  memoryCommand.ts |    54.8 |     86.2 |      20 |    54.8 | ...78,285-286,304 
  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 
  statsCommand.ts  |   76.92 |       75 |      50 |   76.92 | ...36,50-51,65-66 
  ...aryCommand.ts |    7.74 |      100 |       0 |    7.74 | 21-24,27-199      
  ...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 |   69.06 |    79.67 |   67.92 |   69.06 |                   
  AboutBox.tsx     |     100 |      100 |     100 |     100 |                   
  AnsiOutput.tsx   |     100 |      100 |     100 |     100 |                   
  AppHeader.tsx    |    42.1 |      100 |       0 |    42.1 | 19-33             
  ...odeDialog.tsx |    9.62 |      100 |       0 |    9.62 | 35-47,50-187      
  AsciiArt.ts      |     100 |      100 |     100 |     100 |                   
  ...Indicator.tsx |   15.38 |      100 |       0 |   15.38 | 18-53             
  Composer.tsx     |   98.51 |    68.96 |     100 |   98.51 | 77,86             
  ...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 |     100 |      100 |     100 |     100 |                   
  ...gProfiler.tsx |      24 |      100 |       0 |      24 | 13-36             
  ...esDisplay.tsx |   10.34 |      100 |       0 |   10.34 | 24-83             
  ...ogManager.tsx |   13.46 |      100 |       0 |   13.46 | 48-306            
  ...ngsDialog.tsx |    6.91 |      100 |       0 |    6.91 | 31-198            
  ExitWarning.tsx  |     100 |      100 |     100 |     100 |                   
  ...ustDialog.tsx |     100 |      100 |     100 |     100 |                   
  Footer.tsx       |   89.31 |    73.07 |     100 |   89.31 | ...99-101,155-158 
  ...ngSpinner.tsx |   54.28 |       50 |      50 |   54.28 | 31-48,61          
  Header.tsx       |   87.23 |    57.14 |     100 |   87.23 | 36-39,55,64       
  Help.tsx         |   98.69 |    73.33 |     100 |   98.69 | 73,128            
  ...emDisplay.tsx |   77.58 |       50 |     100 |   77.58 | ...45,150-154,157 
  ...ngeDialog.tsx |     100 |      100 |     100 |     100 |                   
  InputPrompt.tsx  |   90.15 |     85.5 |     100 |   90.15 | ...33,637-639,805 
  ...Indicator.tsx |     100 |      100 |     100 |     100 |                   
  ...firmation.tsx |   91.42 |      100 |      50 |   91.42 | 26-31             
  MainContent.tsx  |   17.24 |      100 |       0 |   17.24 | 22-73             
  ...geDisplay.tsx |   22.58 |      100 |       0 |   22.58 | 15-41             
  ModelDialog.tsx  |     100 |    92.85 |     100 |     100 | 46                
  ...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             
  PrepareLabel.tsx |   91.66 |    76.19 |     100 |   91.66 | 73-75,77-79,110   
  ...otaDialog.tsx |     100 |      100 |     100 |     100 |                   
  ...geDisplay.tsx |     100 |      100 |     100 |     100 |                   
  ...ngDisplay.tsx |   23.07 |      100 |       0 |   23.07 | 13-37             
  ...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 |                   
  ...ngsDialog.tsx |    56.3 |    69.53 |      75 |    56.3 | ...45-846,928-932 
  ...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 |    7.31 |      100 |       0 |    7.31 | 20-122            
  StatsDisplay.tsx |   98.65 |    93.33 |     100 |   98.65 | 197-199           
  ...nsDisplay.tsx |   84.09 |    57.14 |     100 |   84.09 | ...16-118,125-127 
  ThemeDialog.tsx  |    90.9 |    44.44 |      75 |    90.9 | ...16-117,159-161 
  Tips.tsx         |   19.35 |      100 |       0 |   19.35 | 18-46             
  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            
  ...ionDialog.tsx |    9.19 |      100 |       0 |    9.19 | 21-119            
 ...nents/messages |   78.02 |    79.91 |    60.6 |   78.02 |                   
  ...onMessage.tsx |   91.93 |    82.35 |     100 |   91.93 | 57-59,61,63       
  DiffRenderer.tsx |   93.03 |    85.55 |     100 |   93.03 | ...02,228-229,295 
  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 | ...58-159,180-195 
  ...upMessage.tsx |   90.82 |       84 |     100 |   90.82 | 40-43,55,142-146  
  ToolMessage.tsx  |    80.3 |       70 |      80 |    80.3 | ...72-377,451-453 
  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.39 |   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 |    82.11 |   88.88 |   81.62 | ...07-508,613-614 
  ...tonSelect.tsx |     100 |      100 |     100 |     100 |                   
  ...eSelector.tsx |     100 |    83.33 |     100 |     100 | 40                
  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 |    9.02 |      100 |       0 |    9.02 |                   
  ...ctionStep.tsx |   10.52 |      100 |       0 |   10.52 | 21-99             
  ...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 |     3.1 |      100 |       0 |     3.1 | 27-337            
  ...iewerStep.tsx |   15.21 |      100 |       0 |   15.21 | 18-66             
  ...gerDialog.tsx |    6.13 |      100 |       0 |    6.13 | 32-334            
 ...agents/runtime |    7.83 |      100 |       0 |    7.83 |                   
  ...onDisplay.tsx |    7.83 |      100 |       0 |    7.83 | ...72-502,511-549 
 ...mponents/views |   90.74 |    74.19 |     100 |   90.74 |                   
  ...sionsList.tsx |     100 |    93.75 |     100 |     100 | 15                
  McpStatus.tsx    |   87.34 |    60.52 |     100 |   87.34 | ...79,182-184,269 
  ToolsList.tsx    |     100 |      100 |     100 |     100 |                   
 src/ui/contexts   |   77.44 |    77.66 |    86.2 |   77.44 |                   
  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.23 |       50 |     100 |   88.23 | 78-79             
  ...teContext.tsx |   83.33 |       50 |     100 |   83.33 | 146-147           
  ...deContext.tsx |   76.08 |    33.33 |     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.98 |    83.34 |   85.36 |   81.98 |                   
  ...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.7 |     66.3 |      80 |    80.7 | ...22,577,596-602 
  ...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.7 |       80 |     100 |    94.7 | ...92-193,195-196 
  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 | 58-95             
  ...orSettings.ts |     100 |      100 |     100 |     100 |                   
  ...ionUpdates.ts |   73.68 |       95 |      50 |   73.68 | ...20-123,138-144 
  useFocus.ts      |     100 |      100 |     100 |     100 |                   
  ...olderTrust.ts |     100 |      100 |     100 |     100 |                   
  ...miniStream.ts |   76.91 |    77.55 |      75 |   76.91 | ...1165,1198-1299 
  ...BranchName.ts |   87.27 |       75 |     100 |   87.27 | 19-20,53-59       
  ...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 |   11.53 |      100 |       0 |   11.53 | 16-30,37-82       
  ...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 |   95.69 |    82.35 |     100 |   95.69 | ...78-179,195-197 
  ...ndFallback.ts |   98.27 |    96.42 |     100 |   98.27 | 69-71             
  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.8 |    84.46 |    90.9 |    80.8 | ...52-454,462-470 
  ...tateAndRef.ts |   13.63 |      100 |       0 |   13.63 | 16-36             
  ...eateDialog.ts |   88.23 |      100 |     100 |   88.23 | 14,18             
  ...rminalSize.ts |   77.27 |      100 |      50 |   77.27 | 19-23             
  ...emeCommand.ts |    8.04 |      100 |       0 |    8.04 | 25-112            
  useTimer.ts      |   88.09 |    85.71 |     100 |   88.09 | 44-45,51-53       
  ...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 
  ...eMigration.ts |   11.11 |      100 |       0 |   11.11 | 16-70             
  vim.ts           |   83.57 |     79.5 |     100 |   83.57 | ...38,742-750,759 
 src/ui/layouts    |   92.59 |       80 |     100 |   92.59 |                   
  ...AppLayout.tsx |     100 |      100 |     100 |     100 |                   
  ...AppLayout.tsx |   85.18 |       50 |     100 |   85.18 | 28-31             
 src/ui/models     |   76.66 |    77.77 |   71.42 |   76.66 |                   
  ...ableModels.ts |   76.66 |    77.77 |   71.42 |   76.66 | ...59-61,70-72,76 
 ...noninteractive |     100 |      100 |    9.09 |     100 |                   
  ...eractiveUi.ts |     100 |      100 |    9.09 |     100 |                   
 src/ui/state      |   94.82 |    81.81 |     100 |   94.82 |                   
  extensions.ts    |   94.82 |    81.81 |     100 |   94.82 | 67-68,87          
 src/ui/themes     |   99.07 |    61.53 |     100 |   99.07 |                   
  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 |    32.25 |     100 |     100 | 255-437           
  xcode.ts         |     100 |      100 |     100 |     100 |                   
 src/ui/utils      |   69.69 |    83.29 |   79.01 |   69.69 |                   
  ...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 |   78.09 |    76.19 |     100 |   78.09 | 55-83             
  ...boardUtils.ts |   31.11 |     37.5 |     100 |   31.11 | ...51-110,125-141 
  commandUtils.ts  |   93.16 |    88.09 |     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.78 |    72.13 |     100 |   85.78 | ...24,232-237,285 
  ...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         |   65.13 |    91.29 |   92.45 |   65.13 |                   
  ...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 |   96.42 |    96.15 |     100 |   96.42 | 111-112           
  errors.ts        |     100 |    96.29 |     100 |     100 | 76                
  events.ts        |     100 |      100 |     100 |     100 |                   
  gitUtils.ts      |   91.75 |    84.61 |     100 |   91.75 | 75-78,121-124     
  ...AutoUpdate.ts |    51.2 |       95 |      50 |    51.2 | 84-149            
  ...lationInfo.ts |     100 |      100 |     100 |     100 |                   
  math.ts          |   66.66 |      100 |       0 |   66.66 | 15                
  ...iveHelpers.ts |   96.21 |    91.83 |     100 |   96.21 | ...38-439,544,557 
  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-994             
  settingsUtils.ts |   87.54 |    93.87 |   96.87 |   87.54 | ...92-419,467-468 
  spawnWrapper.ts  |     100 |      100 |     100 |     100 |                   
  ...upWarnings.ts |     100 |      100 |     100 |     100 |                   
  systemInfo.ts    |   98.92 |    85.71 |     100 |   98.92 | 164               
  ...InfoFields.ts |   97.72 |    81.81 |     100 |   97.72 | 109-110           
  ...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          |   77.34 |    83.69 |    80.1 |   77.34 |                   
 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/code_assist   |   78.49 |    82.53 |   81.25 |   78.49 |                   
  codeAssist.ts    |    17.5 |      100 |       0 |    17.5 | 16-38,41-54       
  converter.ts     |   94.96 |    93.02 |     100 |   94.96 | ...85,199,216-217 
  ...al-storage.ts |     100 |    74.07 |     100 |     100 | 37-39,70-73       
  oauth2.ts        |   81.77 |     81.7 |    92.3 |   81.77 | ...32-533,556-557 
  server.ts        |   54.21 |    73.33 |   57.14 |   54.21 | ...30-233,252-253 
  setup.ts         |   86.66 |    78.94 |     100 |   86.66 | ...,92-94,118-124 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/config        |   76.95 |    81.56 |   55.33 |   76.95 |                   
  config.ts        |    75.3 |    79.08 |   50.81 |    75.3 | ...1382,1397-1398 
  constants.ts     |     100 |      100 |     100 |     100 |                   
  models.ts        |     100 |      100 |     100 |     100 |                   
  storage.ts       |   84.46 |    95.23 |   74.07 |   84.46 | ...26-127,130-131 
 src/core          |   79.49 |    82.46 |   79.38 |   79.49 |                   
  baseLlmClient.ts |     100 |    96.55 |     100 |     100 | 121               
  client.ts        |   82.46 |    78.86 |   73.91 |   82.46 | ...53-657,665-681 
  ...tGenerator.ts |   47.93 |       70 |      50 |   47.93 | ...19,149,170-213 
  ...lScheduler.ts |   78.35 |    79.68 |   89.28 |   78.35 | ...1263,1305-1309 
  geminiChat.ts    |   86.63 |    83.76 |      80 |   86.63 | ...77-580,623-624 
  geminiRequest.ts |     100 |      100 |     100 |     100 |                   
  logger.ts        |   82.99 |    81.81 |     100 |   82.99 | ...52-356,396-407 
  ...tGenerator.ts |   12.42 |      100 |      10 |   12.42 | ...00-201,204-207 
  ...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.95 |    88.23 |     100 |   95.95 | ...29,342-343,391 
 ...ntentGenerator |   72.02 |    83.55 |   89.85 |   72.02 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  converter.ts     |   57.37 |    71.42 |   79.16 |   57.37 | ...1103,1122-1159 
  errorHandler.ts  |     100 |      100 |     100 |     100 |                   
  index.ts         |       0 |        0 |       0 |       0 | 1-101             
  ...tGenerator.ts |      50 |     87.5 |    87.5 |      50 | 87-99,103-156     
  pipeline.ts      |   97.21 |    92.06 |     100 |   97.21 | ...28-229,404-408 
  ...CallParser.ts |   90.14 |    86.66 |     100 |   90.14 | ...15-319,349-350 
  ...tryService.ts |   98.85 |    95.55 |     100 |   98.85 | 161-162           
 ...rator/provider |   97.37 |    87.75 |     100 |   97.37 |                   
  dashscope.ts     |   98.27 |    89.55 |     100 |   98.27 | 198-199,279-280   
  deepseek.ts      |   89.83 |    70.58 |     100 |   89.83 | 34-35,39-40,53-54 
  default.ts       |     100 |      100 |     100 |     100 |                   
  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/fallback      |   55.55 |    93.75 |   66.66 |   55.55 |                   
  handler.ts       |   55.05 |    93.75 |   66.66 |   55.05 | 20-21,70-120      
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/generated     |     100 |      100 |     100 |     100 |                   
  git-commit.ts    |     100 |      100 |     100 |     100 |                   
 src/ide           |   68.64 |    83.85 |      75 |   68.64 |                   
  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 |   85.47 |    76.47 |     100 |   85.47 | ...22,136,178-179 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/mcp           |   78.48 |    75.12 |   75.92 |   78.48 |                   
  ...h-provider.ts |   86.36 |      100 |   33.33 |   86.36 | ...85,89,93,97-98 
  ...h-provider.ts |   73.39 |    54.16 |     100 |   73.39 | ...00-807,814-816 
  ...en-storage.ts |    98.6 |    97.67 |     100 |    98.6 | 84-85             
  oauth-utils.ts   |   70.33 |    81.48 |    90.9 |   70.33 | ...62-283,308-331 
  ...n-provider.ts |   89.38 |    95.83 |   45.45 |   89.38 | ...39,143,147-148 
 .../token-storage |   88.39 |    86.46 |      95 |   88.39 |                   
  ...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 |   85.71 |    81.81 |      90 |   85.71 | ...25-227,249-250 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/mocks         |     100 |      100 |     100 |     100 |                   
  msw.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.17 |    79.79 |   97.05 |   85.17 |                   
  ...tGenerator.ts |   98.63 |    98.18 |     100 |   98.63 | 103-104           
  qwenOAuth2.ts    |   82.47 |       75 |   92.59 |   82.47 | ...26,860-876,903 
  ...kenManager.ts |   84.24 |    76.03 |     100 |   84.24 | ...52-757,778-783 
 src/services      |   85.55 |    81.37 |   89.88 |   85.55 |                   
  ...ionService.ts |    95.1 |    95.23 |     100 |    95.1 | 134-142           
  ...ingService.ts |   67.42 |       50 |   84.61 |   67.42 | ...77-389,395-407 
  ...eryService.ts |   96.73 |    96.66 |    87.5 |   96.73 | 112,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 |   86.86 |    78.26 |     100 |   86.86 | ...68-669,673-678 
 src/subagents     |   81.73 |    78.04 |   83.11 |   81.73 |                   
  ...tin-agents.ts |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...ent-events.ts |      84 |      100 |      50 |      84 | 137-138,141-142   
  ...gent-hooks.ts |       0 |        0 |       0 |       0 | 1                 
  ...nt-manager.ts |   77.13 |    77.24 |    91.3 |   77.13 | ...21-822,891-892 
  ...statistics.ts |   98.19 |     81.7 |     100 |   98.19 | 128,152,193,226   
  subagent.ts      |   74.14 |     60.5 |      68 |   74.14 | ...00-901,907-908 
  types.ts         |     100 |      100 |     100 |     100 |                   
  validation.ts    |    92.4 |    96.59 |     100 |    92.4 | 54-59,63-68,72-77 
 src/telemetry     |   73.09 |    87.89 |   76.78 |   73.09 |                   
  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       |      60 |     65.9 |   56.25 |      60 | ...34-753,848-871 
  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         |   87.98 |      100 |   89.09 |   87.98 | ...62-671,702-722 
  uiTelemetry.ts   |   94.73 |    96.15 |   91.66 |   94.73 | 136,165-171       
 ...learcut-logger |   45.62 |    68.42 |   38.09 |   45.62 |                   
  ...cut-logger.ts |   39.02 |    67.85 |   38.09 |   39.02 | ...1132,1135-1138 
  ...tadata-key.ts |     100 |      100 |     100 |     100 |                   
 ...ry/qwen-logger |   71.89 |    82.71 |   72.91 |   71.89 |                   
  event-types.ts   |       0 |        0 |       0 |       0 |                   
  qwen-logger.ts   |   71.89 |     82.5 |   72.34 |   71.89 | ...60-864,907-908 
 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         |   74.33 |    82.06 |   83.05 |   74.33 |                   
  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.31 |    88.52 |     100 |   96.31 | 141-146,177,181   
  ...nt-manager.ts |   81.44 |    61.53 |      80 |   81.44 | ...23-130,138-139 
  mcp-client.ts    |   28.59 |    68.57 |   48.38 |   28.59 | ...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.2 |    86.48 |    87.5 |    96.2 | 64,66,68-69,75-76 
  ...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         |    86.8 |    78.49 |     100 |    86.8 | ...87-494,499-500 
  smart-edit.ts    |   82.95 |    77.86 |      88 |   82.95 | ...01-903,921-964 
  task.ts          |    66.4 |    86.79 |     100 |    66.4 | ...00-501,522-529 
  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.45 |    65.38 |   70.37 |   69.45 | ...28-433,441-449 
  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         |   84.17 |    88.79 |   87.45 |   84.17 |                   
  LruCache.ts      |   80.64 |       75 |     100 |   80.64 | 28,30-34          
  bfsFileSearch.ts |   89.65 |     92.3 |     100 |   89.65 | 86-94             
  browser.ts       |    7.69 |      100 |       0 |    7.69 | 17-56             
  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 
  ...entContext.ts |     100 |    94.73 |     100 |     100 | 120               
  errorParsing.ts  |     100 |     92.3 |     100 |     100 | 76,80,86          
  ...rReporting.ts |   83.72 |    84.61 |     100 |   83.72 | 82-86,107-115     
  errors.ts        |   58.33 |       75 |      50 |   58.33 | ...86-102,106-112 
  fetch.ts         |   34.04 |      100 |       0 |   34.04 | 22-27,31-57       
  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 |   82.72 |    72.88 |   77.77 |   82.72 | ...05-406,409-410 
  ...tProcessor.ts |   93.23 |    89.74 |    92.3 |   93.23 | ...95-301,378-379 
  ...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         |    74.5 |    97.56 |     100 |    74.5 | 46-105            
  ...ectSummary.ts |    3.75 |      100 |       0 |    3.75 | 27-119            
  ...tIdContext.ts |     100 |      100 |     100 |     100 |                   
  ...rDetection.ts |   76.85 |    84.31 |     100 |   76.85 | ...25-126,166-167 
  ...noreParser.ts |   85.45 |    81.48 |     100 |   85.45 | ...59,65-66,72-73 
  retry.ts         |   63.77 |    77.02 |     100 |   63.77 | ...98-318,363-378 
  ripgrepUtils.ts  |   36.19 |       75 |   55.55 |   36.19 | ...77-230,246-334 
  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 |    76.19 |     100 |     100 | 11-25,62,66-67    
  ...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 |   81.63 |       80 |      80 |   81.63 | ...58-259,263-264 
  ...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     |   84.44 |    72.72 |   83.33 |   84.44 | 27-28,34-35,70-72 
  textUtils.ts     |   53.33 |      100 |      50 |   53.33 | 36-55             
  thoughtUtils.ts  |     100 |    91.66 |     100 |     100 | 71                
  tool-utils.ts    |    93.6 |       92 |     100 |    93.6 | ...58-159,162-163 
  ...untManager.ts |   97.14 |    94.59 |     100 |   97.14 | 36-38             
  ...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 |   59.81 |    76.37 |   75.67 |   59.81 |                   
  ...eTokenizer.ts |   41.47 |    76.47 |   69.23 |   41.47 | ...67-440,450-504 
  index.ts         |   66.66 |      100 |      50 |   66.66 | 35-40             
  ...tTokenizer.ts |   71.18 |    70.96 |   91.66 |   71.18 | ...26-327,338-339 
  ...ageFormats.ts |      76 |      100 |   33.33 |      76 | 45-48,55-56       
  textTokenizer.ts |     100 |    88.88 |     100 |     100 | 71,76,81          
  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.

@tanzhenxin tanzhenxin merged commit a92be72 into main Dec 19, 2025
13 checks passed
dletterio1 pushed a commit to dletterio1/qwen-code that referenced this pull request Jan 12, 2026
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