Skip to content

fix(cli): derive bootstrap --help from shared option definitions - #8902

Merged
yiliang114 merged 37 commits into
mainfrom
fix/issue-8897-help-output
Aug 28, 2026
Merged

fix(cli): derive bootstrap --help from shared option definitions#8902
yiliang114 merged 37 commits into
mainfrom
fix/issue-8897-help-output

Conversation

@yiliang114

@yiliang114 yiliang114 commented Aug 11, 2026

Copy link
Copy Markdown
Collaborator

What this PR does

Derives bootstrap qwen --help output from the same top-level option definitions that the real parser accepts, so the fast help path no longer advertises a stale hand-maintained subset.

Extracts all non-hidden CLI option definitions into a new shared module (packages/cli/src/config/top-level-options.ts). Both the bootstrap help parser (cli.ts -> buildTopLevelHelpParser) and the real config parser (config.ts) now consume from this single source of truth.

Why it's needed

qwen --help listed only 9 options while the real parser accepts around 50. --approval-mode and --auth-type were both accepted and validated but invisible in help output, making headless integration confusing. The error message Please configure an auth type (e.g. via settings or \--auth-type`)pointed at a flag its own--help` never mentioned.

Fixes #8897.

Reviewer Test Plan

How to verify

npm run build
node packages/cli/dist/index.js --help | grep -E 'approval-mode|auth-type'

Before this PR: no output. After: both flags appear in the help text.

Unit test: npx vitest run packages/cli/src/cli.test.ts -t "prints top-level help" asserts --approval-mode and --auth-type are present.

Evidence (Before & After)

Before: --help shows 9 options (model, fallback-model, prompt, prompt-interactive, safe-mode, sandbox, output-format, continue, resume).

After: --help shows all around 50 non-hidden options registered in the real parser, including --approval-mode, --auth-type, --yolo, --debug, --mcp-config, --extensions, --channel, --worktree, telemetry flags, and more.

Tested on

OS Status
macOS ✅ Passed
Windows ⚠️ Not yet verified locally
Linux ⚠️ Not yet verified locally

Environment (optional)

Not applicable.

Risk & Scope

  • Main risk or tradeoff: resolveBootstrapRoute behavior changed — this is not just additive help output. Deriving VALUE_FLAGS from the shared option definitions grew that set from 9 spellings to 47, which re-segments argv for hasFlag / firstPositionalArg and therefore shifts route detection. Measured over a 73-shape argv corpus (routing functions lifted verbatim from cli.ts), 22 shapes route differently than base: 19 move from the full parser onto the help fast path (-p --help, --auth-type x --help, -e a --help, -m -h, …) and 3 move the other way (--help --no-help, --version=false --help, --unknown-flag --help — all three are fixes for pre-existing base bugs).
  • No functional regression in those 22 except the --no-help family (--help/-h followed by --no-help/--no-h): head follows the full parser's last-wins semantics there instead of printing help — --no-help genuinely negates --help, so headless runs boot the agent and exit 1, and a real TTY opens the interactive TUI (base printed help). The argv is exotic and the behavior is full-parser parity (fail-closed demotion to the slow path), but it is a behavior change for those 3 shapes. The remaining shapes print help on both paths (verified against a yargs parser with exitProcess(false); yargs short-circuits --help before .strict() validation, so even the unknown-flag shape still exits 0). The only difference was help content — the fast-path help was missing the qwen [query..] … [default] row and the Positionals: block — which the default-command commit in this PR fixes.
  • Validated: config.test.ts 356/356 passing on this branch (the earlier "not validated / 19 pre-existing failures" note is obsolete — those failures were an environment artifact, not a real baseline). cli.test.ts + mcp/add.test.ts 102/102. Type-check and ESLint clean; error sets diffed against the pristine branch to confirm no new type errors.
  • Option definitions and the option-parsing half of the parser are genuinely unchanged: CliArgs is byte-identical to base, every string: true / coerce is retained at its call site, and relocating deprecateOption out of the $0 builder was verified to be a no-op for rendered help.
  • Breaking changes / migration notes: none.
  • Known scope note: the fast-path grammar tightening (argvSafeForFastPath, hasVersionToken, BASE_VALUE_FLAGS, KNOWN_FAST_PATH_FLAGS) is not required by --approval-mode and --auth-type are accepted but missing from qwen --help #8897 — keeping VALUE_FLAGS at the base set would have fixed the issue with zero routing risk. It is retained here because it also fixes the three base bugs above, but it is a reasonable thing for a reviewer to ask to split out.

Linked Issues

Fixes #8897.

中文说明

本 PR 做了什么

本 PR 让 bootstrap 阶段的 qwen --help 输出从真实 parser 接受的同一组顶层选项定义派生,因此 fast help path 不再展示过时的手写子集。

所有非 hidden 的 CLI 选项定义被抽到新的共享模块(packages/cli/src/config/top-level-options.ts)中。bootstrap help parser(cli.ts -> buildTopLevelHelpParser)和真实 config parser(config.ts)现在都消费同一个事实来源。

为什么需要

qwen --help 原来只列出 9 个选项,而真实 parser 接受约 50 个选项。--approval-mode--auth-type 都已经被接受并校验,但没有出现在 help 输出里,这会让 headless 集成很困惑。错误信息 Please configure an auth type (e.g. via settings or \--auth-type`)指向了一个自己的--help` 都没有提到的参数。

Fixes #8897

Reviewer 测试计划

如何验证

npm run build
node packages/cli/dist/index.js --help | grep -E 'approval-mode|auth-type'

本 PR 前:没有输出。本 PR 后:两个参数都会出现在 help 文本中。

单元测试:npx vitest run packages/cli/src/cli.test.ts -t "prints top-level help" 断言 --approval-mode--auth-type 存在。

证据(前后对比)

之前:--help 显示 9 个选项(model、fallback-model、prompt、prompt-interactive、safe-mode、sandbox、output-format、continue、resume)。

之后:--help 显示真实 parser 中注册的约 50 个非 hidden 选项,包括 --approval-mode--auth-type--yolo--debug--mcp-config--extensions--channel--worktree、telemetry flags 等。

测试平台

OS 状态
macOS ✅ 已通过
Windows ⚠️ 未本地验证
Linux ⚠️ 未本地验证

环境(可选)

不适用。

风险与范围

  • 主要风险或取舍:resolveBootstrapRoute 的行为变了,不只是 help 输出的增量补充。从共享选项定义派生 VALUE_FLAGS 让这个集合从 9 个拼写涨到 47 个,从而改变了 hasFlag / firstPositionalArg 对 argv 的切分,进而影响 route detection。在 73 个 argv shape 的语料上实测(routing 函数从 cli.ts 原文抽取转译),22 个 shape 的路由与 base 不同:19 个从完整 parser 移到 help fast path(-p --help--auth-type x --help-e a --help-m -h 等),3 个反向移动(--help --no-help--version=false --help--unknown-flag --help——这三个都是 base 既有 bug 的修复)。
  • --no-help 家族(--help/-h 后跟 --no-help/--no-h)外,这 22 个没有功能性回归:在该家族下,head 遵循完整 parser 的 last-wins 语义而不再打印帮助——--no-help 真正否定了 --help,因此 headless 运行会启动 agent 并以 exit 1 退出,真实 TTY 则打开交互式 TUI(base 打印帮助)。这些 argv 很生僻,行为上属于完整 parser 对齐(fail-closed 降级到慢路径),但对这 3 个 shape 确实是行为变化。其余 shape 在两条路径下都会打印 help(用 exitProcess(false) 的 yargs parser 验证;yargs 会在 .strict() 校验之前短路处理 --help,所以连未知 flag 的 shape 也仍然 exit 0)。唯一差别是 help 的内容——fast path 的 help 少了 qwen [query..] … [default] 行和 Positionals: 段——本 PR 的 default-command commit 已修复。
  • 已验证:本分支 config.test.ts 356/356 通过(此前"未验证 / 19 个既有失败"的说法已作废,那些失败是环境问题而非真实基线)。cli.test.ts + mcp/add.test.ts 102/102。Type-check 与 ESLint 干净;类型错误集合与未改动分支做过 diff,确认没有引入新错误。
  • 选项定义和 parser 的选项解析部分确实未变:CliArgs 与 base 逐字节相同,所有 string: true / coerce 都在调用点保留,把 deprecateOption 移出 $0 builder 也已验证对 help 渲染无影响。
  • 破坏性变更 / 迁移说明:无。
  • 已知范围说明:fast-path 语法收紧(argvSafeForFastPathhasVersionTokenBASE_VALUE_FLAGSKNOWN_FAST_PATH_FLAGS)并非 --approval-mode and --auth-type are accepted but missing from qwen --help #8897 所必需——把 VALUE_FLAGS 保持在 base 集合就能零路由风险地修好该 issue。这里保留它是因为它同时修掉了上面三个 base bug,但 reviewer 要求拆分是合理的。

关联 Issue

Fixes #8897

The bare `qwen --help` fast-path rendered a hand-maintained list that
drifted from the real parser, hiding --approval-mode, --auth-type, and
~30 other accepted flags (issue #8897).

Extract all non-hidden option definitions into a single shared module
(top-level-options.ts) that both the bootstrap help parser and the real
config parser consume from, keeping options in sync going forward.

Also expand VALUE_FLAGS in cli.ts with every value-consuming option
registered in the shared definitions, so resolveBootstrapRoute skips
past values for these flags when detecting --help / --version.
@qwen-code-ci-bot

qwen-code-ci-bot commented Aug 11, 2026

Copy link
Copy Markdown
Collaborator

Qwen Triage finishedview run. See the stage comments in this thread for the result.

Qwen Triage 已完成 —— 查看运行。结果见本线程中的各阶段评论。

@qwen-code-ci-bot

qwen-code-ci-bot commented Aug 11, 2026

Copy link
Copy Markdown
Collaborator

Re-run at 4ed60c3c1 — two commits since the last full pass at 88679b21b: a0b2f0399 (restores the base scanner's unconditional base-set value-slot skip across the -- sentinel, pinned by new tests) and a merge of main (4ed60c3c1 — only main's gemini.jsllm.js rename sweep reaches this PR's files; no conflict resolution touched this PR's logic).

Template looks good ✓

Problem: observed bug, well evidenced — unchanged. #8897 is still open: a downstream integrator reported --approval-mode / --auth-type accepted and validated by the real parser but absent from qwen --help, with a concrete reproduction.

Direction: aligned, unchanged — no new auth/sandbox/telemetry surface is exposed; these flags already exist and are validated, this only makes help report them. The default-command addition documents the positional form that --prompt's own deprecation notice points at.

Size: touches the core path packages/cli/src/config/**. At this head: 1,194 production lines (cli.ts 306, config.ts 451, shared module 437) plus 717 test lines; no generated/schema lines. The author holds admin on this repo and AGENTS.md's two-tier core gate exempts maintainer-authored PRs, so no Stage 0 escalation attaches — the size is informational. It does cross the 1,000-line advisory threshold; the split the author's own scope analysis proposed (display fix vs fast-path grammar tightening) remains a reasonable reviewer call, not a gate issue — it was argued openly, the extra tightening fixes three real base bugs, and the maintainer driving verification has not asked for it.

Approach: right shape, unchanged — one shared definition map drives both help surfaces and the scanner vocabulary. The new commit a0b2f0399 restores a base-parity subtlety the derived scanner had shifted: base's hasFlag skipped the token after its hardcoded value flags unconditionally, even the -- sentinel (so qwen --model -- --help printed help on base). The unconditional skip now applies to the base set only; derived-only flags keep the conditional one-token skip, so --worktree -- --help demotes to the slow path. Both arms pinned by tests.

Risk: no elevated risk signals — no high-risk path matches.

Moving on to code review. 🔍

中文说明

基于 4ed60c3c1 的 re-run——自上次完整审查(88679b21b)以来有两个提交:a0b2f0399(恢复 base 扫描器对 base 集合值槽在 -- 哨兵处的无条件跳过,并有新测试钉住)以及一次 main 合并(4ed60c3c1——main 侧 gemini.jsllm.js 重命名扫尾波及本 PR 文件,但没有任何冲突解决触及本 PR 的逻辑)。

模板完整 ✓

问题:已观测到的 bug,证据充分——结论不变。#8897 仍然 open:下游集成方报告 --approval-mode / --auth-type 被真实 parser 接受并校验,却没有出现在 qwen --help 里,并附有具体复现。

方向:对齐,不变——没有引入新的 auth/沙箱/遥测面;这些参数本就存在且已被校验,本 PR 只是让 help 如实报告它们。default-command 的补充记录了 --prompt 弃用提示所指向的位置参数形式。

规模:触及核心路径 packages/cli/src/config/**。当前 head:1,194 行生产代码(cli.ts 306、config.ts 451、共享模块 437)加 717 行测试;无生成/schema 文件。作者是本仓库 admin,AGENTS.md 的两级核心门禁对维护者作者的 PR 豁免,因此本轮不触发 Stage 0 升级——规模仅作信息提示。生产行数超过 1,000 行的提示阈值;作者自己范围分析中提出的拆分(展示修复 vs fast-path 语法收紧)仍是合理的 reviewer 选择,不属于门禁问题——该取舍已被公开论证,额外的收紧修复了三个真实的 base bug,且主导验证的维护者并未要求拆分。

方案:形态正确,不变——一张共享定义表同时驱动两个 help 面与扫描器词表。新提交 a0b2f0399 恢复了派生扫描器曾改变的一处 base 对齐细节:base 的 hasFlag 对其硬编码值旗标后的 token 无条件跳过,即使是 -- 哨兵(因此 qwen --model -- --help 在 base 上打印 help)。现在无条件跳过只适用于 base 集合;仅派生集合中的旗标保留有条件的单 token 跳过,因此 --worktree -- --help 降级到慢路径。两种情形均有测试钉住。

风险:无升级风险信号——无高风险路径命中。

进入代码审查 🔍

Qwen Code · qwen3.8-max

Reviewed at 4ed60c3c11d62e9e835dd784712a69979c5c402d · re-run with @qwen-code /triage

@qwen-code-ci-bot

qwen-code-ci-bot commented Aug 11, 2026

Copy link
Copy Markdown
Collaborator

Code review

Independent baseline (unchanged across runs): the hand-maintained bootstrap option list was the drift mechanism, so both help surfaces must consume one set of definitions, and the scanner's flag vocabulary should derive from that same source. This head still implements exactly that; the full diff was re-read at 4ed60c3c1, with the two commits since the last full pass reviewed fresh:

  • a0b2f0399 is a base-parity restoration, direction-safe. hasFlag and firstPositionalArg regain the unconditional value-slot skip for BASE_VALUE_FLAGS (the pre-PR hardcoded 11-spelling set), which base applied even when the next token was the -- sentinel — so qwen --model -- --help keeps routing to help, as on base. Derived-only flags (--worktree, --proxy, -e, …) keep the conditional skip via skipOptionValues, so --worktree -- --help demotes to the slow path instead. Both arms are pinned (keeps base help routing when -- sits in a base value slot, matches yargs value scanning for sentinels and array options), and the comment at each call site documents why the two sets deliberately differ.
  • 4ed60c3c1 is a clean merge of main — verified via the compare API: the only changes reaching this PR's six files are main's gemini.jsllm.js rename sweep (import targets and comment references). No conflict resolution touched this PR's logic.

Round-32's only Critical (R31-2) is resolved at this head — verified against the live PR body. The Chinese 风险与范围 bullet now carries the corrected --no-help family disclosure and agrees with the English Risk & Scope section: 除该家族外无功能性回归;该家族下 headless 启动 agent 并以 exit 1 退出,真实 TTY 打开交互式 TUI(base 打印帮助),且明确这 3 个 shape 确实是行为变化. The contradiction a Chinese-reading reviewer could have leaned on is gone.

My own full-diff pass found no new Critical. The load-bearing pieces check out: the route-order change keeps serve/mcp off the help fast path because positional detection runs inside the help condition; the version intercept is fail-closed (printing the version never executes a subcommand, where demotion could — @wenshao's binary sweep confirmed mcp remove victim -v help deletes nothing on either arm); hidden options stay out of both help surfaces; the allowed-tools de-duplication keeps the last-registration wording; the deprecateOption relocation is rendered-help-neutral (the maintainer measured byte-identical full-parser help, sha256 match); and top-level-options.ts keeps its no-runtime-core-import property, pinned by a source-scan test plus parity tests against core's real ApprovalMode/AuthType values and descriptions.

Recorded for follow-up, not blocking (round 32+, per the convergence posture and AGENTS.md's review-round guidance — this PR is far past the ~5-round mark, so only Critical fixes land here): the §6 note naming the still-hand-maintained TOP_LEVEL_COMMANDS drift was never added to the PR body; the round-32 deferred probe list (TOP_LEVEL_COMMANDS registry drift, TOP_LEVEL_DEPRECATED_OPTIONS registration witness, generic toContain('deprecated') pinning, npm-wrapper --expose-gc lag, version-scan twin sentinel pin) stays recorded; the previously deferred Suggestions (import-boundary escape surface, BASE_VALUE_FLAGS pin count, mcp-add mock fidelity) are unchanged. None of these is a correctness blocker at this head.

Test evidence (PR's own CI at 4ed60c3c1, fetched via API — this run does not build or execute PR code)

Both pull_request-event workflow runs settled green at this head: Qwen Code CI (success) and Security Checks (success). No red checks anywhere on this commit. Windows/macOS/Integration are skipped by this PR's path filter, consistent with base; the integration suite remains unexercised on this path filter same as base — nothing here to act on. Round 32's disclosed gaps (integration suite not run, two vitest chunks not executed in the review worktree) are review-process gaps, not product signals — the product signal is the green unit suite below.

Check Conclusion
Test (ubuntu-latest, Node 22.x) ✅ success
Test (windows-latest, Node 22.x) ⏭️ skipped (path filter)
Test (macos-latest, Node 22.x) ⏭️ skipped (path filter)
Integration Tests (CLI, No Sandbox) ⏭️ skipped (path filter)
Post Coverage Comment (ubuntu-latest, 22.x) ✅ success
Desktop Shell (ubuntu-22.04) ✅ success
Desktop Shell (windows-2022) ✅ success
web-shell E2E Smoke (ubuntu-latest, Node 22.x) ✅ success
Secret scan (TruffleHog) ✅ success
Dependency CVE audit ✅ success

Sandboxed verification for the residual behavioural delta: @qwen-code /verify at this exact head would settle it — the delta since @wenshao's real-binary sweep at 1417741c1 is the sentinel-parity commit (unit-pinned, moves toward base), the §4/§5 net subtraction and locale pin (witness-tested), and two clean merges, so the unit suite pins all of it and this is belt-and-braces rather than an open gap. The maintainer's sweep verdict on the substance (fix works, extraction rendered-help-neutral, no destructive divergence across 283 shapes) stands unchallenged by anything landed since.

中文说明

代码审查

独立基线(历次运行不变):手工维护的 bootstrap 选项列表是漂移机制本身,因此两个 help 面必须消费同一组定义,扫描器的旗标词表也应从同一来源派生。当前 head 仍然正是这样实现的;已在 4ed60c3c1 上重新通读完整 diff,并对上次完整审查以来的两个提交做了全新审查:

  • a0b2f0399 是一次向 base 对齐的恢复,方向安全。 hasFlagfirstPositionalArg 重新获得对 BASE_VALUE_FLAGS(PR 前硬编码的 11 拼写集合)值槽的无条件跳过——base 即使下一个 token 是 -- 哨兵也如此处理——因此 qwen --model -- --help 与 base 一致仍路由到 help。仅派生集合中的旗标(--worktree--proxy-e 等)保留经由 skipOptionValues 的有条件跳过,因此 --worktree -- --help 降级到慢路径。两种情形均有测试钉住,且每个调用点的注释说明了两个集合为何刻意不同。
  • 4ed60c3c1 是一次干净的 main 合并——经 compare API 验证:到达本 PR 六个文件的改动只有 main 侧 gemini.jsllm.js 重命名扫尾(import 目标与注释引用)。没有任何冲突解决触及本 PR 的逻辑。

第 32 轮唯一的 Critical(R31-2)在当前 head 已解决——已对照线上 PR 正文核实。 中文「风险与范围」条目现在写入了修正后的 --no-help 家族披露,与英文 Risk & Scope 部分一致:除该家族外无功能性回归;该家族下 headless 启动 agent 并以 exit 1 退出,真实 TTY 打开交互式 TUI(base 打印帮助),并明确这 3 个 shape 确实是行为变化。中文读者可能依赖的矛盾表述已经消除。

我自己的全 diff 审查未发现新的 Critical。承重部件均核实无误:路由顺序变化不会让 serve/mcp 误入 help 快路径(位置参数检测在 help 条件内运行);版本拦截是失败关闭的(打印版本从不执行子命令,而降级可能执行——@wenshao 的二进制扫描确认两臂上 mcp remove victim -v help 都不删除任何内容);隐藏选项在两个 help 面中都保持隐藏;allowed-tools 去重保留了最后注册的措辞;deprecateOption 迁移对渲染 help 中性(维护者实测完整 parser help 逐字节一致,sha256 相同);top-level-options.ts 保持"无运行时 core import"属性,由源码扫描测试加对照 core 真实 ApprovalMode/AuthType 值与描述的对齐测试钉住。

记录为后续跟进、不阻塞合并(第 32 轮起,按收敛姿态与 AGENTS.md 的审查轮次指引——本 PR 已远超 5 轮门槛,此处只落 Critical 修复):§6 关于 TOP_LEVEL_COMMANDS 仍手工维护、已漂移的备注始终未写入 PR 正文;第 32 轮延后的探针清单(TOP_LEVEL_COMMANDS 注册表漂移、TOP_LEVEL_DEPRECATED_OPTIONS 注册见证、泛化的 toContain('deprecated') 钉住、npm 包装器 --expose-gc 滞后、版本扫描孪生哨兵钉住)继续记录在案;此前延后的建议级条目(import 边界逃逸面、BASE_VALUE_FLAGS 钉住数量、mcp-add mock 保真度)无变化。这些在当前 head 均非正确性阻塞。

测试证据(4ed60c3c1 上 PR 自己的 CI,经 API 获取——本次运行不构建、不执行 PR 代码)

两个 pull_request 事件的工作流在当前 head 全部绿色结束:Qwen Code CI(success)与 Security Checks(success)。该提交上没有任何红色检查。Windows/macOS/集成测试因本 PR 的路径过滤被跳过,与 base 一致;集成测试套件在该路径过滤下依旧不被执行,与 base 相同——此处无需处理。第 32 轮披露的缺口(集成套件未运行、审查 worktree 中两个 vitest 块未执行)属于审查流程缺口,不是产品信号——产品信号是下面绿色的单元测试套件。

沙箱验证用于覆盖残余行为差异:在当前 head 上运行 @qwen-code /verify 可以闭合它——自 @wenshao1417741c1 上做真实二进制扫描以来的差异是哨兵对齐提交(单元测试钉住、向 base 方向移动)、§4/§5 净减法与 locale 固定(有见证测试),加两次干净合并,单元测试已将其全部钉住,所以这是双保险而非未闭合的缺口。维护者对实质内容的结论(修复有效、抽取对 help 渲染中性、283 个形态无破坏性差异)在其后落下的所有内容中均未受挑战。

Qwen Code · qwen3.8-max

Reviewed at 4ed60c3c11d62e9e835dd784712a69979c5c402d · re-run with @qwen-code /triage

@qwen-code-ci-bot

qwen-code-ci-bot commented Aug 11, 2026

Copy link
Copy Markdown
Collaborator

Confidence: 4/5 — clean pass at 4ed60c3c1: round-32's single Critical resolved by the Chinese body correction (verified live), the two commits since the last full pass are a base-parity restoration and a clean merge, and CI is fully settled green at this head.

Stepping back: what landed since the approved pass at 88679b21b is small and moves toward base, not away from it. a0b2f0399 restores one parity subtlety the derived scanner had shifted — base skipped the token after its hardcoded value flags even when that token was --, so qwen --model -- --help printed help; the scanner now does exactly that for the base set while derived-only flags keep the conditional skip — and both arms are pinned by tests. The merge of main brought only the gemini.jsllm.js rename sweep into this PR's files. @wenshao's verdict on the substance stands unchallenged by anything since his real-binary sweep: the fix works (help inventory 11 → 59 rows, identical to the full parser's), the extraction is rendered-help-neutral on the full parser (byte-identical, sha256 match), and 283 argv shapes showed no destructive divergence. The round-32 review's one Critical — the Chinese 风险与范围 bullet still asserting all 22 shapes print help on both paths — is resolved: the bullet now carries the corrected --no-help family disclosure and agrees with the English section, which I read back from the live PR body before writing this.

Reservations, stated so the score is honest: the §6 note naming the still-hand-maintained TOP_LEVEL_COMMANDS drift was never added to the PR body, and the deferred Suggestion/probe list from prior rounds stays recorded for follow-up — both are hygiene and follow-up items, not merge blockers, and this PR is 32 review rounds deep, well past the point where AGENTS.md says only Critical fixes land and the rest defers to follow-ups. Scope remains larger than #8897 strictly needs; that trade was argued openly in the author's self-review, the extra grammar tightening fixes three real base bugs, and the maintainer driving verification has not asked for a split — a reviewer call, not a gate issue.

Verdict: approve, pinned to the reviewed commit. This supersedes round 32's request-changes, whose single Critical was the body bullet now corrected. ✅

中文说明

置信度:4/5 —— 4ed60c3c1 上的干净通过:第 32 轮唯一的 Critical 已由中文正文修正解决(已对照线上正文核实),上次完整审查以来的两个提交分别是一次向 base 对齐的恢复和一次干净合并,CI 在当前 head 全部绿色结束并已定案。

退一步看:自 88679b21b 上批准的那轮审查以来落下的内容很小,且方向是更接近 base 而非更远。a0b2f0399 恢复了派生扫描器曾改变的一处对齐细节——base 对其硬编码值旗标后的 token 无条件跳过,即使该 token 是 --,因此 qwen --model -- --help 打印 help;扫描器现在对 base 集合正是如此处理,而仅派生集合中的旗标保留有条件的跳过——两种情形均有测试钉住。main 合并带进本 PR 文件的只有 gemini.jsllm.js 重命名扫尾。@wenshao 对实质内容的结论在其后落下的所有内容中均未受挑战:修复有效(help 清单从 11 行增至 59 行,与完整 parser 一致)、抽取对完整 parser 的 help 渲染可证明中性(逐字节一致,sha256 相同)、283 个 argv 形态无破坏性差异。第 32 轮审查的唯一 Critical——中文「风险与范围」条目仍断言全部 22 个形态在两条路径下都打印 help——已解决:该条目现在写入了修正后的 --no-help 家族披露并与英文部分一致,我在写本评论前已从线上 PR 正文读回核实。

保留意见,如实说明以保证分数诚实:§6 关于 TOP_LEVEL_COMMANDS 仍手工维护、已漂移的备注始终未写入 PR 正文;此前各轮延后的建议/探针清单继续记录为后续跟进——两者都属于卫生问题与跟进事项,不构成合并阻塞;本 PR 已经历 32 轮审查,远超 AGENTS.md 所说"只落 Critical 修复、其余转入跟进"的门槛。范围仍大于 #8897 严格所需;这个取舍已在作者的自我审查中公开论证,额外的语法收紧修复了三个真实的 base bug,且主导验证的维护者并未要求拆分——这是 reviewer 的选择,不是门禁问题。

裁决:批准,锚定到被审查的提交。此批准取代第 32 轮的 request-changes——那一轮唯一的 Critical 正是现已修正的正文条目。✅

Qwen Code · qwen3.8-max

Reviewed at 4ed60c3c11d62e9e835dd784712a69979c5c402d · re-run with @qwen-code /triage

@qwen-code-ci-bot

qwen-code-ci-bot commented Aug 11, 2026

Copy link
Copy Markdown
Collaborator

Superseded — the /triage re-run at d5389338 (2026-08-23) resolved this deferral on policy grounds: AGENTS.md scopes the two-tier core gate to external PRs and exempts maintainer-authored ones, and the author is a repo admin. The run reviewed the F1-fix commits fresh and approved the PR at that head — see the updated Stage 3 comment. A maintainer who disagrees with that policy reading should say so; a fresh human approval is required for merge either way.

已被取代 —— d5389338 上的 /triage re-run(2026-08-23)按策略条款解除了本转交:AGENTS.md 将两层核心门禁限定于外部 PR,并豁免维护者本人提交的 PR,而作者是仓库管理员。该轮重新审查了 F1 修复提交并在该 head 上批准了 PR——见更新后的 Stage 3 评论。不认同该策略解读的维护者应当指出;无论如何,合并仍需一个新的人类批准。


⏸️ Deferring to @doudouOUC (most recent human reviewer) — re-run at 3b930352 (today's merge of main; no new PR logic): everything the bot can check is green or verified at this head — see the updated Stage 2 and Stage 3 comments above. The only remaining gate is the Stage 0 core-path size escalation (1,083 production lines in packages/cli/src/config/**), which is policy, not a code finding. A maintainer sign-off at this head — or an explicit waiver from the author, who is a repo admin — closes it. CI at this head is still settling (unit suite in progress).

⏸️ 转交 @doudouOUC(最近的人类审查者)——在 3b930352(今天合入 main 的 merge;无新 PR 逻辑)上 re-run:bot 能核查的一切在该 head 上均为绿或已验证——见上方已更新的 Stage 2 与 Stage 3 评论。唯一剩余的门禁是 Stage 0 核心路径规模升级(packages/cli/src/config/** 上的 1,083 个生产行),属于策略而非代码发现。由维护者在该 head 上签核——或由作者(仓库管理员)明确豁免——即可关闭。当前 head 的 CI 仍在落定(单元测试进行中)。

Qwen Code · qwen3.8-max

Reviewed at 3b93035297d2df80b41b33f067884181085e430a · re-run with @qwen-code /triage

@yiliang114

Copy link
Copy Markdown
Collaborator Author

Local UI verification: PASS

  • Revision: da489b3bc
  • Runtime: node dist/cli.js --help (esbuild bundle from worktree)
  • Before: --help shows 11 options (41 lines). --approval-mode and --auth-type are absent.
  • After: --help shows ~50 options (201 lines). Both --approval-mode and --auth-type appear with their choices and descriptions.

中文

本地 UI 验证:PASS

  • 版本: da489b3bc
  • 运行方式: node dist/cli.js --help(worktree 的 esbuild 打包产物)
  • 前: --help 显示 11 个选项(41 行),--approval-mode--auth-type 均未出现。
  • 后: --help 显示约 50 个选项(201 行),--approval-mode--auth-type 均显示并附有可选值和描述。

@github-actions

github-actions Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Summary

Package Lines Statements Functions Branches
CLI 85.67% 85.67% 91.09% 84.63%
Core 88.75% 88.75% 90.51% 87.2%
CLI Package - Full Text Report
-------------------|---------|----------|---------|---------|-------------------
File               | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
-------------------|---------|----------|---------|---------|-------------------
All files          |   85.67 |    84.63 |   91.09 |   85.67 |                   
 src               |   86.53 |    82.86 |   88.88 |   86.53 |                   
  cli.ts           |   95.92 |    88.23 |     100 |   95.92 | ...00-701,705-706 
  llm.tsx          |   73.22 |    77.73 |   80.76 |   73.22 | ...1345-1349,1476 
  ...ractiveCli.ts |   89.27 |    83.13 |   89.06 |   89.27 | ...3157,3163,3229 
  ...liCommands.ts |   89.71 |    84.17 |   81.81 |   89.71 | ...31-633,650,757 
  ...ActiveAuth.ts |     100 |     87.5 |     100 |     100 | 66-80             
 ...cp-integration |   74.57 |    77.36 |   93.65 |   74.57 |                   
  acpAgent.ts      |   73.63 |    77.23 |   92.93 |   73.63 | ...02,13080-13081 
  ...k-reporter.ts |     100 |       80 |     100 |     100 | 81,84,119,141     
  authMethods.ts   |      92 |       60 |     100 |      92 | 33-34             
  ...heap-probe.ts |   97.39 |    96.66 |     100 |   97.39 | 243,264-265       
  errorCodes.ts    |     100 |      100 |     100 |     100 |                   
  ...ion-skills.ts |     100 |     87.5 |     100 |     100 | 17,28             
  generation.ts    |    97.1 |    81.25 |     100 |    97.1 | 109,112           
  ...figuration.ts |     100 |    89.65 |     100 |     100 | 79,125,142        
  ...DirContext.ts |     100 |      100 |     100 |     100 |                   
  ...ersistence.ts |   94.95 |    92.24 |     100 |   94.95 | ...13-118,227-228 
  ...management.ts |   74.75 |     66.3 |     100 |   74.75 | ...92-496,505-509 
  ...e-download.ts |    64.7 |    62.24 |    87.5 |    64.7 | ...08-609,615-619 
 ...tegration/live |    97.5 |       88 |   92.85 |    97.5 |                   
  ...en-context.ts |   95.74 |    82.35 |     100 |   95.74 | ...0,66-67,99-100 
  ...structions.ts |     100 |      100 |     100 |     100 |                   
  ...ak-to-user.ts |   96.66 |      100 |    87.5 |   96.66 | 37-38             
  ...task-tools.ts |   98.97 |      100 |   88.88 |   98.97 | 201-202           
 ...ration/service |    97.1 |    95.89 |   93.75 |    97.1 |                   
  filesystem.ts    |    97.1 |    95.89 |   93.75 |    97.1 | ...22-123,246-247 
 ...ration/session |    90.9 |    86.48 |   95.67 |    90.9 |                   
  Session.ts       |   90.27 |    85.23 |   95.03 |   90.27 | ...85,13212-13216 
  ...entTracker.ts |   96.88 |    89.36 |      90 |   96.88 | 139-145,224       
  ...projection.ts |   98.85 |    91.59 |     100 |   98.85 | 234,250,262       
  ...stop-guard.ts |     100 |    98.07 |     100 |     100 | 37,127            
  ...eplay-page.ts |   94.19 |    86.53 |     100 |   94.19 | ...53,357,437,441 
  ...y-replayer.ts |   83.41 |    93.33 |   94.11 |   83.41 | ...30-148,266-268 
  index.ts         |       0 |        0 |       0 |       0 | 1-40              
  ...ssionUtils.ts |   89.19 |     87.8 |     100 |   89.19 | ...85-304,363-365 
  ...oal-update.ts |   98.61 |    97.29 |     100 |   98.61 | 64                
  ...lure-guard.ts |   98.32 |    97.72 |     100 |   98.32 | 294-295,340-341   
  tasksSnapshot.ts |    94.3 |     87.5 |     100 |    94.3 | 65-71             
  ...on-tracker.ts |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...ssion/emitters |   95.65 |    92.34 |   97.14 |   95.65 |                   
  ...ageEmitter.ts |   95.36 |    92.42 |     100 |   95.36 | ...16,129-130,223 
  PlanEmitter.ts   |     100 |       90 |     100 |     100 | 66                
  base-emitter.ts  |   78.26 |    77.77 |     100 |   78.26 | 23-24,26-28       
  index.ts         |       0 |        0 |       0 |       0 | 1-10              
  ...ll-emitter.ts |   98.57 |    94.84 |     100 |   98.57 | 75-76,394-395     
 ...ession/rewrite |   96.03 |    89.79 |   94.44 |   96.03 |                   
  LlmRewriter.ts   |   94.01 |    88.23 |     100 |   94.01 | 101-102,179-183   
  ...Middleware.ts |   96.99 |    88.37 |     100 |   96.99 | 145,153-155       
  TurnBuffer.ts    |     100 |      100 |     100 |     100 |                   
  config.ts        |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  types.ts         |       0 |        0 |       0 |       0 | 1                 
 src/agent-view    |   86.63 |     80.8 |   94.01 |   86.63 |                   
  attach-lease.ts  |     100 |    97.05 |     100 |     100 | 173               
  ...t-cli-argv.ts |     100 |     92.3 |     100 |     100 | 15                
  ...ged-detach.ts |     100 |     90.9 |     100 |     100 | 40,64             
  presentation.ts  |   94.13 |    88.72 |   94.73 |   94.13 | ...57-358,382-384 
  protocol.ts      |     100 |      100 |     100 |     100 |                   
  pty-host-env.ts  |     100 |      100 |     100 |     100 |                   
  ...st-process.ts |   88.43 |    78.79 |   94.44 |   88.43 | ...1294,1384-1386 
  pty-host.ts      |   85.25 |    87.03 |   90.69 |   85.25 | ...22-524,539-540 
  ...sor-client.ts |   80.38 |    72.81 |   77.41 |   80.38 | ...22-626,652-656 
  ...r-dispatch.ts |      98 |    85.18 |     100 |      98 | 117,173,190       
  ...or-process.ts |    83.5 |     77.3 |   98.72 |    83.5 | ...4479-4482,4485 
  ...sor-runner.ts |   82.43 |    76.82 |   80.95 |   82.43 | ...69,493,496-506 
  ...sor-server.ts |   84.39 |    83.56 |    93.1 |   84.39 | ...67-568,571-588 
  ...isor-store.ts |   94.76 |    84.95 |     100 |   94.76 | ...,966,1008,1023 
  ...nal-bridge.ts |   93.98 |    91.54 |   83.33 |   93.98 | 228-238           
  ...r-sideband.ts |   94.91 |    89.36 |     100 |   94.91 | ...75-276,299-304 
 src/commands      |   90.69 |    78.53 |   65.62 |   90.69 |                   
  auth.ts          |     100 |    83.33 |     100 |     100 | 11,14             
  channel.ts       |   55.55 |      100 |       0 |   55.55 | 18-22,30-40       
  extensions.tsx   |   96.77 |      100 |      50 |   96.77 | 39                
  hooks.tsx        |   66.66 |      100 |       0 |   66.66 | 20-24             
  mcp.ts           |   95.45 |      100 |      50 |   95.45 | 31                
  review.ts        |    98.9 |      100 |      50 |    98.9 | 102               
  serve.ts         |   89.46 |    76.02 |     100 |   89.46 | ...12-915,927,938 
  sessions.ts      |     100 |      100 |      50 |     100 |                   
  update.ts        |   98.13 |    94.44 |   66.66 |   98.13 | 82-83             
 ...mmands/channel |   89.55 |    88.77 |   90.68 |   89.55 |                   
  channel-cwd.ts   |     100 |      100 |     100 |     100 |                   
  ...l-registry.ts |   94.78 |    94.59 |      90 |   94.78 | ...32-335,380-383 
  ...entry-path.ts |      75 |       50 |     100 |      75 | 8-9               
  config-utils.ts  |   96.84 |    96.22 |     100 |   96.84 | ...40-245,303-306 
  configure.ts     |    14.7 |      100 |       0 |    14.7 | 18-21,23-84       
  daemon-worker.ts |   94.07 |    86.01 |   94.33 |   94.07 | ...1292,1299-1300 
  loop-runtime.ts  |   91.66 |      100 |      50 |   91.66 | 15,22             
  ...classifier.ts |   98.53 |    96.66 |     100 |   98.53 | 115-116,161       
  ...tact-store.ts |   93.51 |    87.65 |     100 |   93.51 | ...71,288-289,337 
  pairing.ts       |      75 |      100 |      50 |      75 | 22-28,59-70       
  pidfile.ts       |   95.55 |       90 |     100 |   95.55 | ...50-251,315-316 
  proxy.ts         |     100 |      100 |     100 |     100 |                   
  reload.ts        |    77.5 |    86.95 |      75 |    77.5 | 72-84,93-97       
  runtime.ts       |   82.43 |    86.44 |     100 |   82.43 | ...87-191,251-253 
  set.ts           |   75.72 |    85.71 |      50 |   75.72 | 65-83,111-116     
  start.ts         |    87.7 |    83.63 |      88 |    87.7 | ...95,601-604,616 
  ...ure-format.ts |   93.65 |    82.45 |     100 |   93.65 | ...42,48-49,74-75 
  status.ts        |   78.57 |    59.25 |   66.66 |   78.57 | ...36-137,150-161 
  stop.ts          |   57.83 |    82.35 |      50 |   57.83 | ...3,74-76,85-111 
 ...nds/extensions |   88.85 |    87.91 |   87.09 |   88.85 |                   
  consent.ts       |   72.53 |    90.32 |   42.85 |   72.53 | ...86-142,157-163 
  disable.ts       |     100 |       90 |     100 |     100 | 30                
  enable.ts        |     100 |    91.66 |     100 |     100 | 38                
  install.ts       |   82.95 |    81.57 |      75 |   82.95 | ...96-199,202-211 
  link.ts          |     100 |      100 |     100 |     100 |                   
  list.ts          |     100 |     90.9 |     100 |     100 | 18                
  new.ts           |     100 |      100 |     100 |     100 |                   
  settings.ts      |   99.15 |      100 |   83.33 |   99.15 | 151               
  sources.ts       |   93.42 |    87.09 |   92.85 |   93.42 | ...4-66,96-98,167 
  uninstall.ts     |   74.57 |       40 |   66.66 |   74.57 | 45-47,60-67,70-73 
  update.ts        |   96.71 |    97.05 |     100 |   96.71 | 114-118           
  utils.ts         |   75.63 |    57.14 |     100 |   75.63 | ...30-134,136-140 
 ...les/mcp-server |       0 |        0 |       0 |       0 |                   
  example.ts       |       0 |        0 |       0 |       0 | 1-60              
 ...amples/starter |       0 |        0 |       0 |       0 |                   
  example.ts       |       0 |        0 |       0 |       0 | 1-64              
 src/commands/mcp  |   91.19 |    88.76 |   85.71 |   91.19 |                   
  add.ts           |    99.3 |    96.07 |     100 |    99.3 | 154-155           
  approve.ts       |   76.19 |     87.5 |   66.66 |   76.19 | ...,89-99,114-124 
  list.ts          |    92.9 |    84.84 |      80 |    92.9 | ...79-181,199-200 
  reconnect.ts     |   85.54 |    86.76 |    90.9 |   85.54 | 45-58,337-359     
  remove.ts        |     100 |       80 |     100 |     100 | 21-25             
 ...ommands/review |   91.98 |    90.39 |    93.8 |   91.98 |                   
  ab-drive.ts      |   85.22 |    90.47 |   94.11 |   85.22 | ...50-926,969-972 
  agent-prompt.ts  |   94.89 |    92.99 |   97.95 |   94.89 | ...3289,3624-3704 
  base-tree.ts     |   77.02 |    80.76 |   77.77 |   77.02 | ...63-384,386-399 
  capture-local.ts |   94.72 |    97.61 |   94.11 |   94.72 | 271,1336-1374     
  ...k-coverage.ts |   50.71 |       35 |   66.66 |   50.71 | ...40-245,279-289 
  cleanup.ts       |   92.34 |     89.5 |    90.9 |   92.34 | ...1107,1109-1110 
  comment-body.ts  |   67.85 |    87.09 |   66.66 |   67.85 | ...30,157,159-164 
  ...ent-status.ts |   94.22 |    87.32 |    90.9 |   94.22 | ...96,462,738-758 
  ...ose-review.ts |   97.37 |    94.02 |   98.73 |   97.37 | ...6486-6530,6790 
  cost-ledger.ts   |   94.58 |     94.4 |   81.25 |   94.58 | ...53-654,694-704 
  drive.ts         |   97.12 |    89.85 |     100 |   97.12 | ...83-985,990-992 
  extract-step.ts  |   91.36 |    90.62 |   88.88 |   91.36 | ...90-707,714-729 
  fetch-diff.ts    |   73.75 |      100 |   66.66 |   73.75 | 77-97             
  fetch-pr.ts      |   97.29 |    92.25 |     100 |   97.29 | ...1566,1724-1729 
  findings.ts      |    96.3 |    93.68 |     100 |    96.3 | ...1418,1427-1428 
  issue-context.ts |   88.15 |     93.1 |   85.71 |   88.15 | 249-276           
  load-rules.ts    |   26.41 |      100 |   16.66 |   26.41 | ...41-153,155-156 
  match-remote.ts  |   85.55 |     92.3 |   66.66 |   85.55 | 74-79,144-150     
  meta.ts          |   79.43 |    93.75 |   66.66 |   79.43 | 123-128,147-162   
  mock-provider.ts |   95.44 |    90.25 |   89.47 |   95.44 | 145,690-709       
  parse-args.ts    |   99.48 |    95.74 |     100 |   99.48 | 665,990,1046,1082 
  plan-diff.ts     |   71.42 |      100 |   66.66 |   71.42 | 162-197           
  pr-context.ts    |   96.22 |    88.86 |     100 |   96.22 | ...2580,2681-2697 
  presubmit.ts     |   94.32 |    90.83 |   94.11 |   94.32 | ...1219,1254-1285 
  ...ish-assets.ts |    81.3 |    82.22 |   85.71 |    81.3 | ...75-479,506-552 
  ...r-findings.ts |   90.74 |    83.75 |     100 |   90.74 | ...17-422,429-430 
  repo-context.ts  |   94.62 |    90.75 |     100 |   94.62 | ...66-467,482-487 
  ...ve-anchors.ts |   78.34 |    89.28 |      75 |   78.34 | ...83-188,200-217 
  revert-hunk.ts   |   91.48 |    87.94 |     100 |   91.48 | ...1189,1236-1239 
  run.ts           |   84.47 |    87.58 |   95.45 |   84.47 | ...00,816-870,884 
  save-artifact.ts |    94.2 |    92.46 |   94.11 |    94.2 | ...14-617,710-713 
  scratch-tree.ts  |   95.93 |       86 |     100 |   95.93 | ...91-392,461-464 
  script-lint.ts   |   83.78 |    78.57 |   88.88 |   83.78 | ...69-783,785-807 
  submit.ts        |   94.21 |       89 |   94.44 |   94.21 | ...1710,1738-1775 
  test-delta.ts    |   95.75 |     92.3 |      75 |   95.75 | 470-478           
  test-efficacy.ts |   84.03 |    80.48 |   96.07 |   84.03 | ...3249,3257-3277 
  test-plan.ts     |   94.61 |    91.79 |      95 |   94.61 | ...29-832,873-874 
 ...w/__fixtures__ |     100 |      100 |     100 |     100 |                   
  ...r-default.mjs |     100 |      100 |     100 |     100 |                   
  ...der-empty.mjs |     100 |      100 |     100 |     100 |                   
  ...der-named.mjs |     100 |      100 |     100 |     100 |                   
 ...nds/review/lib |   97.37 |    94.75 |   98.68 |   97.37 |                   
  agent-briefs.ts  |   99.08 |      100 |      50 |   99.08 | 841-842           
  ...t-identity.ts |     100 |      100 |     100 |     100 |                   
  anchors.ts       |     100 |    97.04 |     100 |     100 | ...39,175,184,231 
  assets.ts        |     100 |      100 |     100 |     100 |                   
  audit-layers.ts  |   98.67 |    96.15 |     100 |   98.67 | 288-290           
  authorization.ts |    96.5 |    95.61 |     100 |    96.5 | ...54-255,629-630 
  budget.ts        |     100 |    97.95 |     100 |     100 | 887,940           
  build-budget.ts  |     100 |      100 |     100 |     100 |                   
  certification.ts |     100 |      100 |     100 |     100 |                   
  convergence.ts   |     100 |    97.94 |    92.3 |     100 | 52,515,620,716    
  coverage.ts      |   98.97 |    95.11 |     100 |   98.97 | ...1103,1648-1649 
  deadline.ts      |   98.03 |    91.66 |     100 |   98.03 | ...20,752,820,837 
  diff-flags.ts    |     100 |        0 |     100 |     100 | 75                
  diff-plan.ts     |   99.29 |    95.79 |     100 |   99.29 | 295-296,319       
  disk.ts          |     100 |      100 |     100 |     100 |                   
  effort.ts        |     100 |      100 |     100 |     100 |                   
  failing-files.ts |     100 |    93.33 |     100 |     100 | 41                
  gh.ts            |   89.53 |    95.52 |   78.94 |   89.53 | ...47,384-385,412 
  git.ts           |   96.92 |    94.11 |     100 |   96.92 | 264-265,302-303   
  heavy.ts         |     100 |      100 |     100 |     100 |                   
  import-graph.ts  |   96.68 |     95.6 |     100 |   96.68 | 180-182,211-212   
  ...ntal-scope.ts |     100 |      100 |     100 |     100 |                   
  inline-counts.ts |     100 |      100 |     100 |     100 |                   
  ...audit-gate.ts |     100 |     97.5 |     100 |     100 | 135               
  ledger.ts        |     100 |    99.45 |     100 |     100 | 828               
  local-anchor.ts  |   93.78 |    88.75 |     100 |   93.78 | ...61,594-595,745 
  local-diff.ts    |   86.77 |    94.28 |     100 |   86.77 | ...54-564,566-574 
  ...ry-context.ts |   96.61 |    95.48 |     100 |   96.61 | ...47-450,496-499 
  md-field.ts      |     100 |      100 |     100 |     100 |                   
  merge-base.ts    |     100 |      100 |     100 |     100 |                   
  narrow-diff.ts   |     100 |      100 |     100 |     100 |                   
  npm-toolchain.ts |   98.23 |    95.29 |     100 |   98.23 | ...,822,1203,1220 
  path-rules.ts    |     100 |      100 |     100 |     100 |                   
  paths.ts         |   98.05 |    88.57 |     100 |   98.05 | 33-34             
  prompt-record.ts |   98.03 |    94.23 |     100 |   98.03 | 293-294,300       
  receipt.ts       |     100 |      100 |     100 |     100 |                   
  remote-match.ts  |   98.03 |    94.73 |     100 |   98.03 | 109-110           
  report.ts        |   92.92 |    86.66 |     100 |   92.92 | 213-214,216-220   
  ...ry-context.ts |     100 |    98.66 |     100 |     100 | 187               
  resume.ts        |     100 |      100 |     100 |     100 |                   
  retirement.ts    |     100 |    94.36 |     100 |     100 | ...58-559,760,917 
  review-footer.ts |   99.55 |    98.09 |     100 |   99.55 | 548-549           
  ...w-settings.ts |     100 |    96.42 |     100 |     100 | 99                
  roster.ts        |     100 |    97.14 |     100 |     100 | 177,222           
  round-model.ts   |     100 |      100 |     100 |     100 |                   
  run-ledger.ts    |    98.2 |    93.87 |     100 |    98.2 | ...23,541,647,670 
  same-file.ts     |     100 |       95 |     100 |     100 | 36                
  ...boxed-exec.ts |   94.26 |    89.32 |   95.65 |   94.26 | ...49-550,728-729 
  shell-quote.ts   |     100 |      100 |     100 |     100 |                   
  stale-bundle.ts  |   98.18 |    94.38 |     100 |   98.18 | 431,472,512-513   
  test-utils.ts    |   99.04 |    91.66 |     100 |   99.04 | 75                
  toolchain.ts     |     100 |      100 |     100 |     100 |                   
  transcripts.ts   |   98.09 |    95.07 |     100 |   98.09 | ...92,438,707-708 
  ...pace-scope.ts |     100 |    96.96 |     100 |     100 | 186               
  workspaces.ts    |     100 |    96.85 |     100 |     100 | 222,452,499,512   
  ...ree-reader.ts |     100 |      100 |     100 |     100 |                   
  worktree.ts      |   89.39 |    81.78 |     100 |   89.39 | ...1813-1814,1827 
 ...w/lib/platform |   94.71 |    87.89 |   97.05 |   94.71 |                   
  aone-client.ts   |   94.94 |     87.3 |     100 |   94.94 | ...92-293,299-302 
  aone.ts          |   93.06 |    89.86 |   94.73 |   93.06 | ...34,598-603,655 
  github.ts        |   99.08 |     75.8 |     100 |   99.08 | 249-250           
  registry.ts      |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...mands/sessions |   94.11 |    89.06 |   89.47 |   94.11 |                   
  common.ts        |     100 |      100 |     100 |     100 |                   
  list.ts          |   90.96 |    86.66 |   81.81 |   90.96 | 208-219,221-222   
  ps.ts            |     100 |    94.44 |     100 |     100 | 58                
 src/config        |   94.33 |    90.56 |   95.29 |   94.33 |                   
  ...l-fallback.ts |     100 |      100 |     100 |     100 |                   
  auth.ts          |   93.36 |    88.37 |     100 |   93.36 | ...06-307,330-331 
  ...eMcpImport.ts |   87.91 |    81.52 |     100 |   87.91 | ...63-371,453-454 
  compile-cache.ts |     100 |      100 |     100 |     100 |                   
  config.ts        |   88.06 |    91.05 |   86.11 |   88.06 | ...2270,2272-2280 
  ...cy-monitor.ts |      90 |    77.27 |     100 |      90 | ...72-73,90-92,98 
  ...ust-policy.ts |   83.02 |    88.88 |     100 |   83.02 | ...02-209,232-240 
  ...heme-names.ts |     100 |      100 |     100 |     100 |                   
  ...ScopeUtils.ts |   97.56 |    88.88 |     100 |   97.56 | 67                
  environment.ts   |   94.51 |    92.55 |   95.23 |   94.51 | ...24-625,679-680 
  ...le-watcher.ts |   90.86 |    83.65 |   95.83 |   90.86 | ...23-325,370,418 
  ...resh-state.ts |   90.57 |    97.29 |   93.75 |   90.57 | 137-142,146-152   
  ...ime-reload.ts |     100 |    69.69 |     100 |     100 | ...12-113,122-123 
  hot-reload.ts    |     100 |    89.13 |     100 |     100 | 47,172-178,238    
  keyBindings.ts   |    97.4 |       50 |     100 |    97.4 | 240-243           
  ...ngsAdapter.ts |     100 |    94.11 |     100 |     100 | 64                
  ...ig-watcher.ts |   95.17 |    83.05 |     100 |   95.17 | ...78,200,292-293 
  ...er-secrets.ts |   98.97 |    96.87 |     100 |   98.97 | 85                
  mcpApprovals.ts  |   78.57 |       92 |   86.66 |   78.57 | ...18-319,324-326 
  mcpJson.ts       |     100 |      100 |     100 |     100 |                   
  mcpServers.ts    |   92.85 |     87.5 |     100 |   92.85 | 46-47             
  ...idersScope.ts |      95 |    94.73 |     100 |      95 | 11-12             
  ...abledTools.ts |     100 |      100 |     100 |     100 |                   
  ...comparison.ts |     100 |      100 |     100 |     100 |                   
  ...n-settings.ts |   99.15 |    93.93 |     100 |   99.15 | 63                
  sandboxConfig.ts |   93.33 |    93.33 |     100 |   93.33 | ...42-147,216-217 
  session-id.ts    |     100 |      100 |     100 |     100 |                   
  ...ings-cache.ts |   96.52 |    93.93 |     100 |   96.52 | 90-91,201-202     
  settings.ts      |   91.16 |    93.02 |      90 |   91.16 | ...1026,1028-1029 
  ...ingsSchema.ts |     100 |      100 |     100 |     100 |                   
  settingsUtils.ts |   80.92 |     89.2 |   85.18 |   80.92 | ...87-605,612-620 
  ...ngsWatcher.ts |   95.54 |    88.34 |     100 |   95.54 | ...28,277-278,293 
  ...d-env-keys.ts |     100 |      100 |     100 |     100 |                   
  ...l-settings.ts |     100 |      100 |     100 |     100 |                   
  ...paths-lite.ts |   89.47 |       88 |     100 |   89.47 | 43-44,53-54,56-57 
  ...el-options.ts |     100 |      100 |     100 |     100 |                   
  ...precedence.ts |   98.79 |     92.3 |     100 |   98.79 | 62                
  ...tedFolders.ts |   92.53 |    93.54 |     100 |   92.53 | ...36-337,373-384 
 ...nfig/migration |   95.23 |    78.94 |   85.71 |   95.23 |                   
  index.ts         |   95.65 |     87.5 |     100 |   95.65 | 117-118           
  scheduler.ts     |   96.55 |       80 |     100 |   96.55 | 19-20             
  types.ts         |       0 |        0 |       0 |       0 | 1                 
 ...ation/versions |   94.91 |      100 |     100 |   94.91 |                   
  ...-v2-shared.ts |     100 |      100 |     100 |     100 |                   
  v1-to-v2.ts      |   81.75 |      100 |     100 |   81.75 | ...28-229,231-247 
  v2-to-v3.ts      |     100 |      100 |     100 |     100 |                   
  v3-to-v4.ts      |     100 |      100 |     100 |     100 |                   
  v5-to-v4.ts      |      96 |      100 |     100 |      96 | 94-95,99          
 src/core          |     100 |      100 |     100 |     100 |                   
  auth.ts          |     100 |      100 |     100 |     100 |                   
  initializer.ts   |     100 |      100 |     100 |     100 |                   
  theme.ts         |     100 |      100 |     100 |     100 |                   
 src/dualOutput    |   75.08 |    67.64 |   71.42 |   75.08 |                   
  ...tputBridge.ts |   75.33 |    68.18 |   73.68 |   75.33 | ...09-410,418-421 
  ...utContext.tsx |     100 |      100 |     100 |     100 |                   
  index.ts         |       0 |        0 |       0 |       0 | 1-8               
 src/export        |       0 |        0 |       0 |       0 |                   
  index.ts         |       0 |        0 |       0 |       0 | 1-7               
 src/generated     |     100 |      100 |     100 |     100 |                   
  git-commit.ts    |     100 |      100 |     100 |     100 |                   
 src/hooks         |     100 |      100 |     100 |     100 |                   
  ...elete-hook.ts |     100 |      100 |     100 |     100 |                   
 src/i18n          |   89.68 |    88.66 |   93.02 |   89.68 |                   
  index.ts         |   73.45 |    77.77 |      90 |   73.45 | ...70-271,294-299 
  languageUtils.ts |   98.88 |    97.01 |     100 |   98.88 | 184-185           
  languages.ts     |   93.07 |     92.3 |   85.71 |   93.07 | ...35,164-169,184 
  ...nslateKeys.ts |     100 |      100 |     100 |     100 |                   
  ...lationDict.ts |   93.33 |    66.66 |     100 |   93.33 | 15                
 src/i18n/locales  |     100 |      100 |     100 |     100 |                   
  ca.js            |     100 |      100 |     100 |     100 |                   
  de.js            |     100 |      100 |     100 |     100 |                   
  en.js            |     100 |      100 |     100 |     100 |                   
  fr.js            |     100 |      100 |     100 |     100 |                   
  ja.js            |     100 |      100 |     100 |     100 |                   
  pt.js            |     100 |      100 |     100 |     100 |                   
  ru.js            |     100 |      100 |     100 |     100 |                   
  zh-TW.js         |     100 |      100 |     100 |     100 |                   
  zh.js            |     100 |      100 |     100 |     100 |                   
 ...nonInteractive |   87.37 |    83.73 |   89.32 |   87.37 |                   
  ...ng-failure.ts |     100 |      100 |     100 |     100 |                   
  ...iveHelpers.ts |   94.95 |    91.05 |     100 |   94.95 | ...30-431,529,542 
  ...uggestions.ts |   84.29 |    70.83 |     100 |   84.29 | 70-76,92-103      
  session.ts       |   84.97 |    76.31 |   96.07 |   84.97 | ...1048,1057-1067 
  ...iagnostics.ts |    95.8 |     87.5 |   93.75 |    95.8 | ...03,277-278,289 
  types.ts         |    42.5 |      100 |   33.33 |    42.5 | ...33-634,637-638 
 ...active/control |   75.54 |    89.83 |      80 |   75.54 |                   
  ...rolContext.ts |    6.06 |        0 |       0 |    6.06 | 57-99             
  ...Dispatcher.ts |   91.95 |    92.98 |   88.88 |   91.95 | ...54-372,392,395 
  ...rolService.ts |    6.89 |        0 |       0 |    6.89 | 46-188            
 ...ol/controllers |   57.47 |     66.3 |   73.68 |   57.47 |                   
  ...Controller.ts |    42.4 |      100 |   83.33 |    42.4 | 101-105,140-223   
  ...Controller.ts |       0 |        0 |       0 |       0 | 1-56              
  ...Controller.ts |   70.04 |    62.92 |   91.66 |   70.04 | ...11-620,635-640 
  ...Controller.ts |   49.23 |       60 |      50 |   49.23 | ...07-108,111-121 
  ...Controller.ts |   53.96 |    67.08 |   66.66 |   53.96 | ...78-690,699-728 
 .../control/types |       0 |        0 |       0 |       0 |                   
  serviceAPIs.ts   |       0 |        0 |       0 |       0 | 1                 
 ...Interactive/io |   98.18 |    94.11 |   95.34 |   98.18 |                   
  ...putAdapter.ts |   98.07 |    93.21 |   98.11 |   98.07 | ...1448,1464-1465 
  ...putAdapter.ts |   96.22 |    91.66 |   85.71 |   96.22 | 52-53             
  ...nputReader.ts |     100 |    94.73 |     100 |     100 | 67                
  ...putAdapter.ts |   98.51 |      100 |   90.47 |   98.51 | 90-91,131-132     
  ...projection.ts |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
 src/patches       |       0 |        0 |       0 |       0 |                   
  is-in-ci.ts      |       0 |        0 |       0 |       0 | 1-17              
 src/peerMessaging |   90.64 |    85.29 |      96 |   90.64 |                   
  ...ngContext.tsx |     100 |      100 |     100 |     100 |                   
  ...-messaging.ts |   90.45 |    85.07 |   95.83 |   90.45 | ...01-306,347-352 
 src/remoteInput   |   87.31 |    75.32 |   88.23 |   87.31 |                   
  ...utContext.tsx |     100 |      100 |     100 |     100 |                   
  ...putWatcher.ts |   88.01 |       76 |   93.33 |   88.01 | ...49-350,361-364 
  index.ts         |       0 |        0 |       0 |       0 | 1-8               
 src/runtime       |    99.7 |    96.32 |     100 |    99.7 |                   
  ...livery-ipc.ts |     100 |    91.17 |     100 |     100 | 94,106,134        
  ...l-delivery.ts |     100 |      100 |     100 |     100 |                   
  cpu-percent.ts   |     100 |      100 |     100 |     100 |                   
  ...ion-source.ts |     100 |      100 |     100 |     100 |                   
  ...erver-name.ts |     100 |      100 |     100 |     100 |                   
  ...-constants.ts |     100 |      100 |     100 |     100 |                   
  ...-summaries.ts |   86.66 |       50 |     100 |   86.66 | 11,19             
  ...ber-errors.ts |     100 |    95.32 |     100 |     100 | 53,93-94,172,192  
  ...ls-mapping.ts |     100 |      100 |     100 |     100 |                   
 src/serve         |   87.42 |    84.99 |   90.73 |   87.42 |                   
  ...extra-args.ts |     100 |      100 |     100 |     100 |                   
  ...tp-enabled.ts |     100 |      100 |     100 |     100 |                   
  ...ion-bridge.ts |     100 |      100 |     100 |     100 |                   
  auth.ts          |   93.99 |     91.5 |     100 |   93.99 | ...29-430,433-435 
  ...em-adapter.ts |     100 |      100 |     100 |     100 |                   
  capabilities.ts  |     100 |    98.18 |     100 |     100 | 717               
  ...cp-command.ts |     100 |      100 |     100 |     100 |                   
  ...horization.ts |   92.79 |    93.54 |    87.5 |   92.79 | 75-80,135-136     
  ...op-mcp-ipc.ts |   81.06 |    73.68 |   94.11 |   81.06 | ...37-242,267,289 
  ...nt-service.ts |    94.1 |    86.98 |     100 |    94.1 | ...75-477,484,486 
  ...-selection.ts |     100 |      100 |     100 |     100 |                   
  ...ings-store.ts |   89.61 |    94.37 |   96.55 |   89.61 | ...64-276,528-531 
  ...ebhook-ipc.ts |    98.5 |     87.5 |     100 |    98.5 | 47                
  ...iagnostics.ts |     100 |      100 |     100 |     100 |                   
  ...worker-env.ts |     100 |      100 |     100 |     100 |                   
  ...rker-group.ts |   87.32 |    85.33 |     100 |   87.32 | ...14,820-824,842 
  ...er-manager.ts |   89.39 |    83.88 |   93.33 |   89.39 | ...98,711,722-724 
  ...horization.ts |     100 |      100 |     100 |     100 |                   
  ...tartup-ipc.ts |   97.72 |    96.66 |     100 |   97.72 | 88-89             
  ...supervisor.ts |   93.24 |    85.42 |    97.4 |   93.24 | ...1765,1819-1823 
  ...e-grouping.ts |     100 |    94.28 |     100 |     100 | 71,137            
  core-runtime.ts  |     100 |      100 |     100 |     100 |                   
  ...ub-session.ts |   90.75 |    80.47 |   94.73 |   90.75 | ...1091,1112-1117 
  ...tree-guard.ts |   93.87 |    89.81 |     100 |   93.87 | ...3227,3297-3301 
  daemon-logger.ts |   82.82 |    78.68 |   92.04 |   82.82 | ...1775,1802-1808 
  ...y-pressure.ts |     100 |    96.96 |     100 |     100 | 135               
  ...trics-ring.ts |     100 |      100 |     100 |     100 |                   
  ...s-provider.ts |   68.04 |    52.77 |     100 |   68.04 | ...44-249,282-290 
  daemon-status.ts |   98.69 |    91.96 |     100 |   98.69 | ...1590,1592-1593 
  debug-mode.ts    |     100 |      100 |     100 |     100 |                   
  env-snapshot.ts  |   93.37 |    85.18 |     100 |   93.37 | 114-117,195-202   
  ...-scheduler.ts |   87.34 |    83.87 |     100 |   87.34 | 33-36,48-50,79-81 
  ...d-provider.ts |   92.06 |    87.09 |     100 |   92.06 | ...72,287-293,316 
  ...h-settings.ts |   94.94 |    90.45 |     100 |   94.94 | ...30,708,724,734 
  fast-path.ts     |   91.38 |       82 |   95.45 |   91.38 | ...46-555,633-634 
  ...ration-sse.ts |   42.55 |    33.33 |     100 |   42.55 | 23-24,30,33-56    
  health-query.ts  |     100 |      100 |     100 |     100 |                   
  index.ts         |       0 |        0 |       0 |       0 | 1-149             
  ...e-observer.ts |   89.89 |    83.24 |      96 |   89.89 | ...11-512,541-543 
  ...back-binds.ts |     100 |    88.88 |     100 |     100 | 32                
  ...-workspace.ts |   91.58 |    86.48 |     100 |   91.58 | ...44-145,156-157 
  ...pp-sandbox.ts |   96.72 |    95.23 |     100 |   96.72 | 41-42             
  ...iders-edit.ts |     100 |    82.14 |     100 |     100 | 58-60,65,81       
  ...ory-picker.ts |     100 |    86.95 |     100 |     100 | 36,66,92          
  ...-with-auth.ts |     100 |      100 |     100 |     100 |                   
  ...ate-blocks.ts |   99.03 |    94.73 |     100 |   99.03 | 133               
  ...sion-audit.ts |     100 |      100 |   93.33 |     100 |                   
  ...nal-ledger.ts |    94.9 |    84.78 |     100 |    94.9 | ...81,302,361-362 
  rate-limit.ts    |   92.68 |    88.29 |     100 |   92.68 | ...89-291,303-305 
  ...qwen-serve.ts |   84.69 |    81.44 |   76.99 |   84.69 | ...9116,9134-9138 
  ...tup-errors.ts |     100 |      100 |     100 |     100 |                   
  sandbox.ts       |   45.52 |    59.42 |   76.92 |   45.52 | ...1050,1062-1085 
  ...-keepalive.ts |   94.31 |    89.28 |     100 |   94.31 | ...37,541-542,581 
  ...-lifecycle.ts |     100 |      100 |     100 |     100 |                   
  ...-lifecycle.ts |   89.16 |    90.29 |   86.95 |   89.16 | ...24-325,330-334 
  serve-token.ts   |     100 |      100 |     100 |     100 |                   
  server.ts        |   89.07 |    91.03 |   70.31 |   89.07 | ...3165,3196-3197 
  ...-admission.ts |   99.13 |    95.94 |     100 |   99.13 | 308-309           
  ...on-helpers.ts |     100 |      100 |     100 |     100 |                   
  ...-redaction.ts |     100 |      100 |     100 |     100 |                   
  ...t-event-id.ts |     100 |    95.23 |     100 |     100 | 12                
  ...-admission.ts |   98.71 |    89.65 |     100 |   98.71 | 68                
  types.ts         |     100 |      100 |     100 |     100 |                   
  ...ion-limits.ts |     100 |      100 |     100 |     100 |                   
  ...t-sessions.ts |   93.72 |    77.93 |     100 |   93.72 | ...51,854,867-869 
  ...l-resolver.ts |   90.32 |    66.66 |     100 |   90.32 | 16,45-46          
  ...ell-static.ts |   93.45 |    86.88 |     100 |   93.45 | ...77-280,323-326 
  ...ace-agents.ts |   66.13 |    70.57 |   92.68 |   66.13 | ...2246,2256-2266 
  ...generation.ts |    95.4 |    82.35 |   66.66 |    95.4 | 55-56,78,92       
  ...-git-state.ts |     100 |    91.93 |    90.9 |     100 | 161,172,202,265   
  ...ace-inputs.ts |     100 |      100 |     100 |     100 |                   
  ...ace-memory.ts |      83 |    74.54 |     100 |      83 | ...30-537,597-604 
  ...ers-status.ts |   98.63 |       80 |     100 |   98.63 | 108,136,186,189   
  ...tion-store.ts |   89.67 |    88.27 |   92.59 |   89.67 | ...91-400,411-414 
  ...e-registry.ts |   94.09 |    90.57 |     100 |   94.09 | ...90-591,598-599 
  ...e-remember.ts |   98.23 |    92.56 |     100 |   98.23 | ...36,340-345,386 
  ...te-runtime.ts |   89.88 |     90.9 |     100 |   89.88 | ...05-206,274-295 
  ...me-storage.ts |     100 |      100 |     100 |     100 |                   
  ...visibility.ts |     100 |      100 |     100 |     100 |                   
  ...management.ts |   72.63 |    72.83 |   96.15 |   72.63 | ...88-889,896-900 
  ...lls-status.ts |     100 |    95.45 |     100 |     100 | 152               
  ...reconciler.ts |   91.63 |    84.09 |     100 |   91.63 | ...71-273,306-307 
 ...serve/acp-http |    80.4 |    80.03 |   94.53 |    80.4 |                   
  ...r-registry.ts |   96.92 |    94.87 |     100 |   96.92 | 184-187           
  client-mcp-ws.ts |   54.85 |    58.62 |   72.72 |   54.85 | ...99-300,304-305 
  ...n-registry.ts |   93.03 |    84.13 |   98.52 |   93.03 | ...1624,1671-1682 
  dispatch.ts      |   75.71 |    76.82 |   93.44 |   75.71 | ...5649,5706-5712 
  index.ts         |   82.81 |    79.92 |   91.22 |   82.81 | ...2434,2520-2521 
  json-rpc.ts      |     100 |    96.96 |     100 |     100 | 92                
  ...ach-budget.ts |     100 |      100 |     100 |     100 |                   
  safe-ws-send.ts  |   52.94 |    71.42 |     100 |   52.94 | 33-42,47-55       
  sse-stream.ts    |   98.26 |    88.75 |     100 |   98.26 | 87-88,117         
  ...ort-stream.ts |       0 |        0 |       0 |       0 | 1                 
  ws-stream.ts     |   94.06 |    89.09 |     100 |   94.06 | 50,55,134,138-141 
 src/serve/auth    |   86.86 |     79.7 |   93.87 |   86.86 |                   
  device-flow.ts   |   96.35 |    80.57 |   97.61 |   96.35 | ...1358,1453,1519 
  ...w-provider.ts |   44.24 |    74.07 |   71.42 |   44.24 | ...23-284,297,301 
 ...rve/cdp-tunnel |   87.73 |    76.21 |    97.5 |   87.73 |                   
  ...r-emulator.ts |   93.27 |    77.77 |     100 |   93.27 | ...53-256,282-283 
  ...verse-link.ts |      88 |    76.19 |     100 |      88 | ...28-329,420-423 
  ...l-registry.ts |     100 |      100 |     100 |     100 |                   
  cdp-ws.ts        |   76.28 |    61.29 |    87.5 |   76.28 | ...13-217,223-228 
 ...nel/acceptance |    6.12 |    57.89 |   46.15 |    6.12 |                   
  ...helpers.d.mts |       0 |        0 |       0 |       0 | 1                 
  ...e-helpers.mjs |   97.64 |    70.96 |     100 |   97.64 | 22-23             
  ...mcp-smoke.mjs |       0 |        0 |       0 |       0 | 1-124             
  ...cceptance.mjs |       0 |        0 |       0 |       0 | 1-473             
  ...re-server.mjs |       0 |        0 |       0 |       0 | 1-59              
  ...ols-smoke.mjs |       0 |        0 |       0 |       0 | 1-268             
  real-tab.mjs     |       0 |        0 |       0 |       0 | 1-218             
  ...al-chrome.mjs |       0 |        0 |       0 |       0 | 1-223             
 .../conversations |   86.32 |    78.72 |   93.33 |   86.32 |                   
  ...e-activity.ts |     100 |      100 |     100 |     100 |                   
  ...ime-errors.ts |     100 |      100 |     100 |     100 |                   
  ...me-manager.ts |   97.88 |    94.91 |     100 |   97.88 | 64-65,92          
  ...-ownership.ts |   87.33 |    83.58 |   88.46 |   87.33 | ...57-558,601-602 
  ...-workspace.ts |   89.21 |    76.37 |     100 |   89.21 | ...52-554,568-572 
  ...on-journal.ts |   91.69 |    80.86 |     100 |   91.69 | ...46-747,753-755 
  ...on-service.ts |   83.22 |    75.11 |   89.01 |   83.22 | ...3014,3023-3025 
 src/serve/fs      |   87.77 |    82.34 |     100 |   87.77 |                   
  audit.ts         |     100 |    96.29 |     100 |     100 | 211               
  errors.ts        |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...x-registry.ts |     100 |      100 |     100 |     100 |                   
  paths.ts         |   77.64 |    74.01 |     100 |   77.64 | ...65,594-598,611 
  policy.ts        |   90.52 |    89.18 |     100 |   90.52 | 172-180           
  text-cursor.ts   |   88.23 |       90 |     100 |   88.23 | 74-77,92-95       
  ...ile-system.ts |   88.02 |    81.85 |     100 |   88.02 | ...3027,3037-3038 
 src/serve/live    |    76.6 |    70.53 |    90.2 |    76.6 |                   
  discovery.ts     |   85.89 |    82.05 |    91.3 |   85.89 | ...73-579,592-593 
  ...oordinator.ts |   82.67 |    76.63 |   97.01 |   82.67 | ...1319,1351-1353 
  ...-installer.ts |    64.3 |    82.35 |   80.76 |    64.3 | ...45-446,460-472 
  ...oordinator.ts |    76.7 |    67.47 |   85.71 |    76.7 | ...1885,1976-1977 
  ...controller.ts |   67.82 |    79.66 |      75 |   67.82 | ...66-278,287-295 
  ...sk-service.ts |   82.71 |    66.15 |   93.61 |   82.71 | ...1270,1283,1290 
  ...redentials.ts |   96.26 |    93.47 |     100 |   96.26 | 91-94             
  ...me-session.ts |   65.63 |    57.24 |   88.88 |   65.63 | ...2270,2275-2282 
  ...up-context.ts |   94.85 |    77.39 |     100 |   94.85 | ...18,327-330,350 
  types.ts         |     100 |      100 |     100 |     100 |                   
 .../local-control |   82.89 |    88.77 |      90 |   82.89 |                   
  credentials.ts   |   96.42 |    95.45 |     100 |   96.42 | 109-110           
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...interfaces.ts |   43.58 |    82.75 |   42.85 |   43.58 | ...09-117,130-142 
  ...r-identity.ts |     100 |    85.71 |     100 |     100 | 61                
  service.ts       |    93.4 |       90 |     100 |    93.4 | ...20-222,313-315 
 src/serve/routes  |   86.39 |    81.71 |   95.73 |   86.39 |                   
  a2ui-action.ts   |   96.84 |     88.5 |    87.5 |   96.84 | ...70-272,309-311 
  capabilities.ts  |   98.73 |    96.15 |     100 |   98.73 | 82                
  ...nel-notify.ts |   79.16 |    85.18 |     100 |   79.16 | ...03-104,120-126 
  ...l-webhooks.ts |   93.56 |    84.09 |     100 |   93.56 | ...42,292,332,334 
  daemon-status.ts |   85.71 |    83.33 |     100 |   85.71 | 101-108           
  goals.ts         |   98.94 |    91.17 |     100 |   98.94 | 143               
  health.ts        |   99.09 |    91.42 |     100 |   99.09 | 147               
  live-setup.ts    |   33.33 |     37.5 |      50 |   33.33 | ...18-123,130-135 
  live.ts          |   84.61 |    76.47 |     100 |   84.61 | ...04,106-111,131 
  permission.ts    |   96.03 |    87.87 |     100 |   96.03 | 81-84             
  ...uled-tasks.ts |   87.95 |    84.38 |   94.59 |   87.95 | ...1730,1775-1776 
  ...r-backfill.ts |   98.53 |    94.51 |     100 |   98.53 | ...48-249,616-617 
  ...on-runtime.ts |   91.42 |       90 |     100 |   91.42 | 56-64             
  session.ts       |   86.69 |    83.06 |    94.3 |   86.69 | ...7149,7151-7152 
  sse-events.ts    |   87.01 |    84.95 |   94.44 |   87.01 | ...40-951,954,961 
  ...e-sessions.ts |    86.9 |    80.57 |     100 |    86.9 | ...81-483,486-491 
  terminal.ts      |   92.81 |    90.35 |     100 |   92.81 | ...10-313,332-335 
  usage-stats.ts   |     100 |    95.45 |     100 |     100 | 118               
  ...space-auth.ts |   85.55 |    75.64 |     100 |   85.55 | ...21-326,331,345 
  ...el-control.ts |   86.26 |    78.94 |     100 |   86.26 | ...17-318,339-347 
  ...management.ts |   90.35 |    78.94 |     100 |   90.35 | ...52-553,576-577 
  ...d-contacts.ts |   83.62 |    94.59 |     100 |   83.62 | 123,125-142       
  ...controller.ts |   83.33 |    80.47 |      90 |   83.33 | ...1056,1061,1068 
  ...extensions.ts |    89.9 |    79.35 |   93.93 |    89.9 | ...2348,2393-2394 
  ...-file-read.ts |      91 |    80.91 |     100 |      91 | ...20-621,624-625 
  ...file-write.ts |   89.72 |    79.35 |     100 |   89.72 | ...05,719-726,807 
  ...t-branches.ts |   75.04 |     66.4 |     100 |   75.04 | ...99-604,613-620 
  ...e-git-diff.ts |   97.19 |    89.58 |     100 |   97.19 | 157-158,185-187   
  ...ce-git-log.ts |     100 |       95 |     100 |     100 | 48,73             
  workspace-git.ts |   74.71 |     87.5 |     100 |   74.71 | 83-104            
  ...github-prs.ts |   88.26 |    63.46 |     100 |   88.26 | ...38-239,264-265 
  ...-lifecycle.ts |   95.23 |    75.75 |     100 |   95.23 | ...50-151,186-187 
  ...al-control.ts |   74.17 |    69.23 |     100 |   74.17 | ...18,220-226,231 
  ...management.ts |   87.14 |    84.21 |     100 |   87.14 | ...1802,1812-1817 
  ...cp-control.ts |    73.2 |    67.54 |   85.71 |    73.2 | ...27-633,644-645 
  ...ace-models.ts |   95.53 |    89.74 |     100 |   95.53 | ...52-157,296-297 
  ...ermissions.ts |    77.9 |    72.41 |     100 |    77.9 | ...69-277,298-316 
  ...e-settings.ts |   75.67 |       75 |     100 |   75.67 | ...15-726,732-733 
  ...tup-github.ts |   77.97 |    70.58 |   84.21 |   77.97 | ...46-352,397-398 
  ...ace-skills.ts |   76.41 |    86.11 |     100 |   76.41 | ...29-354,360-394 
  ...ace-status.ts |   82.57 |    74.48 |     100 |   82.57 | ...71-473,477-478 
  ...pace-tools.ts |   75.94 |    69.69 |   66.66 |   75.94 | ...59-164,193-194 
  ...pace-trust.ts |   76.92 |     67.1 |      80 |   76.92 | ...38-343,351-352 
  ...pace-voice.ts |   91.33 |    81.02 |     100 |   91.33 | ...70-673,676-678 
 src/serve/server  |   93.06 |    91.22 |   97.39 |   93.06 |                   
  access-log.ts    |   98.73 |    97.26 |     100 |   98.73 | 119,196           
  ...-timestamp.ts |     100 |      100 |     100 |     100 |                   
  ...er-helpers.ts |   63.82 |    78.15 |   81.81 |   63.82 | ...16,330,332-347 
  ...w-registry.ts |    98.8 |    81.81 |     100 |    98.8 | 107               
  ...r-handlers.ts |   97.87 |       80 |     100 |   97.87 | 27                
  ...r-response.ts |   88.75 |    82.25 |     100 |   88.75 | ...61,878,941-950 
  fs-factory.ts    |     100 |    95.52 |     100 |     100 | 77,144,200        
  ...branch-ops.ts |     100 |      100 |     100 |     100 |                   
  ...list-cache.ts |   99.01 |    95.52 |     100 |   99.01 | 184-185           
  ...t-deadline.ts |     100 |      100 |     100 |     100 |                   
  ...iter-setup.ts |      65 |       80 |   33.33 |      65 | 30-35,38-43,47-48 
  ...st-helpers.ts |   95.13 |    95.14 |     100 |   95.13 | ...66-168,423-428 
  self-origin.ts   |   76.19 |       80 |     100 |   76.19 | 45-54             
  ...e-features.ts |   95.13 |     87.5 |     100 |   95.13 | 188-194           
  ...on-archive.ts |   91.29 |    89.33 |   97.61 |   91.29 | ...1133,1196-1197 
  ...ion-export.ts |   98.57 |    90.47 |     100 |   98.57 | 85                
  session-list.ts  |   97.27 |    93.89 |     100 |   97.27 | ...1183,1392-1396 
  ...pr-refresh.ts |   98.71 |    98.57 |     100 |   98.71 | 267-270           
  ...ry-context.ts |    87.5 |       50 |     100 |    87.5 | 49-50             
  telemetry.ts     |   99.06 |    97.26 |     100 |   99.06 | ...04,873,952-954 
 src/serve/voice   |    92.7 |    91.53 |   97.72 |    92.7 |                   
  ...ice-config.ts |   84.81 |       30 |     100 |   84.81 | 91-100,104-105    
  voice-ws.ts      |   91.58 |    93.44 |      96 |   91.58 | ...68,483,521-523 
  ...oordinator.ts |     100 |    98.24 |     100 |     100 | 176               
 ...kspace-service |   89.85 |    86.73 |    91.3 |   89.85 |                   
  index.ts         |   89.49 |    86.34 |      90 |   89.49 | ...1393-1397,1400 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/services      |    92.7 |    89.68 |   98.13 |    92.7 |                   
  ...mandLoader.ts |     100 |       95 |     100 |     100 | 107               
  ...killLoader.ts |   97.19 |    85.71 |     100 |   97.19 | 142,153-154       
  ...andService.ts |   98.73 |      100 |     100 |   98.73 | 107               
  ...mandLoader.ts |   87.09 |    83.07 |     100 |   87.09 | ...35-340,345-350 
  ...omptLoader.ts |   79.55 |    88.42 |   85.71 |   79.55 | ...48,178,245-246 
  ...mandLoader.ts |   97.77 |    92.45 |     100 |   97.77 | 176,183-184       
  ...nd-factory.ts |   91.42 |    91.66 |     100 |   91.42 | 128,137-144       
  ...ation-tool.ts |     100 |    95.45 |     100 |     100 | 125               
  ...ndMetadata.ts |   98.23 |    96.72 |     100 |   98.23 | 83,87             
  commandUtils.ts  |      96 |     90.9 |     100 |      96 | 48                
  ...and-parser.ts |   90.69 |    85.71 |     100 |   90.69 | 63-66             
  ...ionService.ts |     100 |      100 |     100 |     100 |                   
  prompt-stash.ts  |   96.66 |    92.85 |     100 |   96.66 | 34-35             
  ...tree-lease.ts |   92.14 |    92.42 |     100 |   92.14 | ...91-296,329-330 
  ...low-loader.ts |     100 |    96.29 |     100 |     100 | 88                
  setup-github.ts  |    90.8 |    80.95 |     100 |    90.8 | ...49-450,457-458 
  ...-args-file.ts |   93.93 |    91.66 |    87.5 |   93.93 | 208-210,224-230   
  types.ts         |     100 |      100 |     100 |     100 |                   
  ...e-keyterms.ts |   98.64 |    95.77 |     100 |   98.64 | 116,142-143       
  voice-model.ts   |     100 |      100 |     100 |     100 |                   
  voice-service.ts |    90.4 |    87.87 |     100 |    90.4 | ...81,288,353-358 
  ...e-settings.ts |     100 |    95.23 |     100 |     100 | 19                
  ...ranscriber.ts |   91.77 |    87.11 |   97.22 |   91.77 | ...96-898,901-903 
 ...s/housekeeping |      93 |    88.34 |      95 |      93 |                   
  scheduler.ts     |      93 |    88.34 |      95 |      93 | ...57-359,411-415 
 ...rvices/insight |     100 |      100 |     100 |     100 |                   
  dates.ts         |     100 |      100 |     100 |     100 |                   
 ...ght/generators |   88.94 |    86.86 |   96.29 |   88.94 |                   
  DataProcessor.ts |   88.31 |    86.84 |      95 |   88.31 | ...1368,1372-1379 
  ...tGenerator.ts |   98.24 |    85.71 |     100 |   98.24 | 47                
  ...teRenderer.ts |     100 |      100 |     100 |     100 |                   
 .../insight/types |       0 |       50 |      50 |       0 |                   
  ...sightTypes.ts |       0 |        0 |       0 |       0 |                   
  ...sightTypes.ts |       0 |        0 |       0 |       0 | 1                 
 ...mpt-processors |   97.27 |    94.25 |     100 |   97.27 |                   
  ...tProcessor.ts |     100 |      100 |     100 |     100 |                   
  ...eProcessor.ts |   94.52 |       85 |     100 |   94.52 | 46-47,93-94       
  ...tionParser.ts |     100 |      100 |     100 |     100 |                   
  ...lProcessor.ts |   97.41 |    95.83 |     100 |   97.41 | 96-99             
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/services/tips |   97.27 |    84.61 |     100 |   97.27 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  tipHistory.ts    |   92.59 |       70 |     100 |   92.59 | ...24,146,153,162 
  tipRegistry.ts   |     100 |      100 |     100 |     100 |                   
  tipScheduler.ts  |     100 |    91.66 |     100 |     100 | 55                
 src/startup       |   88.99 |    83.47 |    90.9 |   88.99 |                   
  ...p-prefetch.ts |   98.09 |    94.23 |    87.5 |   98.09 | 50,209,225-226    
  ...reeStartup.ts |   80.53 |     74.6 |     100 |   80.53 | ...94,403,409-412 
 src/test-utils    |    94.6 |    76.66 |      80 |    94.6 |                   
  ci-env.ts        |      88 |     62.5 |     100 |      88 | 22-23,28          
  ...omMatchers.ts |   69.69 |       50 |      50 |   69.69 | 32-35,37-39,45-47 
  ...mised-lock.ts |     100 |      100 |   66.66 |     100 |                   
  ...lot-client.ts |     100 |    66.66 |     100 |     100 | 31,39             
  ...andContext.ts |     100 |      100 |     100 |     100 |                   
  render.tsx       |     100 |      100 |     100 |     100 |                   
 src/ui            |   71.09 |    78.17 |   70.65 |   71.09 |                   
  App.tsx          |   33.33 |       75 |   33.33 |   33.33 | 32-86             
  AppContainer.tsx |   76.62 |    73.37 |   71.05 |   76.62 | ...4465,4581-4587 
  ...tionNudge.tsx |    9.58 |      100 |       0 |    9.58 | 24-94             
  ...ackDialog.tsx |    30.3 |      100 |       0 |    30.3 | 26-76             
  ...tionNudge.tsx |    7.69 |      100 |       0 |    7.69 | 25-103            
  colors.ts        |   63.63 |      100 |   41.17 |   63.63 | ...52,54-55,60-61 
  constants.ts     |     100 |      100 |     100 |     100 |                   
  ...AutoUpdate.ts |   93.54 |    94.64 |      90 |   93.54 | 126,131,202-213   
  keyMatchers.ts   |   95.91 |    97.14 |     100 |   95.91 | 25-26             
  ...tic-colors.ts |     100 |      100 |     100 |     100 |                   
  ...one-update.ts |   39.81 |    77.44 |   62.16 |   39.81 | ...1193,1196-1215 
  ...ractiveUI.tsx |   68.33 |    77.27 |   41.66 |   68.33 | ...63-465,495-500 
  ...inePresets.ts |   96.27 |    83.87 |     100 |   96.27 | ...97,402,410-412 
  systemInfo.ts    |   95.09 |    90.27 |     100 |   95.09 | ...54-255,260-264 
  ...InfoFields.ts |    87.5 |    65.85 |     100 |    87.5 | ...24-125,146-147 
  textConstants.ts |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
  ...e-relaunch.ts |   89.61 |    86.66 |      50 |   89.61 | 56-61,83-84       
 src/ui/auth       |   69.23 |    72.03 |   61.22 |   69.23 |                   
  AuthDialog.tsx   |   59.01 |     42.1 |   16.66 |   59.01 | ...25,332-354,358 
  ...nProgress.tsx |       0 |        0 |       0 |       0 | 1-64              
  ...etupSteps.tsx |   74.93 |    78.62 |   71.42 |   74.93 | ...92-902,918,921 
  useAuth.ts       |   94.83 |       75 |     100 |   94.83 | ...33-234,253-259 
  ...rSetupFlow.ts |   59.79 |    58.33 |     100 |   59.79 | ...82-403,420-463 
 src/ui/commands   |    84.6 |    84.46 |   91.68 |    84.6 |                   
  aboutCommand.ts  |     100 |      100 |     100 |     100 |                   
  ...or-command.ts |     100 |    95.65 |     100 |     100 | 104,182           
  agentsCommand.ts |   83.78 |      100 |      60 |   83.78 | 30-32,42-44       
  ...odeCommand.ts |    93.1 |    95.23 |     100 |    93.1 | 77-82             
  arenaCommand.ts  |   63.89 |    65.71 |   65.21 |   63.89 | ...01-606,691-699 
  authCommand.ts   |     100 |      100 |     100 |     100 |                   
  branchCommand.ts |     100 |      100 |     100 |     100 |                   
  btwCommand.ts    |   94.32 |    77.41 |     100 |   94.32 | 35-36,114-119     
  bugCommand.ts    |     100 |    77.77 |     100 |     100 | 28,62             
  cdCommand.ts     |    92.3 |    82.75 |     100 |    92.3 | ...,94-99,178,187 
  clearCommand.ts  |    80.9 |    70.83 |     100 |    80.9 | ...28-129,137-146 
  commands.ts      |   97.45 |    96.66 |     100 |   97.45 | 153-155           
  ...essCommand.ts |   80.71 |     64.7 |     100 |   80.71 | ...05-206,220-223 
  ...astCommand.ts |   84.75 |    76.47 |     100 |   84.75 | ...96-102,130-135 
  ...ig-command.ts |   93.12 |    88.42 |     100 |   93.12 | ...07-315,321-323 
  ...extCommand.ts |   73.75 |    74.02 |   83.33 |   73.75 | ...72-605,616-617 
  copyCommand.ts   |    98.7 |    96.29 |     100 |    98.7 | 66-67,172,272,323 
  ...or-command.ts |   85.95 |    80.55 |   88.88 |   85.95 | ...68-274,298-309 
  deleteCommand.ts |     100 |      100 |     100 |     100 |                   
  diffCommand.ts   |     100 |    87.87 |     100 |     100 | ...63,231-232,245 
  ...ryCommand.tsx |   90.56 |    87.83 |    90.9 |   90.56 | ...75-280,327-334 
  docsCommand.ts   |     100 |     90.9 |     100 |     100 | 26                
  doctorChecks.ts  |   70.31 |    74.57 |     100 |   70.31 | ...95-301,325-341 
  doctorCommand.ts |   70.16 |    84.61 |      95 |   70.16 | ...29-679,682-816 
  dreamCommand.ts  |   85.45 |    88.88 |     100 |   85.45 | 58-65             
  editorCommand.ts |     100 |      100 |     100 |     100 |                   
  ...rt-command.ts |   80.95 |       80 |     100 |   80.95 | 49-54,69-72,93-98 
  effort-utils.ts  |     100 |      100 |     100 |     100 |                   
  exportCommand.ts |   98.25 |    91.02 |     100 |   98.25 | ...81,198-199,364 
  ...onsCommand.ts |   52.31 |    56.25 |   69.23 |   52.31 | ...09,277-329,390 
  forgetCommand.ts |     100 |       90 |     100 |     100 | 59                
  forkCommand.ts   |     100 |    94.11 |     100 |     100 | 95,146            
  goalCommand.ts   |     100 |    96.49 |     100 |     100 | 139,192           
  helpCommand.ts   |     100 |      100 |     100 |     100 |                   
  ...oryCommand.ts |     100 |      100 |     100 |     100 |                   
  hooksCommand.ts  |   81.25 |    65.71 |   85.71 |   81.25 | ...,86-93,131-132 
  ideCommand.ts    |   60.75 |    64.28 |   41.17 |   60.75 | ...05-306,310-324 
  ...figCommand.ts |    58.5 |    74.07 |      80 |    58.5 | ...21-331,334-343 
  initCommand.ts   |   91.86 |       80 |     100 |   91.86 | 48,83-88          
  ...ghtCommand.ts |   77.87 |    71.42 |     100 |   77.87 | ...44-245,250-272 
  ...ageCommand.ts |   94.63 |    90.66 |     100 |   94.63 | ...25-226,253-263 
  learn-command.ts |     100 |      100 |     100 |     100 |                   
  lspCommand.ts    |     100 |    86.95 |     100 |     100 | 31,102-103        
  mcpCommand.ts    |     100 |      100 |     100 |     100 |                   
  memoryCommand.ts |     100 |      100 |     100 |     100 |                   
  modelCommand.ts  |   86.28 |    86.29 |     100 |   86.28 | ...1112,1146-1151 
  peers-command.ts |     100 |    94.36 |     100 |     100 | 59,70,223,228     
  ...onsCommand.ts |     100 |      100 |     100 |     100 |                   
  planCommand.ts   |   78.82 |    76.92 |     100 |   78.82 | 30-35,51-56,68-73 
  quitCommand.ts   |     100 |      100 |     100 |     100 |                   
  recapCommand.ts  |   21.81 |      100 |      50 |   21.81 | 24-73             
  ...ns-command.ts |   98.83 |    81.81 |     100 |   98.83 | 100               
  ...berCommand.ts |     100 |     87.5 |     100 |     100 | 46                
  renameCommand.ts |    89.6 |       90 |     100 |    89.6 | ...72-176,212-219 
  ...oreCommand.ts |   90.96 |    86.04 |     100 |   90.96 | ...41-146,177-178 
  resumeCommand.ts |     100 |      100 |     100 |     100 |                   
  rewindCommand.ts |   81.25 |      100 |      50 |   81.25 | 20-22             
  ...ngsCommand.ts |     100 |      100 |     100 |     100 |                   
  ...hubCommand.ts |   89.47 |       75 |      80 |   89.47 | 54-59             
  skillsCommand.ts |   78.82 |    81.81 |     100 |   78.82 | 37-52,78,97       
  statsCommand.ts  |   90.65 |    76.73 |     100 |   90.65 | ...30-733,825-832 
  ...ineCommand.ts |     100 |      100 |     100 |     100 |                   
  ...aryCommand.ts |   73.04 |     82.3 |      90 |   73.04 | ...20-547,561-565 
  tasksCommand.ts  |   77.33 |    72.13 |     100 |   77.33 | ...46-150,173-178 
  ...tupCommand.ts |     100 |      100 |     100 |     100 |                   
  themeCommand.ts  |     100 |      100 |     100 |     100 |                   
  toolsCommand.ts  |     100 |      100 |     100 |     100 |                   
  trustCommand.ts  |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
  ...te-command.ts |     100 |    94.11 |     100 |     100 | 74,148            
  vimCommand.ts    |     100 |      100 |     100 |     100 |                   
  voice-command.ts |   93.63 |       88 |     100 |   93.63 | 36,98-103         
  ...owsCommand.ts |   94.38 |    85.29 |     100 |   94.38 | ...78-183,282-287 
 src/ui/components |   73.25 |    80.22 |    77.7 |   73.25 |                   
  AboutBox.tsx     |     100 |      100 |     100 |     100 |                   
  AnsiOutput.tsx   |   65.57 |      100 |      50 |   65.57 | 69-90             
  ApiKeyInput.tsx  |       0 |        0 |       0 |       0 | 1-97              
  AppHeader.tsx    |    88.7 |       75 |     100 |    88.7 | 36,38-43,45       
  ...odeDialog.tsx |   87.24 |    72.22 |   33.33 |   87.24 | ...85,233-238,245 
  AsciiArt.ts      |     100 |      100 |     100 |     100 |                   
  ...Indicator.tsx |   95.65 |    66.66 |     100 |   95.65 | 27,52             
  ...TextInput.tsx |   89.06 |    90.78 |     100 |   89.06 | ...87-289,303-305 
  Composer.tsx     |   94.54 |    66.66 |     100 |   94.54 | ...-76,88,143,158 
  ...entPrompt.tsx |     100 |      100 |     100 |     100 |                   
  ...ryDisplay.tsx |   75.89 |    62.06 |     100 |   75.89 | ...,88,93-108,113 
  ...geDisplay.tsx |   68.42 |    57.14 |     100 |   68.42 | 16-17,31-32,42-50 
  CronPill.tsx     |     100 |    93.75 |     100 |     100 | 19                
  ...ification.tsx |      84 |       60 |     100 |      84 | 23-24,40-42       
  ...gProfiler.tsx |       0 |        0 |       0 |       0 | 1-36              
  ...ogManager.tsx |   11.28 |      100 |       0 |   11.28 | 71-598            
  DiffDialog.tsx   |    53.5 |     37.5 |   69.23 |    53.5 | ...32-737,747-760 
  ...ngsDialog.tsx |    8.44 |      100 |       0 |    8.44 | 37-195            
  EffortDialog.tsx |   97.36 |      100 |     100 |   97.36 | 55-56             
  ExitWarning.tsx  |     100 |      100 |     100 |     100 |                   
  ...hProgress.tsx |    87.8 |    33.33 |     100 |    87.8 | 28-31,56          
  ...gsDisplay.tsx |     100 |    96.87 |   83.33 |     100 | 69                
  ...ustDialog.tsx |     100 |      100 |     100 |     100 |                   
  Footer.tsx       |   81.27 |    69.23 |      50 |   81.27 | ...06,245,267-272 
  GoalPill.tsx     |   93.51 |    81.81 |     100 |   93.51 | 37-38,106-109,123 
  Header.tsx       |   98.65 |    94.73 |     100 |   98.65 | 173,175           
  Help.tsx         |   98.33 |       90 |     100 |   98.33 | ...25,382,448-449 
  ...emDisplay.tsx |   79.69 |    67.61 |     100 |   79.69 | ...17,520,523-529 
  ...ngeDialog.tsx |     100 |      100 |     100 |     100 |                   
  InputPrompt.tsx  |   86.26 |     83.3 |      80 |   86.26 | ...2231,2252,2348 
  ...Shortcuts.tsx |     100 |       88 |     100 |     100 | 98,119            
  ...Indicator.tsx |   98.18 |    97.82 |     100 |   98.18 | 161-162           
  ...firmation.tsx |   91.42 |      100 |      50 |   91.42 | 26-31             
  MainContent.tsx  |   95.88 |    96.03 |   46.15 |   95.88 | ...20,523-527,530 
  MemoryDialog.tsx |   86.59 |    80.15 |     100 |   86.59 | ...34-435,485,553 
  ...geDisplay.tsx |       0 |        0 |       0 |       0 | 1-41              
  ModelDialog.tsx  |   85.22 |    74.17 |     100 |   85.22 | ...1042,1098,1100 
  ...tsDisplay.tsx |     100 |    97.22 |     100 |     100 | 270               
  ...fications.tsx |   16.66 |      100 |       0 |   16.66 | 14-56             
  ...onsDialog.tsx |    2.13 |      100 |       0 |    2.13 | 62-133,148-1004   
  ...ryDisplay.tsx |     100 |      100 |     100 |     100 |                   
  ...icePrompt.tsx |   92.64 |    85.71 |     100 |   92.64 | 102-106,134-139   
  PrepareLabel.tsx |   91.66 |    77.27 |     100 |   91.66 | 73-75,77-79,110   
  ...atePrompt.tsx |    8.57 |      100 |       0 |    8.57 | 24-55,58-134      
  ...geDisplay.tsx |     100 |      100 |     100 |     100 |                   
  ...ngDisplay.tsx |   21.42 |      100 |       0 |   21.42 | 13-39             
  ...hProgress.tsx |   85.25 |    88.46 |     100 |   85.25 | 121-147           
  ...ngSpinner.tsx |   67.85 |    85.71 |      50 |   67.85 | 33-50,71,78-79    
  ...dSelector.tsx |   92.79 |    82.65 |     100 |   92.79 | ...19-323,354-370 
  ...ionPicker.tsx |   83.66 |    72.13 |     100 |   83.66 | ...96,402,444-466 
  ...onPreview.tsx |   93.58 |    83.78 |     100 |   93.58 | ...,70-71,195-197 
  ...ryDisplay.tsx |     100 |      100 |     100 |     100 |                   
  ...putPrompt.tsx |   92.06 |    86.36 |   83.33 |   92.06 | ...,70-72,120-123 
  ...tedDialog.tsx |     100 |      100 |     100 |     100 |                   
  ...ngsDialog.tsx |   71.55 |    73.89 |   69.23 |   71.55 | ...1252,1258-1259 
  ...ionDialog.tsx |    92.3 |    96.15 |   33.33 |    92.3 | 60-63,68-75,164   
  ...putPrompt.tsx |    15.9 |      100 |       0 |    15.9 | 20-63             
  ...Indicator.tsx |   57.14 |      100 |       0 |   57.14 | 12-15             
  ...MoreLines.tsx |      28 |      100 |       0 |      28 | 18-40             
  ...iewDialog.tsx |   97.77 |    87.67 |     100 |   97.77 | ...97,305-307,324 
  ...tsDisplay.tsx |   95.86 |       75 |     100 |   95.86 | 67-71             
  ...ionPicker.tsx |       0 |        0 |       0 |       0 | 1-171             
  ...tivityTab.tsx |    3.94 |      100 |       0 |    3.94 | 27-275            
  StatsDialog.tsx  |    8.64 |      100 |       0 |    8.64 | ...76-111,130-322 
  StatsDisplay.tsx |     100 |      100 |     100 |     100 |                   
  ...ciencyTab.tsx |    78.9 |    56.52 |     100 |    78.9 | ...26,213,262-288 
  ...atmapView.tsx |    8.98 |      100 |       0 |    8.98 | 20-107            
  ...essionTab.tsx |      80 |    66.66 |     100 |      80 | ...70-277,283-300 
  ...ineDialog.tsx |    93.9 |    86.88 |     100 |    93.9 | ...20,282,302-304 
  ...yTodoList.tsx |   96.36 |    88.23 |     100 |   96.36 | 138-141           
  ...nsDisplay.tsx |   95.62 |    87.09 |     100 |   95.62 | ...24-125,273-275 
  ...inalImage.tsx |     100 |    93.93 |     100 |     100 | 75,129            
  ThemeDialog.tsx  |   89.95 |    46.15 |      75 |   89.95 | ...71-173,243-245 
  Tips.tsx         |   93.54 |       75 |     100 |   93.54 | 39-40             
  TodoDisplay.tsx  |     100 |      100 |     100 |     100 |                   
  ...tsDisplay.tsx |     100 |     87.5 |     100 |     100 | 31-32             
  TrustDialog.tsx  |     100 |    83.33 |     100 |     100 | 72-87             
  ...ification.tsx |   36.36 |      100 |       0 |   36.36 | 15-22             
  ...Indicator.tsx |    92.5 |     87.5 |     100 |    92.5 | 50-53             
  ...ackDialog.tsx |    7.84 |      100 |       0 |    7.84 | 24-134            
  ...xitDialog.tsx |   80.36 |    43.47 |      60 |   80.36 | ...24-238,248-251 
  ...odeVisuals.ts |   97.22 |    85.71 |     100 |   97.22 | 25                
  ...s-helpers.tsx |   66.25 |    81.25 |      50 |   66.25 | 25-32,46-53,62-72 
 ...nts/agent-view |    61.5 |    75.57 |    62.5 |    61.5 |                   
  ...atContent.tsx |    9.09 |      100 |       0 |    9.09 | 54-275,281-283    
  ...tChatView.tsx |     100 |    81.81 |     100 |     100 | 82                
  ...tComposer.tsx |   78.35 |     64.7 |   66.66 |   78.35 | ...64,277,303-305 
  AgentFooter.tsx  |   15.38 |      100 |       0 |   15.38 | 28-65             
  AgentHeader.tsx  |   15.38 |      100 |       0 |   15.38 | 27-64             
  AgentTabBar.tsx  |    87.9 |    63.88 |     100 |    87.9 | ...88,110-118,136 
  ...oryAdapter.ts |     100 |    91.83 |     100 |     100 | 103,109-110,138   
  index.ts         |       0 |        0 |       0 |       0 | 1-12              
 ...mponents/arena |   45.51 |    70.53 |   60.86 |   45.51 |                   
  ArenaCards.tsx   |   73.06 |    71.79 |   85.71 |   73.06 | ...83-185,321-326 
  ...ectDialog.tsx |   83.48 |    69.86 |   88.88 |   83.48 | ...88-392,409-410 
  ...artDialog.tsx |    9.77 |      100 |       0 |    9.77 | 27-166            
  ...tusDialog.tsx |    5.63 |      100 |       0 |    5.63 | 33-75,80-288      
  ...topDialog.tsx |    6.17 |      100 |       0 |    6.17 | 33-213            
 ...ackground-view |   85.86 |     85.1 |   92.98 |   85.86 |                   
  ...sksDialog.tsx |   82.66 |    83.09 |   85.71 |   82.66 | ...1854,1977-1983 
  ...TasksPill.tsx |   78.84 |    94.28 |     100 |   78.84 | 64,109-129        
  ...gentPanel.tsx |   97.08 |    86.31 |     100 |   97.08 | 132,442-446,520   
  agent-forest.ts  |    99.2 |    93.93 |     100 |    99.2 | 258               
  ...Visibility.ts |     100 |      100 |     100 |     100 |                   
  ...e-overlay.tsx |    88.2 |    76.47 |     100 |    88.2 | ...36-138,140-142 
 ...nts/extensions |   84.32 |    76.78 |   83.33 |   84.32 |                   
  ...gerDialog.tsx |   82.15 |    76.08 |     100 |   82.15 | ...91-198,258,260 
  TabBar.tsx       |   97.29 |    88.88 |     100 |   97.29 | 33                
  index.ts         |       0 |        0 |       0 |       0 | 1-12              
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...tensions/steps |   46.26 |       85 |   58.82 |   46.26 |                   
  ...ctionStep.tsx |   95.12 |    92.85 |   85.71 |   95.12 | 84-86,89          
  ...etailStep.tsx |       0 |        0 |       0 |       0 | 1-145             
  ...nListStep.tsx |   75.26 |    88.37 |   66.66 |   75.26 | ...53,174,203-209 
  ...electStep.tsx |       0 |        0 |       0 |       0 | 1-83              
  ...nfirmStep.tsx |   16.32 |      100 |       0 |   16.32 | 28-74             
  index.ts         |       0 |        0 |       0 |       0 | 1-11              
 ...xtensions/tabs |   71.92 |    68.21 |   70.83 |   71.92 |                   
  DiscoverTab.tsx  |   68.22 |    67.66 |   55.55 |   68.22 | ...93,656-660,664 
  InstalledTab.tsx |   75.49 |    67.44 |   83.33 |   75.49 | ...77,782-783,820 
  SourcesTab.tsx   |   71.67 |    70.47 |   77.77 |   71.67 | ...28,547,621-633 
 ...tensions/views |    50.7 |    52.38 |   20.83 |    50.7 |                   
  ...tionsView.tsx |   73.75 |    56.36 |   66.66 |   73.75 | ...30,353,369-374 
  ...tionsView.tsx |   43.45 |    44.82 |    6.66 |   43.45 | ...98-405,408-420 
  ...etailView.tsx |    9.24 |      100 |       0 |    9.24 | 40-67,70-163      
 ...mponents/hooks |   87.11 |    81.37 |   91.89 |   87.11 |                   
  ...rListBody.tsx |   95.29 |    85.18 |     100 |   95.29 | 95-98             
  ...etailStep.tsx |   75.32 |    71.42 |      60 |   75.32 | ...56-169,173-186 
  ...etailStep.tsx |     100 |      100 |     100 |     100 |                   
  ...rListStep.tsx |     100 |      100 |     100 |     100 |                   
  ...entHeader.tsx |     100 |    85.71 |     100 |     100 | 47                
  ...rListStep.tsx |     100 |      100 |     100 |     100 |                   
  ...etailStep.tsx |     100 |      100 |     100 |     100 |                   
  ...abledStep.tsx |     100 |      100 |     100 |     100 |                   
  ...sListStep.tsx |     100 |      100 |     100 |     100 |                   
  ...entDialog.tsx |   72.29 |    70.49 |     100 |   72.29 | ...51,563-568,572 
  constants.ts     |     100 |      100 |     100 |     100 |                   
  index.ts         |       0 |        0 |       0 |       0 | 1-13              
  ...erGrouping.ts |     100 |      100 |     100 |     100 |                   
  sourceLabels.ts  |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...components/mcp |   40.91 |    63.44 |   70.58 |   40.91 |                   
  ...ealthPill.tsx |     100 |      100 |     100 |     100 |                   
  ...entDialog.tsx |   32.09 |    26.19 |      40 |   32.09 | ...12,914,927-933 
  ...valDialog.tsx |   15.06 |      100 |       0 |   15.06 | 40-109            
  constants.ts     |     100 |      100 |     100 |     100 |                   
  index.ts         |       0 |        0 |       0 |       0 | 1-35              
  types.ts         |     100 |      100 |     100 |     100 |                   
  utils.ts         |      97 |       95 |     100 |      97 | 24,113-114        
 ...ents/mcp/steps |   53.94 |    73.51 |   57.14 |   53.94 |                   
  ...icateStep.tsx |    5.65 |      100 |       0 |    5.65 | 40-66,69-308      
  ...electStep.tsx |   10.95 |      100 |       0 |   10.95 | 16-88             
  ...etailStep.tsx |     100 |      100 |     100 |     100 |                   
  ...eListStep.tsx |   99.09 |    97.36 |     100 |   99.09 | 71                
  ...etailStep.tsx |   62.83 |       60 |   33.33 |   62.83 | ...87-296,307-332 
  ...rListStep.tsx |   88.53 |    81.25 |     100 |   88.53 | ...64,170,175-180 
  ...etailStep.tsx |    10.3 |      100 |       0 |    10.3 | ...1,67-79,82-140 
  ToolListStep.tsx |   69.29 |       50 |     100 |   69.29 | ...23,126,135-144 
 ...nents/messages |   90.78 |    87.65 |   86.79 |   90.78 |                   
  ...orMessage.tsx |     100 |      100 |     100 |     100 |                   
  ...ionDialog.tsx |   89.23 |     84.9 |   81.81 |   89.23 | ...75,593,611-613 
  BtwMessage.tsx   |     100 |      100 |     100 |     100 |                   
  ...upDisplay.tsx |     100 |    94.73 |     100 |     100 | ...43,289,402,432 
  ...onMessage.tsx |   93.24 |       85 |     100 |   93.24 | 73-75,77,79       
  ...nMessages.tsx |   94.11 |    95.91 |   76.92 |   94.11 | ...47-349,352-355 
  DiffRenderer.tsx |   93.17 |    86.02 |     100 |   93.17 | ...07,235-236,302 
  ...tsDisplay.tsx |   97.08 |    77.77 |     100 |   97.08 | 95,97,106         
  ...usMessage.tsx |   81.73 |     65.9 |      75 |   81.73 | ...10-214,222,245 
  ...tsDisplay.tsx |   95.52 |    88.31 |     100 |   95.52 | ...40,142,175-180 
  ...ssMessage.tsx |    12.5 |      100 |       0 |    12.5 | 18-59             
  ...edMessage.tsx |   21.05 |      100 |       0 |   21.05 | 23-39             
  ...sMessages.tsx |   59.04 |       50 |    37.5 |   59.04 | ...21-126,147-159 
  ...ryMessage.tsx |   13.63 |      100 |       0 |   13.63 | 23-64             
  ...onMessage.tsx |   91.87 |    82.51 |     100 |   91.87 | ...49-651,658-660 
  ...upMessage.tsx |   98.38 |    95.38 |     100 |   98.38 | 188-191,422       
  ToolMessage.tsx  |   95.04 |    89.55 |     100 |   95.04 | ...1075,1120-1122 
 ...ponents/shared |    86.4 |    82.06 |    86.6 |    86.4 |                   
  ...ctionList.tsx |     100 |      100 |      75 |     100 |                   
  ...tonSelect.tsx |     100 |      100 |     100 |     100 |                   
  ...rBoundary.tsx |     100 |      100 |     100 |     100 |                   
  MaxSizedBox.tsx  |   84.71 |    87.05 |      90 |   84.71 | ...67-568,685-686 
  MultiSelect.tsx  |   93.58 |       75 |     100 |   93.58 | ...43,199-201,211 
  ...tonSelect.tsx |     100 |      100 |     100 |     100 |                   
  ...ontroller.tsx |     100 |    83.33 |     100 |     100 | 73,93-95          
  ...eSelector.tsx |     100 |       60 |     100 |     100 | 40-45             
  ...lableList.tsx |   90.37 |    82.85 |   18.18 |   90.37 | ...60-63,65,73-76 
  StaticRender.tsx |     100 |      100 |     100 |     100 |                   
  TextInput.tsx    |    80.8 |    67.79 |      80 |    80.8 | ...36-240,252-258 
  ...ontroller.tsx |     100 |    81.81 |     100 |     100 | 59-62             
  ...apsedTime.tsx |     100 |      100 |     100 |     100 |                   
  ...Indicator.tsx |     100 |      100 |     100 |     100 |                   
  ...lizedList.tsx |   91.49 |    86.66 |   83.33 |   91.49 | ...18-846,859,959 
  text-buffer.ts   |   85.98 |    81.78 |   97.91 |   85.98 | ...2664,2762-2763 
  ...er-actions.ts |   73.93 |    67.22 |     100 |   73.93 | ...32-733,934-936 
 ...ponents/skills |    3.99 |      100 |       0 |    3.99 |                   
  ...gerDialog.tsx |    3.99 |      100 |       0 |    3.99 | 79-137,140-678    
 ...ents/subagents |   30.87 |        0 |       0 |   30.87 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  index.ts         |       0 |        0 |       0 |       0 | 1-11              
  reducers.tsx     |    12.1 |      100 |       0 |    12.1 | 33-190            
  types.ts         |     100 |      100 |     100 |     100 |                   
  utils.ts         |   10.95 |      100 |       0 |   10.95 | ...1,56-57,60-102 
 ...bagents/create |    9.13 |      100 |       0 |    9.13 |                   
  ...ionWizard.tsx |    7.28 |      100 |       0 |    7.28 | 34-299            
  ...rSelector.tsx |   14.75 |      100 |       0 |   14.75 | 26-85             
  ...onSummary.tsx |    4.26 |      100 |       0 |    4.26 | 27-331            
  ...tionInput.tsx |    8.63 |      100 |       0 |    8.63 | 23-177            
  ...dSelector.tsx |   33.33 |      100 |       0 |   33.33 | 20-21,26-27,36-63 
  ...nSelector.tsx |    37.5 |      100 |       0 |    37.5 | 20-21,26-27,36-58 
  ...EntryStep.tsx |   12.76 |      100 |       0 |   12.76 | 34-78             
  ToolSelector.tsx |    4.16 |      100 |       0 |    4.16 | 31-253            
 ...bagents/manage |    21.6 |    59.52 |   27.27 |    21.6 |                   
  ...ctionStep.tsx |   10.25 |      100 |       0 |   10.25 | 21-103            
  ...eleteStep.tsx |   20.93 |      100 |       0 |   20.93 | 23-62             
  ...tEditStep.tsx |   25.53 |      100 |       0 |   25.53 | ...2,37-38,51-124 
  ...ctionStep.tsx |   35.61 |    59.52 |     100 |   35.61 | ...21-433,438-440 
  ...iewerStep.tsx |   13.72 |      100 |       0 |   13.72 | 18-73             
  ...gerDialog.tsx |    6.74 |      100 |       0 |    6.74 | 35-341            
 ...mponents/views |    70.1 |    72.89 |   61.11 |    70.1 |                   
  ContextUsage.tsx |   71.49 |    64.86 |      80 |   71.49 | ...30-436,473-567 
  DoctorReport.tsx |     9.8 |      100 |       0 |     9.8 | 25-54,57-131      
  ...sionsList.tsx |   88.05 |       75 |     100 |   88.05 | 70-77             
  McpStatus.tsx    |   92.01 |     73.8 |     100 |   92.01 | ...36,175-177,262 
  SkillsList.tsx   |   20.51 |      100 |       0 |   20.51 | 17-20,27-57       
  ToolsList.tsx    |     100 |      100 |     100 |     100 |                   
 src/ui/contexts   |   86.47 |    82.34 |   86.48 |   86.47 |                   
  ...ewContext.tsx |   91.66 |       90 |      75 |   91.66 | ...89-193,279-289 
  AppContext.tsx   |      80 |       50 |     100 |      80 | 19-20             
  ...ewContext.tsx |   93.83 |    68.51 |   42.85 |   93.83 | ...44,281-285,317 
  ...igContext.tsx |   81.81 |       50 |     100 |   81.81 | 15-16             
  ...ssContext.tsx |   85.65 |    84.85 |     100 |   85.65 | ...1612-1614,1620 
  ...owContext.tsx |   91.07 |    81.81 |     100 |   91.07 | 47-48,60-62       
  ...deContext.tsx |     100 |      100 |      50 |     100 |                   
  ...onContext.tsx |   80.77 |       80 |    92.3 |   80.77 | ...31-434,443-446 
  ...gsContext.tsx |     100 |      100 |     100 |     100 |                   
  ...usContext.tsx |     100 |      100 |     100 |     100 |                   
  ...ngContext.tsx |   71.42 |       50 |     100 |   71.42 | 17-20             
  ...utContext.tsx |   85.71 |      100 |   66.66 |   85.71 | 13-14             
  ...edContext.tsx |     100 |      100 |      50 |     100 |                   
  ...nsContext.tsx |   88.88 |       50 |     100 |   88.88 | 156-157           
  ...teContext.tsx |   86.66 |       50 |     100 |   86.66 | 237-238           
  ...deContext.tsx |      80 |     87.5 |      75 |      80 | ...11-112,118-120 
  ...rtContext.tsx |     100 |      100 |     100 |     100 |                   
 src/ui/daemon     |   89.51 |    76.92 |   95.65 |   89.51 |                   
  ...ui-adapter.ts |   89.51 |    76.92 |   95.65 |   89.51 | ...59,877-878,964 
 src/ui/editors    |   93.33 |    85.71 |   66.66 |   93.33 |                   
  ...ngsManager.ts |   93.33 |    85.71 |   66.66 |   93.33 | 49,63-64          
 src/ui/hooks      |    86.1 |    84.16 |   87.81 |    86.1 |                   
  ...dProcessor.ts |   85.53 |    85.13 |     100 |   85.53 | ...-970,1017-1018 
  ...ention-ref.ts |   97.72 |       84 |     100 |   97.72 | 65                
  keyToAnsi.ts     |    3.92 |      100 |       0 |    3.92 | 19-77             
  ...esourceRef.ts |     100 |      100 |     100 |     100 |                   
  ...completion.ts |     100 |    95.45 |     100 |     100 | 95                
  ...ention-ref.ts |     100 |      100 |     100 |     100 |                   
  ...dProcessor.ts |   94.55 |    73.58 |     100 |   94.55 | ...87-288,293-294 
  ...dProcessor.ts |   86.83 |    71.86 |   83.33 |   86.83 | ...1536,1565-1569 
  ...rt-command.ts |     100 |      100 |     100 |     100 |                   
  ...sced-flush.ts |     100 |      100 |     100 |     100 |                   
  ...llm-stream.ts |   87.63 |    84.43 |   78.72 |   87.63 | ...5813-5815,5817 
  ...ng-enabled.ts |     100 |      100 |     100 |     100 |                   
  ...oice-input.ts |   92.41 |    82.08 |   66.66 |   92.41 | ...12,514-515,670 
  ...ke-repaint.ts |     100 |      100 |     100 |     100 |                   
  ...amingState.ts |   12.22 |      100 |       0 |   12.22 | 54-157            
  ...agerDialog.ts |   88.23 |      100 |     100 |   88.23 | 20,24             
  ...dScrollbar.ts |     100 |      100 |     100 |     100 |                   
  ...ationFrame.ts |      52 |    63.63 |     100 |      52 | ...59,67-70,76-87 
  ...odeCommand.ts |   58.82 |      100 |     100 |   58.82 | 28,33-48          
  ...enaCommand.ts |      85 |      100 |     100 |      85 | 23-24,29          
  ...aInProcess.ts |   27.92 |       80 |      25 |   27.92 | ...69-170,173-175 
  ...Completion.ts |   86.44 |    88.48 |     100 |   86.44 | ...14-515,525-541 
  ...ifications.ts |   87.82 |    96.77 |     100 |   87.82 | 138-152           
  ...tIndicator.ts |   88.28 |    81.57 |     100 |   88.28 | ...66,175,179-187 
  ...waySummary.ts |   96.26 |       75 |     100 |   96.26 | 126-128,170       
  ...ndTaskView.ts |   94.89 |    77.55 |     100 |   94.89 | 164-168,257,263   
  ...chedScroll.ts |     100 |      100 |     100 |     100 |                   
  ...ketedPaste.ts |    23.8 |      100 |       0 |    23.8 | 19-37             
  ...nchCommand.ts |   96.03 |    88.75 |     100 |   96.03 | ...04-205,362-365 
  ...ompletion.tsx |   97.09 |    87.23 |     100 |   97.09 | ...23-324,334-335 
  ...dMigration.ts |    92.1 |    88.88 |     100 |    92.1 | 42-44             
  useCompletion.ts |   96.29 |    90.56 |     100 |   96.29 | ...17-218,222-223 
  ...nitMessage.ts |     100 |      100 |     100 |     100 |                   
  ...extualTips.ts |   78.26 |       50 |     100 |   78.26 | ...2,75-79,96-104 
  ...eteCommand.ts |   89.52 |    90.69 |     100 |   89.52 | ...98-106,114-115 
  ...ialogClose.ts |   36.11 |       10 |     100 |   36.11 | ...89-195,202-207 
  useDiffData.ts   |   11.62 |      100 |       0 |   11.62 | 44-87             
  ...oublePress.ts |   53.12 |       75 |     100 |   53.12 | 33-35,41-54       
  ...orSettings.ts |     100 |      100 |     100 |     100 |                   
  ...Completion.ts |   99.12 |    97.67 |     100 |   99.12 | 182-183           
  ...ionUpdates.ts |   93.72 |    92.98 |     100 |   93.72 | ...87-291,314-320 
  ...agerDialog.ts |   88.88 |      100 |     100 |   88.88 | 21,25             
  ...backDialog.ts |    63.9 |    76.47 |   66.66 |    63.9 | ...66-168,190-191 
  useFocus.ts      |     100 |      100 |     100 |     100 |                   
  ...olderTrust.ts |     100 |    93.33 |     100 |     100 | 62                
  ...ggestions.tsx |   96.47 |    78.94 |     100 |   96.47 | 121,155-156       
  ...BranchName.ts |     100 |    94.44 |     100 |     100 | 54                
  ...oryManager.ts |   98.44 |     98.9 |     100 |   98.44 | 157-160           
  ...ooksDialog.ts |    87.5 |      100 |     100 |    87.5 | 19,23             
  ...stListener.ts |     100 |      100 |     100 |     100 |                   
  ...nAuthError.ts |   76.19 |       50 |     100 |   76.19 | 39-40,43-45       
  ...putHistory.ts |   92.59 |    85.71 |     100 |   92.59 | 63-64,72,94-96    
  useKeypress.ts   |     100 |      100 |     100 |     100 |                   
  ...rdProtocol.ts |   36.36 |      100 |       0 |   36.36 | 24-31             
  ...unchEditor.ts |   22.58 |      100 |      50 |   22.58 | 11-32,44-85       
  ...gIndicator.ts |     100 |    96.66 |     100 |     100 | 109               
  useLogger.ts     |      16 |      100 |       0 |      16 | 15-45             
  useMCPHealth.ts  |   10.52 |      100 |       0 |   10.52 | 36-75             
  ...cpApproval.ts |   93.12 |    86.11 |     100 |   93.12 | ...24-127,139-140 
  useMcpDialog.ts  |    87.5 |      100 |     100 |    87.5 | 19,23             
  ...moryDialog.ts |    87.5 |      100 |     100 |    87.5 | 19,23             
  ...oryMonitor.ts |   83.14 |    78.57 |     100 |   83.14 | 54-63,74-79       
  ...ssageQueue.ts |     100 |    94.94 |     100 |     100 | ...43,279,349,359 
  ...delCommand.ts |     100 |       96 |     100 |     100 | 61                
  ...ouseEvents.ts |   94.89 |       95 |   83.33 |   94.89 | 78-82             
  ...raseCycler.ts |   84.74 |    76.47 |     100 |   84.74 | ...49,52-53,69-71 
  ...rredEditor.ts |   58.33 |    22.22 |     100 |   58.33 | 23-27,29-33       
  ...derUpdates.ts |   85.29 |    80.28 |    92.3 |   85.29 | ...36,351-361,441 
  useQwenAuth.ts   |     100 |      100 |     100 |     100 |                   
  ...lScheduler.ts |   89.13 |     86.9 |     100 |   89.13 | ...61-463,496-506 
  ...oryCommand.ts |       0 |        0 |       0 |       0 | 1-7               
  ...umeCommand.ts |   96.51 |    90.19 |     100 |   96.51 | 279,306-311       
  ...ompletion.tsx |   90.67 |    83.33 |     100 |   90.67 | ...02,105,138-141 
  ...ectionList.ts |   97.12 |    96.19 |     100 |   97.12 | ...92-193,247-250 
  ...sionPicker.ts |   92.87 |    90.35 |     100 |   92.87 | ...99-501,503-505 
  ...earchInput.ts |     100 |    97.29 |     100 |     100 | 82                
  ...ngsCommand.ts |   18.75 |      100 |       0 |   18.75 | 10-25             
  ...ellHistory.ts |   93.28 |    80.95 |     100 |   93.28 | ...96,153-154,164 
  ...oryCommand.ts |   85.48 |    58.33 |     100 |   85.48 | 22-28,40,71       
  ...agerDialog.ts |   88.23 |      100 |     100 |   88.23 | 20,24             
  ...Completion.ts |   82.79 |    85.33 |   94.73 |   82.79 | ...86-688,696-732 
  ...tateAndRef.ts |     100 |      100 |     100 |     100 |                   
  ...tatsDialog.ts |     100 |      100 |     100 |     100 |                   
  useStatusLine.ts |   97.32 |    93.93 |     100 |   97.32 | ...18-422,518-525 
  ...eateDialog.ts |   88.23 |      100 |     100 |   88.23 | 14,18             
  ...mInProcess.ts |   27.35 |       80 |      25 |   27.35 | ...82-183,186-188 
  ...tification.ts |     100 |     87.5 |     100 |     100 | 50                
  ...alProgress.ts |   67.34 |    58.82 |   66.66 |   67.34 | 52-53,61-68,79-85 
  ...rminalSize.ts |     100 |      100 |     100 |     100 |                   
  ...emeCommand.ts |    79.2 |    35.29 |     100 |    79.2 | ...15-116,120-121 
  useTimer.ts      |   97.59 |    94.73 |     100 |   97.59 | 17-18             
  ...lMigration.ts |       0 |        0 |       0 |       0 |                   
  ...rustModify.ts |     100 |    90.47 |     100 |     100 | 112,134           
  useTurnDiffs.ts  |   95.12 |    78.57 |     100 |   95.12 | 133-134,156-157   
  ...elcomeBack.ts |   87.36 |     90.9 |     100 |   87.36 | ...,94-96,114-115 
  ...reeSession.ts |   93.75 |       70 |     100 |   93.75 | 47-48,72          
  vim.ts           |      74 |    67.56 |   69.23 |      74 | ...1854-1861,1869 
 src/ui/layouts    |   91.25 |    89.47 |     100 |   91.25 |                   
  ...AppLayout.tsx |   90.99 |     87.5 |     100 |   90.99 | 61-63,111-116,152 
  ...AppLayout.tsx |   91.66 |    92.85 |     100 |   91.66 | 75-80             
 src/ui/model      |   97.91 |    98.36 |     100 |   97.91 |                   
  ...ggregation.ts |     100 |      100 |     100 |     100 |                   
  ...ming-model.ts |   97.43 |    97.72 |     100 |   97.43 | 261-265           
 src/ui/models     |   80.72 |       80 |   71.42 |   80.72 |                   
  ...ableModels.ts |   80.72 |       80 |   71.42 |   80.72 | ...,61-71,125-127 
 ...noninteractive |     100 |      100 |    6.66 |     100 |                   
  ...eractiveUi.ts |     100 |      100 |    6.66 |     100 |                   
 src/ui/selection  |   93.56 |    86.19 |     100 |   93.56 |                   
  screen-buffer.ts |   94.73 |    66.66 |     100 |   94.73 | 51-52             
  ...ion-coords.ts |     100 |      100 |     100 |     100 |                   
  ...ction-span.ts |   93.81 |     92.1 |     100 |   93.81 | ...1,45-46,99-100 
  ...tion-state.ts |     100 |      100 |     100 |     100 |                   
  ...ction-text.ts |   93.85 |    93.44 |     100 |   93.85 | 30-34,130-131     
  ...selection.tsx |   91.88 |    78.57 |     100 |   91.88 | ...16-417,446-447 
 src/ui/state      |      95 |    81.81 |     100 |      95 |                   
  extensions.ts    |      95 |    81.81 |     100 |      95 | 69-70,89          
 src/ui/themes     |    98.5 |    73.17 |     100 |    98.5 |                   
  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   |   99.23 |    97.05 |     100 |   99.23 | 277-278           
  default-light.ts |     100 |      100 |     100 |     100 |                   
  default.ts       |     100 |      100 |     100 |     100 |                   
  ...inal-theme.ts |   88.59 |    85.96 |     100 |   88.59 | ...57-261,266-270 
  dracula.ts       |     100 |      100 |     100 |     100 |                   
  github-dark.ts   |     100 |      100 |     100 |     100 |                   
  github-light.ts  |     100 |      100 |     100 |     100 |                   
  googlecode.ts    |     100 |      100 |     100 |     100 |                   
  no-color.ts      |     100 |      100 |     100 |     100 |                   
  qwen-dark.ts     |     100 |      100 |     100 |     100 |                   
  qwen-light.ts    |     100 |      100 |     100 |     100 |                   
  ...tic-tokens.ts |     100 |      100 |     100 |     100 |                   
  ...-of-purple.ts |     100 |      100 |     100 |     100 |                   
  theme-manager.ts |   88.68 |    84.52 |     100 |   88.68 | ...83-392,397-398 
  theme.ts         |     100 |    38.02 |     100 |     100 | ...34-449,457-461 
  xcode.ts         |     100 |      100 |     100 |     100 |                   
 src/ui/utils      |   87.98 |    86.07 |    96.1 |   87.98 |                   
  ...Colorizer.tsx |   80.31 |    85.41 |     100 |   80.31 | ...00-201,313-339 
  ...nRenderer.tsx |   80.07 |     75.6 |     100 |   80.07 | ...70,274,332-333 
  ...wnDisplay.tsx |   92.87 |     93.5 |     100 |   92.87 | ...,955,1002-1020 
  ...idDiagram.tsx |   87.79 |    95.34 |     100 |   87.79 | 156-179           
  ...eRenderer.tsx |   93.63 |    81.77 |   95.23 |   93.63 | ...47-750,803-808 
  ...odeDisplay.ts |   94.28 |    85.71 |     100 |   94.28 | 23,40             
  asciiCharts.ts   |    96.7 |     87.5 |     100 |    96.7 | 170-177,278       
  ...dWorkUtils.ts |     100 |      100 |     100 |     100 |                   
  ...boardUtils.ts |    52.9 |    74.15 |    92.3 |    52.9 | ...29,632-641,644 
  commandUtils.ts  |   98.61 |    93.27 |     100 |   98.61 | 189,217-218,424   
  computeStats.ts  |     100 |      100 |     100 |     100 |                   
  customBanner.ts  |   90.68 |    91.22 |     100 |   90.68 | ...13,324-327,334 
  displayUtils.ts  |   73.84 |    73.91 |     100 |   73.84 | ...34,36-40,42-46 
  ...coalescing.ts |     100 |      100 |     100 |     100 |                   
  formatters.ts    |   94.87 |    98.24 |     100 |   94.87 | 116-119           
  goal-runtime.ts  |   94.44 |    96.29 |     100 |   94.44 | 32-34             
  gradientUtils.ts |     100 |      100 |     100 |     100 |                   
  highlight.ts     |     100 |      100 |     100 |     100 |                   
  ...gap-notice.ts |     100 |      100 |     100 |     100 |                   
  ...oryMapping.ts |     100 |    95.65 |     100 |     100 | 45,151            
  historyUtils.ts  |   96.07 |     97.1 |     100 |   96.07 | 104-107           
  ...mage-parts.ts |   97.75 |       95 |     100 |   97.75 | 82-83             
  inline-math.ts   |   98.48 |    95.23 |     100 |   98.48 | 129-130           
  input-mouse.ts   |     100 |    85.71 |     100 |     100 | 48,93             
  isNarrowWidth.ts |     100 |      100 |     100 |     100 |                   
  ...olDetector.ts |   68.81 |       75 |   66.66 |   68.81 | ...27-132,160-161 
  latexRenderer.ts |   94.95 |     73.8 |     100 |   94.95 | ...76-178,184-187 
  layoutUtils.ts   |     100 |      100 |     100 |     100 |                   
  list-mouse.ts    |     100 |      100 |     100 |     100 |                   
  ...ightLoader.ts |     100 |       95 |     100 |     100 | 81                
  ...nUtilities.ts |   98.72 |    94.36 |     100 |   98.72 | 145-146           
  ...t-position.ts |     100 |     87.5 |     100 |     100 | 85                
  ...geRenderer.ts |   86.51 |    70.16 |   95.12 |   86.51 | ...1286,1326-1332 
  ...alRenderer.ts |   86.69 |     71.9 |     100 |   86.69 | ...1476,1513-1519 
  ...lsBySource.ts |     100 |    95.23 |     100 |     100 | 84                
  mouse.ts         |   92.85 |    74.19 |     100 |   92.85 | ...38,145,149-152 
  osc8.ts          |   91.33 |    79.03 |     100 |   91.33 | ...73,273,277-278 
  ...red-height.ts |   98.38 |    97.14 |     100 |   98.38 | 195-197           
  ...mConstants.ts |     100 |      100 |     100 |     100 |                   
  restoreGoal.ts   |     100 |      100 |     100 |     100 |                   
  ...storyUtils.ts |   84.37 |    81.09 |     100 |   84.37 | ...03-625,759-760 
  ...ickerUtils.ts |     100 |      100 |     100 |     100 |                   
  ...evel-label.ts |   77.77 |    66.66 |     100 |   77.77 | 18,22-24          
  ...are-cursor.ts |   89.47 |    85.71 |     100 |   89.47 | 39-44             
  ...ataService.ts |   93.17 |     79.1 |     100 |   93.17 | ...14,227,254-256 
  suggestions.ts   |     100 |      100 |     100 |     100 |                   
  ...izedOutput.ts |   95.19 |      100 |   88.88 |   95.19 | 121-126           
  ...nal-buffer.ts |     100 |      100 |     100 |     100 |                   
  ...e-renderer.ts |   90.61 |    83.44 |     100 |   90.61 | ...80,482-484,607 
  ...ize-reflow.ts |     100 |     92.3 |     100 |     100 | 57,62,209,217,347 
  ...wOptimizer.ts |     100 |    94.73 |     100 |     100 | 35,78             
  terminalSetup.ts |    4.37 |      100 |       0 |    4.37 | 44-393            
  textUtils.ts     |   98.71 |    95.72 |     100 |   98.71 | 292-293,478-479   
  ...background.ts |     100 |      100 |     100 |     100 |                   
  todoSnapshot.ts  |   95.81 |     92.3 |     100 |   95.81 | ...09-210,243-244 
  ...isplay-map.ts |     100 |      100 |     100 |     100 |                   
  updateCheck.ts   |     100 |    92.75 |     100 |     100 | 227-239,331       
  windowTitle.ts   |   96.55 |    94.73 |     100 |   96.55 | 56-57             
  ...ow-keyword.ts |     100 |      100 |     100 |     100 |                   
 ...i/utils/export |   75.03 |     60.1 |   94.59 |   75.03 |                   
  collect.ts       |   71.27 |    65.81 |      96 |   71.27 | ...90-633,655-656 
  index.ts         |     100 |      100 |     100 |     100 |                   
  normalize.ts     |   80.42 |    51.35 |     100 |   80.42 | ...59-364,376-378 
  types.ts         |       0 |        0 |       0 |       0 | 1                 
  utils.ts         |     100 |      100 |     100 |     100 |                   
 ...ort/formatters |   52.92 |    47.22 |   71.42 |   52.92 |                   
  html.ts          |   84.61 |       50 |     100 |   84.61 | ...53,57-58,62-63 
  json.ts          |     100 |      100 |     100 |     100 |                   
  jsonl.ts         |   82.45 |     37.5 |     100 |   82.45 | ...48,50-51,65-66 
  markdown.ts      |   36.32 |    47.05 |      50 |   36.32 | ...16-219,233-295 
 src/ui/voice      |   81.24 |    79.78 |   81.69 |   81.24 |                   
  ...d-recorder.ts |     6.2 |      100 |       0 |     6.2 | ...33-159,162-163 
  ...o-recorder.ts |   84.61 |    93.33 |   57.14 |   84.61 | ...16-117,131-136 
  ...me-session.ts |   91.09 |     92.1 |     100 |   91.09 | ...99,305,316-319 
  sox-recorder.ts  |    92.7 |    71.87 |     100 |    92.7 | ...34-135,153-154 
  ...ailability.ts |     100 |      100 |     100 |     100 |                   
  ...e-keyterms.ts |     100 |      100 |     100 |     100 |                   
  voice-model.ts   |     100 |      100 |     100 |     100 |                   
  ...e-recorder.ts |   88.29 |    67.74 |   81.81 |   88.29 | ...,98-99,112,115 
  voice-refine.ts  |     100 |    93.33 |     100 |     100 | 92                
  ...ream-retry.ts |   86.79 |       70 |     100 |   86.79 | 16-18,48-49,59-60 
  ...am-session.ts |   88.02 |    66.66 |   84.61 |   88.02 | ...26,343-345,363 
  ...ranscriber.ts |     100 |      100 |     100 |     100 |                   
 src/utils         |   92.23 |    89.82 |   96.12 |   92.23 |                   
  ...p-profiler.ts |   98.39 |    92.59 |     100 |   98.39 | 141,185,235       
  acpModelUtils.ts |   97.36 |    95.09 |     100 |   97.36 | ...09-210,214-215 
  apiPreconnect.ts |   96.74 |    94.59 |     100 |   96.74 | 167-170           
  ...ol-call-id.ts |   84.61 |       60 |     100 |   84.61 | 26-27,37-38       
  checks.ts        |   33.33 |      100 |       0 |   33.33 | 23-28             
  ...-api-error.ts |     100 |    96.42 |     100 |     100 | 14                
  cleanup.ts       |   84.05 |    94.11 |      80 |   84.05 | 80,111-121        
  ...y-identity.ts |   89.22 |    85.18 |     100 |   89.22 | ...23-424,431-432 
  ...Calculator.ts |     100 |      100 |     100 |     100 |                   
  cpuProfiler.ts   |   70.73 |    73.23 |   88.88 |   70.73 | ...27,430-431,438 
  deepMerge.ts     |     100 |       90 |     100 |     100 | 50-52,58          
  ...re-runtime.ts |     100 |      100 |     100 |     100 |                   
  ...putCapture.ts |   90.65 |    86.31 |     100 |   90.65 | ...73,371,373-374 
  ...arResolver.ts |   97.14 |    96.55 |     100 |   97.14 | 125-126           
  errors.ts        |   97.56 |    94.64 |     100 |   97.56 | 69-70,304-305     
  events.ts        |     100 |      100 |     100 |     100 |                   
  ...on-mention.ts |   88.48 |     82.6 |     100 |   88.48 | ...56-160,164-168 
  gitUtils.ts      |   92.85 |    86.66 |     100 |   92.85 | ...13-116,164-167 
  ...tyWarnings.ts |     100 |      100 |     100 |     100 |                   
  ...lationInfo.ts |   97.81 |    94.69 |     100 |   97.81 | ...03,420-421,466 
  ...projection.ts |   95.27 |    95.58 |     100 |   95.27 | 140-145           
  jsonc-editor.ts  |   93.18 |    92.66 |     100 |   93.18 | ...80-381,384-385 
  load-undici.ts   |     100 |      100 |     100 |     100 |                   
  ...npm-update.ts |   86.64 |    77.02 |     100 |   86.64 | ...03-304,335-345 
  math.ts          |       0 |        0 |       0 |       0 | 1-15              
  ...er-mention.ts |     100 |    66.66 |     100 |     100 | 14,30,44-46       
  ...iagnostics.ts |   94.57 |    83.01 |   88.88 |   94.57 | ...05,311,315-317 
  ...serMessage.ts |     100 |      100 |     100 |     100 |                   
  ...onfigUtils.ts |   94.25 |    91.17 |     100 |   94.25 | ...30,436,439-443 
  ...-part-list.ts |     100 |      100 |     100 |     100 |                   
  osc.ts           |   97.18 |      100 |    87.5 |   97.18 | 182-183           
  package.ts       |   88.88 |    85.71 |     100 |   88.88 | 31-32             
  paths.ts         |     100 |      100 |     100 |     100 |                   
  processUtils.ts  |    92.3 |       80 |     100 |    92.3 | 45-46             
  readStdin.ts     |   93.67 |    94.11 |   85.71 |   93.67 | 79-83             
  relaunch.ts      |   95.87 |    89.28 |     100 |   95.87 | 103-105,131       
  resolvePath.ts   |     100 |      100 |     100 |     100 |                   
  runBudget.ts     |   99.35 |    96.77 |     100 |   99.35 | 119               
  sandbox-path.ts  |     100 |      100 |     100 |     100 |                   
  ...xImageName.ts |     100 |    77.77 |     100 |     100 | 10,18             
  sandboxMounts.ts |     100 |      100 |     100 |     100 |                   
  ...-path-argv.ts |     100 |      100 |     100 |     100 |                   
  sessionPaths.ts  |   90.84 |    90.56 |     100 |   90.84 | ...81-182,185-186 
  shell-args.ts    |     100 |      100 |     100 |     100 |                   
  spawnWrapper.ts  |     100 |      100 |     100 |     100 |                   
  ...ate-verify.ts |     100 |      100 |     100 |     100 |                   
  ...upProfiler.ts |   98.47 |    94.66 |     100 |   98.47 | 132-133,308       
  ...upWarnings.ts |     100 |      100 |     100 |     100 |                   
  stdioHelpers.ts  |   76.66 |       90 |   83.33 |   76.66 | 93-99             
  ...alSequence.ts |     100 |    97.61 |     100 |     100 | 60                
  ...iffPreview.ts |   76.47 |       25 |     100 |   76.47 | 13,17,23-24       
  ...on-handler.ts |    73.8 |       75 |     100 |    73.8 | 17-18,25-26,67-73 
  ...entEmitter.ts |     100 |      100 |     100 |     100 |                   
  ...ansionHook.ts |     100 |      100 |     100 |     100 |                   
  ...upWarnings.ts |   87.75 |       75 |     100 |   87.75 | 47-48,53-54,57-58 
  version.ts       |     100 |    66.66 |     100 |     100 | 11                
  ...ingHandler.ts |     100 |      100 |     100 |     100 |                   
  ...WithBackup.ts |   65.04 |    77.77 |     100 |   65.04 | 97,112,133-172    
 ...s/housekeeping |   94.35 |    94.11 |     100 |   94.35 |                   
  cleanup.ts       |   92.59 |    93.75 |     100 |   92.59 | ...02-205,209-211 
  ...eractionAt.ts |     100 |      100 |     100 |     100 |                   
  throttledOnce.ts |   95.95 |    93.93 |     100 |   95.95 | 77-78,153-154     
-------------------|---------|----------|---------|---------|-------------------
Core Package - Full Text Report
-------------------|---------|----------|---------|---------|-------------------
File               | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
-------------------|---------|----------|---------|---------|-------------------
All files          |   88.75 |     87.2 |   90.51 |   88.75 |                   
 src               |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
 src/__mocks__/fs  |       0 |        0 |       0 |       0 |                   
  promises.ts      |       0 |        0 |       0 |       0 | 1-48              
 src/agents        |   90.26 |    84.51 |   94.55 |   90.26 |                   
  ...transcript.ts |   88.49 |    84.09 |     100 |   88.49 | ...32,640,646-650 
  ...ent-resume.ts |   85.74 |       78 |    85.1 |   85.74 | ...1803-1807,1810 
  ...ound-tasks.ts |   95.19 |    90.75 |   96.42 |   95.19 | ...1889,1897-1898 
  forkedAgent.ts   |   93.21 |    83.47 |   94.44 |   93.21 | ...94,702,707-714 
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...ent-result.ts |    96.8 |    92.68 |     100 |    96.8 | 106,129-131       
  ...n-registry.ts |   95.27 |    88.23 |   98.33 |   95.27 | ...1478,1492-1494 
  ...w-snapshot.ts |   75.73 |    72.22 |    87.5 |   75.73 | ...21,445,452-454 
  worktree-pin.ts  |     100 |    88.23 |     100 |     100 | 78,99             
 src/agents/arena  |   76.87 |    68.43 |   78.94 |   76.87 |                   
  ...gentClient.ts |   79.47 |    88.88 |   81.81 |   79.47 | ...68-183,189-204 
  ArenaManager.ts  |    75.8 |    65.46 |   78.57 |    75.8 | ...1879,1885-1886 
  arena-events.ts  |   64.44 |      100 |      50 |   64.44 | ...71-175,178-183 
  diff-summary.ts  |    87.5 |    72.34 |     100 |    87.5 | ...32-133,137-138 
  index.ts         |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...gents/backends |   77.32 |    86.38 |   75.52 |   77.32 |                   
  ITermBackend.ts  |   97.97 |    93.93 |     100 |   97.97 | ...78-180,255,307 
  ...essBackend.ts |   91.45 |    90.21 |   96.87 |   91.45 | ...66-467,586-592 
  TmuxBackend.ts   |    90.7 |    76.55 |   97.36 |    90.7 | ...87,697,743-747 
  detect.ts        |   31.25 |      100 |       0 |   31.25 | 34-88             
  index.ts         |     100 |      100 |     100 |     100 |                   
  iterm-it2.ts     |     100 |     92.1 |     100 |     100 | 37-38,106         
  tmux-commands.ts |    6.64 |      100 |    3.03 |    6.64 | ...93-363,386-503 
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...agents/runtime |   93.37 |    87.56 |   92.44 |   93.37 |                   
  agent-context.ts |     100 |      100 |     100 |     100 |                   
  agent-core.ts    |   90.39 |    80.91 |   81.25 |   90.39 | ...2551,2597-2599 
  agent-events.ts  |     100 |      100 |     100 |     100 |                   
  ...t-headless.ts |   93.57 |    89.41 |   83.33 |   93.57 | ...04-505,508-509 
  ...nteractive.ts |   81.01 |    82.35 |   76.66 |   81.01 | ...33,535-538,541 
  ...statistics.ts |   98.29 |    82.55 |     100 |   98.29 | 141,165,206,239   
  agent-types.ts   |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...ool-policy.ts |   98.38 |      100 |    92.3 |   98.38 | 85-86             
  ...low-budget.ts |     100 |      100 |     100 |     100 |                   
  ...-scheduler.ts |   97.43 |    96.36 |     100 |   97.43 | 128-130           
  ...ow-journal.ts |   92.78 |    78.12 |     100 |   92.78 | ...49-150,192-194 
  ...ta-literal.ts |   95.96 |    92.68 |     100 |   95.96 | ...78-379,395-396 
  ...chestrator.ts |   93.85 |    90.47 |     100 |   93.85 | ...2206,2299-2302 
  ...ow-prompts.ts |     100 |      100 |     100 |     100 |                   
  ...low-runner.ts |   95.77 |    84.16 |      95 |   95.77 | ...88,356,376-379 
  ...ow-sandbox.ts |   97.29 |    88.84 |     100 |   97.29 | ...1835,1841-1842 
  ...flow-saved.ts |    96.7 |     93.9 |     100 |    96.7 | 153-154,261-264   
  ...flow-stall.ts |    97.9 |    83.33 |     100 |    97.9 | 170-171,270       
 src/agents/tasks  |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/agents/team   |   84.84 |    85.82 |   91.09 |   84.84 |                   
  TeamManager.ts   |   78.24 |    83.83 |   84.12 |   78.24 | ...1907,1930-1931 
  identity.ts      |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...sionBridge.ts |     100 |      100 |     100 |     100 |                   
  mailbox.ts       |   96.02 |     87.5 |     100 |   96.02 | 352-358           
  ...ptAddendum.ts |     100 |      100 |     100 |     100 |                   
  tasks.ts         |   89.29 |       83 |     100 |   89.29 | ...1000,1044-1045 
  team-events.ts   |   73.68 |      100 |   66.66 |   73.68 | 140-144,151-155   
  teamHelpers.ts   |    92.5 |    95.45 |      95 |    92.5 | ...29-330,393-403 
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...eam/test-utils |   95.28 |    95.34 |   98.24 |   95.28 |                   
  ...on-harness.ts |   96.49 |    85.71 |     100 |   96.49 | 128-129,141-142   
  fake-agent.ts    |     100 |    96.96 |     100 |     100 | 189,198           
  fake-backend.ts  |   86.46 |    97.61 |   95.83 |   86.46 | 124-146           
 src/config        |   86.21 |    88.39 |   78.34 |   86.21 |                   
  approval-mode.ts |     100 |      100 |     100 |     100 |                   
  ...xtDefaults.ts |     100 |      100 |     100 |     100 |                   
  config.ts        |   84.91 |    87.81 |   76.32 |   84.91 | ...9653,9657-9659 
  ...ionManager.ts |     100 |     90.9 |     100 |     100 | 27                
  models.ts        |     100 |      100 |     100 |     100 |                   
  ...sDiscovery.ts |   97.46 |    93.05 |     100 |   97.46 | ...04,182-183,202 
  storage.ts       |   96.05 |    93.43 |   89.47 |   96.05 | ...34-735,738-739 
 ...nfirmation-bus |   98.27 |    97.22 |     100 |   98.27 |                   
  message-bus.ts   |   98.14 |    97.14 |     100 |   98.14 | 42-43             
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/core          |   92.83 |    88.65 |   93.87 |   92.83 |                   
  ...on-restore.ts |   88.23 |    85.41 |     100 |   88.23 | ...60,63-64,67-68 
  baseLlmClient.ts |    88.4 |    83.68 |   81.81 |    88.4 | ...59,672,678-680 
  client.ts        |   92.36 |    88.22 |   91.83 |   92.36 | ...4537,4635-4636 
  ...tGenerator.ts |   87.45 |    88.09 |   88.88 |   87.45 | ...08-509,554-560 
  ...lScheduler.ts |   90.23 |    85.01 |   94.73 |   90.23 | ...6512,6540-6556 
  ...entContext.ts |   96.63 |    90.13 |   96.66 |   96.63 | ...42,444-445,512 
  geminiChat.ts    |     100 |      100 |     100 |     100 |                   
  geminiRequest.ts |     100 |      100 |     100 |     100 |                   
  genai-compat.ts  |     100 |      100 |     100 |     100 |                   
  ...MediaLimit.ts |     100 |       96 |     100 |     100 | 96                
  ...htProtocol.ts |    9.09 |      100 |       0 |    9.09 | ...9,62-66,69-110 
  ...ream-error.ts |     100 |      100 |     100 |     100 |                   
  llm-chat.ts      |   95.21 |    90.81 |   96.69 |   95.21 | ...5744,5789-5790 
  llm-request.ts   |     100 |      100 |     100 |     100 |                   
  logger.ts        |   87.41 |    87.02 |     100 |   87.41 | ...64-568,614-628 
  ...lay-buffer.ts |     100 |      100 |     100 |     100 |                   
  ...dispatcher.ts |     100 |      100 |     100 |     100 |                   
  ...tyDefaults.ts |     100 |      100 |     100 |     100 |                   
  ...olExecutor.ts |   93.54 |    83.33 |      50 |   93.54 | 46-47             
  output-styles.ts |     100 |      100 |     100 |     100 |                   
  ...on-helpers.ts |   95.38 |    84.31 |     100 |   95.38 | ...87,215,217-218 
  ...issionFlow.ts |   98.98 |    96.96 |     100 |   98.98 | 109               
  ...try-policy.ts |     100 |      100 |     100 |     100 |                   
  ...ell-policy.ts |   94.89 |    88.54 |     100 |   94.89 | ...51-252,297-298 
  prompts.ts       |   93.89 |    91.12 |      85 |   93.89 | ...1272,1475-1476 
  ...ing-effort.ts |     100 |      100 |     100 |     100 |                   
  ...n-recovery.ts |   95.13 |       80 |     100 |   95.13 | ...06-107,142-144 
  ...t-profiler.ts |    97.9 |    81.15 |   88.23 |    97.9 | 117,124-125,130   
  ...port-retry.ts |     100 |      100 |     100 |     100 |                   
  tokenLimits.ts   |     100 |     92.1 |     100 |     100 | 87,122-139        
  ...-arguments.ts |     100 |      100 |     100 |     100 |                   
  ...reparation.ts |     100 |      100 |     100 |     100 |                   
  ...tion-guard.ts |   90.38 |    94.73 |     100 |   90.38 | 83-87             
  ...allIdUtils.ts |   98.81 |    91.22 |     100 |   98.81 | 43,52             
  ...okTriggers.ts |   99.45 |     92.5 |     100 |   99.45 | 182,193           
  ...terruption.ts |     100 |     92.3 |     100 |     100 | 86,104            
  turn.ts          |   99.19 |    94.48 |     100 |   99.19 | 765-766,835       
  ...l-fallback.ts |     100 |      100 |     100 |     100 |                   
 ...ntentGenerator |   96.58 |    89.11 |   97.43 |   96.58 |                   
  ...tGenerator.ts |   97.66 |    88.91 |   97.43 |   97.66 | ...1494,1523,1534 
  converter.ts     |   96.19 |    89.25 |     100 |   96.19 | ...1334,1555-1557 
  index.ts         |       0 |        0 |       0 |       0 | 1-21              
  usage.ts         |     100 |      100 |     100 |     100 |                   
 ...ntentGenerator |     100 |      100 |     100 |     100 |                   
  ...tGenerator.ts |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
 ...tent-generator |   89.24 |    72.72 |   94.11 |   89.24 |                   
  index.ts         |     100 |    85.71 |     100 |     100 | 51                
  ...-generator.ts |   87.54 |    71.42 |   93.75 |   87.54 | ...93-294,356-362 
 ...ntentGenerator |   95.78 |    90.51 |   96.22 |   95.78 |                   
  ...e-snapshot.ts |   97.39 |    89.65 |     100 |   97.39 | ...,49-50,151-152 
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...tGenerator.ts |   95.38 |    90.14 |   95.12 |   95.38 | ...1345-1346,1374 
  ...tDetection.ts |     100 |      100 |     100 |     100 |                   
 ...ntentGenerator |   92.33 |    90.93 |   96.58 |   92.33 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  converter.ts     |   91.25 |    89.66 |   96.87 |   91.25 | ...1946,2115-2130 
  errorHandler.ts  |     100 |      100 |     100 |     100 |                   
  index.ts         |   76.19 |    88.88 |      50 |   76.19 | 44-53,90-94       
  ...tGenerator.ts |      70 |    73.33 |     100 |      70 | ...07-112,121-127 
  pipeline.ts      |   95.38 |    91.56 |     100 |   95.38 | ...1461-1462,1569 
  ...ix-caching.ts |   95.23 |    92.85 |     100 |   95.23 | 45-46,69-70       
  ...ureContext.ts |     100 |      100 |     100 |     100 |                   
  ...ingOptions.ts |       0 |        0 |       0 |       0 | 1                 
  ...CallParser.ts |   92.11 |    92.25 |     100 |   92.11 | ...21-522,542-545 
  ...kingParser.ts |     100 |    96.87 |     100 |     100 | 42                
  types.ts         |       0 |        0 |       0 |       0 | 1                 
 ...rator/provider |   97.24 |       92 |   98.64 |   97.24 |                   
  dashscope.ts     |   98.42 |    95.27 |   96.55 |   98.42 | ...51-752,894-895 
  deepseek.ts      |   95.34 |    90.56 |     100 |   95.34 | ...54-155,168-169 
  default.ts       |   98.87 |       96 |     100 |   98.87 | 178,304           
  index.ts         |     100 |      100 |     100 |     100 |                   
  mimo.ts          |   94.11 |    66.66 |     100 |   94.11 | 29,52-53          
  minimax.ts       |     100 |      100 |     100 |     100 |                   
  mistral.ts       |   96.07 |    73.33 |     100 |   96.07 | 32-33             
  modelscope.ts    |     100 |      100 |     100 |     100 |                   
  openrouter.ts    |     100 |      100 |     100 |     100 |                   
  types.ts         |       0 |        0 |       0 |       0 |                   
  utils.ts         |     100 |      100 |     100 |     100 |                   
  zai.ts           |      90 |    76.31 |     100 |      90 | ...,72-73,173-175 
 src/extension     |   88.79 |    86.22 |   93.46 |   88.79 |                   
  ...ive-safety.ts |   97.77 |    93.75 |     100 |   97.77 | 100-101           
  ...-converter.ts |   80.55 |    73.66 |     100 |   80.55 | ...1133,1179-1180 
  corruptFile.ts   |     100 |       50 |     100 |     100 | 40-45             
  ...-converter.ts |     100 |      100 |     100 |     100 |                   
  ...git-client.ts |     100 |      100 |     100 |     100 |                   
  ...redentials.ts |   95.33 |    89.47 |     100 |   95.33 | ...21-122,173-175 
  ...me-refresh.ts |     100 |      100 |     100 |     100 |                   
  ...sion-store.ts |   92.82 |    89.27 |    98.3 |   92.82 | ...1641-1647,1691 
  ...ionManager.ts |   84.52 |    83.52 |      83 |   84.52 | ...3139,3177-3178 
  ...references.ts |     100 |     90.9 |     100 |     100 | ...05,129,197,200 
  ...onSettings.ts |    92.3 |     94.4 |     100 |    92.3 | ...98-501,570-571 
  ...-converter.ts |    75.9 |    85.71 |   85.71 |    75.9 | ...98,202,214-248 
  github.ts        |   92.43 |    87.52 |     100 |   92.43 | ...1293-1294,1304 
  http-client.ts   |   84.61 |       80 |     100 |   84.61 | 20-21             
  i18n.ts          |   78.26 |       96 |      50 |   78.26 | 104-110,116-123   
  index.ts         |     100 |      100 |     100 |     100 |                   
  marketplace.ts   |   88.39 |    83.11 |     100 |   88.39 | ...08,494,507-508 
  ...ork-policy.ts |   89.72 |    90.16 |     100 |   89.72 | ...36,148-154,156 
  npm.ts           |   89.02 |    81.81 |     100 |   89.02 | ...86-688,695-700 
  override.ts      |   94.11 |    93.54 |     100 |   94.11 | 63-64,81-82       
  ...-converter.ts |   94.89 |    90.41 |     100 |   94.89 | ...50-151,222-224 
  redaction.ts     |     100 |      100 |     100 |     100 |                   
  settings.ts      |   66.26 |      100 |      50 |   66.26 | 81-107,141-146    
  ...ceRegistry.ts |   94.01 |    83.33 |     100 |   94.01 | ...38-344,365-366 
  storage.ts       |     100 |      100 |     100 |     100 |                   
  ...ableSchema.ts |     100 |      100 |     100 |     100 |                   
  variables.ts     |   88.95 |    84.21 |     100 |   88.95 | ...32-235,238-241 
  ...extraction.ts |   85.77 |       81 |   89.47 |   85.77 | ...02-205,260-261 
 ...ent-plugins-v1 |   84.94 |    79.51 |     100 |   84.94 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  manifest.ts      |   81.87 |    84.48 |     100 |   81.87 | ...55-156,161-174 
  mcp.ts           |   84.98 |    79.56 |     100 |   84.98 | ...88-389,419-420 
  paths.ts         |     100 |    94.44 |     100 |     100 | 59                
  skills.ts        |   82.31 |    63.88 |     100 |   82.31 | ...38-141,150-151 
 src/followup      |   84.78 |    82.27 |   86.84 |   84.78 |                   
  followupState.ts |   98.44 |    95.74 |     100 |   98.44 | 236-237           
  index.ts         |     100 |      100 |     100 |     100 |                   
  overlayFs.ts     |   96.29 |    88.88 |     100 |   96.29 | 78,108,122        
  speculation.ts   |   76.53 |    71.96 |   58.33 |   76.53 | ...48-749,756-757 
  ...onToolGate.ts |   97.97 |     87.5 |     100 |   97.97 | 105,110           
  ...nGenerator.ts |   86.11 |    87.17 |     100 |   86.11 | ...39-244,356-358 
 src/generated     |       0 |        0 |       0 |       0 |                   
  git-commit.ts    |       0 |        0 |       0 |       0 | 1-10              
 src/goals         |   93.59 |    90.38 |      95 |   93.59 |                   
  ...eGoalStore.ts |   87.61 |    88.88 |   86.66 |   87.61 | ...85-188,196-204 
  ...t-verifier.ts |   99.45 |    97.05 |     100 |   99.45 | 155               
  ...checkpoint.ts |   86.08 |    85.18 |     100 |   86.08 | ...29-132,142-145 
  ...ion-prompt.ts |     100 |      100 |     100 |     100 |                   
  goal-evidence.ts |    88.7 |     88.2 |   97.67 |    88.7 | ...1219,1242-1245 
  ...projection.ts |   66.66 |    72.97 |   33.33 |   66.66 | ...87,190,194-196 
  ...ersistence.ts |   87.36 |    85.96 |    87.5 |   87.36 | ...53-154,185-190 
  goal-protocol.ts |   97.56 |    96.42 |     100 |   97.56 | 322-323           
  goal-reducer.ts  |   95.75 |    93.82 |   97.36 |   95.75 | ...76,666,684-685 
  goal-runtime.ts  |   96.51 |    90.64 |   96.49 |   96.51 | ...1645-1646,1777 
  ...provenance.ts |     100 |      100 |     100 |     100 |                   
  goal-tools.ts    |   98.58 |     95.2 |   96.15 |   98.58 | ...41-242,350-351 
  ...rn-context.ts |     100 |      100 |     100 |     100 |                   
  goal-verifier.ts |   92.46 |    93.02 |     100 |   92.46 | ...69-172,185-187 
  goal-wire.ts     |       0 |        0 |       0 |       0 | 1-28              
  goalHook.ts      |   96.91 |    92.42 |     100 |   96.91 | 115-120,221-222   
  goalJudge.ts     |   95.84 |    87.09 |     100 |   95.84 | ...55-356,448-449 
  index.ts         |     100 |      100 |     100 |     100 |                   
 src/hooks         |   89.12 |    87.01 |    89.8 |   89.12 |                   
  ...okRegistry.ts |   86.48 |    77.08 |     100 |   86.48 | ...41-344,362-369 
  ...bortSignal.ts |     100 |      100 |     100 |     100 |                   
  context-usage.ts |     100 |      100 |     100 |     100 |                   
  ...terpolator.ts |   96.66 |    93.33 |     100 |   96.66 | 66-67             
  ...HookRunner.ts |   96.68 |    87.23 |     100 |   96.68 | 110-112,231-233   
  ...Aggregator.ts |   96.57 |    91.48 |     100 |   96.57 | ...20-321,402,404 
  ...entHandler.ts |   95.57 |    84.76 |   94.73 |   95.57 | ...1040-1041,1051 
  hookPlanner.ts   |   87.55 |    85.54 |   86.66 |   87.55 | ...22-226,233-244 
  hookRegistry.ts  |   92.53 |    85.43 |     100 |   92.53 | ...39,458,462,466 
  hookRunner.ts    |   75.58 |    83.23 |   87.87 |   75.58 | ...25-927,937-940 
  hookSystem.ts    |   87.64 |     98.5 |   70.83 |   87.64 | ...58-759,765-766 
  ...HookRunner.ts |   79.06 |    66.66 |      80 |   79.06 | ...33-434,452-456 
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...edCallback.ts |     100 |      100 |     100 |     100 |                   
  ...HookRunner.ts |   94.19 |    84.37 |   81.81 |   94.19 | ...76-384,458-459 
  ...SkillHooks.ts |   82.47 |    84.21 |      75 |   82.47 | 63-67,169-184     
  ...oksManager.ts |   94.87 |    90.12 |     100 |   94.87 | ...84,325,327-329 
  ssrfGuard.ts     |   86.45 |    87.91 |     100 |   86.45 | ...85,289-295,301 
  stopHookCap.ts   |     100 |      100 |     100 |     100 |                   
  trustedHooks.ts  |      90 |    52.63 |     100 |      90 | ...53,66-67,97-98 
  types.ts         |   94.25 |    96.09 |   88.88 |   94.25 | ...46-547,632-636 
  urlValidator.ts  |     100 |      100 |     100 |     100 |                   
  ...it-context.ts |     100 |      100 |     100 |     100 |                   
 src/ide           |   76.98 |    85.03 |   79.03 |   76.98 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  detect-ide.ts    |     100 |      100 |     100 |     100 |                   
  ide-client.ts    |   69.16 |    84.65 |   68.29 |   69.16 | ...1068,1097-1105 
  ide-installer.ts |   89.06 |    79.31 |     100 |   89.06 | ...36,143-147,160 
  ideContext.ts    |     100 |      100 |     100 |     100 |                   
  process-utils.ts |   84.84 |    71.79 |     100 |   84.84 | ...37,151,193-194 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/ipc           |   92.72 |    90.15 |    97.5 |   92.72 |                   
  inbound-gate.ts  |   98.93 |     89.1 |     100 |   98.93 | 522-524           
  peer-envelope.ts |     100 |      100 |     100 |     100 |                   
  peer-frames.ts   |   97.45 |    93.65 |     100 |   97.45 | 235-237           
  socket-path.ts   |   85.71 |    93.33 |     100 |   85.71 | 83-88             
  uds-client.ts    |   85.71 |    94.11 |      80 |   85.71 | 162-175           
  uds-inbox.ts     |   82.42 |    81.81 |     100 |   82.42 | ...33,240-250,282 
 src/lsp           |   58.96 |    70.67 |   66.49 |   58.96 |                   
  ...nfigLoader.ts |   80.55 |    72.22 |   95.65 |   80.55 | ...02-504,508-514 
  ...ionFactory.ts |   42.81 |    73.07 |      50 |   42.81 | ...76-427,433-450 
  ...Normalizer.ts |   23.09 |    13.72 |   30.43 |   23.09 | ...04-905,909-924 
  ...verManager.ts |   75.73 |     80.1 |   79.66 |   75.73 | ...1346,1352-1382 
  ...eLspClient.ts |   32.78 |    81.81 |   21.05 |   32.78 | ...89-293,299-300 
  ...LspService.ts |      60 |    73.36 |   78.26 |      60 | ...1575,1635-1645 
  configHash.ts    |     100 |      100 |     100 |     100 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/mcp           |    82.3 |    77.81 |   78.33 |    82.3 |                   
  configHash.ts    |     100 |      100 |     100 |     100 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  ...h-provider.ts |   86.95 |      100 |   33.33 |   86.95 | ...,93,97,101-102 
  ...h-provider.ts |   79.31 |    58.06 |     100 |   79.31 | ...26-933,940-942 
  ...en-storage.ts |   98.78 |    97.95 |     100 |   98.78 | 106-107           
  oauth-utils.ts   |   73.61 |    85.48 |    92.3 |   73.61 | ...46-366,392-421 
  ...n-provider.ts |   89.83 |       96 |   45.45 |   89.83 | ...43,147,151-152 
 .../token-storage |   82.12 |    88.48 |   89.28 |   82.12 |                   
  ...en-storage.ts |     100 |      100 |     100 |     100 |                   
  ...en-storage.ts |   87.08 |    87.71 |   95.23 |   87.08 | ...00-201,214-215 
  ...en-storage.ts |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...en-storage.ts |   68.14 |    82.35 |   64.28 |   68.14 | ...81-295,298-314 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/memory        |   88.82 |    85.25 |    90.9 |   88.82 |                   
  ...y-document.ts |   89.52 |    84.61 |     100 |   89.52 | ...24-325,329-330 
  ...nel-memory.ts |   97.36 |    96.63 |   96.42 |   97.36 | ...91-293,367-368 
  dream.ts         |    64.6 |    72.22 |      50 |    64.6 | ...04-109,124-165 
  ...entPlanner.ts |     100 |    83.33 |     100 |     100 | 135,145           
  entries.ts       |   75.59 |    84.84 |   83.33 |   75.59 | ...56-157,172-180 
  extract.ts       |   93.82 |    84.09 |     100 |   93.82 | 78-83,122,154-157 
  ...entPlanner.ts |   91.55 |    76.74 |     100 |   91.55 | ...05,118-121,296 
  ...ionPlanner.ts |       0 |        0 |       0 |       0 | 1                 
  forget.ts        |   90.16 |    78.76 |   94.44 |   90.16 | ...06,629,642-648 
  indexer.ts       |   94.14 |       84 |     100 |   94.14 | ...32-233,334,337 
  ...kill-agent.ts |   97.94 |    89.36 |     100 |   97.94 | 82-83,179-180     
  manager.ts       |   78.51 |    83.16 |   77.77 |   78.51 | ...1487,1500-1502 
  ...ent-config.ts |   87.64 |    83.62 |      88 |   87.64 | ...08,411-425,437 
  memoryAge.ts     |   90.47 |    84.61 |     100 |   90.47 | 50-51             
  ...yDiscovery.ts |   93.48 |    90.09 |     100 |   93.48 | ...42,401,629-632 
  paths.ts         |     100 |      100 |     100 |     100 |                   
  ...ing-skills.ts |     100 |       72 |     100 |     100 | 31-35,73-78,97    
  prompt.ts        |   97.26 |    86.79 |     100 |   97.26 | ...10-218,222,225 
  recall.ts        |   86.86 |    86.23 |   92.85 |   86.86 | ...33-538,571-582 
  refresh.ts       |   93.58 |    89.58 |     100 |   93.58 | ...75-176,183-184 
  ...ceSelector.ts |    93.2 |    85.71 |     100 |    93.2 | ...45-146,148-149 
  remember.ts      |   98.88 |    90.38 |     100 |   98.88 | 50,70             
  scan.ts          |   93.75 |       80 |     100 |   93.75 | ...08-109,154,157 
  scopes.ts        |     100 |      100 |     100 |     100 |                   
  ...et-scanner.ts |     100 |      100 |     100 |     100 |                   
  ...entPlanner.ts |   73.92 |       75 |   66.66 |   73.92 | ...78-482,485,491 
  status.ts        |   10.52 |      100 |       0 |   10.52 | 41-98             
  store.ts         |   92.92 |    81.81 |     100 |   92.92 | ...16-117,147-148 
  ...git-status.ts |     100 |    85.71 |     100 |     100 | 27                
  ...cret-guard.ts |     100 |      100 |     100 |     100 |                   
  ...emory-sync.ts |   94.24 |    82.85 |     100 |   94.24 | ...34-236,246-247 
  types.ts         |     100 |      100 |     100 |     100 |                   
  ...ontextFile.ts |   81.21 |    81.53 |   81.81 |   81.21 | ...66-280,294-299 
 src/mocks         |       0 |        0 |       0 |       0 |                   
  msw.ts           |       0 |        0 |       0 |       0 | 1-9               
 src/models        |   92.82 |    89.39 |   91.35 |   92.82 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  ...tor-config.ts |   97.77 |    91.83 |     100 |   97.77 | 155,161,171       
  ...capability.ts |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...nfigErrors.ts |   79.43 |    64.51 |   85.71 |   79.43 | ...,89-96,131-142 
  ...igResolver.ts |   98.71 |    93.33 |     100 |   98.71 | 166,328,334       
  modelRegistry.ts |     100 |    98.11 |     100 |     100 | 177,262           
  modelsConfig.ts  |   89.36 |    86.93 |   88.09 |   89.36 | ...1407,1436-1437 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/output        |     100 |      100 |     100 |     100 |                   
  ...-formatter.ts |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/permissions   |   84.45 |    91.47 |    72.4 |   84.45 |                   
  autoMode.ts      |   97.66 |    93.13 |     100 |   97.66 | ...82-589,635,712 
  ...transcript.ts |      98 |       84 |     100 |      98 | 200-201           
  classifier.ts    |      94 |    94.54 |     100 |      94 | 158-165,389-393   
  ...erousRules.ts |     100 |    89.79 |     100 |     100 | 110,133,147,175   
  ...alTracking.ts |     100 |      100 |     100 |     100 |                   
  ...e-commands.ts |   86.77 |     73.8 |     100 |   86.77 | 131-141,210-214   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...on-manager.ts |      89 |    90.99 |   86.84 |      89 | ...1461,1567-1571 
  rule-parser.ts   |   94.89 |    92.83 |     100 |   94.89 | ...1550,1584-1586 
  ...-semantics.ts |   70.44 |    91.09 |   46.66 |   70.44 | ...2237,2311-2314 
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...sifier-prompts |   99.05 |    95.23 |     100 |   99.05 |                   
  system-prompt.ts |   99.05 |    95.23 |     100 |   99.05 | 226               
 src/prompts       |   83.63 |      100 |    87.5 |   83.63 |                   
  mcp-prompts.ts   |   18.18 |      100 |       0 |   18.18 | 11-19             
  ...t-registry.ts |     100 |      100 |     100 |     100 |                   
 src/providers     |   85.14 |    80.63 |   82.85 |   85.14 |                   
  all-providers.ts |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  install.ts       |   93.11 |     84.5 |     100 |   93.11 | ...56-257,330-331 
  ...-discovery.ts |    95.4 |    94.44 |     100 |    95.4 | 31-32,42-43       
  ...der-config.ts |   75.91 |    73.48 |   78.26 |   75.91 | ...74-475,503-504 
  types.ts         |       0 |        0 |       0 |       0 | 1                 
 ...viders/presets |   98.04 |    91.66 |   63.63 |   98.04 |                   
  ...oding-plan.ts |    87.5 |      100 |       0 |    87.5 | 82-84,87-89,91-94 
  ...a-standard.ts |     100 |      100 |     100 |     100 |                   
  ...token-plan.ts |     100 |      100 |     100 |     100 |                   
  ...m-provider.ts |   97.05 |    81.25 |      75 |   97.05 | 118-119           
  deepseek.ts      |     100 |      100 |     100 |     100 |                   
  grok.ts          |     100 |      100 |     100 |     100 |                   
  idealab.ts       |     100 |      100 |     100 |     100 |                   
  minimax.ts       |     100 |      100 |     100 |     100 |                   
  modelscope.ts    |     100 |      100 |     100 |     100 |                   
  moonshot.ts      |     100 |      100 |     100 |     100 |                   
  openrouter.ts    |     100 |      100 |     100 |     100 |                   
  requesty.ts      |     100 |      100 |     100 |     100 |                   
  zai.ts           |     100 |      100 |     100 |     100 |                   
 src/qwen          |   85.36 |    78.82 |   95.94 |   85.36 |                   
  ...tGenerator.ts |    98.6 |    98.14 |     100 |    98.6 | 103-104           
  qwenOAuth2.ts    |   82.79 |    73.91 |    90.9 |   82.79 | ...1205-1221,1251 
  ...kenManager.ts |   85.36 |     76.8 |     100 |   85.36 | ...52-757,778-783 
 src/resources     |     100 |      100 |     100 |     100 |                   
  ...e-registry.ts |     100 |      100 |     100 |     100 |                   
 src/services      |   90.64 |    86.19 |   96.55 |   90.64 |                   
  ...ionTrailer.ts |     100 |      100 |     100 |     100 |                   
  ...llRegistry.ts |   98.48 |    87.28 |     100 |   98.48 | 81-82,105,474-475 
  branch-points.ts |     100 |    95.23 |     100 |     100 | ...20,211,224,327 
  ...ionService.ts |   97.72 |    96.53 |     100 |   97.72 | ...1081,1224-1232 
  ...ingService.ts |    92.6 |    88.12 |   94.73 |    92.6 | ...2856,2871-2872 
  ...ttribution.ts |   91.73 |    87.71 |      90 |   91.73 | ...80-685,826-827 
  ...utSlimming.ts |    97.2 |    94.23 |     100 |    97.2 | ...39-340,378-381 
  cronScheduler.ts |   94.17 |    90.45 |      98 |   94.17 | ...1333,1736-1737 
  cronTasksFile.ts |   95.52 |    90.99 |     100 |   95.52 | ...37,346-347,483 
  cronTasksLock.ts |   94.44 |    89.47 |     100 |   94.44 | ...02-103,132-133 
  ...eryService.ts |   96.22 |    93.54 |      90 |   96.22 | 121,155-156,161   
  ...oryService.ts |   88.17 |    79.02 |    92.3 |   88.17 | ...1303,1344-1347 
  fileReadCache.ts |    97.5 |    96.07 |     100 |    97.5 | 349-350,363-364   
  ...temService.ts |    92.8 |    84.68 |   94.11 |    92.8 | ...53,479-486,531 
  ...ratedFiles.ts |      96 |    88.23 |     100 |      96 | 119-120,146-147   
  gitInit.ts       |     100 |      100 |     100 |     100 |                   
  ...reeService.ts |   74.75 |    70.76 |   96.07 |   74.75 | ...2296,2325-2326 
  ...on-service.ts |   86.58 |    74.39 |     100 |   86.58 | ...56-460,498-499 
  ...references.ts |   98.57 |    91.42 |     100 |   98.57 | 156-157,217-218   
  ...ionService.ts |   98.26 |    97.23 |     100 |   98.26 | ...65-866,889-890 
  ...ticsDumper.ts |   98.37 |    95.23 |     100 |   98.37 | 185-186           
  ...ureMonitor.ts |   95.82 |    90.52 |   97.05 |   95.82 | ...60,861,875-877 
  ...orRegistry.ts |   97.22 |    90.99 |     100 |   97.22 | ...55-456,609-610 
  ...ttachments.ts |   97.74 |     90.9 |     100 |   97.74 | 298-308,646       
  ...pi-history.ts |   98.94 |    89.13 |     100 |   98.94 | 43                
  ...ersistence.ts |   91.88 |    81.19 |     100 |   91.88 | ...1073-1074,1119 
  ...tory-state.ts |     100 |    95.23 |     100 |     100 | 31                
  ...on-service.ts |   94.61 |    92.44 |   97.22 |   94.61 | ...11-613,669-677 
  ...pr-service.ts |   96.04 |    89.74 |     100 |   96.04 | 72,98-101,190-191 
  ...ce-service.ts |    98.5 |    94.11 |    90.9 |    98.5 | 64-65             
  ...n-registry.ts |   98.74 |    94.92 |     100 |   98.74 | 601,655-656,714   
  ...ken-counts.ts |     100 |       96 |     100 |     100 | 58                
  ...ipt-reader.ts |    93.7 |    91.22 |    97.8 |    93.7 | ...2791-2792,2869 
  ...turn-state.ts |   94.11 |     90.9 |   91.66 |   94.11 | 108-112,129-130   
  ...est-helper.ts |       0 |        0 |       0 |       0 | 1-65              
  ...iter-lease.ts |   84.57 |    75.18 |   97.72 |   84.57 | ...2567,2589,2603 
  sessionRecap.ts  |   67.56 |    43.47 |     100 |   67.56 | ...60,178,180-183 
  ...ionService.ts |   88.82 |    85.68 |    91.4 |   88.82 | ...4049-4050,4091 
  sessionTitle.ts  |   96.35 |    79.71 |     100 |   96.35 | ...08-311,342-343 
  ...ContextEnv.ts |     100 |    94.73 |     100 |     100 | 76,111            
  ...ionService.ts |   84.43 |    78.45 |   97.18 |   84.43 | ...2496,2502-2507 
  ...pInhibitor.ts |   97.42 |    92.77 |     100 |   97.42 | ...30,169,369-370 
  ...e-encoding.ts |   85.96 |    76.47 |     100 |   85.96 | 58-61,64-65,78-79 
  ...Estimation.ts |     100 |    95.83 |     100 |     100 | 139               
  ...ageService.ts |   97.76 |    91.59 |   93.75 |   97.76 | ...61-262,366,567 
  ...ite-origin.ts |     100 |    93.33 |     100 |     100 | 32                
  ...UseSummary.ts |   94.63 |    88.46 |     100 |   94.63 | ...62-164,214-215 
  ...rd-service.ts |     100 |    88.37 |     100 |     100 | ...29,145-146,241 
  ...oryService.ts |   90.77 |    84.92 |     100 |   90.77 | ...43-546,598-599 
  ...l-registry.ts |   92.99 |    83.19 |     100 |   92.99 | ...66-367,377-378 
  ...reeCleanup.ts |   14.42 |      100 |   33.33 |   14.42 | 58-186            
  ...ionService.ts |   88.36 |     87.7 |     100 |   88.36 | ...48-449,465-466 
 ...icrocompaction |   98.91 |    95.08 |     100 |   98.91 |                   
  microcompact.ts  |   98.91 |    95.08 |     100 |   98.91 | ...60,769,778-779 
 ...s/visionBridge |    98.8 |    92.12 |     100 |    98.8 |                   
  ...capability.ts |     100 |      100 |     100 |     100 |                   
  ...part-utils.ts |     100 |      100 |     100 |     100 |                   
  ...ion-bridge.ts |   98.72 |    82.35 |     100 |   98.72 | 65,71             
  ...ge-service.ts |   98.61 |     94.7 |     100 |   98.61 | ...06,666,679-680 
 src/skills        |   89.78 |    86.08 |   94.73 |   89.78 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...activation.ts |     100 |    93.33 |     100 |     100 | 93,112            
  skill-curator.ts |   89.71 |    81.54 |     100 |   89.71 | ...01-902,904-907 
  skill-load.ts    |   94.84 |    87.69 |     100 |   94.84 | ...03,223,235-237 
  skill-manager.ts |   86.11 |    85.71 |   86.11 |   86.11 | ...1244,1251-1255 
  skill-paths.ts   |   90.42 |     87.5 |     100 |   90.42 | ...19-120,125-126 
  symlinkScope.ts  |     100 |      100 |     100 |     100 |                   
  types.ts         |   97.91 |    98.07 |     100 |   97.91 | 286-287           
 ...ataviz/scripts |   80.06 |    95.23 |   88.23 |   80.06 |                   
  ...te_palette.js |   80.06 |    95.23 |   88.23 |   80.06 | 261-296,306-328   
 ...s/bundled/loop |   97.48 |    95.77 |     100 |   97.48 |                   
  ...omous-loop.ts |     100 |      100 |     100 |     100 |                   
  ...-task-file.ts |   94.85 |     92.4 |     100 |   94.85 | ...56,367,375-376 
  ...k-resolver.ts |     100 |      100 |     100 |     100 |                   
 src/subagents     |   88.58 |    89.46 |    98.3 |   88.58 |                   
  ...ter-schema.ts |     100 |    98.07 |     100 |     100 | 99                
  ...tin-agents.ts |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...nt-manager.ts |   85.54 |    86.59 |   97.43 |   85.54 | ...1588,1665-1666 
  types.ts         |     100 |      100 |     100 |     100 |                   
  validation.ts    |   92.46 |    95.18 |     100 |   92.46 | 47-52,63-68,71-76 
 src/telemetry     |   83.23 |    84.98 |   86.51 |   83.23 |                   
  ...ty-tracker.ts |     100 |      100 |     100 |     100 |                   
  config.ts        |     100 |      100 |     100 |     100 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  context-usage.ts |   96.85 |    91.07 |     100 |   96.85 | ...26-127,199-200 
  ...on-metrics.ts |   99.08 |    80.95 |     100 |   99.08 | 185,199           
  ...on-tracing.ts |   80.71 |    81.91 |   79.16 |   80.71 | ...92,499-501,517 
  ...attributes.ts |   96.98 |    91.37 |     100 |   96.98 | ...47-348,366-367 
  ...ag-metrics.ts |     100 |    77.77 |     100 |     100 | 21,40             
  ...t-loop-lag.ts |   96.85 |    85.71 |     100 |   96.85 | 170-173           
  ...-exporters.ts |   65.38 |    83.33 |      50 |   65.38 | ...08-109,112-113 
  ...ai-content.ts |    74.5 |    66.41 |   91.66 |    74.5 | ...1480,1493-1502 
  ...i-provider.ts |     100 |    99.02 |     100 |     100 | 106               
  ...ai-request.ts |   87.88 |    92.79 |   83.78 |   87.88 | ...55-561,564-568 
  gen-ai-usage.ts  |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...t.circular.ts |       0 |        0 |       0 |       0 | 1-111             
  ...-processor.ts |   99.12 |    96.03 |      95 |   99.12 | 150,379-380       
  ...t.circular.ts |       0 |        0 |       0 |       0 | 1-128             
  loggers.ts       |   60.83 |    77.77 |   66.66 |   60.83 | ...1523,1540-1560 
  metrics.ts       |   80.37 |    82.35 |   80.95 |   80.37 | ...1150,1153-1164 
  otlp-urls.ts     |     100 |      100 |     100 |     100 |                   
  ...attributes.ts |     100 |      100 |     100 |     100 |                   
  ...ime-config.ts |       0 |        0 |       0 |       0 | 1                 
  sanitize.ts      |      80 |    83.33 |     100 |      80 | 35-36,41-42       
  ...rters-grpc.ts |     100 |      100 |     100 |     100 |                   
  ...rters-http.ts |     100 |      100 |     100 |     100 |                   
  sdk-impl.ts      |   94.13 |    86.66 |      75 |   94.13 | ...45,496-497,513 
  sdk.ts           |    82.7 |     90.9 |   66.66 |    82.7 | ...00-204,242-264 
  ...on-context.ts |     100 |      100 |     100 |     100 |                   
  ...ion-events.ts |     100 |      100 |     100 |     100 |                   
  ...on-tracing.ts |   91.29 |    88.88 |    97.5 |   91.29 | ...1946,1975-1978 
  ...etry-utils.ts |     100 |      100 |     100 |     100 |                   
  ...l-decision.ts |     100 |      100 |     100 |     100 |                   
  trace-context.ts |     100 |      100 |     100 |     100 |                   
  ...e-id-utils.ts |     100 |      100 |     100 |     100 |                   
  tracer.ts        |   98.56 |    88.63 |     100 |   98.56 | 52,101            
  types.ts         |   83.26 |    88.81 |   86.36 |   83.26 | ...1467,1471-1478 
  uiTelemetry.ts   |   98.87 |     95.1 |   97.05 |   98.87 | ...59,696,786-787 
 ...ry/qwen-logger |   74.23 |    80.86 |      70 |   74.23 |                   
  event-types.ts   |       0 |        0 |       0 |       0 |                   
  qwen-logger.ts   |   74.23 |     80.7 |   69.49 |   74.23 | ...1122,1160-1161 
 src/test-utils    |   96.38 |    98.64 |   84.09 |   96.38 |                   
  config.ts        |     100 |      100 |     100 |     100 |                   
  ...st-helpers.ts |   94.11 |       90 |     100 |   94.11 | 69-70             
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...mised-lock.ts |     100 |      100 |     100 |     100 |                   
  mock-tool.ts     |   94.85 |      100 |      80 |   94.85 | ...53,227-228,241 
  ...aceContext.ts |     100 |      100 |     100 |     100 |                   
 src/tools         |   87.55 |    86.06 |   90.21 |   87.55 |                   
  ...erQuestion.ts |   89.71 |    81.13 |    92.3 |   89.71 | ...66-367,374-375 
  ...-registrar.ts |    77.7 |    66.66 |   66.66 |    77.7 | ...72-277,292-294 
  ...ub-session.ts |   89.72 |    91.48 |   83.33 |   89.72 | ...06-307,318-325 
  cron-create.ts   |   92.26 |    97.72 |      75 |   92.26 | ...,76-77,272-281 
  cron-delete.ts   |   97.56 |      100 |   85.71 |   97.56 | 31-32             
  cron-list.ts     |   98.23 |    95.45 |   88.88 |   98.23 | 57-58             
  diffOptions.ts   |     100 |      100 |     100 |     100 |                   
  display-image.ts |   87.42 |    85.71 |    90.9 |   87.42 | ...29-134,194-195 
  edit.ts          |   82.76 |    86.88 |   82.35 |   82.76 | ...45-746,865-915 
  ...r-worktree.ts |   83.14 |    68.42 |   88.88 |   83.14 | ...84-187,278-279 
  enterPlanMode.ts |      85 |       84 |      90 |      85 | ...28-133,161-175 
  exit-worktree.ts |   83.29 |     83.8 |   94.73 |   83.29 | ...14-515,537-538 
  exitPlanMode.ts  |      95 |    85.29 |     100 |      95 | ...21-325,344,378 
  ...permission.ts |     100 |      100 |     100 |     100 |                   
  glob.ts          |   96.33 |     88.5 |     100 |   96.33 | ...24-225,373,376 
  grep.ts          |   90.73 |    86.71 |   86.36 |   90.73 | ...76-677,727-728 
  ...adTracking.ts |     100 |      100 |     100 |     100 |                   
  image-gen.ts     |   91.66 |    78.12 |   91.66 |   91.66 | ...13-214,221-222 
  list-agents.ts   |   94.11 |    83.33 |   85.71 |   94.11 | 31-32,47-48       
  loop-wakeup.ts   |   99.27 |     93.1 |     100 |   99.27 | 45                
  ls.ts            |   96.74 |    90.54 |     100 |   96.74 | 176-181,212,216   
  lsp.ts           |   72.71 |     59.9 |    90.9 |   72.71 | ...1212,1214-1215 
  ...nt-manager.ts |   82.07 |    80.15 |   85.71 |   82.07 | ...3243,3245-3246 
  mcp-client.ts    |   86.25 |    87.61 |   93.93 |   86.25 | ...2552,2556-2559 
  ...ry-timeout.ts |     100 |      100 |     100 |     100 |                   
  mcp-errors.ts    |     100 |      100 |     100 |     100 |                   
  ...pool-entry.ts |   79.21 |    85.71 |   81.57 |   79.21 | ...1342,1350-1351 
  ...ool-events.ts |       8 |      100 |       0 |       8 | 132-158           
  mcp-pool-key.ts  |    97.5 |    93.93 |     100 |    97.5 | 178-179           
  ...ce-content.ts |   96.55 |    91.17 |     100 |   96.55 | 80-82             
  mcp-retry.ts     |   97.67 |    95.65 |     100 |   97.67 | 131-132           
  ...ion-config.ts |     100 |      100 |     100 |     100 |                   
  mcp-status.ts    |     100 |      100 |     100 |     100 |                   
  mcp-tool.ts      |    98.1 |       93 |     100 |    98.1 | ...1233,1288-1289 
  ...sport-pool.ts |   83.98 |     80.3 |   88.46 |   83.98 | ...1411,1418-1422 
  ...ace-budget.ts |   87.27 |     82.6 |     100 |   87.27 | ...00-305,340-345 
  memory-config.ts |     100 |      100 |     100 |     100 |                   
  ...iable-tool.ts |     100 |    84.61 |     100 |     100 | 101,108           
  monitor.ts       |   91.82 |    83.09 |   88.46 |   91.82 | ...99,612,810-815 
  notebook-edit.ts |   85.71 |    77.39 |   82.35 |   85.71 | ...96-912,958-959 
  ...escendants.ts |   36.17 |    64.51 |   55.55 |   36.17 | ...46-310,385-390 
  ...nforcement.ts |   83.21 |    90.69 |     100 |   83.21 | 147-158,207-220   
  read-file.ts     |   95.49 |    88.61 |    87.5 |   95.49 | ...49,464,536-537 
  ...p-resource.ts |   96.85 |      100 |   91.66 |   96.85 | 92-96             
  readManyFiles.ts |   96.04 |    82.25 |     100 |   96.04 | ...41,594,604-608 
  ...d-artifact.ts |   85.68 |    81.59 |   94.73 |   85.68 | ...1071,1095-1096 
  ...t-findings.ts |   99.13 |    93.93 |    92.3 |   99.13 | 256-258           
  ...t-shutdown.ts |    87.2 |    86.66 |   77.77 |    87.2 | ...,75-79,162-165 
  ripGrep.ts       |    94.6 |    87.34 |   95.45 |    94.6 | ...33-734,740-741 
  ...-transport.ts |   71.42 |    55.55 |   71.42 |   71.42 | ...36-137,143-144 
  send-message.ts  |    81.5 |    90.69 |   66.66 |    81.5 | ...80-286,354-361 
  ...n-mcp-view.ts |   94.07 |    91.89 |    90.9 |   94.07 | 131-139           
  shell.ts         |   78.96 |    84.29 |      93 |   78.96 | ...5036,5111-5112 
  skill-utils.ts   |     100 |      100 |     100 |     100 |                   
  skill.ts         |   93.56 |    90.78 |   91.66 |   93.56 | ...49,653,701-723 
  ...-constants.ts |     100 |      100 |     100 |     100 |                   
  ...eticOutput.ts |   95.12 |      100 |      80 |   95.12 | 87-88             
  task-create.ts   |    94.4 |    93.75 |   83.33 |    94.4 | 45-49,63-64,95    
  task-list.ts     |   80.43 |    86.95 |   85.71 |   80.43 | ...67,121,125-132 
  task-stop.ts     |   93.14 |    96.29 |    87.5 |   93.14 | 39-40,54-64       
  task-update.ts   |   82.87 |     86.5 |   92.85 |   82.87 | ...54-564,588-599 
  team-create.ts   |   97.24 |     87.5 |   85.71 |   97.24 | 48-49,129-130     
  team-delete.ts   |   86.74 |    84.61 |   85.71 |   86.74 | 37-38,42-48,72-73 
  ...n-approval.ts |   92.14 |    96.96 |   81.81 |   92.14 | 38-39,42-43,93-99 
  todoWrite.ts     |   95.73 |    90.47 |   93.75 |   95.73 | ...48-552,565-570 
  ...repeat-key.ts |     100 |      100 |     100 |     100 |                   
  tool-error.ts    |     100 |      100 |     100 |     100 |                   
  tool-names.ts    |     100 |      100 |     100 |     100 |                   
  tool-registry.ts |   80.48 |    82.45 |   86.53 |   80.48 | ...1099,1107-1108 
  ...-finalizer.ts |    98.1 |    92.36 |   93.33 |    98.1 | ...34-235,237-241 
  ...iagnostics.ts |   99.06 |    97.69 |   91.66 |   99.06 | 133-134,205       
  ...-retention.ts |     100 |    95.83 |     100 |     100 | 116               
  tool-search.ts   |   96.19 |    89.79 |   93.75 |   96.19 | ...09,259-264,426 
  tool-utils.ts    |   97.46 |    96.55 |     100 |   97.46 | 26-27             
  tools.ts         |   92.93 |    92.18 |      92 |   92.93 | ...64-565,581-587 
  truncation.ts    |   90.61 |    90.35 |     100 |   90.61 | ...53-461,498-504 
  ...reapproved.ts |   99.27 |    94.11 |     100 |   99.27 | 170               
  web-fetch.ts     |   96.05 |    90.54 |   96.77 |   96.05 | ...85-786,800-801 
  web-search.ts    |   90.58 |    83.57 |      80 |   90.58 | ...1025,1083-1086 
  write-file.ts    |   87.29 |    86.15 |   89.47 |   87.29 | ...53-856,893-928 
  zoom-image.ts    |   95.76 |    93.93 |    90.9 |   95.76 | 54-59,203-204     
 src/tools/agent   |   87.26 |    88.51 |   89.71 |   87.26 |                   
  agent.ts         |   85.88 |    87.64 |   87.35 |   85.88 | ...4265,4299-4309 
  fork-profile.ts  |   93.65 |       90 |     100 |   93.65 | ...33-134,171-174 
  fork-subagent.ts |   98.73 |       95 |     100 |   98.73 | 101-102,173       
 ...tools/artifact |   95.83 |    92.51 |   88.63 |   95.83 |                   
  artifact-tool.ts |   91.69 |    88.46 |   71.42 |   91.69 | ...20-321,329-332 
  ...-publisher.ts |     100 |    85.71 |     100 |     100 | 32                
  ...-publisher.ts |   96.74 |    97.72 |    87.5 |   96.74 | 29-30,156-157     
  html.ts          |     100 |    96.77 |     100 |     100 | 122               
  ...-publisher.ts |     100 |       80 |     100 |     100 | 30                
  oss-publisher.ts |    98.1 |    91.48 |     100 |    98.1 | 43-45             
  publisher.ts     |     100 |      100 |     100 |     100 |                   
 ...tools/workflow |   89.33 |    87.68 |   82.75 |   89.33 |                   
  workflow.ts      |   89.33 |    87.68 |   82.75 |   89.33 | ...33,878,880-881 
 src/utils         |   92.78 |    89.75 |   96.89 |   92.78 |                   
  ...Controller.ts |     100 |      100 |     100 |     100 |                   
  ...ssageQueue.ts |     100 |      100 |     100 |     100 |                   
  ...cFileWrite.ts |      95 |    92.76 |     100 |      95 | ...49-550,657-661 
  auth-type.ts     |     100 |      100 |     100 |     100 |                   
  bareMode.ts      |   81.81 |      100 |      50 |   81.81 | 18-19             
  ...ry-content.ts |   98.45 |    95.79 |     100 |   98.45 | 132-133,159-160   
  browser.ts       |   86.84 |    78.94 |     100 |   86.84 | 34,36-37,65-66    
  btwUtils.ts      |   13.95 |      100 |       0 |   13.95 | 17-31,34-55       
  bundlePaths.ts   |     100 |      100 |     100 |     100 |                   
  ...on-context.ts |     100 |      100 |     100 |     100 |                   
  ...igResolver.ts |     100 |      100 |     100 |     100 |                   
  ...engthError.ts |   91.06 |    89.47 |     100 |   91.06 | ...46-147,154-155 
  ...n-branches.ts |   95.89 |    94.11 |      95 |   95.89 | ...99-500,512-525 
  ...tion-chain.ts |     100 |      100 |     100 |     100 |                   
  cronDisplay.ts   |     100 |    97.61 |     100 |     100 | 46                
  cronParser.ts    |   95.34 |    93.33 |     100 |   95.34 | 41-42,47-48,70-71 
  debugLogger.ts   |     100 |    97.18 |     100 |     100 | 79,86             
  ...qwen-model.ts |     100 |      100 |     100 |     100 |                   
  editHelper.ts    |   93.63 |     83.9 |     100 |   93.63 | ...27-428,462-463 
  editor.ts        |   97.65 |    95.45 |     100 |   97.65 | ...35-336,338-339 
  encoding.ts      |     100 |      100 |     100 |     100 |                   
  env.ts           |     100 |      100 |     100 |     100 |                   
  ...arResolver.ts |   94.28 |    88.88 |     100 |   94.28 | 28-29,125-126     
  errorParsing.ts  |     100 |      100 |     100 |     100 |                   
  ...rReporting.ts |   95.65 |    93.33 |     100 |   95.65 | 37-38             
  errors.ts        |   88.92 |    93.03 |      68 |   88.92 | ...92,394,410-411 
  fetch.ts         |   90.68 |    82.63 |     100 |   90.68 | ...72,483-484,503 
  ...ng-options.ts |     100 |      100 |     100 |     100 |                   
  file-identity.ts |     100 |      100 |     100 |     100 |                   
  fileUtils.ts     |   94.79 |    92.16 |   96.29 |   94.79 | ...2076,2084-2085 
  formatters.ts    |     100 |      100 |     100 |     100 |                   
  ...eUtilities.ts |    92.4 |    86.95 |     100 |    92.4 | ...52-158,168-169 
  ...rStructure.ts |   94.39 |    94.28 |     100 |   94.39 | ...29-132,343-348 
  getPty.ts        |   31.57 |       50 |     100 |   31.57 | 26-38             
  git-branches.ts  |    91.6 |    84.21 |    92.3 |    91.6 | ...90,405-410,570 
  ...fig-safety.ts |   97.01 |       80 |     100 |   97.01 | 53-54             
  git-ignore.ts    |     100 |      100 |     100 |     100 |                   
  gitDiff.ts       |   95.19 |    81.36 |     100 |   95.19 | ...1073,1419-1420 
  gitDirect.ts     |   98.84 |    94.28 |     100 |   98.84 | 234,318           
  ...noreParser.ts |   94.48 |    93.22 |     100 |   94.48 | ...23-124,158-159 
  gitUtils.ts      |   78.83 |    82.35 |    87.5 |   78.83 | ...22-123,164-215 
  github-prs.ts    |   96.06 |    84.09 |     100 |   96.06 | 251,350-358       
  iconvHelper.ts   |     100 |      100 |     100 |     100 |                   
  ...rePatterns.ts |     100 |      100 |     100 |     100 |                   
  image-view.ts    |   95.08 |    93.47 |     100 |   95.08 | ...62-166,234-238 
  ...lPromptIds.ts |     100 |      100 |     100 |     100 |                   
  ...on-context.ts |     100 |      100 |     100 |     100 |                   
  is-tool.ts       |     100 |      100 |     100 |     100 |                   
  jsonl-utils.ts   |   96.15 |    93.63 |     100 |   96.15 | ...86-387,429-432 
  ...-detection.ts |     100 |      100 |     100 |     100 |                   
  ...iconv-lite.ts |     100 |      100 |     100 |     100 |                   
  ...simple-git.ts |   96.77 |    91.66 |     100 |   96.77 | 38                
  ...m-headless.ts |      96 |    88.88 |     100 |      96 | 34                
  ...-constants.ts |   94.73 |     92.3 |     100 |   94.73 | 66-67             
  ...iagnostics.ts |    96.4 |     94.2 |     100 |    96.4 | ...66,293-294,376 
  ...tProcessor.ts |   94.01 |     90.1 |     100 |   94.01 | ...47-353,445-446 
  ...Inspectors.ts |     100 |      100 |     100 |     100 |                   
  modelId.ts       |   98.96 |    98.18 |     100 |   98.96 | 154               
  ...kerChecker.ts |    90.9 |    91.66 |     100 |    90.9 | 73-79             
  notebook.ts      |   94.57 |    89.91 |   95.83 |   94.57 | ...21,333,385-387 
  openaiLogger.ts  |   91.66 |    89.74 |     100 |   91.66 | ...26-228,251-256 
  osc8.ts          |   54.26 |    64.86 |   83.33 |   54.26 | ...72-195,197-257 
  partUtils.ts     |     100 |    98.64 |     100 |     100 | 211               
  pathReader.ts    |     100 |      100 |     100 |     100 |                   
  paths.ts         |   90.88 |    90.66 |     100 |   90.88 | ...28-629,631-633 
  pdf.ts           |   92.17 |    85.81 |     100 |   92.17 | ...64-565,606-611 
  ...s-liveness.ts |     100 |    93.47 |     100 |     100 | 62,72,108         
  projectPath.ts   |     100 |      100 |     100 |     100 |                   
  projectRoot.ts   |   71.73 |    78.57 |     100 |   71.73 | 54-66             
  ...ectSummary.ts |   89.62 |    72.41 |     100 |   89.62 | ...40-145,196-199 
  ...tIdContext.ts |     100 |      100 |     100 |     100 |                   
  proxyUtils.ts    |     100 |      100 |     100 |     100 |                   
  ...rDetection.ts |   71.15 |       86 |     100 |   71.15 | ...-90,96-101,147 
  ...noreParser.ts |   92.63 |    91.66 |     100 |   92.63 | ...77-178,197-198 
  rateLimit.ts     |   93.75 |    89.62 |     100 |   93.75 | ...13,218-219,262 
  ...text-range.ts |   96.98 |    87.36 |     100 |   96.98 | ...87-688,763-764 
  retry.ts         |   96.09 |    92.52 |     100 |   96.09 | ...72,563-564,582 
  retryContext.ts  |     100 |      100 |     100 |     100 |                   
  ...sification.ts |   97.63 |    97.08 |     100 |   97.63 | ...17,251-252,278 
  retryPolicy.ts   |   97.72 |    90.56 |     100 |   97.72 | 130-131           
  ripgrepUtils.ts  |   90.04 |    93.43 |   95.45 |   90.04 | ...55-565,598-599 
  ...iagnostics.ts |   83.08 |     67.5 |   92.59 |   83.08 | ...23,543-544,550 
  ...tchOptions.ts |   84.87 |    86.71 |   96.29 |   84.87 | ...71,696,725-734 
  ...odelPrefix.ts |     100 |      100 |     100 |     100 |                   
  runtimeStatus.ts |   97.77 |    91.48 |     100 |   97.77 | 172-173           
  safe-mode.ts     |     100 |      100 |     100 |     100 |                   
  safeJsonParse.ts |     100 |      100 |     100 |     100 |                   
  ...nStringify.ts |     100 |      100 |     100 |     100 |                   
  ...-child-env.ts |     100 |      100 |     100 |     100 |                   
  ...aConverter.ts |   98.22 |    98.01 |     100 |   98.22 | 100,102-103       
  ...aValidator.ts |   92.09 |    83.65 |   90.47 |   92.09 | ...60,882-883,896 
  ...r-launcher.ts |   96.35 |    93.97 |   85.71 |   96.35 | ...35-336,347-348 
  sedEditParser.ts |   91.78 |    92.18 |     100 |   91.78 | ...66-569,645-646 
  ...nIdContext.ts |     100 |       90 |     100 |     100 | 95                
  ...orageUtils.ts |   96.21 |     86.2 |     100 |   96.21 | ...70,386,466,485 
  ...-pager-env.ts |     100 |      100 |     100 |     100 |                   
  ...fety-rules.ts |     100 |     89.7 |     100 |     100 | ...01,304,309-311 
  shell-utils.ts   |   86.37 |    88.59 |     100 |   86.37 | ...2361,2368-2372 
  ...lAstParser.ts |    98.3 |    91.59 |     100 |    98.3 | ...1340-1342,1352 
  ...nlyChecker.ts |   96.33 |    96.57 |     100 |   96.33 | ...83-284,292-293 
  sideQuery.ts     |   86.82 |    86.66 |     100 |   86.82 | ...79-185,187-193 
  ...pEventSink.ts |     100 |       80 |     100 |     100 | 61                
  ...tGenerator.ts |     100 |      100 |     100 |     100 |                   
  ...ameContext.ts |     100 |      100 |     100 |     100 |                   
  symlink.ts       |   77.77 |    57.14 |     100 |   77.77 | 44,54-59          
  ...emEncoding.ts |   96.36 |    91.17 |     100 |   96.36 | 59-60,124-125     
  terminal-env.ts  |      50 |      100 |       0 |      50 | 18-19             
  terminalSafe.ts  |     100 |      100 |     100 |     100 |                   
  ...Serializer.ts |   98.72 |       90 |     100 |   98.72 | 42-43,134,201-203 
  testUtils.ts     |   53.33 |      100 |   33.33 |   53.33 | ...53,59-64,70-72 
  ...-constants.ts |     100 |      100 |     100 |     100 |                   
  textUtils.ts     |      65 |      100 |      75 |      65 | 56-75             
  thoughtUtils.ts  |     100 |    95.65 |     100 |     100 | 99                
  ...-converter.ts |   95.23 |    85.71 |     100 |   95.23 | 36-37             
  ...error-type.ts |     100 |      100 |     100 |     100 |                   
  ...name-utils.ts |     100 |      100 |     100 |     100 |                   
  ...ultCleanup.ts |   54.62 |     62.5 |      75 |   54.62 | ...03-105,108-134 
  ...Compaction.ts |   96.83 |     92.7 |     100 |   96.83 | ...37-342,344-349 
  ...pt-records.ts |   87.61 |    86.23 |     100 |   87.61 | ...80-484,514-529 
  ...-constants.ts |     100 |      100 |     100 |     100 |                   
  windowsPath.ts   |   89.47 |    79.31 |     100 |   89.47 | ...57-58,62,90-91 
  ...-directory.ts |    83.7 |    80.95 |    87.5 |    83.7 | ...37-238,252-253 
  ...ifact-path.ts |   94.11 |    92.85 |     100 |   94.11 | 32-33             
  ...aceContext.ts |   95.39 |    89.47 |     100 |   95.39 | ...16-317,321-322 
  xml.ts           |    97.8 |    87.69 |     100 |    97.8 | 98-99             
  yaml-parser.ts   |   83.87 |    77.27 |     100 |   83.87 | ...31-234,239-240 
 ...ils/filesearch |   83.94 |    80.75 |   94.78 |   83.94 |                   
  crawlCache.ts    |     100 |      100 |     100 |     100 |                   
  crawler.ts       |    82.9 |    76.81 |   95.08 |    82.9 | ...1563,1597-1598 
  fileSearch.ts    |   93.78 |    87.67 |     100 |   93.78 | ...71-272,274-275 
  fzfWorker.ts     |       0 |        0 |       0 |       0 | 1-109             
  ...rkerHandle.ts |   84.05 |    75.86 |      90 |   84.05 | ...30-334,340-341 
  ignore.ts        |     100 |    97.36 |     100 |     100 | 187               
  result-cache.ts  |     100 |    93.75 |     100 |     100 | 49                
 ...uest-tokenizer |    92.3 |      100 |   88.88 |    92.3 |                   
  ...ageFormats.ts |   81.81 |      100 |   66.66 |   81.81 | 56-61             
  textTokenizer.ts |     100 |      100 |     100 |     100 |                   
-------------------|---------|----------|---------|---------|-------------------

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

@yiliang114
yiliang114 enabled auto-merge August 11, 2026 03:34

@qwen-code-ci-bot qwen-code-ci-bot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Not reviewed: build-and-test — "Integration Tests (CLI, No Sandbox)" was skipped in CI and its suite did not run locally.

Not explored to full depth (tool budget reached): chunk 2: none — did not run repo-wide typecheck, but the redundancy finding is verified by direct comparison of the two definitions and does not depend on it..

中文说明

未审查:build-and-test — "Integration Tests (CLI, No Sandbox)" was skipped in CI and its suite did not run locally。

未探索到全部深度(达到工具调用预算):chunk 2:none — did not run repo-wide typecheck, but the redundancy finding is verified by direct comparison of the two definitions and does not depend on it.

— qwen3.8-max via Qwen Code /review (v0.21.9)

Comment thread packages/cli/src/cli.ts Outdated
Comment thread packages/cli/src/cli.ts Outdated
Comment thread packages/cli/src/cli.ts Outdated
Comment thread packages/cli/src/config/config.ts Outdated
Comment thread packages/cli/src/config/top-level-options.ts
Comment thread packages/cli/src/cli.ts Outdated
Comment thread packages/cli/src/cli.test.ts Outdated
Comment thread packages/cli/src/cli.ts Outdated
Comment thread packages/cli/src/config/top-level-options.ts
@yiliang114

Copy link
Copy Markdown
Collaborator Author

Fixed the bootstrap help option parsing follow-ups in a28ff004: value flags are now derived from the shared top-level option definitions, flag-like tokens and -- are no longer swallowed as values, array options skip all yargs-style values, and bootstrap help now shares auth choices plus deprecation metadata. Verified packages/cli/src/cli.test.ts (56/56), Prettier, and git diff --check. Full CLI typecheck is still blocked in the temporary worktree by unrelated unbuilt sibling workspace declarations / local Ink artifacts, with no remaining errors in the touched files.

@yiliang114

Copy link
Copy Markdown
Collaborator Author

Fixed the exact-head CI failure on 00650e2c2de: consolidated duplicate yargs type imports and marked AuthType as type-only. The focused ESLint command, Prettier, and git diff --check pass. The Post Coverage failure was downstream of the failed test job and is not an independent product failure. Exact-head CI and automatic review are running.

@qwen-code-ci-bot qwen-code-ci-bot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Reviewed. Suggestions are inline.

Not reviewed: build-and-test — "Integration Tests (CLI, No Sandbox)" was skipped in CI and its suite did not run locally.

Not explored to full depth (tool budget reached): Context: PR 8902 derives the bootstrap qwen --help outp...: none — all checks above were completed within budget..

中文说明

已审查。 建议见行内评论。

未审查:build-and-test — "Integration Tests (CLI, No Sandbox)" was skipped in CI and its suite did not run locally。

未探索到全部深度(达到工具调用预算):Context: PR 8902 derives the bootstrap qwen --help outp...:none — all checks above were completed within budget.

— qwen3.8-max via Qwen Code /review (v0.21.9)

Comment thread packages/cli/src/config/top-level-options.ts
Comment thread packages/cli/src/cli.test.ts
Comment thread packages/cli/src/cli.test.ts
Comment thread packages/cli/src/cli.ts
Comment thread packages/cli/src/config/config.ts
Comment thread packages/cli/src/config/config.ts
Comment thread packages/cli/src/config/top-level-options.ts
@qwen-code-review-bot

Copy link
Copy Markdown
Collaborator

No blocking code findings at 00650e2c2d. The shared definitions now drive both parsers, and bootstrap value/array flag scanning is derived from those definitions, resolving the earlier VALUE_FLAGS gap. The focused correctness and security review found no regression in the changed paths.

The remaining merge gates are operational: the branch currently conflicts with main, and CI is still incomplete.

@yiliang114

Copy link
Copy Markdown
Collaborator Author

Closeout from resolve-pr-comments automation:

Changed: PR body now includes the repository template's Chinese details section. No code changes.

Pending: existing review threads remain; no product code changed in this pass.

@yiliang114

Copy link
Copy Markdown
Collaborator Author

Closed the remaining help-output Suggestions as intentionally not changed: the current head has no blocking help/parsing finding, and the remaining requests are parity/type/test hardening beyond this bounded bug fix. No code changed.

@yiliang114

yiliang114 commented Aug 14, 2026

Copy link
Copy Markdown
Collaborator Author

Closeout from resolve-pr-comments automation: no code changes. Resolved seven outdated review threads and updated the PR body to include the full Chinese details section from the current template. Current head has no active threads and no non-skipped red or pending checks.

@yiliang114

Copy link
Copy Markdown
Collaborator Author

@qwen-code /review --timeout=360

@github-actions

github-actions Bot commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

Qwen Code review request accepted. Review is queued in workflow run.

@qwen-code-ci-bot qwen-code-ci-bot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Partially reviewed — gaps disclosed.

Not reviewed: build-and-test — "Integration Tests (CLI, No Sandbox)" was skipped in CI and its suite did not run locally.

Not explored to full depth (tool budget reached): chunk 1: none — no checks left unfinished.; "You are review agent reverse-audit — Reverse audit agent…": none — all checks above completed within budget.; "You are review agent reverse-audit — Reverse audit agent…": none — all checks above completed within budget..

Not reviewed: reverse audit — did not converge within the reverse-audit round cap of 5.

— qwen3.8-max via Qwen Code /review (v0.21.11)

# Conflicts:
#	packages/cli/src/cli.ts
@yiliang114

Copy link
Copy Markdown
Collaborator Author

Status update from resolve-pr-comments:

Changed: resolved the latest-base conflict in packages/cli/src/cli.ts by keeping the shared top-level help options and the new utils/serve-fast-path-argv.js import path.

Verified: Prettier, git diff --check, and ESLint on the conflicted bootstrap/config files.

Pending: CI and automatic review on head e24ba6f.

@qwen-code-ci-bot qwen-code-ci-bot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Partially reviewed — gaps disclosed. Suggestions are inline.

Not reviewed: build-and-test — "Integration Tests (CLI, No Sandbox)" was skipped in CI and its suite did not run locally.

Not explored to full depth (tool budget reached): "Context: PR #8902 (QwenLM/qwen-code) derives the bootstrap…": none — all checks above completed within budget. (Items deliberately not reported: hidden-option fast-path completeness and positional+ --help slow-path conser…; "Context: PR #8902 (QwenLM/qwen-code) derives the bootstrap…": none — all planned checks completed; no checks left unfinished..

Not reviewed: reverse audit — did not converge within the reverse-audit round cap of 5.

中文说明

仅完成部分审查,审查缺口已披露。 建议见行内评论。

未审查:build-and-test — "Integration Tests (CLI, No Sandbox)" was skipped in CI and its suite did not run locally。

未探索到全部深度(达到工具调用预算):"Context: PR #8902 (QwenLM/qwen-code) derives the bootstrap…"none — all checks above completed within budget. (Items deliberately not reported: hidden-option fast-path completeness and positional+ --help slow-path conser…"Context: PR #8902 (QwenLM/qwen-code) derives the bootstrap…"none — all planned checks completed; no checks left unfinished.

未审查:反向审计——在 5 轮的反审轮数上限内未收敛。

— qwen3.8-max via Qwen Code /review (v0.21.11)

Comment thread packages/cli/src/cli.ts
Comment thread packages/cli/src/cli.ts
Comment thread packages/cli/src/cli.ts
- Consume values of value-taking options registered outside
  TOP_LEVEL_HELP_OPTIONS (the hidden --sandbox-session-id), so a later
  --help reaches the fast path instead of booting the full CLI graph.
- Handle =-form values: --flag=value carries its value inside the token
  (the next token must not be consumed), while array flags keep
  consuming following value tokens.
- Document the remaining direction-safe limitation: short-option
  clusters (-vh, -sm gpt-4) are matched as whole tokens and demote to
  the slow path; output stays correct there.

Adds regression tests for all three shapes.

@qwen-code-ci-bot qwen-code-ci-bot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Partially reviewed — gaps disclosed.

Not reviewed: build-and-test — "Integration Tests (CLI, No Sandbox)" was skipped in CI and its suite did not run locally.

Not explored to full depth (tool budget reached): "You are review agent reverse-audit — Reverse audit agent…": none — all checks I started were completed within budget..

中文说明

仅完成部分审查,审查缺口已披露。

未审查:build-and-test — "Integration Tests (CLI, No Sandbox)" was skipped in CI and its suite did not run locally。

未探索到全部深度(达到工具调用预算):"You are review agent reverse-audit — Reverse audit agent…"none — all checks I started were completed within budget.

— qwen3.8-max via Qwen Code /review (v0.21.11)

Comment thread packages/cli/src/cli.ts Outdated
Comment thread packages/cli/src/cli.ts
skipOptionValues' array branch greedily consumed every following
non-dash token, modeling yargs' final-parse semantics — but yargs
detects commands in an earlier pass where these default-command-builder
options are still unknown and an unknown option takes at most one
value; the --flag=value form consumes none. A command token sitting
after array values was therefore swallowed, firstPositionalArg returned
undefined, and the top-level help fast path misfired:
'qwen --extensions=a serve --help' printed the root help instead of
the 'qwen serve' page (also '--extensions a serve', '-e a serve',
'--include-directories x mcp', '--fallback-model m1 serve').

Consume at most one space-separated token for every value-taking flag,
matching the command-detection pass (probe-verified against yargs on
this repo); multi-value array invocations such as
'--extensions a b --help' demote to the slow path, which prints the
identical page via the full parser. Adds regression coverage for the
swallowed-command shapes (R5-1).
@qwen-code-dev-bot

Copy link
Copy Markdown
Collaborator

🤖 Addressed the latest review feedback (round 2/100). What changed, and what I pushed back on: · 已处理最新评审反馈(第 2/100 轮)。改动内容与我反驳保留之处如下:

Round summary

Addresses the maintainer verification report ([ic:5439725115]) and the sandboxed-verification build failure ([ic:5438847744]). One commit: 95508baebf (packages/cli/src/cli.ts, packages/cli/src/cli.test.ts, +40/−26 — net subtractive in the source file).

§4 — argvSafeForFastPath membership gate: implemented, as a net subtraction

Kept the membership check, pinned it with a test, and deleted the dominated structural rules. The report named three (--no- negations, =-forms, short clusters); the fourth rule (three-plus leading dashes, ---help) is dominated by the exact same argument — KNOWN_FAST_PATH_FLAGS is built solely from flagName(option)/flagName(alias) spellings (--name or single-letter -x), so no token starting with --- can ever be a member — so it was deleted as well. Evidence: the new test pins ['---help'] → 'default' alongside the other shapes and passes with only the membership check in place; if the --- rule should be kept as defense-in-depth anyway, it is a one-line restore.

The new test demotes unregistered flags via the KNOWN_FAST_PATH_FLAGS gate pins the gate itself: --unknown-flag --helpdefault, plus --unknown-flag, --help --no-help, --version=false --help, -dh --help, ---help.

Mutation probes (performed before committing):

  • Membership check removed → 2 tests FAIL (the new gate test and the existing out-of-grammar misfires test, since --help --no-help flips to help) → restored → green. Dropping the check no longer leaves the suite green.
  • wrap() line removed → the new wrap witness FAILs → restored → green.

§5 — fast-path parser never calls .wrap(): implemented

One line in buildTopLevelHelpParser: parser.wrap(parser.terminalWidth()), mirroring config.ts. Witness test: in a non-TTY (columns unset, always the case under vitest forks) terminalWidth() is null, which disables yargs wrapping entirely, so a description longer than the 80-column fallback must render on one unbroken line — the probe confirms the assertion fails without the fix (description breaks at 80 columns) and passes with it. On real terminals this yields the full terminal width, matching the full parser.

§3 — risk-statement correction: corrected text supplied; PR-body edit is not available in this mode

The address-review workflow exposes no PR-body edit channel and this runner holds no GitHub write access, so the body itself cannot be updated here. Drop-in replacement for the risk section's sentence:

Before: "No functional regression in those 22: every one of them prints help on both paths"

After: "No functional regression in those 22 except the --no-help family (--help/-h followed by --no-help/--no-h): head follows the full parser's last-wins semantics there instead of printing help — --no-help genuinely negates --help, so headless runs boot the agent and exit 1, and a real TTY opens the interactive TUI (base printed help). The argv is exotic and the behavior is full-parser parity (fail-closed demotion to the slow path), but it is a behavior change for those 3 shapes."

Verified against the code: resolveBootstrapRoute(['--help', '--no-help']) demotes to default (full boot) because --no-help is not a registered spelling.

§6 — TOP_LEVEL_COMMANDS still hand-maintained: verified, deferred to the follow-up queue

Verified against the real parser's registrations: channel/review/sessions register without a <command> suffix, hooks declares aliases: ['hook'] (absent from the fast-path list), and ordering differs. Recorded in deferred-findings.json per the maintainer's "fine to leave for a follow-up"; the suggested PR-body note is bundled with the §3 replacement above for whoever edits the body:

Known limitation: TOP_LEVEL_COMMANDS (the command list in qwen --help) is still hand-maintained and already drifts from the real parser (channel <command> vs channel, hooks missing the hook alias, different ordering). This PR fixes that drift class for options only; commands are tracked as a follow-up.

[ic:5438847744] — sandboxed verification "PR could not be built": stale merge state, no code change required

The TS1117 error (client.telemetrySwap.test.ts(103,5), duplicate getToolRegistry) existed only transiently on main: introduced by the #9729 merge (032b9078e6, 2026-08-27 04:58 UTC) and fixed by #10252 (6dfb5a1fea, 06:27 UTC). This branch never contained it — #9729 is not an ancestor of HEAD, and the file is byte-identical and clean at HEAD, at the merge-base (2bd0ff923e), and at the current origin/main tip (a3ec41a281). The branch's last push (1417741c12, 05:27 UTC) landed inside the broken window, so the PR merge state combined the branch with the temporarily broken main — the reported line 103 matches that broken file's layout exactly. npm run build passes at HEAD (run this round), and any fresh merge against current main is clean, so this round's push supersedes the stale state. No merge of origin/main was performed (--conflict false; unnecessary since both sides are clean).

Verification

  • npm run build — passed
  • npm run typecheck — passed
  • npm run lint — passed
  • vitest packages/cli/src/cli.test.ts (touched) — 74 passed
  • vitest packages/cli/src/config/top-level-options.test.ts + packages/cli/src/commands/mcp/add.test.ts (PR-adjacent) — 32 passed
  • vitest packages/cli/src/config/config.test.ts — 351 passed, 5 failed; the 5 failures reproduce identically with this round's changes reverted (checked out pre-round files and re-ran): sandbox-image/sandbox-session-id tests that depend on container sandbox detection on this runner. Pre-existing and environment-specific; the maintainer's macOS run reports this file fully green.
  • Mutation probe 1: parser.wrap(...) removed → wrap-witness test fails; restored → green
  • Mutation probe 2: membership check removed → gate test + misfires test fail; restored → green
中文说明

本轮摘要

处理维护者的验证报告([ic:5439725115])与沙箱验证的构建失败([ic:5438847744])。单个提交:95508baebfpackages/cli/src/cli.tspackages/cli/src/cli.test.ts,+40/−26 —— 源文件净减少)。

§4 —— argvSafeForFastPath 成员检查门:已实现,且为净减法

保留成员检查,用测试钉住它,并删除被它支配的结构性规则。报告点名了三条(--no- 否定、= 形式、短选项簇);第四条规则(三个及以上前导短横线,---help)被完全相同的论证支配——KNOWN_FAST_PATH_FLAGS 仅由 flagName(option)/flagName(alias) 拼写构成(--name 或单字母 -x),因此任何以 --- 开头的 token 都不可能成为成员——所以也一并删除。证据:新测试把 ['---help'] → 'default' 与其他形态一起钉住,且仅靠成员检查即可通过;如果仍想把 --- 规则留作纵深防御,一行即可恢复。

新测试 demotes unregistered flags via the KNOWN_FAST_PATH_FLAGS gate 钉住门本身:--unknown-flag --helpdefault,外加 --unknown-flag--help --no-help--version=false --help-dh --help---help

提交前执行的变异探针:

  • 删除成员检查 → 2 条测试失败(新门测试与既有的出格形态测试,因为 --help --no-help 会翻到 help)→ 恢复 → 全绿。删除该检查不再能保持套件全绿。
  • 删除 wrap() 行 → 新的 wrap 见证测试失败 → 恢复 → 全绿。

§5 —— fast-path parser 从未调用 .wrap():已实现

buildTopLevelHelpParser 中一行:parser.wrap(parser.terminalWidth()),与 config.ts 保持一致。见证测试:非 TTY(无 columns,vitest forks 下恒为此情形)时 terminalWidth() 为 null,yargs 完全禁用换行,因此长于 80 列回退宽度的描述必须整行不断开——探针确认去掉修复时该断言失败(描述在 80 列处断行),加上后通过。真实终端上将使用完整终端宽度,与完整 parser 一致。

§3 —— 风险描述修正:已提供修正文本;本模式下无法编辑 PR 正文

address-review 工作流没有提供编辑 PR 正文的通道,且本运行器没有 GitHub 写权限,因此无法在此直接更新正文。风险章节该句的替换文本:

原文: "No functional regression in those 22: every one of them prints help on both paths"

改为: "No functional regression in those 22 except the --no-help family (--help/-h followed by --no-help/--no-h): head follows the full parser's last-wins semantics there instead of printing help — --no-help genuinely negates --help, so headless runs boot the agent and exit 1, and a real TTY opens the interactive TUI (base printed help). The argv is exotic and the behavior is full-parser parity (fail-closed demotion to the slow path), but it is a behavior change for those 3 shapes."

已对照代码验证:resolveBootstrapRoute(['--help', '--no-help']) 降级为 default(完整启动),因为 --no-help 不是已注册拼写。

§6 —— TOP_LEVEL_COMMANDS 仍为手工维护:已核实,转入后续跟进队列

已对照真实 parser 的命令注册核实:channel/review/sessions 注册时不带 <command> 后缀,hooks 声明了 aliases: ['hook'](fast-path 列表中缺失),且排序不同。按维护者「放到后续 PR 处理没问题」的意见记入 deferred-findings.json;建议写入 PR 正文的说明与 §3 的替换文本一并给出,供编辑正文者使用:

Known limitation: TOP_LEVEL_COMMANDSqwen --help 中的命令列表)仍是手工维护,且已与真实 parser 脱节(channel <command>channelhooks 缺少 hook 别名、排序不同)。本 PR 只修复选项层面的同类漂移;命令层面作为后续项跟进。

[ic:5438847744] —— 沙箱验证「PR 无法构建」:过期的合并状态,无需代码修改

TS1117 错误(client.telemetrySwap.test.ts(103,5),重复的 getToolRegistry)只曾短暂存在于 main 上:由 #9729 的合并引入(032b9078e6,2026-08-27 04:58 UTC),由 #10252 修复(6dfb5a1fea,06:27 UTC)。本分支从未包含该问题——#9729 不是 HEAD 的祖先,且该文件在 HEAD、merge-base(2bd0ff923e)与当前 origin/main 顶端(a3ec41a281)三处逐字节相同且干净。分支最近一次推送(1417741c12,05:27 UTC)恰好落在破损窗口内,因此 PR 的合并状态把分支与当时破损的 main 合在了一起——报告的 103 行与该破损文件的布局完全吻合。本轮已运行 npm run build,HEAD 构建通过;与当前 main 的任何新合并都是干净的,因此本轮推送将取代过期状态。未合并 origin/main--conflict false;两侧均已干净,无必要)。

验证

  • npm run build —— 通过
  • npm run typecheck —— 通过
  • npm run lint —— 通过
  • vitest packages/cli/src/cli.test.ts(本轮改动)—— 74 通过
  • vitest packages/cli/src/config/top-level-options.test.ts + packages/cli/src/commands/mcp/add.test.ts(PR 相关)—— 32 通过
  • vitest packages/cli/src/config/config.test.ts —— 351 通过、5 失败;这 5 条失败在回退本轮改动后完全相同地复现(检出改动前文件重跑):依赖本运行器容器内沙箱检测的 sandbox 镜像/会话测试。属既有环境性问题;维护者在 macOS 上的运行显示该文件全绿。
  • 变异探针 1:删除 parser.wrap(...) → wrap 见证测试失败;恢复 → 全绿
  • 变异探针 2:删除成员检查 → 门测试与出格形态测试失败;恢复 → 全绿

Base-conflict check · 基分支冲突检查: no conflict with main. · 与 main 无冲突。

Re-review when you have a moment. After round 100 this bot stops and leaves the PR for a human. · 有空请复审;第 100 轮后本 bot 停止并将 PR 交给人工。


🧠 Handled by Qwen Code · model/模型 qwen3.8-max

@qwen-code-ci-bot qwen-code-ci-bot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Partially reviewed — gaps disclosed.

3 Suggestion-level finding(s) this review confirmed are already reported on this PR and are not repeated:

  • R7-1 .locale('en') pin on the fast-path help parser has no paired test (packages/cli/src/cli.ts:249) — already reported (comment 3787815805, round-7 R7-1)
  • full-parser <-> TOP_LEVEL_HELP_OPTIONS help-parity test (packages/cli/src/cli.test.ts:771) — already reported (R2-1, comment 3757539808); author declined
  • BASE-value-flag + -- sentinel corner unpinned and hasVersionToken comment overclaims (packages/cli/src/cli.ts:210-238) — already recorded in the round-22 (cli.ts:297), round-24 (cli.ts:232) and round-26 (cli.ts:237) deferred lists

Not reviewed: build-and-test — "Integration Tests (CLI, No Sandbox)" was skipped in CI and its suite did not run locally.

Not explored to full depth (tool budget reached): chunk 2: executing cli.test.ts under vitest to confirm the traced expectations pass at HEAD — the review worktree has no node_modules and no built packages/core di….

Not reviewed: reverse audit — did not converge within the reverse-audit round cap of 5.

中文说明

仅完成部分审查,审查缺口已披露。

本轮确认的 3 条建议级发现已在 PR 上报告过,不再重复发布(列表见上方英文部分)。

未审查:build-and-test — "Integration Tests (CLI, No Sandbox)" was skipped in CI and its suite did not run locally。

未探索到全部深度(达到工具调用预算):chunk 2:executing cli.test.ts under vitest to confirm the traced expectations pass at HEAD — the review worktree has no node_modules and no built packages/core di…

未审查:反向审计——在 5 轮的反审轮数上限内未收敛。

— qwen3.8-max via Qwen Code /review (v0.22.2)

@qwen-code-dev-bot

Copy link
Copy Markdown
Collaborator

🤖 Addressed the latest review feedback (round 3/100). What changed, and what I pushed back on: · 已处理最新评审反馈(第 3/100 轮)。改动内容与我反驳保留之处如下:

Round summary

Addresses the round-28 review [rv:5043407602]. That review posted zero new findings and confirmed three Suggestion-level findings as already reported on the PR. One of them was still open with neither a fix nor a recorded disposition; the other two were already handled in earlier rounds:

  • R7-1 ([rc:3787815805], packages/cli/src/cli.ts): the .locale('en') pin on the fast-path help parser had no paired test — removing the pin kept the whole suite green, because every test runs under an English locale. Implemented: added the witness test prints fast-path help in English under a German locale in packages/cli/src/cli.test.ts. It sets LC_ALL=de_DE.UTF-8, runs the help fast path via runCliEntry(['--help']), and asserts the output carries the English Commands: header and no German Kommandos: boilerplate. Test-only change (+18 lines), following the describe block's existing savedEnv save/restore convention; the positive assertion also keeps the negative check non-vacuous (an empty output cannot pass it).
  • R2-1 (full-parser ↔ TOP_LEVEL_HELP_OPTIONS help-parity test): already declined by the author in round 2 (comment 3772826040: not expanding this PR with another parity harness). No new work this round; the thread keeps its recorded decline.
  • BASE-value-flag + -- sentinel corner / hasVersionToken comment wording: already recorded in the round-22, round-24 and round-26 deferred lists. No new work this round.

No failed checks and no new inline or issue-level feedback arrived this round; conflict resolution was not requested (--conflict false) and none was performed.

Reproduction and mutation probe

Reproduced the underlying behavior first with a direct yargs probe under LC_ALL=de_DE.UTF-8: without .locale('en') the same parser shape renders yargs' bundled German boilerplate (Kommandos: / Optionen:); with the pin it renders English. Then probed the committed witness:

  • .locale('en') removed from buildTopLevelHelpParser → the new test FAILS (output contains Kommandos:)
  • pin restored → green

The suite therefore no longer stays green with the pin deleted, which is exactly the regression R7-1 named.

Verification

  • npm run build — passed
  • npm run typecheck — passed
  • npm run lint — passed
  • npx prettier --check packages/cli/src/cli.test.ts — passed
  • npx vitest run src/cli.test.ts (packages/cli, touched) — 75 passed (75)
  • Mutation probe on the new guard: remove .locale('en') → 1 test failed as expected; restore → green
  • Integration tests: not run — test-only change; the locale pin is exercised by the unit harness, not only through the bundled CLI or integration harness
  • Settings schema: not regenerated — no settings source changed
中文说明

轮次总结

处理第 28 轮审查 [rv:5043407602]。该轮审查未发布任何新发现,仅确认了 3 条已在 PR 上报告过的建议级(Suggestion)发现。其中一条既无修复也无书面处置记录,仍处于未处理状态;另外两条已在早前的轮次中处理完毕:

  • R7-1([rc:3787815805],packages/cli/src/cli.ts):快速路径 help 解析器上的 .locale('en') 固定没有配套测试——删掉该固定后整个测试套件仍然全绿,因为所有测试都在英文 locale 下运行。已实现:在 packages/cli/src/cli.test.ts 中新增见证测试 prints fast-path help in English under a German locale。该测试设置 LC_ALL=de_DE.UTF-8,通过 runCliEntry(['--help']) 走 help 快速路径,断言输出包含英文的 Commands: 标题,且不包含德文的 Kommandos: 样板文案。仅改动测试文件(+18 行),遵循该 describe 块现有的 savedEnv 保存/恢复约定;正向断言同时保证负向检查不会空转通过(空输出无法通过该测试)。
  • R2-1(full-parser ↔ TOP_LEVEL_HELP_OPTIONS help 一致性测试):作者已在第 2 轮拒绝(见 评论 3772826040:不在本 PR 中扩展另一个一致性测试框架)。本轮无新增工作;该线程保留已有的拒绝记录。
  • BASE-value-flag + -- 哨兵边界 / hasVersionToken 注释措辞:已记录在第 22、24、26 轮的延迟处理清单中。本轮无新增工作。

本轮没有失败的检查,也没有新的行内或 issue 级反馈;未要求进行冲突解决(--conflict false),也未执行任何冲突解决。

复现与变异探测

首先用直接的 yargs 探测在 LC_ALL=de_DE.UTF-8 下复现了底层行为:不加 .locale('en') 时,相同形态的解析器会渲染 yargs 内置的德文样板文案(Kommandos: / Optionen:);加上该固定后则渲染英文。随后对已提交的见证测试做了变异探测:

  • buildTopLevelHelpParser 中移除 .locale('en') → 新测试失败(输出中出现 Kommandos:
  • 恢复该固定 → 通过

因此,删除该固定后测试套件不再全绿——这正是 R7-1 所指出的回归。

验证

  • npm run build — 通过
  • npm run typecheck — 通过
  • npm run lint — 通过
  • npx prettier --check packages/cli/src/cli.test.ts — 通过
  • npx vitest run src/cli.test.ts(packages/cli,本次改动所在包)— 75 个测试全部通过(75)
  • 对新守卫的变异探测:移除 .locale('en') → 1 个测试按预期失败;恢复 → 通过
  • 集成测试:未运行——本次仅改动测试文件;locale 固定由单元测试框架覆盖,并非只能通过打包后的 CLI 或集成测试框架验证
  • Settings schema:未重新生成——未改动任何 settings 源

Base-conflict check · 基分支冲突检查: no conflict with main. · 与 main 无冲突。

Re-review when you have a moment. After round 100 this bot stops and leaves the PR for a human. · 有空请复审;第 100 轮后本 bot 停止并将 PR 交给人工。


🧠 Handled by Qwen Code · model/模型 qwen3.8-max

@qwen-code-ci-bot qwen-code-ci-bot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Partially reviewed — gaps disclosed.

2 Suggestion-level finding(s) this review confirmed are already reported on this PR and are not repeated:

  • import-boundary guard misses runtime re-exports — already recorded in the round-26 deferred list (review 5020611515) and the round-27 deferred list (review 5038810142)
  • BASE_VALUE_FLAGS base-set control pins 6 of 11 spellings — already recorded in the round-26 deferred list (review 5020611515) and re-confirmed as already reported in round 28 (review 5043407602)

Not reviewed: build-and-test — "Integration Tests (CLI, No Sandbox)" was skipped in CI and its suite did not run locally.

Not explored to full depth (tool budget reached): "agent 1a": executing packages/cli/src/cli.test.ts — the shared worktree had no usable node_modules, and three npm install attempts plus one npm run build each failed….

Deferred under the convergence posture (round 29, not a blocker) — recorded, not requested in this round:

  • packages/cli/src/cli.test.ts:166 — [probe] argvSafeForFastPath -- sentinel branch has no observable route pin (return-false mutant survives; qwen --help -- <data> demotes off the help fast path)
中文说明

仅完成部分审查,审查缺口已披露。

本轮确认的 2 条建议级发现已在 PR 上报告过,不再重复发布(列表见上方英文部分)。

未审查:build-and-test — "Integration Tests (CLI, No Sandbox)" was skipped in CI and its suite did not run locally。

未探索到全部深度(达到工具调用预算):"agent 1a"executing packages/cli/src/cli.test.ts — the shared worktree had no usable node_modules, and three npm install attempts plus one npm run build each failed…

收敛姿态下延后(第 29 轮,非阻断)——已记录,本轮不要求修改:共 1 条(原文未翻译,列表见上方英文部分)。

— qwen3.8-max via Qwen Code /review (v0.22.2)

@qwen-code-dev-bot

Copy link
Copy Markdown
Collaborator

🔀 Base updated: red check(s) [Test (ubuntu-latest, Node 22.x), Post Coverage Comment (ubuntu-latest, 22.x)] pass on current main — merged current main via update-branch; CI will re-run.

中文说明

🔀 已更新 base:红色检查 [Test (ubuntu-latest, Node 22.x), Post Coverage Comment (ubuntu-latest, 22.x)] 在当前 main 上通过 —— 已通过 update-branch 合入当前 main,CI 将重新运行。

@qwen-code-ci-bot qwen-code-ci-bot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Partially reviewed — gaps disclosed.

3 Suggestion-level finding(s) this review confirmed are already reported on this PR and are not repeated:

  • import-boundary guard escape surfaces (export-from re-exports and bare/compact import lines invisible to the ^import regex, cli.test.ts:1125) — already reported (round-26 deferred list: cli.test.ts:1076 'Import-boundary test only polices co…
  • BASE_VALUE_FLAGS base-set control pins only 7 of the 11 spellings (cli.test.ts:313) — already reported (round-26 deferred list, cli.test.ts:313; re-confirmed as already reported in round 28, review 5043407602)
  • Commands-section order/suffix/alias divergence between the fast-path help and the full parser (cli.ts:272) — already discussed: maintainer verification report §6 (comment 5439725115) verified it and deferred it to a follow-up

Not reviewed: build-and-test — "Integration Tests (CLI, No Sandbox)" was skipped in CI and its suite did not run locally.

Not reviewed: reverse audit — did not converge within the reverse-audit round cap of 5.

Deferred under the convergence posture (round 30, not a blocker) — recorded, not requested in this round:

  • packages/cli/src/config/top-level-options.ts:433 — [probe] TOP_LEVEL_HELP_OPTIONS union lacks a cross-map uniqueness guard (probe-verified last-wins clobber if a key ever appears in both source maps)

[Critical] R30-1: The PR body's Risk & Scope claim 'No functional regression in those 22: every one of them prints help on both paths' remains false for the --no-help family and is still uncorrected. qwen --help --no-help (also --help --no-h, -h -h=false) is one of the 22 routed shapes the body enumerates — one of the three it says 'move the other way' — but at this head it does not print help at all: resolveBootstrapRoute(['--help','--no-help']) returns 'default' (probe-verified at the reviewed commit 88679b2) because '--no-help' fails the KNOWN_FAST_PATH_FLAGS gate, so the full parser boots with help negated last-wins — headless exits 1, on a real TTY the interactive TUI opens — where base printed top-level help and exited 0. Maintainer @wenshao's verification report §3 (comment 5439725115) asked for exactly this sentence to be corrected before merge; §4 (membership-gate test + rule deletion) has since been implemented, but the body edit was never applied — the autofix round supplied verified drop-in replacement text (comment 5440448695) and noted it could not edit the body itself. Witness: probe at reviewed commit: resolveBootstrapRoute(['--help','--no-help']) => "default", ['--help'] => "help", ['--version'] => "version"; maintainer A/B at head 1417741 (real bundled binaries): base 'help + exit 0' → head 'agent boot + exit 1' headless, TUI on a real TTY. Fix: apply the verified replacement sentence from comment 5440448695 disclosing the --no-help family exception (full-parser parity: headless boots the agent and exits 1, a real TTY opens the TUI; base printed help).

中文说明

仅完成部分审查,审查缺口已披露。

本轮确认的 3 条建议级发现已在 PR 上报告过,不再重复发布(列表见上方英文部分)。

未审查:build-and-test — "Integration Tests (CLI, No Sandbox)" was skipped in CI and its suite did not run locally。

未审查:反向审计——在 5 轮的反审轮数上限内未收敛。

收敛姿态下延后(第 30 轮,非阻断)——已记录,本轮不要求修改:共 1 条(原文未翻译,列表见上方英文部分)。

[Critical] R30-1: The PR body's Risk & Scope claim 'No functional regression in those 22: every one of them prints help on both paths' remains false for the --no-help family and is still uncorrected. qwen --help --no-help (also --help --no-h, -h -h=false) is one of the 22 routed shapes the body enumerates — one of the three it says 'move the other way' — but at this head it does not print help at all: resolveBootstrapRoute(['--help','--no-help']) returns 'default' (probe-verified at the reviewed commit 88679b2) because '--no-help' fails the KNOWN_FAST_PATH_FLAGS gate, so the full parser boots with help negated last-wins — headless exits 1, on a real TTY the interactive TUI opens — where base printed top-level help and exited 0. Maintainer @wenshao's verification report §3 (comment 5439725115) asked for exactly this sentence to be corrected before merge; §4 (membership-gate test + rule deletion) has since been implemented, but the body edit was never applied — the autofix round supplied verified drop-in replacement text (comment 5440448695) and noted it could not edit the body itself. Witness: probe at reviewed commit: resolveBootstrapRoute(['--help','--no-help']) => "default", ['--help'] => "help", ['--version'] => "version"; maintainer A/B at head 1417741 (real bundled binaries): base 'help + exit 0' → head 'agent boot + exit 1' headless, TUI on a real TTY. Fix: apply the verified replacement sentence from comment 5440448695 disclosing the --no-help family exception (full-parser parity: headless boots the agent and exits 1, a real TTY opens the TUI; base printed help).

— qwen3.8-max via Qwen Code /review (v0.22.2)

@yiliang114

Copy link
Copy Markdown
Collaborator Author

@qwen-code /triage

@qwen-code-ci-bot

qwen-code-ci-bot commented Aug 27, 2026

Copy link
Copy Markdown
Collaborator

Sandboxed verification: ⚠️ incomplete — infrastructure failure - workflow run

The verification job did not complete (checkout, runner, or setup error) and produced no report. See the workflow run for details.

中文 — 判定:⚠️ 未完成 · 基础设施故障

验证作业未完成(检出、runner 或初始化错误),未生成报告。详见工作流运行日志。

Qwen Code · sandboxed verification

@qwen-code-ci-bot qwen-code-ci-bot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGTM, looks ready to ship. ✅

@qwen-code-ci-bot qwen-code-ci-bot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Partially reviewed — gaps disclosed.

4 Suggestion-level finding(s) this review confirmed are already reported on this PR and are not repeated:

  • import-boundary guard export-from/dynamic-import escape surface (cli.test.ts:1119-1128) — already reported (round-26 deferred list cli.test.ts:1076, round-27 deferred list cli.test.ts:1084, round-30 already-reported list cli.test.ts:1125)
  • VALUE_FLAGS number-type branch untested (cli.ts:86) — already reported as R11-3 (round-11 deferred list, review 4957427644; re-reported rounds 12/16)
  • self-referential help-completeness parity loop (cli.test.ts:777) — already reported as R2-1 (comment 3757539808, round 2; re-reported rounds 14/17/21/22/27/28/30; author declined)
  • mcp add mock partial mirror — omits production's argv['--']→args merge middleware and declared options (cli.test.ts:103-108) — already reported (round-20 deferred list cli.test.ts:111, round-27 deferred list cli.test.ts:98)

Not reviewed: build-and-test — "Integration Tests (CLI, No Sandbox)" was skipped in CI and its suite did not run locally.

Not explored to full depth (tool budget reached): chunk 2: executing packages/cli cli.test.ts (no node_modules in review worktree; install exceeds budget).

Deferred under the convergence posture (round 31, not a blocker) — recorded, not requested in this round:

  • packages/cli/src/cli.test.ts:217 — [probe] =-form pins' comments claim a guarantee the tests cannot observe (eq-branch mutant survives all 18 route tests)

Residual risk: this loop is persistently critical — Criticals stood in the previous round's work-list and stand again this round (2 Critical(s)), the rate of first-time findings is not falling (this round 1, previous 0), and the standing Critical backlog is not shrinking. The severity floor will not converge it. Recommendation: land-with-residual-risk — the exit is a maintainer risk-acceptance decision (merge, carrying the residual risk), not another review round. Residual-risk inventory for that decision (maintainer to complete):

standing Critical attack surface attacker-dependency blast radius
(each standing Critical)

Advisory only — it does not block this review.

[Critical] R31-1: The round-30 body correction (R30-1) was applied to the English Risk & Scope section only. The Chinese 风险与范围 mirror still asserts "这 22 个没有功能性回归:两条路径都会打印 help" — the exact claim the maintainer's pre-merge ask (§3 of the verification report, comment 5439725115) required corrected before merge. The English section now reads "No functional regression in those 22 except the --no-help family … headless runs boot the agent and exit 1, and a real TTY opens the interactive TUI (base printed help)", so the two language sections of the same body directly contradict each other. A Chinese-reading reviewer relying on 风险与范围 is still told all 22 routing changes print help on both paths — false for --help --no-help / --help --no-h / -h -h=false, which route to 'default' at this head (pinned at cli.test.ts:647) and boot the agent instead of printing help. Witness: live PR body at head 88679b21 (EN discloses the exception; ZH does not) plus vitest src/cli.test.ts -t "KNOWN_FAST_PATH_FLAGS" → 1 passed, pinning resolveBootstrapRoute(['--help','--no-help']) === 'default'. Fix: translate the corrected disclosure into the Chinese 风险与范围 bullet — replace "这 22 个没有功能性回归:两条路径都会打印 help…" with the --no-help family exception (headless runs boot the agent and exit 1, a real TTY opens the TUI; base printed help). Fix witness: N/A — PR body edit; no test can pin it.

中文说明 [Critical] R31-1: 第 30 轮要求的正文更正(R30-1)只应用到了英文 Risk & Scope 部分。中文「风险与范围」镜像段落仍然写着"这 22 个没有功能性回归:两条路径都会打印 help"——正是维护者验证报告 §3(评论 5439725115)在合并前要求更正的那句话。英文部分现已写明"这 22 个 shape 中除 --no-help 家族外没有功能性回归……headless 运行会启动 agent 并以 exit 1 退出,真实 TTY 会打开交互式 TUI(base 打印帮助)",同一正文的两个语言段落因此直接互相矛盾。依赖中文段落的评审者仍会被告知全部 22 个路由变更在两条路径下都会打印帮助——而 --help --no-help / --help --no-h / -h -h=false 在当前 head 下路由为 'default'(cli.test.ts:647 已固定),会启动 agent 而不是打印帮助。证据:head 88679b21 的线上 PR 正文(英文已披露例外、中文未披露);vitest src/cli.test.ts -t "KNOWN_FAST_PATH_FLAGS" 通过,固定了 resolveBootstrapRoute(['--help','--no-help']) === 'default'。修复:把更正后的披露翻译进中文「风险与范围」条目——用 --no-help 家族例外替换"这 22 个没有功能性回归:两条路径都会打印 help…"(headless 运行启动 agent 并 exit 1,真实 TTY 打开 TUI;base 打印帮助)。修复见证:N/A——PR 正文编辑,无测试可固定。

中文说明

仅完成部分审查,审查缺口已披露。

本轮确认的 4 条建议级发现已在 PR 上报告过,不再重复发布(列表见上方英文部分)。

未审查:build-and-test — "Integration Tests (CLI, No Sandbox)" was skipped in CI and its suite did not run locally。

未探索到全部深度(达到工具调用预算):chunk 2:executing packages/cli cli.test.ts (no node_modules in review worktree; install exceeds budget)

收敛姿态下延后(第 31 轮,非阻断)——已记录,本轮不要求修改:共 1 条(原文未翻译,列表见上方英文部分)。

残余风险:本循环处于 persistently-critical 形态——上一轮工作清单中的 Critical 本轮依然存在(本轮 2 条 Critical),首次发现的速率没有下降(本轮 1,上一轮 0),且未决 Critical 积压没有减少。severity floor 无法使其收敛。建议:land-with-residual-risk——出口是 maintainer 的风险接受决定(合入并承担残余风险),而非再开一轮评审。供该决定使用的残余风险清单(maintainer 填写):按每条未决 Critical 列出「攻击面 · 攻击者依赖性 · 影响范围」三栏。仅为建议——不阻断本次评审。

[Critical] R31-1: The round-30 body correction (R30-1) was applied to the English Risk & Scope section only. The Chinese 风险与范围 mirror still asserts "这 22 个没有功能性回归:两条路径都会打印 help" — the exact claim the maintainer's pre-merge ask (§3 of the verification report, comment 5439725115) required corrected before merge. The English section now reads "No functional regression in those 22 except the --no-help family … headless runs boot the agent and exit 1, and a real TTY opens the interactive TUI (base printed help)", so the two language sections of the same body directly contradict each other. A Chinese-reading reviewer relying on 风险与范围 is still told all 22 routing changes print help on both paths — false for --help --no-help / --help --no-h / -h -h=false, which route to 'default' at this head (pinned at cli.test.ts:647) and boot the agent instead of printing help. Witness: live PR body at head 88679b21 (EN discloses the exception; ZH does not) plus vitest src/cli.test.ts -t "KNOWN_FAST_PATH_FLAGS" → 1 passed, pinning resolveBootstrapRoute(['--help','--no-help']) === 'default'. Fix: translate the corrected disclosure into the Chinese 风险与范围 bullet — replace "这 22 个没有功能性回归:两条路径都会打印 help…" with the --no-help family exception (headless runs boot the agent and exit 1, a real TTY opens the TUI; base printed help). Fix witness: N/A — PR body edit; no test can pin it.

中文说明 [Critical] R31-1: 第 30 轮要求的正文更正(R30-1)只应用到了英文 Risk & Scope 部分。中文「风险与范围」镜像段落仍然写着"这 22 个没有功能性回归:两条路径都会打印 help"——正是维护者验证报告 §3(评论 5439725115)在合并前要求更正的那句话。英文部分现已写明"这 22 个 shape 中除 --no-help 家族外没有功能性回归……headless 运行会启动 agent 并以 exit 1 退出,真实 TTY 会打开交互式 TUI(base 打印帮助)",同一正文的两个语言段落因此直接互相矛盾。依赖中文段落的评审者仍会被告知全部 22 个路由变更在两条路径下都会打印帮助——而 --help --no-help / --help --no-h / -h -h=false 在当前 head 下路由为 'default'(cli.test.ts:647 已固定),会启动 agent 而不是打印帮助。证据:head 88679b21 的线上 PR 正文(英文已披露例外、中文未披露);vitest src/cli.test.ts -t "KNOWN_FAST_PATH_FLAGS" 通过,固定了 resolveBootstrapRoute(['--help','--no-help']) === 'default'。修复:把更正后的披露翻译进中文「风险与范围」条目——用 --no-help 家族例外替换"这 22 个没有功能性回归:两条路径都会打印 help…"(headless 运行启动 agent 并 exit 1,真实 TTY 打开 TUI;base 打印帮助)。修复见证:N/A——PR 正文编辑,无测试可固定。

— qwen3.8-max via Qwen Code /review (v0.22.2)

Comment thread packages/cli/src/cli.ts
…tinel (#8902)

The pre-PR hasFlag/firstPositionalArg scans skipped the value slot of the base's hardcoded value flags unconditionally, even when it held the -- sentinel, so 'qwen --model -- --help' routed to help and exited 0. The derived skipOptionValues refuses '--' as a value token, which flipped every long BASE value-flag spelling followed by '--' and --help/-h onto the default route, booting the agent on the literal prompt '--help'. Restore the unconditional BASE_VALUE_FLAGS skip in hasFlag and firstPositionalArg, mirroring hasVersionToken, and pin the route family.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

@qwen-code-ci-bot qwen-code-ci-bot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Partially reviewed — gaps disclosed.

4 Suggestion-level finding(s) this review confirmed are already reported on this PR and are not repeated:

  • R32-1 option-set alignment loop is self-referential (cli.test.ts:794) — already reported as R2-1 (comment 3757539808; re-reported rounds 14/17/21/22/27/28/30; author declined)
  • R32-5 mcp add mock partial mirror — omits production argv['--']→args merge middleware and declared options (cli.test.ts:98) — already reported (round-20 deferred list cli.test.ts:111, round-27 deferred list cli.test.ts:98)
  • R32-6 import-boundary guard re-export escape surface (cli.test.ts:1141) — already reported (round-26/27/30 deferred lists, cli.test.ts:1119-1128)
  • R32-10 BASE_VALUE_FLAGS base-set pin coverage — 4 spellings unpinned (cli.test.ts:268) — already reported (prior-round deferred item, named in triage comment 5248422469)

Not reviewed: build-and-test — "Integration Tests (CLI, No Sandbox)" was skipped in CI and its suite did not run locally.

Not explored to full depth (tool budget reached): chunk 7: execute packages/cli vitest run of src/config/top-level-options.test.ts (blocked by unbuilt workspace dist/ in the review worktree); chunk 2: did not execute packages/cli 's vitest suite for cli.test.ts — the review worktree has no node_modules and no built workspace dist/ , and a full npm ci ….

Deferred under the convergence posture (round 32, not a blocker) — recorded, not requested in this round:

  • packages/cli/src/cli.ts:40 — [probe] TOP_LEVEL_COMMANDS drifts from the real command registry (suffixes, order, [aliases: hook]); maintainer report §6 scoped the code fix to a follow-up — the PR body note naming it is still absent
  • packages/cli/src/config/config.ts:844 — [probe] TOP_LEVEL_DEPRECATED_OPTIONS keys have no registration witness; deprecateOption silently no-ops for unregistered keys (mutation-verified)
  • packages/cli/src/cli.test.ts:807 — [probe] generic toContain('deprecated') leaves up to 8 of 9 deprecation annotations unpinned, including prompt (mutation-verified)
  • packages/cli/src/cli.ts:172 — [probe] npm bin wrapper in-process/spawn decision lags the new demotion grammar — demoted help argv can boot the agent without --expose-gc (wrapper A/B verified)
  • packages/cli/src/cli.test.ts:187 — [probe] no pin for the version-scan twin of the BASE-slot sentinel swallow (['--model','--','-v'] → 'version'); mutant flip caught by no existing test
中文说明

仅完成部分审查,审查缺口已披露。

本轮确认的 4 条建议级发现已在 PR 上报告过,不再重复发布(列表见上方英文部分)。

未审查:build-and-test — "Integration Tests (CLI, No Sandbox)" was skipped in CI and its suite did not run locally。

未探索到全部深度(达到工具调用预算):chunk 7:execute packages/cli vitest run of src/config/top-level-options.test.ts (blocked by unbuilt workspace dist/ in the review worktree);chunk 2:did not execute packages/cli 's vitest suite for cli.test.ts — the review worktree has no node_modules and no built workspace dist/ , and a full npm ci …

收敛姿态下延后(第 32 轮,非阻断)——已记录,本轮不要求修改:共 5 条(原文未翻译,列表见上方英文部分)。

— qwen3.8-max via Qwen Code /review (v0.22.2)

Comment thread packages/cli/src/cli.test.ts
@yiliang114

Copy link
Copy Markdown
Collaborator Author

@qwen-code /triage

@qwen-code-ci-bot

qwen-code-ci-bot commented Aug 28, 2026

Copy link
Copy Markdown
Collaborator

Sandboxed verification: ✅ passed — merge-ready (agent verdict) - workflow run

Ran the PR in an isolated, token-free container: A/B against the base build, mock-free harness assertions, targeted gates. Advisory evidence for human reviewers — not a review, an approval, or a CI check.

Scripted assertions: 600 passed · 0 failed · 600 total

Flakiness gate: ✅ 3 changed test file(s) x 5 identical rounds, no divergence

中文 — 判定:✅ 通过 · 可合入(agent 判定)

沙箱验证在隔离、无凭证的容器中执行了该 PR 的代码(与 base 构建 A/B 对照、无 mock harness 断言、定向门禁)。仅作为评审证据,不构成评审、批准或 CI 检查

脚本断言:600 通过 · 0 失败 · 600 总计

抖动门:✅ 3 changed test file(s) x 5 identical rounds, no divergence

Verification report

Verdict: merge-ready — 600 scripted assertions executed, 600 pass / 0 fail. Verified head: 4ed60c3c11d62e9e835dd784712a69979c5c402d (HEAD^2), base tip 4a9fe44f5a8f32dc312fcf8cc3c776c6cebc61c2 (HEAD^1).

中文摘要
  • 判定merge-ready。600 条脚本化断言全部通过(0 失败),其中包括针对中心改动的 A/B 负载证明。
  • 上轮结论复核:上一轮的唯一结论是「构建失败」(packages/core/src/core/client.telemetrySwap.test.ts TS1117 重复属性,npm ci 两次失败)。本轮在新 head 上重测:合并头的 npm ci + npm run build 已成功(dist 产物时间戳 11:02–11:03),该文件当前无重复属性,且本 PR 的 diff 完全不触碰 packages/coregit diff HEAD^1..HEAD --stat -- packages/core 为空)——修复来自主干合入,状态 fixed(经由 main,而非本 PR)
  • A/B 结论(中心声明:qwen --help 从共享选项定义派生):
    • base 快速路径只列 9 个手写选项,缺 --approval-mode / --auth-type(issue --approval-mode and --auth-type are accepted but missing from qwen --help #8897 复现);head 列出 59 个选项行,两个标志及全部 5 个 auth 选项、5 种 approval 模式均在。
    • head 快速路径选项集合 == head 完整 parser 选项集合(59 = 59,双向零差集);且 ⊇ base 完整 parser 集合(59,零差集)——issue 闭环成立,无丢失、无意外新增。
    • 24 shape × 双臂路由语料 104/104 通过:版本拦截与 base 完全对齐且无副作用(mcp add/remove … -v 双臂均不写 settings);--help --no-help 家族按披露降为完整 parser(exit 1,fail-closed);-- 转义、= 形式、value-slot 跳过均双臂对齐。
    • locale 修复生效:LC_ALL=de_DE.UTF-8 下 base 渲染德语样板(Kommandos:/Optionen:),head 保持英文。
    • 新测试非空洞:从共享定义中删除 auth-type 后,中心测试按预期在目标断言处失败(缺 choices 行)。
    • 定向门槛:4 个受影响测试套件 464/464 通过(cli 76、config 356、top-level-options 3、mcp/add 29)。
  • Findings:无新阻断项;无需修改。
  • 未覆盖:逐 commit 归因(shallow depth 2,仅 3 个 commit 可达,元数据为 36 个);lint 门槛;全仓测试套件;Windows/macOS 平台;「22 个 shape 内部路由名变化」的内部计数(只断言了可观察行为);fast-path 导入闭包大小(以启动耗时做了间接佐证:51ms vs 58ms)。

Previous-finding status (follow-up round)

# Finding (previous round) Severity Status at new head
1 Build failure: client.telemetrySwap.test.ts(103,5) TS1117 duplicate property → npm ci failed twice, nothing verified Blocking Fixed (via main, not by this PR). Re-measured, not diffed: the workflow's npm ci + npm run build completed at the merge head this run (dist outputs timestamped 11:02–11:03 UTC); the object literal at line ~103 now has a single getToolRegistry key with an explanatory comment; the PR's effective diff touches zero files under packages/core (verified by git diff HEAD^1..HEAD --stat), so the resolution came in through the base branch since the previous run.

Scope

  • Central claim: qwen --help (bootstrap fast path) documents every non-hidden option the real parser accepts — derived from the new shared top-level-options.ts — fixing --approval-mode and --auth-type are accepted but missing from qwen --help #8897's stale 9-option hand-maintained list (--approval-mode / --auth-type invisible).
  • Secondary claim 1: routing behavior of the widened fast path is base-parity where it must be (version intercept, value-slot skips, -- escape) and direction-safe elsewhere (unknown grammar demotes to the full parser).
  • Secondary claim 2: the new/changed tests are load-bearing (not vacuous) and the affected suites are green.

Out of scope (listed under Not covered): per-commit attribution, lint, repo-wide suites, non-Linux platforms, internal route-name counts.

Central claim — A/B table

Oracle 1 (01-help-content.mjs, witness: 01-help-ab-base-vs-head.png) ran four cells in isolated HOME/QWEN_HOME dirs:

Cell Build argv Route taken Exit Option rows Key observables
B-FAST base HEAD^1 --help fast path 0 11 (9 hand-maintained + yargs help/version) --approval-mode absent, --auth-type absent — the bug
B-FULL base HEAD^1 x --help demoted → full parser 0 59 both flags present (real parser always accepted them)
H-FAST head HEAD^2 --help fast path 0 59 both flags present, 5 auth choices, 5 approval modes, [default] row + Positionals section
H-FULL head HEAD^2 --unknown-flag --help demoted → full parser 0 59 full parser page, exit 0 even with the unknown flag

Scripted results (29/29 pass):

  • H-FAST option set == H-FULL option set — zero diff in both directions. The fast path is exactly as complete as the real parser it derives from.
  • H-FAST ⊇ B-FULL — every option the base real parser documented is now in the fast path (in base-full not in head-fast: []). Issue --approval-mode and --auth-type are accepted but missing from qwen --help #8897 closure proven against the strongest oracle (the base full parser, not the PR's own description).
  • No option lost: all 9 hand-maintained base options survive in H-FAST.
  • --allowed-tools wording unchanged (Tools to allow, will bypass confirmation) — the author's R6-3 claim (base registered it twice; last-registration wording kept) confirmed on both arms: B-FULL and H-FAST render the identical wording.
  • Usage banner identical between fast path and full parser.

Cell-selection note (methodology, not a finding): qwen --auth-type qwen-oauth --help on base triggers a yargs quirk that hides the auth-type row from the rendered full-parser help (base x --help renders it; 11080 B vs 10938 B). The clean x --help cell was used as the base full-parser oracle; the quirky shape is exercised in the routing corpus where only exit/help-class are asserted.

Cell-selection note 2: my first harness revision undercounted option rows (regex matched only --flag-leading rows, missing alias-first -m, --model rows — base read as 2 options instead of 9). Fixed before the recorded run; parity comparisons were like-for-like in both revisions.

Secondary claim 1 — routing corpus A/B (104/104)

Oracle 2 (02-routing-corpus.mjs, witness: 02-routing-corpus-ab.png) ran 24 argv shapes against both builds, asserting output class + exit code per arm and settings-store side effects per cell (isolated HOME and QWEN_HOMEStorage.getGlobalQwenDir() prefers QWEN_HOME over $HOME, which this lane exports):

Shape group Shapes base head Notes
Bare help/version --help, -h, --version, -v help/version, exit 0 same parity
Moved full-parser → fast path -p x --help, --auth-type qwen-oauth --help, --approval-mode plan --help, --sandbox-session-id abc --help, --extensions a b --help, -p -v -h, --resume -v --help, --model -v --help help, exit 0 (via full parser or fast path) help, exit 0 both arms print help; content parity proven in oracle 1
Direction flips (named by PR) --version=false --help, --unknown-flag --help help, exit 0 help, exit 0 head demotes to the full parser, which still short-circuits --help at exit 0 — as the description claims
Disclosed behavior change --help --no-help fast-path help, exit 0 demoted; no help; exit 1 fail-closed confirmed: the full parser's last-wins semantics apply, no crash, no help output
Serve page --extensions=a serve --help serve help page, exit 0 serve help page, exit 0 both arms match the serve command in the full parser
Version intercept (base parity) --proxy … -v, --worktree -v, -dh -v, mcp add my-server node server.js -v, mcp remove victim -v version, exit 0 version, exit 0 and settings.json NOT written on either arm for the two mcp shapes — the side-effect-free intercept holds
-- escape mcp add my-server node -- -v -v persisted as server arg -v persisted as server arg escape surface identical both arms
=-form / post--- parity --model=-v, -- -v full parser, exit 1 full parser, exit 1 per-arm class and exit identical

The dangerous historical shapes from this PR's evolution (mcp remove victim -v, mcp add … -v — which an intermediate commit briefly executed/corrupted) were re-driven against the final build: both arms print the version and write nothing.

Locale pin (oracle 3, witness 03-locale-fast-path-pin.png): under LC_ALL=de_DE.UTF-8, base fast path renders Kommandos:/Optionen: (unpinned), head renders English Options: (2/2 checks).

Import-closure claim (indirect): head --help averages 58 ms vs base 51 ms over 5 runs — same order, consistent with the fast path still not loading the core barrel (a +10 MB closure would add far more than 7 ms on this runner).

Secondary claim 2 — tests are load-bearing

  • Targeted gates at head (witness log gate-head-suites.log): src/cli.test.ts 76, src/config/config.test.ts 356, src/config/top-level-options.test.ts 3, src/commands/mcp/add.test.ts 29 — 464/464 pass (matches the PR's claimed counts; cli+mcp/add grew from the PR body's 102 to 105 as the branch accreted pins).
  • Vacuity check (witness 04-vacuity-auth-type-mutation.png): deleted the auth-type entry from DEFAULT_COMMAND_OPTIONS in a scratch mutation; cli.test.ts -t "prints top-level help" failed at the intended assertion (expect(helpText).toContain('"openai", "anthropic", "qwen-oauth", "gemini", "vertex-ai"'), cli.test.ts:797) with the real help text as actual — a behavioral mismatch, not an import/compile artifact. Source restored; git status clean. The loop in that test iterates TOP_LEVEL_HELP_OPTIONS itself (self-adaptive), but the literal choices assertion and the route tests (resolveBootstrapRoute(['--approval-mode','auto','--help']) etc.) pin the substance.
  • The witness tests in top-level-options.test.ts pin the mirrored ApprovalMode/AuthType literals against the real core enums — the drift hazard the satisfies-only design cannot see.

Corrections

None — no earlier round described the code inaccurately (the previous round was a build-failure notice, re-measured above).

Findings

None. No new blocking or non-blocking problems were produced by the evidence. The one user-visible behavior change (--help --no-help family demotes to the full parser instead of printing help) is disclosed in the PR description, verified fail-closed, and matches full-parser semantics by construction.

Not covered

  • Per-commit attribution: the checkout is depth 2 (git rev-list HEAD^1..HEAD^2 returns 1 at the shallow boundary; the metadata snapshot lists 36 commits). The aggregate HEAD^1..HEAD diff was verified; the 36 intermediate commits were not individually exercised.
  • Lint gate (npm run lint) and repo-wide test suites — only the four affected suites ran. The merge-head tsc --build of all packages (via the workflow's build) stands as the type gate.
  • Internal route names: the PR's "22 shapes route differently" count is about resolveBootstrapRoute's internal return values; this round asserts the observable behavior (output class, exit code, side effects) of 24 shapes, not the internal counter.
  • Windows/macOS: Linux container only.
  • Import-closure size: proxied by startup timing (51 ms vs 58 ms), not by a byte count of loaded modules.
  • The routing corpus covers the shapes the PR names plus their siblings; the argv space is infinite and this is a chosen scope, not exhaustive coverage.

Methodology

Environment: CI verify container (node:22-bookworm, Node v22.23.2), shared loaded runner; merge-ref checkout at depth 2 (HEAD = merge commit, HEAD^1 = base tip 4a9fe44f5a, HEAD^2 = verified head 4ed60c3c11). The workflow's npm ci + npm run build completed at HEAD before this round (dist timestamps 11:02–11:03 UTC). Base control: git worktree add tmp/base-tree HEAD^1, then rebuilt packages/cli there with the identical build script (scripts/build_package.jstsc --build + asset copy; success log build-base-cli-4.log, three earlier attempts documenting the wiring: nested per-package node_modules are not hoisted in this repo, so packages/{cli,core,sdk-typescript,channels/feishu}/node_modules and the repo-root node_modules were symlinked from the head tree — valid because the PR diff touches zero package.json/lockfile entries, verified). Control realpath asserted per the workspace-link rule: @qwen-code/qwen-code-core resolves into the head tree's packages/core, which the PR does not modify (0 files in diff) — a clean control. Generated git-commit.ts inputs were copied head→base (gitignored build artifacts). Every cell ran in a fresh HOME and QWEN_HOME (an earlier revision isolated only HOME and one mcp cell persisted into the lane's own QWEN_HOME; that entry was removed and the harness re-run isolated). Harnesses 01-help-content.mjs, 02-routing-corpus.mjs, 03-locale-probe.sh live in this artifact dir next to their raw logs (01-help-content.log, 02-routing-corpus.log, 03-locale-probe.log, gate-head-suites.log, bfull-vs-hfast.log, build logs); evidence PNGs under evidence/. Assertion totals: oracle 1 = 29, oracle 2 = 104, oracle 3 = 2, vacuity mutation = 1, vitest gates = 464 → 600 pass / 0 fail.

Flakiness gate log

rounds=5 files=3 skipped=0
file packages/cli/src/cli.test.ts: (cd packages/cli) npx --no-install vitest run ./src/cli.test.ts
file packages/cli/src/commands/mcp/add.test.ts: (cd packages/cli) npx --no-install vitest run ./src/commands/mcp/add.test.ts
file packages/cli/src/config/top-level-options.test.ts: (cd packages/cli) npx --no-install vitest run ./src/config/top-level-options.test.ts


per-file results (P=pass F=fail I=infra-exit, one letter per run):
  packages/cli/src/cli.test.ts: PPPPP
  packages/cli/src/commands/mcp/add.test.ts: PPPPP
  packages/cli/src/config/top-level-options.test.ts: PPPPP

verdict: pass
summary: 3 changed test file(s) x 5 identical rounds, no divergence

--- per-invocation detail (full copy in the artifact) ---
round 1 · packages/cli/src/cli.test.ts: P (exit 0)
round 1 · packages/cli/src/commands/mcp/add.test.ts: P (exit 0)
round 1 · packages/cli/src/config/top-level-options.test.ts: P (exit 0)
round 2 · packages/cli/src/cli.test.ts: P (exit 0)
round 2 · packages/cli/src/commands/mcp/add.test.ts: P (exit 0)
round 2 · packages/cli/src/config/top-level-options.test.ts: P (exit 0)
round 3 · packages/cli/src/cli.test.ts: P (exit 0)
round 3 · packages/cli/src/commands/mcp/add.test.ts: P (exit 0)
round 3 · packages/cli/src/config/top-level-options.test.ts: P (exit 0)
round 4 · packages/cli/src/cli.test.ts: P (exit 0)
round 4 · packages/cli/src/commands/mcp/add.test.ts: P (exit 0)
round 4 · packages/cli/src/config/top-level-options.test.ts: P (exit 0)
round 5 · packages/cli/src/cli.test.ts: P (exit 0)
round 5 · packages/cli/src/commands/mcp/add.test.ts: P (exit 0)
round 5 · packages/cli/src/config/top-level-options.test.ts: P (exit 0)

Evidence images

01-help-ab-base-vs-head

02-routing-corpus-ab

03-locale-fast-path-pin

04-vacuity-auth-type-mutation

Harness scripts and raw logs are in the workflow run artifacts (7-day retention).

Qwen Code · sandboxed verification

@qwen-code-ci-bot qwen-code-ci-bot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGTM, looks ready to ship. ✅

@qwen-code-dev-bot

Copy link
Copy Markdown
Collaborator

🤖 AutoFix updated a stale base — the fix did not pass verification, but this PR was behind main, so it merged current main in via update-branch and will retry on the next scan. A stale base (a dependency or symbol main already changed) can fail the build without being the fix's fault; if it still fails once current, it hands off to a human.

What I found before stopping:

Autofix address-review round — PR #8902 (head 4ed60c3c11)

No new commits this round: every actionable finding in this window was already fixed by earlier rounds (code) or by the maintainer directly (PR body). This round independently re-verified the code fix with execution evidence (focused suite + mutation probes on both added guards) and recorded dispositions for the PR-body finding, which cannot be re-executed from this environment.

Dispositions

Inline findings

rc:3878041948 — [Critical] R31-2: help scan lost the base value-slot skip across the -- sentinel (packages/cli/src/cli.ts:193) → Resolved in code (re-verified this round)

The fix was committed in a0b2f03991 (option (a) from the finding) and is present at HEAD 4ed60c3c11:

  • hasFlag (cli.ts:210-216) and firstPositionalArg (cli.ts:297-302) skip the value slot of BASE_VALUE_FLAGS spellings unconditionally — even when it holds the -- sentinel — mirroring hasVersionToken; derived-only flags keep the conditional skipOptionValues skip, so the --worktree sentinel control still demotes.
  • The family is pinned in cli.test.ts (keeps base help routing when -- sits in a base value slot, cli.test.ts:181-196): --model/--prompt/--resume/--output-format/-p + -- + --help/-h'help'; controls: ['--worktree','--','--help']'default' (cli.test.ts:166) and ['--model','--','foo','--help']'default' (cli.test.ts:193).

Re-verification evidence gath

中文说明

🤖 AutoFix 更新了一个过期的 base —— 修复未通过验证,但本 PR 落后于 main,因此已通过 update-branch 合入当前 main,并将在下次扫描时重试。过期的 base(main 已改动的依赖或符号)可能让构建失败而并非修复本身的错;若 base 更新后仍然失败,将移交人工处理。

Run log: https://github.com/QwenLM/qwen-code/actions/runs/33169401869


🧠 Handled by Qwen Code · model/模型 qwen3.8-max

@qwen-code-ci-bot qwen-code-ci-bot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Partially reviewed — gaps disclosed.

8 Suggestion-level finding(s) this review confirmed are already reported on this PR and are not repeated:

  • R33-1 config.ts deprecation loop has no test witness — already reported as R2-5 (comment 3757539855); author declined; re-reported as R10-2
  • R33-2 VALUE_FLAGS number-type branch untested — already reported as R11-3 (round-11 deferred list, review 4957427644; re-reported rounds 12/16)
  • R33-3 BASE_VALUE_FLAGS base-set pin coverage (4 spellings unpinned) — already reported as R32-10 (triage comment 5248422469; round-26/28 deferred lists, cli.test.ts:313)
  • R33-4 import-boundary guard re-export escape surface — already reported (round-26 deferred list cli.test.ts:1076, round-27 cli.test.ts:1084, round-30 cli.test.ts:1125, round-31 already-reported list)
  • R33-5 option-set parity unwitnessed — already reported as R2-1 (comment 3757539808; author declined; re-reported rounds 14/17/21/22/27/28/30/32) and as R1-7 (comment 3755281208)
  • R33-6 Commands-section order divergence — already discussed: maintainer verification report §6 (comment 5439725115) verified it and deferred it to a follow-up; round-32 deferred list (cli.ts:40)
  • R33-7 TOP_LEVEL_DEPRECATED_OPTIONS keys unvalidated — already reported (round-32 deferred list, config.ts:844)
  • R33-8 hasVersionToken docstring overclaims — already reported (round-28 already-reported list: 'hasVersionToken comment overclaims', cli.ts:210-238; round-22/24/26 deferred lists)

Not reviewed: build-and-test — "Integration Tests (CLI, No Sandbox)" was skipped in CI and its suite did not run locally.

Not reviewed: reverse audit — did not converge within the reverse-audit round cap of 5.

中文说明

仅完成部分审查,审查缺口已披露。

本轮确认的 8 条建议级发现已在 PR 上报告过,不再重复发布(列表见上方英文部分)。

未审查:build-and-test — "Integration Tests (CLI, No Sandbox)" was skipped in CI and its suite did not run locally。

未审查:反向审计——在 5 轮的反审轮数上限内未收敛。

— qwen3.8-max via Qwen Code /review (v0.22.2)

@qwen-code-dev-bot

Copy link
Copy Markdown
Collaborator

🤖 Reviewed the latest feedback — no changes needed. Why, point by point: · 已审阅最新反馈——无需改动。逐点说明原因如下:

Autofix round report — PR #8902 (address-review, head b085432868)

Outcome: NO ACTION — no code change was required this round. Both outstanding
Critical findings were already fixed by earlier commits / a PR-body edit; this round
re-verified them against the current head and records them as resolved.

Feedback triage

rc:3878041948 — [Critical] sentinel -- value-slot regression (qwen --model -- --help flipped to 'default')

Disposition: already fixed in a0b2f03991 (option a); re-verified this round.

  • Commit a0b2f03991 ("fix(cli): keep the help scan's base value-flag skip across
    the -- sentinel (fix(cli): derive bootstrap --help from shared option definitions #8902)") is an ancestor of the current head. It restores the
    unconditional BASE_VALUE_FLAGS value-slot skip in hasFlag and
    firstPositionalArg (packages/cli/src/cli.ts), mirroring hasVersionToken;
    derived-only flags keep the conditional skipOptionValues skip.
  • The route family is pinned by keeps base help routing when -- sits in a base value slot (packages/cli/src/cli.test.ts): --model / --prompt / --resume
    / --output-format / -p followed by -- and --help/-h all route to
    'help'; a real positional after the sentinel still routes to 'default'.
  • Mutation probe (this round): removing the BASE_VALUE_FLAGS skip from hasFlag
    makes the pin fail (expected 'default' to be 'help'); restoring it returns the
    suite to green — the pin is load-bearing, not tautological.

rc:3879892399 — [Critical] Chinese 风险与范围 section contradicted the English Risk & Scope disclosure

Disposition: fixed via PR-body edit; re-verified as far as a tokenless runner can.

  • The reply (rc:3880020315) records the gh pr edit and quotes the corrected
    Chinese bullet read back from the live body: the 22-shape claim now carries the
    --no-help family exception (headless boots the agent and exits 1, a real TTY
    opens the TUI; base printed help), matching the English section.
  • This runner has no GitHub credentials, so the live body could not be re-read
    here. The code-side fact the disclosure describes is pinned and green at this
    head: resolveBootstrapRoute(['--help', '--no-help']) === 'default'
    (packages/cli/src/cli.test.ts, demotes unregistered flags via the KNOWN_FAST_PATH_FLAGS gate).
  • The round-33 automated review ran at this exact head (b085432868) under a
    Critical severity floor and posted zero findings — consistent with the
    contradiction no longer present in the live body.

Everything else

  • Rounds 29–33 review bodies: no new actionable findings at the current head
    (round 33 posted 0; every candidate finding was confirmed already reported and
    handled in earlier rounds — declined or deferred to the follow-up queue). Items
    listed as "Deferred under the convergence posture" are explicitly recorded, not
    requested in this round.
  • Issue-level comments: the infra-failure notice (ic:5446194185) is superseded by
    the passed sandboxed verification (ic:5451659488: 600/600 assertions, flakiness
    gate 3 files × 5 rounds clean) — informational, nothing to address.
  • Failed checks / still-red checks: none.
  • Environment note (not a finding, no action taken): five config.test.ts sandbox
    tests fail only when the outer agent's runtime environment leaks SANDBOX /
    QWEN_CODE_CUSTOM_SANDBOX_IMAGE into the test process (as on this runner); they
    pass in a clean environment (356/356). CI does not set these variables.

Verification

Commands actually run this round (head b085432868, no code changes committed):

  • npm run build (repo root) — passed
  • npm run typecheck (repo root) — passed
  • npx vitest run src/cli.test.ts (packages/cli) — 76/76 passed
  • npx vitest run src/config/top-level-options.test.ts src/commands/mcp/add.test.ts (packages/cli) — 32/32 passed
  • npx vitest run src/config/config.test.ts (packages/cli, clean env) — 356/356 passed
  • Mutation probe on the sentinel fix — pin failed with the fix removed, green after restore; git status clean, HEAD unchanged at b085432868eeb4cbda12a03e6ace673bbf0ed2dd

No commit was created; the working tree is clean.

中文说明

Autofix 轮次报告 — PR #8902(address-review,head b085432868

结果:无需行动(NO ACTION)——本轮无需任何代码改动。两条未决的 Critical 发现均已由更早的提交 / PR 正文编辑修复;本轮在当前 head 上重新验证了它们,并将其记录为已解决。

反馈分诊

rc:3878041948 — [Critical] 哨兵 -- 值槽回归(qwen --model -- --help 被翻转为 'default'

处置:已在 a0b2f03991 中修复(方案 a);本轮重新验证。

  • 提交 a0b2f03991("fix(cli): keep the help scan's base value-flag skip across the -- sentinel (fix(cli): derive bootstrap --help from shared option definitions #8902)")是当前 head 的祖先提交。它在 hasFlagfirstPositionalArgpackages/cli/src/cli.ts)中恢复了无条件的 BASE_VALUE_FLAGS 值槽跳过(与 hasVersionToken 一致);派生独有标志保留条件式的 skipOptionValues 跳过。
  • 该路由家族已由测试 keeps base help routing when -- sits in a base value slotpackages/cli/src/cli.test.ts)固定:--model / --prompt / --resume / --output-format / -p 后跟 ----help/-h 均路由为 'help';哨兵后出现真实位置参数时仍路由为 'default'
  • 变异探测(本轮执行):移除 hasFlag 中的 BASE_VALUE_FLAGS 跳过后,该固定断言失败(expected 'default' to be 'help');恢复后整套测试重新变绿——该断言承载真实负载,并非同义反复。

rc:3879892399 — [Critical] 中文「风险与范围」部分与英文 Risk & Scope 披露相互矛盾

处置:已通过 PR 正文编辑修复;在无凭证的 runner 上已尽可能重新验证。

  • 回复(rc:3880020315)记录了 gh pr edit 操作,并引用了从线上正文读回的更正后中文条目:22 个 shape 的声明现在包含 --no-help 家族例外(headless 启动 agent 并以 exit 1 退出,真实 TTY 打开 TUI;base 打印帮助),与英文部分一致。
  • 本 runner 没有 GitHub 凭证,因此无法在此重新读取线上正文。该披露所描述的代码侧事实已在当前 head 固定并通过测试:resolveBootstrapRoute(['--help', '--no-help']) === 'default'packages/cli/src/cli.test.ts 中的 demotes unregistered flags via the KNOWN_FAST_PATH_FLAGS gate)。
  • 第 33 轮自动评审正是在该 head(b085432868)上、以 Critical 严重度下限运行的,且未发布任何发现——与线上正文中矛盾已不存在相吻合。

其余事项

  • 第 29–33 轮评审正文:当前 head 上没有新的可行动发现(第 33 轮发布 0 条;每条候选发现均被确认已在早前轮次报告并处理——已拒绝或已延后到后续队列)。列为「收敛姿态下延后」的条目明确只是记录,本轮不要求处理。
  • Issue 级评论:基础设施故障通知(ic:5446194185)已被通过的沙箱验证(ic:5451659488:600/600 断言,抖动门 3 个文件 × 5 轮无分歧)所取代——仅为信息性内容,无需处理。
  • 失败检查 / 持续失败的检查:无。
  • 环境说明(非发现项,未采取行动):仅当外层 agent 的运行时环境将 SANDBOX / QWEN_CODE_CUSTOM_SANDBOX_IMAGE 泄漏进测试进程时(如本 runner 上),config.test.ts 的 5 个 sandbox 测试才会失败;在干净环境下通过(356/356)。CI 不会设置这些变量。

验证

本轮实际执行的命令(head b085432868,未提交任何代码改动):

  • npm run build(仓库根目录)— 通过
  • npm run typecheck(仓库根目录)— 通过
  • npx vitest run src/cli.test.ts(packages/cli)— 76/76 通过
  • npx vitest run src/config/top-level-options.test.ts src/commands/mcp/add.test.ts(packages/cli)— 32/32 通过
  • npx vitest run src/config/config.test.ts(packages/cli,干净环境)— 356/356 通过
  • 针对哨兵修复的变异探测——移除修复后固定断言失败,恢复后变绿;git status 干净,HEAD 保持为 b085432868eeb4cbda12a03e6ace673bbf0ed2dd

未创建任何提交;工作树干净。

Base-conflict check · 基分支冲突检查: no conflict with main. · 与 main 无冲突。


🧠 Handled by Qwen Code · model/模型 qwen3.8-max

wenshao pushed a commit to wenshao/qwen-code that referenced this pull request Aug 28, 2026
@wenshao

wenshao commented Aug 28, 2026

Copy link
Copy Markdown
Collaborator

Local verification report (maintainer) — round 2, at the current head

Follow-up to my 2026-08-25 and 2026-08-27 runs. I rebuilt both arms from source on Linux and put the real bundled binaries through the harness again, because the head has moved through five commits and a main merge since then, and two of them touch the risky part of the diff: 95508baebf deleted four of the five rules inside argvSafeForFastPath, and a0b2f03991 changed how the help scan treats the -- sentinel.

Verdict: every finding from my last two reports is now closed, and I could not reproduce a regression. Not blocking on anything. Five small non-blocking notes at the end, one of which is a leftover of the same dead-code class round 2 cleaned up.

head b085432868
base d6533785bd (merge-base with main)
build two isolated worktrees, per-package deps, node esbuild.config.js bundles
env Linux x86-64 (Debian 13, kernel 6.12), Node v22.22.2
harness fresh HOME + QWEN_HOME + empty cwd per invocation, settings.json seeded with two MCP servers (victim, keeper)

1. The fix does what it claims — and now matches the real parser exactly

The oracle is the same binary's own full parser: qwen --help (fast path) diffed against qwen zz --help (a positional demotes it to the real yargs parser).

help fidelity

Base's fast path was missing 48 of the 59 options the real parser accepts. Head's fast-path option set is now exactly the real parser's — zero missing, zero extra, all nine [deprecated:] markers carried through, all three hidden options still hidden on both surfaces.

The full-parser help is byte-identical across the two arms (sha256 cdac9a3183f2…), so moving ~350 lines of option definitions out of config.ts renders identically. That is the strongest available statement that the config.ts half of this PR is a pure refactor.

qwen --help before / after on the same 100-column TTY

help A/B

2. Routing — 210 argv shapes on the real binaries

argv sweep

No exit-code divergence outside the --no-help family, no destructive divergence anywhere, and the version intercept is byte-identical on all 27 shapes that print a version.

The positive control fires: qwen mcp remove victim really does delete the server on both arms, so "nothing was deleted" elsewhere is a measurement rather than an absence of one.

Worth noting how much this simplifies the surface: across its 158 help-printing shapes base emits 30 distinct help renderings; head emits 2 for 150 of its 155 — the fast-path help and the full-parser help, which now differ only by the hand-maintained Commands: block (see N4).

3. Round 2's "net subtraction" holds up — and one rule is still dominated

I re-ran every fix as a single-point mutation on the head source, re-bundled, and replayed the same 210 shapes plus the PR-adjacent suite.

mutation matrix

The important line is M3 ≡ M4: removing just the KNOWN_FAST_PATH_FLAGS membership check has exactly the same effect as deleting the whole gate. That is the direct confirmation that the four structural rules round 2 removed were genuinely dominated — the gate is now minimal, and it is pinned (2 tests fail when it goes).

BASE_VALUE_FLAGS parity is load-bearing too, but my earlier corpus could not see it: on shapes like qwen --proxy -v the slow path prints the version anyway. It only surfaces with a command tail — qwen --proxy -v mcp remove victim and five siblings go from version, exit 0 (base parity) to error, exit 1 under M5. Head is byte-identical to base on all ten of those shapes.

4. The bootstrap-weight regression from my 2026-08-25 report is closed

weight and latency

Before 61f5bcfb8e the shared module imported the core barrel at runtime and dragged the agent runtime into the bootstrap entry: 10.6 MB across 97 files, --help 40 → 241 ms. At this head the static import closure is 51 KB across 10 files (base: 37.3 KB / 9), and qwen --help costs +6.2 ms while producing 4.4× more output. --version, mcp, mcp --version and mcp list are flat.

The replacement is import type plus mirrored literals guarded by satisfies / Record witnesses. I checked that those witnesses actually bite, in all three directions:

drift witness

5. The .wrap() fix, on a real PTY

wrap width

Base's fast path never called .wrap(), so it stayed at yargs' 80-column default no matter how wide the terminal was — which is what split the tagline into use -p/- / -prompt. Head mirrors config.ts, and mutation M2 confirms one test pins it.

6. Repo checks

  • ESLint clean on all six changed files (--max-warnings 0).
  • npm run check:serve-fast-path-bundlepasses; the shared module did not drag anything into the startup closure.
  • Typecheck: clean apart from two TS6305 from an unbuilt audio-capture dist in my own harness — constant across every run, my environment, not this PR.
  • Merges into current main (5ae363e2f9) with no conflict; config.ts auto-merges.
  • Whole packages/cli suite on both arms: base 25,452 passed / 293 failed / 33 failing files, head 25,476 passed / 295 failed / 35 failing files (+24 passing = this PR's new tests). 33 of those files fail identically on both arms — the ink/TUI rendering suites and the serve suites that need a non-root user. The 2 extra on head are flakes under CPU contention: in isolation they are 2/2 green on head, and serve/acp-http/transport.test.ts failed once on base in the same sample.
  • Merge safety. config.ts is both the file this PR guts and the file main keeps adding options to, so an auto-merge could silently drop a new option rather than register it in the shared module. I built the actual merge result: its real-parser help is byte-identical to current main's (59 options either way), and its fast-path help still matches its own parser exactly. Nothing was lost.

repo checks


Non-blocking notes

N1 — one rule inside argvSafeForFastPath is still dead. if (!token.startsWith('-')) return false; can never be the reason a token is rejected: KNOWN_FAST_PATH_FLAGS is built purely from --long / -x spellings, so any token failing startsWith('-') also fails the membership check on the very next line. Removing it moves 0 of 210 shapes and leaves 108/108 green — the same argument round 2 used to delete the other four rules. Either drop it for consistency, or keep it and say in the comment that it is documentation rather than a live rule.

N2 — the .locale('en') pin is a no-op in the shipped binary. esbuild does not bundle yargs' locales/*.json, so qwen --help under LC_ALL=de_DE.UTF-8 renders English on both arms, with or without the pin (measured). The pin and its new witness test only bite when running from source. Harmless and worth keeping, but the comment currently reads as if the shipped CLI depends on it.

N3 — the --no-help family now writes settings.json. The three shapes that changed behaviour (--help --no-help, -h --no-h, -h --no-help) boot the agent, which stamps "$version": 4 and re-indents the settings file. Nothing is lost — both seeded servers survive — but base's --help never touched the file at all. Worth one clause in the risk section, since "boots the agent and exits 1" undersells it slightly.

N4 — TOP_LEVEL_COMMANDS is still hand-maintained, and it is now the only difference between head's two help surfaces. The exact drift today:

- qwen channel <command>     (fast path)      + qwen channel                (real parser)
- qwen review <command>                       + qwen review
- qwen sessions <command>                     + qwen sessions
- qwen hooks                                  + qwen hooks … [aliases: hook]

plus a different ordering. Fine as a follow-up — it just deserves a line in the PR body so the drift class this PR fixes for options is not assumed fixed for commands.

N5 — one code comment over-claims. The hasVersionToken comment justifies the fail-closed intercept with "observed: mcp remove victim -v help deleted the server and its OAuth creds on the full parser". On today's build that exact argv prints the version on both arms, so the observation is not reproducible as written. The underlying concern is real and I did reproduce it with a different argv — qwen --proxy x mcp remove victim deletes through the full parser — so I would just swap the example for one that still demonstrates it.


Verdict

The issue is fixed, the config.ts extraction is provably render-neutral, the routing rewrite survives an exhaustive per-flag sweep with no destructive or exit-code divergence, and the two things I asked for last round (test the membership gate, delete the rules it dominates) were done as a genuine subtraction. The bootstrap-weight regression that made me hesitate on 2026-08-25 is gone.

No blocking findings. N1 and N5 are two-line changes if you want them in this PR; N2–N4 are comment/PR-body wording.

中文说明

本地验证报告(维护者)—— 第二轮,针对当前 head

接续我 2026-08-252026-08-27 两次验证。这次在 Linux 上重新从源码构建两臂,用真实打包产物重跑了整套 harness——因为此后 head 又推进了五个提交并合并了一次 main,其中两个动到了 diff 里风险最高的部分:95508baebf 删掉了 argvSafeForFastPath 五条规则中的四条,a0b2f03991 改了 help 扫描对 -- 哨兵的处理。

结论:我前两次报告里的问题现已全部关闭,并且没有复现出任何回归。没有阻塞项。 末尾有五条非阻塞说明,其中一条属于第 2 轮清理掉的同一类死代码残留。

head b085432868
base d6533785bd(与 main 的 merge-base)
构建 两个隔离 worktree,按包链接依赖,node esbuild.config.js 产出 bundle
环境 Linux x86-64(Debian 13,内核 6.12)、Node v22.22.2
夹具 每次调用独立 HOME + QWEN_HOME + 空 cwd,settings.json 预置两个 MCP server(victimkeeper

1. 修复确实生效,且现在与真实 parser 完全一致

判据用的是同一个二进制自己的完整 parser:把 qwen --help(fast path)与 qwen zz --help(位置参数会让它降级到真实 yargs parser)做集合 diff。

base 的 fast path 缺了真实 parser 所接受的 59 个选项中的 48 个。head 的 fast-path 选项集现在与真实 parser 完全相同——零缺失、零多余,九个 [deprecated:] 标记全部带上,三个 hidden 选项在两条 help 路径上仍然隐藏。

完整 parser 的 help 在两臂上逐字节相同sha256 cdac9a3183f2…),也就是说把约 350 行选项定义搬出 config.ts 之后渲染结果毫无变化。这是能给出的最强论据,说明本 PR 中 config.ts 那一半是纯重构。

2. 路由 —— 210 个 argv 形态跑真实二进制

--no-help 家族外没有退出码差异,任何地方都没有破坏性差异;27 个打印版本号的形态在两臂上逐字节相同。

正对照是会触发的qwen mcp remove victim 在两臂上都真的删掉了那个 server,所以别处的"什么都没被删"是一次实测,而不是没测。

值得一提的是这对整个 help 面的收敛效果:base 的 158 个打印 help 的形态一共产生 30 种不同渲染;head 的 155 个里有 150 个只产生 2 种——fast-path help 与完整 parser help,而这两者如今只差一个手工维护的 Commands: 段(见 N4)。

3. 第 2 轮的"净减法"站得住脚 —— 但还有一条规则是冗余的

我把每一处修复都做成 head 源码上的单点变异,重新打包,再在同样的 210 个形态和 PR 相关测试套件上回放。

最关键的一行是 M3 ≡ M4:只删掉 KNOWN_FAST_PATH_FLAGS 成员检查,与把整个网关删掉,效果完全一样。这直接证明第 2 轮移除的那四条结构性规则确实是被支配的——网关现在是最小的,而且被测试钉住(删掉它会挂 2 条测试)。

BASE_VALUE_FLAGS 的对齐同样承重,只是我之前的语料看不见它:像 qwen --proxy -v 这样的形态,慢路径本来也会打印版本号。它只有在带命令尾巴时才暴露——qwen --proxy -v mcp remove victim 及其五个同类,在 M5 下从版本号、exit 0(base 对齐)变成报错、exit 1。head 在这十个形态上与 base 逐字节相同。

4. 我 2026-08-25 报告里的 bootstrap 权重回归已关闭

61f5bcfb8e 之前,共享模块在运行时 import 了 core barrel,把整个 agent 运行时拖进了 bootstrap 入口:97 个文件、10.6 MB--help 从 40 ms 涨到 241 ms。在当前 head 上,静态 import 闭包是 10 个文件、51 KB(base 为 9 个文件、37.3 KB),而 qwen --help 的代价是 +6.2 ms,换来 4.4 倍的输出量。--versionmcpmcp --versionmcp list 全部持平。

替代方案是 import type 加上由 satisfies / Record 见证守护的镜像字面量。我验证了这些见证在三个方向上都确实会报错:

5. .wrap() 修复,在真实 PTY 上验证

base 的 fast path 从不调用 .wrap(),所以无论终端多宽都停留在 yargs 默认的 80 列——这正是把标语切成 use -p/- / -prompt 的原因。head 与 config.ts 保持一致,变异 M2 确认有一条测试钉住了它。

6. 仓库检查

  • ESLint 在全部六个改动文件上干净(--max-warnings 0)。
  • npm run check:serve-fast-path-bundle —— 通过;共享模块没有把任何东西拖进启动闭包。
  • Typecheck:除了我自己 harness 里 audio-capture dist 未构建导致的 2 个 TS6305 之外干净——它在每次运行中都恒定出现,属于我的环境问题,与本 PR 无关。
  • 与当前 main5ae363e2f9)合并无冲突config.ts 自动合并。
  • 两臂完整 packages/cli 套件:base 25,452 通过 / 293 失败 / 33 个失败文件,head 25,476 通过 / 295 失败 / 35 个失败文件(多出的 24 条通过即本 PR 新增测试)。其中 33 个文件在两臂上完全一致地失败——ink/TUI 渲染套件,以及需要非 root 用户的 serve 套件。head 多出的那 2 个是 CPU 争抢下的抖动:单独运行时在 head 上 2/2 全绿,而 serve/acp-http/transport.test.ts 在同一组样本里在 base 上失败过一次
  • 合并安全性。 config.ts 既是本 PR 掏空的文件,也是 main 持续往里加选项的文件,因此自动合并有可能悄悄丢掉一个新选项而不是把它注册进共享模块。我构建了真实的合并结果:它的真实 parser help 与当前 main 逐字节相同(两边都是 59 个选项),且它的 fast-path help 仍与自己的 parser 完全一致。没有任何东西丢失。

非阻塞说明

N1 —— argvSafeForFastPath 里还有一条规则是死代码。 if (!token.startsWith('-')) return false; 永远不可能成为某个 token 被拒的原因:KNOWN_FAST_PATH_FLAGS 完全由 --long / -x 拼写构成,因此任何过不了 startsWith('-') 的 token,在紧接着的下一行成员检查上同样过不了。删掉它在 210 个形态里 0 个发生变化,测试仍是 108/108 全绿——与第 2 轮删除另外四条规则用的是同一个论证。要么为了一致性把它也删掉,要么保留但在注释里写明它是文档而非生效规则。

N2 —— .locale('en') 这个钉子在发布产物里是空操作。 esbuild 不会打包 yargs 的 locales/*.json,因此 LC_ALL=de_DE.UTF-8qwen --help两臂上、无论有没有这个钉子都渲染英文(已实测)。这个钉子和它新增的见证测试只在从源码运行时才起作用。无害且值得保留,但当前注释读起来像是发布版 CLI 依赖它。

N3 —— --no-help 家族现在会写 settings.json 那三个行为发生变化的形态(--help --no-help-h --no-h-h --no-help)会启动 agent,而 agent 会盖上 "$version": 4 并重新缩进 settings 文件。没有任何数据丢失——两个预置 server 都还在——但 base 的 --help 压根不会碰这个文件。值得在风险章节补一句,因为"启动 agent 并以 exit 1 退出"稍微低估了它。

N4 —— TOP_LEVEL_COMMANDS 仍是手工维护的,而且它现在是 head 两条 help 路径之间唯一的差异。今天的实际漂移:

- qwen channel <command>     (fast path)      + qwen channel                (真实 parser)
- qwen review <command>                       + qwen review
- qwen sessions <command>                     + qwen sessions
- qwen hooks                                  + qwen hooks … [aliases: hook]

外加排序不同。放到后续 PR 处理没问题——只是值得在正文里写一句,免得读者以为本 PR 为选项修掉的那类漂移在命令上也已经修好了。

N5 —— 有一处代码注释论断过头。 hasVersionToken 的注释用*"observed: mcp remove victim -v help deleted the server and its OAuth creds on the full parser"*来论证 fail-closed 拦截的必要性。在今天的构建上,这个 argv 在两臂都只打印版本号,所以该观察按字面表述无法复现。底层的担忧是真实的,我也用另一个 argv 复现了——qwen --proxy x mcp remove victim 确实会经由完整 parser 删除 server——所以我建议把例子换成仍然能演示该风险的那一个。


结论

Issue 已修复,config.ts 的抽取可证明对渲染中性,路由改写在逐 flag 穷举扫描下没有破坏性差异也没有退出码差异,而我上一轮提出的两点(给成员检查补测试、删掉被它支配的规则)是以真正的减法完成的。让我在 2026-08-25 犹豫的 bootstrap 权重回归已经消失。

没有阻塞项。 如果想在本 PR 里一并处理,N1 和 N5 都是两行的改动;N2–N4 属于注释/正文措辞。


🤖 Generated with Claude Code — Claude Opus 5 (1M context)

@yiliang114
yiliang114 added this pull request to the merge queue Aug 28, 2026
Merged via the queue into main with commit e5cb60a Aug 28, 2026
57 of 58 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

autofix/takeover Summon the autofix loop to manage this PR (remove to release; needs triage+)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

--approval-mode and --auth-type are accepted but missing from qwen --help

7 participants