Skip to content

feat(cli): auto-fire /recap on return after sustained blur#215

Merged
mabry1985 merged 1 commit into
mainfrom
feat/auto-recap-on-return
May 3, 2026
Merged

feat(cli): auto-fire /recap on return after sustained blur#215
mabry1985 merged 1 commit into
mainfrom
feat/auto-recap-on-return

Conversation

@mabry1985

@mabry1985 mabry1985 commented May 3, 2026

Copy link
Copy Markdown

Summary

When the terminal regains focus after ≥ awayThresholdMinutes (default 5) of sustained blur, generate a /recap-style "where you left off" summary and append it to history. Off by default; opt in via general.showSessionRecap.

Why a focused slice instead of a cherry-pick of upstream #3434 + #3478 + #3482: upstream churned through a sticky-banner placement in QwenLM#3478 that QwenLM#3482 then tore back out, and most of the cherry-pick conflict surface was unrelated layout work (DefaultAppLayout, ScreenReaderAppLayout, HistoryItemDisplay restructure) we don't have. Re-implementing the actual feature is cheaper than untangling that.

What this lands

  • packages/core/src/services/sessionRecap.ts — thin wrapper around generateRecap that pulls history off the GeminiClient and returns { text } | null, matching upstream's API.
  • packages/cli/src/ui/hooks/useAwaySummary.ts — port of the upstream hook. Uses our existing HistoryItemRecap (type: 'recap') instead of the upstream-only away_recap type so manual /recap and the auto-fire path share one render path.
  • Settingsgeneral.showSessionRecap (boolean, default false) and general.sessionRecapAwayThresholdMinutes (number, default 5).
  • Wired in AppContainer.tsx next to useFocus(); isIdle is derived from streamingState === StreamingState.Idle.

Dedup gating

Mirrors Claude Code's behavior:

  • Need ≥ 3 user messages total before any auto-recap fires.
  • If a recap is already in history, need ≥ 2 new user messages since then before another can fire.

Prevents back-to-back near-duplicate recaps after a brief alt-tab cycle with no new work between.

Cleanup + extras included

  • Stripped vestigial awayRecapItem / setAwayRecapItem fields from UIStateContext that referenced a never-imported HistoryItemAwayRecap type. No consumers; the auto-fire path addItem's directly into history instead of holding a sticky banner.
  • pipeline.ts AbortSignal listener-leak fix from fix(cli): pin /recap above input and align defaults with fastModel QwenLM/qwen-code#3478 §3 wrapped in a raiseAbortListenerCap helper. Replaces the inline setMaxListeners(0, signal) we already had with a slightly more general form. Functionally equivalent.
  • useResumeCommand.handleResume now returns Promise<boolean> so callers can gate cleanup that should only happen on a successful session switch (no current consumers of the boolean — preparatory).

Test plan

  • npm run typecheck clean
  • vitest run for AppContainer.test.tsx (32 tests) + recapGenerator.test.ts (3 tests) — all pass
  • Manual: enable general.showSessionRecap, work for 5+ user turns, blur the terminal for 6+ minutes, return — verify a single recap auto-fires.
  • Manual: blur twice with no input between — verify the dedup gate suppresses the second recap.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added automatic session recap that generates a one-line summary when the terminal regains focus after prolonged idle periods (disabled by default)
    • Added two new settings to control automatic recaps: one to enable/disable the feature and another to configure the idle threshold (defaults to 5 minutes)
    • Manual /recap command remains available
  • Documentation

    • Updated session recap setting documentation with revised defaults and feature descriptions

When the terminal regains focus after >= awayThresholdMinutes (default 5)
of sustained blur, generate a `/recap`-style "where you left off"
summary and append it to history. Off by default; enable via
`general.showSessionRecap`.

