Skip to content

feat: basic TypeScript SDK#1103

Merged
Mingholy merged 22 commits into
mainfrom
mingholy/feat/cli-sdk-stage-1
Dec 4, 2025
Merged

feat: basic TypeScript SDK#1103
Mingholy merged 22 commits into
mainfrom
mingholy/feat/cli-sdk-stage-1

Conversation

@Mingholy

@Mingholy Mingholy commented Nov 25, 2025

Copy link
Copy Markdown
Collaborator

TLDR

This PR introduces TypeScript SDK (@qwen-code/sdk-typescript) for programmatic access to qwen-code CLI.

Todo Actions

  • Refined type exports
  • Comprehensive E2E and unit tests
  • Logging utilities with scoped logger support
  • allowedTools and permission control
  • Extra error handling for plan mode in SDK
  • Extra error handling for 429 rate limit errors
  • Automatic build and release workflow

Dive Deeper

SDK Package

Added packages/sdk-typescript:

  • Query API: query() function and Query class for CLI interaction
  • Transport Layer: ProcessTransport with JSON Lines protocol
  • Stream Utilities: Async iteration and data flow handling
  • CLI Path Resolution: Cross-environment CLI spawning
  • Type Definitions: Full TypeScript types for messages and protocol
  • Subagent Support: Interact with qwen-code subagents
  • External MCP Server: Connect to 3rd party MCP servers
  • Tool Control: allowedTools for fine-grained tool access control
  • Logging: Scoped logger with configurable log levels

CLI & Core Updates

  • Refactored non-interactive session for SDK control protocol
  • Updated control service and permission controllers for SDK flow
  • Enhanced subagent manager for SDK-based operations
  • Updated configuration handling for SDK integration

Testing

  • E2E: single-turn, multi-turn, abort/lifecycle, permission control, MCP servers, subagents, tool control, system control, configuration options
  • Unit: transport, query, streams, CLI path resolution, MCP server

Reviewer Test Plan

  1. Run SDK Tests: npm test in packages/sdk-typescript to verify all unit and e2e tests pass
  2. Test SDK Query: Create a simple script using query() to send a prompt to qwen-code CLI
  3. Test External MCP Servers: Verify SDK can connect to 3rd party MCP servers via query options
  4. Test Subagent Integration: Run the subagent e2e tests to verify SDK can interact with subagents
  5. Test CLI Integration: Run existing CLI tests to ensure backward compatibility

Testing Matrix

🍏 🪟 🐧
npm run
npx
Docker
Podman - -
Seatbelt - -

Linked issues / bugs

Part of the SDK development initiative.

@github-actions

Copy link
Copy Markdown
Contributor

📋 Review Summary

This PR introduces a foundational TypeScript SDK (@qwen-code/sdk-typescript) for programmatic access to the qwen-code CLI, along with significant updates to the CLI's non-interactive mode to support SDK integration. The changes enable developers to programmatically interact with qwen-code through a well-defined API, supporting features like single/multi-turn conversations, subagent management, and MCP server integration.

🔍 General Feedback

  • The SDK implementation follows good architectural patterns with clear separation of concerns between transport, query, and utility layers
  • Comprehensive test coverage with both unit and end-to-end tests demonstrates attention to quality
  • Good use of TypeScript types and Zod schemas for validation enhances type safety
  • CLI modifications appropriately extend functionality without breaking existing behavior
  • The introduction of stream-json input/output formats enables robust programmatic communication

🎯 Specific Feedback

🟢 Medium

  • File: packages/sdk-typescript/src/query/Query.ts:140 - Consider adding more detailed error handling for edge cases in the message router to improve debugging experience
  • File: packages/sdk-typescript/src/transport/ProcessTransport.ts:85 - The buildCliArguments method could benefit from more granular unit tests to cover all parameter combinations
  • File: packages/cli/src/config/config.ts:404 - CLI option parsing for array values (core-tools, exclude-tools) uses flatMap which may not handle all edge cases with whitespace; consider adding more robust input validation

🔵 Low

  • File: packages/sdk-typescript/src/utils/cliPath.ts:135 - The runtime detection logic could be enhanced to check for specific version requirements for runtimes like Bun or Deno
  • File: packages/sdk-typescript/src/query/createQuery.ts:75 - Consider adding JSDoc comments to exported functions to improve developer experience
  • File: packages/cli/src/nonInteractive/session.ts:170 - The deferred initialization logic for stream-json mode could benefit from additional logging to help with debugging connection issues

✅ Highlights

  • Excellent test coverage with thoughtful end-to-end scenarios covering single-turn, multi-turn, subagents, and MCP server integration
  • Well-designed Transport abstraction that cleanly separates process management from protocol concerns
  • Clean implementation of CLI argument passing from SDK to spawned processes
  • Thoughtful error handling with custom error types and proper propagation
  • Good use of TypeScript generics and type guards to ensure type safety across async boundaries

