Skip to content

Complete OS-standard path migration for OAuth and global state (Fixes #2606)#2646

Merged
acoliver merged 6 commits into
mainfrom
issue2606
Jul 23, 2026
Merged

Complete OS-standard path migration for OAuth and global state (Fixes #2606)#2646
acoliver merged 6 commits into
mainfrom
issue2606

Conversation

@acoliver

@acoliver acoliver commented Jul 23, 2026

Copy link
Copy Markdown
Collaborator

TLDR

Completes the remaining OS-standard global-path migration by making Storage the single authority for config, data, cache, and runtime-state paths. This moves active OAuth fallback storage and locks, global memory, user extensions, A2A state, sandbox grants, telemetry, and maintainer scripts onto the canonical path contract while preserving workspace-local .llxprt behavior and bounded legacy migration inputs.

The change also adds behavioral reconciliation for memory previously written to the data directory, safety-first advisory locks, atomic no-overwrite prompt backups, and repository guards that prevent legacy global path algorithms from returning.

Dive Deeper

Canonical path authority

  • Adds typed Storage helpers for global memory, user extensions, OAuth locks, and validated platform/override resolution.
  • Honors LLXPRT_CONFIG_HOME, LLXPRT_DATA_HOME, LLXPRT_CACHE_HOME, and LLXPRT_LOG_HOME with documented precedence and absolute-path validation.
  • Routes SecureStore encrypted fallback through the canonical data directory at construction time.
  • Uses the canonical config category for user-editable global memory and the data category for user extensions.

OAuth and credential safety

  • Requires OAuth lock-directory injection into KeyringTokenStore and supplies the canonical runtime-state path from the core composition root.
  • Keeps locks intentionally small and conservative: O_EXCL acquisition, bounded waiting, token-aware release, and no PID/age reclaim that could unlink a replacement owner's lock.
  • Removes the obsolete plaintext OAuth verification script and updates error guidance to describe the OS keyring and encrypted fallback.

Migration and reconciliation

  • Preserves the one-time legacy global migration while validating override paths before suppressing migration.
  • Reconciles default global memory files previously written under data into config without deleting or overwriting user content.
  • Uses per-file identity markers, archival evidence, optimistic revalidation, and safe deferral when concurrent writers prevent publication.
  • Preserves workspace-local .llxprt files and excludes surviving legacy global memory from workspace discovery.

Extensions, A2A, and sandboxing

  • Aligns CLI and A2A user extension discovery on the canonical data root while retaining read-only Gemini compatibility discovery.
  • Moves A2A settings and environment fallback resolution to Storage and adds Bun preload isolation coverage.
  • Supplies canonical config, data, cache, and log roots to macOS Seatbelt profiles while retaining only the narrow legacy read grant required for startup migration.

Backups, tools, and maintainability

  • Makes PromptInstaller require an explicit resolved base directory.
  • Publishes verified full-tree prompt snapshots through unique no-overwrite destinations and preserves structured partial-success cleanup errors.
  • Keeps Todo storage explicit through dependency injection rather than hidden global store state.
  • Adds AST plus regex legacy-path guards, fail-closed GenAI file discovery, shell path-resolution tests, API-surface checks, and canonical application-directory documentation.
  • Raises the lint heap to 12 GB after the full repository lint reproducibly exceeded the previous 8 GB limit on the supported runtime.

Reviewer Test Plan

  1. Set temporary absolute LLXPRT_CONFIG_HOME, LLXPRT_DATA_HOME, LLXPRT_CACHE_HOME, and LLXPRT_LOG_HOME values and verify settings, global memory, extensions, SecureStore fallback, and OAuth locks appear only in their expected categories.
  2. Seed legacy global LLXPRT.md and .LLXPRT_SYSTEM files in the old data category, run startup migration, and verify config content is preserved/merged, sources are archived, and a second run converges without duplicate appends.
  3. Run two OAuth lock contenders and verify they serialize; leave an orphan lock and verify acquisition defers rather than reclaiming by PID or age.
  4. Install and discover a user extension from the canonical data extensions directory; verify a Gemini compatibility extension remains discoverable and legacy global .llxprt/extensions is not an active root.
  5. Create two prompt backups in the same clock interval and verify both complete at distinct destinations without overwriting either snapshot.
  6. On macOS, set LLXPRT_CACHE_HOME and inspect generated Seatbelt arguments to verify the canonical cache root is granted.
  7. Run the guard and shell commands listed below.

Testing Matrix

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

Local verification completed successfully:

  • npm run test
  • npm run lint
  • npm run typecheck
  • npm run format
  • npm run build
  • npm run lint:legacy-paths
  • npm run lint:genai-enclave
  • npm run lint:agents-api-surface
  • npm run test:shell
  • StepFun profile smoke using scripts/start.ts and stepfun-37

Linked issues / bugs

Fixes #2606

Summary by CodeRabbit

  • New Features
    • Standardized canonical config/data/cache/log directory resolution with override validation and stricter legacy migration behavior.
    • Added startup global-memory reconciliation (guarded by marker + locking) and improved extension discovery precedence.
    • Strengthened OAuth token coordination with token-verified advisory locks and encrypted fallback.
    • Added collision-safe prompt backup snapshots and required-path validation.
  • Documentation
    • Updated CLI and reference guides to replace legacy ~/.llxprt paths with application-directory locations and overrides.
  • Tests
    • Expanded CI/lint guards, added shell test runner, and increased coverage for storage isolation, reconciliation, locking, prompt backups, and path resolution.

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

coderabbitai Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

This large PR implements a repository-wide migration from legacy ~/.llxprt-anchored paths to a centralized OS-standard directory contract (config/data/cache/log). It adds a shared path-resolver, refactors OAuth token storage/locking, extension discovery, memory/todo persistence, CLI startup migration, sandbox profiles, the prompt installer's backup mechanism, a new legacy-path lint guard, shell path helpers, and updates extensive documentation.

Changes

OS-Standard Path Migration

Layer / File(s) Summary
Shared path-resolver and Storage core
packages/storage/src/config/path-resolver.ts, packages/storage/src/config/storage.ts, scripts/telemetry*.ts/js, scripts/sandbox_command.ts, tests
A new path-resolver module centralizes env-override + platform-default resolution; Storage delegates to it for config/data/cache/log/system-settings paths, and maintainer scripts consume it directly.
OAuth token store, locks, and SecureStore fallback
packages/auth/src/keyring-token-store.ts, packages/core/src/auth-factories.ts, packages/providers/src/auth/..., packages/storage/src/secure-store/secure-store.ts
KeyringTokenStore now requires an injected lockDir and uses token-verified lock ownership (no staleMs); SecureStore's encrypted fallback and OAuth locks resolve via Storage.getGlobalDataDir()/getOAuthLocksDir().
Extension discovery multi-root precedence
packages/cli/src/config/extension*.ts, packages/a2a-server/src/config/extension*.ts
Both CLI and A2A scan workspace, canonical user, and Gemini-compat roots with workspace-before-user precedence and dedup, replacing legacy home-only discovery.
A2A settings and storage isolation
packages/a2a-server/src/config/config.ts, settings.ts, bun-preload-storage-isolation.ts
.env loading gains homeDir injection and a global config fallback; settings resolve via Storage.getGlobalSettingsPath(); a Bun preload isolates Storage roots in tests.
Global memory and Todo storage DI
packages/tools/src/tools/todo-*.ts, packages/core/src/tools-adapters/*, packages/core/src/utils/memoryDiscovery.ts, packages/tools/src/tools/memoryTool.ts
TodoStore, MemoryTool, and memory discovery now require an injected canonical data-dir resolver instead of falling back to home-directory defaults.
CLI startup migration and memory reconciliation
packages/cli/src/config/memoryReconciliation.ts, reconcileLock.ts, pathMigration.ts
Adds crash-safe, lock-coordinated reconciliation of legacy data-dir memory files into the canonical config dir, wired into startup migration results.
Sandbox profiles and seatbelt args
packages/cli/src/utils/sandbox-*.sb, sandbox-seatbelt.ts
macOS sandbox profiles grant writes to canonical dirs and read-only legacy migration access; buildSeatbeltArgs resolves dirs via Storage.
Prompt installer backup refactor
packages/core/src/prompt-config/installer/backup-operations.ts, prompt-installer.ts
Replaces backup copy/verify logic with atomic staging + exclusive publish + claim cleanup, and requires an explicit resolved baseDir.
Legacy-path lint guard
scripts/check-legacy-paths.ts, scripts/legacy-paths/*, scripts/legacy-path-allowlist.json
New regex + AST scanner detects reintroduced legacy home-anchored paths, with an allowlist and CI/lint wiring.
Genai-enclave file discovery
scripts/genai-enclave/file-discovery.ts
Extracts git-based scannable-file discovery with deletion-aware, fail-closed semantics.
Shell path helper and shell tests
shell-scripts/llxprt-paths.sh, codex-*.sh, run-shell-tests.sh
POSIX shell mirror of the path-resolver contract, applied to Codex credential scripts, plus a new shell test runner.
CI/build infra timeouts
scripts/bun-test-manifest.ts, check-agents-api-surface.mjs, run_bun_tests.ts
Adds configurable build/smoke timeouts and Bun preload support in the test manifest.
Documentation
docs/**
Replaces ~/.llxprt examples across CLI, hooks, telemetry, sandbox, and adds docs/reference/application-directories.md.

Estimated code review effort: 5 (Critical) | ~180 minutes

Possibly related issues

Possibly related PRs

Suggested labels: ci/cd, Code Quality / Modularization

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 42.11% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed Clearly summarizes the main change: repo-wide OS-standard path migration for OAuth and global state.
Description check ✅ Passed It includes TLDR, Dive Deeper, Reviewer Test Plan, Testing Matrix, and Linked issues sections, so it mostly matches the template.
Linked Issues check ✅ Passed The changes address the linked #2606 scope: canonical Storage paths, OAuth storage/locks, global memory, extensions, tests, docs, and guardrails.
Out of Scope Changes check ✅ Passed No clear unrelated code changes stand out; the extra refactors and tests support the path-migration and guardrail objectives.
📋 Issue Planner

Built with CodeRabbit's Coding Plans for faster development and fewer bugs.

View plan used: #2606

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch issue2606

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

@github-actions

github-actions Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

LLxprt PR Review – PR #2646

Issue Alignment

Strong alignment with #2606. The PR establishes Storage as the single path authority, adds typed helpers for config/data/cache/log, moves OAuth locks to the log/state category, and introduces memory reconciliation from data→config. New guard tooling (check-legacy-paths) and prompt backup atomicity directly address the issue's security and consistency requirements. Residual risk: a repo search still finds active ~/.llxprt references in production code/docs (e.g., packages/cli/src/config/yargsOptions.ts, packages/core/src/core/prompts.ts JSDoc, packages/core/src/config/*.ts, packages/tools/src/tools/memoryTool.ts tests, packages/auth/src/oauth-errors.ts, packages/settings/src/settings/registry/registry-entries-2.ts). Some are likely allowlisted, but the guard allowlist was not fully verified here.

Side Effects

  • Lock semantics changed: KeyringTokenStore drops stale-reclaim; orphaned locks now require manual cleanup. Intentionally safety-first, but a behavioral shift for OAuth concurrency.
  • PromptInstaller API break: baseDir is now required; callers must resolve through Storage/PromptService. Existing call sites were updated.
  • System settings env rename: canonical LLXPRT_SYSTEM_SETTINGS_PATH/LLXPRT_SYSTEM_DEFAULTS_PATH with legacy aliases. Docs and enterprise wrappers updated.
  • SecureStore fallback now follows Storage.getGlobalDataDir() instead of a local env-paths computation.

Code Quality

Well-structured and defensive. The shared path-resolver.ts eliminates duplication. memoryReconciliation.ts handles crash-evidence, per-file marker identity, same-path no-op, and lost-update retries. Lock and backup modules use O_EXCL, token tracking, and atomic rename with sidecar claims. Error composition via AggregateError is consistent. Minor concern: some long modules could benefit from further extraction, but readability is good.

Tests and Coverage

Coverage impact: Increase. Substantial behavioral tests added across storage, auth locks, memory reconciliation, prompt backup/publishing collisions, path delegation, and the legacy-path guard (including RED/GREEN self-test and fixture-based negatives). Tests exercise real filesystem concurrency and edge cases rather than mocking implementation details. One caveat: some suites are conditionally skipped when Bun is unavailable, which may reduce coverage in non-Bun environments.

Verdict

Ready — the implementation is comprehensive, well-tested, and closely tracks the issue requirements. Before merging, confirm that all remaining active ~/.llxprt references are either outside the guard's scanned trees or explicitly covered by scripts/legacy-path-allowlist.json, and ensure the CI legacy-paths guard passes on the merged head.

# Conflicts:
#	.github/workflows/ci.yml
#	docs/reference/profiles.md
#	scripts/check-agents-api-surface.mjs
#	scripts/tests/check-agents-api-surface.test.ts
#	scripts/tmux-script.approval-ui.json
#	scripts/tmux-script.issue2208-newlines.fake.json
#	scripts/tmux-script.slash-autocomplete.json
@github-actions

github-actions Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

OpenCodeReview — PR #2646

  • Reviewed head SHA: 1c9e4e77c92d7627f4443782d5e64a073d9113b7
  • Merge base: 5868dac618e48f54f530db85ab73879d32cddb75
  • OCR version: open-code-review v1.7.9 (a32f852) linux/amd64 built at: 2026-07-14T03:41:57Z https://github.com/alibaba/open-code-review
  • Phase: review
  • Exit code: 1
  • Run: https://github.com/vybestack/llxprt-code/actions/runs/29980125825
  • OCR failed to run or parse output.
  • Artifacts: ocr-review-output contains raw JSON, stdout, stderr, preview, phase, and exit-code diagnostics.

OCR stderr excerpt

[ocr]   ✘ file_read failed: file "packages/core/src/prompt-config/installer/prompt-installer.ts" not found: git show 1c9e4e77c92d7627f4443782d5e64a073d9113b7:packages/core/src/prompt-config/installer/prompt-installer.ts: exit status 128: fatal: path 'packages/core/src/prompt-config/installer/prompt-installer.ts' does not exist in '1c9e4e77c92d7627f4443782d5e64a073d9113b7'

[ocr]   ✘ file_read failed: file "packages/core/src/prompt-config/installer/prompt-installer.ts" not found: git show 1c9e4e77c92d7627f4443782d5e64a073d9113b7:packages/core/src/prompt-config/installer/prompt-installer.ts: exit status 128: fatal: path 'packages/core/src/prompt-config/installer/prompt-installer.ts' does not exist in '1c9e4e77c92d7627f4443782d5e64a073d9113b7'

OCR preview stderr excerpt

(empty)

@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: 7

Note

Due to the large number of review comments, Critical, Major severity comments were prioritized as inline comments.

Caution

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

⚠️ Outside diff range comments (3)
docs/debug-logging.md (1)

127-131: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Align the documented debug-log filename format.

This section says logs are named llxprt-debug-<PID>.jsonl, but the troubleshooting text at Line 271 still says debug-YYYY-MM-DD.jsonl. Keep one filename format throughout the guide.

🤖 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 `@docs/debug-logging.md` around lines 127 - 131, Update the troubleshooting
reference to use the documented llxprt-debug-<PID>.jsonl filename format instead
of debug-YYYY-MM-DD.jsonl, keeping the debug-log filename consistent throughout
the guide.
packages/a2a-server/src/config/config.ts (1)

320-346: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Keep ~/.env behind the canonical config fallback.

For a normal workspace under $HOME, Lines 333-335 select ~/.env during parent traversal, so Lines 342-345 never consider the canonical config .env. Stop the upward scan before evaluating homeDir, then check canonical config and finally homeDir/.env. Add a regression with a workspace nested beneath the injected home directory.

Proposed fix
 function findEnvFile(startDir: string, homeDir: string): string | null {
   let currentDir = path.resolve(startDir);
   let parentDir = path.resolve(startDir);
+  const resolvedHomeDir = path.resolve(homeDir);
   do {
     currentDir = parentDir;
+    if (currentDir === resolvedHomeDir) {
+      break;
+    }
     // prefer llxprt-specific .env under LLXPRT_CONFIG_DIR
🤖 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 `@packages/a2a-server/src/config/config.ts` around lines 320 - 346, Update
findEnvFile so the upward traversal stops before evaluating homeDir, preventing
~/.env from being selected during the scan. Preserve the existing order after
traversal: check Storage.getGlobalConfigDir()/.env first, then homeDir/.env; add
a regression covering a workspace nested beneath the injected home directory.
packages/core/src/utils/memoryDiscovery.ts (1)

443-501: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Asymmetric exclusion in findUpwardLlxprtFiles: direct-in-dir candidate isn't excluded like the .llxprt-nested one.

The canonical/legacy exclusion check (lines 488-496) is only applied to the .llxprt/<filename> candidate (llxprtDirPath). The direct <currentDir>/<filename> candidate (directPath, lines 468-478) has no equivalent guard, unlike searchUpwardForLlxprtMd which filters both candidate types through excludedPaths. If a JIT traversal's currentDir ever equals the canonical global memory dir (or ~/.llxprt), the direct candidate can resurface the global memory file, relying entirely on the caller's separate alreadyLoadedPaths dedup as the only safety net.

🐛 Suggested fix
       const directPath = path.join(currentDir, filename);
       checks.push(
         (async () => {
           try {
             await fs.access(directPath, fsSync.constants.R_OK);
+            if (
+              path.resolve(currentDir) === canonicalGlobalMemoryDir ||
+              path.resolve(currentDir) === legacyGlobalLlxprtDir
+            ) {
+              return null;
+            }
             return directPath;
           } catch {
             return null;
           }
         })(),
       );
🤖 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 `@packages/core/src/utils/memoryDiscovery.ts` around lines 443 - 501, Update
the directPath candidate handling in findUpwardLlxprtFiles to exclude files
whose containing directory is canonicalGlobalMemoryDir or legacyGlobalLlxprtDir,
matching the existing llxprtDirPath guard. Return null for those excluded direct
candidates while preserving discovery for all other directories.
🟡 Minor comments (23)
docs/architecture/message-bus-architecture.md-753-754 (1)

753-754: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Specify the fenced-block language.

Add text to this output-only code fence so markdownlint passes.

-```
+```text
 Testing policy: /absolute/path/to/my-policy.toml
🤖 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 `@docs/architecture/message-bus-architecture.md` around lines 753 - 754,
Specify the language on the output-only fenced code block containing “Testing
policy: /absolute/path/to/my-policy.toml” by using the text fence marker,
preserving the block’s content unchanged.

Source: Linters/SAST tools

docs/cli/context-dumping.md-85-88 (1)

85-88: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Define DUMPS before using it.

The comment documents DUMPS=<cache>/dumps but never assigns the variable, so the following commands resolve to an invalid path unless users infer and perform an undocumented setup step.

Suggested fix
-# DUMPS=<cache>/dumps — LLxprt's dumps directory (see Application Directories)
+DUMPS="${LLXPRT_CACHE_HOME:-${LLXPRT_CONFIG_HOME:-$HOME/.cache/llxprt-code}}/dumps"
 jq '.request.body' "$DUMPS/YOUR_DUMP.json" > /tmp/body.json
🤖 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 `@docs/cli/context-dumping.md` around lines 85 - 88, Update the command example
near the DUMPS comment to assign the DUMPS environment variable to the
documented cache dumps directory before jq and curl reference "$DUMPS". Preserve
the existing dump-file commands and path convention.
docs/reference/profiles.md-220-220 (1)

220-220: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Specify the fenced-block language.

Add text to the directory-tree fence so the documentation passes MD040.

Suggested fix
-```
+```text
 <config>/profiles/
🤖 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 `@docs/reference/profiles.md` at line 220, Specify the text language on the
directory-tree fenced code block in the profiles documentation by changing its
opening fence to use text, while leaving the block contents unchanged.

Source: Linters/SAST tools

docs/tools/mcp-server.md-13-13 (1)

13-13: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Correct the MCP scope in the CLI example.

The command shown omits --scope, whose documented default is project at Line 576. It therefore writes to project settings, not the user settings.json. Add --scope user to the example or change the sentence to describe project-scope behavior.

🤖 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 `@docs/tools/mcp-server.md` at line 13, Correct the MCP CLI example and its
accompanying description so they agree on scope: add the explicit user scope
option to the command when describing updates to user settings, or revise the
text to accurately describe the documented project-scope default.
docs/debug-logging.md-199-209 (1)

199-209: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Make shell path examples follow the centralized cross-platform resolver.

The examples hardcode Linux defaults and do not consistently honor the documented override/fallback behavior, so users on other platforms or with only LLXPRT_CONFIG_HOME set can inspect the wrong files.

  • docs/debug-logging.md#L199-L209: include the LLXPRT_CONFIG_HOME fallback and clearly label Linux-only commands, or provide platform-specific/resolver-backed commands.
  • docs/tools/memory.md#L112-L113: label the command as Linux-specific or replace its fallback with a platform-aware config-directory resolution.
🤖 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 `@docs/debug-logging.md` around lines 199 - 209, Update the shell examples in
docs/debug-logging.md (lines 199-209) to follow the centralized cross-platform
log-directory resolution, including LLXPRT_CONFIG_HOME as a fallback; otherwise
clearly label the commands as Linux-only. Apply the same platform-awareness
requirement to the command in docs/tools/memory.md (lines 112-113), either by
using the resolver-backed config directory or explicitly labeling it
Linux-specific.
docs/migration/approval-mode-to-policies.md-251-261 (1)

251-261: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Make every example truly absolute.

The text correctly says not to use ~ or relative paths, but the Linux and Windows examples immediately use ~/.config/... and %APPDATA%\.... Replace them with concrete absolute examples such as /home/yourname/.config/... and C:\Users\yourname\AppData\Roaming\....

🤖 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 `@docs/migration/approval-mode-to-policies.md` around lines 251 - 261, Update
the Linux and Windows path examples in the migration documentation to use
concrete absolute paths, replacing the `~` and `%APPDATA%` placeholders with
`/home/yourname/.config/...` and `C:\Users\yourname\AppData\Roaming\...`; keep
the macOS example and the surrounding absolute-path guidance unchanged.
docs/hooks/creating-custom-hooks.md-244-245 (1)

244-245: 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

Store rate-limit state under the canonical log/state directory.

Path.home() / '.llxprt-rate-limit-state.json' bypasses LLXPRT_LOG_HOME, the config fallback, and platform defaults. Use the resolved log/state directory so this tutorial remains consistent with the migration contract.

🤖 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 `@docs/hooks/creating-custom-hooks.md` around lines 244 - 245, Update the state
file assignment in the custom hooks example to derive its path from the resolved
canonical log/state directory rather than directly from Path.home(). Reuse the
existing resolution flow honoring LLXPRT_LOG_HOME, its config fallback, and
platform defaults, while preserving the rate-limit state filename.
docs/hooks/creating-custom-hooks.md-143-150 (1)

143-150: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Make audit-log fallback resolution platform-correct.

Both snippets hard-code the Linux default even though the surrounding documentation describes OS-specific canonical locations.

  • docs/hooks/creating-custom-hooks.md#L143-L150: use the platform-specific log/state default or label the snippet Linux-only.
  • docs/hooks/index.md#L185-L196: apply the same correction to the quick-start audit example.
🤖 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 `@docs/hooks/creating-custom-hooks.md` around lines 143 - 150, Make audit-log
fallback resolution platform-correct in the snippets at
docs/hooks/creating-custom-hooks.md lines 143-150 and docs/hooks/index.md lines
185-196: use the documented OS-specific canonical log/state default after
LLXPRT_LOG_HOME and LLXPRT_CONFIG_HOME, or explicitly label each snippet as
Linux-only. Keep the existing LOG_DIR, mkdir, and LOG_FILE flow consistent
across both examples.
docs/gemini-cli-tips.md-96-104 (1)

96-104: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Assign CONFIG_DIR instead of placing the assignment in a comment.

The copy commands currently use an unset CONFIG_DIR, so they resolve to /LLXPRT.md and /settings.json on typical shells. Make the example executable:

-# Example on Linux: CONFIG_DIR="${LLXPRT_CONFIG_HOME:-$HOME/.config/llxprt-code}"
+CONFIG_DIR="${LLXPRT_CONFIG_HOME:-$HOME/.config/llxprt-code}"
🤖 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 `@docs/gemini-cli-tips.md` around lines 96 - 104, Update the shell example
before the cp commands to actually assign CONFIG_DIR using the documented
LLXPRT_CONFIG_HOME fallback, rather than leaving the assignment only in a
comment. Keep both copy commands using this variable so they target the resolved
configuration directory.
packages/auth/src/__tests__/keyring-token-store.lock-behavior.test.ts-185-194 (1)

185-194: 🩺 Stability & Availability | 🟡 Minor | ⚡ Quick win

Null-byte lockDir assertion is too broad
packages/auth/src/__tests__/keyring-token-store.lock-behavior.test.ts:185-194 fs.mkdir(...'\0') throws TypeError [ERR_INVALID_ARG_VALUE] with a message about null bytes; it does not include lock, directory, or error, so rejects.toThrow(/lock|directory|error/i) is brittle. Assert on code or name instead.

🤖 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 `@packages/auth/src/__tests__/keyring-token-store.lock-behavior.test.ts` around
lines 185 - 194, Update the rejection assertion in the “propagates unexpected
write errors from lockDir creation” test to inspect the thrown error’s stable
code or name for the null-byte path failure, rather than matching the message
against /lock|directory|error/i. Keep the test focused on the
TypeError/ERR_INVALID_ARG_VALUE produced by the invalid lockDir.
packages/cli/src/config/memoryReconciliation.test.ts-119-145 (1)

119-145: 🩺 Stability & Availability | 🟡 Minor | ⚡ Quick win

Also gate this filesystem-permission test off Windows. chmod(file, 0o000) does not remove read access on Windows, so reconcileGlobalMemory succeeds and expect(result.error).toBe(true) fails there. The current it.skipIf(os.userInfo().uid === 0) only skips for root (uid -1 on Windows won't match). Add a win32 guard so the error-path contract stays enforceable only where mode bits are honored.

Proposed gate
-  it.skipIf(os.userInfo().uid === 0)(
+  it.skipIf(os.userInfo().uid === 0 || process.platform === 'win32')(
     'returns error and no marker when source is unreadable, and leaves the source untouched',
Based on learnings, prefer platform-gating Windows-specific skips via `it.skipIf(process.platform === 'win32')`.
🤖 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 `@packages/cli/src/config/memoryReconciliation.test.ts` around lines 119 - 145,
Update the skip condition for the unreadable-source test in the `it.skipIf`
block to also skip when `process.platform === 'win32'`, while preserving the
existing root-user guard. Keep the test’s permission-error assertions unchanged
for platforms where chmod mode bits are honored.

Source: Learnings

scripts/telemetry_utils.js-30-40 (1)

30-40: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Keep the fallback on the shared resolver contract.

If the import fails, this path skips LLXPRT_LOG_HOME/LLXPRT_CONFIG_HOME and falls back to a Linux-only directory. Reuse the shared resolver logic here so the telemetry path still honors the same precedence on the error path.

🤖 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/telemetry_utils.js` around lines 30 - 40, Update the fallback in the
telemetry initialization around resolveGlobalLogDir so it reuses the shared
resolver contract and continues honoring LLXPRT_LOG_HOME/LLXPRT_CONFIG_HOME
precedence when the dynamic import fails. Avoid hardcoding the Linux-only
path.join fallback; use the existing shared resolution logic or equivalent
configuration-aware fallback.
scripts/tests/nightly-bun-native-smoke.test.js-30-37 (1)

30-37: 🩺 Stability & Availability | 🟡 Minor | ⚡ Quick win

Reject fractional values that floor to zero.

0.5 passes the positivity check but produces HARNESS_TIMEOUT_MS = 0. Validate after flooring so every accepted override remains positive.

   const parsed = Number(raw);
   if (!Number.isFinite(parsed) || parsed <= 0) return DEFAULT;
-  return Math.floor(parsed);
+  const timeout = Math.floor(parsed);
+  return timeout > 0 ? timeout : DEFAULT;
🤖 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/nightly-bun-native-smoke.test.js` around lines 30 - 37, Update
resolveHarnessTimeoutMs so the parsed timeout is floored before validation, and
reject any resulting value less than or equal to zero. Preserve the default
timeout for undefined, empty, non-finite, non-positive, or sub-unit fractional
overrides, while returning positive integer overrides.
scripts/genai-enclave/file-discovery.ts-121-191 (1)

121-191: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Handle -z rename pairs in scripts/genai-enclave/file-discovery.ts

git status --porcelain --untracked-files=all -z emits renames as two NUL-delimited tokens (R.. new\0old\0). The current loop parses the trailing old token as if it were a status record, which can misclassify paths whose leading characters resemble a status code. Skip the paired field explicitly instead of splitting every token through parseStatusEntry().

🤖 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/genai-enclave/file-discovery.ts` around lines 121 - 191, The status
parser in collectStatusSets must handle -z rename records as paired
NUL-delimited tokens: when parseStatusEntry identifies a rename, consume and
skip the following old-path token instead of parsing it as a separate status
entry. Preserve deleted-path and untracked-path collection for the actual status
record, and retain parseStatusEntry’s rename path handling.
packages/cli/src/config/extension.test.ts-136-143 (1)

136-143: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Stale comment contradicts the rest of the file.

This comment says Storage resolves user extensions under <tempHome>/.llxprt/extensions, but the EXTENSIONS_DIRECTORY_NAME comment at Lines 109-112 (and the same pattern in extension.skills.test.ts, rootAwareManagement.test.ts, update.test.ts) states fixtures land at <tempHome>/extensions with no .llxprt component. One of these is stale; given Storage.getUserExtensionsDir() returns <dataHome>/extensions per extension.ts, the .llxprt-prefixed wording here appears to be leftover from the pre-migration layout.

✏️ Suggested fix
-    // Redirect all LLxprt category dirs to the temp home so Storage resolves
-    // user extensions under <tempHome>/.llxprt/extensions (config falls back
-    // to data via the compat chain). This mirrors how the existing suite
-    // laid out fixtures under tempHome/.llxprt/extensions.
+    // Redirect all LLxprt category dirs to the temp home so
+    // Storage.getUserExtensionsDir() resolves under <tempHome>/extensions.
🤖 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 `@packages/cli/src/config/extension.test.ts` around lines 136 - 143, Update the
setup comment above the ENV_KEYS loop to describe the current fixture layout
under <tempHome>/extensions, removing the stale <tempHome>/.llxprt/extensions
wording and references to the old compatibility layout. Keep the environment
redirection logic unchanged.
packages/tools/src/__tests__/memory-tool.test.ts-66-67 (1)

66-67: 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

Keep the storage fake isolated from the real home directory.

Returning os.homedir()/.llxprt preserves the legacy global path and can direct the fake’s real filesystem calls at a developer’s state. Use an isolated temporary directory, ideally with distinct canonical memory/data subdirectories.

🤖 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 `@packages/tools/src/__tests__/memory-tool.test.ts` around lines 66 - 67,
Update the storage fake’s writeFile implementation to use an isolated temporary
directory instead of the real home directory or legacy .llxprt path. Create
distinct canonical memory and data subdirectories within that temporary
location, and ensure the fake’s filesystem operations use those paths.
packages/agents/src/core/TodoContinuationService.todoops.test.ts-14-20 (1)

14-20: 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

Keep a focused assertion for resolver propagation.

The fake TodoStore only returns methods, so these tests now pass even if TodoContinuationService stops forwarding dataDirResolver. Retain one targeted assertion that the created store receives the injected resolver; this is the migration contract, not incidental mock behavior.

Also applies to: 94-94, 243-246, 259-262, 275-278

🤖 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 `@packages/agents/src/core/TodoContinuationService.todoops.test.ts` around
lines 14 - 20, Retain a focused constructor assertion in the
TodoContinuationService tests that verifies the fake TodoStore receives the
injected dataDirResolver. Keep the existing outcome-based assertions and avoid
asserting unrelated constructor arguments or invocation details; apply the same
resolver-propagation coverage to the corresponding test cases.
packages/tools/src/tools/memoryTool.test.ts-66-67 (1)

66-67: 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

Replace legacy global-home fixtures with isolated canonical paths.

Both test fixtures still model ~/.llxprt as a global directory, conflicting with the new category contract and risking access to real developer state.

  • packages/tools/src/tools/memoryTool.test.ts#L66-L67: return isolated temporary memory/data paths instead of path.join(os.homedir(), '.llxprt').
  • packages/tools/src/__tests__/interface-contracts.test.ts#L355-L368: replace /home/user/.llxprt with a canonical config fixture or neutral temporary path.
🤖 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 `@packages/tools/src/tools/memoryTool.test.ts` around lines 66 - 67, Replace
the getGlobalMemoryDir and getGlobalDataDir fixtures in
packages/tools/src/tools/memoryTool.test.ts:66-67 with isolated temporary paths,
avoiding os.homedir() and the real ~/.llxprt directory. In
packages/tools/src/__tests__/interface-contracts.test.ts:355-368, replace
/home/user/.llxprt with the canonical config fixture or a neutral temporary path
so both tests use isolated, non-global locations.
packages/agents/src/api/__tests__/session.spec.ts-90-94 (1)

90-94: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Resolve the cleanup root through Storage.

When no override is set, this selects legacy ~/.llxprt, while Storage selects the platform log directory. Cleanup can therefore miss the artifacts it created. Use Storage.getGlobalLogDir() here rather than duplicating environment resolution.

Based on PR objective: Storage is the canonical authority for global paths.

🤖 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 `@packages/agents/src/api/__tests__/session.spec.ts` around lines 90 - 94,
Update the cleanup-root resolution in the test helper to use
Storage.getGlobalLogDir() as the fallback instead of join(homedir(), '.llxprt')
and duplicated environment-variable handling. Preserve the existing tmp/hash
subpath construction so cleanup targets the artifacts created by Storage.
packages/agents/src/api/__tests__/capabilityGaps.integration.spec.ts-48-52 (1)

48-52: 🩺 Stability & Availability | 🟡 Minor | ⚡ Quick win

Fail when cleanup exceeds the bound.

The timeout currently resolves, so a hung built.cleanup() passes teardown and can leak resources into subsequent tests. Reject on timeout so the stuck cleanup is surfaced.

Proposed fix
       await Promise.race([
         built.cleanup(),
-        new Promise<void>((resolve) => setTimeout(resolve, 5000)),
+        new Promise<never>((_, reject) =>
+          setTimeout(() => reject(new Error('Agent cleanup timed out')), 5000),
+        ),
       ]);
🤖 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 `@packages/agents/src/api/__tests__/capabilityGaps.integration.spec.ts` around
lines 48 - 52, Update the cleanup timeout in the teardown flow around
built.cleanup() so the Promise.race rejects when the 5-second bound is exceeded
instead of resolving. Preserve successful cleanup behavior while surfacing a
hung cleanup as a failing test.
shell-scripts/llxprt-paths.test.sh-54-57 (1)

54-57: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Early "node not found" exit bypasses the failure check.

This exits 0 unconditionally, even if the llxprt_is_abs_override assertions above (lines 46-50) already recorded failures in $failures. run-shell-tests.sh only checks this script's exit code, so a real regression here could be masked as a PASS whenever node happens to be unavailable.

🐛 Proposed fix: honor `$failures` before the early exit
 if ! command -v node >/dev/null 2>&1; then
     echo "node not found; skipping category resolution tests"
+    if [ "$failures" -gt 0 ]; then
+        echo ""
+        echo "$failures assertion(s) FAILED"
+        exit 1
+    fi
     exit 0
 fi
🤖 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 `@shell-scripts/llxprt-paths.test.sh` around lines 54 - 57, Update the
node-availability early-exit branch in llxprt-paths.test.sh to return the
accumulated failures status instead of unconditionally exiting successfully.
Preserve the skip message and ensure assertions recorded in failures, including
llxprt_is_abs_override checks, propagate through the script’s exit code when
node is unavailable.
shell-scripts/cache-baseline-destructive.test.sh-26-29 (1)

26-29: 🩺 Stability & Availability | 🟡 Minor | ⚡ Quick win

Unquoted rm -rf target.

rm -rf $_TMP_DIRS_TO_CLEANUP relies on word-splitting; if any collected path ever contains whitespace/glob chars it could delete unintended paths.

🛡️ Proposed fix: quote each path individually
 _cleanup_tmp_dirs() {
-    [ -n "$_TMP_DIRS_TO_CLEANUP" ] && rm -rf $_TMP_DIRS_TO_CLEANUP
+    for _d in $_TMP_DIRS_TO_CLEANUP; do
+        [ -n "$_d" ] && rm -rf -- "$_d"
+    done
 }
🤖 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 `@shell-scripts/cache-baseline-destructive.test.sh` around lines 26 - 29,
Update _cleanup_tmp_dirs to remove each collected temporary-directory path with
individually quoted arguments, avoiding unquoted expansion and accidental word
splitting or glob expansion. Preserve the existing cleanup behavior for all
tracked paths.

Source: Linters/SAST tools

shell-scripts/codex-oauth.sh-243-244 (1)

243-244: 🔒 Security & Privacy | 🟡 Minor | ⚡ Quick win

Gate the credential warning in shell-scripts/codex-oauth.sh:243-244. Send it to stderr and wrap it in CODEX_VERBOSE so normal output stays clean and the credential path isn’t disclosed by default.

🤖 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 `@shell-scripts/codex-oauth.sh` around lines 243 - 244, Update the credential
warning immediately after the chmod command so it only runs when CODEX_VERBOSE
is enabled and sends the message to stderr; preserve the existing warning text
while preventing AUTH_DIR disclosure during normal execution.
🧹 Nitpick comments (9)
packages/auth/src/keyring-token-store.ts (1)

158-200: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Docstring contradicts the implementation. The comment states tryCreateLock returns false (no throw) on EEXIST, but fs.open(lockPath, 'wx', ...) throws EEXIST here — that error is what acquireLock catches to decide to keep polling. A maintainer trusting this doc could remove the EEXIST catch in acquireLock, turning every contended acquisition into a thrown error instead of a poll. Recommend aligning the comment with actual control flow (EEXIST propagates and is handled by the caller).

🤖 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 `@packages/auth/src/keyring-token-store.ts` around lines 158 - 200, Update the
docstring above tryCreateLock to state that EEXIST propagates from fs.open and
is handled by acquireLock, while other errors also propagate; remove the
inaccurate claim that EEXIST returns false. Keep the documented successful
ownership and close-warning behavior unchanged.
packages/a2a-server/vitest.config.ts (1)

106-116: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

Preserve Vitest’s default excludes
test.exclude replaces Vitest’s built-in list. Spread configDefaults.exclude here if you still want the default .git, cypress, and config-file exclusions.

🤖 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 `@packages/a2a-server/vitest.config.ts` around lines 106 - 116, Update the
Vitest configuration’s test.exclude setting to include configDefaults.exclude
along with the existing node_modules and dist patterns, preserving Vitest’s
default exclusions such as .git, cypress, and configuration files. Import or
reuse the standard configDefaults symbol in the vitest.config.ts configuration.
scripts/legacy-paths/ast-scanner.ts (1)

41-41: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Typo: DOT_LLPRT_PATTERNDOT_LLXPRT_PATTERN.

Missing the X. Cosmetic only, but worth fixing for readability since this constant is referenced throughout the file.

🤖 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/legacy-paths/ast-scanner.ts` at line 41, Rename the constant
DOT_LLPRT_PATTERN to DOT_LLXPRT_PATTERN and update every reference to it
throughout ast-scanner.ts, preserving the existing regular expression and
behavior.
scripts/check-legacy-paths.ts (2)

596-683: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Self-test doesn't cover all defined patterns.

unix-home-users and windows-drive-home are defined in LEGACY_PATTERNS (scripts/legacy-paths/config.ts lines 74-88) but have no corresponding RED_CASES entry here, so --self-test never verifies they actually fire. Given the self-test's stated purpose (RED/GREEN validation of every pattern), this is a blind spot for two patterns.

➕ Suggested additions to RED_CASES
+  {
+    name: 'explicit absolute home /Users/<name>/.llxprt',
+    sample: "const f = '/Users/alice/.llxprt/settings.json';",
+    expectPattern: 'unix-home-users',
+  },
+  {
+    name: 'Windows drive-letter home C:\\Users\\<name>\\.llxprt',
+    sample: 'set CONFIG=C:\\Users\\alice\\.llxprt\\settings.json',
+    expectPattern: 'windows-drive-home',
+  },
🤖 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/check-legacy-paths.ts` around lines 596 - 683, Add RED_CASES entries
for the uncovered LEGACY_PATTERNS symbols unix-home-users and windows-drive-home
in the self-test definitions, using representative samples that trigger each
pattern and matching expectPattern values. Keep the existing RED/GREEN
validation flow unchanged so --self-test verifies every defined pattern.

383-393: 🚀 Performance & Scalability | 🔵 Trivial | ⚡ Quick win

packages/ is walked once per extension-specific glob.

SCANNED_TREES has 7 separate packages/*/src/**/*.EXT entries that all resolve to the same baseDir (packages/), so collectCandidates triggers up to 7 full recursive walks of packages/ per run before deduplicating into the Set. A cache keyed by baseDir in collectFromGlobTree/walkDir would avoid the repeated I/O.

🤖 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/check-legacy-paths.ts` around lines 383 - 393, Update
collectFromGlobTree and its walkDir traversal to cache results by baseDir, so
repeated extension-specific entries in SCANNED_TREES reuse the same packages/
walk instead of performing duplicate recursive I/O. Preserve collectCandidates’
existing Set deduplication and error behavior while ensuring each baseDir is
traversed at most once per run.
scripts/legacy-path-allowlist.json (1)

2-6: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Broad LLXPRT_DIR alternative in this allowlist entry.

The bare LLXPRT_DIR alternative (no anchoring to homedir()/~/) suppresses any future line in storage.ts merely containing that substring, wider than the "narrow allowlist" principle documented in check-legacy-paths.ts. Consider scoping it closer to the actual migration-helper construction (e.g. requiring homedir()/~/ nearby) to avoid masking new violations added later to the same file.

🤖 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/legacy-path-allowlist.json` around lines 2 - 6, Update the allowlist
entry for storage.ts by narrowing the pattern used for the getLegacyLlxprtDir
migration helper: remove the standalone LLXPRT_DIR alternative and require it to
appear in the legacy path construction context alongside homedir() or the
~/.llxprt form. Preserve coverage for the existing migration-only helper without
allowing unrelated future references in storage.ts.
packages/a2a-server/src/config/extension.userdirs.test.ts (1)

49-54: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Extract the repeated Storage-env-redirect boilerplate into a shared test helper.

Six test files independently reimplement the same "snapshot process.env, redirect LLXPRT_*_HOME to a temp dir, restore in afterEach" pattern. It has already drifted (some files redirect only LLXPRT_DATA_HOME/LLXPRT_CONFIG_HOME, others redirect all four category vars; some guard with try/catch, some don't), which will only get worse as more tests copy it.

  • packages/a2a-server/src/config/extension.userdirs.test.ts#L49-L54: promote this version (with the beforeEach-before-createHarness ordering guard) into a shared helper, e.g. withRedirectedStorageEnv(dir), in a shared test-utils module.
  • packages/a2a-server/src/config/extension.compat.test.ts#L52-L57: replace the local ENV_KEYS/SAVED_ENV block with the shared helper.
  • packages/a2a-server/src/config/extension.test.ts#L47-L52: replace the local ENV_KEYS/SAVED_ENV block with the shared helper.
  • packages/cli/src/config/extension.part2.test.ts#L106-L117: replace the local ENV_KEYS/SAVED_ENV block with the shared helper.
  • packages/cli/src/config/extension.part3.test.ts#L108-L119: replace the local ENV_KEYS/SAVED_ENV block (and its try/catch restoration) with the shared helper.
  • packages/cli/src/config/extension.part4.test.ts#L120-L136: replace the local ENV_KEYS/SAVED_ENV block (and its try/catch restoration) with the shared helper.
🤖 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 `@packages/a2a-server/src/config/extension.userdirs.test.ts` around lines 49 -
54, Extract the complete four-key environment snapshot, temporary-directory
redirection, and restoration lifecycle from
packages/a2a-server/src/config/extension.userdirs.test.ts into a shared test
helper such as withRedirectedStorageEnv(dir), preserving its
beforeEach-before-createHarness ordering guard. Replace each local
ENV_KEYS/SAVED_ENV implementation in
packages/a2a-server/src/config/extension.compat.test.ts (lines 52-57),
packages/a2a-server/src/config/extension.test.ts (lines 47-52),
packages/cli/src/config/extension.part2.test.ts (lines 106-117),
packages/cli/src/config/extension.part3.test.ts (lines 108-119), and
packages/cli/src/config/extension.part4.test.ts (lines 120-136) with the shared
helper, removing their duplicated try/catch restoration logic.
packages/tools/src/tools/todo-read.ts (1)

84-106: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Duplicate read-fallback-then-throw logic across todo-read.ts and todo-write.ts. Both files independently implement "try readTodos, else getTodos, else throw a wired-store-missing error" with near-identical error message construction.

  • packages/tools/src/tools/todo-read.ts#L84-L106: extract readTodosFromStore's body into a shared helper (e.g. resolveTodosFromStore(store, toolName, sessionId, agentId)).
  • packages/tools/src/tools/todo-write.ts#L216-L239: replace readOldTodos with a call to the same shared helper instead of re-implementing the fallback/throw logic.
🤖 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 `@packages/tools/src/tools/todo-read.ts` around lines 84 - 106, Extract the
shared readTodos/getTodos fallback and wired-store-missing error from
readTodosFromStore in packages/tools/src/tools/todo-read.ts#L84-L106 into a
reusable helper such as resolveTodosFromStore, preserving the sessionId,
agentId, and tool-name context in the error. Update readTodosFromStore to
delegate to that helper, and replace readOldTodos in
packages/tools/src/tools/todo-write.ts#L216-L239 with the same helper call; both
sites should use the centralized implementation.
packages/core/src/tools-adapters/CoreStorageServiceAdapter.ts (1)

32-42: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Shared coreStorageServiceAdapter singleton isn't actually used by the production MemoryTool/Todo wiring. CoreStorageServiceAdapter.ts documents the singleton as required so MemoryTool, memoryDiscovery, prompts, and the CLI memory command all agree on one directory-resolving instance, but toolRegistryFactory.ts constructs a separate CoreStorageServiceAdapter instance and wires that into MemoryTool and the Todo resolver instead. The class is stateless today (both instances just forward to static Storage calls), so there's no current behavioral bug, but the documented single-source-of-truth guarantee is not actually honored for the production factory path, and future instance-level test seams (e.g. vi.spyOn(coreStorageServiceAdapter, ...)) wouldn't affect this wiring.

  • packages/core/src/tools-adapters/CoreStorageServiceAdapter.ts#L32-L42: keep the singleton export as-is; it's the intended composition-root instance.
  • packages/core/src/config/toolRegistryFactory.ts#L350-L354: import and use the exported coreStorageServiceAdapter singleton instead of new CoreStorageServiceAdapter() for wiring MemoryTool and the Todo resolver.
🤖 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 `@packages/core/src/tools-adapters/CoreStorageServiceAdapter.ts` around lines
32 - 42, Use the exported coreStorageServiceAdapter singleton from
CoreStorageServiceAdapter.ts for production wiring in
packages/core/src/config/toolRegistryFactory.ts lines 350-354, replacing the
separately constructed CoreStorageServiceAdapter used by MemoryTool and the Todo
resolver; leave the singleton declaration unchanged.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 6441328a-ecfa-48e8-91bf-e98b06f833cd

📥 Commits

Reviewing files that changed from the base of the PR and between 5868dac and 58e8ccf.

⛔ Files ignored due to path filters (9)
  • dev-docs/cherrypicking.md is excluded by !dev-docs/**
  • dev-docs/profileandsettings.md is excluded by !dev-docs/**
  • project-plans/issue2606.md is excluded by !project-plans/**
  • scripts/tmux-script.approval-ui.json is excluded by !scripts/tmux-script.*.json
  • scripts/tmux-script.blank-live-shell-output.json is excluded by !scripts/tmux-script.*.json
  • scripts/tmux-script.issue2208-newlines.fake.json is excluded by !scripts/tmux-script.*.json
  • scripts/tmux-script.shellmode-esc-cancel-kills.llxprt.json is excluded by !scripts/tmux-script.*.json
  • scripts/tmux-script.shellmode-esc-cancel.llxprt.json is excluded by !scripts/tmux-script.*.json
  • scripts/tmux-script.slash-autocomplete.json is excluded by !scripts/tmux-script.*.json
📒 Files selected for processing (237)
  • .github/workflows/ci.yml
  • docs/EMOJI-FILTER.md
  • docs/architecture/message-bus-architecture.md
  • docs/checkpointing.md
  • docs/cli/commands.md
  • docs/cli/configuration.md
  • docs/cli/context-dumping.md
  • docs/cli/enterprise.md
  • docs/cli/profiles.md
  • docs/cli/providers.md
  • docs/cli/sandbox-profiles.md
  • docs/cli/skills.md
  • docs/cli/themes.md
  • docs/cli/tutorials/skills-getting-started.md
  • docs/debug-logging.md
  • docs/disabled-tools.md
  • docs/extension.md
  • docs/gemini-cli-tips.md
  • docs/hooks/api-reference.md
  • docs/hooks/best-practices.md
  • docs/hooks/creating-custom-hooks.md
  • docs/hooks/index.md
  • docs/index.md
  • docs/local-models.md
  • docs/migration/approval-mode-to-policies.md
  • docs/oauth-setup.md
  • docs/policy-configuration.md
  • docs/prompt-configuration.md
  • docs/recipes/claude-pro-workflow.md
  • docs/recipes/free-tier-setup.md
  • docs/recipes/index.md
  • docs/reference/application-directories.md
  • docs/reference/ephemerals.md
  • docs/reference/profiles.md
  • docs/sandbox.md
  • docs/settings-and-profiles.md
  • docs/subagents.md
  • docs/telemetry-privacy.md
  • docs/telemetry.md
  • docs/tools/index.md
  • docs/tools/mcp-server.md
  • docs/tools/memory.md
  • docs/troubleshooting.md
  • docs/tutorials/sandbox-setup.md
  • docs/zed-integration.md
  • package.json
  • packages/a2a-server/bun-preload-storage-isolation.ts
  • packages/a2a-server/package.json
  • packages/a2a-server/src/config/config.env.test.ts
  • packages/a2a-server/src/config/config.ts
  • packages/a2a-server/src/config/extension.compat.test.ts
  • packages/a2a-server/src/config/extension.test.ts
  • packages/a2a-server/src/config/extension.ts
  • packages/a2a-server/src/config/extension.userdirs.test.ts
  • packages/a2a-server/src/config/settings.test.ts
  • packages/a2a-server/src/config/settings.ts
  • packages/a2a-server/src/storage-isolation.bun.test.ts
  • packages/a2a-server/vitest.config.ts
  • packages/agents/src/api/__tests__/capabilityGaps.integration.spec.ts
  • packages/agents/src/api/__tests__/session.spec.ts
  • packages/agents/src/api/__tests__/tsconfig.providersSourceMapping.spec.ts
  • packages/agents/src/api/control/authState.ts
  • packages/agents/src/app-services/profiles.ts
  • packages/agents/src/compression/__tests__/compression-retry-provider-hardlimit.test.ts
  • packages/agents/src/core/TodoContinuationService.complexity.test.ts
  • packages/agents/src/core/TodoContinuationService.postturn.test.ts
  • packages/agents/src/core/TodoContinuationService.reminders.test.ts
  • packages/agents/src/core/TodoContinuationService.todoops.test.ts
  • packages/agents/src/core/TodoContinuationService.ts
  • packages/agents/src/core/__tests__/todoContinuation.characterization.test.ts
  • packages/agents/src/core/client.ts
  • packages/agents/src/core/subagentToolProcessing.ts
  • packages/agents/src/tools/task.ts
  • packages/agents/tsconfig.json
  • packages/auth/src/__tests__/keyring-token-store.di.test.ts
  • packages/auth/src/__tests__/keyring-token-store.lock-behavior.test.ts
  • packages/auth/src/__tests__/oauth-errors.spec.ts
  • packages/auth/src/__tests__/token-store.refresh-race.spec.ts
  • packages/auth/src/__tests__/token-store.spec.ts
  • packages/auth/src/keyring-token-store.ts
  • packages/auth/src/oauth-errors.ts
  • packages/auth/src/proxy/proxy-token-store.ts
  • packages/auth/src/token-store.ts
  • packages/cli/src/config/extension.part2.test.ts
  • packages/cli/src/config/extension.part3.test.ts
  • packages/cli/src/config/extension.part4.test.ts
  • packages/cli/src/config/extension.skills.test.ts
  • packages/cli/src/config/extension.test.ts
  • packages/cli/src/config/extension.ts
  • packages/cli/src/config/extensions/rootAwareManagement.test.ts
  • packages/cli/src/config/extensions/rootAwareUninstallIdentity.test.ts
  • packages/cli/src/config/extensions/update.test.ts
  • packages/cli/src/config/logging/loggingConfig.test.ts
  • packages/cli/src/config/memoryReconciliation.concurrent.test.ts
  • packages/cli/src/config/memoryReconciliation.test.ts
  • packages/cli/src/config/memoryReconciliation.ts
  • packages/cli/src/config/migrationTypes.ts
  • packages/cli/src/config/pathMigration.overrideValidity.test.ts
  • packages/cli/src/config/pathMigration.profileRepair.concurrency.test.ts
  • packages/cli/src/config/pathMigration.ts
  • packages/cli/src/config/reconcileLock.test.ts
  • packages/cli/src/config/reconcileLock.ts
  • packages/cli/src/config/settings.env.test.ts
  • packages/cli/src/config/settings.ts
  • packages/cli/src/config/settingsSchema.ts
  • packages/cli/src/config/yargsOptions.help.test.ts
  • packages/cli/src/config/yargsOptions.ts
  • packages/cli/src/integration-tests/__tests__/oauth-buckets.integration.spec.ts
  • packages/cli/src/integration-tests/compression-todo.integration.test.ts
  • packages/cli/src/integration-tests/oauth-timing.integration.test.ts
  • packages/cli/src/integration-tests/todo-continuation.integration.test.ts
  • packages/cli/src/ui/commands/memoryCommand.ts
  • packages/cli/src/ui/contexts/TodoProvider.tsx
  • packages/cli/src/utils/sandbox-macos-permissive-closed.sb
  • packages/cli/src/utils/sandbox-macos-permissive-open.sb
  • packages/cli/src/utils/sandbox-macos-permissive-proxied.sb
  • packages/cli/src/utils/sandbox-macos-restrictive-closed.sb
  • packages/cli/src/utils/sandbox-macos-restrictive-open.sb
  • packages/cli/src/utils/sandbox-macos-restrictive-proxied.sb
  • packages/cli/src/utils/sandbox-seatbelt.test.ts
  • packages/cli/src/utils/sandbox-seatbelt.ts
  • packages/cli/test/integration/auth-e2e.integration.test.ts
  • packages/cli/test/providers/providerAliases.test.ts
  • packages/cli/test/ui/commands/authCommand-logout.test.ts
  • packages/core/src/__tests__/root-barrel-exports.test.ts
  • packages/core/src/auth-factories.fallback.test.ts
  • packages/core/src/auth-factories.lockdir.test.ts
  • packages/core/src/auth-factories.ts
  • packages/core/src/config/subagentManager.ts
  • packages/core/src/config/toolRegistryFactory.ts
  • packages/core/src/config/types.ts
  • packages/core/src/core/prompts.coreMemory.test.ts
  • packages/core/src/core/prompts.ts
  • packages/core/src/policy/persistence.test.ts
  • packages/core/src/prompt-config/defaults/index.ts
  • packages/core/src/prompt-config/index.ts
  • packages/core/src/prompt-config/installer/backup-operations.collision.test.ts
  • packages/core/src/prompt-config/installer/backup-operations.test.ts
  • packages/core/src/prompt-config/installer/backup-operations.ts
  • packages/core/src/prompt-config/installer/file-writer.ts
  • packages/core/src/prompt-config/installer/prompt-installer.backup-cleanup.test.ts
  • packages/core/src/prompt-config/installer/prompt-installer.backup-unique.test.ts
  • packages/core/src/prompt-config/prompt-installer.backup-hash.test.ts
  • packages/core/src/prompt-config/prompt-installer.test-helpers.ts
  • packages/core/src/prompt-config/prompt-installer.test.ts
  • packages/core/src/prompt-config/prompt-installer.ts
  • packages/core/src/tools-adapters/CoreStorageServiceAdapter.ts
  • packages/core/src/tools-adapters/CoreTodoServiceAdapter.ts
  • packages/core/src/tools-adapters/index.ts
  • packages/core/src/utils/memoryDiscovery.roundtrip.test.ts
  • packages/core/src/utils/memoryDiscovery.subfunctions.test.ts
  • packages/core/src/utils/memoryDiscovery.test.ts
  • packages/core/src/utils/memoryDiscovery.ts
  • packages/providers/src/__tests__/LoadBalancingProvider.failover.retryable.test.ts
  • packages/providers/src/auth/__tests__/auth-flow-orchestrator.spec.ts
  • packages/providers/src/auth/__tests__/codex-oauth-provider.test.ts
  • packages/providers/src/auth/__tests__/proactive-renewal-manager.spec.ts
  • packages/providers/src/auth/__tests__/token-access-coordinator.spec.ts
  • packages/providers/src/auth/auth-flow-orchestrator.ts
  • packages/providers/src/auth/migration.ts
  • packages/providers/src/auth/oauth-manager-initialization.spec.ts
  • packages/providers/src/auth/oauth-manager.auth-lock.spec.ts
  • packages/providers/src/auth/oauth-manager.concurrency.spec.ts
  • packages/providers/src/auth/oauth-manager.refresh-race.spec.ts
  • packages/providers/src/auth/proactive-renewal-manager.ts
  • packages/providers/src/auth/proxy/__tests__/credential-proxy-server.test.ts
  • packages/providers/src/auth/proxy/__tests__/e2e-credential-flow.test.ts
  • packages/providers/src/auth/proxy/__tests__/integration.test.ts
  • packages/providers/src/auth/proxy/__tests__/oauth-exchange.spec.ts
  • packages/providers/src/auth/proxy/__tests__/oauth-initiate.spec.ts
  • packages/providers/src/auth/proxy/__tests__/oauth-poll.spec.ts
  • packages/providers/src/auth/proxy/__tests__/refresh-coordinator.test.ts
  • packages/providers/src/auth/proxy/__tests__/refresh-flow.spec.ts
  • packages/providers/src/auth/token-access-coordinator.ts
  • packages/settings/src/settings/registry/registry-entries-2.ts
  • packages/settings/src/storage/__tests__/Storage.test.ts
  • packages/storage/package.json
  • packages/storage/src/config/path-resolver.test.ts
  • packages/storage/src/config/path-resolver.ts
  • packages/storage/src/config/storage.test.ts
  • packages/storage/src/config/storage.ts
  • packages/storage/src/secure-store/secure-store.fallback.test.ts
  • packages/storage/src/secure-store/secure-store.ts
  • packages/storage/tsconfig.json
  • packages/telemetry/src/debug/MockConfigurationManager.ts
  • packages/tools/src/__tests__/filesystem-tools.test.ts
  • packages/tools/src/__tests__/interface-contracts.test.ts
  • packages/tools/src/__tests__/memory-tool.test.ts
  • packages/tools/src/__tests__/neutral-types.test.ts
  • packages/tools/src/__tests__/todo-contract.test-d.ts
  • packages/tools/src/index.ts
  • packages/tools/src/interfaces/IStorageService.ts
  • packages/tools/src/tools/memoryTool.test.ts
  • packages/tools/src/tools/memoryTool.ts
  • packages/tools/src/tools/todo-pause.ts
  • packages/tools/src/tools/todo-read.ts
  • packages/tools/src/tools/todo-store-injection.test.ts
  • packages/tools/src/tools/todo-store-single-resolve.test.ts
  • packages/tools/src/tools/todo-store.ts
  • packages/tools/src/tools/todo-write.ts
  • schemas/settings.schema.json
  • scripts/bun-test-manifest.ts
  • scripts/check-agents-api-surface.mjs
  • scripts/check-genai-enclave.ts
  • scripts/check-legacy-paths.ts
  • scripts/genai-enclave/file-discovery.ts
  • scripts/legacy-path-allowlist.json
  • scripts/legacy-paths/ast-scanner.ts
  • scripts/legacy-paths/config.ts
  • scripts/lint-all.sh
  • scripts/run-lint.ts
  • scripts/run-shell-tests.sh
  • scripts/run_bun_tests.ts
  • scripts/sandbox_command.ts
  • scripts/telemetry.ts
  • scripts/telemetry_utils.js
  • scripts/tests/check-agents-api-surface.test.ts
  • scripts/tests/codex-credential-scripts.test.ts
  • scripts/tests/genai-enclave-guard-deleted-files.test.ts
  • scripts/tests/genai-enclave-guard-helpers.ts
  • scripts/tests/legacy-paths-ast-scanner.test.ts
  • scripts/tests/legacy-paths-guard-helpers.ts
  • scripts/tests/legacy-paths-guard.test.ts
  • scripts/tests/legacy-paths-scanned-trees-validation.test.ts
  • scripts/tests/nightly-bun-native-smoke.test.js
  • scripts/tests/telemetry-user-settings-path.test.ts
  • scripts/tests/telemetry-utils-path.test.ts
  • scripts/verify-oauth-integration.sh
  • shell-scripts/cache-baseline-destructive.test.sh
  • shell-scripts/cache-baseline-test.sh
  • shell-scripts/codex-call.sh
  • shell-scripts/codex-models.sh
  • shell-scripts/codex-oauth.sh
  • shell-scripts/issue489-acceptance-test.sh
  • shell-scripts/llxprt-paths.sh
  • shell-scripts/llxprt-paths.test.sh
  • tsconfig.scripts.json
💤 Files with no reviewable changes (3)
  • packages/providers/src/auth/migration.ts
  • packages/providers/src/auth/oauth-manager.concurrency.spec.ts
  • packages/providers/src/auth/oauth-manager.auth-lock.spec.ts

Comment thread docs/cli/context-dumping.md Outdated
Comment thread packages/cli/src/config/reconcileLock.ts
Comment thread packages/cli/src/utils/sandbox-seatbelt.test.ts
Comment thread packages/cli/src/utils/sandbox-seatbelt.ts
Comment thread packages/tools/src/tools/todo-store.ts
Comment thread shell-scripts/cache-baseline-destructive.test.sh
Comment thread shell-scripts/issue489-acceptance-test.sh Outdated

@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: 1

Caution

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

⚠️ Outside diff range comments (1)
docs/settings-and-profiles.md (1)

19-19: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Add a language to this fenced block.

This violates MD040; use text for the interactive command example.

Proposed fix
-```
+```text
🤖 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 `@docs/settings-and-profiles.md` at line 19, Update the fenced code block in
the settings-and-profiles documentation to specify the text language, using
```text for the interactive command example so it satisfies MD040.

Source: Linters/SAST tools

🤖 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 `@scripts/tests/check-agents-api-surface.test.ts`:
- Around line 100-105: Update resolveBuildTimeoutMs to reject timeout overrides
whose floored numeric value is below 1, preventing fractional values such as 0.9
from becoming a zero-millisecond timeout. Preserve the existing flooring
behavior for valid positive values.

---

Outside diff comments:
In `@docs/settings-and-profiles.md`:
- Line 19: Update the fenced code block in the settings-and-profiles
documentation to specify the text language, using ```text for the interactive
command example so it satisfies MD040.
🪄 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: 0020141d-658a-4270-810f-50d55a9d6090

📥 Commits

Reviewing files that changed from the base of the PR and between 58e8ccf and 5823ec5.

⛔ Files ignored due to path filters (3)
  • scripts/tmux-script.approval-ui.json is excluded by !scripts/tmux-script.*.json
  • scripts/tmux-script.issue2208-newlines.fake.json is excluded by !scripts/tmux-script.*.json
  • scripts/tmux-script.slash-autocomplete.json is excluded by !scripts/tmux-script.*.json
📒 Files selected for processing (12)
  • .github/workflows/ci.yml
  • docs/cli/configuration.md
  • docs/cli/profiles.md
  • docs/reference/ephemerals.md
  • docs/reference/profiles.md
  • docs/settings-and-profiles.md
  • docs/troubleshooting.md
  • docs/zed-integration.md
  • package.json
  • schemas/settings.schema.json
  • scripts/check-agents-api-surface.mjs
  • scripts/tests/check-agents-api-surface.test.ts
🚧 Files skipped from review as they are similar to previous changes (10)
  • schemas/settings.schema.json
  • docs/cli/profiles.md
  • docs/zed-integration.md
  • docs/reference/ephemerals.md
  • docs/reference/profiles.md
  • .github/workflows/ci.yml
  • docs/cli/configuration.md
  • docs/troubleshooting.md
  • scripts/check-agents-api-surface.mjs
  • package.json

Comment thread scripts/tests/check-agents-api-surface.test.ts

@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: 3

🤖 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 `@shell-scripts/cache-baseline-destructive.test.sh`:
- Around line 27-30: Update _cleanup_tmp_dirs so _TMP_DIRS_TO_CLEANUP entries
are stored and iterated safely, removing each directory with a quoted expansion
instead of unquoted word splitting and glob expansion. Preserve the existing
empty-list guard and cleanup behavior.
- Around line 59-66: The behavioral tests in cache-baseline-destructive.test.sh
do not consistently validate the target script’s exit status. Update each
affected test block, including the no-opt-in, absolute-path, and pipeline cases,
to capture the cache-baseline-test.sh status independently (preferably using the
benchmark executable stub) and assert the expected result; ensure the pipeline
preserves the target command’s status rather than head’s.

In `@shell-scripts/llxprt-paths.sh`:
- Around line 85-88: Update the validation cases for _llxprt_primary and the
corresponding secondary name before eval to require the first character be a
letter or underscore, while allowing subsequent characters to be letters,
digits, or underscores. Reject values such as “0” so positional parameters
cannot be interpreted as directory overrides.
🪄 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: c536be78-979a-40db-91be-c38b7da895d8

📥 Commits

Reviewing files that changed from the base of the PR and between 5823ec5 and e126bbe.

📒 Files selected for processing (9)
  • scripts/run-shell-tests.sh
  • shell-scripts/cache-baseline-destructive.test.sh
  • shell-scripts/cache-baseline-test.sh
  • shell-scripts/codex-call.sh
  • shell-scripts/codex-models.sh
  • shell-scripts/codex-oauth.sh
  • shell-scripts/issue489-acceptance-test.sh
  • shell-scripts/llxprt-paths.sh
  • shell-scripts/llxprt-paths.test.sh
🚧 Files skipped from review as they are similar to previous changes (7)
  • shell-scripts/issue489-acceptance-test.sh
  • shell-scripts/cache-baseline-test.sh
  • scripts/run-shell-tests.sh
  • shell-scripts/codex-call.sh
  • shell-scripts/codex-oauth.sh
  • shell-scripts/codex-models.sh
  • shell-scripts/llxprt-paths.test.sh

Comment thread shell-scripts/cache-baseline-destructive.test.sh Outdated
Comment thread shell-scripts/cache-baseline-destructive.test.sh
Comment thread shell-scripts/llxprt-paths.sh
@github-actions

github-actions Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Summary

Package Lines Statements Functions Branches
CLI 59.26% 59.26% 60.62% 82.46%
Core 79.08% 79.08% 76.59% 84.16%
CLI Package - Full Text Report
-------------------|---------|----------|---------|---------|-------------------
File               | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
-------------------|---------|----------|---------|---------|-------------------
All files          |   59.26 |    82.46 |   60.62 |   59.26 |                   
 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.18 |    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.96 |     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 |   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.18 |     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.04 |       93 |   28.84 |   49.04 |                   
  App.tsx          |   35.84 |      100 |       0 |   35.84 | 70-101,107-114    
  AppContainer.tsx |     100 |      100 |     100 |     100 |                   
  ...erRuntime.tsx |   17.19 |    33.33 |   16.66 |   17.19 | 73-413            
  ...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 |      12 |    38.56 |    7.59 |      12 |                   
  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.83 |      100 |       0 |    5.83 | 72-801,805-829    
  ...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 |     4.5 |      100 |       0 |     4.5 | ...93-530,533-619 
  ...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.52 |       75 |    1.13 |   19.52 |                   
  ...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.78 |     90.9 |      50 |   55.78 |                   
  ...ollections.ts |     100 |      100 |     100 |     100 |                   
  tips.ts          |       0 |        0 |       0 |       0 | 1-164             
 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.61 |    87.54 |   59.37 |   56.61 |                   
  ...pBootstrap.ts |   93.24 |    58.33 |     100 |   93.24 | ...41-248,252-254 
  useAppDialogs.ts |   41.42 |      100 |   42.85 |   41.42 | ...63,182-398,418 
  ...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 | 203-214,217-222   
  ...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      |   68.11 |    85.58 |   68.43 |   68.11 |                   
  ...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 |   93.01 |    88.35 |     100 |   93.01 | ...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.53 |      100 |       0 |    1.53 | 22-568,571-663    
  ...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.16 |   76.59 |   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.26 |    79.93 |   58.21 |   70.26 |                   
  ...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.5 |     80.2 |   58.97 |    62.5 | ...85-794,819-839 
  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 |    88.88 |     100 |   96.93 | ...97-498,501-502 
  ...estHarness.ts |   93.15 |      100 |   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.61 |    77.35 |   69.23 |   84.61 | ...60,474,492-508 
  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.25 |    78.04 |    87.5 |   80.25 |                   
  ...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 |       50 |   14.28 |   29.71 |                   
  ...nDirective.ts |    6.25 |      100 |       0 |    6.25 | 22-62             
  types.ts         |   34.96 |       50 |   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.62 |     100 |   97.79 |                   
  EmojiFilter.ts   |   97.79 |    95.62 |     100 |   97.79 | ...55-156,363-364 
 src/hooks         |    84.3 |    85.51 |   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 |      100 |       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        |    72.9 |    76.19 |   88.46 |    72.9 |                   
  config.ts        |   68.06 |    77.19 |   86.36 |   68.06 | ...25,381,458-459 
  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.2 |   98.09 |    90.2 |                   
  ...ntegration.ts |    83.9 |       75 |     100 |    83.9 | ...31-132,143-144 
  ReplayEngine.ts  |   95.78 |       91 |     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.23 |      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.78 |     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 |    74.34 |   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 |        0 |       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 |        0 |       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.65 |   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 |    94.73 |   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.

@acoliver
acoliver merged commit a259657 into main Jul 23, 2026
29 of 31 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.

Complete OS-standard path migration for OAuth and global state

1 participant