Skip to content

Conversation

@acoliver
Copy link
Collaborator

@acoliver acoliver commented Jan 11, 2026

TLDR

Refactor sandbox env passthrough to use a shared helper and avoid re-parsing CLI args, with unit tests.

Summary

  • add getPassthroughEnvVars helper for sandbox env passthrough
  • refactor buildSandboxEnvArgs to build CLI args from helper
  • update sandbox env assembly to use passthrough helper explicitly
  • add tests covering passthrough helper and env arg formatting

Dive Deeper

The sandbox utilities now share a single passthrough map builder. buildSandboxEnvArgs formats that map as --env args, while sandbox execution merges the passthrough keys explicitly into the sandbox env without re-parsing CLI args. Tests cover edge cases and immutability expectations.

Reviewer Test Plan

  • npm run test

Testing Matrix

  • npm run format
  • npm run lint
  • npm run typecheck
  • npm run test
  • npm run build
  • node scripts/start.js --profile-load synthetic --prompt "write me a haiku"

Linked Issues

Fixes #1016

@github-actions github-actions bot added the maintainer:e2e:ok Trusted contributor; maintainer-approved E2E run label Jan 11, 2026
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 11, 2026

Walkthrough

Adds getPassthroughEnvVars() to extract passthrough environment variables, refactors buildSandboxEnvArgs() to delegate to it, updates sandbox usage to call the new helper, and adds comprehensive unit tests covering extraction, CLI formatting, special characters, and immutability.

Changes

Cohort / File(s) Summary
Sandbox utilities implementation
packages/cli/src/utils/sandbox.ts
Added getPassthroughEnvVars(env: NodeJS.ProcessEnv): Record<string,string>; refactored buildSandboxEnvArgs() to delegate to it; updated sandbox startup to use the helper.
Sandbox utilities tests
packages/cli/src/utils/sandbox.test.ts
Added comprehensive unit tests (~226 lines) for getPassthroughEnvVars() and buildSandboxEnvArgs(), covering empty inputs, multiple vars, values with equals/spaces/special chars, non-mutation, and output immutability.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related issues

Possibly related PRs

Poem

🐰 I hopped through envs with care and glee,
Pulled passthrough vars so clean and free,
I boxed them up, put args in line,
Tests confirmed each edge and sign,
A tidy sandbox—hoppy jubilee! 🥕

🚥 Pre-merge checks | ✅ 1 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Description check ⚠️ Warning The description is incomplete. It covers Summary and Testing sections but is missing required sections: TLDR, Dive Deeper, Reviewer Test Plan, Testing Matrix, and Linked issues. Add the required template sections: expand with TLDR context, include deeper discussion of design rationale, provide explicit reviewer test plan with example invocations, complete the Testing Matrix, and link any related issues.
✅ Passed checks (1 passed)
Check name Status Explanation
Title check ✅ Passed The title 'Refactor sandbox env passthrough' accurately describes the main change—refactoring environment variable passthrough logic in the sandbox utilities.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Contributor

github-actions bot commented Jan 11, 2026

I'll analyze this pull request that refactors the sandbox environment variable handling. Let me first understand the current implementation and the changes being made.

Now I have a good understanding of the changes made in this PR. Let me analyze them for the review.

The PR refactors the sandbox environment variable passthrough to:

  1. Introduce a new getPassthroughEnvVars helper that returns key-value pairs
  2. Refactor buildSandboxEnvArgs to use the helper and format as CLI args
  3. Update the sandbox execution to use the helper directly instead of parsing CLI args
  4. Add comprehensive tests for both functions

This addresses issue #1016 which suggested avoiding the indirect approach of creating CLI args and then parsing them back.

LLxprt PR Review – PR #1073

Issue Alignment

Side Effects

  • Minor API change in sandbox.ts but no breaking changes to external interfaces
  • No impact on configuration or other modules

Code Quality

  • Good separation of concerns with dedicated helper function
  • Strong type annotations with const assertion for passthrough variables
  • Proper value validation (typeof value === 'string' && value.length > 0)
  • Immutability preserved (input object not mutated)
  • Clear and readable implementation

Tests & Coverage

  • Coverage impact: increase - New test file covers all new functionality comprehensively (227 lines)
  • Tests cover edge cases like empty/undefined values, special characters, and immutability
  • No "mock theater" - tests focus on behavior and edge cases rather than implementation details
  • Both functions now have near-complete test coverage

Verdict

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In @packages/cli/src/utils/sandbox.test.ts:
- Around line 138-226: The test mistakenly compares the returned array from
buildSandboxEnvArgs to the input env object, which is always false; replace that
assertion by calling buildSandboxEnvArgs twice (e.g., result1 =
buildSandboxEnvArgs(env); result2 = buildSandboxEnvArgs(env);) and assert
result2 is not the same reference as result1 using not.toBe to ensure the
function returns a fresh array each call; update the test referencing
buildSandboxEnvArgs and the local env variable accordingly.
🧹 Nitpick comments (2)
packages/cli/src/utils/sandbox.ts (2)

56-76: Avoid per-iteration object spreads in getPassthroughEnvVars (unnecessary allocations).
Right now Line 66-75 creates a new object on every passthrough var; a simple loop is clearer and avoids churn. Also consider hoisting the passthrough list so it isn’t recreated each call.

Proposed refactor
+const PASSTHROUGH_VARIABLES = [
+  'LLXPRT_CODE_IDE_SERVER_PORT',
+  'LLXPRT_CODE_IDE_WORKSPACE_PATH',
+  'LLXPRT_CODE_WELCOME_CONFIG_PATH',
+  'TERM_PROGRAM',
+] as const;
+
 export function getPassthroughEnvVars(
   env: NodeJS.ProcessEnv,
 ): Record<string, string> {
-  const passthroughVariables = [
-    'LLXPRT_CODE_IDE_SERVER_PORT',
-    'LLXPRT_CODE_IDE_WORKSPACE_PATH',
-    'LLXPRT_CODE_WELCOME_CONFIG_PATH',
-    'TERM_PROGRAM',
-  ];
-
-  return passthroughVariables.reduce<Record<string, string>>(
-    (result, envVar) => {
-      const value = env[envVar];
-      if (!value) {
-        return result;
-      }
-      return { ...result, [envVar]: value };
-    },
-    {},
-  );
+  const result: Record<string, string> = {};
+  for (const envVar of PASSTHROUGH_VARIABLES) {
+    const value = env[envVar];
+    if (typeof value === 'string' && value.length > 0) {
+      result[envVar] = value;
+    }
+  }
+  return result;
 }

343-346: sandboxEnv spread of process.env + passthrough-from-process.env is redundant as written.
At Line 343-346, getPassthroughEnvVars(process.env) can’t add anything that isn’t already in ...process.env (it only re-selects from it). If this is meant as type-narrowing / “curated override” for specific keys, consider adding a short comment or using Object.assign to make the intent explicit.

📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between da2dad4 and 117eb9f.

📒 Files selected for processing (2)
  • packages/cli/src/utils/sandbox.test.ts
  • packages/cli/src/utils/sandbox.ts
🧰 Additional context used
🧬 Code graph analysis (1)
packages/cli/src/utils/sandbox.test.ts (1)
packages/cli/src/utils/sandbox.ts (2)
  • getPassthroughEnvVars (56-76)
  • buildSandboxEnvArgs (78-83)
⏰ Context from checks skipped due to timeout of 270000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (7)
  • GitHub Check: Test (windows-latest, 24.x)
  • GitHub Check: Test (macos-latest, 24.x)
  • GitHub Check: Test (ubuntu-latest, 24.x)
  • GitHub Check: E2E Test (Linux) - sandbox:docker
  • GitHub Check: Slow E2E - Win
  • GitHub Check: E2E Test (Linux) - sandbox:none
  • GitHub Check: E2E Test (macOS)
🔇 Additional comments (2)
packages/cli/src/utils/sandbox.ts (1)

78-83: buildSandboxEnvArgs delegation/formatting looks good.
The --env, KEY=VALUE flattening (Line 79-82) is straightforward and keeps quoting concerns correctly delegated to the process boundary (argv array).

packages/cli/src/utils/sandbox.test.ts (1)

7-136: Good coverage for getPassthroughEnvVars (empty/undefined/special chars + immutability).
No functional concerns. If you want to reduce repetition later, these could be table-driven, but current clarity is fine.

@github-actions
Copy link
Contributor

github-actions bot commented Jan 11, 2026

Code Coverage Summary

Package Lines Statements Functions Branches
CLI 44.12% 44.12% 53.89% 75.37%
Core 71.02% 71.02% 73.7% 78.79%
CLI Package - Full Text Report
-------------------|---------|----------|---------|---------|-------------------
File               | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
-------------------|---------|----------|---------|---------|-------------------
All files          |   44.12 |    75.37 |   53.89 |   44.12 |                   
 src               |    30.8 |       43 |      50 |    30.8 |                   
  gemini.tsx       |   14.62 |    57.14 |   28.57 |   14.62 | ...,334-1125,1133 
  ...ractiveCli.ts |   54.84 |    41.81 |   33.33 |   54.84 | ...67-374,376-384 
  ...liCommands.ts |   97.22 |       60 |     100 |   97.22 | 39-40             
  ...ActiveAuth.ts |      36 |    35.71 |      80 |      36 | ...64-169,186-195 
 src/auth          |   50.88 |    64.79 |   66.89 |   50.88 |                   
  ...andlerImpl.ts |   90.72 |    84.61 |   71.42 |   90.72 | ...48-149,155-159 
  ...henticator.ts |     100 |    95.23 |   83.33 |     100 | 170               
  ...ketManager.ts |     100 |      100 |     100 |     100 |                   
  ...h-provider.ts |   58.98 |    59.57 |   66.66 |   58.98 | ...84-518,526-549 
  ...h-provider.ts |   40.74 |    85.71 |   69.23 |   40.74 | ...72-485,489-531 
  ...h-provider.ts |   17.74 |       90 |   27.77 |   17.74 | ...31-562,568-587 
  ...l-oauth-ui.ts |   54.16 |      100 |      40 |   54.16 | 26-32,38-39,57-61 
  ...h-callback.ts |   82.94 |    75.67 |    90.9 |   82.94 | ...74-775,788-790 
  migration.ts     |       0 |        0 |       0 |       0 | 1-69              
  oauth-manager.ts |      52 |    55.33 |      75 |      52 | ...1880,1889-1906 
  ...h-provider.ts |   36.15 |    31.81 |      40 |   36.15 | ...52-490,498-534 
  types.ts         |     100 |      100 |     100 |     100 |                   
 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 |   45.47 |    97.14 |   32.14 |   45.47 |                   
  disable.ts       |   17.54 |      100 |       0 |   17.54 | 17-30,36-63,65-69 
  enable.ts        |   16.12 |      100 |       0 |   16.12 | 17-36,42-68,70-74 
  install.ts       |   93.22 |    95.45 |   66.66 |   93.22 | 138,141-147       
  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     |   44.11 |      100 |   33.33 |   44.11 | 14-22,34-39,42-45 
  update.ts        |   10.94 |      100 |       0 |   10.94 | ...42-157,159-163 
 ...les/mcp-server |       0 |        0 |       0 |       0 |                   
  example.ts       |       0 |        0 |       0 |       0 | 1-60              
 src/commands/mcp  |   97.15 |    86.44 |    90.9 |   97.15 |                   
  add.ts           |     100 |    96.15 |     100 |     100 | 210               
  list.ts          |   90.65 |    80.76 |      80 |   90.65 | ...11-113,138-139 
  remove.ts        |     100 |    71.42 |     100 |     100 | 19-23             
 src/config        |   84.04 |     79.6 |   75.55 |   84.04 |                   
  auth.ts          |   90.69 |    89.47 |     100 |   90.69 | 19-20,57-58       
  ...alSettings.ts |   86.66 |    88.88 |     100 |   86.66 | 40-41,44-47       
  config.ts        |   78.21 |    81.78 |      76 |   78.21 | ...1775,1778-1782 
  extension.ts     |   80.06 |    89.26 |   78.78 |   80.06 | ...87-788,791-792 
  keyBindings.ts   |     100 |      100 |     100 |     100 |                   
  paths.ts         |     100 |      100 |     100 |     100 |                   
  ...eBootstrap.ts |      86 |     82.5 |      90 |      86 | ...51-753,762-763 
  sandboxConfig.ts |   66.66 |    47.77 |   89.47 |   66.66 | ...87-494,512-513 
  ...oxProfiles.ts |    8.53 |      100 |       0 |    8.53 | 47-48,51-129      
  settings.ts      |   86.59 |    75.73 |      72 |   86.59 | ...73-774,828-829 
  ...ingsSchema.ts |     100 |      100 |     100 |     100 |                   
  ...tedFolders.ts |   97.94 |    95.45 |     100 |   97.94 | 86,180-181        
  welcomeConfig.ts |   21.05 |      100 |       0 |   21.05 | ...70,73-78,81-82 
 ...fig/extensions |    63.6 |     87.5 |   83.78 |    63.6 |                   
  ...Enablement.ts |   95.37 |    95.52 |     100 |   95.37 | ...87-189,233-235 
  github.ts        |   44.11 |    86.79 |   54.54 |   44.11 | ...57-344,395-448 
  update.ts        |   62.33 |    46.15 |   66.66 |   62.33 | ...19-145,161-169 
  ...ableSchema.ts |     100 |      100 |     100 |     100 |                   
  variables.ts     |   95.34 |    89.47 |     100 |   95.34 | 30-31             
 src/constants     |     100 |      100 |     100 |     100 |                   
  historyLimits.ts |     100 |      100 |     100 |     100 |                   
 src/extensions    |   65.75 |    57.89 |      75 |   65.75 |                   
  ...utoUpdater.ts |   65.75 |    57.89 |      75 |   65.75 | ...49-450,459,461 
 src/generated     |     100 |      100 |     100 |     100 |                   
  git-commit.ts    |     100 |      100 |     100 |     100 |                   
 ...egration-tests |   90.72 |    84.61 |     100 |   90.72 |                   
  test-utils.ts    |   90.72 |    84.61 |     100 |   90.72 | ...01,219-220,230 
 src/patches       |       0 |        0 |       0 |       0 |                   
  is-in-ci.ts      |       0 |        0 |       0 |       0 | 1-17              
 src/providers     |   82.64 |    68.29 |   83.67 |   82.64 |                   
  IFileSystem.ts   |    86.2 |    85.71 |   85.71 |    86.2 | 51-52,67-68       
  ...Precedence.ts |   94.59 |    86.66 |     100 |   94.59 | 40-41             
  index.ts         |       0 |        0 |       0 |       0 | 1-19              
  ...gistration.ts |   77.94 |    68.75 |   33.33 |   77.94 | ...,93-97,103-104 
  ...derAliases.ts |   74.35 |    70.37 |     100 |   74.35 | ...27-133,138-139 
  ...onfigUtils.ts |   92.45 |       75 |     100 |   92.45 | 25-29             
  ...erInstance.ts |   83.64 |    64.75 |   88.46 |   83.64 | ...49-753,770-774 
  types.ts         |       0 |        0 |       0 |       0 | 1-8               
 ...viders/logging |   87.59 |    88.63 |   63.63 |   87.59 |                   
  ...rvice-impl.ts |   44.44 |        0 |       0 |   44.44 | 21-22,25-30,36-37 
  git-stats.ts     |   94.59 |    90.69 |     100 |   94.59 | ...48-149,180-181 
 src/runtime       |   67.19 |    72.04 |   70.24 |   67.19 |                   
  ...imeAdapter.ts |   97.03 |    89.65 |     100 |   97.03 | ...38,344-345,541 
  ...etFailover.ts |   98.93 |    93.54 |     100 |   98.93 | 205               
  messages.ts      |      20 |      100 |       0 |      20 | ...0,38-66,74-102 
  ...pplication.ts |   82.78 |    71.31 |      70 |   82.78 | ...65-668,679-680 
  ...extFactory.ts |   91.28 |    72.41 |     100 |   91.28 | ...63-266,351-358 
  ...meSettings.ts |   55.55 |    66.55 |   56.06 |   55.55 | ...2174,2199-2253 
 src/services      |   71.55 |    87.34 |   82.35 |   71.55 |                   
  ...mandLoader.ts |     100 |      100 |     100 |     100 |                   
  ...ardService.ts |    91.3 |    33.33 |     100 |    91.3 | 35-36             
  ...andService.ts |     100 |      100 |     100 |     100 |                   
  ...mandLoader.ts |   88.77 |    90.47 |     100 |   88.77 | ...79-184,258-265 
  ...omptLoader.ts |   30.68 |    81.25 |      50 |   30.68 | ...80-281,284-288 
  types.ts         |       0 |        0 |       0 |       0 | 1                 
 ...mpt-processors |   97.56 |    94.11 |     100 |   97.56 |                   
  ...tProcessor.ts |     100 |      100 |     100 |     100 |                   
  ...lProcessor.ts |   97.36 |    93.61 |     100 |   97.36 | 77-78,202-203     
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...o-continuation |   86.01 |     78.4 |   94.11 |   86.01 |                   
  ...ionService.ts |   86.01 |     78.4 |   94.11 |   86.01 | ...94,562,588-589 
 src/settings      |   61.97 |    77.87 |     100 |   61.97 |                   
  ...alSettings.ts |   61.53 |    79.24 |     100 |   61.53 | ...26-437,440-446 
  ...aramParser.ts |   71.42 |    57.14 |     100 |   71.42 | 21-22,24-25,30-31 
 src/test-utils    |   40.68 |    78.57 |   42.85 |   40.68 |                   
  ...eExtension.ts |     100 |      100 |     100 |     100 |                   
  ...omMatchers.ts |   21.21 |      100 |       0 |   21.21 | 22-50             
  ...andContext.ts |     100 |      100 |     100 |     100 |                   
  render.tsx       |       0 |        0 |       0 |       0 | 1-149             
  ...e-testing.tsx |       0 |        0 |       0 |       0 | 1-54              
  ...iderConfig.ts |       0 |        0 |       0 |       0 | 1-19              
 src/ui            |   15.93 |    98.36 |   33.33 |   15.93 |                   
  App.tsx          |   33.89 |      100 |       0 |   33.89 | 50-86,92-99       
  AppContainer.tsx |    5.27 |      100 |       0 |    5.27 | 147-156,185-2393  
  ...tionNudge.tsx |       8 |      100 |       0 |       8 | 27-102            
  colors.ts        |   39.92 |      100 |   26.78 |   39.92 | ...86-287,291-292 
  constants.ts     |     100 |      100 |     100 |     100 |                   
  ...derOptions.ts |     100 |      100 |     100 |     100 |                   
  keyMatchers.ts   |   95.65 |    96.29 |     100 |   95.65 | 29-30             
  ...ntsEnabled.ts |     100 |      100 |     100 |     100 |                   
  ...submission.ts |     100 |      100 |     100 |     100 |                   
  ...tic-colors.ts |     100 |      100 |     100 |     100 |                   
  textConstants.ts |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/ui/commands   |   65.75 |    75.95 |   63.58 |   65.75 |                   
  aboutCommand.ts  |   74.81 |       24 |     100 |   74.81 | ...05,112-113,140 
  authCommand.ts   |   74.95 |     84.4 |   83.33 |   74.95 | ...39-642,652-676 
  ...urlCommand.ts |      30 |      100 |       0 |      30 | 20-40             
  bugCommand.ts    |   79.16 |     37.5 |     100 |   79.16 | 32-35,42,79-88    
  chatCommand.ts   |   63.38 |    77.27 |      50 |   63.38 | ...87-509,526-536 
  clearCommand.ts  |     100 |      100 |     100 |     100 |                   
  ...essCommand.ts |     100 |    88.88 |     100 |     100 | 71                
  copyCommand.ts   |   98.27 |    94.44 |     100 |   98.27 | 37                
  debugCommands.ts |   13.29 |      100 |       0 |   13.29 | ...48,455,462,469 
  ...icsCommand.ts |    62.5 |    57.14 |   33.33 |    62.5 | ...88,320,427-432 
  ...ryCommand.tsx |   16.86 |      100 |       0 |   16.86 | ...38-148,155-179 
  docsCommand.ts   |     100 |      100 |     100 |     100 |                   
  ...extCommand.ts |   93.18 |    77.77 |     100 |   93.18 | 108-113           
  editorCommand.ts |     100 |      100 |     100 |     100 |                   
  ...onsCommand.ts |   91.86 |    88.88 |     100 |   91.86 | 86-94,96          
  helpCommand.ts   |     100 |      100 |     100 |     100 |                   
  ideCommand.ts    |   66.35 |    68.96 |   55.55 |   66.35 | ...22-225,233-240 
  initCommand.ts   |   83.33 |    71.42 |   66.66 |   83.33 | 35-39,41-85       
  keyCommand.ts    |     100 |    77.77 |     100 |     100 | 47                
  ...ileCommand.ts |   11.11 |      100 |       0 |   11.11 | 23-134            
  ...ingCommand.ts |   10.96 |      100 |       0 |   10.96 | ...59-528,545-556 
  logoutCommand.ts |   15.62 |      100 |       0 |   15.62 | 21-85             
  mcpCommand.ts    |   82.35 |    82.22 |   83.33 |   82.35 | ...09-410,428-429 
  memoryCommand.ts |   88.82 |    83.87 |     100 |   88.82 | 69-83,96-101,152  
  modelCommand.ts  |   25.71 |      100 |       0 |   25.71 | 21-51             
  mouseCommand.ts  |     100 |      100 |     100 |     100 |                   
  ...onsCommand.ts |     100 |      100 |     100 |     100 |                   
  ...iesCommand.ts |   97.02 |    82.85 |     100 |   97.02 | 27,40-41          
  ...acyCommand.ts |   61.53 |      100 |       0 |   61.53 | 22-26             
  ...ileCommand.ts |   64.89 |    72.03 |   81.81 |   64.89 | ...24-929,949-963 
  ...derCommand.ts |   53.12 |    30.55 |      80 |   53.12 | ...58-262,270-275 
  quitCommand.ts   |   34.48 |      100 |       0 |   34.48 | 16-35             
  ...oreCommand.ts |   92.53 |     87.5 |     100 |   92.53 | ...,90-91,120-125 
  setCommand.ts    |   82.19 |    77.27 |      80 |   82.19 | ...98-803,845-858 
  ...ngsCommand.ts |     100 |      100 |     100 |     100 |                   
  ...hubCommand.ts |     100 |      100 |     100 |     100 |                   
  statsCommand.ts  |   94.33 |     90.9 |     100 |   94.33 | 26-34             
  statusCommand.ts |   13.63 |      100 |       0 |   13.63 | 20-87             
  ...entCommand.ts |   83.46 |    79.71 |   83.33 |   83.46 | ...18-624,651-664 
  ...tupCommand.ts |     100 |      100 |     100 |     100 |                   
  themeCommand.ts  |     100 |      100 |     100 |     100 |                   
  ...matCommand.ts |   26.66 |      100 |       0 |   26.66 | 33-92             
  toolsCommand.ts  |   84.98 |     74.6 |     100 |   84.98 | ...85-294,307-308 
  types.ts         |     100 |      100 |     100 |     100 |                   
  ...ileCommand.ts |   61.11 |      100 |       0 |   61.11 | 16-22             
  vimCommand.ts    |   44.44 |      100 |       0 |   44.44 | 14-24             
 ...ommands/schema |   96.22 |    91.02 |    92.3 |   96.22 |                   
  index.ts         |   96.45 |    91.61 |     100 |   96.45 | ...08-412,423-424 
  types.ts         |       0 |        0 |       0 |       0 | 1                 
 src/ui/components |    11.2 |     35.1 |    2.56 |    11.2 |                   
  AboutBox.tsx     |    4.03 |      100 |       0 |    4.03 | 27-161            
  AsciiArt.ts      |     100 |      100 |     100 |     100 |                   
  AuthDialog.tsx   |    6.29 |      100 |       0 |    6.29 | 27-194            
  ...nProgress.tsx |   16.66 |      100 |       0 |   16.66 | 18-62             
  ...Indicator.tsx |   15.15 |      100 |       0 |   15.15 | 17-47             
  ...firmation.tsx |    7.31 |      100 |       0 |    7.31 | 45-179            
  ...tsDisplay.tsx |    7.69 |      100 |       0 |    7.69 | 23-34,38-156      
  CliSpinner.tsx   |   38.46 |      100 |       0 |   38.46 | 16-24             
  Composer.tsx     |     9.8 |      100 |       0 |     9.8 | 24-73             
  ...entPrompt.tsx |   18.75 |      100 |       0 |   18.75 | 21-51             
  ...ryDisplay.tsx |   21.05 |      100 |       0 |   21.05 | 17-35             
  ...ryDisplay.tsx |    4.93 |      100 |       0 |    4.93 | 26-112            
  ...geDisplay.tsx |       0 |        0 |       0 |       0 | 1-37              
  ...gProfiler.tsx |   17.88 |      100 |       0 |   17.88 | ...71-116,120-199 
  ...esDisplay.tsx |   10.52 |      100 |       0 |   10.52 | 24-82             
  ...ogManager.tsx |   11.98 |      100 |       0 |   11.98 | 51-338            
  ...ngsDialog.tsx |    6.53 |      100 |       0 |    6.53 | 27-189            
  ...rBoundary.tsx |   10.16 |        0 |       0 |   10.16 | ...16-161,179-191 
  ...ustDialog.tsx |   15.73 |      100 |       0 |   15.73 | 31-123            
  Footer.tsx       |    8.94 |      100 |     100 |    8.94 | ...30-508,512-525 
  ...ngSpinner.tsx |    40.9 |      100 |       0 |    40.9 | 31-47             
  Header.tsx       |    17.5 |      100 |       0 |    17.5 | 22-62             
  Help.tsx         |    3.17 |      100 |       0 |    3.17 | 17-179            
  ...emDisplay.tsx |   18.32 |      100 |       0 |   18.32 | 50-180            
  InputPrompt.tsx  |   38.85 |     37.2 |   66.66 |   38.85 | ...7-915,929-1078 
  ...tsDisplay.tsx |    4.41 |      100 |       0 |    4.41 | 26-37,41-249      
  ...utManager.tsx |       0 |        0 |       0 |       0 | 1-97              
  ...ileDialog.tsx |    6.89 |      100 |       0 |    6.89 | 20-119            
  ...Indicator.tsx |   14.54 |      100 |       0 |   14.54 | 24-81             
  ...ingDialog.tsx |    4.52 |      100 |       0 |    4.52 | ...9,84-90,93-354 
  ...geDisplay.tsx |       0 |        0 |       0 |       0 | 1-40              
  ...tsDisplay.tsx |    6.28 |      100 |       0 |    6.28 | 33-52,56-214      
  ...fications.tsx |    14.1 |      100 |       0 |    14.1 | 28-105            
  ...odeDialog.tsx |    7.31 |      100 |       0 |    7.31 | 30-140            
  ...ustDialog.tsx |    6.21 |      100 |       0 |    6.21 | 30-237            
  PrepareLabel.tsx |   13.33 |      100 |       0 |   13.33 | 20-48             
  ...derDialog.tsx |    3.84 |      100 |       0 |    3.84 | 22-272            
  ...delDialog.tsx |    2.99 |      100 |       0 |    2.99 | 23-361            
  ...Indicator.tsx |       0 |        0 |       0 |       0 | 1-21              
  ...eKeyInput.tsx |       0 |        0 |       0 |       0 | 1-138             
  ...ryDisplay.tsx |      50 |      100 |       0 |      50 | 15-17             
  ...ngsDialog.tsx |    1.87 |      100 |       0 |    1.87 | ...9-108,111-1262 
  ...ionDialog.tsx |   13.95 |      100 |       0 |   13.95 | 35-125            
  ...Indicator.tsx |   44.44 |      100 |       0 |   44.44 | 12-17             
  ...MoreLines.tsx |      28 |      100 |       0 |      28 | 18-40             
  StatsDisplay.tsx |    6.82 |      100 |       0 |    6.82 | ...85-160,168-339 
  ...nsDisplay.tsx |    7.76 |      100 |       0 |    7.76 | 49-164            
  ThemeDialog.tsx  |    4.85 |      100 |       0 |    4.85 | 34-338            
  Tips.tsx         |      16 |      100 |       0 |      16 | 17-45             
  TodoPanel.tsx    |    5.55 |      100 |       0 |    5.55 | 26-74,77-245      
  ...tsDisplay.tsx |    7.42 |      100 |       0 |    7.42 | 30-53,56-228      
  ToolsDialog.tsx  |    7.86 |      100 |       0 |    7.86 | 23-119            
  ...ification.tsx |   36.36 |      100 |       0 |   36.36 | 15-22             
  ...ionDialog.tsx |    7.52 |      100 |       0 |    7.52 | 18-122            
  todo-utils.ts    |       0 |        0 |       0 |       0 | 1-7               
 ...leCreateWizard |   19.52 |       50 |       0 |   19.52 |                   
  ...aramsStep.tsx |    5.82 |      100 |       0 |    5.82 | 27-244            
  ...ationStep.tsx |    4.82 |      100 |       0 |    4.82 | 27-294            
  ...onfigStep.tsx |   11.23 |      100 |       0 |   11.23 | 25-119            
  ...electStep.tsx |    6.84 |      100 |       0 |    6.84 | 26-190            
  ...ationMenu.tsx |       0 |        0 |       0 |       0 | 1-101             
  ...eSaveStep.tsx |    6.28 |      100 |       0 |    6.28 | 33-255            
  ...ssSummary.tsx |   12.12 |      100 |       0 |   12.12 | 22-87             
  ...electStep.tsx |   16.92 |      100 |       0 |   16.92 | 27-94             
  TextInput.tsx    |     5.6 |      100 |       0 |     5.6 | 27-168            
  constants.ts     |     100 |      100 |     100 |     100 |                   
  index.tsx        |    6.27 |      100 |       0 |    6.27 | 28-296            
  types.ts         |     100 |      100 |     100 |     100 |                   
  utils.ts         |    5.22 |      100 |       0 |    5.22 | ...46-350,355-372 
  validation.ts    |   11.23 |      100 |       0 |   11.23 | ...97-104,107-111 
 ...gentManagement |     7.7 |      100 |       0 |     7.7 |                   
  ...entWizard.tsx |    4.06 |      100 |       0 |    4.06 | 33-238            
  ...ionWizard.tsx |    2.81 |      100 |       0 |    2.81 | 28-362            
  ...eteDialog.tsx |    6.59 |      100 |       0 |    6.59 | 21-126            
  ...tEditForm.tsx |    3.72 |      100 |       0 |    3.72 | 24-249            
  ...tListMenu.tsx |    3.97 |      100 |       0 |    3.97 | 25-236            
  ...tMainMenu.tsx |   18.75 |      100 |       0 |   18.75 | 19-49             
  ...gerDialog.tsx |    3.89 |      100 |       0 |    3.89 | 26-444            
  ...tShowView.tsx |    4.03 |      100 |       0 |    4.03 | 21-162            
  index.ts         |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...comeOnboarding |   10.51 |        0 |       0 |   10.51 |                   
  ...ethodStep.tsx |   16.86 |      100 |       0 |   16.86 | 37-122            
  ...ationStep.tsx |    5.42 |      100 |       0 |    5.42 | 28-180            
  ...etionStep.tsx |    5.08 |      100 |       0 |    5.08 | 22-164            
  ...electStep.tsx |    7.95 |      100 |       0 |    7.95 | 30-131            
  ...electStep.tsx |   23.07 |      100 |       0 |   23.07 | 33-92             
  SkipExitStep.tsx |    12.5 |      100 |       0 |    12.5 | 18-59             
  ...omeDialog.tsx |   12.38 |      100 |       0 |   12.38 | 37-146            
  WelcomeStep.tsx  |    10.2 |      100 |       0 |    10.2 | 23-74             
  index.ts         |       0 |        0 |       0 |       0 | 1-13              
 ...nents/messages |   13.25 |    85.71 |    7.14 |   13.25 |                   
  ...onMessage.tsx |   13.72 |      100 |       0 |   13.72 | 24-80             
  DiffRenderer.tsx |    3.33 |      100 |       0 |    3.33 | ...79-360,363-381 
  ErrorMessage.tsx |   22.22 |      100 |       0 |   22.22 | 16-31             
  ...niMessage.tsx |   16.07 |      100 |       0 |   16.07 | 27-83             
  ...geContent.tsx |   20.83 |      100 |       0 |   20.83 | 26-46             
  InfoMessage.tsx  |   26.31 |      100 |       0 |   26.31 | 17-32             
  ...rlMessage.tsx |     100 |       50 |     100 |     100 | 26                
  ...ckDisplay.tsx |      20 |      100 |       0 |      20 | 43-64             
  ...onMessage.tsx |    3.87 |      100 |       0 |    3.87 | 43-507            
  ...upMessage.tsx |   10.36 |      100 |       0 |   10.36 | ...2,65-80,84-254 
  ToolMessage.tsx  |    8.62 |      100 |       0 |    8.62 | ...98-332,335-338 
  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 |   17.17 |     18.6 |   15.38 |   17.17 |                   
  ...ctionList.tsx |    5.55 |      100 |       0 |    5.55 | 53-184            
  MaxSizedBox.tsx  |    2.37 |      100 |       0 |    2.37 | 23-50,99-625      
  ...tonSelect.tsx |   13.63 |      100 |       0 |   13.63 | 57-100            
  ...lableList.tsx |    8.49 |      100 |       0 |    8.49 | 45-153            
  ...lizedList.tsx |    2.29 |      100 |       0 |    2.29 | 56-486            
  text-buffer.ts   |   33.26 |     18.6 |   22.22 |   33.26 | ...1903-1906,1911 
  ...er-actions.ts |    0.78 |      100 |       0 |    0.78 | 26-39,78-814      
 ...mponents/views |    14.7 |      100 |       0 |    14.7 |                   
  ChatList.tsx     |    14.7 |      100 |       0 |    14.7 | 18-51             
 src/ui/constants  |   89.28 |      100 |       0 |   89.28 |                   
  ...ollections.ts |   89.28 |      100 |       0 |   89.28 | 224-245           
 src/ui/containers |       0 |        0 |       0 |       0 |                   
  ...ontroller.tsx |       0 |        0 |       0 |       0 | 1-340             
  UIStateShell.tsx |       0 |        0 |       0 |       0 | 1-15              
 src/ui/contexts   |   59.93 |    74.39 |      50 |   59.93 |                   
  ...chContext.tsx |    64.7 |      100 |      50 |    64.7 | 24-29             
  FocusContext.tsx |       0 |        0 |       0 |       0 | 1-11              
  ...ssContext.tsx |   83.02 |    79.02 |      92 |   83.02 | ...1231,1263-1266 
  MouseContext.tsx |   78.88 |    66.66 |     100 |   78.88 | ...98-102,108-118 
  ...erContext.tsx |       0 |        0 |       0 |       0 | 1-120             
  ...owContext.tsx |   19.64 |      100 |       0 |   19.64 | 33,36,39-87       
  ...meContext.tsx |   46.51 |       25 |   28.57 |   46.51 | ...89,193-194,199 
  ...lProvider.tsx |   89.16 |    69.81 |     100 |   89.16 | ...79-380,387-388 
  ...onContext.tsx |    6.73 |      100 |       0 |    6.73 | ...88-282,287-294 
  ...teContext.tsx |       0 |        0 |       0 |       0 | 1-61              
  ...gsContext.tsx |      50 |      100 |       0 |      50 | 15-20             
  ...ngContext.tsx |   42.85 |      100 |       0 |   42.85 | 15-22             
  TodoContext.tsx  |   55.55 |      100 |       0 |   55.55 | 19-22,24-27       
  TodoProvider.tsx |    6.94 |      100 |       0 |    6.94 | 24-105            
  ...llContext.tsx |     100 |      100 |       0 |     100 |                   
  ...lProvider.tsx |    6.75 |      100 |       0 |    6.75 | 28-122            
  ...nsContext.tsx |      25 |      100 |       0 |      25 | 172-183,186-191   
  ...teContext.tsx |   27.77 |      100 |       0 |   27.77 | 201-210,213-218   
  ...deContext.tsx |   11.11 |      100 |       0 |   11.11 | 29-81,84-89       
 src/ui/editors    |   94.11 |    85.71 |   66.66 |   94.11 |                   
  ...ngsManager.ts |   94.11 |    85.71 |   66.66 |   94.11 | 55,69-70          
 src/ui/hooks      |   19.36 |    44.97 |   16.83 |   19.36 |                   
  ...dProcessor.ts |    2.53 |        0 |       0 |    2.53 | 31,60-515         
  index.ts         |       0 |        0 |       0 |       0 | 1-10              
  ...dProcessor.ts |    13.2 |      100 |      50 |    13.2 | 33-61,79-308      
  ...dProcessor.ts |    2.62 |      100 |       0 |    2.62 | 83-738            
  ...Completion.ts |   22.22 |      100 |      50 |   22.22 | ...34-157,162-242 
  ...uthCommand.ts |    6.45 |      100 |       0 |    6.45 | 15-135            
  ...tIndicator.ts |    12.5 |      100 |       0 |    12.5 | 19-66             
  ...chedScroll.ts |   16.66 |      100 |       0 |   16.66 | 14-32             
  ...ketedPaste.ts |      20 |      100 |       0 |      20 | 20-38             
  ...ompletion.tsx |   52.34 |    27.27 |     100 |   52.34 | ...08-251,264-280 
  useCompletion.ts |   45.56 |      100 |     100 |   45.56 | ...8,52-77,81-107 
  ...leMessages.ts |       5 |      100 |       0 |       5 | 29-65,68-118      
  ...fileDialog.ts |   16.12 |      100 |       0 |   16.12 | 17-47             
  ...orSettings.ts |   11.11 |      100 |       0 |   11.11 | 29-81             
  ...AutoUpdate.ts |    9.52 |      100 |       0 |    9.52 | 18-58             
  ...ionUpdates.ts |    4.36 |      100 |       0 |    4.36 | 36-48,51-244      
  ...erDetector.ts |   22.72 |      100 |       0 |   22.72 | 27-43             
  useFocus.ts      |    25.8 |      100 |       0 |    25.8 | 19-48             
  ...olderTrust.ts |   10.46 |      100 |       0 |   10.46 | 24-112            
  ...miniStream.ts |   51.03 |    48.87 |      40 |   51.03 | ...1387,1412-1514 
  ...BranchName.ts |   11.66 |      100 |       0 |   11.66 | 14-79             
  ...oryManager.ts |    5.22 |      100 |       0 |    5.22 | 53-212            
  ...stListener.ts |   12.12 |      100 |       0 |   12.12 | 17-50             
  ...putHistory.ts |    3.75 |      100 |       0 |    3.75 | 24-111            
  ...storyStore.ts |    4.61 |      100 |       0 |    4.61 | 24-112            
  useKeypress.ts   |   21.05 |      100 |       0 |   21.05 | 24-41             
  ...rdProtocol.ts |   36.36 |      100 |       0 |   36.36 | 24-31             
  ...fileDialog.ts |    5.71 |      100 |       0 |    5.71 | 27-135            
  ...gIndicator.ts |   12.24 |      100 |       0 |   12.24 | 14-64             
  useLogger.ts     |   93.75 |      100 |     100 |   93.75 | 26                
  ...oryMonitor.ts |      25 |      100 |       0 |      25 | 19-41             
  useMouse.ts      |   77.77 |    66.66 |     100 |   77.77 | 22-25             
  ...eSelection.ts |    3.13 |      100 |       0 |    3.13 | 36-103,106-315    
  ...oviderInfo.ts |       0 |        0 |       0 |       0 | 1-80              
  ...odifyTrust.ts |    9.09 |      100 |       0 |    9.09 | 46-137            
  ...raseCycler.ts |    9.43 |      100 |       0 |    9.43 | 24-80             
  ...cySettings.ts |    3.38 |      100 |       0 |    3.38 | 17-26,36-156      
  ...Completion.ts |   29.41 |       40 |     100 |   29.41 | ...14-227,236-242 
  ...iderDialog.ts |    7.89 |      100 |       0 |    7.89 | 27-110            
  ...odelDialog.ts |    9.37 |      100 |       0 |    9.37 | 25-86             
  ...lScheduler.ts |   21.22 |    29.41 |   66.66 |   21.22 | ...74-479,481-491 
  ...oryCommand.ts |       0 |        0 |       0 |       0 | 1-7               
  useResponsive.ts |   28.57 |      100 |       0 |   28.57 | 23-33             
  ...ompletion.tsx |   69.56 |      100 |     100 |   69.56 | 45-47,51-66,78-81 
  ...ectionList.ts |    2.94 |      100 |       0 |    2.94 | ...01-229,243-448 
  useSession.ts    |       0 |        0 |       0 |       0 | 1-23              
  ...ngsCommand.ts |   18.75 |      100 |       0 |   18.75 | 10-25             
  ...ellHistory.ts |    6.48 |      100 |       0 |    6.48 | 22-70,73-138      
  ...oryCommand.ts |       0 |        0 |       0 |       0 | 1-62              
  ...ompletion.tsx |   32.05 |    31.57 |      25 |   32.05 | ...89-797,822-860 
  ...leCallback.ts |       0 |        0 |       0 |       0 | 1-70              
  ...tateAndRef.ts |   59.09 |      100 |     100 |   59.09 | 23-31             
  ...oryRefresh.ts |   10.34 |      100 |       0 |   10.34 | 17-48             
  ...rminalSize.ts |   11.42 |      100 |       0 |   11.42 | 13-55             
  ...emeCommand.ts |    6.03 |      100 |       0 |    6.03 | 26-151            
  useTimer.ts      |    7.14 |      100 |       0 |    7.14 | 16-65             
  ...ntinuation.ts |       0 |        0 |       0 |       0 | 1-270             
  ...ePreserver.ts |   48.48 |      100 |      75 |   48.48 | 33-50             
  ...oolsDialog.ts |    4.67 |      100 |       0 |    4.67 | 24-145            
  ...Onboarding.ts |    2.96 |      100 |       0 |    2.96 | 76-348            
  ...eMigration.ts |   10.34 |      100 |       0 |   10.34 | 14-72             
  vim.ts           |    6.13 |      100 |       0 |    6.13 | ...76-111,129-784 
 src/ui/layouts    |    5.37 |      100 |       0 |    5.37 |                   
  ...AppLayout.tsx |    5.37 |      100 |       0 |    5.37 | 57-74,77-638      
 ...noninteractive |      75 |      100 |    6.66 |      75 |                   
  ...eractiveUi.ts |      75 |      100 |    6.66 |      75 | 17-19,23-24,27-28 
 src/ui/privacy    |   25.78 |      100 |       0 |   25.78 |                   
  ...acyNotice.tsx |   10.97 |      100 |       0 |   10.97 | 22-123            
  ...acyNotice.tsx |   14.28 |      100 |       0 |   14.28 | 16-59             
  ...acyNotice.tsx |   12.19 |      100 |       0 |   12.19 | 16-62             
  ...acyNotice.tsx |   41.33 |      100 |       0 |   41.33 | 78-91,99-193      
  ...acyNotice.tsx |   21.95 |      100 |       0 |   21.95 | 20-59,62-64       
 src/ui/reducers   |   78.07 |     90.9 |      50 |   78.07 |                   
  appReducer.ts    |     100 |      100 |     100 |     100 |                   
  ...ionReducer.ts |       0 |        0 |       0 |       0 | 1-52              
 src/ui/state      |   21.51 |      100 |       0 |   21.51 |                   
  extensions.ts    |   21.51 |      100 |       0 |   21.51 | 68-130            
 src/ui/themes     |   99.13 |    89.38 |      96 |   99.13 |                   
  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 |                   
  green-screen.ts  |     100 |      100 |     100 |     100 |                   
  no-color.ts      |     100 |      100 |     100 |     100 |                   
  ...c-resolver.ts |     100 |      100 |     100 |     100 |                   
  ...tic-tokens.ts |     100 |      100 |     100 |     100 |                   
  ...-of-purple.ts |     100 |      100 |     100 |     100 |                   
  theme-compat.ts  |     100 |       50 |     100 |     100 | 79                
  theme-manager.ts |   89.74 |    82.53 |     100 |   89.74 | ...04-310,315-316 
  theme.ts         |   99.41 |      100 |   85.71 |   99.41 | 185-186           
  xcode.ts         |     100 |      100 |     100 |     100 |                   
 src/ui/utils      |   43.49 |    86.63 |   63.41 |   43.49 |                   
  ...Colorizer.tsx |    5.76 |      100 |       0 |    5.76 | ...16-128,140-232 
  ...olePatcher.ts |      78 |    77.77 |     100 |      78 | 58-69             
  ...nRenderer.tsx |    9.39 |      100 |       0 |    9.39 | 26-165,174-183    
  ...wnDisplay.tsx |    5.73 |      100 |       0 |    5.73 | ...96-420,431-435 
  ...eRenderer.tsx |   10.63 |      100 |       0 |   10.63 | ...32-247,260-395 
  ...ketedPaste.ts |   55.55 |      100 |       0 |   55.55 | 11-12,15-16       
  clipboard.ts     |   97.29 |    84.61 |     100 |   97.29 | 40                
  ...boardUtils.ts |   32.25 |     37.5 |     100 |   32.25 | ...55-114,129-145 
  commandUtils.ts  |   93.44 |    89.79 |     100 |   93.44 | ...31,135,137-138 
  computeStats.ts  |     100 |      100 |     100 |     100 |                   
  displayUtils.ts  |     100 |      100 |     100 |     100 |                   
  formatters.ts    |   90.47 |       95 |     100 |   90.47 | 57-60             
  fuzzyFilter.ts   |     100 |    96.42 |     100 |     100 | 75                
  highlight.ts     |   65.43 |      100 |   66.66 |   65.43 | 77-110            
  input.ts         |     100 |    85.71 |     100 |     100 | 18                
  ...olDetector.ts |    9.09 |       50 |   16.66 |    9.09 | ...51-152,155-156 
  ...nUtilities.ts |   69.84 |    85.71 |     100 |   69.84 | 75-91,100-101     
  mouse.ts         |   85.16 |    73.68 |     100 |   85.16 | ...18-219,223-224 
  ...mConstants.ts |     100 |      100 |     100 |     100 |                   
  ...opDetector.ts |       0 |        0 |       0 |       0 | 1-209             
  responsive.ts    |    69.9 |    73.33 |      80 |    69.9 | ...95-103,106-121 
  ...putHandler.ts |   87.36 |    90.32 |     100 |   87.36 | 52-53,74-83       
  ...alContract.ts |     100 |      100 |     100 |     100 |                   
  terminalLinks.ts |     100 |      100 |     100 |     100 |                   
  ...lSequences.ts |     100 |      100 |     100 |     100 |                   
  terminalSetup.ts |    4.03 |      100 |       0 |    4.03 | 40-340            
  textUtils.ts     |   74.77 |    94.59 |   72.72 |   74.77 | ...14-115,135-137 
  ...Formatters.ts |   17.39 |      100 |       0 |   17.39 | 14-21,29-36,50-52 
  ...icsTracker.ts |     100 |    66.66 |     100 |     100 | 32-34             
  ui-sizing.ts     |   21.05 |      100 |       0 |   21.05 | 11-23,26-31       
  updateCheck.ts   |     100 |    93.75 |     100 |     100 | 28,39             
 src/utils         |   56.29 |    89.75 |   81.45 |   56.29 |                   
  ...ionContext.ts |   79.59 |       75 |     100 |   79.59 | 37-40,62-63,78-81 
  bootstrap.ts     |   94.11 |    88.88 |     100 |   94.11 | 71-72             
  checks.ts        |   33.33 |      100 |       0 |   33.33 | 23-28             
  cleanup.ts       |   72.72 |      100 |      75 |   72.72 | 43-52             
  commands.ts      |    50.9 |    63.63 |     100 |    50.9 | 25-26,45,57-84    
  commentJson.ts   |   92.17 |     92.5 |     100 |   92.17 | 92-100            
  ...ScopeUtils.ts |   19.23 |      100 |       0 |   19.23 | 23-40,46-73       
  ...icSettings.ts |   88.61 |    88.88 |     100 |   88.61 | ...37,40-43,61-64 
  ...arResolver.ts |   96.42 |       96 |     100 |   96.42 | 111-112           
  errors.ts        |   94.59 |       88 |     100 |   94.59 | 49-50,88-89       
  events.ts        |     100 |      100 |     100 |     100 |                   
  gitUtils.ts      |    92.5 |    82.35 |     100 |    92.5 | 61-62,77-80       
  ...AutoUpdate.ts |   52.71 |    95.23 |      50 |   52.71 | 88-153            
  ...lationInfo.ts |     100 |      100 |     100 |     100 |                   
  math.ts          |   66.66 |      100 |       0 |   66.66 | 15                
  package.ts       |   88.88 |    83.33 |     100 |   88.88 | 33-34             
  readStdin.ts     |   79.24 |       90 |      80 |   79.24 | 31-38,50-52       
  relaunch.ts      |     100 |      100 |     100 |     100 |                   
  resolvePath.ts   |   66.66 |       25 |     100 |   66.66 | 12-13,16,18-19    
  sandbox.ts       |    5.46 |      100 |   18.18 |    5.46 | 31-42,103-1199    
  ...ionCleanup.ts |   94.58 |    87.69 |     100 |   94.58 | ...74-175,256-257 
  sessionUtils.ts  |    9.23 |      100 |       0 |    9.23 | 43-99,106-120     
  settingsUtils.ts |   84.14 |    90.52 |   93.33 |   84.14 | ...12-439,478-479 
  ...ttingSaver.ts |    1.92 |      100 |       0 |    1.92 | 7-28,36-81        
  spawnWrapper.ts  |     100 |      100 |     100 |     100 |                   
  ...upWarnings.ts |     100 |      100 |     100 |     100 |                   
  stdinSafety.ts   |   93.24 |    86.48 |     100 |   93.24 | ...62-163,167,242 
  ...entEmitter.ts |     100 |      100 |     100 |     100 |                   
  ...upWarnings.ts |     100 |      100 |     100 |     100 |                   
  version.ts       |     100 |       50 |     100 |     100 | 11                
  windowTitle.ts   |     100 |      100 |     100 |     100 |                   
 src/utils/privacy |    46.3 |    68.57 |   52.63 |    46.3 |                   
  ...taRedactor.ts |   60.66 |    70.58 |   55.55 |   60.66 | ...77-479,485-506 
  ...acyManager.ts |       0 |        0 |       0 |       0 | 1-178             
 ...ed-integration |   22.35 |        0 |       0 |   22.35 |                   
  acp.ts           |   14.63 |        0 |       0 |   14.63 | ...31-332,335-342 
  ...temService.ts |   20.58 |      100 |       0 |   20.58 | ...34,37-46,48-49 
  schema.ts        |     100 |      100 |     100 |     100 |                   
  ...ntegration.ts |    4.43 |      100 |       0 |    4.43 | ...1442,1457-1507 
-------------------|---------|----------|---------|---------|-------------------
Core Package - Full Text Report
-------------------|---------|----------|---------|---------|-------------------
File               | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
-------------------|---------|----------|---------|---------|-------------------
All files          |   71.02 |    78.79 |    73.7 |   71.02 |                   
 src               |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
 src/__mocks__/fs  |       0 |        0 |       0 |       0 |                   
  promises.ts      |       0 |        0 |       0 |       0 | 1-48              
 src/adapters      |     100 |      100 |     100 |     100 |                   
  ...eamAdapter.ts |     100 |      100 |     100 |     100 |                   
 src/agents        |   77.47 |     68.1 |      90 |   77.47 |                   
  ...vestigator.ts |       0 |        0 |       0 |       0 | 1-152             
  executor.ts      |   88.23 |    67.03 |     100 |   88.23 | ...03-704,740-746 
  invocation.ts    |   96.34 |    76.47 |     100 |   96.34 | 61,65-66          
  registry.ts      |       0 |        0 |       0 |       0 | 1-83              
  types.ts         |     100 |      100 |     100 |     100 |                   
  utils.ts         |   78.94 |       80 |     100 |   78.94 | 32-35             
 src/auth          |   65.13 |    79.54 |   75.53 |   65.13 |                   
  ...evice-flow.ts |    7.21 |        0 |       0 |    7.21 | ...49-268,274-282 
  ...evice-flow.ts |   46.65 |    57.14 |   63.63 |   46.65 | ...95-484,494-580 
  oauth-errors.ts  |   94.15 |    83.33 |     100 |   94.15 | ...68,609,635-636 
  precedence.ts    |   76.75 |    78.15 |   94.44 |   76.75 | ...1028,1034-1037 
  ...evice-flow.ts |    8.33 |      100 |       0 |    8.33 | ...69-206,214-220 
  token-store.ts   |   77.96 |    88.09 |    90.9 |   77.96 | ...51-272,297-298 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/code_assist   |   68.18 |     79.6 |      78 |   68.18 |                   
  codeAssist.ts    |   16.25 |       50 |   33.33 |   16.25 | ...1,80-87,95-108 
  converter.ts     |    94.9 |    93.02 |     100 |    94.9 | ...84,198,215-216 
  ...al-storage.ts |     100 |    79.41 |     100 |     100 | 47-49,80-83       
  oauth2.ts        |    63.4 |    75.29 |   78.57 |    63.4 | ...16-717,722-723 
  server.ts        |   51.89 |    72.72 |   53.84 |   51.89 | ...99-240,243-246 
  setup.ts         |   82.92 |    73.91 |     100 |   82.92 | ...27-129,153-159 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/config        |   75.26 |     80.3 |    60.4 |   75.26 |                   
  config.ts        |   72.79 |    79.37 |   47.58 |   72.79 | ...1820,1826-1830 
  constants.ts     |     100 |      100 |     100 |     100 |                   
  endpoints.ts     |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  models.ts        |     100 |      100 |     100 |     100 |                   
  ...ileManager.ts |    94.8 |    85.07 |     100 |    94.8 | ...57-358,364,367 
  storage.ts       |   93.25 |    95.65 |   91.66 |   93.25 | 27-28,49-50,75-76 
  ...entManager.ts |   57.91 |    65.57 |     100 |   57.91 | ...57-458,476-500 
  types.ts         |       0 |        0 |       0 |       0 |                   
 ...nfirmation-bus |   68.39 |    88.46 |   66.66 |   68.39 |                   
  index.ts         |       0 |        0 |       0 |       0 | 1-2               
  message-bus.ts   |   67.48 |    91.66 |   72.72 |   67.48 | ...04-238,247-255 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/core          |   65.58 |    72.83 |   70.71 |   65.58 |                   
  baseLlmClient.ts |   97.26 |       90 |     100 |   97.26 | 55-56,244-245     
  ...ntegration.ts |   96.29 |       95 |     100 |   96.29 | ...18-119,199-200 
  client.ts        |   62.12 |    78.23 |   69.81 |   62.12 | ...2043,2048-2059 
  ...ion-config.ts |     100 |      100 |     100 |     100 |                   
  ...tGenerator.ts |   91.08 |    80.76 |     100 |   91.08 | ...32,148,163-166 
  ...lScheduler.ts |   77.04 |    75.78 |   94.73 |   77.04 | ...1874,1878-1884 
  geminiChat.ts    |   53.46 |    57.14 |   56.79 |   53.46 | ...2779,2802-2803 
  geminiRequest.ts |     100 |      100 |     100 |     100 |                   
  ...nAIWrapper.ts |   88.88 |      100 |   83.33 |   88.88 | 56-59             
  logger.ts        |   81.26 |    81.81 |     100 |   81.26 | ...64-378,419-430 
  ...tGenerator.ts |   10.89 |      100 |       0 |   10.89 | ...93-194,197-200 
  ...olExecutor.ts |   63.28 |    62.74 |   65.21 |   63.28 | ...06-440,449-465 
  prompts.ts       |   67.98 |    65.62 |      70 |   67.98 | ...95,311,352-355 
  subagent.ts      |   53.35 |    65.42 |   59.25 |   53.35 | ...1925,1937-1938 
  ...chestrator.ts |    89.1 |    73.56 |   95.23 |    89.1 | ...17,620-621,626 
  ...tScheduler.ts |       0 |        0 |       0 |       0 | 1                 
  tokenLimits.ts   |   90.27 |    73.07 |     100 |   90.27 | ...72,77,79,83,93 
  ...Governance.ts |    94.2 |     90.9 |     100 |    94.2 | 34-35,51-52       
  turn.ts          |   88.42 |    73.21 |     100 |   88.42 | ...24-425,455-456 
 src/debug         |   79.16 |    88.43 |   89.65 |   79.16 |                   
  ...ionManager.ts |   77.88 |    78.04 |      85 |   77.88 | ...33-234,251-255 
  DebugLogger.ts   |   91.07 |    90.32 |      88 |   91.07 | ...72,211-215,252 
  FileOutput.ts    |   96.82 |    95.23 |     100 |   96.82 | 82-83,107-108     
  ...ionManager.ts |       0 |      100 |     100 |       0 | 18-64             
  ...FileOutput.ts |       0 |      100 |     100 |       0 | 15-37             
  index.ts         |     100 |      100 |     100 |     100 |                   
  types.ts         |       0 |        0 |       0 |       0 |                   
 src/filters       |   99.19 |     98.8 |     100 |   99.19 |                   
  EmojiFilter.ts   |   99.19 |     98.8 |     100 |   99.19 | 208-209           
 src/hooks         |   88.88 |    33.33 |     100 |   88.88 |                   
  ...ssion-hook.ts |   88.88 |    33.33 |     100 |   88.88 | 24,30             
 src/ide           |   72.88 |    84.43 |      74 |   72.88 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  detect-ide.ts    |     100 |      100 |     100 |     100 |                   
  ide-client.ts    |   54.56 |    75.51 |   56.66 |   54.56 | ...62-470,498-506 
  ide-installer.ts |   90.55 |    85.18 |     100 |   90.55 | ...35,142-146,159 
  ideContext.ts    |    83.8 |      100 |     100 |    83.8 | 75-91             
  process-utils.ts |   89.13 |    81.48 |     100 |   89.13 | ...69-170,211-212 
 src/interfaces    |       0 |        0 |       0 |       0 |                   
  index.ts         |       0 |        0 |       0 |       0 |                   
  ....interface.ts |       0 |        0 |       0 |       0 |                   
 src/mcp           |    78.5 |    77.04 |   71.95 |    78.5 |                   
  ...oken-store.ts |   87.38 |    90.47 |   81.25 |   87.38 | ...33-334,337-338 
  ...h-provider.ts |   83.01 |      100 |      25 |   83.01 | ...69,73,77,81-82 
  ...h-provider.ts |   73.14 |    53.68 |     100 |   73.14 | ...04-811,818-820 
  ...en-storage.ts |    81.5 |    88.88 |   68.18 |    81.5 | ...95-196,201-202 
  oauth-utils.ts   |   70.33 |    81.48 |    90.9 |   70.33 | ...62-283,308-331 
  ...n-provider.ts |   89.28 |    95.65 |      40 |   89.28 | ...37,141,145-146 
  token-store.ts   |     100 |      100 |     100 |     100 |                   
 .../token-storage |   90.08 |    86.86 |   95.34 |   90.08 |                   
  ...en-storage.ts |     100 |      100 |     100 |     100 |                   
  ...en-storage.ts |   86.61 |    87.09 |   92.85 |   86.61 | ...64-172,180-181 
  ...en-storage.ts |     100 |      100 |     100 |     100 |                   
  ...en-storage.ts |   87.43 |    80.82 |    92.3 |   87.43 | ...20,222,274-275 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/parsers       |   68.08 |       75 |   83.33 |   68.08 |                   
  ...CallParser.ts |   68.08 |       75 |   83.33 |   68.08 | ...1018,1024-1039 
 src/policy        |    88.1 |    81.29 |   86.95 |    88.1 |                   
  config.ts        |   91.01 |    84.21 |     100 |   91.01 | ...05,150,155-157 
  index.ts         |       0 |        0 |       0 |       0 | 1-5               
  policy-engine.ts |     100 |    97.67 |     100 |     100 | 23                
  ...-stringify.ts |   80.23 |    60.52 |      50 |   80.23 | ...22-126,139-140 
  toml-loader.ts   |   87.16 |    83.78 |     100 |   87.16 | ...03-204,215-223 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/prompt-config |   74.43 |    83.78 |   85.05 |   74.43 |                   
  ...lateEngine.ts |   91.75 |    85.91 |     100 |   91.75 | ...48-249,264-267 
  index.ts         |       0 |      100 |     100 |       0 | 5-41              
  prompt-cache.ts  |   99.06 |     97.4 |     100 |   99.06 | 211-212           
  ...-installer.ts |   83.11 |     82.4 |     100 |   83.11 | ...1173,1253-1254 
  prompt-loader.ts |   87.27 |    90.42 |   76.92 |   87.27 | ...22-423,429-430 
  ...t-resolver.ts |   34.85 |    64.17 |   53.84 |   34.85 | ...20-771,774-802 
  ...pt-service.ts |   82.35 |    83.33 |   78.94 |   82.35 | ...37,568,580-581 
  ...delegation.ts |   58.33 |       50 |     100 |   58.33 | 24-34             
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...onfig/defaults |   50.17 |    46.75 |     100 |   50.17 |                   
  core-defaults.ts |   37.54 |    39.02 |     100 |   37.54 | ...72,283,289-297 
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...est-loader.ts |   81.81 |    79.31 |     100 |   81.81 | ...02-108,116-120 
  ...t-warnings.ts |      92 |    33.33 |     100 |      92 | 17-18             
  ...r-defaults.ts |    41.7 |    39.02 |     100 |    41.7 | ...40,251,257-262 
  ...e-defaults.ts |     100 |      100 |     100 |     100 |                   
  tool-defaults.ts |      50 |       40 |     100 |      50 | ...11-216,229-234 
 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/providers     |   68.76 |    77.82 |   67.21 |   68.76 |                   
  BaseProvider.ts  |   80.78 |    79.46 |   80.76 |   80.78 | ...1154,1191-1192 
  ...eratorRole.ts |     100 |      100 |     100 |     100 |                   
  IModel.ts        |       0 |        0 |       0 |       0 |                   
  IProvider.ts     |       0 |        0 |       0 |       0 |                   
  ...derManager.ts |     100 |      100 |     100 |     100 |                   
  ITool.ts         |       0 |        0 |       0 |       0 |                   
  ...ngProvider.ts |   87.91 |     89.6 |   90.62 |   87.91 | ...1106,1137-1139 
  ...derWrapper.ts |   56.67 |     64.4 |   51.28 |   56.67 | ...1355,1362-1369 
  ...tGenerator.ts |    17.3 |      100 |       0 |    17.3 | ...59,62-79,82-85 
  ...derManager.ts |   60.16 |    73.07 |   60.46 |   60.16 | ...1437-1438,1441 
  errors.ts        |   78.57 |    77.77 |      60 |   78.57 | ...43,150-170,191 
  types.ts         |       0 |        0 |       0 |       0 | 1                 
 ...ders/anthropic |   74.35 |    76.77 |      75 |   74.35 |                   
  ...icProvider.ts |   76.28 |    79.73 |   75.51 |   76.28 | ...2546,2554-2555 
  ...aConverter.ts |   52.53 |    44.11 |   71.42 |   52.53 | ...57,263,280-288 
 ...oviders/gemini |   56.39 |    67.94 |   48.78 |   56.39 |                   
  ...niProvider.ts |   51.86 |    56.97 |   46.15 |   51.86 | ...1866,1875-1876 
  ...Signatures.ts |     100 |    98.38 |     100 |     100 | 182               
 ...viders/logging |   39.53 |       80 |      75 |   39.53 |                   
  ...tExtractor.ts |       0 |        0 |       0 |       0 | 1-228             
  ...nceTracker.ts |   89.47 |    84.21 |   81.81 |   89.47 | ...66-167,182-183 
 ...oviders/openai |   52.42 |    74.31 |   60.73 |   52.42 |                   
  ...ationCache.ts |   70.49 |    86.66 |   82.35 |   70.49 | ...64-166,216-217 
  ...rateParams.ts |       0 |        0 |       0 |       0 |                   
  ...AIProvider.ts |   40.22 |    65.22 |   46.15 |   40.22 | ...4962,4970-4979 
  ...API_MODELS.ts |     100 |      100 |     100 |     100 |                   
  ...lCollector.ts |   93.33 |    89.28 |     100 |   93.33 | ...51-153,173-174 
  ...Normalizer.ts |   92.75 |       96 |     100 |   92.75 | 74-78             
  ...llPipeline.ts |   64.54 |    53.33 |      75 |   64.54 | ...34-143,174-184 
  ...eValidator.ts |   94.02 |    93.75 |     100 |   94.02 | 106-109           
  ...sesRequest.ts |   83.56 |    93.24 |     100 |   83.56 | ...60,293,298-303 
  ...moteTokens.ts |   89.55 |     92.3 |     100 |   89.55 | 101-107           
  ...oviderInfo.ts |    86.2 |    73.52 |     100 |    86.2 | ...31-133,144-145 
  ...uestParams.ts |   93.81 |     82.6 |     100 |   93.81 | ...,95-96,105-106 
  ...nsesStream.ts |   88.43 |    86.66 |     100 |   88.43 | ...80,203-210,234 
  ...aConverter.ts |    24.2 |    42.85 |   28.57 |    24.2 | ...59-260,277-285 
  ...lResponses.ts |   71.98 |    73.91 |      75 |   71.98 | ...97-301,321-335 
  test-types.ts    |       0 |        0 |       0 |       0 |                   
  toolNameUtils.ts |   96.79 |    95.45 |      50 |   96.79 | 102,127,239-241   
 ...enai-responses |   63.96 |    74.07 |   43.75 |   63.96 |                   
  CODEX_MODELS.ts  |     100 |      100 |     100 |     100 |                   
  CODEX_PROMPT.ts  |   33.33 |      100 |       0 |   33.33 | 36-39             
  ...esProvider.ts |   75.95 |    78.37 |   54.54 |   75.95 | ...31,847,851-852 
  ...romContent.ts |   84.93 |    66.66 |     100 |   84.93 | 45-49,71-75,94    
  index.ts         |       0 |        0 |       0 |       0 | 1                 
  ...aConverter.ts |    8.12 |       20 |   14.28 |    8.12 | ...53-277,280-289 
 .../openai-vercel |    66.9 |    67.48 |   66.66 |    66.9 |                   
  ...elProvider.ts |   63.96 |    65.01 |   54.34 |   63.96 | ...1940,1950-2005 
  errors.ts        |   93.23 |    82.05 |     100 |   93.23 | ...50-151,165-169 
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...Conversion.ts |   71.63 |    73.17 |   83.33 |   71.63 | ...45,548-549,553 
  ...aConverter.ts |   50.95 |       40 |   71.42 |   50.95 | ...58-259,276-284 
  toolIdUtils.ts   |   86.15 |    84.37 |     100 |   86.15 | ...,94-95,116-117 
 ...ders/reasoning |    42.1 |       90 |      70 |    42.1 |                   
  ...oningUtils.ts |    42.1 |       90 |      70 |    42.1 | ...45-203,235-310 
 ...ers/test-utils |     100 |      100 |     100 |     100 |                   
  ...TestConfig.ts |     100 |      100 |     100 |     100 |                   
 ...ers/tokenizers |    66.1 |    55.55 |      75 |    66.1 |                   
  ...cTokenizer.ts |   57.89 |       25 |     100 |   57.89 | 28-29,34-39       
  ITokenizer.ts    |       0 |        0 |       0 |       0 |                   
  ...ITokenizer.ts |      70 |       80 |   66.66 |      70 | 52-55,62-71       
 ...roviders/types |       0 |        0 |       0 |       0 |                   
  ...iderConfig.ts |       0 |        0 |       0 |       0 |                   
  ...derRuntime.ts |       0 |        0 |       0 |       0 |                   
 ...roviders/utils |   85.64 |    87.09 |      96 |   85.64 |                   
  authToken.ts     |   33.33 |       50 |      50 |   33.33 | 14-22,30-35       
  ...sExtractor.ts |   95.45 |     91.3 |     100 |   95.45 | 15-16             
  dumpContext.ts   |    96.1 |    95.65 |     100 |    96.1 | 110-112           
  ...SDKContext.ts |   94.59 |       75 |     100 |   94.59 | 27,49             
  localEndpoint.ts |   89.28 |    91.42 |     100 |   89.28 | ...18-119,138-139 
  ...malization.ts |   79.41 |    92.85 |     100 |   79.41 | 59-66             
  ...nsePayload.ts |   91.05 |    83.33 |     100 |   91.05 | 60-65,115-119     
  userMemory.ts    |   51.51 |    66.66 |     100 |   51.51 | 16-18,31-43       
 src/runtime       |   84.59 |    86.04 |   74.64 |   84.59 |                   
  ...imeContext.ts |     100 |      100 |     100 |     100 |                   
  ...timeLoader.ts |      85 |    71.42 |      80 |      85 | ...87-190,228-231 
  ...ntimeState.ts |   95.22 |       92 |     100 |   95.22 | ...35-636,652-653 
  ...ionContext.ts |   80.35 |    92.85 |      75 |   80.35 | 64-66,110-117     
  ...imeContext.ts |   90.09 |      100 |   61.53 |   90.09 | ...00,107,115-117 
  index.ts         |       0 |        0 |       0 |       0 | 1-15              
  ...imeContext.ts |    64.7 |    83.33 |     100 |    64.7 | 67-78,83-94       
  ...meAdapters.ts |   54.95 |    68.75 |   43.75 |   54.95 | ...98-108,125-152 
  ...ateFactory.ts |    96.9 |    86.48 |     100 |    96.9 | 95,110,136        
 src/services      |   81.53 |    84.27 |   75.96 |   81.53 |                   
  ...ardService.ts |   93.33 |    92.85 |     100 |   93.33 | 63,67-68          
  ...y-analyzer.ts |   76.32 |    81.17 |   77.77 |   76.32 | ...79-507,513-514 
  ...eryService.ts |   96.29 |    84.21 |     100 |   96.29 | 41,50,100-101     
  ...temService.ts |    61.9 |      100 |   66.66 |    61.9 | 54-61             
  ...ts-service.ts |      50 |      100 |       0 |      50 | 41-42,48-49       
  gitService.ts    |   70.58 |    93.33 |      60 |   70.58 | ...16-126,129-133 
  index.ts         |       0 |        0 |       0 |       0 | 1-15              
  ...ionService.ts |   99.04 |    98.41 |     100 |   99.04 | 270-271           
  ...ionService.ts |   89.31 |    84.21 |    92.3 |   89.31 | ...09,614,623-639 
  ...xt-tracker.ts |   94.87 |       90 |    87.5 |   94.87 | 54-55             
  ...er-service.ts |      42 |     90.9 |      25 |      42 | ...37-140,143-161 
  ...er-service.ts |   69.45 |    55.88 |      80 |   69.45 | ...85-289,311-314 
 ...rvices/history |   79.01 |       83 |   77.77 |   79.01 |                   
  ...Converters.ts |   79.88 |    80.31 |      75 |   79.88 | ...58-364,430-453 
  HistoryEvents.ts |       0 |        0 |       0 |       0 |                   
  ...oryService.ts |   79.17 |    83.71 |   86.53 |   79.17 | ...1329,1365-1366 
  IContent.ts      |   73.56 |    92.85 |   36.36 |   73.56 | ...32,299,309-329 
 src/settings      |   92.48 |    77.02 |      92 |   92.48 |                   
  ...ngsService.ts |   91.69 |       75 |   95.23 |   91.69 | ...53-354,384-388 
  ...ceInstance.ts |     100 |      100 |     100 |     100 |                   
  types.ts         |       0 |        0 |       0 |       0 | 1                 
 src/storage       |   93.53 |    93.02 |   94.44 |   93.53 |                   
  ...FileWriter.ts |   83.54 |       80 |    87.5 |   83.54 | 40-41,71-81       
  ...nceService.ts |   98.67 |    96.96 |     100 |   98.67 | 293-294           
  sessionTypes.ts  |     100 |      100 |     100 |     100 |                   
 src/telemetry     |   65.88 |    79.89 |   60.33 |   65.88 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  ...-exporters.ts |   28.08 |      100 |       0 |   28.08 | ...14-115,118-119 
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...t.circular.ts |       0 |        0 |       0 |       0 | 1-17              
  ...t.circular.ts |       0 |        0 |       0 |       0 | 1-132             
  loggers.ts       |   64.38 |    69.76 |   59.25 |   64.38 | ...70-583,591-607 
  metrics.ts       |   62.35 |    96.15 |   66.66 |   62.35 | ...41-163,166-189 
  sdk.ts           |   72.54 |    23.07 |     100 |   72.54 | ...35,140-141,143 
  ...l-decision.ts |   33.33 |      100 |       0 |   33.33 | 17-32             
  types.ts         |   73.94 |     84.7 |   64.91 |   73.94 | ...34-636,639-643 
  uiTelemetry.ts   |   95.26 |    96.42 |   91.66 |   95.26 | 152,189-195       
 src/test-utils    |   86.61 |     82.5 |   56.81 |   86.61 |                   
  config.ts        |     100 |      100 |     100 |     100 |                   
  index.ts         |       0 |        0 |       0 |       0 | 1-9               
  mock-tool.ts     |   95.06 |    93.33 |      75 |   95.06 | 62-63,118-119     
  ...aceContext.ts |     100 |      100 |     100 |     100 |                   
  ...allOptions.ts |   93.45 |     90.9 |   63.63 |   93.45 | ...07,171,200-203 
  runtime.ts       |   80.18 |       70 |   39.53 |   80.18 | ...99-301,310-312 
  tools.ts         |      82 |    76.92 |   78.94 |      82 | ...31,153,157-158 
 src/todo          |   56.28 |    81.48 |      75 |   56.28 |                   
  todoFormatter.ts |   56.28 |    81.48 |      75 |   56.28 | ...11-212,236-237 
 src/tools         |   76.17 |    78.26 |   79.87 |   76.17 |                   
  ...lFormatter.ts |     100 |      100 |     100 |     100 |                   
  ToolFormatter.ts |   20.89 |    76.19 |   33.33 |   20.89 | ...07,514-612,627 
  ...IdStrategy.ts |      95 |    92.85 |     100 |      95 | 237-239,250-252   
  codesearch.ts    |      98 |     87.5 |   85.71 |      98 | 110-111,173       
  ...line_range.ts |   84.68 |    67.56 |      70 |   84.68 | ...81-282,290-291 
  diffOptions.ts   |     100 |      100 |     100 |     100 |                   
  ...-web-fetch.ts |   93.18 |    72.41 |   77.77 |   93.18 | ...56,166-167,187 
  ...scapeUtils.ts |   61.65 |    72.97 |      50 |   61.65 | ...93,309,311-321 
  edit.ts          |    74.7 |    78.03 |   76.47 |    74.7 | ...69-770,783-824 
  ...web-search.ts |   97.91 |    85.71 |   83.33 |   97.91 | 126-127,191       
  ...y-replacer.ts |   85.71 |    84.35 |     100 |   85.71 | ...47-448,493-494 
  glob.ts          |   90.51 |    80.35 |   88.88 |   90.51 | ...51-252,351-352 
  ...-web-fetch.ts |   92.44 |    87.37 |    92.3 |   92.44 | ...93-394,495-496 
  ...invocation.ts |   54.74 |    38.88 |      75 |   54.74 | ...29-133,165-210 
  ...web-search.ts |     100 |      100 |     100 |     100 |                   
  grep.ts          |   59.51 |    77.34 |   72.22 |   59.51 | ...67-971,981-982 
  ...rt_at_line.ts |   81.55 |    76.08 |      70 |   81.55 | ...05-306,314-315 
  ...-subagents.ts |   87.28 |    69.56 |   88.88 |   87.28 | ...1,81-89,98,153 
  ls.ts            |   97.42 |    91.66 |     100 |   97.42 | 146-151           
  ...nt-manager.ts |   79.04 |    66.66 |      80 |   79.04 | ...31-138,146-147 
  mcp-client.ts    |   54.67 |     60.8 |   58.06 |   54.67 | ...1342,1346-1349 
  mcp-tool.ts      |   94.21 |    93.75 |   86.95 |   94.21 | ...39-249,311-312 
  memoryTool.ts    |   79.39 |    82.75 |    87.5 |   79.39 | ...55-356,399-440 
  ...iable-tool.ts |   98.34 |       80 |     100 |   98.34 | 168-169           
  read-file.ts     |   91.27 |    79.16 |    90.9 |   91.27 | ...26-227,393-394 
  ...many-files.ts |   71.42 |     77.5 |   88.88 |   71.42 | ...55-556,563-564 
  ...line_range.ts |    74.9 |     65.9 |      80 |    74.9 | ...50-351,355-356 
  ripGrep.ts       |   89.75 |    86.02 |    92.3 |   89.75 | ...47-448,469-470 
  shell.ts         |   86.86 |    81.09 |   88.88 |   86.86 | ...61-763,776-777 
  task.ts          |   80.65 |    69.04 |   92.85 |   80.65 | ...89,792,795-804 
  todo-events.ts   |    62.5 |      100 |       0 |    62.5 | 23-24,27-28,31-32 
  todo-pause.ts    |   87.09 |       80 |     100 |   87.09 | 64-69,73-78,93-98 
  todo-read.ts     |   85.29 |    95.45 |     100 |   85.29 | 112-113,123-138   
  todo-schemas.ts  |     100 |      100 |     100 |     100 |                   
  todo-store.ts    |   86.66 |       80 |     100 |   86.66 | 48-49,55-56,63-64 
  todo-write.ts    |   87.28 |    75.75 |    87.5 |   87.28 | ...17,264-265,290 
  ...tion-types.ts |     100 |      100 |     100 |     100 |                   
  tool-context.ts  |     100 |      100 |     100 |     100 |                   
  tool-error.ts    |   87.75 |      100 |       0 |   87.75 | 105-112           
  tool-names.ts    |     100 |      100 |     100 |     100 |                   
  tool-registry.ts |   72.28 |       71 |   73.68 |   72.28 | ...68-676,684-685 
  toolNameUtils.ts |      80 |     92.1 |     100 |      80 | 59-60,64-65,69-82 
  tools.ts         |   67.74 |    91.37 |   66.66 |   67.74 | ...14-815,818-822 
  write-file.ts    |   75.57 |    64.36 |   73.33 |   75.57 | ...04-605,614-653 
 src/types         |     100 |      100 |     100 |     100 |                   
  modelParams.ts   |     100 |      100 |     100 |     100 |                   
 src/utils         |   81.03 |       87 |   84.03 |   81.03 |                   
  LruCache.ts      |       0 |        0 |       0 |       0 | 1-41              
  bfsFileSearch.ts |   88.88 |       90 |     100 |   88.88 | 83-91             
  browser.ts       |    8.69 |      100 |       0 |    8.69 | 17-53             
  delay.ts         |     100 |      100 |     100 |     100 |                   
  editor.ts        |   97.64 |    94.23 |     100 |   97.64 | 159,228,231-232   
  ...entContext.ts |     100 |      100 |     100 |     100 |                   
  errorParsing.ts  |      88 |    78.26 |     100 |      88 | ...07,249,252,258 
  ...rReporting.ts |   83.72 |    84.61 |     100 |   83.72 | 82-86,107-115     
  errors.ts        |   55.55 |    71.42 |   38.46 |   55.55 | ...92-108,112-118 
  fetch.ts         |   29.87 |    66.66 |      25 |   29.87 | ...37,40-84,87-92 
  fileUtils.ts     |    95.2 |       90 |     100 |    95.2 | ...34-238,450-456 
  formatters.ts    |   54.54 |       50 |     100 |   54.54 | 12-16             
  ...eUtilities.ts |   96.11 |       96 |     100 |   96.11 | 36-37,67-68       
  ...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 |    91.6 |    85.45 |     100 |    91.6 | ...05-206,210-211 
  ...ineChanges.ts |   58.56 |    79.41 |      80 |   58.56 | ...18-256,264-270 
  gitUtils.ts      |   90.24 |    90.47 |     100 |   90.24 | 40-41,71-72       
  ide-trust.ts     |      60 |      100 |       0 |      60 | 14-15             
  ...rePatterns.ts |     100 |    96.55 |     100 |     100 | 248               
  ...ionManager.ts |     100 |       90 |     100 |     100 | 23                
  ...edit-fixer.ts |       0 |        0 |       0 |       0 | 1-156             
  ...yDiscovery.ts |   86.32 |    76.27 |   77.77 |   86.32 | ...02-403,406-407 
  ...tProcessor.ts |    93.4 |    86.51 |    92.3 |    93.4 | ...87-388,397-398 
  ...Inspectors.ts |   61.53 |      100 |      50 |   61.53 | 18-23             
  output-format.ts |   36.36 |      100 |       0 |   36.36 | ...52-153,163-184 
  partUtils.ts     |     100 |      100 |     100 |     100 |                   
  pathReader.ts    |       0 |        0 |       0 |       0 | 1-60              
  paths.ts         |   85.32 |    84.37 |     100 |   85.32 | ...,98-99,110-111 
  ...rDetection.ts |   57.62 |    63.15 |     100 |   57.62 | ...9,92-93,99-100 
  retry.ts         |   68.09 |    77.86 |      80 |   68.09 | ...96-599,604-605 
  ...thResolver.ts |   84.87 |    83.87 |     100 |   84.87 | ...06,129,178-181 
  ...nStringify.ts |     100 |      100 |     100 |     100 |                   
  sanitization.ts  |     100 |      100 |     100 |     100 |                   
  ...aValidator.ts |   83.52 |    82.75 |     100 |   83.52 | 70-81,125-126     
  ...r-launcher.ts |   78.57 |     87.5 |   66.66 |   78.57 | ...33,135,153-188 
  session.ts       |     100 |      100 |     100 |     100 |                   
  shell-markers.ts |     100 |      100 |     100 |     100 |                   
  shell-parser.ts  |   39.62 |    57.14 |    62.5 |   39.62 | ...50-164,171-201 
  shell-utils.ts   |   89.26 |    93.38 |     100 |   89.26 | ...75-279,385-390 
  summarizer.ts    |     100 |    88.88 |     100 |     100 | 92                
  ...emEncoding.ts |   97.14 |    91.42 |     100 |   97.14 | 108-109,161       
  testUtils.ts     |   53.33 |      100 |   33.33 |   53.33 | ...53,59-64,70-72 
  textUtils.ts     |    12.5 |      100 |       0 |    12.5 | 15-34             
  thoughtUtils.ts  |     100 |      100 |     100 |     100 |                   
  tool-utils.ts    |      88 |    86.36 |     100 |      88 | 52-53,56-57,67-68 
  ...putLimiter.ts |   85.22 |    76.31 |     100 |   85.22 | ...61-166,210-217 
  unicodeUtils.ts  |     100 |      100 |     100 |     100 |                   
  ...untManager.ts |   91.96 |    88.23 |     100 |   91.96 | 37-39,76-78,94-96 
  ...aceContext.ts |   96.82 |    95.34 |    92.3 |   96.82 | 94-95,109-110     
 ...ils/filesearch |   96.18 |    91.26 |     100 |   96.18 |                   
  crawlCache.ts    |     100 |      100 |     100 |     100 |                   
  crawler.ts       |   96.22 |     92.3 |     100 |   96.22 | 66-67             
  fileSearch.ts    |   93.22 |    86.95 |     100 |   93.22 | ...26-227,229-230 
  ignore.ts        |     100 |      100 |     100 |     100 |                   
  result-cache.ts  |     100 |    91.66 |     100 |     100 | 46                
-------------------|---------|----------|---------|---------|-------------------

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

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In @packages/cli/src/utils/sandbox.ts:
- Around line 343-347: The sandboxEnv currently spreads all of process.env then
assigns getPassthroughEnvVars(process.env), which is redundant and exposes
unwanted vars; change it to initialize sandboxEnv from
getPassthroughEnvVars(process.env) (i.e., const sandboxEnv =
getPassthroughEnvVars(process.env)) and then add any proxy/control variables
(e.g., HTTPS_PROXY, HTTP_PROXY, NO_PROXY, or other vars set when proxyCommand is
present) conditionally to sandboxEnv so only curated environment variables are
passed into the sandbox.
🧹 Nitpick comments (4)
packages/cli/src/utils/sandbox.ts (2)

56-76: Nice extraction; consider tightening the return type (and optionally trimming).

getPassthroughEnvVars() is clean and non-mutating. If you want stronger typing (and better autocomplete for callers), you can type the keys to the PASSTHROUGH_VARIABLES union instead of Record<string, string>. Also consider whether whitespace-only values should be treated as “set” (currently they are).

Proposed typing tweak
 const PASSTHROUGH_VARIABLES = [
   'LLXPRT_CODE_IDE_SERVER_PORT',
   'LLXPRT_CODE_IDE_WORKSPACE_PATH',
   'LLXPRT_CODE_WELCOME_CONFIG_PATH',
   'TERM_PROGRAM',
 ] as const;

+type PassthroughVar = (typeof PASSTHROUGH_VARIABLES)[number];
+
 export function getPassthroughEnvVars(
   env: NodeJS.ProcessEnv,
-): Record<string, string> {
-  const result: Record<string, string> = {};
+): Partial<Record<PassthroughVar, string>> {
+  const result: Partial<Record<PassthroughVar, string>> = {};

   for (const envVar of PASSTHROUGH_VARIABLES) {
     const value = env[envVar];
     if (typeof value === 'string' && value.length > 0) {
       result[envVar] = value;
     }
   }

   return result;
 }

78-83: Make buildSandboxEnvArgs() order explicit (avoid relying on Object.entries() ordering).

Not a functional issue, but the current ordering is indirectly determined by insertion order in getPassthroughEnvVars(). If you want the order to be defined solely by PASSTHROUGH_VARIABLES, you can build args by iterating that list (also avoids an Object.entries() allocation).

Alternative implementation
 export function buildSandboxEnvArgs(env: NodeJS.ProcessEnv): string[] {
-  return Object.entries(getPassthroughEnvVars(env)).flatMap(([key, value]) => [
-    '--env',
-    `${key}=${value}`,
-  ]);
+  const passthrough = getPassthroughEnvVars(env);
+  return PASSTHROUGH_VARIABLES.flatMap((key) => {
+    const value = passthrough[key];
+    return value ? ['--env', `${key}=${value}`] : [];
+  });
 }
packages/cli/src/utils/sandbox.test.ts (2)

10-136: Tests cover the contract well; optional: collapse the one-var-per-test cases.

The suite hits the important behaviors (filtering, special chars, non-mutation). If you want to reduce maintenance, you could table-drive the single-variable assertions.


138-227: Ordering is implicitly part of the contract here—confirm that’s intentional.

buildSandboxEnvArgs tests assert a specific --env ordering. That’s fine if order is meant to follow PASSTHROUGH_VARIABLES, but it will make refactors (e.g., using Object.entries() differently) harder. Consider either (a) explicitly documenting/encoding that order, or (b) relaxing tests to assert set-equivalence if order isn’t important.

📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 117eb9f and 6648155.

📒 Files selected for processing (2)
  • packages/cli/src/utils/sandbox.test.ts
  • packages/cli/src/utils/sandbox.ts
🧰 Additional context used
🧬 Code graph analysis (1)
packages/cli/src/utils/sandbox.test.ts (2)
packages/cli/src/utils/sandbox.ts (2)
  • getPassthroughEnvVars (63-76)
  • buildSandboxEnvArgs (78-83)
scripts/tests/get-release-version.test.js (1)
  • originalEnv (28-28)
⏰ Context from checks skipped due to timeout of 270000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (7)
  • GitHub Check: Test (macos-latest, 24.x)
  • GitHub Check: Test (windows-latest, 24.x)
  • GitHub Check: Test (ubuntu-latest, 24.x)
  • GitHub Check: E2E Test (Linux) - sandbox:docker
  • GitHub Check: Slow E2E - Win
  • GitHub Check: E2E Test (Linux) - sandbox:none
  • GitHub Check: E2E Test (macOS)

Comment on lines +343 to 347
const sandboxEnv = {
...process.env,
};
Object.assign(sandboxEnv, getPassthroughEnvVars(process.env));

Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Run the verification queries from the review comment
echo "=== Searching for sandbox-exec usage ==="
rg -n "sandbox-exec" -C3

echo -e "\n=== Searching for sandboxEnv assignment ==="
rg -n "sandboxEnv\s*=\s*\{" -C3

echo -e "\n=== Searching for getPassthroughEnvVars calls ==="
rg -n "getPassthroughEnvVars\(" -C3

Repository: vybestack/llxprt-code

Length of output: 28763


🏁 Script executed:

#!/bin/bash
# Get the full context of the function containing lines 343-347
echo "=== Full context around lines 343-347 in sandbox.ts ==="
sed -n '320,370p' packages/cli/src/utils/sandbox.ts

Repository: vybestack/llxprt-code

Length of output: 1788


🏁 Script executed:

#!/bin/bash
# Find and inspect the getPassthroughEnvVars function
echo "=== Finding getPassthroughEnvVars implementation ==="
rg -n "function getPassthroughEnvVars|const getPassthroughEnvVars|export.*getPassthroughEnvVars" -A 10

Repository: vybestack/llxprt-code

Length of output: 839


Object.assign with getPassthroughEnvVars is functionally redundant; consider building sandboxEnv from curated vars only.

Starting sandboxEnv with { ...process.env } includes all environment variables. The subsequent Object.assign(sandboxEnv, getPassthroughEnvVars(process.env)) overwrites already-present values with identical ones, but doesn't filter out unwanted vars from the spread. If the goal is to pass only curated variables to sandbox-exec (as the helper's name suggests), construct sandboxEnv from getPassthroughEnvVars() first, then add proxy/control vars conditionally:

const sandboxEnv = getPassthroughEnvVars(process.env);
if (proxyCommand) {
  sandboxEnv['HTTPS_PROXY'] = proxy;
  // ... rest of proxy vars
}
🤖 Prompt for AI Agents
In @packages/cli/src/utils/sandbox.ts around lines 343 - 347, The sandboxEnv
currently spreads all of process.env then assigns
getPassthroughEnvVars(process.env), which is redundant and exposes unwanted
vars; change it to initialize sandboxEnv from getPassthroughEnvVars(process.env)
(i.e., const sandboxEnv = getPassthroughEnvVars(process.env)) and then add any
proxy/control variables (e.g., HTTPS_PROXY, HTTP_PROXY, NO_PROXY, or other vars
set when proxyCommand is present) conditionally to sandboxEnv so only curated
environment variables are passed into the sandbox.

@acoliver acoliver merged commit 759ecf1 into main Jan 11, 2026
21 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

maintainer:e2e:ok Trusted contributor; maintainer-approved E2E run

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Nit: Refactor buildSandboxEnvArgs to avoid parsing CLI args back to key-value pairs

2 participants