@github-actions

github-actions Bot commented Dec 1, 2025

Copy link
Copy Markdown
Contributor

Code Coverage Summary

Package Lines Statements Functions Branches
CLI 69.29% 69.29% 71.42% 81.57%
Core 77.1% 77.1% 79.84% 83.89%
CLI Package - Full Text Report
-------------------|---------|----------|---------|---------|-------------------
File               | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
-------------------|---------|----------|---------|---------|-------------------
All files          |   69.29 |    81.57 |   71.42 |   69.29 |                   
 src               |   73.74 |    69.03 |   61.11 |   73.74 |                   
  gemini.tsx       |    62.1 |    59.64 |      75 |    62.1 | ...84,489-497,505 
  ...ractiveCli.ts |      83 |    70.96 |      20 |      83 | ...68-270,289,337 
  ...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.39 |        0 |       0 |   44.39 |                   
  acp.ts           |    2.72 |        0 |       0 |    2.72 | ...67-303,306-353 
  acpAgent.ts      |    4.56 |        0 |       0 |    4.56 | 34-55,58-329      
  schema.ts        |     100 |      100 |     100 |     100 |                   
 ...ration/service |   20.58 |      100 |       0 |   20.58 |                   
  filesystem.ts    |   20.58 |      100 |       0 |   20.58 | ...34,37-46,48-49 
 ...ration/session |   26.17 |    72.13 |   73.68 |   26.17 |                   
  ...ryReplayer.ts |   95.06 |       84 |     100 |   95.06 | 102-103,134-135   
  Session.ts       |    3.63 |        0 |       0 |    3.63 | 75-894,913-981    
  ...entTracker.ts |   81.55 |    69.69 |    87.5 |   81.55 | ...04-311,314-315 
  index.ts         |       0 |        0 |       0 |       0 | 1-40              
  types.ts         |       0 |        0 |       0 |       0 | 1                 
 ...ssion/emitters |   96.96 |    95.55 |    91.3 |   96.96 |                   
  BaseEmitter.ts   |   84.61 |      100 |      75 |   84.61 | 35-36             
  ...ageEmitter.ts |     100 |      100 |     100 |     100 |                   
  PlanEmitter.ts   |     100 |      100 |     100 |     100 |                   
  ...allEmitter.ts |   99.39 |    94.33 |     100 |   99.39 | 285               
  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.53 |    82.88 |   86.17 |   91.53 |                   
  auth.ts          |     100 |       90 |     100 |     100 | 16                
  config.ts        |   93.78 |    86.16 |      75 |   93.78 | ...-881,1026-1030 
  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.45 |     62.5 |   68.75 |   64.45 |                   
  index.ts         |   64.45 |     62.5 |   68.75 |   64.45 | ...68-171,192-210 
 src/i18n/locales  |   51.81 |        0 |       0 |   51.81 |                   
  en.js            |     100 |      100 |     100 |     100 |                   
  zh.js            |       0 |        0 |       0 |       0 | 1-1052            
 ...nonInteractive |   62.37 |    66.36 |   66.66 |   62.37 |                   
  session.ts       |   66.33 |    63.72 |   83.33 |   66.33 | ...53-454,468-478 
  types.ts         |    42.5 |      100 |   33.33 |    42.5 | ...09-510,513-514 
 ...active/control |      80 |    86.95 |    87.5 |      80 |                   
  ...rolContext.ts |    8.33 |        0 |       0 |    8.33 | 46-76             
  ...Dispatcher.ts |   97.51 |     90.9 |     100 |   97.51 | 196-199,307       
  ...rolService.ts |       8 |        0 |       0 |       8 | 46-179            
 ...ol/controllers |    5.83 |    66.66 |   17.39 |    5.83 |                   
  ...Controller.ts |   24.09 |      100 |      60 |   24.09 | 77-114,122-162    
  ...Controller.ts |       0 |        0 |       0 |       0 | 1-56              
  mcpController.ts |       0 |        0 |       0 |       0 | 1-287             
  ...Controller.ts |    4.26 |      100 |   11.11 |    4.26 | ...45-363,373-462 
  ...Controller.ts |    7.47 |      100 |       0 |    7.47 | ...27-233,241-264 
 .../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.94 |    87.09 |   94.11 |   86.94 |                   
  ...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.16 |    72.67 |   61.11 |   74.16 |                   
  App.tsx          |      80 |    85.71 |     100 |      80 | 20-29             
  AppContainer.tsx |   75.82 |    63.15 |   44.44 |   75.82 | ...1033,1048-1109 
  ...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   |    60.4 |    83.51 |   43.07 |    60.4 |                   
  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             
  corgiCommand.ts  |     100 |      100 |     100 |     100 |                   
  ...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 |   12.32 |      100 |       0 |   12.32 | ...31-432,435-455 
  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   |   61.01 |      100 |      25 |   61.01 | 14-15,18-37,44-45 
  ...oreCommand.ts |      92 |    87.09 |     100 |      92 | ...,82-87,128-129 
  ...ngsCommand.ts |     100 |      100 |     100 |     100 |                   
  ...hubCommand.ts |   82.69 |    66.66 |      75 |   82.69 | ...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 |   65.12 |    79.16 |   66.03 |   65.12 |                   
  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.05 |      100 |       0 |   13.05 | 51-316            
  ...ngsDialog.tsx |    6.91 |      100 |       0 |    6.91 | 31-198            
  ExitWarning.tsx  |     100 |      100 |     100 |     100 |                   
  ...ustDialog.tsx |     100 |      100 |     100 |     100 |                   
  Footer.tsx       |    84.5 |    70.37 |     100 |    84.5 | ...57-164,167-170 
  ...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 |      87 |       52 |     100 |      87 | ...26,131-135,138 
  ...ngeDialog.tsx |     100 |      100 |     100 |     100 |                   
  InputPrompt.tsx  |   90.08 |     85.5 |     100 |   90.08 | ...33,637-639,800 
  ...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 |                   
  ...ionDialog.tsx |   21.15 |      100 |       0 |   21.15 | 28-73             
  ...ngDisplay.tsx |   23.07 |      100 |       0 |   23.07 | 13-37             
  ...hProgress.tsx |   90.78 |    95.55 |     100 |   90.78 | 247-273           
  ...ionPicker.tsx |    2.22 |      100 |       0 |    2.22 | 30-436            
  ...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             
  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 |   79.98 |    79.91 |   64.51 |   79.98 |                   
  ...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 |                   
  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 | 74-75             
  ...teContext.tsx |   83.33 |       50 |     100 |   83.33 | 148-149           
  ...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      |   80.65 |    83.62 |   84.29 |   80.65 |                   
  ...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 |   73.83 |    65.59 |   72.72 |   73.83 | ...91,646,665-671 
  ...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 | 63-103            
  ...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 |   75.36 |    77.17 |      75 |   75.36 | ...1104,1137-1238 
  ...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 
  ...nfirmation.ts |      60 |      100 |     100 |      60 | 14,18-29          
  ...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               
  ...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 
  ...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 |   68.18 |      100 |      50 |   68.18 | 19-23,27-28       
  ...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 |    8.33 |     100 |                   
  ...eractiveUi.ts |     100 |      100 |    8.33 |     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.16 |    82.89 |   77.92 |   69.16 |                   
  ...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 |   57.85 |    38.23 |     100 |   57.85 | ...26-132,142-144 
  ...wnDisplay.tsx |   85.58 |    88.05 |     100 |   85.58 | ...72-280,313-338 
  ...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 |   87.36 |    71.15 |     100 |   87.36 | ...49,200-205,253 
  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.03 |    91.48 |   92.45 |   65.03 |                   
  ...tification.ts |     100 |    83.33 |     100 |     100 | 31                
  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      |   94.66 |    82.35 |     100 |   94.66 | 75-78             
  ...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.81 |   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.1 |    83.89 |   79.84 |    77.1 |                   
 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.96 |    79.88 |   54.42 |   76.96 |                   
  config.ts        |   75.37 |    77.18 |      50 |   75.37 | ...1331,1346-1347 
  constants.ts     |     100 |      100 |     100 |     100 |                   
  models.ts        |     100 |      100 |     100 |     100 |                   
  storage.ts       |   83.83 |       95 |   73.07 |   83.83 | ...21-122,125-126 
 src/core          |   79.13 |    82.76 |   78.62 |   79.13 |                   
  baseLlmClient.ts |     100 |    96.55 |     100 |     100 | 122               
  client.ts        |   82.11 |    78.68 |   69.56 |   82.11 | ...51-655,663-679 
  ...tGenerator.ts |   47.93 |       70 |      50 |   47.93 | ...17,147,168-211 
  ...lScheduler.ts |   78.35 |    79.68 |   89.28 |   78.35 | ...1263,1305-1309 
  geminiChat.ts    |   86.15 |    86.36 |      80 |   86.15 | ...66-569,607-608 
  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          |   91.95 |    87.03 |     100 |   91.95 | ...30,343-344,392 
 ...ntentGenerator |   61.66 |    86.84 |   82.35 |   61.66 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  converter.ts     |   33.81 |    74.15 |   56.52 |   33.81 | ...1018,1037-1074 
  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.2 |    92.06 |     100 |    97.2 | ...27-228,403-407 
  ...CallParser.ts |   90.14 |    86.66 |     100 |   90.14 | ...15-319,349-350 
  ...tryService.ts |   98.78 |    95.34 |     100 |   98.78 | 160-161           
 ...rator/provider |   97.36 |    89.58 |     100 |   97.36 |                   
  dashscope.ts     |   98.26 |     92.3 |     100 |   98.26 | 195-196,276-277   
  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           |   71.54 |    83.25 |   75.47 |   71.54 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  detect-ide.ts    |     100 |      100 |     100 |     100 |                   
  ide-client.ts    |   56.73 |    78.26 |    60.6 |   56.73 | ...05-813,839-847 
  ide-installer.ts |   89.06 |    79.31 |     100 |   89.06 | ...36,143-147,160 
  ideContext.ts    |     100 |      100 |     100 |     100 |                   
  process-utils.ts |   87.09 |    74.19 |     100 |   87.09 | ...25,156,166-167 
  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          |   84.41 |    78.98 |    97.1 |   84.41 |                   
  ...tGenerator.ts |   98.63 |    98.18 |     100 |   98.63 | 103-104           
  qwenOAuth2.ts    |   80.85 |     73.1 |   92.85 |   80.85 | ...25,865,880-896 
  ...kenManager.ts |   84.24 |    76.03 |     100 |   84.24 | ...52-757,778-783 
 src/services      |    86.4 |    82.42 |    90.9 |    86.4 |                   
  ...ionService.ts |    95.1 |    95.23 |     100 |    95.1 | 134-142           
  ...ingService.ts |   74.28 |    59.37 |    92.3 |   74.28 | ...77-389,405-406 
  ...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.39 |    75.28 |   88.23 |   79.39 | ...03-624,632-656 
  ...ionService.ts |   86.86 |    78.26 |     100 |   86.86 | ...68-669,673-678 
 src/subagents     |   82.32 |    78.27 |   83.11 |   82.32 |                   
  ...tin-agents.ts |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...ent-events.ts |   83.33 |      100 |      50 |   83.33 | 127-128,131-132   
  ...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 |   97.97 |    82.92 |     100 |   97.97 | 111,131,168,201   
  subagent.ts      |   76.23 |     60.5 |      68 |   76.23 | ...80-881,887-888 
  types.ts         |     100 |      100 |     100 |     100 |                   
  validation.ts    |    92.4 |    96.59 |     100 |    92.4 | 54-59,63-68,72-77 
 src/telemetry     |   73.08 |    88.21 |   76.78 |   73.08 |                   
  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 |    68.18 |   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.7 |    96.15 |   91.66 |    94.7 | 130,159-165       
 ...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.91 |    83.54 |   72.91 |   71.91 |                   
  event-types.ts   |       0 |        0 |       0 |       0 |                   
  qwen-logger.ts   |   71.91 |    83.33 |   72.34 |   71.91 | ...57-861,904-905 
 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.24 |     82.2 |   83.27 |   75.24 |                   
  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          |   96.05 |       88 |      90 |   96.05 | 91-97,215,218     
  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 |   80.89 |    66.66 |      80 |   80.89 | ...12-119,127-128 
  mcp-client.ts    |   28.38 |    69.56 |   48.38 |   28.38 | ...1329,1333-1336 
  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 
  shell.ts         |   86.66 |    77.77 |     100 |   86.66 | ...74-481,486-487 
  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 |    65.38 |   70.37 |      69 | ...22-427,435-443 
  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.11 |    88.75 |   87.63 |   84.11 |                   
  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   |   11.47 |       50 |    12.5 |   11.47 | ...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 |                   
  ...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 |    94.11 |     100 |      98 | 106-107           
  ...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 |      100 |     100 |     100 |                   
  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.

@Mingholy Mingholy marked this pull request as ready for review December 1, 2025 15:23

@tanzhenxin tanzhenxin 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.

I went through the non-SDK changes, and they all look good to me.

…pescript

- Introduced a new logging system with adjustable log levels (debug, info, warn, error).
- Updated query options to include a logLevel parameter for controlling verbosity.
- Refactored existing code to utilize the new logging system for better error handling and debugging.
- Cleaned up unused code and improved the structure of the SDK.
@Mingholy Mingholy force-pushed the mingholy/feat/cli-sdk-stage-1 branch from bc8b6fd to c18fed5 Compare December 4, 2025 09:27
@Mingholy Mingholy merged commit 43f23f8 into main Dec 4, 2025
13 checks passed
xaelistic pushed a commit to xaelistic/qwen-code that referenced this pull request Jun 7, 2026
xaelistic pushed a commit to xaelistic/qwen-code that referenced this pull request Jun 7, 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.

2 participants