Skip to content

Adopt upstream OCR action features into ocr-review workflow (Fixes #2670)#2695

Merged
acoliver merged 4 commits into
mainfrom
issue2670
Jul 25, 2026
Merged

Adopt upstream OCR action features into ocr-review workflow (Fixes #2670)#2695
acoliver merged 4 commits into
mainfrom
issue2670

Conversation

@acoliver

@acoliver acoliver commented Jul 25, 2026

Copy link
Copy Markdown
Collaborator

Summary

Adopts 5 upstream OpenCodeReview (OCR) action features into the custom .github/workflows/ocr-review.yml workflow, as requested in issue #2670. All features are gated behind opt-in repository variables so existing behavior is unchanged unless explicitly enabled.

Features Implemented

1. Business Context (--background)

  • Resolves PR title and truncated body (2000 chars) in the pr-context step
  • Conditionally passes --background to ocr review when OCR_BACKGROUND=true
  • Guards against empty title/body to avoid meaningless context

2. LLM Thinking Disabled by Default (llm_extra_body)

  • New Configure OCR LLM settings step runs ocr config set llm.extra_body
  • Default: {"thinking": {"type": "disabled"}}
  • Overridable via OCR_LLM_EXTRA_BODY repository variable
  • Follows existing exit-code guard + mark_infrastructure_failure pattern

3. Incremental IoU Overlap Dedup

  • Ports lineSpan, sameCommentSpan, overlapsHistory from upstream
  • Gated behind OCR_INCREMENTAL=true (off by default)
  • Configurable threshold via OCR_INCREMENTAL_OVERLAP_THRESHOLD (default 0.6)
  • Cross-revision dedup: removes commit_id === headSha filter so prior pushes are considered
  • Fail-closed bot identity validation: resolves authenticated bot login via getAuthenticated() and requires exact login match. Prevents fork marker-forgery attacks
  • Threshold validation: resolveThreshold() falls back to 0.6 for NaN, negative, zero, or >1 values
  • Complements existing content-based dedup (deduplicationKey/deduplicateFindings)

4. Configurable LLM Timeout

  • Replaces hardcoded --timeout 30 with OCR_REVIEW_TIMEOUT (default 30)
  • Validates as positive integer, rejects zero and non-numeric values

5. Structured Comment-Count Outputs

  • New job outputs: comments_total, comments_inline, comments_skipped, comments_failed, summary_comment_url
  • Propagated from post step via id: post-ocr-results
  • comments_skipped counts only inline comments skipped by incremental overlap and exact-key history dedup

6. Language Configuration

  • ocr config set language defaults to English
  • Overridable via OCR_REVIEW_LANGUAGE repository variable

Security

  • Fork-safety preserved: only trusted ocr config set commands run, no PR-supplied config
  • Bot identity validation prevents fork participants from suppressing OCR findings via marker injection
  • PR title/body flow through action outputs into env vars and quoted bash arrays (no shell injection)
  • resolveThreshold() guards against invalid threshold configurations

Testing

  • 48 behavioral tests in scripts/tests/ocr-review-workflow-features.test.js using vm execution to verify actual IoU math, threshold resolution, and bot identity filtering
  • All 133 existing OCR workflow tests continue to pass
  • Full verification suite: test, lint, typecheck, format, build, bun smoke test all pass
  • Deepthinker review and OCR review completed with all findings addressed

Closes #2670

Summary by CodeRabbit

  • New Features

    • Added configurable OCR review language, timeout, and LLM settings.
    • Added optional business-context support using pull request title and description.
    • Added incremental inline-comment deduplication based on overlapping code spans.
    • Added structured review metrics, including posted, skipped, and failed comment counts.
    • Added a direct link to the generated summary comment.
  • Bug Fixes

    • Improved duplicate comment handling using authenticated bot identity.
    • Improved sticky summary comment reconciliation when comment data is stale.

)

Add 5 upstream OpenCodeReview action features to the custom
ocr-review.yml workflow:

1. --background flag: pass PR title/body as business context to the LLM,
   gated behind the OCR_BACKGROUND repository variable with empty-value
   guard.

2. llm_extra_body: disable LLM thinking by default via ocr config set
   llm.extra_body (default: {"thinking":{"type":"disabled"}}),
   overridable via OCR_LLM_EXTRA_BODY.

3. Incremental IoU overlap dedup: port lineSpan/sameCommentSpan/
   overlapsHistory from upstream, gated behind OCR_INCREMENTAL with
   configurable threshold (OCR_INCREMENTAL_OVERLAP_THRESHOLD, default
   0.6). Complements existing content-based dedup. Cross-revision dedup
   with fail-closed bot identity validation prevents fork marker
   forgery.

4. Configurable LLM timeout: replace hardcoded --timeout 30 with
   OCR_REVIEW_TIMEOUT (default 30), validated as a positive integer.

5. Structured outputs: comments_total, comments_inline,
   comments_skipped, comments_failed, summary_comment_url on the
   code-review job, propagated from the post step via step id.

6. Language configuration: ocr config set language (default English),
   overridable via OCR_REVIEW_LANGUAGE.

Also adds resolveThreshold() to guard against invalid IoU threshold
values, fetchMarkerComments() to fix a stale-comment race in summary
posting, and bot identity authentication via getAuthenticated() for
fork-safe incremental dedup.

Tests use vm execution to verify IoU math, threshold resolution, and
bot identity filtering rather than string-presence checks.
@coderabbitai

coderabbitai Bot commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Review limit reached

You’ve reached a temporary PR review limit under our Fair Usage Limits Policy.

Your recent review volume is higher than typical usage, so adaptive limits are currently applied.

Next review available in: 7 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 59a30a12-4b65-488f-932b-4cab91e24239

📥 Commits

Reviewing files that changed from the base of the PR and between c02396f and aeebc9c.

📒 Files selected for processing (2)
  • .github/workflows/ocr-review.yml
  • scripts/tests/ocr-review-workflow-features.test.js
📝 Walkthrough

Walkthrough

The OCR workflow adds configurable business context, LLM settings, language, and timeout handling; incremental IoU-based inline-comment deduplication; refreshed sticky-marker reconciliation; structured comment metrics; and Vitest coverage for these behaviors.

Changes

OCR review workflow enhancements

Layer / File(s) Summary
Review context and LLM configuration
.github/workflows/ocr-review.yml, scripts/tests/ocr-review-workflow-features.test.js
PR title/body context, configurable language and llm.extra_body, optional --background, and validated review timeouts are wired into OCR execution and tested.
Incremental inline-comment deduplication
.github/workflows/ocr-review.yml, scripts/tests/ocr-review-workflow-features.test.js
Incremental mode resolves the bot identity, compares line-span IoU against existing comments, preserves exact-history deduplication, and tracks failures and skips.
Marker reconciliation and structured outputs
.github/workflows/ocr-review.yml, scripts/tests/ocr-review-workflow-features.test.js
Sticky comment updates refresh stale data and expose total, inline, skipped, failed, and summary URL outputs through the code-review job.

Estimated code review effort: 4 (Complex) | ~60 minutes

Possibly related issues

Possibly related PRs

Suggested labels: ci/cd

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title is concise and accurately summarizes the main workflow change and linked issue.
Description check ✅ Passed The description is detailed and covers the summary, implementation, testing, and linked issue, though it doesn't match the template headings exactly.
Linked Issues check ✅ Passed The PR implements the required OCR features in #2670; the only omitted item is the optional helper-module extraction.
Out of Scope Changes check ✅ Passed The changes stay within the workflow and its tests, with no clear unrelated code introduced.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch issue2670

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

@github-actions github-actions Bot added the maintainer:e2e:ok Trusted contributor; maintainer-approved E2E run label Jul 25, 2026
@github-actions

github-actions Bot commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

LLxprt PR Review – PR #2695

Issue Alignment

Implements the 5 upstream OCR features requested in issue #2670, all gated behind opt-in repository variables so existing behavior is preserved. Evidence: .github/workflows/ocr-review.yml adds --background business context, llm.extra_body thinking disable, configurable timeout, incremental IoU overlap dedup, and structured comment-count outputs.

Side Effects

  • New repository variables: OCR_BACKGROUND, OCR_LLM_EXTRA_BODY, OCR_REVIEW_LANGUAGE, OCR_REVIEW_TIMEOUT, OCR_INCREMENTAL, OCR_INCREMENTAL_OVERLAP_THRESHOLD, OCR_BOT_LOGIN.
  • Bot identity resolution via getAuthenticated() changes dedup scope from commit_id === headSha to cross-revision bot-user filtering. If authentication fails and OCR_BOT_LOGIN is unset, botLogin is '' and dedup is disabled (fail-closed for security, but may allow duplicate inline comments until the API succeeds).
  • Post-step now makes additional GitHub API calls for marker reconciliation and history span fetching; rate-limit risk is low but non-zero.

Code Quality

Strong defensive patterns: exit-code guards, mark_infrastructure_failure, secret redaction, and fork-safe ocr config set steps. IoU math and threshold validation are correct and well-bounded. One minor concern: reconcileMarkerComment(null) re-fetches all issue comments in the success path, adding latency; acceptable for concurrency safety.

Tests and Coverage

New file scripts/tests/ocr-review-workflow-features.test.js adds behavioral tests for lineSpan, sameCommentSpan, resolveThreshold, and workflow structure assertions. Tests execute extracted script functions in a VM sandbox and verify exact workflow wiring—no mock theater. Coverage impact: increase. Assumption: CI runs npm run test:scripts and will pick up the new test via the existing Vitest include pattern.

Verdict

Ready. The implementation matches issue requirements, adds meaningful automated tests, and maintains the workflow’s existing hardening patterns. The fail-closed bot-login behavior and cross-revision dedup are intentional security improvements. No blocking issues found.

Comment on lines +26 to +32
function loadFunctionFromScript(script, funcName, sandboxGlobals = {}) {
const source = extractFunctionSource(script, funcName);
const sandbox = { Number, Math, ...sandboxGlobals };
vm.createContext(sandbox);
// Run as a function declaration so it binds to the sandbox's global scope.
vm.runInContext(source, sandbox);
const fn = sandbox[funcName];

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Performance: loadFunctionFromScript creates a new VM context and re-parses the entire workflow script on every call. This function is invoked 17+ times across the test suite (e.g., lineSpan 3×, sameCommentSpan 7×, resolveThreshold 7×), causing redundant regex scanning and VM initialization. Consider caching extracted functions in a module-level Map so each function is parsed and loaded only once, while still preserving test isolation through fresh sandboxes if needed.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

This is a valid optimization. However, these are YAML-parsing tests that run in milliseconds (the entire 49-test suite completes in ~13ms). The redundant parsing has no measurable impact on CI or developer feedback loop. Dismissing as out-of-scope for this PR — the test suite is already fast enough. Can be optimized in a future PR if the test count grows significantly.

Comment on lines +1023 to +1029
let botLogin = '';
try {
const { data: botUser } = await github.rest.users.getAuthenticated();
botLogin = botUser.login || '';
} catch (e) {
core.warning(`Could not resolve authenticated bot login: ${e.message || e}`);
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Reliability: getAuthenticated() failure degrades dedup silently

If the github.rest.users.getAuthenticated() API call fails, botLogin is set to an empty string. Because all bot comment filters require botLogin !== '', this causes existingInlineCommentKeys() and existingReviewCommentSpans() to return empty arrays, completely disabling both exact dedup and IoU overlap dedup.

Impact: The workflow will post duplicate inline comments on every run, potentially hitting GitHub API rate limits and spamming PRs with redundant findings.

Recommendation: Either (a) treat getAuthenticated() failure as an infrastructure failure and abort the posting step, or (b) add a fallback mechanism (e.g., list all bots and heuristically identify the OCR bot) so dedup remains functional when the API call fails.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Fixed in c02396f. Added an OCR_BOT_LOGIN repository variable as a fallback when getAuthenticated() fails. When the API call fails, the workflow now falls back to the configured bot login so dedup remains functional. If no fallback is configured, the fail-closed behavior (empty filter sets) is intentional and prevents trusting arbitrary bot comments.

Comment on lines +460 to +461
const rawBody = typeof pr.body === 'string' ? pr.body : '';
core.setOutput('pr_body', rawBody.slice(0, 2000));

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Correctness: PR body truncation may omit critical LLM context

rawBody.slice(0, 2000) truncates the PR description to 2000 characters before passing it as --background context to the LLM. While this prevents command-line length issues, it arbitrarily cuts off potentially important context such as linked issue descriptions, reproduction steps, or design rationale for longer PRs.

Recommendation: Consider (a) increasing the truncation limit if the OCR CLI supports longer arguments, (b) passing the background text via a temporary file or stdin if the CLI supports it, or (c) documenting the 2000-char limit and its implications for users who enable OCR_BACKGROUND.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

The 2000-char limit is intentional for command-line argument safety. Increasing it would risk ARG_MAX limits on some systems. Passing via stdin/temp file would require OCR CLI changes (out of scope). The limit is now documented in the surrounding comment: it is truncated to keep the command-line length bounded. Feature is opt-in via OCR_BACKGROUND variable.

Comment on lines 975 to 978
- name: Post OCR results
id: post-ocr-results
if: always()
uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # ratchet:actions/github-script@v7

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Reliability: Missing timeout-minutes on post-ocr-results step

The post-ocr-results step runs actions/github-script with extensive pagination logic (github.paginate) and multiple sequential API calls. It does not specify timeout-minutes, while nearly every other step in this workflow and related jobs explicitly sets timeouts (e.g., timeout-minutes: 5, timeout-minutes: 60).

Impact: If the GitHub API becomes slow or unresponsive, or if pagination encounters issues, this step could run indefinitely, consuming runner resources.

Recommendation: Add timeout-minutes: 10 (or an appropriate value consistent with the rest of the workflow) to the post-ocr-results step.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

The entire code-review job already has timeout-minutes: 60 which covers this step. actions/github-script steps do not support a step-level timeout-minutes property — only run steps do. The job-level timeout is sufficient.

@github-actions

github-actions Bot commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

OpenCodeReview — automatic reviews suspended

Automatic OCR reviews are suspended for this PR after 2 of 2 automatic reviews.

To get more reviews you can:

  • Check the box below to re-enable automatic reviews (resets the counter), or

  • Comment /review, /ocr, or /open-code-review to request a single review on demand.

  • Re-enable automatic reviews

The INLINE_MARKER constant was declared but never referenced in the
test file, causing eslint no-unused-vars to fail in CI.
Comment on lines +934 to +943
# Feature 1 (issue #2670): conditionally append business context
# for the LLM. Gated behind OCR_BACKGROUND so existing behavior is
# unchanged unless the repository variable opts in.
REVIEW_ARGS=()
if [ "${OCR_BACKGROUND:-}" = 'true' ]; then
BACKGROUND_TEXT=$(printf 'PR %s: %s\n\n%s' "${PR_NUMBER}" "${PR_TITLE}" "${PR_BODY}")
if [ -n "${PR_TITLE}" ] || [ -n "${PR_BODY}" ]; then
REVIEW_ARGS+=(--background "$BACKGROUND_TEXT")
fi
fi

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The PR title and body from an untrusted fork are passed directly to the LLM via --background without sanitization. In a pull_request_target workflow, this enables prompt injection: a malicious PR author could craft a PR body that causes the LLM to ignore security findings, generate misleading output, or exfiltrate sensitive data.

Impact: High — bypasses the security review entirely if the LLM is coerced.

Suggestion: Either (a) restrict the business-context feature to repository members/collaborators only, or (b) sanitize/escape the PR title/body before injecting it into the LLM prompt. For example, wrap the injected text in a clearly delimited, non-interpretable block:

BACKGROUND_TEXT=$(printf '---BEGIN BUSINESS CONTEXT---\nPR %s: %s\n\n%s\n---END BUSINESS CONTEXT---' "${PR_NUMBER}" "${PR_TITLE}" "${PR_BODY}")

Or, better yet, truncate to safe length and strip markdown/HTML/control characters before passing through.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Fixed in c02396f. The business context is now wrapped in BEGIN/END BUSINESS CONTEXT delimiters to clearly separate untrusted PR text from the LLM prompt. Additionally, the feature is opt-in (OCR_BACKGROUND=true) so it does not affect the default workflow. The OCR review itself already processes the untrusted PR diff as model input, so the PR title/body adds minimal additional attack surface.

Comment on lines +1023 to +1029
let botLogin = '';
try {
const { data: botUser } = await github.rest.users.getAuthenticated();
botLogin = botUser.login || '';
} catch (e) {
core.warning(`Could not resolve authenticated bot login: ${e.message || e}`);
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

If getAuthenticated() fails, botLogin remains empty and the dedup filters in existingInlineCommentKeys() and existingReviewCommentSpans() exclude all existing comments. This causes duplicate inline comments to be posted on every workflow run.

Impact: Medium — PR reviews will be spammed with duplicate findings.

Suggestion: Provide a configurable fallback bot username via a repository variable (e.g. OCR_BOT_LOGIN) when the API call fails:

let botLogin = '';
try {
  const { data: botUser } = await github.rest.users.getAuthenticated();
  botLogin = botUser.login || '';
} catch (e) {
  core.warning(`Could not resolve authenticated bot login: ${e.message || e}`);
  botLogin = process.env.OCR_BOT_LOGIN || '';
  if (botLogin) core.info(`Using fallback bot login: ${botLogin}`);
}

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Fixed in c02396f — see reply to the identical comment above. Added OCR_BOT_LOGIN env var fallback so dedup remains functional when getAuthenticated() fails.

Comment on lines +1228 to +1249
function lineSpan(c) {
const start = Number(c.start_line || c.line || 0);
const end = Number(c.line || c.start_line || 0);
const lo = Math.min(start, end);
const hi = Math.max(start, end);
return { start: lo, end: hi, multiline: lo !== hi };
}

function sameCommentSpan(cur, other, threshold) {
// Single-line vs single-line: match on the same line.
// Multi-line vs multi-line: IoU > threshold.
// Single vs multi: never match.
if (cur.multiline !== other.multiline) {
return false;
}
if (!cur.multiline) {
return cur.start === other.start;
}
const overlap = Math.max(0, Math.min(cur.end, other.end) - Math.max(cur.start, other.start) + 1);
const union = Math.max(cur.end, other.end) - Math.min(cur.start, other.start) + 1;
return overlap / union > threshold;
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

lineSpan() defaults missing line numbers to {start: 0, end: 0}. This means all lineless inline comments on the same file will be considered overlapping with each other, causing legitimate distinct findings without line numbers to be silently suppressed.

Impact: Medium — findings may be dropped without notice.

Suggestion: Skip overlap dedup for comments that lack resolvable line numbers, or use a distinct sentinel value to avoid false overlap:

function lineSpan(c) {
  const start = Number(c.start_line || c.line || 0);
  const end = Number(c.line || c.start_line || 0);
  if (start <= 0 || end <= 0) {
    return { start: -1, end: -1, multiline: false, lineless: true };
  }
  const lo = Math.min(start, end);
  const hi = Math.max(start, end);
  return { start: lo, end: hi, multiline: lo !== hi, lineless: false };
}

function sameCommentSpan(cur, other, threshold) {
  if (cur.lineless || other.lineless) return false;
  // ... existing logic
}

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Fixed in c02396f. lineSpan() now returns a lineless flag when start/end line numbers are missing (<=0), and sameCommentSpan() skips lineless comments entirely so they are never falsely matched. Added a behavioral test for the lineless case.

@github-actions

github-actions Bot commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Summary

Package Lines Statements Functions Branches
CLI 59.17% 59.17% 60.54% 82.47%
Core 79.08% 79.08% 76.61% 84.15%
CLI Package - Full Text Report
-------------------|---------|----------|---------|---------|-------------------
File               | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
-------------------|---------|----------|---------|---------|-------------------
All files          |   59.17 |    82.47 |   60.54 |   59.17 |                   
 src               |   83.95 |     80.2 |   94.11 |   83.95 |                   
  cli.tsx          |   85.87 |    77.77 |     100 |   85.87 | ...92-293,340-342 
  ...tBootstrap.ts |   96.77 |    85.71 |     100 |   96.77 | 67                
  cliBootstrap.tsx |   82.31 |     75.6 |     100 |   82.31 | ...46-151,176-181 
  ...oviderInit.ts |   81.63 |    72.13 |     100 |   81.63 | ...52-254,270-273 
  cliSandbox.ts    |    94.3 |    89.47 |     100 |    94.3 | ...56-157,163-165 
  ...nBootstrap.ts |   71.42 |    63.63 |   83.33 |   71.42 | ...54-264,269-270 
  ...nalSession.ts |   52.86 |       60 |   83.33 |   52.86 | ...10,213-217,221 
  ...st-helpers.ts |       0 |        0 |       0 |       0 | 1-50              
  ...ractiveCli.ts |   90.26 |    84.95 |   90.47 |   90.26 | ...28-530,560-561 
  ...liCommands.ts |   97.29 |       70 |     100 |   97.29 | 40-41             
  ...CliSupport.ts |   91.87 |    82.05 |     100 |   91.87 | ...74,392-393,469 
  ...viderGuard.ts |    98.3 |    94.73 |     100 |    98.3 | 106               
  ...activeAuth.ts |     100 |      100 |     100 |     100 |                   
 src/auth          |      75 |    66.66 |     100 |      75 |                   
  ...gs-adapter.ts |      75 |    66.66 |     100 |      75 | 71-73,76,82-91    
 src/commands      |   78.35 |      100 |   44.44 |   78.35 |                   
  extensions.tsx   |   55.88 |      100 |       0 |   55.88 | 25-38,42          
  hooks.ts         |   61.53 |      100 |       0 |   61.53 | 14-17,20          
  mcp.ts           |   94.11 |      100 |      50 |   94.11 | 26                
  skills.tsx       |     100 |      100 |     100 |     100 |                   
  utils.ts         |     100 |      100 |     100 |     100 |                   
 ...nds/extensions |   74.22 |    93.08 |   67.69 |   74.22 |                   
  config.ts        |   93.93 |    91.83 |     100 |   93.93 | ...72-173,204-209 
  disable.ts       |     100 |      100 |     100 |     100 |                   
  enable.ts        |     100 |      100 |     100 |     100 |                   
  install.ts       |   80.48 |    76.92 |    87.5 |   80.48 | ...63,199,202-209 
  link.ts          |   64.81 |    83.33 |      25 |   64.81 | 31,54-65,67-72    
  list.ts          |      90 |      100 |   33.33 |      90 | 35-37             
  new.ts           |     100 |      100 |     100 |     100 |                   
  settings.ts      |   72.13 |      100 |      70 |   72.13 | 32-80,218-222,225 
  uninstall.ts     |   78.43 |      100 |   66.66 |   78.43 | 54-59,62-66       
  update.ts        |   10.06 |      100 |       0 |   10.06 | ...73-192,194-199 
  utils.ts         |   13.33 |      100 |       0 |   13.33 | 29-60             
  validate.ts      |   90.47 |       90 |      80 |   90.47 | 70-73,80,135-139  
 .../hooks/scripts |       0 |        0 |       0 |       0 |                   
  on-start.js      |       0 |        0 |       0 |       0 | 1-8               
 ...les/mcp-server |       0 |        0 |       0 |       0 |                   
  example.js       |       0 |        0 |       0 |       0 | 1-60              
 ...commands/hooks |    7.18 |      100 |       0 |    7.18 |                   
  migrate.ts       |    7.18 |      100 |       0 |    7.18 | ...00-210,212-214 
 src/commands/mcp  |   96.95 |    86.15 |   94.44 |   96.95 |                   
  add.ts           |   99.56 |    93.33 |     100 |   99.56 | 142               
  list.ts          |   90.51 |    82.14 |      80 |   90.51 | ...13-115,148-150 
  remove.ts        |     100 |    71.42 |     100 |     100 | 21-25             
 ...ommands/skills |    60.4 |    96.66 |   31.25 |    60.4 |                   
  disable.ts       |      54 |      100 |   33.33 |      54 | 40-52,54-63       
  enable.ts        |   72.22 |      100 |   33.33 |   72.22 | 33-37,39-43       
  install.ts       |   42.69 |      100 |      25 |   42.69 | ...72-101,103-110 
  list.ts          |   84.84 |    92.85 |   33.33 |   84.84 | 69-70,83-87,89-91 
  uninstall.ts     |   57.89 |      100 |   33.33 |   57.89 | 47-64,66-71       
 src/config        |   86.71 |    84.17 |    91.6 |   86.71 |                   
  ...deResolver.ts |   94.64 |    95.45 |     100 |   94.64 | 47-49             
  auth.ts          |   84.21 |    82.35 |     100 |   84.21 | 17-18,21-22,52-53 
  cliArgParser.ts  |   93.36 |    91.11 |     100 |   93.36 | ...22-223,286-289 
  config.ts        |   97.48 |     91.3 |     100 |   97.48 | 216-217,231-235   
  configBuilder.ts |   92.77 |    95.45 |   81.81 |   92.77 | ...64-265,353-361 
  ...mentLoader.ts |    83.6 |    53.84 |     100 |    83.6 | ...33-135,143-146 
  extension.ts     |   75.45 |    89.93 |   81.81 |   75.45 | ...87-988,991-992 
  ...iveContext.ts |   93.79 |    91.66 |     100 |   93.79 | 78,80,86-91,231   
  ...iateConfig.ts |   97.47 |      100 |     100 |   97.47 | 155-157           
  keyBindings.ts   |     100 |      100 |     100 |     100 |                   
  ...CopyEngine.ts |   70.74 |    55.81 |     100 |   70.74 | ...24,329,338-341 
  ...malization.ts |    77.1 |     61.9 |     100 |    77.1 | ...22-323,332-333 
  ...lFsHelpers.ts |   79.68 |       80 |      90 |   79.68 | ...45,154,163-173 
  ...rverConfig.ts |   83.33 |    94.44 |     100 |   83.33 | 23-39             
  ...nciliation.ts |   84.26 |    78.14 |     100 |   84.26 | ...1072,1110-1114 
  ...ationTypes.ts |       0 |        0 |       0 |       0 | 1                 
  pathMigration.ts |   88.42 |    89.31 |     100 |   88.42 | ...52-759,788-793 
  paths.ts         |     100 |      100 |     100 |     100 |                   
  policy.ts        |   80.76 |      100 |      50 |   80.76 | 45-49             
  ...figRuntime.ts |   90.09 |    89.13 |     100 |   90.09 | ...82-589,600-603 
  ...Ephemerals.ts |   70.27 |    66.66 |      75 |   70.27 | 31-32,44-52       
  ...eBootstrap.ts |   92.25 |    89.14 |     100 |   92.25 | ...01-803,812-813 
  profileRepair.ts |   81.66 |       75 |     100 |   81.66 | 42-49,95-97       
  ...Resolution.ts |   78.66 |    76.74 |     100 |   78.66 | ...87-290,303-311 
  ...pplication.ts |   92.48 |       80 |     100 |   92.48 | ...,95-96,113,183 
  ...elResolver.ts |      96 |    96.87 |     100 |      96 | 58-59,96          
  reconcileLock.ts |   89.07 |    70.37 |     100 |   89.07 | ...49-150,153-154 
  sandboxConfig.ts |   69.81 |    51.48 |   88.46 |   69.81 | ...80-581,593-594 
  ...oxProfiles.ts |    8.53 |      100 |       0 |    8.53 | 47-48,51-129      
  settingPaths.ts  |     100 |      100 |     100 |     100 |                   
  ...validation.ts |   86.99 |    80.62 |     100 |   86.99 | ...02,404,406,408 
  settings.ts      |   83.55 |    86.73 |   69.23 |   83.55 | ...74-475,522-523 
  ...ingsLegacy.ts |    70.9 |    81.81 |     100 |    70.9 | 48-52,56-67       
  ...ingsLoader.ts |   94.11 |    81.39 |     100 |   94.11 | ...78,108-109,137 
  settingsMerge.ts |   99.51 |    95.65 |     100 |   99.51 | 128-129           
  ...Migrations.ts |   95.67 |    91.66 |     100 |   95.67 | 22-24,48-49,55-56 
  ...ingsSchema.ts |     100 |      100 |     100 |     100 |                   
  ...Governance.ts |   95.12 |    91.17 |     100 |   95.12 | 46-47,128-131     
  ...tedFolders.ts |   95.58 |       96 |     100 |   95.58 | 93,120-126        
  welcomeConfig.ts |   22.41 |      100 |       0 |   22.41 | ...71,74-79,82-83 
  yargsOptions.ts  |   98.74 |    96.77 |    87.5 |   98.74 | 144,153-156       
 ...fig/extensions |   78.21 |    84.27 |   88.97 |   78.21 |                   
  consent.ts       |   88.03 |    85.71 |     100 |   88.03 | ...77-378,381-382 
  ...ionConsent.ts |   87.38 |    76.66 |     100 |   87.38 | ...,64-67,113-116 
  ...Enablement.ts |   94.05 |       96 |     100 |   94.05 | ...14-220,283-285 
  ...sionLoader.ts |   89.76 |    85.18 |     100 |   89.76 | ...25-526,546-547 
  ...onSettings.ts |     100 |      100 |     100 |     100 |                   
  github.ts        |   61.73 |    81.73 |      68 |   61.73 | ...49-650,660-663 
  hookSchema.ts    |      97 |    91.66 |     100 |      97 | 147-148,210       
  ...reResolver.ts |   80.53 |    80.59 |    90.9 |   80.53 | ...44,347-348,356 
  ...ntegration.ts |   55.31 |    84.78 |      50 |   55.31 | ...61,402,426-427 
  ...ingsPrompt.ts |      73 |    94.73 |      80 |      73 | 92-121            
  ...ngsStorage.ts |   85.57 |    77.19 |     100 |   85.57 | ...05-306,324-327 
  update.ts        |   69.52 |    52.94 |   85.71 |   69.52 | ...73-201,218-226 
  ...ableSchema.ts |     100 |      100 |     100 |     100 |                   
  variables.ts     |   95.55 |       90 |     100 |   95.55 | 33-34             
 ...ettings-schema |   99.79 |       60 |     100 |   99.79 |                   
  schema-core.ts   |     100 |      100 |     100 |     100 |                   
  ...extensions.ts |     100 |      100 |     100 |     100 |                   
  ...a-security.ts |   99.44 |       50 |     100 |   99.44 | 16-17             
  schema-tail.ts   |   99.52 |       50 |     100 |   99.52 | 13-14             
  schema-ui.ts     |     100 |      100 |     100 |     100 |                   
  schema.ts        |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/constants     |     100 |      100 |     100 |     100 |                   
  historyLimits.ts |     100 |      100 |     100 |     100 |                   
 src/extensions    |   65.02 |    61.81 |      75 |   65.02 |                   
  ...utoUpdater.ts |   65.02 |    61.81 |      75 |   65.02 | ...69-470,479,481 
 ...egration-tests |   71.66 |    83.33 |   85.71 |   71.66 |                   
  ...st-helpers.ts |       0 |        0 |       0 |       0 | 1-79              
  test-utils.ts    |   91.97 |     86.2 |    92.3 |   91.97 | ...45,263-264,274 
 src/launcher      |   94.63 |    86.12 |   90.19 |   94.63 |                   
  ...ate-policy.ts |     100 |      100 |     100 |     100 |                   
  ...y-resolver.ts |   91.39 |    92.85 |   85.71 |   91.39 | 121-128           
  bun-launcher.ts  |   96.31 |    85.96 |   88.88 |   96.31 | 35-43             
  ...h-resolver.ts |   93.79 |    81.81 |    90.9 |   93.79 | ...14-316,339-340 
 ...viders/logging |   89.31 |     92.5 |   69.23 |   89.31 |                   
  ...rvice-impl.ts |   44.44 |      100 |       0 |   44.44 | 21-22,25-30,36-37 
  git-stats.ts     |   96.46 |     92.5 |     100 |   96.46 | 154-155,195-196   
 src/runtime       |   73.15 |    66.66 |   73.68 |   73.15 |                   
  ...chedClient.ts |     100 |      100 |     100 |     100 |                   
  ...lScheduler.ts |   71.95 |    64.28 |   72.22 |   71.95 | ...64-386,402-404 
 src/services      |   85.91 |    85.08 |   94.87 |   85.91 |                   
  ...mandLoader.ts |   80.74 |    73.33 |      80 |   80.74 | ...07-121,165-183 
  ...andService.ts |     100 |      100 |     100 |     100 |                   
  ...mandLoader.ts |   91.91 |    86.27 |     100 |   91.91 | ...11-216,303-310 
  ...omptLoader.ts |    67.7 |    68.96 |     100 |    67.7 | ...73,179-185,200 
  ...tArgParser.ts |     100 |    94.28 |     100 |     100 | 42,72             
  performResume.ts |   89.11 |    89.47 |     100 |   89.11 | ...59-262,268-269 
  types.ts         |       0 |        0 |       0 |       0 | 1                 
 ...mpt-processors |      98 |     93.1 |     100 |      98 |                   
  ...tProcessor.ts |     100 |      100 |     100 |     100 |                   
  ...lProcessor.ts |   97.88 |    92.72 |     100 |   97.88 | 88-89,273-274     
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...o-continuation |   86.84 |    84.09 |   94.73 |   86.84 |                   
  ...ionService.ts |   86.84 |    84.09 |   94.73 |   86.84 | ...16,583,609-610 
 src/session       |   82.09 |    83.01 |   86.66 |   82.09 |                   
  debugLog.ts      |      60 |       50 |     100 |      60 | 12-16             
  ...rReporting.ts |   79.68 |    86.36 |     100 |   79.68 | 39-41,44-52,59-60 
  ...ractiveUI.tsx |   84.57 |      100 |   71.42 |   84.57 | ...62-264,274-283 
  ...rReporting.ts |     100 |      100 |     100 |     100 |                   
  ...iveSession.ts |   78.91 |       55 |      75 |   78.91 | ...51-254,271-288 
  ...tListeners.ts |     100 |      100 |     100 |     100 |                   
  ...alHandlers.ts |   81.37 |    88.57 |      90 |   81.37 | ...,94-97,112-113 
  ...nalCleanup.ts |   85.71 |       50 |     100 |   85.71 | 21                
 src/test-utils    |   76.81 |    82.25 |   37.68 |   76.81 |                   
  assertions.ts    |   76.47 |       50 |     100 |   76.47 | ...40,49-50,59-60 
  async.ts         |       0 |        0 |       0 |       0 | 1-34              
  ...eExtension.ts |     100 |      100 |     100 |     100 |                   
  ...omMatchers.ts |   22.22 |      100 |       0 |   22.22 | 19-49             
  inkFrame.ts      |      65 |    66.66 |   66.66 |      65 | 31-32,40-44       
  mockAgent.ts     |     100 |      100 |      50 |     100 |                   
  ...andContext.ts |     100 |      100 |     100 |     100 |                   
  regex.ts         |     100 |      100 |     100 |     100 |                   
  render.tsx       |   93.96 |    96.66 |   24.48 |   93.96 | ...54-159,266-267 
  ...e-testing.tsx |       0 |        0 |       0 |       0 | 1-56              
  ...iderConfig.ts |       0 |        0 |       0 |       0 | 1-19              
 src/ui            |      49 |       93 |   28.84 |      49 |                   
  App.tsx          |   35.84 |      100 |       0 |   35.84 | 70-101,107-114    
  AppContainer.tsx |     100 |      100 |     100 |     100 |                   
  ...erRuntime.tsx |   17.15 |    33.33 |   16.66 |   17.15 | 73-414            
  ...tionNudge.tsx |       8 |      100 |       0 |       8 | 29-104            
  cliUiRuntime.ts  |   94.75 |    97.14 |   26.61 |   94.75 | ...50,706,723,726 
  colors.ts        |   37.14 |      100 |   20.33 |   37.14 | ...03-304,306-307 
  constants.ts     |     100 |      100 |     100 |     100 |                   
  debug.ts         |     100 |      100 |     100 |     100 |                   
  ...derOptions.ts |     100 |      100 |     100 |     100 |                   
  keyMatchers.ts   |   88.63 |       84 |     100 |   88.63 | 18,20-21,28-29    
  ...ntsEnabled.ts |     100 |      100 |     100 |     100 |                   
  ...submission.ts |     100 |      100 |     100 |     100 |                   
  ...lobalState.ts |     100 |      100 |     100 |     100 |                   
  ...tic-colors.ts |   78.94 |      100 |      60 |   78.94 | 15-16,24-25       
  textConstants.ts |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/ui/commands   |   72.32 |    78.57 |   78.94 |   72.32 |                   
  aboutCommand.ts  |   82.84 |       50 |   91.66 |   82.84 | ...92-193,195-196 
  authCommand.ts   |    58.9 |    79.54 |   81.25 |    58.9 | ...91-641,653-656 
  ...urlCommand.ts |      68 |       75 |     100 |      68 | 47-62             
  bugCommand.ts    |   71.42 |    30.76 |     100 |   71.42 | ...00-111,146-154 
  chatCommand.ts   |   70.06 |    80.28 |   66.66 |   70.06 | ...53-554,602-613 
  ...Validation.ts |     100 |     91.6 |     100 |     100 | ...08,218,234,361 
  clearCommand.ts  |   86.66 |    85.71 |     100 |   86.66 | 81-88             
  ...essCommand.ts |   93.47 |    86.04 |     100 |   93.47 | ...,67-71,111-112 
  ...nueCommand.ts |     100 |      100 |     100 |     100 |                   
  copyCommand.ts   |     100 |      100 |     100 |     100 |                   
  debugCommands.ts |   13.81 |      100 |       0 |   13.81 | ...52,459,466,473 
  ...st-helpers.ts |   89.81 |     91.3 |   54.54 |   89.81 | ...4,96-97,99-100 
  ...icsCommand.ts |   78.08 |    51.64 |   94.11 |   78.08 | ...11-514,529-534 
  ...ticsTokens.ts |   92.05 |    90.24 |     100 |   92.05 | ...,63-68,103-104 
  ...ryCommand.tsx |    89.5 |    84.84 |     100 |    89.5 | ...26-134,201-209 
  docsCommand.ts   |     100 |      100 |     100 |     100 |                   
  ...extCommand.ts |   96.22 |    89.65 |     100 |   96.22 | 220-225           
  editorCommand.ts |     100 |      100 |     100 |     100 |                   
  ...onsCommand.ts |   41.27 |    88.09 |    62.5 |   41.27 | ...23-380,390-538 
  ...ionSection.ts |   83.33 |    93.33 |     100 |   83.33 | 28-34             
  helpCommand.ts   |     100 |      100 |     100 |     100 |                   
  hooksCommand.ts  |   79.49 |    80.82 |   92.85 |   79.49 | ...02,511-512,626 
  ideCommand.ts    |   69.87 |    74.28 |   69.23 |   69.87 | ...36-237,240-255 
  initCommand.ts   |   81.01 |    71.42 |   66.66 |   81.01 | 38-42,44-91       
  keyCommand.ts    |   91.33 |    84.44 |     100 |   91.33 | ...86,465-470,592 
  ...ileCommand.ts |    10.9 |      100 |       0 |    10.9 | 22-46,53-141      
  ...ingCommand.ts |   10.27 |      100 |       0 |   10.27 | ...19-572,589-601 
  logoutCommand.ts |   56.52 |    66.66 |      75 |   56.52 | ...-84,97-103,108 
  lspCommand.ts    |    93.8 |    85.36 |     100 |    93.8 | 43,95-100         
  mcpAuth.ts       |   90.43 |       80 |   66.66 |   90.43 | 32-41,86-87       
  mcpCommand.ts    |   96.25 |    87.87 |     100 |   96.25 | 87-92             
  mcpDisplay.ts    |   84.12 |    81.73 |   93.75 |   84.12 | ...47-448,492-493 
  memoryCommand.ts |   87.45 |    75.47 |     100 |   87.45 | ...47,235-249,298 
  modelCommand.ts  |   98.92 |    93.02 |     100 |   98.92 | 120               
  mouseCommand.ts  |     100 |      100 |     100 |     100 |                   
  ...onsCommand.ts |    93.9 |    88.88 |     100 |    93.9 | 58-62             
  ...iesCommand.ts |   97.79 |    87.75 |     100 |   97.79 | 24,34-35          
  ...acyCommand.ts |   61.53 |      100 |       0 |   61.53 | 22-26             
  ...ileCommand.ts |   59.14 |    55.55 |   63.63 |   59.14 | ...90-531,552-568 
  profileLoad.ts   |   52.08 |       60 |    87.5 |   52.08 | ...45,172,183-187 
  ...adBalancer.ts |   81.36 |    84.61 |     100 |   81.36 | ...20-321,347-352 
  ...ileSchemas.ts |   67.11 |    81.81 |     100 |   67.11 | ...18-230,262-267 
  ...derCommand.ts |    57.8 |       42 |      80 |    57.8 | ...80-381,390-395 
  quitCommand.ts   |   29.26 |      100 |       0 |   29.26 | 18-50             
  ...oreCommand.ts |   90.27 |    83.33 |     100 |   90.27 | ...70-175,208-213 
  setCommand.ts    |   86.32 |    84.28 |     100 |   86.32 | ...91-200,217-222 
  ...mandSchema.ts |   71.57 |    81.81 |   84.61 |   71.57 | ...05,232-240,295 
  ...ngsCommand.ts |     100 |      100 |     100 |     100 |                   
  setupCommand.ts  |     100 |      100 |     100 |     100 |                   
  ...hubCommand.ts |   90.47 |    82.85 |     100 |   90.47 | ...13-216,223-227 
  skillsCommand.ts |   82.78 |       75 |     100 |   82.78 | ...91-292,305-306 
  statsCommand.ts  |   57.25 |    86.66 |   58.33 |   57.25 | ...04-216,234-235 
  statsQuota.ts    |   79.47 |       75 |   83.33 |   79.47 | ...15-316,349-353 
  ...entCommand.ts |   76.72 |    69.73 |   81.81 |   76.72 | ...09-615,626-632 
  tasksCommand.ts  |   75.83 |       75 |     100 |   75.83 | ...51-156,202-210 
  ...tupCommand.ts |     100 |      100 |     100 |     100 |                   
  themeCommand.ts  |     100 |      100 |     100 |     100 |                   
  todoCommand.ts   |    78.5 |    71.62 |     100 |    78.5 | ...48-460,468-472 
  ...Formatters.ts |   48.93 |    71.42 |   33.33 |   48.93 | ...5,70-86,92-113 
  ...Operations.ts |   77.06 |       75 |   85.71 |   77.06 | ...10-424,430-437 
  ...matCommand.ts |   26.66 |      100 |       0 |   26.66 | 33-92             
  ...keyCommand.ts |   98.88 |     92.3 |     100 |   98.88 | 34                
  ...ileCommand.ts |    99.1 |    94.11 |     100 |    99.1 | 36                
  toolsCommand.ts  |   86.71 |    73.23 |     100 |   86.71 | ...64,295,326-327 
  types.ts         |     100 |      100 |     100 |     100 |                   
  ...ileCommand.ts |   27.77 |        0 |       0 |   27.77 | 11-23             
  vimCommand.ts    |   44.44 |      100 |       0 |   44.44 | 15-25             
 ...ommands/schema |   96.06 |    92.54 |   94.11 |   96.06 |                   
  index.ts         |   95.84 |    91.58 |     100 |   95.84 | ...07-211,222-223 
  schemaHelpers.ts |   97.02 |    96.22 |     100 |   97.02 | 67-68,115-117     
  types.ts         |       0 |        0 |       0 |       0 | 1                 
 src/ui/components |    11.9 |    38.56 |    7.51 |    11.9 |                   
  AboutBox.tsx     |   13.25 |      100 |       0 |   13.25 | ...80-102,106-134 
  AnsiOutput.tsx   |    8.33 |      100 |       0 |    8.33 | 25-90             
  AppHeader.tsx    |   21.87 |      100 |       0 |   21.87 | 27-57             
  AsciiArt.ts      |     100 |      100 |     100 |     100 |                   
  AuthDialog.tsx   |    5.22 |      100 |       0 |    5.22 | ...27-232,235-314 
  ...nProgress.tsx |       0 |        0 |       0 |       0 | 1-63              
  ...Indicator.tsx |   15.15 |      100 |       0 |   15.15 | 17-47             
  ...firmation.tsx |   15.97 |      100 |       0 |   15.97 | 60-135,144-209    
  ...tsDisplay.tsx |    12.5 |      100 |       0 |    12.5 | ...6,60-65,69-142 
  CliSpinner.tsx   |       0 |        0 |       0 |       0 | 1-22              
  Composer.tsx     |     8.1 |      100 |       0 |     8.1 | 17-32,45-100      
  ...entPrompt.tsx |   18.75 |      100 |       0 |   18.75 | 21-51             
  ...ryDisplay.tsx |   21.05 |      100 |       0 |   21.05 | 17-35             
  ...ryDisplay.tsx |    4.65 |      100 |       0 |    4.65 | 30-108,111-175    
  ...geDisplay.tsx |       0 |        0 |       0 |       0 | 1-37              
  ...gProfiler.tsx |   16.86 |      100 |       0 |   16.86 | ...73-118,122-222 
  ...esDisplay.tsx |   10.52 |      100 |       0 |   10.52 | 24-82             
  ...ogManager.tsx |    5.82 |      100 |       0 |    5.82 | 72-802,806-830    
  ...ngsDialog.tsx |   13.02 |      100 |       0 |   13.02 | ...49-173,177-248 
  ...rBoundary.tsx |   10.07 |        0 |       0 |   10.07 | ...26-171,189-204 
  ...ustDialog.tsx |   16.34 |      100 |       0 |   16.34 | ...2,70-81,84-143 
  Footer.tsx       |    12.6 |        0 |       0 |    12.6 | ...49-653,657-726 
  Header.tsx       |    17.5 |      100 |       0 |    17.5 | 22-62             
  Help.tsx         |    6.84 |      100 |       0 |    6.84 | ...87-190,194-206 
  ...emDisplay.tsx |   11.66 |      100 |       0 |   11.66 | 54-246,249-287    
  ...usDisplay.tsx |       0 |        0 |       0 |       0 | 1-47              
  InputPrompt.tsx  |     100 |       75 |     100 |     100 | 45                
  ...tsDisplay.tsx |    4.36 |      100 |       0 |    4.36 | ...32-226,229-292 
  ...utManager.tsx |       0 |        0 |       0 |       0 | 1-99              
  ...ileDialog.tsx |    8.33 |      100 |       0 |    8.33 | ...8,72-81,85-152 
  ...Indicator.tsx |   14.92 |      100 |       0 |   14.92 | 21-25,35-97       
  ...ingDialog.tsx |    6.68 |      100 |       0 |    6.68 | ...66-383,387-436 
  ...geDisplay.tsx |       0 |        0 |       0 |       0 | 1-41              
  ModelDialog.tsx  |    3.82 |      100 |       0 |    3.82 | ...79-752,756-842 
  ...tsDisplay.tsx |    3.82 |      100 |       0 |    3.82 | 32-206,209-260    
  ...fications.tsx |   16.66 |      100 |       0 |   16.66 | ...08-139,142-177 
  ...odeDialog.tsx |     7.4 |      100 |       0 |     7.4 | 32-141            
  ...ustDialog.tsx |    5.53 |      100 |       0 |    5.53 | ...36-273,278-313 
  PrepareLabel.tsx |   13.33 |      100 |       0 |   13.33 | 20-48             
  ...ailDialog.tsx |   11.36 |      100 |       0 |   11.36 | ...93-499,503-576 
  ...ineEditor.tsx |    4.34 |      100 |       0 |    4.34 | ...66-552,555-630 
  ...istDialog.tsx |    3.84 |      100 |       0 |    3.84 | ...95-758,761-789 
  ...derDialog.tsx |    2.58 |      100 |       0 |    2.58 | 58-408,411-426    
  ...Indicator.tsx |       0 |        0 |       0 |       0 | 1-21              
  ...ngSpinner.tsx |   33.33 |      100 |       0 |   33.33 | 29-48             
  ...eKeyInput.tsx |       0 |        0 |       0 |       0 | 1-149             
  ...serDialog.tsx |    9.56 |      100 |       0 |    9.56 | ...52-603,611-670 
  ...ryDisplay.tsx |      10 |      100 |       0 |      10 | 21-28,31-75       
  ...ngsDialog.tsx |    9.75 |      100 |       0 |    9.75 | 29-105            
  ...putPrompt.tsx |   14.28 |      100 |       0 |   14.28 | 19-58             
  ...Indicator.tsx |   44.44 |      100 |       0 |   44.44 | 12-17             
  ...MoreLines.tsx |   30.43 |      100 |       0 |   30.43 | 18-38             
  ...estHelpers.ts |       0 |        0 |       0 |       0 | 1-201             
  StatsDisplay.tsx |    7.75 |      100 |       0 |    7.75 | ...21-635,638-709 
  ...usDisplay.tsx |       0 |        0 |       0 |       0 | 1-59              
  StickyHeader.tsx |    7.14 |      100 |       0 |    7.14 | 20-78             
  ...nsDisplay.tsx |    5.83 |      100 |       0 |    5.83 | 39-91,105-181     
  Table.tsx        |    6.77 |      100 |       0 |    6.77 | 31-36,39-99       
  ThemeDialog.tsx  |    3.96 |      100 |       0 |    3.96 | 51-441,444-500    
  ...dGradient.tsx |      25 |      100 |       0 |      25 | 27-46             
  Tips.tsx         |      16 |      100 |       0 |      16 | 17-45             
  TodoPanel.tsx    |     5.9 |      100 |       0 |     5.9 | ...87-244,247-296 
  ...tsDisplay.tsx |   10.05 |      100 |       0 |   10.05 | ...88-227,230-259 
  ToolsDialog.tsx  |   10.63 |      100 |       0 |   10.63 | ...5,41-47,50-123 
  ...ification.tsx |   36.36 |      100 |       0 |   36.36 | 15-22             
  ...ionDialog.tsx |    6.08 |      100 |       0 |    6.08 | 18-104,110-161    
  ...romptHooks.ts |   87.47 |    65.51 |     100 |   87.47 | ...44-348,364-371 
  ...eyHandlers.ts |   24.33 |    33.33 |      50 |   24.33 | ...75-577,581-606 
  ...mptRender.tsx |   53.05 |     31.7 |   72.72 |   53.05 | ...02,314-322,343 
  ...PromptText.ts |   31.08 |    55.55 |   28.57 |   31.08 | ...25-175,179-199 
  ...romptTypes.ts |       0 |        0 |       0 |       0 | 1                 
  ...logActions.ts |    2.59 |      100 |       0 |    2.59 | ...92-562,565-602 
  ...logDisplay.ts |    4.28 |      100 |       0 |    4.28 | 25-120,125-184    
  ...logHelpers.ts |    7.64 |      100 |       0 |    7.64 | ...76-194,201-214 
  ...ialogHooks.ts |     2.8 |      100 |       0 |     2.8 | ...99-600,633-808 
  ...ogKeypress.ts |    1.69 |      100 |       0 |    1.69 | 35-387,482-679    
  ...ialogTypes.ts |       0 |        0 |       0 |       0 | 1                 
  ...alogViews.tsx |    4.13 |      100 |       0 |    4.13 | 31-133,167-378    
  todo-utils.ts    |       0 |        0 |       0 |       0 | 1-7               
 ...leCreateWizard |   19.55 |       75 |    1.13 |   19.55 |                   
  ...aramsStep.tsx |   13.42 |      100 |       0 |   13.42 | ...33-246,258-342 
  ...ationStep.tsx |    7.23 |      100 |       0 |    7.23 | ...35-571,583-651 
  ...onfigStep.tsx |   13.33 |      100 |       0 |   13.33 | 20-26,37-117      
  ...electStep.tsx |    9.73 |      100 |       0 |    9.73 | ...12-279,295-340 
  ...ationMenu.tsx |       0 |        0 |       0 |       0 | 1-102             
  ...eSaveStep.tsx |    7.73 |      100 |       0 |    7.73 | ...75-304,316-394 
  ...ssSummary.tsx |   12.12 |      100 |       0 |   12.12 | 23-88             
  ...electStep.tsx |   18.18 |      100 |       0 |   18.18 | 29-96             
  TextInput.tsx    |    6.56 |      100 |       0 |    6.56 | ...99-109,117-200 
  constants.ts     |     100 |      100 |     100 |     100 |                   
  index.tsx        |   14.17 |      100 |       0 |   14.17 | ...97-226,235-319 
  types.ts         |     100 |      100 |     100 |     100 |                   
  utils.ts         |    15.2 |    83.33 |    7.69 |    15.2 | ...65-367,372-389 
  validation.ts    |   11.23 |      100 |       0 |   11.23 | ...97-104,107-111 
 ...gentManagement |    4.22 |      100 |       0 |    4.22 |                   
  ...entWizard.tsx |    2.91 |      100 |       0 |    2.91 | 30-232,237-312    
  ...ionWizard.tsx |    1.44 |      100 |       0 |    1.44 | 30-592,595-676    
  ...eteDialog.tsx |    5.88 |      100 |       0 |    5.88 | 14-94,104-146     
  ...tEditForm.tsx |    1.77 |      100 |       0 |    1.77 | 30-619,622-640    
  ...tListMenu.tsx |    2.94 |      100 |       0 |    2.94 | 15-264,267-348    
  ...tMainMenu.tsx |   16.66 |      100 |       0 |   16.66 | 22-62             
  ...gerDialog.tsx |    2.39 |      100 |       0 |    2.39 | 29-600,603-679    
  ...tShowView.tsx |    4.76 |      100 |       0 |    4.76 | 25-183,186-243    
  index.ts         |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...comeOnboarding |   13.67 |        0 |       0 |   13.67 |                   
  ...ethodStep.tsx |   16.86 |      100 |       0 |   16.86 | 38-123            
  ...ationStep.tsx |    7.35 |      100 |       0 |    7.35 | ...1,59-95,98-177 
  ...etionStep.tsx |    9.84 |      100 |       0 |    9.84 | ...,89-99,103-179 
  ...electStep.tsx |   12.12 |      100 |       0 |   12.12 | ...3,67-75,79-143 
  ...electStep.tsx |   34.48 |      100 |       0 |   34.48 | 51-120            
  SkipExitStep.tsx |    12.5 |      100 |       0 |    12.5 | 18-59             
  ...omeDialog.tsx |   11.76 |      100 |       0 |   11.76 | 51-118,121-166    
  WelcomeStep.tsx  |    10.2 |      100 |       0 |    10.2 | 23-74             
  index.ts         |       0 |        0 |       0 |       0 | 1-13              
 ...nents/messages |    18.9 |       90 |   15.06 |    18.9 |                   
  AiMessage.tsx    |   14.51 |      100 |       0 |   14.51 | 28-95             
  ...geContent.tsx |   20.83 |      100 |       0 |   20.83 | 26-46             
  ...onMessage.tsx |   12.28 |      100 |       0 |   12.28 | 24-86             
  DiffRenderer.tsx |    3.59 |      100 |       0 |    3.59 | ...81-412,415-433 
  ErrorMessage.tsx |   22.22 |      100 |       0 |   22.22 | 16-31             
  InfoMessage.tsx  |   17.24 |      100 |       0 |   17.24 | 19-44             
  ...rlMessage.tsx |   11.36 |      100 |       0 |   11.36 | 18-65             
  ...geMessage.tsx |     100 |      100 |     100 |     100 |                   
  ...ckDisplay.tsx |      20 |      100 |       0 |      20 | 43-64             
  ...onMessage.tsx |    3.04 |      100 |       0 |    3.04 | 36-552,557-636    
  ...upMessage.tsx |    7.55 |      100 |       0 |    7.55 | ...76-269,273-348 
  ToolMessage.tsx  |    4.37 |      100 |       0 |    4.37 | 38-342,358-428    
  ...ltDisplay.tsx |   92.03 |    88.23 |     100 |   92.03 | 55-69,238-240     
  ToolShared.tsx   |   64.61 |       90 |   33.33 |   64.61 | 78-99,102-105     
  UserMessage.tsx  |     100 |      100 |     100 |     100 |                   
  ...llMessage.tsx |   36.36 |      100 |       0 |   36.36 | 17-25             
  ...ngMessage.tsx |    23.8 |      100 |       0 |    23.8 | 17-34             
 ...ponents/shared |    42.3 |    62.09 |   40.77 |    42.3 |                   
  ...ctionList.tsx |    4.31 |      100 |       0 |    4.31 | 36-123,128-206    
  MaxSizedBox.tsx  |   49.79 |    56.75 |   70.58 |   49.79 | ...63-666,670-673 
  ...tonSelect.tsx |   12.76 |      100 |       0 |   12.76 | 66-113            
  ...lableList.tsx |    5.15 |      100 |       0 |    5.15 | 40-267            
  ...ist.hooks.tsx |    3.81 |      100 |       0 |    3.81 | ...70-795,798-835 
  ...lizedList.tsx |   11.49 |      100 |       0 |   11.49 | 28-112            
  ...List.types.ts |     100 |      100 |     100 |     100 |                   
  ...operations.ts |   75.54 |    48.14 |     100 |   75.54 | ...32-233,256-265 
  ...er-reducer.ts |   34.01 |    49.01 |   36.66 |   34.01 | ...30,632,644,687 
  buffer-types.ts  |     100 |      100 |     100 |     100 |                   
  text-buffer.ts   |   75.97 |    78.26 |    29.5 |   75.97 | ...33-635,654-660 
  ...formations.ts |   42.85 |    71.42 |      80 |   42.85 | ...32-139,163-209 
  ...n-handlers.ts |   33.99 |    61.53 |   23.25 |   33.99 | ...47-755,758-762 
  ...st-helpers.ts |       0 |        0 |       0 |       0 | 1-33              
  ...er-actions.ts |   93.84 |     87.5 |     100 |   93.84 | 91-93,100         
  visual-layout.ts |    90.2 |    72.34 |     100 |    90.2 | ...48-350,372-373 
  ...navigation.ts |   53.38 |    61.53 |   73.68 |   53.38 | ...45-366,389-411 
 ...mponents/views |    9.79 |      100 |       0 |    9.79 |                   
  ChatList.tsx     |   20.58 |      100 |       0 |   20.58 | 24-55             
  ...sionsList.tsx |     7.5 |      100 |       0 |     7.5 | 19-103            
  HooksList.tsx    |   10.67 |      100 |       0 |   10.67 | ...18-129,132-147 
  SkillsList.tsx   |    5.79 |      100 |       0 |    5.79 | 18-103            
 src/ui/constants  |   55.94 |     90.9 |      50 |   55.94 |                   
  ...ollections.ts |     100 |      100 |     100 |     100 |                   
  tips.ts          |       0 |        0 |       0 |       0 | 1-163             
 src/ui/containers |       0 |        0 |       0 |       0 |                   
  ...ontroller.tsx |       0 |        0 |       0 |       0 | 1-357             
  UIStateShell.tsx |       0 |        0 |       0 |       0 | 1-15              
 ...ainer/builders |   98.38 |      100 |   83.33 |   98.38 |                   
  ...dUIActions.ts |     100 |      100 |     100 |     100 |                   
  buildUIState.ts  |     100 |      100 |     100 |     100 |                   
  ...onsBuilder.ts |   66.66 |      100 |       0 |   66.66 | 20-21             
  ...ateBuilder.ts |   66.66 |      100 |       0 |   66.66 | 20-21             
 ...ontainer/hooks |    56.6 |    87.54 |   59.37 |    56.6 |                   
  ...pBootstrap.ts |   93.24 |    58.33 |     100 |   93.24 | ...41-248,252-254 
  useAppDialogs.ts |   41.31 |      100 |   42.85 |   41.31 | ...63,182-399,419 
  ...ntHandlers.ts |     100 |      100 |     100 |     100 |                   
  useAppInput.ts   |    5.43 |      100 |       0 |    5.43 | 102-507,510-514   
  useAppLayout.ts  |    7.69 |      100 |       0 |    7.69 | 93-308,311-314    
  ...reenAction.ts |   13.63 |      100 |       0 |   13.63 | 23-41             
  ...nSelection.ts |      20 |      100 |       0 |      20 | 27-48             
  ...hestration.ts |     100 |      100 |     100 |     100 |                   
  ...references.ts |      10 |      100 |       0 |      10 | 51-104            
  ...itHandling.ts |   89.79 |      100 |     100 |   89.79 | 131-139,143       
  ...textBridge.ts |   33.33 |      100 |       0 |   33.33 | 23-30             
  ...tartHotkey.ts |   26.66 |      100 |       0 |   26.66 | 23-33             
  ...omptSubmit.ts |     100 |      100 |     100 |     100 |                   
  ...utHandling.ts |   98.18 |       90 |     100 |   98.18 | 49,148            
  ...yBootstrap.ts |      30 |      100 |       0 |      30 | 28-34             
  ...eybindings.ts |   86.36 |    78.18 |     100 |   86.36 | ...02-204,248-249 
  ...easurement.ts |   15.38 |      100 |       0 |   15.38 | 45-95             
  ...reshAction.ts |   79.45 |     37.5 |     100 |   79.45 | 61,91-94,96-105   
  ...untimeSync.ts |   96.17 |    96.96 |     100 |   96.17 | 204-209           
  ...elTracking.ts |   34.69 |      100 |     100 |   34.69 | 51-95             
  ...laceholder.ts |      15 |      100 |       0 |      15 | 13-18,21-34       
  ...rorTimeout.ts |   17.64 |      100 |       0 |   17.64 | 24-39             
  ...astructure.ts |   73.91 |      100 |      20 |   73.91 | 53,57,61,75-83    
  ...ebugLogger.ts |   17.24 |      100 |       0 |   17.24 | 23-51             
  ...ialization.ts |   98.88 |    94.73 |     100 |   98.88 | 88                
  ...sAutoReset.ts |     100 |       90 |     100 |     100 | 42                
  ...andActions.ts |     100 |      100 |     100 |     100 |                   
  ...eshManager.ts |     100 |      100 |     100 |     100 |                   
  ...uationFlow.ts |    7.14 |      100 |       0 |    7.14 | 57-160            
  ...csTracking.ts |   95.78 |    80.64 |     100 |   95.78 | ...22-123,174-175 
  ...uthBridges.ts |   17.94 |      100 |   33.33 |   17.94 | ...13-138,142-146 
 src/ui/contexts   |   53.55 |    80.89 |   49.01 |   53.55 |                   
  ...chContext.tsx |   88.23 |    66.66 |     100 |   88.23 | 27-28             
  FocusContext.tsx |       0 |        0 |       0 |       0 | 1-11              
  ...ssContext.tsx |    83.3 |    87.89 |    87.5 |    83.3 | ...21-522,572-573 
  MouseContext.tsx |   78.82 |       75 |      80 |   78.82 | ...00-101,111-117 
  ...erContext.tsx |   94.44 |    63.63 |     100 |   94.44 | 125-128           
  ...owContext.tsx |   21.42 |      100 |   33.33 |   21.42 | 34,40-88          
  ...meContext.tsx |   45.27 |    57.14 |      50 |   45.27 | ...47-248,256-257 
  ...lProvider.tsx |    91.8 |    74.62 |     100 |    91.8 | ...94-495,507-508 
  ...onContext.tsx |    3.64 |      100 |       0 |    3.64 | ...04-459,464-471 
  ...teContext.tsx |       0 |        0 |       0 |       0 | 1-57              
  ...gsContext.tsx |      50 |      100 |       0 |      50 | 15-20             
  ...ngContext.tsx |   42.85 |      100 |       0 |   42.85 | 15-22             
  TodoContext.tsx  |   54.54 |      100 |       0 |   54.54 | 28-31,33-36,39-40 
  TodoProvider.tsx |    3.57 |      100 |       0 |    3.57 | 28-185,188-218    
  ...llContext.tsx |     100 |      100 |       0 |     100 |                   
  ...lProvider.tsx |    6.75 |      100 |       0 |    6.75 | 24-118            
  ...nsContext.tsx |      25 |      100 |       0 |      25 | 204-215,218-223   
  ...teContext.tsx |      50 |       50 |      50 |      50 | 251-260,265-266   
  ...deContext.tsx |   11.11 |      100 |       0 |   11.11 | 30-82,85-90       
 src/ui/editors    |   98.18 |     87.5 |     100 |   98.18 |                   
  ...ngsManager.ts |   98.18 |     87.5 |     100 |   98.18 | 59                
 src/ui/hooks      |   67.99 |    85.66 |   68.31 |   67.99 |                   
  ...st-helpers.ts |   91.47 |    81.25 |   68.57 |   91.47 | ...62-163,182-186 
  ...dProcessor.ts |   82.75 |    86.88 |   77.77 |   82.75 | ...02-204,257-269 
  ...sorHelpers.ts |   83.03 |    80.35 |   96.29 |   83.03 | ...50-658,704-705 
  ...rceHelpers.ts |      56 |       50 |   71.42 |      56 | ...68-275,280-288 
  ...etionUtils.ts |   53.36 |    88.23 |   64.28 |   53.36 | 57-207,335        
  index.ts         |       0 |        0 |       0 |       0 | 1-9               
  keyToAnsi.ts     |    42.5 |      100 |       0 |    42.5 | 27-37,47-61       
  ...etionUtils.ts |     100 |    66.66 |     100 |     100 | 49                
  ...dProcessor.ts |   95.61 |       80 |     100 |   95.61 | ...87-288,420-424 
  ...ndHandlers.ts |   17.68 |    27.27 |   22.22 |   17.68 | ...47-648,653-662 
  ...dPathUtils.ts |   96.87 |    92.85 |     100 |   96.87 | ...25-227,271-272 
  ...dProcessor.ts |     100 |      100 |     100 |     100 |                   
  ...sorSupport.ts |   68.85 |    70.83 |   66.66 |   68.85 | ...81-284,302-309 
  ...tionEffect.ts |   90.44 |    84.28 |   92.85 |   90.44 | ...33-434,447-448 
  ...etionTypes.ts |       0 |        0 |       0 |       0 | 1                 
  toolMapping.ts   |   90.81 |    88.88 |   93.33 |   90.81 | ...95-207,226-228 
  ...st-helpers.ts |   75.93 |    75.86 |      24 |   75.93 | ...76-277,279-280 
  ...nateBuffer.ts |      50 |      100 |       0 |      50 | 16-18             
  ...dScrollbar.ts |   97.82 |      100 |     100 |   97.82 | 153-155           
  ...st-helpers.ts |     100 |      100 |     100 |     100 |                   
  ...Completion.ts |    92.5 |    89.51 |     100 |    92.5 | ...96-597,600-601 
  ...uthCommand.ts |   96.42 |    66.66 |     100 |   96.42 | 21                
  ...tIndicator.ts |     100 |     92.3 |     100 |     100 | 57                
  useBanner.ts     |     100 |    83.33 |     100 |     100 | 22,48             
  ...chedScroll.ts |   16.66 |      100 |       0 |   16.66 | 14-32             
  ...ketedPaste.ts |      20 |      100 |       0 |      20 | 20-38             
  ...ompletion.tsx |   97.24 |    82.75 |    90.9 |   97.24 | ...05-207,210-211 
  useCompletion.ts |    92.4 |     87.5 |     100 |    92.4 | 68-69,93-94,98-99 
  ...leMessages.ts |   96.15 |       90 |     100 |   96.15 | 56-57,63          
  ...ntHandlers.ts |   31.25 |      100 |     100 |   31.25 | 43-70,74-82       
  ...fileDialog.ts |   16.12 |      100 |       0 |   16.12 | 17-47             
  ...orSettings.ts |   11.86 |      100 |       0 |   11.86 | 31-87             
  ...AutoUpdate.ts |    8.33 |      100 |       0 |    8.33 | 18-64             
  ...ionUpdates.ts |   75.17 |    80.64 |   77.77 |   75.17 | ...60-261,289-303 
  ...erDetector.ts |     100 |      100 |     100 |     100 |                   
  useFocus.ts      |     100 |      100 |     100 |     100 |                   
  ...olderTrust.ts |   84.67 |    86.95 |     100 |   84.67 | ...12-114,130-131 
  ...BranchName.ts |     100 |       95 |     100 |     100 | 54                
  ...oryManager.ts |   96.61 |    93.18 |     100 |   96.61 | ...70-171,214-215 
  ...splayState.ts |     100 |      100 |     100 |     100 |                   
  ...stListener.ts |   12.12 |      100 |       0 |   12.12 | 18-51             
  ...ivityTimer.ts |   76.19 |    66.66 |     100 |   76.19 | 30-35             
  ...putHistory.ts |    92.5 |    85.71 |     100 |    92.5 | 62-63,71,93-95    
  ...storyStore.ts |     100 |    94.11 |     100 |     100 | 67                
  useKeypress.ts   |   88.88 |       75 |     100 |   88.88 | 31-32             
  ...rdProtocol.ts |       0 |        0 |       0 |       0 | 1-26              
  ...fileDialog.ts |     5.4 |      100 |       0 |     5.4 | 23-69,72-143      
  ...gIndicator.ts |     100 |      100 |     100 |     100 |                   
  useLogger.ts     |   94.11 |      100 |     100 |   94.11 | 28                
  ...oryMonitor.ts |     100 |      100 |     100 |     100 |                   
  useMouse.ts      |   77.77 |    66.66 |     100 |   77.77 | 31-34             
  useMouseClick.ts |     100 |      100 |     100 |     100 |                   
  ...eSelection.ts |     2.2 |      100 |       0 |     2.2 | 51-378,381-427    
  ...hestration.ts |     100 |      100 |     100 |     100 |                   
  ...oviderInfo.ts |       0 |        0 |       0 |       0 | 1-85              
  ...odifyTrust.ts |    9.09 |      100 |       0 |    9.09 | 43-134            
  ...raseCycler.ts |   79.72 |    73.33 |     100 |   79.72 | ...69,75-76,92-94 
  ...cySettings.ts |   85.14 |    77.77 |     100 |   85.14 | ...,75-79,109-120 
  ...Management.ts |    1.48 |      100 |       0 |    1.48 | 22-609,612-674    
  ...Completion.ts |   43.07 |    55.55 |      50 |   43.07 | ...92-305,336-345 
  ...iderDialog.ts |    5.71 |      100 |       0 |    5.71 | 39-77,80-151      
  ...lScheduler.ts |   76.42 |    97.36 |      75 |   76.42 | ...85,301-317,474 
  ...oryCommand.ts |       0 |        0 |       0 |       0 | 1-7               
  useResponsive.ts |     100 |      100 |     100 |     100 |                   
  ...ompletion.tsx |   69.56 |      100 |     100 |   69.56 | 45-47,51-66,78-81 
  useRewind.ts     |     100 |      100 |     100 |     100 |                   
  ...ectionList.ts |   89.78 |     89.1 |     100 |   89.78 | ...17-423,443-447 
  useSession.ts    |       0 |        0 |       0 |       0 | 1-23              
  ...ionBrowser.ts |     100 |      100 |     100 |     100 |                   
  ...serHelpers.ts |   95.79 |    85.21 |   97.36 |   95.79 | ...37-639,762-763 
  ...erKeypress.ts |   89.87 |    97.29 |   94.11 |   89.87 | 101-108,130-145   
  ...ngsCommand.ts |   18.75 |      100 |       0 |   18.75 | 10-25             
  ...hallowMemo.ts |      10 |      100 |       0 |      10 | 9-22,35-47        
  ...ellHistory.ts |   92.24 |    78.78 |     100 |   92.24 | ...82,130-131,141 
  ...Completion.ts |   97.07 |    81.25 |     100 |   97.07 | 71-73,101-102     
  ...oryCommand.ts |       0 |        0 |       0 |       0 | 1-64              
  ...cessorCore.ts |   74.13 |       60 |     100 |   74.13 | ...20,157,177-204 
  ...ompletion.tsx |   96.77 |    81.39 |     100 |   96.77 | ...,93-94,340-348 
  ...leCallback.ts |     100 |      100 |     100 |     100 |                   
  ...tateAndRef.ts |   59.09 |      100 |     100 |   59.09 | 23-31             
  ...oryRefresh.ts |     100 |      100 |     100 |     100 |                   
  ...rminalSize.ts |   10.34 |      100 |       0 |   10.34 | 15-44,49-85       
  ...emeCommand.ts |    4.29 |      100 |       0 |    4.29 | 25-122,125-199    
  useTimer.ts      |    87.5 |    85.71 |     100 |    87.5 | 44-45,50-52       
  ...ntinuation.ts |   91.24 |    89.74 |     100 |   91.24 | ...27-128,154-164 
  ...ePreserver.ts |   57.14 |      100 |      80 |   57.14 | 58-76             
  ...oolsDialog.ts |    3.62 |      100 |       0 |    3.62 | 25-97,100-183     
  ...erGuidance.ts |   92.85 |    85.71 |     100 |   92.85 | 28-29             
  ...Onboarding.ts |    1.92 |      100 |       0 |    1.92 | 79-403,406-487    
  ...eMigration.ts |   11.66 |      100 |       0 |   11.66 | 15-74             
  vim.ts           |   85.73 |     87.8 |    90.9 |   85.73 | ...07-716,832-834 
 ...ks/agentStream |   82.81 |    78.54 |   82.08 |   82.81 |                   
  ...Dispatcher.ts |   47.55 |    35.55 |   56.25 |   47.55 | ...60,362,399-432 
  ...ersistence.ts |    98.3 |    95.34 |     100 |    98.3 | 160-162           
  ...tProcessor.ts |      78 |    77.77 |      80 |      78 | ...47-158,161-163 
  contextLimit.ts  |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  queryPreparer.ts |   63.63 |    46.66 |     100 |   63.63 | ...47-148,151-165 
  streamUtils.ts   |   93.43 |     87.4 |   91.66 |   93.43 | ...94-310,486-488 
  thoughtState.ts  |   93.33 |    68.75 |     100 |   93.33 | 70-71,76-77       
  ...ionHandler.ts |     100 |      100 |     100 |     100 |                   
  ...reparation.ts |   96.42 |    88.88 |     100 |   96.42 | 44                
  types.ts         |       0 |        0 |       0 |       0 | 1-17              
  ...ventStream.ts |   85.03 |    88.46 |      60 |   85.03 | ...73-287,306-307 
  ...gentStream.ts |     100 |      100 |      80 |     100 |                   
  ...mLifecycle.ts |   84.25 |    63.33 |      80 |   84.25 | ...31-232,261-266 
  ...hestration.ts |   99.18 |      100 |   88.88 |   99.18 | 112-113           
  ...ntHandlers.ts |   70.92 |    95.83 |   84.21 |   70.92 | ...39,448-457,516 
  ...treamState.ts |   79.53 |       50 |     100 |   79.53 | ...76,197,233-234 
  ...ubmitQuery.ts |   94.34 |    87.75 |   85.71 |   94.34 | ...81-482,504-506 
 src/ui/layouts    |   83.55 |    56.89 |   83.33 |   83.55 |                   
  ...AppLayout.tsx |   81.18 |    71.42 |   83.33 |   81.18 | ...91-205,321-359 
  ...utHelpers.tsx |   86.31 |     54.9 |   95.23 |   86.31 | ...88-789,810-838 
  ...ainContent.ts |   23.52 |      100 |       0 |   23.52 | 16-22,25-28,31-34 
 ...noninteractive |   74.07 |      100 |    7.14 |   74.07 |                   
  ...eractiveUi.ts |   74.07 |      100 |    7.14 |   74.07 | 17-19,23-24,27-28 
 src/ui/privacy    |   18.77 |        0 |       0 |   18.77 |                   
  ...acyNotice.tsx |       0 |        0 |       0 |       0 | 1-140             
  ...acyNotice.tsx |       0 |        0 |       0 |       0 | 1-59              
  ...acyNotice.tsx |   12.19 |      100 |       0 |   12.19 | 16-62             
  ...acyNotice.tsx |   35.42 |      100 |       0 |   35.42 | 77-172,180-235    
  ...acyNotice.tsx |      20 |      100 |       0 |      20 | 23-59,62-64       
  ...acyNotice.tsx |   13.04 |      100 |       0 |   13.04 | 22-73             
 src/ui/reducers   |    79.5 |    91.66 |      50 |    79.5 |                   
  appReducer.ts    |     100 |      100 |     100 |     100 |                   
  ...ionReducer.ts |       0 |        0 |       0 |       0 | 1-52              
 src/ui/state      |   52.63 |    30.76 |      50 |   52.63 |                   
  extensions.ts    |   52.63 |    30.76 |      50 |   52.63 | ...28,130,134-149 
 src/ui/themes     |   99.04 |    85.65 |   97.61 |   99.04 |                   
  ansi-light.ts    |     100 |      100 |     100 |     100 |                   
  ansi.ts          |     100 |      100 |     100 |     100 |                   
  atom-one-dark.ts |     100 |      100 |     100 |     100 |                   
  ayu-light.ts     |     100 |      100 |     100 |     100 |                   
  ayu.ts           |     100 |      100 |     100 |     100 |                   
  color-utils.ts   |     100 |      100 |     100 |     100 |                   
  default-light.ts |     100 |      100 |     100 |     100 |                   
  default.ts       |     100 |      100 |     100 |     100 |                   
  dracula.ts       |     100 |      100 |     100 |     100 |                   
  github-dark.ts   |     100 |      100 |     100 |     100 |                   
  github-light.ts  |     100 |      100 |     100 |     100 |                   
  googlecode.ts    |     100 |      100 |     100 |     100 |                   
  green-screen.ts  |     100 |      100 |     100 |     100 |                   
  no-color.ts      |     100 |      100 |     100 |     100 |                   
  ...c-resolver.ts |     100 |      100 |     100 |     100 |                   
  ...tic-tokens.ts |     100 |      100 |     100 |     100 |                   
  ...-of-purple.ts |     100 |      100 |     100 |     100 |                   
  theme-compat.ts  |     100 |       50 |     100 |     100 | 79                
  theme-manager.ts |   88.55 |    82.81 |     100 |   88.55 | ...03-312,317-318 
  theme.ts         |   99.09 |     81.3 |   94.11 |   99.09 | 282-283,702-703   
  xcode.ts         |     100 |      100 |     100 |     100 |                   
 src/ui/types      |       0 |        0 |       0 |       0 |                   
  ...ngMetadata.ts |       0 |        0 |       0 |       0 |                   
 src/ui/utils      |   63.33 |    89.51 |   74.26 |   63.33 |                   
  ...Colorizer.tsx |    5.64 |      100 |       0 |    5.64 | ...27-168,180-249 
  ...olePatcher.ts |   72.09 |      100 |   83.33 |   72.09 | 50-61             
  ...nRenderer.tsx |   96.88 |    87.87 |     100 |   96.88 | ...69-271,275-277 
  ...wnDisplay.tsx |       5 |      100 |       0 |       5 | ...90-717,728-732 
  ...eRenderer.tsx |   11.17 |      100 |       0 |   11.17 | ...34-387,394-427 
  ...tGenerator.ts |     100 |    95.83 |   83.33 |     100 | 136               
  ...ketedPaste.ts |      60 |      100 |       0 |      60 | 13-14,17-18       
  clipboard.ts     |   97.29 |    84.61 |     100 |   97.29 | 40                
  ...boardUtils.ts |   62.44 |    76.74 |   83.33 |   62.44 | ...49-263,333-335 
  commandUtils.ts  |   93.02 |    94.44 |   96.15 |   93.02 | ...31-235,316-324 
  computeStats.ts  |     100 |      100 |     100 |     100 |                   
  displayUtils.ts  |     100 |      100 |     100 |     100 |                   
  formatters.ts    |   90.47 |    95.23 |     100 |   90.47 | 57-60             
  fuzzyFilter.ts   |     100 |    96.55 |     100 |     100 | 84                
  highlight.ts     |   77.69 |    97.29 |      60 |   77.69 | 146-172,176-181   
  ...xportUtils.ts |   98.52 |    94.11 |     100 |   98.52 | 137-138           
  ...storyItems.ts |   99.23 |    93.75 |     100 |   99.23 | 109               
  input.ts         |   84.28 |    94.44 |   66.66 |   84.28 | 73-80,106-113     
  isNarrowWidth.ts |      50 |      100 |       0 |      50 | 13-14             
  ...nUtilities.ts |   66.66 |     87.5 |     100 |   66.66 | 75-94,103-104     
  modelIdentity.ts |   99.23 |    98.18 |   84.61 |   99.23 | 169               
  mouse.ts         |   83.05 |    72.41 |     100 |   83.05 | ...94,201,214-215 
  ...mConstants.ts |     100 |      100 |     100 |     100 |                   
  ...opDetector.ts |       0 |        0 |       0 |       0 | 1-210             
  responsive.ts    |   73.39 |    76.66 |   83.33 |   73.39 | ...00-108,111-125 
  rewindFileOps.ts |   92.38 |    71.79 |     100 |   92.38 | ...48-251,291-295 
  ...putHandler.ts |   94.44 |    91.12 |     100 |   94.44 | ...15-316,386-387 
  ...ityManager.ts |   94.92 |    85.71 |    90.9 |   94.92 | ...28,352,380,391 
  ...alContract.ts |     100 |      100 |     100 |     100 |                   
  terminalLinks.ts |     100 |      100 |     100 |     100 |                   
  ...colCleanup.ts |   95.23 |       75 |     100 |   95.23 | 38                
  ...lSequences.ts |     100 |      100 |     100 |     100 |                   
  terminalSetup.ts |   10.72 |      100 |    7.14 |   10.72 | 80-419            
  textUtils.ts     |    93.7 |    92.15 |   88.88 |    93.7 | 20-25,156-157     
  ...Formatters.ts |       0 |        0 |       0 |       0 | 1-50              
  ...icsTracker.ts |     100 |    94.44 |     100 |     100 | 38                
  ui-sizing.ts     |      16 |      100 |       0 |      16 | 11-23,26-36       
  updateCheck.ts   |     100 |    94.11 |     100 |     100 | 35,46             
 src/utils         |   62.96 |    88.91 |   75.89 |   62.96 |                   
  ...ionContext.ts |   76.92 |       75 |     100 |   76.92 | 38-41,63-66,81-84 
  ...Formatting.ts |   94.36 |    93.75 |     100 |   94.36 | 49-50,71-72       
  bootstrap.ts     |     100 |      100 |     100 |     100 |                   
  checks.ts        |   33.33 |      100 |       0 |   33.33 | 23-28             
  cleanup.ts       |   68.25 |       80 |      60 |   68.25 | ...67-69,72,86-95 
  coalesce.ts      |     100 |      100 |     100 |     100 |                   
  commands.ts      |   51.78 |    71.42 |     100 |   51.78 | 25-26,57-85       
  commentJson.ts   |    92.3 |     92.5 |     100 |    92.3 | 94-102            
  ...ScopeUtils.ts |   27.58 |      100 |       0 |   27.58 | 24-41,58-86       
  ...icSettings.ts |   88.07 |    88.09 |     100 |   88.07 | ...73,85-88,91-94 
  ...arResolver.ts |   96.72 |    96.42 |     100 |   96.72 | 118-119           
  errors.ts        |   94.87 |       88 |     100 |   94.87 | 53-54,95-96       
  events.ts        |     100 |      100 |     100 |     100 |                   
  ...lativeTime.ts |     100 |      100 |     100 |     100 |                   
  gitCommitInfo.ts |   90.27 |      100 |     100 |   90.27 | 78-80,103,110-112 
  gitUtils.ts      |   93.54 |       85 |     100 |   93.54 | 61-62,77-80       
  ...AutoUpdate.ts |   69.37 |    80.76 |   77.77 |   69.37 | ...67-268,282-347 
  ...lationInfo.ts |   99.49 |     98.3 |     100 |   99.49 | 59                
  math.ts          |   66.66 |      100 |       0 |   66.66 | 15                
  ...stentState.ts |   95.31 |    84.21 |     100 |   95.31 | 42,63-64          
  readStdin.ts     |   81.03 |    91.66 |   83.33 |   81.03 | 32-39,51-53       
  refusalNotice.ts |     100 |      100 |     100 |     100 |                   
  relaunch.ts      |     100 |      100 |     100 |     100 |                   
  resolvePath.ts   |   66.66 |       25 |     100 |   66.66 | 12-13,16,18-19    
  ...containers.ts |    4.86 |      100 |       0 |    4.86 | ...36-656,660-686 
  ...entrypoint.ts |    9.87 |      100 |       0 |    9.87 | 19-48,51-100      
  sandbox-env.ts   |   74.65 |    77.14 |   66.66 |   74.65 | ...52-153,161-162 
  sandbox-exec.ts  |    8.73 |      100 |    12.5 |    8.73 | 56-321,338-427    
  sandbox-image.ts |    3.96 |      100 |       0 |    3.96 | 12-128            
  ...box-podman.ts |   74.67 |    94.73 |   77.77 |   74.67 | ...50-260,326-399 
  ...x-seatbelt.ts |   28.02 |       50 |   22.22 |   28.02 | ...15-216,226-352 
  sandbox-ssh.ts   |   78.92 |    81.13 |     100 |   78.92 | ...07-308,372-376 
  sandbox.ts       |   13.23 |      100 |       0 |   13.23 | 47-111            
  ...st-helpers.ts |     100 |      100 |     100 |     100 |                   
  ...ionCleanup.ts |   88.88 |    84.21 |     100 |   88.88 | ...42-243,326-327 
  sessionUtils.ts  |    8.86 |      100 |       0 |    8.86 | 52-122,129-143    
  settingsUtils.ts |   85.67 |    91.34 |   94.28 |   85.67 | ...61-489,528-529 
  ...ttingSaver.ts |    1.92 |      100 |       0 |    1.92 | 11-32,40-85       
  skillSettings.ts |   86.13 |       88 |     100 |   86.13 | 99-107,134-138    
  skillUtils.ts    |   71.33 |    70.96 |   83.33 |   71.33 | ...88-189,203-224 
  spawnWrapper.ts  |     100 |      100 |     100 |     100 |                   
  ...upWarnings.ts |     100 |      100 |     100 |     100 |                   
  stdinSafety.ts   |   91.39 |    86.48 |     100 |   91.39 | ...66-167,170,245 
  terminalTheme.ts |     100 |      100 |     100 |     100 |                   
  typeGuards.ts    |   65.38 |      100 |      75 |   65.38 | 26-34             
  ...entEmitter.ts |     100 |      100 |     100 |     100 |                   
  ...upWarnings.ts |     100 |      100 |     100 |     100 |                   
  version.ts       |     100 |      100 |     100 |     100 |                   
  windowTitle.ts   |     100 |      100 |     100 |     100 |                   
 src/utils/privacy |   66.15 |       70 |   76.19 |   66.15 |                   
  ...taRedactor.ts |   81.91 |    71.42 |      80 |   81.91 | ...08-610,616-637 
  ...acyManager.ts |       0 |        0 |       0 |       0 | 1-176             
 ...ed-integration |   74.53 |    75.75 |   77.14 |   74.53 |                   
  ...temService.ts |     100 |      100 |     100 |     100 |                   
  ...tent-utils.ts |    8.62 |       50 |   14.28 |    8.62 | ...06-115,118-164 
  zed-helpers.ts   |      42 |    55.55 |      50 |      42 | ...59-166,168-170 
  ...h-resolver.ts |   73.33 |       56 |   96.15 |   73.33 | ...43-650,654-680 
  ...st-helpers.ts |    98.4 |      100 |   56.66 |    98.4 | 184-186           
  ...ol-handler.ts |   87.65 |     80.9 |   96.15 |   87.65 | ...16-318,365-378 
  ...ntegration.ts |   79.56 |    79.39 |   80.95 |   79.56 | ...13-814,842-844 
-------------------|---------|----------|---------|---------|-------------------
Core Package - Full Text Report
-------------------|---------|----------|---------|---------|-------------------
File               | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
-------------------|---------|----------|---------|---------|-------------------
All files          |   79.08 |    84.15 |   76.61 |   79.08 |                   
 src               |     100 |      100 |     100 |     100 |                   
  ...-factories.ts |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
 src/__mocks__/fs  |       0 |        0 |       0 |       0 |                   
  promises.ts      |       0 |        0 |       0 |       0 | 1-48              
 src/adapters      |     100 |      100 |     100 |     100 |                   
  ...eamAdapter.ts |     100 |      100 |     100 |     100 |                   
 src/code_assist   |   80.88 |    80.57 |   82.14 |   80.88 |                   
  codeAssist.ts    |   17.24 |      100 |       0 |   17.24 | 22-44,51-59       
  ...orAdapters.ts |   92.26 |    71.11 |   88.88 |   92.26 | ...05-207,272-275 
  converter.ts     |   95.54 |    93.02 |     100 |   95.54 | 186-190,219-220   
  ...nAIWrapper.ts |     100 |      100 |     100 |     100 |                   
  ...al-storage.ts |   95.86 |    79.48 |     100 |   95.86 | 27-28,86,110,139  
  server.ts        |   48.16 |    72.72 |      50 |   48.16 | ...15-256,259-262 
  setup.ts         |   86.09 |    73.07 |     100 |   86.09 | ...57-159,183-189 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/commands      |     100 |      100 |     100 |     100 |                   
  extensions.ts    |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/config        |   70.21 |     79.9 |   58.45 |   70.21 |                   
  ...tLifecycle.ts |   80.34 |    97.05 |      80 |   80.34 | ...49-253,262-286 
  ...skServices.ts |    9.19 |      100 |       0 |    9.19 | ...5,62-80,89-129 
  config.ts        |    62.9 |    80.41 |      60 |    62.9 | ...92-801,826-846 
  configBase.ts    |   68.81 |    72.09 |   72.72 |   68.81 | ...48-255,257-261 
  ...igBaseCore.ts |   69.07 |    94.52 |   44.23 |   69.07 | ...35-836,838-839 
  ...onstructor.ts |   96.93 |    89.06 |     100 |   96.93 | ...97-498,501-502 
  ...estHarness.ts |   93.15 |    95.45 |   83.33 |   93.15 | 229-239,245-248   
  configTypes.ts   |      58 |      100 |      50 |      58 | 215-255           
  constants.ts     |     100 |      100 |     100 |     100 |                   
  ...ngsHelpers.ts |   62.16 |       40 |     100 |   62.16 | ...31,35-36,42-43 
  index.ts         |       0 |        0 |       0 |       0 | 1-41              
  ...ntegration.ts |   63.22 |    75.47 |   73.68 |   63.22 | ...17,434,443,452 
  models.ts        |     100 |      100 |     100 |     100 |                   
  ...rSingleton.ts |   76.22 |    70.37 |   56.25 |   76.22 | ...94,397-400,408 
  ...entManager.ts |   50.76 |    68.91 |   65.21 |   50.76 | ...54-655,681-705 
  ...ingsParser.ts |   41.37 |    33.33 |     100 |   41.37 | 31-48             
  ...tryFactory.ts |   84.08 |    77.77 |   71.42 |   84.08 | ...71,465,483-499 
  types.ts         |       0 |        0 |       0 |       0 |                   
 ...nfirmation-bus |   88.88 |    66.66 |   66.66 |   88.88 |                   
  index.ts         |       0 |        0 |       0 |       0 | 1-2               
  message-bus.ts   |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/core          |   80.31 |    78.18 |    87.5 |   80.31 |                   
  ...ssionTypes.ts |       0 |        0 |       0 |       0 | 1-90              
  ...ntContract.ts |     100 |      100 |     100 |     100 |                   
  ...tGenerator.ts |   97.43 |    92.59 |     100 |   97.43 | 92-93             
  ...okTriggers.ts |   47.39 |     61.9 |   66.66 |   47.39 | ...51,253,299-304 
  ...igBoundary.ts |       0 |        0 |       0 |       0 | 1                 
  ...okTriggers.ts |   96.09 |    84.37 |     100 |   96.09 | ...22,161,208,250 
  logger.ts        |   78.22 |    80.19 |   94.44 |   78.22 | ...56-470,513-525 
  prompts.ts       |   84.36 |    63.29 |    91.3 |   84.36 | ...60,563,624-625 
  subagentTypes.ts |   83.11 |    68.42 |   77.77 |   83.11 | ...03-304,319-320 
  tokenLimits.ts   |     100 |      100 |     100 |     100 |                   
  ...erContract.ts |     100 |      100 |     100 |     100 |                   
  turn.ts          |     100 |      100 |     100 |     100 |                   
 ...re/compression |   29.71 |    33.33 |   14.28 |   29.71 |                   
  ...nDirective.ts |    6.25 |      100 |       0 |    6.25 | 22-62             
  types.ts         |   34.96 |    33.33 |   16.66 |   34.96 | ...20-421,434-436 
 src/debug         |   61.53 |        0 |       0 |   61.53 |                   
  ...ionManager.ts |     100 |      100 |     100 |     100 |                   
  DebugLogger.ts   |     100 |      100 |     100 |     100 |                   
  FileOutput.ts    |     100 |      100 |     100 |     100 |                   
  ...ionManager.ts |       0 |        0 |       0 |       0 | 1-6               
  ...FileOutput.ts |       0 |        0 |       0 |       0 | 1-6               
  index.ts         |     100 |      100 |     100 |     100 |                   
  types.ts         |       0 |        0 |       0 |       0 | 1                 
 src/filters       |   97.79 |    95.58 |     100 |   97.79 |                   
  EmojiFilter.ts   |   97.79 |    95.58 |     100 |   97.79 | ...55-156,363-364 
 src/hooks         |    84.3 |    85.37 |   82.08 |    84.3 |                   
  errors.ts        |     100 |      100 |     100 |     100 |                   
  ...Aggregator.ts |   90.55 |    81.33 |    87.5 |   90.55 | ...58,377,379,381 
  ...sContracts.ts |       0 |        0 |       0 |       0 | 1                 
  ...entHandler.ts |   91.43 |     87.3 |   93.75 |   91.43 | ...50,782-788,833 
  hookPlanner.ts   |   98.79 |    93.33 |     100 |   98.79 | 103               
  hookRegistry.ts  |   97.19 |    88.31 |     100 |   97.19 | ...97,399,401,403 
  hookRunner.ts    |   84.88 |    87.14 |   86.95 |   84.88 | ...37-439,502-505 
  hookSystem.ts    |    64.2 |    88.88 |      65 |    64.2 | ...49-351,364-366 
  ...Translator.ts |   94.11 |    75.67 |     100 |   94.11 | ...68,479,524,529 
  ...Validators.ts |    92.4 |    89.83 |     100 |    92.4 | 57-59,78-80       
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...ssion-hook.ts |   88.88 |    33.33 |     100 |   88.88 | 24,30             
  trustedHooks.ts  |   20.77 |        0 |       0 |   20.77 | ...6,82-90,96-109 
  types.ts         |   63.63 |    89.13 |   60.71 |   63.63 | ...08-509,520-521 
 ...oks/test-utils |       0 |        0 |       0 |       0 |                   
  ...igWithHook.ts |       0 |        0 |       0 |       0 | 1-137             
 src/interfaces    |       0 |        0 |       0 |       0 |                   
  index.ts         |       0 |        0 |       0 |       0 |                   
  ....interface.ts |       0 |        0 |       0 |       0 |                   
 src/llm-types     |   92.44 |    90.72 |   98.46 |   92.44 |                   
  afcHistory.ts    |   79.26 |    68.96 |     100 |   79.26 | ...99-100,102-103 
  ...ssageInput.ts |   86.09 |     86.2 |   97.29 |   86.09 | ...61-462,489-490 
  finishReasons.ts |   97.56 |    83.33 |     100 |   97.56 | 153-154           
  geminiContent.ts |       0 |        0 |       0 |       0 |                   
  grounding.ts     |       0 |        0 |       0 |       0 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  jsonSchema.ts    |     100 |      100 |     100 |     100 |                   
  modelEnvelope.ts |     100 |      100 |     100 |     100 |                   
  modelRequest.ts  |       0 |        0 |       0 |       0 |                   
  ...erApiError.ts |     100 |      100 |     100 |     100 |                   
  ...Embeddings.ts |       0 |        0 |       0 |       0 |                   
  toolCall.ts      |     100 |    98.14 |     100 |     100 | 216               
  ...eclaration.ts |     100 |      100 |     100 |     100 |                   
 src/models        |   89.01 |       90 |   92.68 |   89.01 |                   
  hydration.ts     |    47.1 |    64.28 |      50 |    47.1 | ...09-110,180-260 
  index.ts         |     100 |      100 |     100 |     100 |                   
  profiles.ts      |     100 |      100 |     100 |     100 |                   
  ...ntegration.ts |   95.34 |    89.74 |     100 |   95.34 | ...36-137,200-201 
  registry.ts      |   92.76 |    89.06 |      96 |   92.76 | ...72-273,399-403 
  schema.ts        |     100 |      100 |     100 |     100 |                   
  transformer.ts   |     100 |      100 |     100 |     100 |                   
 src/parsers       |   80.75 |    80.71 |   92.85 |   80.75 |                   
  ...CallParser.ts |   84.59 |     80.4 |    92.3 |   84.59 | ...09-810,813-814 
  ...rg-parsing.ts |   83.37 |    85.71 |   90.47 |   83.37 | ...23-425,501-502 
  ...ll-helpers.ts |   73.94 |     79.5 |   92.85 |   73.94 | ...07-508,514-535 
  ...rser-utils.ts |      76 |    73.33 |     100 |      76 | ...09-110,114-119 
 src/policy        |   73.02 |    76.19 |   88.46 |   73.02 |                   
  config.ts        |   68.24 |    77.19 |   86.36 |   68.24 | ...29,385,462-463 
  index.ts         |     100 |      100 |     100 |     100 |                   
  policy-engine.ts |     100 |      100 |     100 |     100 |                   
  ...cy-helpers.ts |   88.88 |    66.66 |     100 |   88.88 | 31-39             
  ...-stringify.ts |     100 |      100 |     100 |     100 |                   
  toml-loader.ts   |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
  utils.ts         |     100 |      100 |     100 |     100 |                   
 src/prompt-config |   83.12 |    86.82 |   83.57 |   83.12 |                   
  ...lateEngine.ts |    94.7 |    89.24 |     100 |    94.7 | ...32-435,446-449 
  index.ts         |       0 |      100 |     100 |       0 | 5-42              
  prompt-cache.ts  |    99.1 |    97.43 |     100 |    99.1 | 236-237           
  ...st-helpers.ts |   77.14 |    42.85 |     100 |   77.14 | ...32,42-43,52-53 
  ...-installer.ts |   85.81 |    82.92 |   92.85 |   85.81 | ...23-827,834-835 
  prompt-loader.ts |    90.9 |    92.56 |   92.85 |    90.9 | ...13-530,540-541 
  ...t-resolver.ts |   50.38 |       84 |      50 |   50.38 | ...22-423,428-527 
  ...pt-service.ts |   85.32 |    83.18 |   80.95 |   85.32 | ...28,545-552,583 
  ...delegation.ts |   93.54 |     90.9 |     100 |   93.54 | 34-35             
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...onfig/defaults |   56.38 |    46.03 |   85.41 |   56.38 |                   
  core-defaults.ts |      48 |     41.5 |   78.57 |      48 | ...55,365,371-379 
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...est-loader.ts |   81.81 |       80 |     100 |   81.81 | ...02-108,116-120 
  ...t-warnings.ts |    92.3 |    33.33 |     100 |    92.3 | 18-19             
  ...r-defaults.ts |   52.51 |    35.29 |   84.61 |   52.51 | ...24,334,340-345 
  ...e-defaults.ts |     100 |      100 |     100 |     100 |                   
  tool-defaults.ts |   55.74 |     42.3 |   84.61 |   55.74 | ...82-283,295-300 
 ...nfig/installer |   90.88 |    85.31 |     100 |   90.88 |                   
  ...operations.ts |   82.53 |    80.39 |     100 |   82.53 | ...81-285,301-302 
  ...resolution.ts |   96.63 |    92.59 |     100 |   96.63 | ...70-271,317-318 
  ...tory-utils.ts |   95.42 |    90.38 |     100 |   95.42 | ...14-117,154,175 
  file-writer.ts   |   89.47 |    76.66 |     100 |   89.47 | ...96,116,121-122 
  ...operations.ts |   97.46 |    94.44 |     100 |   97.46 | 48-49             
  ...-expansion.ts |   85.82 |    78.72 |     100 |   85.82 | ...66-167,169-170 
 ...onfig/resolver |   36.86 |    60.86 |   51.85 |   36.86 |                   
  ...ry-scanner.ts |    4.04 |      100 |       0 |    4.04 | ...98-159,163-207 
  fs-adapter.ts    |   39.06 |    66.66 |      50 |   39.06 | ...37,42-47,51-88 
  name-utils.ts    |   71.69 |       60 |   78.57 |   71.69 | ...03-204,208-218 
 src/prompts       |      30 |      100 |      25 |      30 |                   
  mcp-prompts.ts   |   28.57 |      100 |       0 |   28.57 | 11-15             
  ...t-registry.ts |   30.23 |      100 |   28.57 |   30.23 | ...43,49-56,69-74 
 src/recording     |    90.2 |    86.23 |   98.09 |    90.2 |                   
  ...ntegration.ts |    83.9 |       75 |     100 |    83.9 | ...31-132,143-144 
  ReplayEngine.ts  |   95.78 |    91.08 |     100 |   95.78 | ...37-342,502-509 
  ...nDiscovery.ts |   91.62 |    87.75 |     100 |   91.62 | ...44-345,360-361 
  ...ockManager.ts |   86.24 |    83.33 |     100 |   86.24 | ...18,233,260-261 
  ...ingService.ts |   82.97 |    92.45 |   95.65 |   82.97 | ...57,390-391,395 
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...st-helpers.ts |   91.12 |       90 |   92.85 |   91.12 | 190-200,227-230   
  resumeSession.ts |   93.19 |    89.65 |     100 |   93.19 | ...10-215,246-247 
  ...eanupUtils.ts |      90 |    69.23 |     100 |      90 | ...40-241,267,280 
  ...Management.ts |   88.23 |    85.71 |     100 |   88.23 | 94,108-112        
  types.ts         |       0 |        0 |       0 |       0 |                   
 src/resources     |   95.23 |     92.3 |     100 |   95.23 |                   
  ...e-registry.ts |   95.23 |     92.3 |     100 |   95.23 | 34-35             
 src/runtime       |   85.81 |    89.19 |      82 |   85.81 |                   
  ...imeContext.ts |     100 |      100 |     100 |     100 |                   
  ...timeLoader.ts |   86.85 |    73.68 |   81.81 |   86.85 | ...14,218,244-247 
  ...ntimeState.ts |   95.66 |    90.66 |     100 |   95.66 | ...03-504,544-545 
  ...ionContext.ts |   83.54 |    93.33 |   71.42 |   83.54 | ...55-156,167-174 
  ...imeContext.ts |   75.86 |    97.82 |   63.33 |   75.86 | ...03-308,310-317 
  index.ts         |       0 |        0 |       0 |       0 | 1-19              
  ...imeContext.ts |      70 |       90 |     100 |      70 | 88-108            
  ...meAdapters.ts |    90.9 |    93.93 |   93.75 |    90.9 | 82-88,93-97       
  ...ateFactory.ts |     100 |    97.14 |     100 |     100 | 130               
  ...imeAdapter.ts |   80.55 |    85.71 |   88.88 |   80.55 | 62-69,84-85,88-93 
 ...time/contracts |       0 |        0 |       0 |       0 |                   
  ...lureReason.ts |       0 |        0 |       0 |       0 | 1                 
  ...kContracts.ts |       0 |        0 |       0 |       0 | 1                 
  ...ningOutput.ts |       0 |        0 |       0 |       0 | 1                 
  ...torFactory.ts |       0 |        0 |       0 |       0 | 1                 
  RuntimeModel.ts  |       0 |        0 |       0 |       0 | 1                 
  ...meProvider.ts |       0 |        0 |       0 |       0 | 1                 
  ...oviderChat.ts |       0 |        0 |       0 |       0 | 1                 
  ...derManager.ts |       0 |        0 |       0 |       0 | 1                 
  ...eTokenizer.ts |       0 |        0 |       0 |       0 | 1                 
  ...zerFactory.ts |       0 |        0 |       0 |       0 | 1                 
  ...tryContext.ts |       0 |        0 |       0 |       0 | 1                 
  index.ts         |       0 |        0 |       0 |       0 | 1                 
 ...runtime/errors |   94.87 |    85.71 |   66.66 |   94.87 |                   
  ...viderError.ts |     100 |      100 |     100 |     100 |                   
  index.ts         |       0 |        0 |       0 |       0 | 1-14              
 src/safety        |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  pathValidator.ts |     100 |      100 |     100 |     100 |                   
 src/scheduler     |      90 |       80 |      50 |      90 |                   
  liveOutput.ts    |     100 |      100 |     100 |     100 |                   
  types.ts         |       0 |        0 |       0 |       0 | 1                 
 src/services      |   84.74 |    86.28 |   88.83 |   84.74 |                   
  ...ardService.ts |   94.23 |    93.75 |     100 |   94.23 | 70,74-75          
  ...utoTrigger.ts |   97.33 |    95.83 |     100 |   97.33 | 127-128           
  ...askManager.ts |   95.81 |    93.93 |     100 |   95.81 | 151-157,365-366   
  ...derService.ts |   98.98 |    97.05 |     100 |   98.98 | 173               
  ...y-analyzer.ts |   83.51 |    79.85 |   87.09 |   83.51 | ...13-641,647-648 
  ...extManager.ts |     100 |    96.29 |     100 |     100 | 63                
  ...nitization.ts |    98.7 |    96.87 |     100 |    98.7 | 172-173           
  ...eryService.ts |     100 |      100 |     100 |     100 |                   
  ...temService.ts |     100 |      100 |     100 |     100 |                   
  ...ts-service.ts |      50 |      100 |       0 |      50 | 41-42,48-49       
  gitService.ts    |   86.72 |    86.95 |      80 |   86.72 | ...34-137,141-145 
  index.ts         |       0 |        0 |       0 |       0 | 1-23              
  ...ionService.ts |   96.43 |    95.08 |     100 |   96.43 | ...27-428,438-439 
  ...pExecution.ts |   88.42 |    78.57 |   83.33 |   88.42 | 65-66,92-100      
  ...lCpHelpers.ts |   87.83 |    87.75 |     100 |   87.83 | ...91,194,253-259 
  ...ionService.ts |   71.21 |    88.23 |    62.5 |   71.21 | ...83-306,365-378 
  ...utionTypes.ts |       0 |        0 |       0 |       0 | 1                 
  ...lExitGuard.ts |     100 |      100 |     100 |     100 |                   
  ...utputUtils.ts |   95.65 |    95.23 |     100 |   95.65 | 34-35             
  ...rocessKill.ts |   88.57 |    88.88 |     100 |   88.57 | 38-41             
  ...yExecution.ts |   96.15 |    93.33 |     100 |   96.15 | 110-111,132-134   
  ...PtyHelpers.ts |   87.03 |    76.19 |    87.5 |   87.03 | ...22,153-154,210 
  ...yLifecycle.ts |   87.68 |    78.12 |   94.73 |   87.68 | ...21,324,378-380 
  shellPtyState.ts |       0 |        0 |       0 |       0 | 1                 
  ...xt-tracker.ts |   94.87 |    88.88 |   85.71 |   94.87 | 54-55             
  ...er-service.ts |       0 |        0 |       0 |       0 | 1-161             
  ...er-service.ts |   68.47 |    48.48 |      80 |   68.47 | ...85-289,311-314 
 ...rvices/history |   83.97 |    87.01 |   87.83 |   83.97 |                   
  ...Converters.ts |    87.7 |    86.33 |      84 |    87.7 | ...50,427-433,491 
  HistoryEvents.ts |       0 |        0 |       0 |       0 |                   
  ...oryService.ts |   85.99 |    90.36 |   86.79 |   85.99 | ...16-717,796-797 
  IContent.ts      |   95.29 |    87.87 |     100 |   95.29 | 287-288,313-314   
  ...calToolIds.ts |   96.87 |    94.11 |     100 |   96.87 | 36-37             
  ...ebugLogger.ts |   62.41 |       68 |   85.71 |   62.41 | ...33-145,158-162 
  ...Validation.ts |     100 |      100 |     100 |     100 |                   
  ...CloneUtils.ts |   73.07 |    88.46 |   83.33 |   73.07 | ...98-101,106-118 
  ...textWindow.ts |   91.42 |    55.55 |     100 |   91.42 | 59,61-62          
  ...ryCuration.ts |     100 |      100 |     100 |     100 |                   
  ...EventTypes.ts |       0 |        0 |       0 |       0 |                   
  ...erPipeline.ts |     100 |      100 |     100 |     100 |                   
  historyQuery.ts  |   63.63 |       50 |     100 |   63.63 | 27-30             
  ...Estimation.ts |   44.68 |    82.14 |      50 |   44.68 | ...87-196,202-251 
  ...zerAdapter.ts |     100 |     87.5 |     100 |     100 | 73                
  ...malization.ts |    91.7 |    87.12 |     100 |    91.7 | ...26-431,477-485 
  ...oolPairing.ts |   98.59 |     87.5 |     100 |   98.59 | 103               
 src/skills        |   74.53 |    80.31 |   77.77 |   74.53 |                   
  ...lDiscovery.ts |     100 |      100 |     100 |     100 |                   
  skillLoader.ts   |   59.42 |    78.94 |   76.92 |   59.42 | ...16-351,363-373 
  skillManager.ts  |   89.68 |    80.88 |   77.27 |   89.68 | ...94-395,401-402 
 src/storage       |   98.69 |    96.87 |     100 |   98.69 |                   
  ...FileWriter.ts |     100 |      100 |     100 |     100 |                   
  ...nceService.ts |   98.65 |    96.87 |     100 |   98.65 | 291-292           
  ...ey-storage.ts |     100 |      100 |     100 |     100 |                   
  secure-store.ts  |     100 |      100 |     100 |     100 |                   
  sessionTypes.ts  |     100 |      100 |     100 |     100 |                   
 src/telemetry     |   15.45 |        0 |       0 |   15.45 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  ...-exporters.ts |       0 |        0 |       0 |       0 | 1-6               
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...t.circular.ts |       0 |        0 |       0 |       0 | 1-17              
  ...t.circular.ts |       0 |        0 |       0 |       0 | 1-110             
  loggers.ts       |     100 |      100 |     100 |     100 |                   
  metrics.ts       |     100 |      100 |     100 |     100 |                   
  sdk.ts           |     100 |      100 |     100 |     100 |                   
  ...l-decision.ts |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
  uiTelemetry.ts   |     100 |      100 |     100 |     100 |                   
 src/test-utils    |   53.38 |    60.56 |   23.07 |   53.38 |                   
  config.ts        |   83.45 |    88.23 |   20.83 |   83.45 | ...,94-99,176-179 
  index.ts         |       0 |        0 |       0 |       0 | 1-9               
  mock-tool.ts     |       0 |        0 |       0 |       0 | 1-159             
  ...aceContext.ts |       0 |        0 |       0 |       0 | 1-32              
  ...allOptions.ts |   81.62 |    51.61 |   54.54 |   81.62 | ...83,196,225-228 
  runtime.ts       |   47.03 |    33.33 |    8.82 |   47.03 | ...17-279,287-350 
  tools.ts         |   45.94 |    81.81 |   38.09 |   45.94 | ...15-227,230-237 
 src/todo          |   12.86 |      100 |       0 |   12.86 |                   
  todoFormatter.ts |   12.86 |      100 |       0 |   12.86 | ...03,206-219,222 
 src/tools         |   81.61 |    81.15 |      92 |   81.61 |                   
  ...ey-storage.ts |   81.61 |    81.15 |      92 |   81.61 | ...31-436,445-450 
 ...tools-adapters |   48.51 |    75.53 |   39.41 |   48.51 |                   
  ...iceAdapter.ts |   61.22 |    83.33 |    62.5 |   61.22 | ...52,55-60,65-68 
  ...iceAdapter.ts |   27.58 |      100 |      40 |   27.58 | 21-26,29-37,40-45 
  ...iceAdapter.ts |   22.58 |      100 |      40 |   22.58 | 18-25,28-43,46-47 
  ...iceAdapter.ts |   13.95 |      100 |       0 |   13.95 | ...76,79-80,83-98 
  ...BusAdapter.ts |   73.07 |     90.9 |   81.81 |   73.07 | ...02-126,145-151 
  ...iceAdapter.ts |      60 |      100 |       0 |      60 | ...27,36-37,40-41 
  ...iceAdapter.ts |   53.84 |      100 |      40 |   53.84 | 17-18,21-22,26-27 
  ...ostAdapter.ts |   19.33 |      100 |    8.69 |   19.33 | ...25-241,244-246 
  ...iceAdapter.ts |   15.58 |      100 |       0 |   15.58 | ...9,82-84,87-102 
  ...iceAdapter.ts |     100 |      100 |     100 |     100 |                   
  ...iceAdapter.ts |   55.03 |     69.9 |   68.96 |   55.03 | ...48-891,896-899 
  ...iceAdapter.ts |   76.66 |    66.66 |   57.14 |   76.66 | 49-53,56-57       
  ...ostAdapter.ts |   30.18 |      100 |   13.04 |   30.18 | ...83-189,192-193 
  ...ageAdapter.ts |   46.15 |      100 |       0 |   46.15 | ...33,36-37,40-41 
  ...ostAdapter.ts |   67.74 |      100 |   54.54 |   67.74 | ...57,60-61,64-65 
  ...iceHelpers.ts |   57.71 |       50 |      70 |   57.71 | ...95-196,200-201 
  index.ts         |     100 |      100 |     100 |     100 |                   
 src/utils         |   84.29 |    86.62 |   85.59 |   84.29 |                   
  LruCache.ts      |    82.6 |      100 |   71.42 |    82.6 | 29-30,33-34       
  asyncIterator.ts |   73.07 |    84.61 |   66.66 |   73.07 | ...71,75-86,93-94 
  bfsFileSearch.ts |   93.61 |    92.85 |     100 |   93.61 | 36-44             
  browser.ts       |    8.69 |      100 |       0 |    8.69 | 17-53             
  bunPtyAdapter.ts |   88.76 |    84.78 |   84.21 |   88.76 | ...27-532,551-554 
  channel.ts       |     100 |      100 |     100 |     100 |                   
  ...pointUtils.ts |      95 |    91.66 |     100 |      95 | 142-149           
  debugLogger.ts   |     100 |      100 |     100 |     100 |                   
  delay.ts         |     100 |      100 |     100 |     100 |                   
  editor.ts        |   95.47 |    90.38 |    90.9 |   95.47 | ...38-239,241-242 
  ...entContext.ts |     100 |      100 |     100 |     100 |                   
  errorParsing.ts  |   92.12 |     87.5 |   95.65 |   92.12 | ...87,218,302-303 
  ...rReporting.ts |   82.35 |       75 |     100 |   82.35 | ...40-142,150-155 
  errors.ts        |   70.12 |     92.3 |   31.25 |   70.12 | ...27-128,189-213 
  events.ts        |   67.54 |      100 |    64.7 |   67.54 | ...41-346,352-355 
  exitCodes.ts     |     100 |      100 |     100 |     100 |                   
  ...sionLoader.ts |   80.98 |    63.88 |   92.85 |   80.98 | ...70-171,224-232 
  fetch.ts         |   24.32 |        0 |       0 |   24.32 | 23-28,32-86,89-90 
  fileDiffUtils.ts |   94.87 |     90.9 |     100 |   94.87 | 25-26             
  fileUtils.ts     |   93.83 |    90.06 |   95.23 |   93.83 | ...00,469,503-509 
  formatters.ts    |   18.18 |      100 |       0 |   18.18 | 8-16              
  ...eUtilities.ts |   91.17 |    80.39 |   94.11 |   91.17 | ...77-381,415-425 
  ...rStructure.ts |   95.57 |    94.59 |     100 |   95.57 | ...15-216,376-381 
  getPty.ts        |   70.83 |       75 |      50 |   70.83 | 43-49             
  ...noreParser.ts |     100 |      100 |     100 |     100 |                   
  ...ineChanges.ts |       0 |        0 |       0 |       0 | 1-348             
  gitUtils.ts      |   42.55 |    71.42 |      50 |   42.55 | 32-33,40-44,53-80 
  googleErrors.ts  |   77.01 |    73.21 |     100 |   77.01 | ...08,346-347,364 
  ...uotaErrors.ts |   94.94 |    87.25 |     100 |   94.94 | ...76-277,315-316 
  ide-trust.ts     |      60 |      100 |       0 |      60 | 14-15             
  ...rePatterns.ts |     100 |    96.55 |     100 |     100 | 257               
  ...ionManager.ts |     100 |    88.88 |     100 |     100 | 24                
  ...edit-fixer.ts |       0 |        0 |       0 |       0 | 1-157             
  ...yDiscovery.ts |   84.11 |    79.85 |   82.35 |   84.11 | ...76-777,791-802 
  ...tProcessor.ts |   97.19 |    91.86 |   94.44 |   97.19 | ...11-312,406-407 
  ...Inspectors.ts |       0 |        0 |       0 |       0 | 1-39              
  output-format.ts |   64.22 |       92 |      80 |   64.22 | 239-240,250-295   
  package.ts       |     100 |      100 |     100 |     100 |                   
  ...erCoercion.ts |   80.89 |       80 |     100 |   80.89 | ...47-348,351-352 
  partUtils.ts     |   97.29 |    95.55 |     100 |   97.29 | 53-54             
  pathReader.ts    |   22.58 |      100 |       0 |   22.58 | ...22,28-29,41-60 
  paths.ts         |   83.58 |    84.33 |   78.94 |   83.58 | ...91-292,307-317 
  ...rDetection.ts |   52.05 |    78.94 |   83.33 |   52.05 | ...03-104,114-115 
  refusalNotice.ts |     100 |      100 |     100 |     100 |                   
  ...archTarget.ts |   89.58 |    69.23 |     100 |   89.58 | 45-47,65-66       
  retry.ts         |   83.76 |    86.53 |   92.59 |   83.76 | ...85-988,993-994 
  ...thResolver.ts |     100 |      100 |     100 |     100 |                   
  runtime.ts       |     100 |      100 |     100 |     100 |                   
  ...nStringify.ts |     100 |      100 |     100 |     100 |                   
  sanitization.ts  |     100 |      100 |     100 |     100 |                   
  ...aValidator.ts |   91.22 |    76.36 |     100 |   91.22 | ...51-352,368-379 
  ...r-launcher.ts |   91.15 |    81.81 |     100 |   91.15 | ...97,215,217-218 
  session.ts       |     100 |      100 |     100 |     100 |                   
  shell-parser.ts  |   87.64 |    80.53 |     100 |   87.64 | ...99-600,669-670 
  shell-utils.ts   |   85.99 |     92.7 |      88 |   85.99 | ...51-652,814-822 
  ...Completion.ts |   94.21 |    92.15 |     100 |   94.21 | 71-77             
  stdio.ts         |   83.83 |    56.52 |     100 |   83.83 | ...25-129,138-142 
  ...dleTimeout.ts |   98.48 |    94.59 |     100 |   98.48 | 131-132           
  ...amWatchdog.ts |     100 |    97.87 |   88.23 |     100 | 106               
  summarizer.ts    |   98.14 |       90 |     100 |   98.14 | 98                
  ...emEncoding.ts |   94.96 |    88.88 |     100 |   94.96 | ...10,142-143,197 
  terminal.ts      |   34.09 |      100 |       0 |   34.09 | ...55,58-59,62-66 
  ...Serializer.ts |    98.2 |    92.75 |     100 |    98.2 | ...,98-99,181-183 
  testUtils.ts     |      50 |      100 |   33.33 |      50 | ...47,53-58,64-66 
  textUtils.ts     |    12.5 |      100 |       0 |    12.5 | 15-34             
  thoughtUtils.ts  |     100 |      100 |     100 |     100 |                   
  tool-utils.ts    |   68.64 |    77.77 |      80 |   68.64 | ...34-135,156-180 
  ...putLimiter.ts |   95.14 |    81.63 |     100 |   95.14 | ...5-66,78-79,113 
  unicodeUtils.ts  |     100 |      100 |     100 |     100 |                   
  ...untManager.ts |   88.52 |    86.48 |     100 |   88.52 | ...,83-88,104-106 
  version.ts       |     100 |      100 |     100 |     100 |                   
  ...aceContext.ts |   96.85 |    95.23 |    92.3 |   96.85 | 95-96,110-111     
 ...ils/filesearch |   89.81 |    91.52 |   94.59 |   89.81 |                   
  crawlCache.ts    |     100 |      100 |     100 |     100 |                   
  crawler.ts       |    84.9 |    85.71 |   66.66 |    84.9 | ...12-114,128-133 
  fileSearch.ts    |   86.48 |    89.21 |     100 |   86.48 | ...11-312,360-361 
  ignore.ts        |     100 |      100 |     100 |     100 |                   
  result-cache.ts  |     100 |      100 |     100 |     100 |                   
-------------------|---------|----------|---------|---------|-------------------

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

CodeRabbit review findings remediated:

1. lineSpan() lineless comment suppression: Added a 'lineless' flag to
   the span object. When start/end line numbers are missing (<=0), the
   span is marked lineless so sameCommentSpan() never matches it. This
   prevents distinct lineless findings on the same file from being
   silently suppressed by IoU overlap dedup.

2. getAuthenticated() fallback bot login: When the authenticated-user
   API call fails, fall back to a configurable OCR_BOT_LOGIN repository
   variable so dedup (exact + IoU) remains functional instead of
   silently posting duplicate comments on every run.

3. --background prompt injection delimiter: Wrapped the business context
   text in BEGIN/END delimiters to clearly separate untrusted PR title/
   body from the LLM prompt, mitigating prompt injection from fork PRs.

Test updates:
- Updated lineSpan assertions to include the new 'lineless' field.
- Added test for lineless span when line numbers are missing.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (2)
scripts/tests/ocr-review-workflow-features.test.js (2)

525-538: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

Cover the successful-create race.

The test only verifies re-fetching after failed creation. Add coverage requiring the successful createComment path to re-fetch and reconcile marker comments as well.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/tests/ocr-review-workflow-features.test.js` around lines 525 - 538,
The test for reconcileMarkerComment must also cover the successful createComment
path. Extend the relevant source assertions in the reconcileMarkerComment test
to require that successful creation re-fetches marker comments and reconciles
against the refreshed results, while preserving the existing failed-creation
coverage.

491-517: 🗄️ Data Integrity & Integration | 🔵 Trivial | ⚡ Quick win

Cover fallback duplicate accounting behavior.

These assertions only verify that outputs exist. Add a regression check ensuring a comment rediscovered after batch uncertainty is not counted as a newly posted inline comment.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/tests/ocr-review-workflow-features.test.js` around lines 491 - 517,
Extend the posting-script tests around commentsSkipped to cover fallback
duplicate accounting after batch uncertainty. Add a regression assertion that a
rediscovered comment is excluded from newly posted inline comments and counted
as skipped, using the existing postScript test setup and relevant
duplicate-handling symbols.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/ocr-review.yml:
- Around line 1624-1628: Update the successful create path in
.github/workflows/ocr-review.yml around issues.createComment to re-fetch and
reconcile marker comments before returning, matching the existing
failure-recovery behavior and preventing duplicate sticky summaries. Add a
regression assertion in scripts/tests/ocr-review-workflow-features.test.js
covering reconciliation after a successful create.
- Around line 1653-1664: Update the structured output accounting around
commentsTotal and commentsInline so inline comments rediscovered after fallback
batch uncertainty are not counted as newly posted; classify them through the
existing skipped or uncertain accounting instead. In
scripts/tests/ocr-review-workflow-features.test.js lines 491-517, strengthen
coverage to assert the fallback duplicate counts and ensure comments_inline
excludes those rediscovered comments.

---

Nitpick comments:
In `@scripts/tests/ocr-review-workflow-features.test.js`:
- Around line 525-538: The test for reconcileMarkerComment must also cover the
successful createComment path. Extend the relevant source assertions in the
reconcileMarkerComment test to require that successful creation re-fetches
marker comments and reconciles against the refreshed results, while preserving
the existing failed-creation coverage.
- Around line 491-517: Extend the posting-script tests around commentsSkipped to
cover fallback duplicate accounting after batch uncertainty. Add a regression
assertion that a rediscovered comment is excluded from newly posted inline
comments and counted as skipped, using the existing postScript test setup and
relevant duplicate-handling symbols.
🪄 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 Plus

Run ID: cad0604d-7d6f-4a99-8509-9ac316c6b8d3

📥 Commits

Reviewing files that changed from the base of the PR and between 7c7dd21 and c02396f.

📒 Files selected for processing (2)
  • .github/workflows/ocr-review.yml
  • scripts/tests/ocr-review-workflow-features.test.js

Comment thread .github/workflows/ocr-review.yml
Comment thread .github/workflows/ocr-review.yml
Fixes #2670)

Address CodeRabbit second-pass review findings:

1. Fallback dedup over-reporting: When a comment was rediscovered after
   batch post uncertainty (existingInlineKeys match), it was incorrectly
   counted via postedInline += 1, inflating comments_inline. Now correctly
   increments skippedExactHistoryCount instead.

2. Successful-create marker reconciliation: The createComment success path
   did not reconcile concurrent duplicate marker comments. Now calls
   reconcileMarkerComment(null) after a successful create to clean up any
   duplicates posted between the initial pre-fetch and the create call.

Both fixes include regression tests.
@acoliver
acoliver merged commit d7ac718 into main Jul 25, 2026
36 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Adopt upstream OCR action features we lack (--background, llm_extra_body, incremental, structured outputs, configurable timeout)

1 participant