Adapted from the auto-recap-on-return feature in QwenLM/qwen-code's
`useAwaySummary` hook (introduced in QwenLM#3434, finalized in QwenLM#3482) — but
takes a focused slice rather than a full cherry-pick, since upstream's
version churned through a sticky-banner placement that QwenLM#3482 then tore
back out, and most of the conflict surface was unrelated layout work
we don't have.

What this lands:

- `packages/core/src/services/sessionRecap.ts` — thin wrapper around
  `generateRecap` that pulls history off the GeminiClient and returns
  `{ text } | null`, matching upstream's API so the hook is portable.
- `packages/cli/src/ui/hooks/useAwaySummary.ts` — port of the upstream
  hook. Uses our existing `HistoryItemRecap` (`type: 'recap'`) instead
  of the upstream-only `away_recap` type so manual `/recap` and the
  auto-fire path share one render path.
- Settings: `general.showSessionRecap` (boolean, default false) and
  `general.sessionRecapAwayThresholdMinutes` (number, default 5).
- Wired in `AppContainer.tsx` next to `useFocus()`; `isIdle` is
  derived from `streamingState === StreamingState.Idle`.
- Mirrors Claude Code's dedup gating: needs at least 3 user messages
  total before firing, and at least 2 new user messages since the
  previous recap before another can fire — prevents back-to-back
  near-duplicate recaps after a brief alt-tab cycle with no work
  between.

Cleanup: stripped vestigial `awayRecapItem` / `setAwayRecapItem`
fields from `UIStateContext` that referenced a never-imported
`HistoryItemAwayRecap` type. No consumers; the auto-fire path
addItem's directly into history instead of holding a sticky banner.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@mabry1985 mabry1985 enabled auto-merge (squash) May 3, 2026 00:50
@coderabbitai

coderabbitai Bot commented May 3, 2026

Copy link
Copy Markdown

Walkthrough

This PR introduces automatic session recap generation that triggers when the terminal regains focus after a 5+ minute idle period. It adds settings configuration, a core generation service, a UI hook tracking focus state, and integration into the app container while updating related async patterns.

Changes

Session Recap Feature

Layer / File(s) Summary
Settings Schema
packages/cli/src/config/settingsSchema.ts, docs/users/configuration/settings.md
Added showSessionRecap (boolean, default false) and sessionRecapAwayThresholdMinutes (number, default 5) to control auto-recap behavior and idle threshold. Documentation updated to describe the one-line recap as optional, auto-triggered after 5+ minutes, with manual /recap trigger always available.
Core Recap Service
packages/core/src/services/sessionRecap.ts, packages/core/src/index.ts
Introduced generateSessionRecap that wraps recap generation by fetching conversation history from the Gemini client, validating presence of both model and user roles, and returning { text } or null. Re-exported through core package entrypoint.
Abort Signal Safety
packages/core/src/core/openaiContentGenerator/pipeline.ts
Added raiseAbortListenerCap helper that disables Node's max-listener leak warning for per-request AbortSignal instances in execute() and executeStream() to prevent warnings during retries and stream wrapping.
Focus-Based Recap Hook
packages/cli/src/ui/hooks/useAwaySummary.ts
Implemented useAwaySummary hook that tracks terminal blur duration, gates firing based on idle state and message count thresholds (minimum messages since last recap), generates recap via service on focus regain after configured threshold elapses, and adds result as MessageType.RECAP item to history with /recap command recording for persistence across resume.
Hook Resumption Support
packages/cli/src/ui/hooks/useResumeCommand.ts
Updated handleResume to return Promise<boolean> instead of void, short-circuiting with false when dependencies or session data are missing, and returning true on successful resume completion. Enables callers to detect resume success/failure.
App Integration
packages/cli/src/ui/AppContainer.tsx
Wired useAwaySummary hook into AppContainer, passing settings.merged.general?.showSessionRecap as enabled gate, config, focus state (isFocused), idle state (streamingState === StreamingState.Idle), history handlers, and threshold configuration.

Sequence Diagram

sequenceDiagram
    participant Focus as Terminal Focus
    participant Hook as useAwaySummary Hook
    participant Idle as Idle State
    participant Service as Recap Service
    participant History as History Manager
    participant Config as Config/Gemini
    participant Display as History Display

    Focus->>Hook: Terminal loses focus
    Hook->>Hook: Record blur start time
    
    Note over Hook: Waiting for threshold (5+ min)
    
    Focus->>Hook: Terminal regains focus
    Hook->>Hook: Check blur duration >= threshold
    Hook->>Idle: Check if terminal is idle
    Idle-->>Hook: isIdle = true
    Hook->>Hook: Check message count gate<br/>(MIN_USER_MESSAGES_SINCE_LAST_RECAP)
    
    Hook->>Service: generateSessionRecap(config, abortSignal)
    Service->>Config: getGeminiClient().getHistory()
    Config-->>Service: Conversation history
    Service->>Service: Validate model + user roles present
    Service->>Service: Call generateRecap()
    Service-->>Hook: { text: "..." } or null
    
    Hook->>History: addItem(recap, timestamp)
    History->>History: Append RECAP message
    History-->>Display: Recap appears in history
Loading

Estimated Code Review Effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly Related Issues

  • upstream port: recap UX polish (#3478, #3482) #183: This PR directly implements the session recap UX feature including the core generateSessionRecap service, useAwaySummary hook for focus-based triggering, CLI settings configuration, and AppContainer integration that overlap with the upstream recap work scope.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 40.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title 'feat(cli): auto-fire /recap on return after sustained blur' clearly and specifically describes the main feature addition: auto-firing a recap command when the terminal regains focus after a sustained blur period.
Description check ✅ Passed The PR description provides comprehensive coverage: a clear summary of the feature, rationale for implementation approach, detailed breakdown of what lands, explanation of dedup gating logic, cleanup items, and a test plan with checkboxes showing local validation status.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

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

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/auto-recap-on-return

Review rate limit: 0/5 reviews remaining, refill in 59 minutes and 57 seconds.

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
packages/cli/src/ui/hooks/useResumeCommand.ts (2)

58-67: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Keep the dialog open until the session load succeeds.

closeResumeDialog() runs before loadSession(), so a missing or stale session closes the dialog and then returns false. Move the close until after sessionData is confirmed, or reopen on the failure path.

💡 Suggested fix
-      // Close dialog immediately to prevent input capture during async operations.
-      closeResumeDialog();
-
       const cwd = config.getTargetDir();
       const sessionService = new SessionService(cwd);
       const sessionData = await sessionService.loadSession(sessionId);
 
       if (!sessionData) {
         return false;
       }
+
+      // Close only after we know the resume can proceed.
+      closeResumeDialog();
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/cli/src/ui/hooks/useResumeCommand.ts` around lines 58 - 67, The
dialog is being closed before the async session load completes, which hides the
UI when loadSession(sessionId) returns null/stale; update the flow in
useResumeCommand.ts so you call closeResumeDialog() only after
SessionService(cwd).loadSession(sessionId) returns a valid sessionData (or
alternatively call closeResumeDialog() after confirming sessionData and reopen
or show an error if loadSession fails). Concretely, keep the dialog open until
sessionData is truthy, using the existing SessionService and loadSession, and
handle the failure path by not closing (or re-opening) the dialog and returning
false.

24-34: ⚠️ Potential issue | 🟠 Major

Update the handleResume type signature in UIActionsContext to match the async contract.

handleResume is typed as (sessionId: string) => void in UIActions, but useResumeCommand returns (sessionId: string) => Promise<boolean>. This mismatch breaks the intended contract where callers should await the result to determine if the session load succeeded. Additionally, handleResume closes the dialog before confirming the session load (line 59 of useResumeCommand.ts precedes line 63), so if the load fails, the dialog is already closed. The dialog state and the async flow must be coordinated so the dialog remains open until the outcome is known, or the close timing must be justified. Update UIActionsContext.handleResume to return Promise<boolean> and ensure callers like DialogManager properly await and handle the result.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/cli/src/ui/hooks/useResumeCommand.ts` around lines 24 - 34,
UIActionsContext's handleResume is currently declared as (sessionId: string) =>
void but useResumeCommand.handleResume returns Promise<boolean>, causing a type
and behavioral mismatch; change the UIActions/UIActionsContext handleResume
signature to (sessionId: string) => Promise<boolean>, update any implementations
to return a Promise<boolean> (true on successful load, false on
short-circuit/failure), and update callers such as DialogManager to await the
result and only close the resume dialog after the Promise resolves (or keep the
dialog open on failure) so dialog state and async flow are coordinated with
useResumeCommand.handleResume.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/users/configuration/settings.md`:
- Around line 80-86: Add a new settings row documenting the numeric threshold
key general.sessionRecapAwayThresholdMinutes (and its default value) alongside
general.showSessionRecap: mention that it represents the minutes of away time
used to trigger the session recap (default 5), specify type number, a short
description like "Minutes away before auto-showing the session recap," and the
default value (5) so users can discover and tune the threshold.

In `@packages/cli/src/ui/hooks/useAwaySummary.ts`:
- Around line 150-179: The promise from generateSessionRecap can reject and
currently has no catch, causing unhandled rejections; wrap the async flow in a
try/catch or attach a .catch handler to the generateSessionRecap(...) chain to
swallow/log errors and ensure the finally block still runs; specifically, handle
failures from generateSessionRecap(controller.signal) before using
isIdleRef.current/addItem and before calling
config.getChatRecordingService?.()?.recordSlashCommand, and ensure
inFlightRef.current and recapPendingRef.current are cleared in the finally block
regardless of errors.

---

Outside diff comments:
In `@packages/cli/src/ui/hooks/useResumeCommand.ts`:
- Around line 58-67: The dialog is being closed before the async session load
completes, which hides the UI when loadSession(sessionId) returns null/stale;
update the flow in useResumeCommand.ts so you call closeResumeDialog() only
after SessionService(cwd).loadSession(sessionId) returns a valid sessionData (or
alternatively call closeResumeDialog() after confirming sessionData and reopen
or show an error if loadSession fails). Concretely, keep the dialog open until
sessionData is truthy, using the existing SessionService and loadSession, and
handle the failure path by not closing (or re-opening) the dialog and returning
false.
- Around line 24-34: UIActionsContext's handleResume is currently declared as
(sessionId: string) => void but useResumeCommand.handleResume returns
Promise<boolean>, causing a type and behavioral mismatch; change the
UIActions/UIActionsContext handleResume signature to (sessionId: string) =>
Promise<boolean>, update any implementations to return a Promise<boolean> (true
on successful load, false on short-circuit/failure), and update callers such as
DialogManager to await the result and only close the resume dialog after the
Promise resolves (or keep the dialog open on failure) so dialog state and async
flow are coordinated with useResumeCommand.handleResume.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 73a98359-0e7e-4d18-8b30-296e6a077e4e

📥 Commits

Reviewing files that changed from the base of the PR and between a2e72d0 and c9ec5f2.

📒 Files selected for processing (8)
  • docs/users/configuration/settings.md
  • packages/cli/src/config/settingsSchema.ts
  • packages/cli/src/ui/AppContainer.tsx
  • packages/cli/src/ui/hooks/useAwaySummary.ts
  • packages/cli/src/ui/hooks/useResumeCommand.ts
  • packages/core/src/core/openaiContentGenerator/pipeline.ts
  • packages/core/src/index.ts
  • packages/core/src/services/sessionRecap.ts

Comment on lines +80 to +86
| Setting | Type | Description | Default |
| ------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
| `general.preferredEditor` | string | The preferred editor to open files in. | `undefined` |
| `general.vimMode` | boolean | Enable Vim keybindings. | `false` |
| `general.enableAutoUpdate` | boolean | Enable automatic update checks and installations on startup. | `true` |
| `general.showSessionRecap` | boolean | Auto-show a one-line "where you left off" recap when returning to the terminal after being away for 5+ minutes. Off by default. Use `/recap` to trigger manually regardless of this setting. | `false` |
| `general.gitCoAuthor` | boolean | Automatically add a Co-authored-by trailer to git commit messages when commits are made through Qwen Code. | `true` |

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Document the threshold setting alongside general.showSessionRecap.

The implementation also reads general.sessionRecapAwayThresholdMinutes, but the settings table only lists the boolean toggle. Please add the threshold row so users can discover and tune the 5-minute default.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/users/configuration/settings.md` around lines 80 - 86, Add a new
settings row documenting the numeric threshold key
general.sessionRecapAwayThresholdMinutes (and its default value) alongside
general.showSessionRecap: mention that it represents the minutes of away time
used to trigger the session recap (default 5), specify type number, a short
description like "Minutes away before auto-showing the session recap," and the
default value (5) so users can discover and tune the threshold.

Comment on lines +150 to +179
void generateSessionRecap(config, controller.signal)
.then((recap) => {
if (controller.signal.aborted || !recap) return;
if (!isIdleRef.current) return;
const item: HistoryItemWithoutId = {
type: MessageType.RECAP,
text: recap.text,
};
addItem(item, Date.now());

// Mirror the recording the slash-command processor does for
// manual `/recap`, so the auto-fired recap also survives `/resume`.
// Only record the `result` phase — recording an `invocation`
// would replay a fake `> /recap` user line on resume.
try {
config.getChatRecordingService?.()?.recordSlashCommand({
phase: 'result',
rawCommand: '/recap',
outputHistoryItems: [{ ...item } as Record<string, unknown>],
});
} catch {
// Recap is best-effort — never let a recording failure surface.
}
})
.finally(() => {
if (inFlightRef.current === controller) {
inFlightRef.current = null;
}
recapPendingRef.current = false;
});

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Handle recap-generation failures inside the async flow.

generateSessionRecap(...) can reject or throw here, but the current chain has no catch path. That turns a best-effort recap into an unhandled rejection instead of a silent no-op.

🔧 Suggested fix
-    void generateSessionRecap(config, controller.signal)
-      .then((recap) => {
-        if (controller.signal.aborted || !recap) return;
-        if (!isIdleRef.current) return;
-        const item: HistoryItemWithoutId = {
-          type: MessageType.RECAP,
-          text: recap.text,
-        };
-        addItem(item, Date.now());
-
-        // Mirror the recording the slash-command processor does for
-        // manual `/recap`, so the auto-fired recap also survives `/resume`.
-        // Only record the `result` phase — recording an `invocation`
-        // would replay a fake `> /recap` user line on resume.
-        try {
-          config.getChatRecordingService?.()?.recordSlashCommand({
-            phase: 'result',
-            rawCommand: '/recap',
-            outputHistoryItems: [{ ...item } as Record<string, unknown>],
-          });
-        } catch {
-          // Recap is best-effort — never let a recording failure surface.
-        }
-      })
-      .finally(() => {
-        if (inFlightRef.current === controller) {
-          inFlightRef.current = null;
-        }
-        recapPendingRef.current = false;
-      });
+    void (async () => {
+      try {
+        const recap = await generateSessionRecap(config, controller.signal);
+        if (controller.signal.aborted || !recap || !isIdleRef.current) {
+          return;
+        }
+        const item: HistoryItemWithoutId = {
+          type: MessageType.RECAP,
+          text: recap.text,
+        };
+        addItem(item, Date.now());
+
+        // Mirror the recording the slash-command processor does for
+        // manual `/recap`, so the auto-fired recap also survives `/resume`.
+        // Only record the `result` phase — recording an `invocation`
+        // would replay a fake `> /recap` user line on resume.
+        try {
+          config.getChatRecordingService?.()?.recordSlashCommand({
+            phase: 'result',
+            rawCommand: '/recap',
+            outputHistoryItems: [{ ...item } as Record<string, unknown>],
+          });
+        } catch {
+          // Recap is best-effort — never let a recording failure surface.
+        }
+      } catch {
+        // Best-effort: swallow recap-generation failures.
+      } finally {
+        if (inFlightRef.current === controller) {
+          inFlightRef.current = null;
+        }
+        recapPendingRef.current = false;
+      }
+    })();
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
void generateSessionRecap(config, controller.signal)
.then((recap) => {
if (controller.signal.aborted || !recap) return;
if (!isIdleRef.current) return;
const item: HistoryItemWithoutId = {
type: MessageType.RECAP,
text: recap.text,
};
addItem(item, Date.now());
// Mirror the recording the slash-command processor does for
// manual `/recap`, so the auto-fired recap also survives `/resume`.
// Only record the `result` phase — recording an `invocation`
// would replay a fake `> /recap` user line on resume.
try {
config.getChatRecordingService?.()?.recordSlashCommand({
phase: 'result',
rawCommand: '/recap',
outputHistoryItems: [{ ...item } as Record<string, unknown>],
});
} catch {
// Recap is best-effort — never let a recording failure surface.
}
})
.finally(() => {
if (inFlightRef.current === controller) {
inFlightRef.current = null;
}
recapPendingRef.current = false;
});
void (async () => {
try {
const recap = await generateSessionRecap(config, controller.signal);
if (controller.signal.aborted || !recap || !isIdleRef.current) {
return;
}
const item: HistoryItemWithoutId = {
type: MessageType.RECAP,
text: recap.text,
};
addItem(item, Date.now());
// Mirror the recording the slash-command processor does for
// manual `/recap`, so the auto-fired recap also survives `/resume`.
// Only record the `result` phase — recording an `invocation`
// would replay a fake `> /recap` user line on resume.
try {
config.getChatRecordingService?.()?.recordSlashCommand({
phase: 'result',
rawCommand: '/recap',
outputHistoryItems: [{ ...item } as Record<string, unknown>],
});
} catch {
// Recap is best-effort — never let a recording failure surface.
}
} catch {
// Best-effort: swallow recap-generation failures.
} finally {
if (inFlightRef.current === controller) {
inFlightRef.current = null;
}
recapPendingRef.current = false;
}
})();
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/cli/src/ui/hooks/useAwaySummary.ts` around lines 150 - 179, The
promise from generateSessionRecap can reject and currently has no catch, causing
unhandled rejections; wrap the async flow in a try/catch or attach a .catch
handler to the generateSessionRecap(...) chain to swallow/log errors and ensure
the finally block still runs; specifically, handle failures from
generateSessionRecap(controller.signal) before using isIdleRef.current/addItem
and before calling config.getChatRecordingService?.()?.recordSlashCommand, and
ensure inFlightRef.current and recapPendingRef.current are cleared in the
finally block regardless of errors.

@mabry1985 mabry1985 merged commit 7bae590 into main May 3, 2026
6 checks passed
@mabry1985 mabry1985 deleted the feat/auto-recap-on-return branch May 3, 2026 01:00
@github-actions

github-actions Bot commented May 3, 2026

Copy link
Copy Markdown

Code Coverage Summary

Package Lines Statements Functions Branches
CLI 53.84% 53.84% 66.9% 78.77%
Core 71.45% 71.45% 74.58% 80.73%
CLI Package - Full Text Report
-------------------|---------|----------|---------|---------|-------------------
File               | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
-------------------|---------|----------|---------|---------|-------------------
All files          |   53.84 |    78.77 |    66.9 |   53.84 |                   
 src               |   67.16 |    62.82 |   65.21 |   67.16 |                   
  gemini.tsx       |   62.62 |    57.14 |      60 |   62.62 | ...59,567-570,579 
  ...ractiveCli.ts |   57.64 |    57.14 |   42.85 |   57.64 | ...56,471,475-598 
  ...liCommands.ts |   85.09 |    70.83 |     100 |   85.09 | ...51,253,402,409 
  ...ActiveAuth.ts |   94.11 |    82.35 |     100 |   94.11 | 27-30             
 ...cp-integration |    6.13 |    33.33 |      10 |    6.13 |                   
  acpAgent.ts      |    3.37 |        0 |       0 |    3.37 | ...35-141,144-639 
  authMethods.ts   |   17.85 |      100 |       0 |   17.85 | 11-22,25-29,32-37 
  errorCodes.ts    |       0 |        0 |       0 |       0 | 1-22              
  ...DirContext.ts |     100 |      100 |     100 |     100 |                   
 ...ration/service |   68.65 |    83.33 |   66.66 |   68.65 |                   
  filesystem.ts    |   68.65 |    83.33 |   66.66 |   68.65 | ...32,77-94,97-98 
 ...ration/session |   64.41 |    59.22 |      75 |   64.41 |                   
  ...ryReplayer.ts |   76.31 |    77.14 |      90 |   76.31 | ...21-222,230-231 
  Session.ts       |   56.94 |    46.71 |      64 |   56.94 | ...1457,1463-1466 
  ...entTracker.ts |   90.85 |    84.84 |      90 |   90.85 | ...35,199,251-260 
  index.ts         |       0 |        0 |       0 |       0 | 1-40              
  ...ssionUtils.ts |   74.59 |    73.07 |     100 |   74.59 | ...73-189,204-206 
  types.ts         |       0 |        0 |       0 |       0 | 1                 
 ...ssion/emitters |   92.48 |    87.12 |      92 |   92.48 |                   
  BaseEmitter.ts   |    82.6 |       75 |      80 |    82.6 | 23-24,50-51       
  ...ageEmitter.ts |     100 |    83.33 |     100 |     100 | 84-86             
  PlanEmitter.ts   |     100 |      100 |     100 |     100 |                   
  ...allEmitter.ts |   91.37 |    86.79 |     100 |   91.37 | ...28-229,318,326 
  index.ts         |       0 |        0 |       0 |       0 | 1-10              
 src/commands      |   70.63 |      100 |   15.38 |   70.63 |                   
  auth.ts          |      44 |      100 |       0 |      44 | ...50,59-63,66-67 
  extensions.tsx   |   96.55 |      100 |      50 |   96.55 | 37                
  hooks.tsx        |   66.66 |      100 |       0 |   66.66 | 20-24             
  mcp.ts           |   94.73 |      100 |      50 |   94.73 | 28                
  setup.ts         |   84.61 |      100 |       0 |   84.61 | 18-19             
 src/commands/auth |   44.96 |    95.65 |   64.28 |   44.96 |                   
  handler.ts       |    28.2 |    93.75 |   16.66 |    28.2 | 55-350            
  ...veSelector.ts |     100 |    96.66 |     100 |     100 | 58                
 ...nds/extensions |   84.53 |    88.95 |   81.81 |   84.53 |                   
  consent.ts       |   71.65 |    89.28 |   42.85 |   71.65 | ...85-141,156-162 
  disable.ts       |     100 |      100 |     100 |     100 |                   
  enable.ts        |     100 |      100 |     100 |     100 |                   
  install.ts       |    75.6 |    66.66 |   66.66 |    75.6 | ...39-142,145-153 
  link.ts          |     100 |      100 |     100 |     100 |                   
  list.ts          |     100 |      100 |     100 |     100 |                   
  new.ts           |     100 |      100 |     100 |     100 |                   
  settings.ts      |   99.15 |      100 |   83.33 |   99.15 | 151               
  uninstall.ts     |    37.5 |      100 |   33.33 |    37.5 | 23-45,57-64,67-70 
  update.ts        |   96.32 |      100 |     100 |   96.32 | 101-105           
  utils.ts         |   60.24 |    28.57 |     100 |   60.24 | ...81,83-87,89-93 
 ...les/mcp-server |       0 |        0 |       0 |       0 |                   
  example.ts       |       0 |        0 |       0 |       0 | 1-60              
 src/commands/mcp  |   91.28 |    82.97 |   88.88 |   91.28 |                   
  add.ts           |     100 |    96.66 |     100 |     100 | 213               
  list.ts          |   91.22 |    80.76 |      80 |   91.22 | ...19-121,146-147 
  reconnect.ts     |   76.72 |    71.42 |   85.71 |   76.72 | 35-48,153-175     
  remove.ts        |     100 |       80 |     100 |     100 | 21-25             
 ...commands/setup |    23.4 |    81.25 |   21.42 |    23.4 |                   
  handler.ts       |    7.99 |      100 |       0 |    7.99 | 57-578            
  ...lDiscovery.ts |   93.75 |    81.25 |     100 |   93.75 | ...,86-87,103-104 
 src/config        |   91.02 |    79.77 |   83.07 |   91.02 |                   
  auth.ts          |   86.66 |    77.55 |     100 |   86.66 | ...92-193,209-210 
  config.ts        |   86.35 |    80.56 |      70 |   86.35 | ...1203,1225-1226 
  keyBindings.ts   |   95.95 |       50 |     100 |   95.95 | 160-163           
  ...idersScope.ts |      92 |       90 |     100 |      92 | 11-12             
  sandboxConfig.ts |   54.16 |    23.07 |   66.66 |   54.16 | ...44,54-68,73-89 
  settings.ts      |   80.69 |    82.05 |   81.81 |   80.69 | ...98-699,775-792 
  ...ingsSchema.ts |     100 |      100 |     100 |     100 |                   
  ...tedFolders.ts |   96.29 |       94 |     100 |   96.29 | ...88-190,205-206 
  webSearch.ts     |   42.37 |       25 |     100 |   42.37 | ...6,86-93,96-112 
 ...nfig/migration |   94.56 |    78.94 |   83.33 |   94.56 |                   
  index.ts         |   93.93 |    88.88 |     100 |   93.93 | 85-86             
  scheduler.ts     |   96.55 |    77.77 |     100 |   96.55 | 19-20             
  types.ts         |       0 |        0 |       0 |       0 | 1                 
 ...ation/versions |   93.63 |     94.5 |     100 |   93.63 |                   
  ...-v2-shared.ts |     100 |      100 |     100 |     100 |                   
  v1-to-v2.ts      |   81.75 |    90.19 |     100 |   81.75 | ...28-229,231-247 
  v2-to-v3.ts      |     100 |      100 |     100 |     100 |                   
 src/constants     |   93.02 |    94.11 |   66.66 |   93.02 |                   
  ...dardApiKey.ts |     100 |      100 |     100 |     100 |                   
  codingPlan.ts    |   92.74 |    94.11 |   66.66 |   92.74 | ...00-301,309-321 
 src/core          |   65.71 |    77.77 |   66.66 |   65.71 |                   
  auth.ts          |    9.52 |      100 |       0 |    9.52 | 21-48             
  initializer.ts   |   84.37 |    33.33 |     100 |   84.37 | 41,55-58          
  theme.ts         |     100 |      100 |     100 |     100 |                   
 src/generated     |     100 |      100 |     100 |     100 |                   
  git-commit.ts    |     100 |      100 |     100 |     100 |                   
 src/i18n          |   43.69 |    76.19 |   38.88 |   43.69 |                   
  index.ts         |   26.11 |    76.92 |   26.66 |   26.11 | ...35-236,246-257 
  languages.ts     |   98.27 |       75 |     100 |   98.27 | 88                
 src/i18n/locales  |       0 |        0 |       0 |       0 |                   
  de.js            |       0 |        0 |       0 |       0 | 1-1967            
  en.js            |       0 |        0 |       0 |       0 | 1-2133            
  fr.js            |       0 |        0 |       0 |       0 | 1-2097            
  ja.js            |       0 |        0 |       0 |       0 | 1-1461            
  pt.js            |       0 |        0 |       0 |       0 | 1-1959            
  ru.js            |       0 |        0 |       0 |       0 | 1-1966            
  zh.js            |       0 |        0 |       0 |       0 | 1-1813            
 ...nonInteractive |   68.34 |    71.68 |   68.88 |   68.34 |                   
  session.ts       |    73.1 |    69.52 |   81.81 |    73.1 | ...03-604,612-622 
  types.ts         |    42.5 |      100 |   33.33 |    42.5 | ...74-575,578-579 
 ...active/control |   77.48 |       88 |      80 |   77.48 |                   
  ...rolContext.ts |    7.69 |        0 |       0 |    7.69 | 47-79             
  ...Dispatcher.ts |   91.63 |    91.66 |   88.88 |   91.63 | ...54-372,387,390 
  ...rolService.ts |       8 |        0 |       0 |       8 | 46-179            
 ...ol/controllers |    7.32 |       80 |   13.79 |    7.32 |                   
  ...Controller.ts |   19.32 |      100 |      60 |   19.32 | 81-118,127-210    
  ...Controller.ts |       0 |        0 |       0 |       0 | 1-56              
  ...Controller.ts |    3.96 |      100 |   11.11 |    3.96 | ...61-379,389-494 
  ...Controller.ts |   14.06 |      100 |       0 |   14.06 | ...82-117,130-133 
  ...Controller.ts |    5.72 |      100 |       0 |    5.72 | ...72-384,393-418 
 .../control/types |       0 |        0 |       0 |       0 |                   
  serviceAPIs.ts   |       0 |        0 |       0 |       0 | 1                 
 ...Interactive/io |   97.57 |    92.56 |   96.15 |   97.57 |                   
  ...putAdapter.ts |   97.31 |     91.3 |     100 |   97.31 | ...1277,1302-1303 
  ...putAdapter.ts |      96 |    91.66 |   85.71 |      96 | 51-52             
  ...nputReader.ts |     100 |    94.73 |     100 |     100 | 67                
  ...putAdapter.ts |   98.23 |      100 |   89.47 |   98.23 | 70-71,111-112     
 src/patches       |       0 |        0 |       0 |       0 |                   
  is-in-ci.ts      |       0 |        0 |       0 |       0 | 1-17              
 src/services      |   89.47 |    87.55 |   96.87 |   89.47 |                   
  ...mandLoader.ts |     100 |      100 |     100 |     100 |                   
  ...killLoader.ts |     100 |      100 |     100 |     100 |                   
  ...andService.ts |     100 |      100 |     100 |     100 |                   
  ...mandLoader.ts |   86.61 |    82.14 |     100 |   86.61 | ...29-334,339-344 
  ...omptLoader.ts |    75.1 |    80.64 |   83.33 |    75.1 | ...03-204,270-271 
  audioCapture.ts  |   98.33 |    93.75 |     100 |   98.33 | 71                
  ...nd-factory.ts |    91.2 |    93.33 |     100 |    91.2 | 119-126           
  ...ation-tool.ts |     100 |    95.45 |     100 |     100 | 125               
  ...and-parser.ts |   89.74 |    85.71 |     100 |   89.74 | 59-62             
  sttClient.ts     |   93.33 |       75 |     100 |   93.33 | 28-29             
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...ght/generators |   85.95 |    86.42 |   90.47 |   85.95 |                   
  DataProcessor.ts |   85.68 |    86.46 |   92.85 |   85.68 | ...1110,1114-1121 
  ...tGenerator.ts |   98.21 |    85.71 |     100 |   98.21 | 46                
  ...teRenderer.ts |   45.45 |      100 |       0 |   45.45 | 13-51             
 .../insight/types |       0 |       50 |      50 |       0 |                   
  ...sightTypes.ts |       0 |        0 |       0 |       0 |                   
  ...sightTypes.ts |       0 |        0 |       0 |       0 | 1                 
 ...mpt-processors |   97.27 |    94.04 |     100 |   97.27 |                   
  ...tProcessor.ts |     100 |      100 |     100 |     100 |                   
  ...eProcessor.ts |   94.52 |    84.21 |     100 |   94.52 | 46-47,93-94       
  ...tionParser.ts |     100 |      100 |     100 |     100 |                   
  ...lProcessor.ts |   97.41 |    95.65 |     100 |   97.41 | 95-98             
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/test-utils    |   93.63 |    83.33 |      80 |   93.63 |                   
  ...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            |   68.45 |    67.72 |   48.64 |   68.45 |                   
  App.tsx          |     100 |      100 |     100 |     100 |                   
  AppContainer.tsx |   73.71 |    57.14 |   42.85 |   73.71 | ...1261,1667-1673 
  ...tionNudge.tsx |    9.58 |      100 |       0 |    9.58 | 24-94             
  ...ackDialog.tsx |   29.23 |      100 |       0 |   29.23 | 25-75             
  ...tionNudge.tsx |    7.69 |      100 |       0 |    7.69 | 25-103            
  colors.ts        |   56.36 |      100 |   29.41 |   56.36 | ...49,51-52,60-61 
  constants.ts     |     100 |      100 |     100 |     100 |                   
  keyMatchers.ts   |   91.83 |    88.46 |     100 |   91.83 | 25-26,54-55       
  ...tic-colors.ts |     100 |      100 |     100 |     100 |                   
  textConstants.ts |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/ui/auth       |   29.54 |    46.34 |   26.08 |   29.54 |                   
  AuthDialog.tsx   |   51.95 |     47.5 |   28.57 |   51.95 | ...53,672,674,676 
  ...nProgress.tsx |       0 |        0 |       0 |       0 | 1-64              
  useAuth.ts       |     2.3 |      100 |       0 |     2.3 | 45-595            
 src/ui/commands   |    51.6 |    79.64 |   42.85 |    51.6 |                   
  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 |                   
  arenaCommand.ts  |   32.65 |    67.64 |    37.5 |   32.65 | ...52-557,636-641 
  authCommand.ts   |     100 |      100 |     100 |     100 |                   
  bgCommand.ts     |   23.18 |      100 |       0 |   23.18 | 14-69             
  btwCommand.ts    |     100 |    90.32 |     100 |     100 | 25,199,213        
  bugCommand.ts    |   76.47 |    66.66 |      50 |   76.47 | 21-22,57-66       
  clearCommand.ts  |   89.65 |    55.55 |      50 |   89.65 | 23-24,49-50,68-69 
  ...essCommand.ts |   63.15 |       50 |      50 |   63.15 | ...47-148,162-165 
  ...extCommand.ts |    4.65 |      100 |       0 |    4.65 | ...8,93-96,99-375 
  copyCommand.ts   |   96.22 |      100 |      50 |   96.22 | 15-16             
  ...ryCommand.tsx |   59.19 |    73.07 |    37.5 |   59.19 | ...15-216,224-232 
  docsCommand.ts   |   95.23 |       80 |      50 |   95.23 | 20-21             
  doctorCommand.ts |     100 |    93.33 |     100 |     100 | 20                
  editorCommand.ts |     100 |      100 |     100 |     100 |                   
  exportCommand.ts |   55.97 |    91.66 |   33.33 |   55.97 | ...48-349,356-357 
  ...onsCommand.ts |   44.09 |    85.71 |   27.27 |   44.09 | ...35-236,244-245 
  helpCommand.ts   |     100 |      100 |     100 |     100 |                   
  hooksCommand.ts  |   42.72 |       60 |   33.33 |   42.72 | ...86-116,123-124 
  ideCommand.ts    |   41.91 |    69.23 |   21.42 |   41.91 | ...08-209,212-226 
  index.ts         |       0 |        0 |       0 |       0 | 1-20              
  initCommand.ts   |    81.7 |       70 |      50 |    81.7 | ...67,81-86,88-93 
  ...ghtCommand.ts |   56.62 |    28.57 |   28.57 |   56.62 | ...65-179,184-197 
  ...ageCommand.ts |   89.24 |    82.35 |   76.92 |   89.24 | ...20-323,345-346 
  mcpCommand.ts    |   85.71 |      100 |      50 |   85.71 | 14-15             
  memoryCommand.ts |   44.63 |    84.61 |   23.07 |   44.63 | ...69,574-575,593 
  modelCommand.ts  |   57.31 |       80 |   66.66 |   57.31 | 24-33,51-77       
  notesCommand.ts  |    9.32 |      100 |       0 |    9.32 | 27-30,33-151      
  ...onsCommand.ts |     100 |      100 |     100 |     100 |                   
  quitCommand.ts   |   93.75 |      100 |      50 |   93.75 | 15-16             
  recapCommand.ts  |   22.44 |      100 |       0 |   22.44 | 18-58             
  ...oreCommand.ts |   92.24 |     87.5 |     100 |   92.24 | ...,83-88,129-130 
  resumeCommand.ts |     100 |      100 |     100 |     100 |                   
  rewindCommand.ts |    62.5 |      100 |       0 |    62.5 | 17-22             
  ...ngsCommand.ts |     100 |      100 |     100 |     100 |                   
  setupCommand.ts  |     100 |      100 |     100 |     100 |                   
  ...hubCommand.ts |   80.12 |    63.63 |      60 |   80.12 | ...69-172,175-178 
  skillsCommand.ts |   12.28 |      100 |       0 |   12.28 | ...91-109,112-139 
  statsCommand.ts  |   76.92 |       75 |      50 |   76.92 | ...36,50-51,65-66 
  ...aryCommand.ts |    4.61 |      100 |       0 |    4.61 | 21-24,27-322      
  teamCommand.ts   |   15.55 |      100 |       0 |   15.55 | ...70-271,274-298 
  ...tupCommand.ts |     100 |      100 |     100 |     100 |                   
  themeCommand.ts  |     100 |      100 |     100 |     100 |                   
  toolsCommand.ts  |   95.12 |      100 |      50 |   95.12 | 18-19             
  trustCommand.ts  |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
  vimCommand.ts    |   42.85 |      100 |       0 |   42.85 | 14-15,18-28       
  voiceCommand.ts  |   35.08 |      100 |       0 |   35.08 | 29-51,55-73       
 src/ui/components |   58.44 |       73 |   59.72 |   58.44 |                   
  AboutBox.tsx     |     100 |      100 |     100 |     100 |                   
  AnsiOutput.tsx   |     100 |      100 |     100 |     100 |                   
  ApiKeyInput.tsx  |   18.91 |      100 |       0 |   18.91 | 30-95             
  AppHeader.tsx    |   89.58 |       50 |     100 |   89.58 | 33-38             
  ...odeDialog.tsx |     9.7 |      100 |       0 |     9.7 | 35-47,50-182      
  AsciiArt.ts      |     100 |      100 |     100 |     100 |                   
  ...Indicator.tsx |   13.95 |      100 |       0 |   13.95 | 18-58             
  ...TextInput.tsx |   63.22 |    70.27 |      50 |   63.22 | ...12,220-222,240 
  Composer.tsx     |   89.89 |    58.33 |      50 |   89.89 | ...-55,73,112,125 
  ...itDisplay.tsx |   55.81 |      100 |      50 |   55.81 | 22-38,42-43       
  ...entPrompt.tsx |     100 |      100 |     100 |     100 |                   
  ...ryDisplay.tsx |   75.89 |    62.06 |     100 |   75.89 | ...,88,93-108,113 
  ...geDisplay.tsx |   90.47 |       75 |     100 |   90.47 | 20-21             
  ...ification.tsx |   28.57 |      100 |       0 |   28.57 | 16-36             
  ...gProfiler.tsx |       0 |        0 |       0 |       0 | 1-36              
  ...ogManager.tsx |    8.29 |      100 |       0 |    8.29 | 54-593            
  ...ngsDialog.tsx |    8.44 |      100 |       0 |    8.44 | 37-195            
  ExitWarning.tsx  |     100 |      100 |     100 |     100 |                   
  ...ustDialog.tsx |     100 |      100 |     100 |     100 |                   
  Footer.tsx       |   75.22 |       35 |     100 |   75.22 | ...74,87-91,93-97 
  ...ngSpinner.tsx |   54.28 |       50 |      50 |   54.28 | 31-48,61          
  Header.tsx       |   98.21 |    86.66 |     100 |   98.21 | 96,98             
  Help.tsx         |   98.74 |    68.75 |     100 |   98.74 | 74,129            
  ...emDisplay.tsx |   67.24 |       40 |     100 |   67.24 | ...34,237,240,243 
  ...ngeDialog.tsx |     100 |      100 |     100 |     100 |                   
  InputPrompt.tsx  |   79.19 |    75.08 |     100 |   79.19 | ...1306-1322,1364 
  ...Shortcuts.tsx |   21.11 |      100 |       0 |   21.11 | ...5,48-50,66-124 
  ...Indicator.tsx |     100 |      100 |     100 |     100 |                   
  ...firmation.tsx |   91.42 |      100 |      50 |   91.42 | 26-31             
  MainContent.tsx  |    17.1 |      100 |       0 |    17.1 | 25-96             
  ...geDisplay.tsx |       0 |        0 |       0 |       0 | 1-41              
  ModelDialog.tsx  |   75.13 |    40.98 |     100 |   75.13 | ...17-433,478-482 
  ...tsDisplay.tsx |     100 |      100 |     100 |     100 |                   
  ...fications.tsx |   18.18 |      100 |       0 |   18.18 | 15-58             
  ...onsDialog.tsx |    2.18 |      100 |       0 |    2.18 | 62-133,148-986    
  ...ryDisplay.tsx |     100 |      100 |     100 |     100 |                   
  ...icePrompt.tsx |   88.14 |    83.87 |     100 |   88.14 | ...01-105,133-138 
  PrepareLabel.tsx |   91.66 |    76.19 |     100 |   91.66 | 73-75,77-79,110   
  ...geDisplay.tsx |     100 |      100 |     100 |     100 |                   
  ...ngDisplay.tsx |   21.42 |      100 |       0 |   21.42 | 13-39             
  RewindDialog.tsx |       0 |        0 |       0 |       0 | 1-217             
  RewindPicker.tsx |    3.35 |      100 |       0 |    3.35 | 48-70,89-394      
  ...ionPicker.tsx |      95 |    91.89 |     100 |      95 | 88,228-236        
  ...onPreview.tsx |   93.38 |    78.26 |     100 |   93.38 | ...,66-67,126-128 
  ...ryDisplay.tsx |     100 |      100 |     100 |     100 |                   
  ...putPrompt.tsx |   72.56 |       80 |      40 |   72.56 | ...06-109,114-117 
  ...ngsDialog.tsx |   66.75 |    72.66 |     100 |   66.75 | ...72-780,786-787 
  ...ionDialog.tsx |    87.8 |      100 |   33.33 |    87.8 | 36-39,44-51       
  ...putPrompt.tsx |    15.9 |      100 |       0 |    15.9 | 20-63             
  ...Indicator.tsx |   44.44 |      100 |       0 |   44.44 | 12-17             
  ...MoreLines.tsx |      28 |      100 |       0 |      28 | 18-40             
  ...ionPicker.tsx |   17.92 |      100 |       0 |   17.92 | 53-168            
  StatsDisplay.tsx |     100 |      100 |     100 |     100 |                   
  StatusBar.tsx    |   96.19 |    72.22 |     100 |   96.19 | 109-111,113       
  ...nsDisplay.tsx |   84.09 |    57.14 |     100 |   84.09 | ...16-118,125-127 
  ...ffDisplay.tsx |   18.42 |      100 |       0 |   18.42 | 16-18,25-58       
  ThemeDialog.tsx  |   89.95 |    46.15 |      75 |   89.95 | ...71-173,243-245 
  Tips.tsx         |      75 |       60 |      75 |      75 | 23,48-49,52-62    
  TodoDisplay.tsx  |     100 |      100 |     100 |     100 |                   
  ...tsDisplay.tsx |     100 |     87.5 |     100 |     100 | 31-32             
  ...oryBanner.tsx |       0 |        0 |       0 |       0 | 1-26              
  TrustDialog.tsx  |     100 |    81.81 |     100 |     100 | 71-86             
  ...ification.tsx |   36.36 |      100 |       0 |   36.36 | 15-22             
  ...MicButton.tsx |   11.11 |      100 |       0 |   11.11 | 26-81             
  ...ackDialog.tsx |    7.84 |      100 |       0 |    7.84 | 24-134            
 ...nts/agent-view |   24.89 |    89.36 |    12.5 |   24.89 |                   
  ...tChatView.tsx |     8.1 |      100 |       0 |     8.1 | 53-283            
  ...tComposer.tsx |    9.95 |      100 |       0 |    9.95 | 57-308            
  AgentFooter.tsx  |   17.07 |      100 |       0 |   17.07 | 28-66             
  AgentHeader.tsx  |   15.38 |      100 |       0 |   15.38 | 27-64             
  AgentTabBar.tsx  |    8.25 |      100 |       0 |    8.25 | 35-55,60-167      
  ...oryAdapter.ts |     100 |     91.3 |     100 |     100 | 102,108-109,137   
  index.ts         |       0 |        0 |       0 |       0 | 1-12              
 ...mponents/arena |    5.89 |      100 |       0 |    5.89 |                   
  ArenaCards.tsx   |       4 |      100 |       0 |       4 | 24-129,134-290    
  ...ectDialog.tsx |    5.28 |      100 |       0 |    5.28 | 32-260            
  ...artDialog.tsx |   10.34 |      100 |       0 |   10.34 | 26-147            
  ...tusDialog.tsx |    5.63 |      100 |       0 |    5.63 | 33-75,80-288      
  ...topDialog.tsx |    6.17 |      100 |       0 |    6.17 | 33-213            
 ...nts/extensions |   45.28 |    33.33 |      60 |   45.28 |                   
  ...gerDialog.tsx |   44.31 |    34.14 |      75 |   44.31 | ...71-480,483-488 
  index.ts         |       0 |        0 |       0 |       0 | 1-9               
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...tensions/steps |   54.77 |    94.23 |   66.66 |   54.77 |                   
  ...ctionStep.tsx |   95.12 |    92.85 |   85.71 |   95.12 | 84-86,89          
  ...etailStep.tsx |    6.18 |      100 |       0 |    6.18 | 17-128            
  ...nListStep.tsx |   88.35 |    94.73 |      80 |   88.35 | 51-52,58-71,105   
  ...electStep.tsx |   13.46 |      100 |       0 |   13.46 | 20-70             
  ...nfirmStep.tsx |   19.56 |      100 |       0 |   19.56 | 23-65             
  index.ts         |     100 |      100 |     100 |     100 |                   
 ...mponents/hooks |   78.41 |    70.53 |      85 |   78.41 |                   
  ...etailStep.tsx |   96.52 |       75 |     100 |   96.52 | 33,37,50,59       
  ...etailStep.tsx |   98.13 |    82.35 |     100 |   98.13 | 41-42             
  ...abledStep.tsx |     100 |      100 |     100 |     100 |                   
  ...sListStep.tsx |     100 |      100 |     100 |     100 |                   
  ...entDialog.tsx |   47.78 |    52.83 |   66.66 |   47.78 | ...04,408-421,425 
  constants.ts     |     100 |      100 |     100 |     100 |                   
  index.ts         |       0 |        0 |       0 |       0 | 1-13              
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...components/mcp |   18.82 |    84.37 |   77.77 |   18.82 |                   
  ...entDialog.tsx |    3.64 |      100 |       0 |    3.64 | 41-717            
  constants.ts     |     100 |      100 |     100 |     100 |                   
  index.ts         |       0 |        0 |       0 |       0 | 1-30              
  types.ts         |     100 |      100 |     100 |     100 |                   
  utils.ts         |   96.42 |    87.09 |     100 |   96.42 | 21,96-97          
 ...ents/mcp/steps |    7.31 |      100 |       0 |    7.31 |                   
  ...icateStep.tsx |    7.58 |      100 |       0 |    7.58 | 27-197            
  ...electStep.tsx |   10.95 |      100 |       0 |   10.95 | 16-88             
  ...etailStep.tsx |    5.26 |      100 |       0 |    5.26 | 31-247            
  ...rListStep.tsx |    5.88 |      100 |       0 |    5.88 | 20-176            
  ...etailStep.tsx |   10.41 |      100 |       0 |   10.41 | ...1,67-79,82-139 
  ToolListStep.tsx |    7.14 |      100 |       0 |    7.14 | 16-146            
 ...nents/messages |   75.59 |    76.68 |   64.15 |   75.59 |                   
  ...ionDialog.tsx |   77.35 |    74.54 |    62.5 |   77.35 | ...90,508,526-528 
  BtwMessage.tsx   |   76.31 |       50 |     100 |   76.31 | 34-42             
  ...onMessage.tsx |   91.93 |    82.35 |     100 |   91.93 | 57-59,61,63       
  ...nMessages.tsx |   94.97 |      100 |    90.9 |   94.97 | 189-199           
  DiffRenderer.tsx |   93.19 |    86.17 |     100 |   93.19 | ...09,237-238,304 
  ...ssMessage.tsx |    12.5 |      100 |       0 |    12.5 | 18-59             
  RecapMessage.tsx |   42.85 |      100 |       0 |   42.85 | 19-26             
  ...sMessages.tsx |   16.17 |      100 |       0 |   16.17 | ...1,85-95,99-104 
  ...ryMessage.tsx |   12.82 |      100 |       0 |   12.82 | 22-59             
  ...onMessage.tsx |   73.07 |    55.81 |   33.33 |   73.07 | ...34-436,443-445 
  ...upMessage.tsx |   95.09 |     87.5 |     100 |   95.09 | 40-43,55          
  ToolMessage.tsx  |   70.84 |    72.28 |   81.81 |   70.84 | ...94-499,573-575 
 ...ponents/shared |   78.66 |    76.64 |    87.5 |   78.66 |                   
  ...ctionList.tsx |   99.03 |    95.65 |     100 |   99.03 | 85                
  ...tonSelect.tsx |   97.14 |    66.66 |     100 |   97.14 | 72                
  EnumSelector.tsx |     100 |    96.42 |     100 |     100 | 58                
  MaxSizedBox.tsx  |   81.13 |    81.96 |   88.88 |   81.13 | ...12-513,618-619 
  MultiSelect.tsx  |    5.59 |      100 |       0 |    5.59 | 34-41,44-193      
  ...tonSelect.tsx |     100 |      100 |     100 |     100 |                   
  ...eSelector.tsx |     100 |       60 |     100 |     100 | 40-45             
  TextInput.tsx    |   38.69 |       50 |      25 |   38.69 | ...72-206,212-218 
  text-buffer.ts   |   82.07 |    75.59 |   96.87 |   82.07 | ...1897,1924,1986 
  ...er-actions.ts |   86.71 |    67.79 |     100 |   86.71 | ...07-608,809-811 
 ...ents/subagents |   32.77 |    33.33 |    12.5 |   32.77 |                   
  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         |   13.69 |    33.33 |   16.66 |   13.69 | ...1,56-57,60-102 
 ...bagents/create |    9.13 |      100 |       0 |    9.13 |                   
  ...ionWizard.tsx |    7.28 |      100 |       0 |    7.28 | 34-299            
  ...rSelector.tsx |   14.75 |      100 |       0 |   14.75 | 26-85             
  ...onSummary.tsx |    4.26 |      100 |       0 |    4.26 | 27-331            
  ...tionInput.tsx |    8.63 |      100 |       0 |    8.63 | 23-177            
  ...dSelector.tsx |   33.33 |      100 |       0 |   33.33 | 20-21,26-27,36-63 
  ...nSelector.tsx |    37.5 |      100 |       0 |    37.5 | 20-21,26-27,36-58 
  ...EntryStep.tsx |   12.76 |      100 |       0 |   12.76 | 34-78             
  ToolSelector.tsx |    4.16 |      100 |       0 |    4.16 | 31-253            
 ...bagents/manage |    8.43 |      100 |       0 |    8.43 |                   
  ...ctionStep.tsx |   10.25 |      100 |       0 |   10.25 | 21-103            
  ...eleteStep.tsx |   20.93 |      100 |       0 |   20.93 | 23-62             
  ...tEditStep.tsx |   25.53 |      100 |       0 |   25.53 | ...2,37-38,51-124 
  ...ctionStep.tsx |    2.29 |      100 |       0 |    2.29 | 28-449            
  ...iewerStep.tsx |   15.21 |      100 |       0 |   15.21 | 18-66             
  ...gerDialog.tsx |    6.74 |      100 |       0 |    6.74 | 35-341            
 ...agents/runtime |   83.84 |    60.91 |     100 |   83.84 |                   
  ...onDisplay.tsx |   83.84 |    60.91 |     100 |   83.84 | ...88-690,693-696 
 ...mponents/views |   43.51 |    69.23 |   23.07 |   43.51 |                   
  ContextUsage.tsx |    5.07 |      100 |       0 |    5.07 | ...30-145,148-424 
  DoctorReport.tsx |     9.8 |      100 |       0 |     9.8 | 25-54,57-131      
  ...sionsList.tsx |   87.69 |    73.68 |     100 |   87.69 | 65-72             
  McpStatus.tsx    |   89.53 |    60.52 |     100 |   89.53 | ...72,175-177,262 
  SkillsList.tsx   |   27.27 |      100 |       0 |   27.27 | 18-35             
  ToolsList.tsx    |     100 |      100 |     100 |     100 |                   
 src/ui/contexts   |   76.49 |    79.92 |    87.5 |   76.49 |                   
  ...ewContext.tsx |   65.77 |      100 |      75 |   65.77 | ...22-225,231-241 
  AppContext.tsx   |      40 |      100 |       0 |      40 | 17-22             
  ...igContext.tsx |   81.81 |       50 |     100 |   81.81 | 15-16             
  ...ssContext.tsx |   83.83 |       83 |     100 |   83.83 | ...1049,1054-1056 
  ...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 |   89.47 |       50 |     100 |   89.47 | 117-118           
  ...teContext.tsx |   85.71 |       50 |     100 |   85.71 | 160-161           
  ...deContext.tsx |   76.08 |    72.72 |     100 |   76.08 | 47-48,52-59,77-78 
 src/ui/editors    |   93.33 |    85.71 |   66.66 |   93.33 |                   
  ...ngsManager.ts |   93.33 |    85.71 |   66.66 |   93.33 | 49,63-64          
 src/ui/hooks      |   74.49 |    78.45 |   79.54 |   74.49 |                   
  ...dProcessor.ts |   83.02 |     81.9 |     100 |   83.02 | ...86-387,406-433 
  keyToAnsi.ts     |    3.92 |      100 |       0 |    3.92 | 19-77             
  ...dProcessor.ts |   94.77 |    70.58 |     100 |   94.77 | ...75-276,281-282 
  ...dProcessor.ts |   76.06 |    57.14 |   66.66 |   76.06 | ...97,721,740-744 
  ...amingState.ts |   12.22 |      100 |       0 |   12.22 | 54-158            
  ...agerDialog.ts |   88.23 |      100 |     100 |   88.23 | 20,24             
  ...odeCommand.ts |   58.82 |      100 |     100 |   58.82 | 28,33-48          
  ...enaCommand.ts |      85 |      100 |     100 |      85 | 23-24,29          
  ...aInProcess.ts |   19.81 |    66.66 |      25 |   19.81 | 57-175            
  ...Completion.ts |   92.77 |    89.09 |     100 |   92.77 | ...86-187,220-223 
  ...ifications.ts |   88.05 |    94.73 |     100 |   88.05 | 84-93             
  ...tIndicator.ts |     100 |    93.75 |     100 |     100 | 63                
  ...waySummary.ts |   41.12 |       40 |      50 |   41.12 | 64-79,106,119-179 
  ...ntProgress.ts |   38.37 |      100 |   16.66 |   38.37 | ...9,82-88,91-106 
  ...ketedPaste.ts |    23.8 |      100 |       0 |    23.8 | 19-38             
  ...lanUpdates.ts |     100 |       92 |     100 |     100 | 59,158            
  ...ompletion.tsx |   94.87 |    80.55 |     100 |   94.87 | ...02-203,205-206 
  ...dMigration.ts |   90.62 |       75 |     100 |   90.62 | 38-40             
  useCompletion.ts |    92.4 |     87.5 |     100 |    92.4 | 68-69,93-94,98-99 
  ...ialogClose.ts |   22.22 |      100 |     100 |   22.22 | 67-109            
  ...orSettings.ts |     100 |      100 |     100 |     100 |                   
  ...itHandling.ts |   45.16 |      100 |     100 |   45.16 | 46-98             
  ...ionUpdates.ts |   93.45 |     92.3 |     100 |   93.45 | ...83-287,300-306 
  ...agerDialog.ts |   88.88 |      100 |     100 |   88.88 | 21,25             
  ...backDialog.ts |   50.75 |    77.77 |   33.33 |   50.75 | ...56-171,192-193 
  useFocus.ts      |     100 |      100 |     100 |     100 |                   
  ...olderTrust.ts |     100 |      100 |     100 |     100 |                   
  ...ggestions.tsx |   89.15 |     64.7 |     100 |   89.15 | ...19-121,146-147 
  ...miniStream.ts |   69.54 |    68.08 |    87.5 |   69.54 | ...2188,2197-2199 
  ...BranchName.ts |    90.9 |     92.3 |     100 |    90.9 | 19-20,55-58       
  ...itDiffStat.ts |    7.69 |      100 |       0 |    7.69 | 26-79             
  ...oryManager.ts |   98.41 |    93.33 |     100 |   98.41 | 43                
  ...ooksDialog.ts |    87.5 |      100 |     100 |    87.5 | 19,23             
  ...stListener.ts |     100 |      100 |     100 |     100 |                   
  ...ssageDrain.ts |   72.72 |       40 |     100 |   72.72 | 25-26,28-31       
  ...nAuthError.ts |   76.19 |       50 |     100 |   76.19 | 39-40,43-45       
  ...ionEffects.ts |   30.58 |     37.5 |     100 |   30.58 | ...12-119,123-124 
  ...putHistory.ts |   92.59 |    85.71 |     100 |   92.59 | 63-64,72,94-96    
  ...storyStore.ts |     100 |    94.11 |     100 |     100 | 69                
  ...rdHandling.ts |   33.87 |      100 |      50 |   33.87 | 92,101-249        
  useKeypress.ts   |     100 |      100 |     100 |     100 |                   
  ...rdProtocol.ts |   36.36 |      100 |       0 |   36.36 | 24-31             
  ...unchEditor.ts |    8.97 |      100 |       0 |    8.97 | 20-67,74-125      
  ...gIndicator.ts |     100 |      100 |     100 |     100 |                   
  useLogger.ts     |   21.05 |      100 |       0 |   21.05 | 15-37             
  useMcpDialog.ts  |    87.5 |      100 |     100 |    87.5 | 19,23             
  ...oryMonitor.ts |     100 |      100 |     100 |     100 |                   
  ...ssageQueue.ts |     100 |      100 |     100 |     100 |                   
  ...delCommand.ts |     100 |       75 |     100 |     100 | 22                
  ...raseCycler.ts |   84.48 |    76.47 |     100 |   84.48 | ...47,50-51,67-69 
  ...uggestions.ts |   50.73 |       28 |     100 |   50.73 | ...81-183,201-203 
  ...lScheduler.ts |    70.6 |    94.73 |     100 |    70.6 | ...89-292,379-389 
  ...oryCommand.ts |       0 |        0 |       0 |       0 | 1-7               
  ...umeCommand.ts |   94.64 |    68.75 |     100 |   94.64 | 66-67,85          
  ...ompletion.tsx |   90.59 |    83.33 |     100 |   90.59 | ...01,104,137-140 
  ...ectionList.ts |   96.59 |    94.62 |     100 |   96.59 | ...82-183,237-240 
  ...moryStatus.ts |       0 |        0 |       0 |       0 | 1-29              
  ...sionPicker.ts |   91.54 |    73.07 |     100 |   91.54 | ...69-270,274-275 
  ...ngsCommand.ts |   18.75 |      100 |       0 |   18.75 | 10-25             
  ...ellHistory.ts |   91.74 |    79.41 |     100 |   91.74 | ...74,122-123,133 
  ...oryCommand.ts |       0 |        0 |       0 |       0 | 1-73              
  ...Completion.ts |   80.97 |     84.4 |   91.66 |   80.97 | ...69-471,479-487 
  ...tateAndRef.ts |     100 |      100 |     100 |     100 |                   
  ...eateDialog.ts |   88.23 |      100 |     100 |   88.23 | 14,18             
  ...rminalSize.ts |   76.19 |      100 |      50 |   76.19 | 21-25             
  ...emeCommand.ts |    7.95 |      100 |       0 |    7.95 | 25-113            
  useTimer.ts      |   88.09 |    85.71 |     100 |   88.09 | 44-45,51-53       
  ...lMigration.ts |       0 |        0 |       0 |       0 |                   
  ...rustModify.ts |     100 |      100 |     100 |     100 |                   
  useVoice.ts      |   93.24 |    77.77 |     100 |   93.24 | 58-62             
  ...elcomeBack.ts |   69.44 |    54.54 |     100 |   69.44 | ...85,89-90,96-98 
  ...indowTitle.ts |     100 |    91.66 |     100 |     100 | 42                
  vim.ts           |   83.54 |     79.5 |     100 |   83.54 | ...44,748-756,765 
 src/ui/layouts    |   79.24 |    38.46 |     100 |   79.24 |                   
  ...AppLayout.tsx |   81.94 |       40 |     100 |   81.94 | 42-44,50-57,75-77 
  ...AppLayout.tsx |   73.52 |    33.33 |     100 |   73.52 | 30-35,37-39       
 src/ui/models     |   56.25 |    85.71 |      40 |   56.25 |                   
  ...ableModels.ts |   56.25 |    85.71 |      40 |   56.25 | ...3,80-81,98-100 
 ...noninteractive |     100 |      100 |    7.69 |     100 |                   
  ...eractiveUi.ts |     100 |      100 |    7.69 |     100 |                   
 src/ui/state      |   94.91 |    81.81 |     100 |   94.91 |                   
  extensions.ts    |   94.91 |    81.81 |     100 |   94.91 | 68-69,88          
 src/ui/themes     |   98.53 |    70.58 |     100 |   98.53 |                   
  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 |                   
  ...inal-theme.ts |   88.59 |    85.96 |     100 |   88.59 | ...57-261,266-270 
  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 |   87.98 |    82.89 |     100 |   87.98 | ...48-357,362-363 
  theme.ts         |     100 |    38.02 |     100 |     100 | ...34-449,457-461 
  xcode.ts         |     100 |      100 |     100 |     100 |                   
 src/ui/utils      |   72.28 |    86.02 |   82.45 |   72.28 |                   
  ...Colorizer.tsx |   82.78 |    88.23 |     100 |   82.78 | ...10-111,197-223 
  ...nRenderer.tsx |   59.31 |    38.23 |     100 |   59.31 | ...33-139,149-151 
  ...wnDisplay.tsx |   85.75 |    88.05 |     100 |   85.75 | ...76-284,317-342 
  QueryGuard.ts    |   85.71 |      100 |   66.66 |   85.71 | 61-62,65-66       
  ...eRenderer.tsx |   77.88 |    76.19 |     100 |   77.88 | 54-82             
  ...boardUtils.ts |   59.61 |    58.82 |     100 |   59.61 | ...,86-88,107-149 
  commandUtils.ts  |   93.54 |    88.63 |     100 |   93.54 | ...43,147,149-150 
  computeStats.ts  |     100 |      100 |     100 |     100 |                   
  displayUtils.ts  |   60.46 |      100 |      50 |   60.46 | 19-35             
  formatters.ts    |    94.8 |    98.07 |     100 |    94.8 | 101-104           
  gradientUtils.ts |     100 |      100 |     100 |     100 |                   
  highlight.ts     |   98.63 |       95 |     100 |   98.63 | 93                
  ...oryMapping.ts |     100 |    94.44 |     100 |     100 | 45,67             
  isNarrowWidth.ts |     100 |      100 |     100 |     100 |                   
  ...olDetector.ts |    7.22 |      100 |       0 |    7.22 | ...24-125,128-129 
  layoutUtils.ts   |     100 |      100 |     100 |     100 |                   
  ...nUtilities.ts |   69.84 |    85.71 |     100 |   69.84 | 75-91,100-101     
  ...mConstants.ts |     100 |      100 |     100 |     100 |                   
  ...storyUtils.ts |   60.42 |    67.14 |      90 |   60.42 | ...48,396,401-423 
  ...ickerUtils.ts |     100 |      100 |     100 |     100 |                   
  ...izedOutput.ts |   95.65 |      100 |   88.88 |   95.65 | 134-139           
  ...wOptimizer.ts |     100 |    96.77 |     100 |     100 | 69                
  terminalSetup.ts |    4.37 |      100 |       0 |    4.37 | 44-393            
  textUtils.ts     |   96.61 |     93.5 |    90.9 |   96.61 | ...32-233,245-246 
  updateCheck.ts   |     100 |    80.95 |     100 |     100 | 30-42             
 ...i/utils/export |    2.38 |        0 |       0 |    2.38 |                   
  collect.ts       |    0.87 |      100 |       0 |    0.87 | 40-394,401-697    
  index.ts         |     100 |      100 |     100 |     100 |                   
  normalize.ts     |    1.23 |      100 |       0 |    1.23 | 17-336            
  types.ts         |       0 |        0 |       0 |       0 | 1                 
  utils.ts         |      40 |      100 |       0 |      40 | 11-13             
 ...ort/formatters |    3.38 |      100 |       0 |    3.38 |                   
  html.ts          |    9.61 |      100 |       0 |    9.61 | ...28,34-76,82-84 
  json.ts          |      50 |      100 |       0 |      50 | 14-15             
  jsonl.ts         |     3.5 |      100 |       0 |     3.5 | 14-76             
  markdown.ts      |    0.94 |      100 |       0 |    0.94 | 13-295            
 src/utils         |   68.12 |     88.7 |   93.58 |   68.12 |                   
  acpModelUtils.ts |     100 |      100 |     100 |     100 |                   
  ...tification.ts |   92.59 |    71.42 |     100 |   92.59 | 36-37             
  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 |    93.75 |     100 |     100 | 30                
  deepMerge.ts     |     100 |       90 |     100 |     100 | 41-43,49          
  ...ScopeUtils.ts |   97.56 |    88.88 |     100 |   97.56 | 67                
  doctorChecks.ts  |   64.32 |    71.05 |     100 |   64.32 | ...63-269,293-309 
  ...arResolver.ts |   94.28 |    88.46 |     100 |   94.28 | 28-29,125-126     
  errors.ts        |   98.27 |       95 |     100 |   98.27 | 44-45             
  events.ts        |     100 |      100 |     100 |     100 |                   
  gitUtils.ts      |   91.91 |    84.61 |     100 |   91.91 | 78-81,124-127     
  ...AutoUpdate.ts |    51.2 |       90 |      50 |    51.2 | 87-152            
  ...lationInfo.ts |     100 |      100 |     100 |     100 |                   
  languageUtils.ts |   97.87 |    96.42 |     100 |   97.87 | 132-133           
  math.ts          |       0 |        0 |       0 |       0 | 1-15              
  ...onfigUtils.ts |     100 |      100 |     100 |     100 |                   
  ...iveHelpers.ts |   96.84 |    93.28 |     100 |   96.84 | ...87-488,586,599 
  package.ts       |   88.88 |       80 |     100 |   88.88 | 33-34             
  processUtils.ts  |     100 |      100 |     100 |     100 |                   
  readStdin.ts     |   79.62 |       90 |      80 |   79.62 | 33-40,52-54       
  relaunch.ts      |   98.07 |    76.92 |     100 |   98.07 | 70                
  resolvePath.ts   |   66.66 |       25 |     100 |   66.66 | 12-13,16,18-19    
  sandbox.ts       |       0 |        0 |       0 |       0 | 1-984             
  settingsUtils.ts |   86.32 |    90.59 |   94.44 |   86.32 | ...38,569,632-644 
  spawnWrapper.ts  |     100 |      100 |     100 |     100 |                   
  ...upWarnings.ts |     100 |      100 |     100 |     100 |                   
  stdioHelpers.ts  |     100 |       60 |     100 |     100 | 23,32             
  systemInfo.ts    |   92.52 |     90.9 |   83.33 |   92.52 | 63-69,184         
  ...InfoFields.ts |   86.13 |    65.78 |     100 |   86.13 | ...10-111,132-133 
  ...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 |                   
  ...WithBackup.ts |    62.1 |    77.77 |     100 |    62.1 | 93,107,118-157    
-------------------|---------|----------|---------|---------|-------------------
Core Package - Full Text Report
-------------------|---------|----------|---------|---------|-------------------
File               | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
-------------------|---------|----------|---------|---------|-------------------
All files          |   71.45 |    80.73 |   74.58 |   71.45 |                   
 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/agents        |    59.6 |    83.33 |   56.75 |    59.6 |                   
  ...chestrator.ts |   75.83 |     82.6 |     100 |   75.83 | ...49-159,210-217 
  ...ound-store.ts |   97.95 |     90.9 |     100 |   97.95 | 61                
  index.ts         |     100 |      100 |     100 |     100 |                   
  mailbox.ts       |      80 |    78.57 |      80 |      80 | 55-57,74-75,89-97 
  team-config.ts   |    6.48 |      100 |       0 |    6.48 | 43-176            
  team-registry.ts |   45.45 |      100 |       0 |   45.45 | ...34,37-38,41-42 
 src/agents/arena  |   64.56 |    66.66 |   68.49 |   64.56 |                   
  ...gentClient.ts |   79.47 |    88.88 |   81.81 |   79.47 | ...68-183,189-204 
  ArenaManager.ts  |    61.9 |    63.09 |   67.27 |    61.9 | ...1611,1620-1630 
  arena-events.ts  |   64.44 |      100 |      50 |   64.44 | ...71-175,178-183 
  index.ts         |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...gents/backends |   76.77 |    85.23 |    72.6 |   76.77 |                   
  ITermBackend.ts  |   97.97 |    93.93 |     100 |   97.97 | ...78-180,255,307 
  ...essBackend.ts |   92.81 |     85.5 |   82.85 |   92.81 | ...15-235,294,390 
  TmuxBackend.ts   |    90.7 |    76.55 |   97.36 |    90.7 | ...87,697,743-747 
  detect.ts        |   31.25 |      100 |       0 |   31.25 | 34-88             
  index.ts         |     100 |      100 |     100 |     100 |                   
  iterm-it2.ts     |     100 |     92.1 |     100 |     100 | 37-38,106         
  tmux-commands.ts |    6.64 |      100 |    3.03 |    6.64 | ...93-363,386-503 
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...agents/runtime |   78.52 |    75.83 |   74.75 |   78.52 |                   
  agent-core.ts    |   66.91 |    67.63 |   56.52 |   66.91 | ...1321,1348-1394 
  agent-events.ts  |    87.5 |      100 |      75 |    87.5 | 259-263           
  ...t-headless.ts |    80.5 |    71.11 |      55 |    80.5 | ...87-388,391-392 
  ...nteractive.ts |   85.71 |    83.33 |   80.64 |   85.71 | ...18,720,722,725 
  ...statistics.ts |   98.19 |    82.35 |     100 |   98.19 | 127,151,192,225   
  agent-types.ts   |     100 |      100 |     100 |     100 |                   
  compaction.ts    |   91.08 |    76.56 |     100 |   91.08 | ...29-233,240-241 
  index.ts         |     100 |      100 |     100 |     100 |                   
 ...ckgroundShells |   26.48 |       50 |   46.66 |   26.48 |                   
  diskOutput.ts    |   47.25 |       50 |    62.5 |   47.25 | 28-29,54-107      
  index.ts         |     100 |      100 |     100 |     100 |                   
  notifications.ts |    4.76 |      100 |       0 |    4.76 | 12-17,20-54       
  registry.ts      |    2.53 |      100 |       0 |    2.53 | 24-126            
  types.ts         |     100 |      100 |     100 |     100 |                   
  watcher.ts       |   32.35 |       50 |      50 |   32.35 | ...0,63-79,88-109 
 src/config        |   69.87 |    71.33 |   57.34 |   69.87 |                   
  config.ts        |   68.12 |    66.79 |   52.94 |   68.12 | ...2503,2510-2513 
  constants.ts     |     100 |      100 |     100 |     100 |                   
  models.ts        |     100 |      100 |     100 |     100 |                   
  storage.ts       |   79.74 |    92.72 |    75.6 |   79.74 | ...88-292,303-304 
 ...nfirmation-bus |   74.35 |    52.17 |      90 |   74.35 |                   
  message-bus.ts   |   72.22 |       50 |      90 |   72.22 | ...18-120,123-124 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/core          |   78.59 |    79.87 |   89.41 |   78.59 |                   
  agentCore.ts     |   93.75 |       80 |     100 |   93.75 | 115,162,168,171   
  baseLlmClient.ts |     100 |    96.42 |     100 |     100 | 113               
  ...pointStore.ts |     100 |      100 |     100 |     100 |                   
  client.ts        |   75.05 |    73.23 |   91.66 |   75.05 | ...1120,1180-1181 
  ...tGenerator.ts |   80.48 |    55.17 |     100 |   80.48 | ...16,318,325-328 
  ...lScheduler.ts |    69.2 |    76.07 |      90 |    69.2 | ...1813,1870-1874 
  geminiChat.ts    |   72.29 |    82.31 |   81.25 |   72.29 | ...56-867,901-904 
  geminiRequest.ts |     100 |      100 |     100 |     100 |                   
  logger.ts        |   82.25 |    81.81 |     100 |   82.25 | ...57-361,407-421 
  ...tyDefaults.ts |     100 |      100 |     100 |     100 |                   
  ...olExecutor.ts |   92.59 |       75 |      50 |   92.59 | 41-42             
  ...on-helpers.ts |   74.74 |    46.15 |     100 |   74.74 | ...86,192,197-206 
  prompts.ts       |   81.71 |    87.05 |   64.28 |   81.71 | ...1263,1273-1300 
  tokenLimits.ts   |     100 |    88.23 |     100 |     100 | 43-44             
  ...okTriggers.ts |   99.31 |     90.9 |     100 |   99.31 | 124,135           
  turn.ts          |   91.13 |    87.03 |     100 |   91.13 | ...92,405-406,454 
 ...ntentGenerator |   87.91 |    69.28 |   91.17 |   87.91 |                   
  ...tGenerator.ts |   87.25 |    64.66 |    87.5 |   87.25 | ...45-652,656-657 
  converter.ts     |   90.35 |    73.97 |     100 |   90.35 | ...99,542-557,580 
  index.ts         |       0 |        0 |       0 |       0 | 1-21              
 ...ntentGenerator |   75.87 |    61.84 |   94.11 |   75.87 |                   
  ...tGenerator.ts |   73.49 |    61.64 |   93.75 |   73.49 | ...57-463,481-482 
  index.ts         |     100 |    66.66 |     100 |     100 | 45                
 ...ntentGenerator |   91.06 |    67.96 |      85 |   91.06 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...tGenerator.ts |   91.02 |    67.96 |      85 |   91.02 | ...37,547-548,576 
 ...ntentGenerator |   79.01 |    84.02 |    92.1 |   79.01 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  converter.ts     |   76.08 |    80.06 |      90 |   76.08 | ...1526,1547-1556 
  errorHandler.ts  |     100 |      100 |     100 |     100 |                   
  index.ts         |       0 |        0 |       0 |       0 | 1-94              
  ...tGenerator.ts |   48.78 |    91.66 |   77.77 |   48.78 | ...10-163,166-167 
  pipeline.ts      |   88.92 |    84.23 |     100 |   88.92 | ...65-766,786,798 
  ...CallParser.ts |   91.42 |    89.74 |     100 |   91.42 | ...48-352,382-383 
 ...rator/provider |    96.1 |    88.07 |   93.75 |    96.1 |                   
  dashscope.ts     |   96.29 |    87.09 |   93.33 |   96.29 | ...10-211,287-288 
  deepseek.ts      |   90.76 |       75 |     100 |   90.76 | 40-41,45-46,59-60 
  default.ts       |   97.64 |      100 |   85.71 |   97.64 | 85-86             
  index.ts         |     100 |      100 |     100 |     100 |                   
  modelscope.ts    |     100 |      100 |     100 |     100 |                   
  openrouter.ts    |     100 |      100 |     100 |     100 |                   
  types.ts         |       0 |        0 |       0 |       0 |                   
 src/extension     |   60.36 |    79.75 |   78.22 |   60.36 |                   
  ...-converter.ts |   63.79 |    47.82 |      90 |   63.79 | ...86-787,796-828 
  ...ionManager.ts |    44.7 |    84.12 |   65.11 |    44.7 | ...1320,1341-1360 
  ...onSettings.ts |   93.46 |    93.05 |     100 |   93.46 | ...17-221,228-232 
  ...-converter.ts |   54.88 |    94.44 |      60 |   54.88 | ...35-146,158-192 
  github.ts        |   44.94 |    88.52 |      60 |   44.94 | ...53-359,398-451 
  index.ts         |     100 |      100 |     100 |     100 |                   
  marketplace.ts   |   97.29 |    93.75 |     100 |   97.29 | ...64,184-185,274 
  npm.ts           |   49.82 |    76.08 |      75 |   49.82 | ...05-407,414-418 
  override.ts      |   94.11 |    88.88 |     100 |   94.11 | 63-64,81-82       
  settings.ts      |   66.26 |      100 |      50 |   66.26 | 81-108,143-149    
  storage.ts       |   94.73 |       90 |     100 |   94.73 | 41-42             
  ...ableSchema.ts |     100 |      100 |     100 |     100 |                   
  variables.ts     |   88.75 |    83.33 |     100 |   88.75 | ...28-231,234-237 
 src/followup      |   44.88 |    92.71 |   68.42 |   44.88 |                   
  followupState.ts |   95.83 |    89.18 |     100 |   95.83 | 153-155,210-211   
  forkedQuery.ts   |      30 |      100 |      50 |      30 | 122-249           
  index.ts         |     100 |      100 |     100 |     100 |                   
  overlayFs.ts     |   95.06 |       84 |     100 |   95.06 | 78,108,122,133    
  speculation.ts   |    13.4 |      100 |   16.66 |    13.4 | 88-458,518-563    
  ...onToolGate.ts |     100 |    96.29 |     100 |     100 | 93                
  ...nGenerator.ts |   38.27 |    95.12 |   33.33 |   38.27 | ...00-302,337-367 
 src/generated     |       0 |        0 |       0 |       0 |                   
  git-commit.ts    |       0 |        0 |       0 |       0 | 1-10              
 src/hooks         |   77.44 |     84.8 |   85.24 |   77.44 |                   
  ...on-checker.ts |     100 |      100 |     100 |     100 |                   
  ...Aggregator.ts |   96.17 |       90 |     100 |   96.17 | ...74,276-277,350 
  ...entHandler.ts |   86.07 |       84 |   80.76 |   86.07 | ...88,641-642,652 
  hookPlanner.ts   |   78.18 |       72 |    90.9 |   78.18 | ...18-236,244-245 
  hookRegistry.ts  |   79.74 |    74.28 |     100 |   79.74 | ...59,361,363,365 
  hookRunner.ts    |   57.83 |    73.33 |   66.66 |   57.83 | ...47-557,610-611 
  hookSystem.ts    |   83.22 |      100 |   86.95 |   83.22 | ...46-362,368-384 
  index.ts         |     100 |      100 |     100 |     100 |                   
  trustedHooks.ts  |     9.3 |      100 |       0 |     9.3 | 24-122            
  types.ts         |   89.61 |    94.66 |   85.18 |   89.61 | ...45-346,406-410 
 src/ide           |   72.67 |    83.92 |   75.92 |   72.67 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  detect-ide.ts    |     100 |      100 |     100 |     100 |                   
  ide-client.ts    |    64.2 |    81.48 |   66.66 |    64.2 | ...9-970,999-1007 
  ideContext.ts    |     100 |      100 |     100 |     100 |                   
  process-utils.ts |   84.84 |    71.79 |     100 |   84.84 | ...37,151,193-194 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/lsp           |   33.39 |    43.75 |   44.91 |   33.39 |                   
  ...nfigLoader.ts |   70.27 |    35.89 |   94.73 |   70.27 | ...20-422,426-432 
  ...ionFactory.ts |    4.29 |      100 |       0 |    4.29 | ...20-371,377-394 
  ...Normalizer.ts |   23.09 |    13.72 |   30.43 |   23.09 | ...04-905,909-924 
  ...verManager.ts |   10.47 |       75 |      25 |   10.47 | ...56-675,681-711 
  ...eLspClient.ts |   17.89 |      100 |       0 |   17.89 | ...37-244,254-258 
  ...LspService.ts |   45.87 |    62.13 |   66.66 |   45.87 | ...1282,1299-1309 
  constants.ts     |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/mcp           |   78.74 |    75.68 |   75.92 |   78.74 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  ...h-provider.ts |   86.95 |      100 |   33.33 |   86.95 | ...,93,97,101-102 
  ...h-provider.ts |   73.74 |    54.45 |     100 |   73.74 | ...64-871,878-880 
  ...en-storage.ts |   98.62 |    97.72 |     100 |   98.62 | 87-88             
  oauth-utils.ts   |   70.58 |    85.29 |    90.9 |   70.58 | ...70-290,315-344 
  ...n-provider.ts |   89.83 |    95.83 |   45.45 |   89.83 | ...43,147,151-152 
 .../token-storage |   79.48 |    86.66 |   86.36 |   79.48 |                   
  ...en-storage.ts |     100 |      100 |     100 |     100 |                   
  ...en-storage.ts |   82.75 |    82.35 |   92.85 |   82.75 | ...62-172,180-181 
  ...en-storage.ts |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...en-storage.ts |   68.14 |    82.35 |   64.28 |   68.14 | ...81-295,298-314 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/memory        |   15.06 |       75 |     7.4 |   15.06 |                   
  ...tterParser.ts |   13.04 |      100 |       0 |   13.04 | 20-51,57-72       
  index.ts         |     100 |      100 |     100 |     100 |                   
  memoryAge.ts     |   32.07 |      100 |       0 |   32.07 | 36-46,53-68,75-84 
  ...yExtractor.ts |   13.68 |      100 |       0 |   13.68 | 35-189            
  memoryPrompt.ts  |     100 |      100 |     100 |     100 |                   
  memoryScan.ts    |   21.05 |      100 |       0 |   21.05 | 19-24,31-40       
  memoryStore.ts   |    7.75 |       75 |   18.18 |    7.75 | 52-364            
  proposalStore.ts |    7.27 |      100 |       0 |    7.27 | 20-152            
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/mocks         |       0 |        0 |       0 |       0 |                   
  msw.ts           |       0 |        0 |       0 |       0 | 1-9               
 src/models        |   88.44 |    81.65 |    87.3 |   88.44 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...nfigErrors.ts |   74.22 |       44 |   84.61 |   74.22 | ...,67-74,106-117 
  ...igResolver.ts |    99.3 |    87.09 |     100 |    99.3 | 127               
  modelRegistry.ts |     100 |    97.72 |     100 |     100 | 164               
  modelsConfig.ts  |   84.51 |    82.17 |   83.33 |   84.51 | ...1069,1098-1099 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/output        |     100 |      100 |     100 |     100 |                   
  ...-formatter.ts |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/permissions   |   68.47 |    87.27 |   48.27 |   68.47 |                   
  ...classifier.ts |   30.88 |    57.14 |   33.33 |   30.88 | ...07-230,234-235 
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...on-manager.ts |   77.21 |       80 |      84 |   77.21 | ...95-802,822-831 
  rule-parser.ts   |   98.03 |    95.15 |     100 |   98.03 | ...39-840,989-991 
  ...-semantics.ts |   58.28 |    85.27 |    30.2 |   58.28 | ...1604-1614,1643 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/prompts       |   29.09 |      100 |      25 |   29.09 |                   
  mcp-prompts.ts   |   18.18 |      100 |       0 |   18.18 | 11-19             
  ...t-registry.ts |   31.81 |      100 |   28.57 |   31.81 | ...45,51-58,71-76 
 src/recap         |   86.44 |    66.66 |     100 |   86.44 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...pGenerator.ts |   85.96 |    66.66 |     100 |   85.96 | 104-111           
 src/services      |   67.08 |    80.67 |   80.08 |   67.08 |                   
  baselineCheck.ts |    3.65 |      100 |       0 |    3.65 | 25-93,100-132     
  ...VerifyGate.ts |   88.81 |    91.42 |     100 |   88.81 | 91-99,139-146     
  ...ionService.ts |   80.63 |    85.31 |   81.81 |   80.63 | ...78-813,828-861 
  ...ingService.ts |   68.39 |    48.38 |   85.71 |   68.39 | ...25-437,453-454 
  cronScheduler.ts |   85.02 |    90.32 |   94.11 |   85.02 | ...24,128-137,202 
  evolveService.ts |      15 |      100 |       0 |      15 | 45-197            
  ...eryService.ts |   80.43 |    95.45 |      75 |   80.43 | ...19-134,140-141 
  fileReadCache.ts |     100 |      100 |     100 |     100 |                   
  ...temService.ts |   89.76 |     85.1 |   88.88 |   89.76 | ...89,191,266-273 
  fileTracker.ts   |   98.21 |     90.9 |     100 |   98.21 | 43                
  gitService.ts    |   85.39 |    83.33 |   77.77 |   85.39 | ...06-107,116-120 
  ...reeService.ts |    67.5 |    65.21 |    87.5 |    67.5 | ...24,830-847,865 
  ...derService.ts |   42.85 |    22.22 |   66.66 |   42.85 | ...03-108,117-118 
  ...ionService.ts |    97.5 |     96.7 |   95.45 |    97.5 | ...38-339,386-387 
  ...solidation.ts |     5.9 |      100 |       0 |     5.9 | 65-339            
  microcompact.ts  |   85.71 |       68 |     100 |   85.71 | ...59,76-77,79-80 
  ...leSelector.ts |   94.03 |       75 |     100 |   94.03 | ...40,243-244,285 
  ...kerService.ts |    5.79 |      100 |       0 |    5.79 | 21-107            
  ...EditVerify.ts |   11.11 |      100 |       0 |   11.11 | 19-76             
  ...MapService.ts |    83.2 |    79.31 |      90 |    83.2 | ...30,343,392-415 
  scopeLock.ts     |   36.17 |    66.66 |   28.57 |   36.17 | ...,87-88,104-116 
  sessionNotes.ts  |   33.89 |      100 |      40 |   33.89 | 89-147            
  sessionRecap.ts  |    12.5 |      100 |       0 |    12.5 | 20-35             
  ...ionService.ts |   79.23 |    74.74 |   88.88 |   79.23 | ...55-676,684-708 
  ...ionService.ts |   85.06 |    81.68 |      85 |   85.06 | ...1073,1079-1084 
  ...actService.ts |   28.04 |       50 |   33.33 |   28.04 | ...20-121,128-142 
  task-store.ts    |     8.2 |      100 |       0 |     8.2 | 106-586           
 .../sessionMemory |   32.89 |    95.23 |    37.5 |   32.89 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  prompts.ts       |    6.77 |      100 |       0 |    6.77 | ...65-166,179-221 
  sessionMemory.ts |   13.18 |      100 |       0 |   13.18 | 58-176            
  ...emoryUtils.ts |   85.22 |    95.23 |   64.28 |   85.22 | ...68-172,176-177 
 src/skills        |   83.48 |    80.25 |   89.28 |   83.48 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  skill-load.ts    |   90.83 |    77.77 |     100 |   90.83 | ...28,148,160-162 
  skill-manager.ts |    80.9 |    80.83 |    87.5 |    80.9 | ...12-720,727-731 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/subagents     |    80.7 |    82.74 |    92.1 |    80.7 |                   
  ...tin-agents.ts |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...nt-manager.ts |    71.6 |    73.88 |      88 |    71.6 | ...-932,1008-1009 
  types.ts         |     100 |      100 |     100 |     100 |                   
  validation.ts    |   92.34 |    96.51 |     100 |   92.34 | 50-55,59-64,68-73 
 src/telemetry     |   66.86 |     86.8 |    69.8 |   66.86 |                   
  config.ts        |     100 |      100 |     100 |     100 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  ...-exporters.ts |   46.37 |      100 |   44.44 |   46.37 | ...85,88-89,92-93 
  ...sTelemetry.ts |   24.19 |      100 |   16.66 |   24.19 | ...59-177,186-203 
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...t.circular.ts |       0 |        0 |       0 |       0 | 1-128             
  loggers.ts       |   50.32 |    66.66 |   52.38 |   50.32 | ...1134,1137-1161 
  metrics.ts       |   75.93 |    86.74 |   76.92 |   75.93 | ...09-846,849-878 
  sanitize.ts      |      80 |    83.33 |     100 |      80 | 35-36,41-42       
  sdk.ts           |   86.09 |    74.46 |     100 |   86.09 | ...67,270,273,286 
  ...etry-utils.ts |     100 |      100 |     100 |     100 |                   
  ...l-decision.ts |     100 |      100 |     100 |     100 |                   
  ...panContext.ts |     100 |      100 |     100 |     100 |                   
  types.ts         |   74.08 |    93.81 |   76.19 |   74.08 | ...1109,1112-1141 
  uiTelemetry.ts   |   91.87 |    96.15 |   78.57 |   91.87 | ...67-168,174-181 
 src/test-utils    |   92.85 |    94.28 |   77.41 |   92.85 |                   
  config.ts        |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  mock-tool.ts     |   91.02 |    93.54 |   75.86 |   91.02 | ...31,195-196,209 
  ...aceContext.ts |     100 |      100 |     100 |     100 |                   
 src/tools         |   71.33 |     77.8 |   73.46 |   71.33 |                   
  agent.ts         |   76.12 |     86.5 |   76.19 |   76.12 | ...1032,1041-1046 
  ...erQuestion.ts |   89.33 |    79.16 |    90.9 |   89.33 | ...74-375,382-383 
  bg-stop.ts       |   31.74 |      100 |      25 |   31.74 | ...79-132,164-167 
  browser-tool.ts  |   55.51 |    44.44 |   94.11 |   55.51 | ...77-978,980-981 
  cron-create.ts   |   97.61 |    88.88 |   83.33 |   97.61 | 30-31             
  cron-delete.ts   |   96.55 |      100 |   83.33 |   96.55 | 26-27             
  cron-list.ts     |   96.36 |      100 |   83.33 |   96.36 | 25-26             
  diffOptions.ts   |     100 |      100 |     100 |     100 |                   
  edit.ts          |   80.11 |       83 |      75 |   80.11 | ...68-569,652-702 
  exitPlanMode.ts  |   85.81 |    86.95 |     100 |   85.81 | ...24-129,157-169 
  glob.ts          |   91.57 |    88.33 |   84.61 |   91.57 | ...20,163,293,296 
  grep.ts          |    71.3 |    87.34 |   68.42 |    71.3 | ...90,530,538-545 
  ls.ts            |   96.72 |    90.14 |     100 |   96.72 | 169-174,205,209   
  lsp.ts           |   72.58 |    60.29 |   90.32 |   72.58 | ...1202,1204-1205 
  mailbox-tools.ts |   96.42 |      100 |   83.33 |   96.42 | 39-40,117-118     
  ...nt-manager.ts |   46.44 |       60 |    42.1 |   46.44 | ...89-507,510-547 
  mcp-client.ts    |   29.34 |    70.83 |   45.45 |   29.34 | ...1425,1431-1434 
  mcp-tool.ts      |   90.46 |     87.5 |   96.55 |   90.46 | ...11-612,662-663 
  memoryTool.ts    |   74.68 |     80.7 |   90.47 |   74.68 | ...41-350,463-547 
  ...iable-tool.ts |     100 |    84.61 |     100 |     100 | 102,109           
  read-file.ts     |   95.37 |    90.76 |   81.81 |   95.37 | ...5-88,91-92,224 
  repoMap.ts       |   59.42 |      100 |   33.33 |   59.42 | ...,47-61,109-112 
  ripGrep.ts       |   96.24 |    90.76 |     100 |   96.24 | ...73,276,354-355 
  ...-transport.ts |    6.34 |      100 |       0 |    6.34 | 47-145            
  shell.ts         |   86.01 |    78.19 |   85.71 |   86.01 | ...59-563,764-765 
  skill.ts         |   94.08 |    88.88 |   84.61 |   94.08 | ...16,255-258,262 
  task-create.ts   |   59.03 |      100 |   33.33 |   59.03 | ...,36-59,105-108 
  task-get.ts      |      50 |      100 |   33.33 |      50 | ...29,32-57,88-91 
  task-list.ts     |   47.82 |      100 |   33.33 |   47.82 | ...,40-72,113-116 
  task-output.ts   |    59.7 |      100 |   33.33 |    59.7 | ...30,33-50,87-90 
  task-ready.ts    |   39.44 |      100 |   33.33 |   39.44 | ...,35-93,132-135 
  task-stop.ts     |      50 |      100 |   33.33 |      50 | ...30,33-61,96-99 
  task-update.ts   |   86.56 |      100 |      75 |   86.56 | 33-38,156-167     
  tool-error.ts    |     100 |      100 |     100 |     100 |                   
  tool-names.ts    |     100 |      100 |     100 |     100 |                   
  tool-registry.ts |   62.56 |    65.38 |   57.57 |   62.56 | ...43-552,559-575 
  tools.ts         |   83.11 |    89.58 |   77.77 |   83.11 | ...33-434,450-456 
  web-fetch.ts     |   85.41 |    58.33 |   91.66 |   85.41 | ...58-259,261-262 
  write-file.ts    |   79.25 |    78.46 |   69.23 |   79.25 | ...60-463,475-510 
 ...ols/web-search |   79.93 |    74.13 |   78.94 |   79.93 |                   
  base-provider.ts |    72.5 |    57.14 |     100 |    72.5 | 44-48,63-66,75-76 
  index.ts         |   82.94 |    80.43 |   85.71 |   82.94 | ...80-188,196-200 
  types.ts         |       0 |        0 |       0 |       0 | 1                 
  utils.ts         |      60 |       50 |      50 |      60 | 35-42             
 ...arch/providers |   77.41 |    68.42 |   88.88 |   77.41 |                   
  ...e-provider.ts |   17.64 |      100 |       0 |   17.64 | 16-33             
  ...e-provider.ts |   83.33 |    55.55 |     100 |   83.33 | 57-58,61-62,76-80 
  ...y-provider.ts |   90.56 |       80 |     100 |   90.56 | 66-70             
 src/utils         |   84.55 |    87.13 |   88.68 |   84.55 |                   
  LruCache.ts      |       0 |        0 |       0 |       0 | 1-41              
  ...ssageQueue.ts |     100 |      100 |     100 |     100 |                   
  ...cFileWrite.ts |   76.08 |    44.44 |     100 |   76.08 | 61-70,72          
  ...essEmitter.ts |   10.86 |      100 |       0 |   10.86 | ...,95-99,114-190 
  browser.ts       |    7.69 |      100 |       0 |    7.69 | 17-56             
  ...igResolver.ts |     100 |      100 |     100 |     100 |                   
  cronDisplay.ts   |   42.85 |    23.07 |     100 |   42.85 | 26-31,33-45,47-54 
  cronParser.ts    |   89.74 |    85.71 |     100 |   89.74 | ...,63-64,183-186 
  debugLogger.ts   |   96.12 |    93.75 |   93.75 |   96.12 | 164-168           
  editHelper.ts    |   92.67 |    82.14 |     100 |   92.67 | ...52-454,463-464 
  editor.ts        |   96.98 |    93.87 |     100 |   96.98 | ...93-194,196-197 
  ...arResolver.ts |   94.28 |    88.88 |     100 |   94.28 | 28-29,125-126     
  ...entContext.ts |     100 |       95 |     100 |     100 | 83                
  errorParsing.ts  |   96.92 |       95 |     100 |   96.92 | 36-37             
  ...rReporting.ts |   88.46 |       90 |     100 |   88.46 | 69-74             
  errors.ts        |    68.7 |    77.27 |   53.33 |    68.7 | ...86-202,206-212 
  fetch.ts         |   71.97 |    72.22 |   71.42 |   71.97 | ...38,144,157,182 
  fileUtils.ts     |   87.96 |    81.31 |   94.73 |   87.96 | ...85-791,805-811 
  formatters.ts    |   54.54 |       50 |     100 |   54.54 | 12-16             
  ...eUtilities.ts |   89.21 |    86.66 |     100 |   89.21 | 16-17,49-55,65-66 
  ...rStructure.ts |   94.36 |    94.28 |     100 |   94.36 | ...17-120,330-335 
  getPty.ts        |    12.5 |      100 |       0 |    12.5 | 21-34             
  ...noreParser.ts |    92.3 |    89.36 |     100 |    92.3 | ...15-116,186-187 
  gitUtils.ts      |   36.66 |    76.92 |      50 |   36.66 | ...4,88-89,97-148 
  iconvHelper.ts   |     100 |      100 |     100 |     100 |                   
  ...rePatterns.ts |     100 |      100 |     100 |     100 |                   
  ...ionManager.ts |     100 |    88.88 |     100 |     100 | 26                
  jsonl-utils.ts   |    8.87 |      100 |       0 |    8.87 | ...51-184,190-196 
  ...-detection.ts |     100 |      100 |     100 |     100 |                   
  ...yDiscovery.ts |   82.01 |    73.21 |     100 |   82.01 | ...74-377,398-399 
  ...tProcessor.ts |   93.63 |    90.12 |     100 |   93.63 | ...96-302,384-385 
  ...Inspectors.ts |   61.53 |      100 |      50 |   61.53 | 18-23             
  ...kerChecker.ts |   84.04 |    78.94 |     100 |   84.04 | 68-69,79-84,92-98 
  openaiLogger.ts  |   86.27 |    82.14 |     100 |   86.27 | ...05-107,130-135 
  partUtils.ts     |     100 |      100 |     100 |     100 |                   
  pathReader.ts    |     100 |      100 |     100 |     100 |                   
  paths.ts         |   95.69 |    94.52 |     100 |   95.69 | ...,71-72,104-105 
  ...ectSummary.ts |    3.75 |      100 |       0 |    3.75 | 27-119            
  ...tIdContext.ts |     100 |      100 |     100 |     100 |                   
  ...noreParser.ts |    87.5 |    83.87 |     100 |    87.5 | ...72,78-79,85-86 
  ...rDetection.ts |   58.57 |       76 |     100 |   58.57 | ...4,88-89,95-100 
  rateLimit.ts     |      90 |    84.37 |     100 |      90 | 68,79-81          
  readManyFiles.ts |   85.95 |    85.71 |     100 |   85.95 | ...80-182,198-209 
  retry.ts         |   67.91 |    73.68 |     100 |   67.91 | ...82,200,207-208 
  ripgrepUtils.ts  |   46.53 |    83.33 |   66.66 |   46.53 | ...32-233,245-322 
  ...tchOptions.ts |   55.88 |       50 |      75 |   55.88 | ...29-130,151-152 
  safeJsonParse.ts |   74.07 |    83.33 |     100 |   74.07 | 40-46             
  ...nStringify.ts |     100 |      100 |     100 |     100 |                   
  ...aConverter.ts |   90.78 |    87.87 |     100 |   90.78 | ...41-42,93,95-96 
  ...aValidator.ts |     100 |    82.85 |     100 |     100 | 15-39,93-94,125   
  ...r-launcher.ts |   76.52 |     87.5 |   66.66 |   76.52 | ...33,135,153-191 
  shell-utils.ts   |   84.23 |    90.84 |     100 |   84.23 | ...1035,1042-1046 
  ...lAstParser.ts |   92.34 |    86.54 |    92.3 |   92.34 | ...1139-1141,1151 
  ...nlyChecker.ts |   95.75 |    92.39 |     100 |   95.75 | ...00-301,313-314 
  streamStall.ts   |   97.43 |    92.85 |     100 |   97.43 | 75                
  ...tGenerator.ts |     100 |     90.9 |     100 |     100 | 129               
  symlink.ts       |   77.77 |       50 |     100 |   77.77 | 44,54-59          
  ...emEncoding.ts |   96.36 |    91.17 |     100 |   96.36 | 59-60,124-125     
  ...Serializer.ts |   98.72 |       90 |     100 |   98.72 | 42-43,134,201-203 
  testUtils.ts     |   53.33 |      100 |   33.33 |   53.33 | ...53,59-64,70-72 
  textUtils.ts     |      60 |      100 |   66.66 |      60 | 36-55             
  thoughtUtils.ts  |     100 |    93.33 |     100 |     100 | 72                
  ...-converter.ts |   94.59 |    85.71 |     100 |   94.59 | 35-36             
  tool-utils.ts    |    93.6 |     91.3 |     100 |    93.6 | ...58-159,162-163 
  truncation.ts    |     100 |     90.9 |     100 |     100 | 52,71             
  ...aceContext.ts |   96.22 |       92 |   93.33 |   96.22 | ...15-116,133,160 
  yaml-parser.ts   |      92 |    83.67 |     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 | ...30-231,233-234 
  ignore.ts        |     100 |      100 |     100 |     100 |                   
  result-cache.ts  |     100 |     92.3 |     100 |     100 | 46                
 ...uest-tokenizer |   56.63 |    74.52 |   74.19 |   56.63 |                   
  ...eTokenizer.ts |   41.86 |    76.47 |   69.23 |   41.86 | ...70-443,453-507 
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...tTokenizer.ts |   68.39 |    69.49 |    90.9 |   68.39 | ...24-325,327-328 
  ...ageFormats.ts |      76 |      100 |   33.33 |      76 | 45-48,55-56       
  textTokenizer.ts |     100 |      100 |     100 |     100 |                   
  types.ts         |       0 |        0 |       0 |       0 | 1                 
-------------------|---------|----------|---------|---------|-------------------

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant