==> Synchronizing chroot copy [/home/alhp/workspace/chroot/root] -> [build_868e8784-9781-43f2-9305-c1e238cde4c6]...done
==> Making package: qwen-code 0.19.3-1.1 (Fri Jul 31 14:16:06 2026)
==> Retrieving sources...
  -> Cloning qwen-code git repo...
Cloning into bare repository '/home/alhp/workspace/build/x86-64-v2/qwen-code-0.19.3-1/qwen-code'...
==> Validating source files with sha256sums...
    qwen-code ... Passed
==> Validating source files with b2sums...
    qwen-code ... Passed
Note: in a future version of systemd-nspawn the default set of permitted socket address families will be restricted to AF_INET, AF_INET6 and AF_UNIX. Use --restrict-address-families= to configure the set of permitted socket address families, or set RestrictAddressFamilies= in a .nspawn file.
==> Making package: qwen-code 0.19.3-1.1 (Fri Jul 31 12:17:42 2026)
==> Checking runtime dependencies...
==> Installing missing dependencies...
resolving dependencies...
looking for conflicting packages...

Package (6)     New Version  Net Change

extra/ada       3.4.4-1        1.08 MiB
extra/c-ares    1.34.8-1       0.53 MiB
extra/libuv     1.52.1-1       0.64 MiB
extra/simdjson  1:4.6.4-1      7.58 MiB
extra/nodejs    26.5.0-1      61.19 MiB
extra/ripgrep   15.2.0-1       4.29 MiB

Total Installed Size:  75.31 MiB

:: Proceed with installation? [Y/n] 
checking keyring...
checking package integrity...
loading package files...
checking for file conflicts...
:: Processing package changes...
installing ada...
installing c-ares...
installing libuv...
installing simdjson...
installing nodejs...
Optional dependencies for nodejs
    npm: nodejs package manager
installing ripgrep...
:: Running post-transaction hooks...
(1/1) Arming ConditionNeedsUpdate...
==> Checking buildtime dependencies...
==> Installing missing dependencies...
resolving dependencies...
looking for conflicting packages...

Package (11)          New Version  Net Change

extra/node-gyp        13.0.1-1       6.74 MiB
extra/nodejs-nopt     10.0.1-1       0.03 MiB
extra/oniguruma       6.9.10-1       0.88 MiB
extra/perl-error      0.17030-3      0.04 MiB
extra/perl-mailtools  2.22-3         0.10 MiB
extra/perl-timedate   2.35-1         0.15 MiB
extra/semver          7.8.5-1        0.10 MiB
extra/zlib-ng         2.3.3-1        0.28 MiB
extra/git             2.55.0-1      31.33 MiB
extra/jq              1.8.2-1        0.47 MiB
extra/npm             12.0.1-1       9.39 MiB

Total Installed Size:  49.50 MiB

:: Proceed with installation? [Y/n] 
checking keyring...
checking package integrity...
loading package files...
checking for file conflicts...
:: Processing package changes...
installing perl-error...
installing perl-timedate...
installing perl-mailtools...
installing zlib-ng...
installing git...
Optional dependencies for git
    git-zsh-completion: upstream zsh completion
    tk: gitk and git gui
    openssh: ssh transport and crypto
    man: show help with `git command --help`
    perl-libwww: git svn
    perl-term-readkey: git svn and interactive.singlekey setting
    perl-io-socket-ssl: git send-email TLS support
    perl-authen-sasl: git send-email TLS support
    perl-cgi: gitweb (web interface) support
    python: git svn & git p4 [installed]
    subversion: git svn
    org.freedesktop.secrets: keyring credential helper
    libsecret: libsecret credential helper [installed]
    less: the default pager for git
installing oniguruma...
installing jq...
installing nodejs-nopt...
installing semver...
installing node-gyp...
Optional dependencies for node-gyp
    gcc: to build C++ modules [installed]
    make: to build C++ modules [installed]
    python: to build C++ modules [installed]
installing npm...
Optional dependencies for npm
    git: for dependencies using Git URL's [installed]
:: Running post-transaction hooks...
(1/3) Creating system user accounts...
Creating group 'git' with GID 969.
Creating user 'git' (git daemon user) with UID 969 and GID 969.
(2/3) Reloading system manager configuration...
  Skipped: Current root is not booted.
(3/3) Arming ConditionNeedsUpdate...
==> Retrieving sources...
==> WARNING: Skipping all source file integrity checks.
==> Extracting sources...
  -> Creating working copy of qwen-code git repo...
Cloning into 'qwen-code'...
done.
Switched to a new branch 'makepkg'
==> Starting prepare()...
npm warn deprecated rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported
npm warn deprecated prebuild-install@7.1.3: No longer maintained. Please contact the author of the relevant native addon; alternatives are available.
npm warn deprecated node-domexception@1.0.0: Use your platform's native DOMException instead
npm warn deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
npm warn deprecated @humanwhocodes/object-schema@2.0.3: Use @eslint/object-schema instead
npm warn deprecated @humanwhocodes/config-array@0.13.0: Use @eslint/config-array instead
npm warn deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported
npm warn deprecated eslint@8.57.1: This version is no longer supported. Please see https://eslint.org/version-support for other options.
npm warn deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported

added 1814 packages, and audited 1832 packages in 34s

541 packages are looking for funding
  run `npm fund` for details

71 vulnerabilities (3 low, 37 moderate, 25 high, 6 critical)

To address issues that do not require attention, run:
  npm audit fix

To address all issues (including breaking changes), run:
  npm audit fix --force

Run `npm audit` for details.
patch-package 8.0.1
Applying patches...
ink@7.0.3 ✔
==> Starting build()...
npm notice run @qwen-code/qwen-code@0.19.3 build
npm notice run cross-env NODE_OPTIONS="--max-old-space-size=3072" node scripts/build.js
npm notice run @qwen-code/qwen-code@0.19.3 generate
npm notice run node scripts/generate-git-commit-info.js
npm notice run @qwen-code/qwen-code-core@0.19.3 build
npm notice run node ../../scripts/build_package.js
Successfully copied files.
npm notice run @qwen-code/web-templates@0.19.3 build
npm notice run node build.mjs && tsc --build --clean && tsc
Building web-templates...
Building insight assets with Vite...
vite v5.4.21 building for production...
transforming...
Browserslist: browsers data (caniuse-lite) is 8 months old. Please run:
  npx update-browserslist-db@latest
  Why you should do it regularly: https://github.com/browserslist/update-db#readme
✓ 7 modules transformed.
rendering chunks...
computing gzip size...
dist/main.css  17.77 kB │ gzip: 4.28 kB
dist/main.js   32.65 kB │ gzip: 8.91 kB
✓ built in 175ms
Reading generated files...
Successfully generated /startdir/src/qwen-code/packages/web-templates/src/generated/insightTemplate.ts
Successfully built all web-templates.
npm notice run @qwen-code/channel-base@0.19.3 build
npm notice run tsc --build
npm notice run @qwen-code/channel-telegram@0.19.3 build
npm notice run tsc --build
npm notice run @qwen-code/channel-weixin@0.19.3 build
npm notice run tsc --build
npm notice run @qwen-code/channel-dingtalk@0.19.3 build
npm notice run tsc --build
npm notice run @qwen-code/channel-feishu@0.19.3 build
npm notice run tsc --build
npm notice run @qwen-code/channel-qqbot@0.19.3 build
npm notice run tsc --build
npm notice run @qwen-code/channel-plugin-example@0.19.3 build
npm notice run tsc --build
npm notice run @qwen-code/audio-capture@0.19.3 build:ts
npm notice run tsc --build
npm notice run @qwen-code/acp-bridge@0.19.3 build
npm notice run node ../../scripts/build_package.js
Successfully copied files.
npm notice run @qwen-code/qwen-code@0.19.3 build
npm notice run node ../../scripts/build_package.js
Successfully copied files.
Generated settings JSON Schema at: /startdir/src/qwen-code/packages/vscode-ide-companion/schemas/settings.schema.json
(node:1566) [DEP0205] DeprecationWarning: `module.register()` is deprecated. Use `module.registerHooks()` instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
npm notice run @qwen-code/webui@0.19.3 build
npm notice run vite build
vite v5.4.21 building for production...
transforming...
Browserslist: browsers data (caniuse-lite) is 8 months old. Please run:
  npx update-browserslist-db@latest
  Why you should do it regularly: https://github.com/browserslist/update-db#readme
✓ 191 modules transformed.
rendering chunks...

[vite:dts] Start generate declaration files...
computing gzip size...
dist/styles.css              83.27 kB │ gzip: 15.51 kB
dist/toolNames-kewwpc1v.js    0.30 kB │ gzip:  0.23 kB │ map:   1.00 kB
dist/daemon-react-sdk.js    138.65 kB │ gzip: 25.56 kB │ map: 267.73 kB
dist/index.js               389.19 kB │ gzip: 97.85 kB │ map: 834.49 kB
[vite:dts] Start rollup declaration files...
Analysis will use the bundled TypeScript version 5.8.2
Analysis will use the bundled TypeScript version 5.8.2
[vite:dts] Declaration files built in 4769ms.

dist/styles.css               83.27 kB │ gzip: 15.51 kB
dist/toolNames-C9pS8yq9.cjs    0.33 kB │ gzip:  0.24 kB │ map:   1.00 kB
dist/daemon-react-sdk.cjs    139.59 kB │ gzip: 25.56 kB │ map: 268.91 kB
dist/index.cjs               398.60 kB │ gzip: 98.60 kB │ map: 839.55 kB
✓ built in 5.74s
npm notice run @qwen-code/sdk@0.1.8 build
npm notice run node scripts/build.js
npm notice run @qwen-code/qwen-code@0.19.3 npx
npm notice run 'dts-bundle-generator' --project tsconfig.build.json -o dist/index.d.ts src/index.ts
Compiling input files...
Processing src/index.ts
Writing src/index.ts -> dist/index.d.ts
Checking generated files...
[1;33mCompiler option "skipLibCheck" is disabled to properly check generated output[0m
Done in 9.09s
npm notice run @qwen-code/web-shell@0.19.3 build
npm notice run vite build && vite build --config vite.lib.config.ts && tsc -p tsconfig.lib.json
vite v5.4.21 building for production...
transforming...
✓ 2856 modules transformed.
rendering chunks...
computing gzip size...
../dist/index.html                                           1.10 kB │ gzip:   0.64 kB
../dist/assets/insert-DmRbh9Rv.svg                           4.16 kB │ gzip:   1.20 kB
../dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff             4.42 kB
../dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2            4.93 kB
../dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2            5.21 kB
../dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2            5.47 kB
../dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff             5.98 kB
../dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff             6.19 kB
../dist/assets/KaTeX_Size1-Regular-C195tn64.woff             6.50 kB
../dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2      6.91 kB
../dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2         6.91 kB
../dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf              7.59 kB
../dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff       7.66 kB
../dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff          7.72 kB
../dist/assets/default-aEtf0G7-.svg                          8.90 kB │ gzip:   2.64 kB
../dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2           9.64 kB
../dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2       10.34 kB
../dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf             10.36 kB
../dist/assets/KaTeX_Script-Regular-D5yQViql.woff           10.59 kB
../dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2         11.32 kB
../dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2            11.35 kB
../dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf             11.51 kB
../dist/assets/queue-DWpnpFgW.svg                           11.56 kB │ gzip:   2.42 kB
../dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2        12.03 kB
../dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2          12.22 kB
../dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf             12.23 kB
../dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff        12.32 kB
../dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf       12.34 kB
../dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf          12.37 kB
../dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff          13.21 kB
../dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff             13.30 kB
../dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2      13.57 kB
../dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff         14.11 kB
../dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff           14.41 kB
../dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff       16.03 kB
../dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2         16.40 kB
../dist/assets/KaTeX_Math-Italic-t53AETM-.woff2             16.44 kB
../dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf            16.65 kB
../dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2         16.78 kB
../dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2             16.99 kB
../dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff          18.67 kB
../dist/assets/KaTeX_Math-Italic-DA0__PXp.woff              18.75 kB
../dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff          19.41 kB
../dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf         19.44 kB
../dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf           19.57 kB
../dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf              19.58 kB
../dist/assets/KaTeX_Main-Italic-BMLOBm91.woff              19.68 kB
../dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf          22.36 kB
../dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf            24.50 kB
../dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2               25.32 kB
../dist/assets/KaTeX_Main-Regular-B22Nviop.woff2            26.27 kB
../dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf        27.56 kB
../dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2             28.08 kB
../dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff                29.91 kB
../dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff             30.77 kB
../dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf           31.20 kB
../dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf               31.31 kB
../dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf           32.97 kB
../dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff              33.52 kB
../dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf               33.58 kB
../dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf                 51.34 kB
../dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf              53.58 kB
../dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf               63.63 kB
../dist/assets/index-CHmzAWys.css                          181.94 kB │ gzip:  34.84 kB
../dist/assets/channel-iRo68q4Q.js                           0.11 kB │ gzip:   0.13 kB
../dist/assets/init-Gi6I4Gst.js                              0.15 kB │ gzip:   0.13 kB
../dist/assets/chunk-QZHKN3VN-aTJD3lSQ.js                    0.19 kB │ gzip:   0.16 kB
../dist/assets/chunk-55IACEB6-B7bnXNfu.js                    0.24 kB │ gzip:   0.21 kB
../dist/assets/chunk-4BX2VUAB-BkKMlwBX.js                    0.30 kB │ gzip:   0.21 kB
../dist/assets/chunk-FMBD7UC4-GHr2LN_p.js                    0.37 kB │ gzip:   0.27 kB
../dist/assets/stateDiagram-v2-BHNVJYJU-t1LRI0oY.js          0.39 kB │ gzip:   0.29 kB
../dist/assets/classDiagram-4FO5ZUOK-iHF24a8X.js             0.47 kB │ gzip:   0.32 kB
../dist/assets/classDiagram-v2-Q7XG4LA2-iHF24a8X.js          0.47 kB │ gzip:   0.32 kB
../dist/assets/chunk-2J33WTMH-mdeQVz59.js                    0.53 kB │ gzip:   0.37 kB
../dist/assets/codeowners-Bp6g37R7.js                        0.55 kB │ gzip:   0.32 kB
../dist/assets/infoDiagram-5YYISTIA-CuB8Ebua.js              0.59 kB │ gzip:   0.41 kB
../dist/assets/shellsession-C_rIy8kc.js                      0.72 kB │ gzip:   0.43 kB
../dist/assets/tsv-B_m7g4N7.js                               0.74 kB │ gzip:   0.34 kB
../dist/assets/html-derivative-CSfWNPLT.js                   0.97 kB │ gzip:   0.53 kB
../dist/assets/git-rebase-B-v9cOL2.js                        0.98 kB │ gzip:   0.44 kB
../dist/assets/qmldir-C8lEn-DE.js                            1.00 kB │ gzip:   0.45 kB
../dist/assets/fortran-fixed-form-TqA4NnZg.js                1.11 kB │ gzip:   0.54 kB
../dist/assets/ordinal-Cboi1Yqb.js                           1.19 kB │ gzip:   0.57 kB
../dist/assets/csv-B0qRVHPH.js                               1.22 kB │ gzip:   0.37 kB
../dist/assets/xsl-Dd0NUgwM.js                               1.39 kB │ gzip:   0.52 kB
../dist/assets/sparql-bYkjHRlG.js                            1.51 kB │ gzip:   0.83 kB
../dist/assets/ini-BjABl1g7.js                               1.53 kB │ gzip:   0.50 kB
../dist/assets/git-commit-i4q6IMui.js                        1.55 kB │ gzip:   0.67 kB
../dist/assets/dotenv-BjQB5zDj.js                            1.70 kB │ gzip:   0.63 kB
../dist/assets/wenyan-7A4Fjokl.js                            1.71 kB │ gzip:   1.08 kB
../dist/assets/docker-COcR7UxN.js                            1.77 kB │ gzip:   0.60 kB
../dist/assets/hxml-TIA70rKU.js                              1.83 kB │ gzip:   0.89 kB
../dist/assets/chunk-ND2GUHAM-7R91lnUx.js                    1.86 kB │ gzip:   0.82 kB
../dist/assets/desktop-DEIpsLCJ.js                           2.03 kB │ gzip:   0.79 kB
../dist/assets/edge-D5gP-w-T.js                              2.36 kB │ gzip:   0.70 kB
../dist/assets/reg-5LuOXUq_.js                               2.37 kB │ gzip:   0.71 kB
../dist/assets/berry-3xVqZejG.js                             2.45 kB │ gzip:   0.79 kB
../dist/assets/erb-BYTLMnw6.js                               2.61 kB │ gzip:   0.84 kB
../dist/assets/diff-BgYniUM_.js                              2.64 kB │ gzip:   0.74 kB
../dist/assets/gleam-B430Bg39.js                             2.69 kB │ gzip:   0.85 kB
../dist/assets/diagram-5GNKFQAL-BqGRzwSc.js                  2.75 kB │ gzip:   1.37 kB
../dist/assets/hy-BMj5Y0dO.js                                2.82 kB │ gzip:   1.19 kB
../dist/assets/json-BQoSv7ci.js                              2.92 kB │ gzip:   0.81 kB
../dist/assets/cairo--RitsXJZ.js                             2.95 kB │ gzip:   0.81 kB
../dist/assets/log-Cc5clBb7.js                               2.97 kB │ gzip:   0.88 kB
../dist/assets/jssm-P4WzXJd0.js                              2.97 kB │ gzip:   0.70 kB
../dist/assets/jsonl-DREVFZK8.js                             3.10 kB │ gzip:   0.82 kB
../dist/assets/jsonc-TU54ms6u.js                             3.20 kB │ gzip:   0.83 kB
../dist/assets/logo-IuBKFhSY.js                              3.21 kB │ gzip:   1.49 kB
../dist/assets/genie-ajMbGru0.js                             3.38 kB │ gzip:   1.21 kB
../dist/assets/po-BFLt1xDp.js                                3.38 kB │ gzip:   0.99 kB
../dist/assets/tasl-CQjiPCtT.js                              3.39 kB │ gzip:   0.88 kB
../dist/assets/vala-BFOHcciG.js                              3.40 kB │ gzip:   1.19 kB
../dist/assets/mipsasm-BC5c_5Pe.js                           3.41 kB │ gzip:   1.28 kB
../dist/assets/arc-DA7r8Ueo.js                               3.42 kB │ gzip:   1.45 kB
../dist/assets/rel-DJlmqQ1C.js                               3.43 kB │ gzip:   1.10 kB
../dist/assets/json5-w8dY5SsB.js                             3.54 kB │ gzip:   0.94 kB
../dist/assets/ssh-config-BknIz3MU.js                        3.61 kB │ gzip:   1.59 kB
../dist/assets/fluent-Dayu4EKP.js                            3.62 kB │ gzip:   0.89 kB
../dist/assets/jsonnet-BfivnA6A.js                           3.63 kB │ gzip:   1.07 kB
../dist/assets/narrat-DLbgOhZU.js                            3.69 kB │ gzip:   1.12 kB
../dist/assets/turtle-BMR_PYu6.js                            3.71 kB │ gzip:   0.98 kB
../dist/assets/splunk-Cf8iN4DR.js                            3.92 kB │ gzip:   1.67 kB
../dist/assets/glsl-DBO2IWDn.js                              3.94 kB │ gzip:   1.45 kB
../dist/assets/nextflow-B0XVJmRM.js                          3.96 kB │ gzip:   1.09 kB
../dist/assets/sdbl-BLhTXw86.js                              4.14 kB │ gzip:   2.08 kB
../dist/assets/pascal-JqZropPD.js                            4.18 kB │ gzip:   1.69 kB
../dist/assets/smalltalk-DkLiglaE.js                         4.20 kB │ gzip:   1.25 kB
../dist/assets/diagram-LMA3HP47-BRydGNW5.js                  4.24 kB │ gzip:   1.84 kB
../dist/assets/lean-XBlWyCtg.js                              4.29 kB │ gzip:   1.33 kB
../dist/assets/zenscript-HnGAYVZD.js                         4.40 kB │ gzip:   1.42 kB
../dist/assets/bicep-DHo0CJ0O.js                             4.45 kB │ gzip:   1.08 kB
../dist/assets/http-FRrOvY1W.js                              4.65 kB │ gzip:   1.14 kB
../dist/assets/polar-DKykz6zU.js                             4.68 kB │ gzip:   1.17 kB
../dist/assets/defaultLocale-DX6XiGOO.js                     4.69 kB │ gzip:   2.17 kB
../dist/assets/fennel-bCA53EVm.js                            4.82 kB │ gzip:   1.57 kB
../dist/assets/tcl-DQ1-QYvQ.js                               5.02 kB │ gzip:   1.68 kB
../dist/assets/bibtex-xW4inM5L.js                            5.08 kB │ gzip:   0.81 kB
../dist/assets/pieDiagram-4H26LBE5-Q4dTyLeF.js               5.32 kB │ gzip:   2.36 kB
../dist/assets/fish-w-ucz2PV.js                              5.39 kB │ gzip:   1.69 kB
../dist/assets/xml-e3z08dGr.js                               5.41 kB │ gzip:   1.22 kB
../dist/assets/qml-D8XfuvdV.js                               5.42 kB │ gzip:   1.39 kB
../dist/assets/zig-BVz_zdnA.js                               5.46 kB │ gzip:   1.59 kB
../dist/assets/gdresource-BHYsBjWJ.js                        5.48 kB │ gzip:   1.37 kB
../dist/assets/awk-eg146-Ew.js                               5.49 kB │ gzip:   1.38 kB
../dist/assets/dax-ClGRhx96.js                               5.53 kB │ gzip:   2.25 kB
../dist/assets/linear-CZqRdJIU.js                            5.66 kB │ gzip:   2.31 kB
../dist/assets/jinja-DGy0s7-h.js                             5.72 kB │ gzip:   1.42 kB
../dist/assets/powerquery-CSHBycmS.js                        5.93 kB │ gzip:   1.52 kB
../dist/assets/verilog-CJaU5se_.js                           5.94 kB │ gzip:   1.90 kB
../dist/assets/diagram-2AECGRRQ-CROtRy1w.js                  5.97 kB │ gzip:   2.50 kB
../dist/assets/coq-Dsg_Bt_b.js                               5.99 kB │ gzip:   2.03 kB
../dist/assets/vb-CdO5JTpU.js                                6.26 kB │ gzip:   2.35 kB
../dist/assets/red-bN70gL4F.js                               6.26 kB │ gzip:   1.60 kB
../dist/assets/shaderlab-B7qAK45m.js                         6.27 kB │ gzip:   2.10 kB
../dist/assets/min-dark-CafNBF8u.js                          6.29 kB │ gzip:   1.72 kB
../dist/assets/gdshader-SKMF96pI.js                          6.37 kB │ gzip:   1.75 kB
../dist/assets/prisma-B48N-Iqd.js                            6.39 kB │ gzip:   1.40 kB
../dist/assets/solarized-light-L9t79GZl.js                   6.48 kB │ gzip:   1.74 kB
../dist/assets/wgsl-CB0Krxn9.js                              6.49 kB │ gzip:   1.69 kB
../dist/assets/postcss-B3ZDOciz.js                           6.52 kB │ gzip:   1.93 kB
../dist/assets/toml-CB2ApiWb.js                              6.53 kB │ gzip:   1.30 kB
../dist/assets/proto-zocC4JxJ.js                             6.57 kB │ gzip:   1.42 kB
../dist/assets/talonscript-C1XDQQGZ.js                       6.71 kB │ gzip:   1.47 kB
../dist/assets/cypher-m2LEI-9-.js                            6.81 kB │ gzip:   1.83 kB
../dist/assets/solarized-dark-DXbdFlpD.js                    6.85 kB │ gzip:   1.81 kB
../dist/assets/soy-C-lX7w71.js                               6.95 kB │ gzip:   1.67 kB
../dist/assets/min-light-CTRr51gU.js                         6.97 kB │ gzip:   1.90 kB
../dist/assets/clojure-DxSadP1t.js                           7.08 kB │ gzip:   1.48 kB
../dist/assets/ara-7O62HKoU.js                               7.25 kB │ gzip:   2.11 kB
../dist/assets/hlsl-ifBTmRxC.js                              7.61 kB │ gzip:   2.24 kB
../dist/assets/riscv-QhoSD0DR.js                             7.70 kB │ gzip:   2.21 kB
../dist/assets/qss-DhMKtDLN.js                               7.82 kB │ gzip:   2.62 kB
../dist/assets/monokai-D4h5O-jR.js                           7.88 kB │ gzip:   1.92 kB
../dist/assets/dart-B9wLZaAG.js                              7.89 kB │ gzip:   1.93 kB
../dist/assets/systemd-CUnW07Te.js                           8.00 kB │ gzip:   2.56 kB
../dist/assets/regexp-DWJ3fJO_.js                            8.07 kB │ gzip:   1.46 kB
../dist/assets/haml-B2EZWmdv.js                              8.49 kB │ gzip:   1.87 kB
../dist/assets/typst-BVUVsWT6.js                             8.55 kB │ gzip:   1.70 kB
../dist/assets/plsql-LKU2TuZ1.js                             8.57 kB │ gzip:   3.03 kB
../dist/assets/vue-html-xdeiXROB.js                          8.70 kB │ gzip:   1.77 kB
../dist/assets/scheme-BJGe-b2p.js                            8.72 kB │ gzip:   2.61 kB
../dist/assets/kotlin-B5lbUyaz.js                            8.82 kB │ gzip:   2.14 kB
../dist/assets/andromeeda-C3khCPGq.js                        8.86 kB │ gzip:   2.31 kB
../dist/assets/make-Bvotw-X0.js                              9.01 kB │ gzip:   1.77 kB
../dist/assets/dark-plus-C3mMm8J8.js                         9.10 kB │ gzip:   2.10 kB
../dist/assets/slack-dark-BthQWCQV.js                        9.12 kB │ gzip:   1.98 kB
../dist/assets/ts-tags-CipyTH0X.js                           9.18 kB │ gzip:   1.24 kB
../dist/assets/plastic-3e1v2bzS.js                           9.30 kB │ gzip:   1.99 kB
../dist/assets/tex-rYs2v40G.js                               9.37 kB │ gzip:   2.97 kB
../dist/assets/sass-BJ4Li9vH.js                              9.41 kB │ gzip:   2.50 kB
../dist/assets/slack-ochin-DqwNpetd.js                       9.43 kB │ gzip:   2.11 kB
../dist/assets/jison-BqZprYcd.js                             9.72 kB │ gzip:   1.86 kB
../dist/assets/sas-BmTFh92c.js                               9.79 kB │ gzip:   4.03 kB
../dist/assets/light-plus-B7mTdjB0.js                        9.94 kB │ gzip:   2.29 kB
../dist/assets/gherkin--30QC5Em.js                          10.12 kB │ gzip:   5.02 kB
../dist/assets/stateDiagram-AJRCARHV-CA9PEBUo.js            10.36 kB │ gzip:   3.62 kB
../dist/assets/cmake-DbXoA79R.js                            10.50 kB │ gzip:   3.57 kB
../dist/assets/dream-maker-C-nORZOA.js                      10.61 kB │ gzip:   2.30 kB
../dist/assets/raku-B1bQXN8T.js                             10.61 kB │ gzip:   2.99 kB
../dist/assets/rst-4NLicBqY.js                              10.65 kB │ gzip:   2.42 kB
../dist/assets/beancount-BwXTMy5W.js                        10.76 kB │ gzip:   1.52 kB
../dist/assets/yaml-CVw76BM1.js                             10.79 kB │ gzip:   2.29 kB
../dist/assets/diagram-KO2AKTUF-CMrcEtA7.js                 10.82 kB │ gzip:   4.18 kB
../dist/assets/cadence-DNquZEk8.js                          11.03 kB │ gzip:   2.32 kB
../dist/assets/github-light-DAi9KRSo.js                     11.18 kB │ gzip:   2.52 kB
../dist/assets/elm-CmHSxxaM.js                              11.29 kB │ gzip:   2.21 kB
../dist/assets/dagre-BM42HDAG-_sgp3WuA.js                   11.40 kB │ gzip:   4.21 kB
../dist/assets/github-dark-DHJKELXO.js                      11.41 kB │ gzip:   2.56 kB
../dist/assets/prolog-BY-TUvya.js                           11.44 kB │ gzip:   3.87 kB
../dist/assets/laserwave-DUszq2jm.js                        11.50 kB │ gzip:   2.60 kB
../dist/assets/puppet-Cza_XSSt.js                           11.75 kB │ gzip:   2.23 kB
../dist/assets/hcl-HzYwdGDm.js                              11.97 kB │ gzip:   2.51 kB
../dist/assets/handlebars-BQGss363.js                       12.27 kB │ gzip:   2.39 kB
../dist/assets/hjson-T-Tgc4AT.js                            12.33 kB │ gzip:   1.68 kB
../dist/assets/vesper-BEBZ7ncR.js                           12.66 kB │ gzip:   1.98 kB
../dist/assets/luau-Du5NY7AG.js                             12.92 kB │ gzip:   3.12 kB
../dist/assets/bat-fje9CFhw.js                              12.99 kB │ gzip:   3.25 kB
../dist/assets/apache-Dn00JSTd.js                           13.21 kB │ gzip:   3.79 kB
../dist/assets/terraform-BbSNqyBO.js                        13.38 kB │ gzip:   3.11 kB
../dist/assets/vitesse-light-CVO1_9PV.js                    13.62 kB │ gzip:   3.06 kB
../dist/assets/aurora-x-D-2ljcwZ.js                         13.66 kB │ gzip:   2.30 kB
../dist/assets/vitesse-black-Bkuqu6BP.js                    13.68 kB │ gzip:   3.08 kB
../dist/assets/v-CAQ2eGtk.js                                13.74 kB │ gzip:   2.85 kB
../dist/assets/vitesse-dark-D0r3Knsf.js                     13.76 kB │ gzip:   3.08 kB
../dist/assets/synthwave-84-CbfX1IO0.js                     14.04 kB │ gzip:   2.88 kB
../dist/assets/github-light-default-D7oLnXFd.js             14.16 kB │ gzip:   3.06 kB
../dist/assets/github-light-high-contrast-BfjtVDDH.js       14.28 kB │ gzip:   3.04 kB
../dist/assets/github-dark-dimmed-DH5Ifo-i.js               14.43 kB │ gzip:   3.14 kB
../dist/assets/github-dark-default-Cuk6v7N8.js              14.44 kB │ gzip:   3.14 kB
../dist/assets/clarity-BHOwM8T6.js                          14.55 kB │ gzip:   2.48 kB
../dist/assets/actionscript-3-D_z4Izcz.js                   14.56 kB │ gzip:   2.79 kB
../dist/assets/github-dark-high-contrast-E3gJ1_iC.js        14.60 kB │ gzip:   3.10 kB
../dist/assets/pug-CM9l7STV.js                              14.89 kB │ gzip:   2.90 kB
../dist/assets/gnuplot-CM8KxXT1.js                          14.91 kB │ gzip:   3.31 kB
../dist/assets/ayu-dark-Cv9koXgw.js                         14.95 kB │ gzip:   3.09 kB
../dist/assets/nix-shcSOmrb.js                              15.55 kB │ gzip:   2.36 kB
../dist/assets/lua-CvWAzNxB.js                              15.62 kB │ gzip:   3.16 kB
../dist/assets/diagram-OG6HWLK6-D0ilgNjV.js                 15.92 kB │ gzip:   5.69 kB
../dist/assets/wasm-C6j12Q_x.js                             15.93 kB │ gzip:   2.89 kB
../dist/assets/solidity-C1w2a3ep.js                         16.23 kB │ gzip:   3.13 kB
../dist/assets/svelte-MSaWC3Je.js                           16.89 kB │ gzip:   2.96 kB
../dist/assets/purescript-Bg-kzb6g.js                       17.07 kB │ gzip:   2.64 kB
../dist/assets/kanagawa-wave-DWedfzmr.js                    17.12 kB │ gzip:   2.93 kB
../dist/assets/kanagawa-lotus-CfQXZHmo.js                   17.13 kB │ gzip:   2.94 kB
../dist/assets/kanagawa-dragon-CkXjmgJE.js                  17.13 kB │ gzip:   2.95 kB
../dist/assets/liquid-D3W5UaiH.js                           17.17 kB │ gzip:   3.08 kB
../dist/assets/cue-DtFQj3wx.js                              17.35 kB │ gzip:   2.08 kB
../dist/assets/ishikawaDiagram-YF4QCWOH-D_tyhVwh.js         17.56 kB │ gzip:   6.63 kB
../dist/assets/rust-Be6lgOlo.js                             17.60 kB │ gzip:   3.37 kB
../dist/assets/angular-html-LfdN0zeE.js                     17.66 kB │ gzip:   3.51 kB
../dist/assets/graphql-cDcHW_If.js                          18.20 kB │ gzip:   2.65 kB
../dist/assets/elixir-CLiX3zqd.js                           18.30 kB │ gzip:   3.22 kB
../dist/assets/material-theme-D5KoaKCx.js                   18.62 kB │ gzip:   3.13 kB
../dist/assets/material-theme-darker-BfHTSMKl.js            18.63 kB │ gzip:   3.12 kB
../dist/assets/material-theme-ocean-CyktbL80.js             18.63 kB │ gzip:   3.15 kB
../dist/assets/material-theme-lighter-B0m2ddpp.js           18.63 kB │ gzip:   3.13 kB
../dist/assets/material-theme-palenight-Csfq5Kiy.js         18.64 kB │ gzip:   3.14 kB
../dist/assets/gdscript-DfxzS6Rs.js                         18.65 kB │ gzip:   3.72 kB
../dist/assets/abap-DsBKuouk.js                             18.82 kB │ gzip:   6.20 kB
../dist/assets/marko-z0MBrx5-.js                            19.33 kB │ gzip:   3.21 kB
../dist/assets/groovy-DkBy-JyN.js                           19.65 kB │ gzip:   3.77 kB
../dist/assets/mdc-DB_EDNY_.js                              19.70 kB │ gzip:   6.62 kB
../dist/assets/nushell-D4Tzg5kh.js                          19.75 kB │ gzip:   4.95 kB
../dist/assets/matlab-D9-PGadD.js                           20.14 kB │ gzip:   3.85 kB
../dist/assets/move-DB_GagMm.js                             20.24 kB │ gzip:   4.03 kB
../dist/assets/glimmer-js-D-cwc0-E.js                       20.56 kB │ gzip:   2.99 kB
../dist/assets/glimmer-ts-pgjy16dm.js                       20.56 kB │ gzip:   2.99 kB
../dist/assets/kusto-mebxcVVE.js                            20.63 kB │ gzip:   4.58 kB
../dist/assets/kanban-definition-UN3LZRKU-PZUtcbPx.js       20.70 kB │ gzip:   7.23 kB
../dist/assets/snazzy-light-Bw305WKR.js                     20.77 kB │ gzip:   3.85 kB
../dist/assets/viml-m4uW47V2.js                             21.02 kB │ gzip:   7.24 kB
../dist/assets/dracula-BzJJZx-M.js                          21.07 kB │ gzip:   4.03 kB
../dist/assets/dracula-soft-BXkSAIEj.js                     21.08 kB │ gzip:   4.07 kB
../dist/assets/vue-BuYVFjOK.js                              21.48 kB │ gzip:   2.88 kB
../dist/assets/rose-pine-CmCqftbK.js                        21.76 kB │ gzip:   3.89 kB
../dist/assets/rose-pine-moon-CjDtw9vr.js                   21.77 kB │ gzip:   3.91 kB
../dist/assets/rose-pine-dawn-Ds-gbosJ.js                   21.77 kB │ gzip:   3.91 kB
../dist/assets/powershell-BIEUsx6d.js                       22.26 kB │ gzip:   4.70 kB
../dist/assets/apl-BBq3IX1j.js                              22.84 kB │ gzip:   4.18 kB
../dist/assets/twig-NC5TFiHP.js                             23.01 kB │ gzip:   4.15 kB
../dist/assets/mindmap-definition-RKZ34NQL-D_Y75ID7.js      23.36 kB │ gzip:   7.81 kB
../dist/assets/sankeyDiagram-5OEKKPKP-CHuZ_ecH.js           23.39 kB │ gzip:   8.54 kB
../dist/assets/journeyDiagram-JHISSGLW-CgCwJQNU.js          23.58 kB │ gzip:   8.31 kB
../dist/assets/nim-ZlGxZxc3.js                              23.63 kB │ gzip:   3.51 kB
../dist/assets/vhdl-DYoNaHQp.js                             23.78 kB │ gzip:   3.88 kB
../dist/assets/graph-qsFoMdT2.js                            23.94 kB │ gzip:   8.30 kB
../dist/assets/templ-dwX3ZSMB.js                            23.97 kB │ gzip:   5.40 kB
../dist/assets/astro-CqkE3fuf.js                            24.07 kB │ gzip:   7.48 kB
../dist/assets/sql-COK4E0Yg.js                              24.32 kB │ gzip:   7.70 kB
../dist/assets/one-light-PoHY5YXO.js                        25.30 kB │ gzip:   3.68 kB
../dist/assets/razor-CNLDkMZG.js                            25.81 kB │ gzip:   3.47 kB
../dist/assets/fsharp-XplgxFYe.js                           25.83 kB │ gzip:   4.23 kB
../dist/assets/wardleyDiagram-YWT4CUSO-BOn6hKss.js          26.10 kB │ gzip:   6.89 kB
../dist/assets/nord-Ddv68eIx.js                             26.72 kB │ gzip:   4.41 kB
../dist/assets/system-verilog-C7L56vO4.js                   26.77 kB │ gzip:   4.88 kB
../dist/assets/erDiagram-TEJ5UH35-2lnQeJUM.js               26.97 kB │ gzip:   9.29 kB
../dist/assets/bsl-Dgyn0ogV.js                              27.44 kB │ gzip:   8.88 kB
../dist/assets/java-xI-RfyKK.js                             27.49 kB │ gzip:   4.33 kB
../dist/assets/coffee-dyiR41kL.js                           27.75 kB │ gzip:   6.41 kB
../dist/assets/scss-C31hgJw-.js                             28.13 kB │ gzip:   4.43 kB
../dist/assets/typespec-BpWG_bgh.js                         28.19 kB │ gzip:   2.83 kB
../dist/assets/common-lisp-C7gG9l05.js                      28.50 kB │ gzip:   6.74 kB
../dist/assets/night-owl-C39BiMTA.js                        28.91 kB │ gzip:   5.18 kB
../dist/assets/julia-BBuGR-5E.js                            29.45 kB │ gzip:   5.88 kB
../dist/assets/gitGraphDiagram-PVQCEYII-HDXI-F1B.js         29.94 kB │ gzip:   8.85 kB
../dist/assets/scala-DQVVAn-B.js                            30.49 kB │ gzip:   4.30 kB
../dist/assets/applescript-Bu5BbsvL.js                      30.78 kB │ gzip:   6.38 kB
../dist/assets/requirementDiagram-4Y6WPE33-DbVDm4It.js      31.20 kB │ gzip:   9.69 kB
../dist/assets/timeline-definition-PNZ67QCA-Bhlo4WVc.js     31.36 kB │ gzip:  10.38 kB
../dist/assets/stylus-BeQkCIfX.js                           31.56 kB │ gzip:   8.14 kB
../dist/assets/mermaid-Ci6OQyBP.js                          33.06 kB │ gzip:   4.65 kB
../dist/assets/poimandres-CS3Unz2-.js                       33.49 kB │ gzip:   5.53 kB
../dist/assets/codeql-sacFqUAJ.js                           33.59 kB │ gzip:   4.00 kB
../dist/assets/one-dark-pro-GBQ2dnAY.js                     33.74 kB │ gzip:   5.53 kB
../dist/assets/crystal-DtDmRg-F.js                          33.75 kB │ gzip:   5.58 kB
../dist/assets/tokyo-night-DBQeEorK.js                      34.36 kB │ gzip:   5.99 kB
../dist/assets/quadrantDiagram-W4KKPZXB-ckw329Ft.js         34.50 kB │ gzip:  10.02 kB
../dist/assets/haxe-C5wWYbrZ.js                             35.30 kB │ gzip:   5.94 kB
../dist/assets/houston-DnULxvSX.js                          35.42 kB │ gzip:   5.80 kB
../dist/assets/nginx-D_VnBJ67.js                            35.73 kB │ gzip:   4.53 kB
../dist/assets/layout-CNYaLpI5.js                           35.84 kB │ gzip:  12.85 kB
../dist/assets/erlang-B-DoSBHF.js                           36.31 kB │ gzip:   4.43 kB
../dist/assets/r-CwjWoCRV.js                                36.87 kB │ gzip:  11.26 kB
../dist/assets/chunk-AQP2D5EJ-BQAydUNk.js                   37.55 kB │ gzip:  12.11 kB
../dist/assets/xychartDiagram-2RQKCTM6-BsP4-I_y.js          40.39 kB │ gzip:  11.48 kB
../dist/assets/cobol-PTqiYgYu.js                            40.58 kB │ gzip:  11.07 kB
../dist/assets/asm-Dhn9LcZ4.js                              40.85 kB │ gzip:   8.20 kB
../dist/assets/vennDiagram-CIIHVFJN-6xtPLsyl.js             41.83 kB │ gzip:  15.44 kB
../dist/assets/shellscript-atvbtKCR.js                      42.71 kB │ gzip:   6.35 kB
../dist/assets/d-BoXegm-a.js                                43.01 kB │ gzip:   8.35 kB
../dist/assets/haskell-BILxekzW.js                          43.21 kB │ gzip:   7.00 kB
../dist/assets/perl-CHQXSrWU.js                             44.54 kB │ gzip:   4.86 kB
../dist/assets/catppuccin-mocha-LGGdnPYs.js                 45.61 kB │ gzip:   7.76 kB
../dist/assets/catppuccin-latte-DRW-0cLl.js                 45.61 kB │ gzip:   7.77 kB
../dist/assets/catppuccin-frappe-CD_QflpE.js                45.62 kB │ gzip:   7.78 kB
../dist/assets/catppuccin-macchiato-C-_shW-Y.js             45.62 kB │ gzip:   7.77 kB
../dist/assets/apex-COJ4H7py.js                             46.81 kB │ gzip:   6.79 kB
../dist/assets/ada-727ZlQH0.js                              48.53 kB │ gzip:   6.11 kB
../dist/assets/chunk-727SXJPM-DGz8Mm6i.js                   49.06 kB │ gzip:  15.55 kB
../dist/assets/ruby-DeZ3UC14.js                             51.47 kB │ gzip:   7.12 kB
../dist/assets/go-B1SYOhNW.js                               52.41 kB │ gzip:   6.43 kB
../dist/assets/imba-bv_oIlVt.js                             53.46 kB │ gzip:  10.23 kB
../dist/assets/everforest-dark-BgDCqdQA.js                  53.75 kB │ gzip:   8.46 kB
../dist/assets/everforest-light-C8M2exoo.js                 53.75 kB │ gzip:   8.46 kB
../dist/assets/css-BPhBrDlE.js                              53.80 kB │ gzip:  13.46 kB
../dist/assets/wikitext-DCE3LsBG.js                         56.62 kB │ gzip:   4.77 kB
../dist/assets/markdown-UIAJJxZW.js                         56.99 kB │ gzip:   5.61 kB
../dist/assets/latex-C-cWTeAZ.js                            59.42 kB │ gzip:   6.01 kB
../dist/assets/stata-DorPZHa4.js                            61.01 kB │ gzip:  13.69 kB
../dist/assets/flowDiagram-I6XJVG4X-C_ZMdQiC.js             61.17 kB │ gzip:  19.24 kB
../dist/assets/html-C2L_23MC.js                             61.33 kB │ gzip:  12.05 kB
../dist/assets/ballerina-Du268qiB.js                        61.63 kB │ gzip:   8.36 kB
../dist/assets/ocaml-BNioltXt.js                            65.87 kB │ gzip:   5.19 kB
../dist/assets/ganttDiagram-6RSMTGT7-Dw9V_Ny0.js            69.29 kB │ gzip:  23.10 kB
../dist/assets/c4Diagram-AAUBKEIU-BHFjzIi4.js               69.95 kB │ gzip:  19.48 kB
../dist/assets/mojo-Tz6hzZYG.js                             72.57 kB │ gzip:  10.36 kB
../dist/assets/python-DhUJRlN_.js                           73.53 kB │ gzip:  10.44 kB
../dist/assets/c-C3t2pwGQ.js                                73.97 kB │ gzip:  10.62 kB
../dist/assets/blockDiagram-GPEHLZMM-vrtOf1kJ.js            74.92 kB │ gzip:  21.39 kB
../dist/assets/vyper-nyqBNV6O.js                            78.23 kB │ gzip:  12.05 kB
../dist/assets/cose-bilkent-S5V4N54A-BTf8t1RL.js            81.55 kB │ gzip:  22.35 kB
../dist/assets/hack-D1yCygmZ.js                             84.64 kB │ gzip:  27.44 kB
../dist/assets/csharp-D9R-vmeu.js                           87.17 kB │ gzip:  10.44 kB
../dist/assets/swift-BSxZ-RaX.js                            90.99 kB │ gzip:  14.51 kB
../dist/assets/asciidoc-BPT9niGB.js                         93.51 kB │ gzip:   7.40 kB
../dist/assets/racket-CzouJOBO.js                           97.61 kB │ gzip:  15.68 kB
../dist/assets/fortran-free-form-DKXYxT9g.js                98.19 kB │ gzip:  12.40 kB
../dist/assets/less-BfCpw3nA.js                            102.46 kB │ gzip:  15.22 kB
../dist/assets/objective-c-Deuh7S70.js                     107.79 kB │ gzip:  23.27 kB
../dist/assets/blade-a8OxSdnT.js                           108.00 kB │ gzip:  28.54 kB
../dist/assets/php-B5ebYQev.js                             113.76 kB │ gzip:  28.74 kB
../dist/assets/sequenceDiagram-3UESZ5HK-DU2YSpq-.js        117.29 kB │ gzip:  30.92 kB
../dist/assets/mdx-sdHcTMYB.js                             140.36 kB │ gzip:  23.83 kB
../dist/assets/architectureDiagram-3BPJPVTR-ZDUxPtZ2.js    149.54 kB │ gzip:  41.96 kB
../dist/assets/objective-cpp-BUEGK8hf.js                   175.60 kB │ gzip:  30.79 kB
../dist/assets/javascript-ySlJ1b_l.js                      198.03 kB │ gzip:  17.58 kB
../dist/assets/tsx-B6W0miNI.js                             198.75 kB │ gzip:  17.59 kB
../dist/assets/jsx-BAng5TT0.js                             201.01 kB │ gzip:  17.70 kB
../dist/assets/typescript-Dj6nwHGl.js                      209.02 kB │ gzip:  17.23 kB
../dist/assets/angular-ts-CKsD7JZE.js                      211.78 kB │ gzip:  17.82 kB
../dist/assets/wolfram-C3FkfJm5.js                         268.60 kB │ gzip:  77.00 kB
../dist/assets/cytoscape.esm-CUqq0XTU.js                   443.69 kB │ gzip: 141.74 kB
../dist/assets/wardley-L42UT6IY-3eozmXPf.js                615.19 kB │ gzip: 147.94 kB
../dist/assets/mermaid.core-CPW_4UEF.js                    619.27 kB │ gzip: 147.86 kB
../dist/assets/wasm-CG6Dc4jp.js                            622.34 kB │ gzip: 231.16 kB
../dist/assets/cpp-BksuvNSY.js                             697.52 kB │ gzip:  50.37 kB
../dist/assets/emacs-lisp-BX77sIaO.js                      804.67 kB │ gzip: 197.40 kB
../dist/assets/index-w6GTOHh1.js                         1,818.67 kB │ gzip: 552.44 kB

(!) Some chunks are larger than 500 kB after minification. Consider:
- Using dynamic import() to code-split the application
- Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualchunks
- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.
✓ built in 6.93s
vite v5.4.21 building for production...
transforming...
✓ 156 modules transformed.
rendering chunks...
computing gzip size...
dist/index.js  1,028.89 kB │ gzip: 245.19 kB
✓ built in 910ms
npm notice run qwen-code-vscode-ide-companion@0.19.3 build
npm notice run npm run build:dev
npm notice run qwen-code-vscode-ide-companion@0.19.3 build:dev
npm notice run npm run check-types && npm run lint && node esbuild.js
npm notice run qwen-code-vscode-ide-companion@0.19.3 check-types
npm notice run tsc --noEmit
npm notice run qwen-code-vscode-ide-companion@0.19.3 lint
npm notice run eslint src

/startdir/src/qwen-code/packages/vscode-ide-companion/src/services/settingsWriter.ts
  155:54  warning  Expected { after 'while' condition  curly
  444:61  warning  Expected { after 'if' condition     curly
  512:24  warning  Expected { after 'if' condition     curly
  586:26  warning  Expected { after 'if' condition     curly
  717:20  warning  Expected { after 'if' condition     curly

/startdir/src/qwen-code/packages/vscode-ide-companion/src/webview/handlers/AuthMessageHandler.ts
  181:37  warning  Expected { after 'if' condition  curly
  214:24  warning  Expected { after 'if' condition  curly
  264:22  warning  Expected { after 'if' condition  curly
  283:24  warning  Expected { after 'if' condition  curly
  303:37  warning  Expected { after 'if' condition  curly
  332:23  warning  Expected { after 'if' condition  curly
  338:18  warning  Expected { after 'if' condition  curly
  364:24  warning  Expected { after 'if' condition  curly
  402:28  warning  Expected { after 'if' condition  curly

/startdir/src/qwen-code/packages/vscode-ide-companion/src/webview/providers/WebViewProvider.ts
  1407:35  warning  Expected { after 'if' condition  curly

✖ 15 problems (0 errors, 15 warnings)
  0 errors and 15 warnings potentially fixable with the `--fix` option.

Browserslist: browsers data (caniuse-lite) is 8 months old. Please run:
  npx update-browserslist-db@latest
  Why you should do it regularly: https://github.com/browserslist/update-db#readme
npm notice run @qwen-code/qwen-code@0.19.3 bundle
npm notice run npm run generate && node esbuild.config.js && node scripts/copy_bundle_assets.js
npm notice run @qwen-code/qwen-code@0.19.3 generate
npm notice run node scripts/generate-git-commit-info.js
Copied sandbox profiles to dist/
Copying vendor directory...
Copied vendor directory to dist/
Copied bundled skills to dist/bundled/
Copied docs/users/ to dist/bundled/qc-helper/docs/
Copied builtin locales to dist/locales/
Copied extension examples to dist/examples/
Copied Web Shell UI to dist/web-shell/

✅ All bundle assets copied to dist/
npm notice
npm notice 📦  @qwen-code/qwen-code@0.19.3
npm notice Tarball Contents
npm notice 11.4kB LICENSE
npm notice 9.5kB README.md
npm notice 8.8kB dist/bundled/batch/SKILL.md
npm notice 20.1kB dist/bundled/extension-creator/SKILL.md
npm notice 7.3kB dist/bundled/loop/SKILL.md
npm notice 3.8kB dist/bundled/loop/SKILL.test.ts
npm notice 4.6kB dist/bundled/new-app/SKILL.md
npm notice 931B dist/bundled/qc-helper/docs/_meta.ts
npm notice 14.9kB dist/bundled/qc-helper/docs/common-workflow.md
npm notice 205B dist/bundled/qc-helper/docs/configuration/_meta.ts
npm notice 18.2kB dist/bundled/qc-helper/docs/configuration/auth.md
npm notice 35.8kB dist/bundled/qc-helper/docs/configuration/model-providers.md
npm notice 3.0kB dist/bundled/qc-helper/docs/configuration/qwen-ignore.md
npm notice 178.4kB dist/bundled/qc-helper/docs/configuration/settings.md
npm notice 10.3kB dist/bundled/qc-helper/docs/configuration/themes.md
npm notice 3.3kB dist/bundled/qc-helper/docs/configuration/trusted-folders.md
npm notice 169B dist/bundled/qc-helper/docs/extension/_meta.ts
npm notice 10.3kB dist/bundled/qc-helper/docs/extension/extension-releasing.md
npm notice 9.3kB dist/bundled/qc-helper/docs/extension/getting-started-extensions.md
npm notice 18.5kB dist/bundled/qc-helper/docs/extension/introduction.md
npm notice 782B dist/bundled/qc-helper/docs/features/_meta.ts
npm notice 14.7kB dist/bundled/qc-helper/docs/features/approval-mode.md
npm notice 12.4kB dist/bundled/qc-helper/docs/features/arena.md
npm notice 13.0kB dist/bundled/qc-helper/docs/features/auto-mode.md
npm notice 173B dist/bundled/qc-helper/docs/features/channels/_meta.ts
npm notice 5.8kB dist/bundled/qc-helper/docs/features/channels/dingtalk.md
npm notice 6.7kB dist/bundled/qc-helper/docs/features/channels/feishu.md
npm notice 15.7kB dist/bundled/qc-helper/docs/features/channels/overview.md
npm notice 3.5kB dist/bundled/qc-helper/docs/features/channels/plugins.md
npm notice 7.9kB dist/bundled/qc-helper/docs/features/channels/qqbot.md
npm notice 4.8kB dist/bundled/qc-helper/docs/features/channels/telegram.md
npm notice 4.5kB dist/bundled/qc-helper/docs/features/channels/weixin.md
npm notice 16.5kB dist/bundled/qc-helper/docs/features/code-review.md
npm notice 46.2kB dist/bundled/qc-helper/docs/features/commands.md
npm notice 22.7kB dist/bundled/qc-helper/docs/features/dual-output.md
npm notice 5.4kB dist/bundled/qc-helper/docs/features/followup-suggestions.md
npm notice 19.8kB dist/bundled/qc-helper/docs/features/headless.md
npm notice 41.0kB dist/bundled/qc-helper/docs/features/hooks.md
npm notice 8.5kB dist/bundled/qc-helper/docs/features/language.md
npm notice 15.7kB dist/bundled/qc-helper/docs/features/lsp.md
npm notice 8.6kB dist/bundled/qc-helper/docs/features/markdown-rendering.md
npm notice 23.7kB dist/bundled/qc-helper/docs/features/mcp.md
npm notice 11.4kB dist/bundled/qc-helper/docs/features/memory.md
npm notice 8.4kB dist/bundled/qc-helper/docs/features/sandbox.md
npm notice 7.1kB dist/bundled/qc-helper/docs/features/scheduled-tasks.md
npm notice 10.5kB dist/bundled/qc-helper/docs/features/skills.md
npm notice 23.8kB dist/bundled/qc-helper/docs/features/status-line.md
npm notice 16.7kB dist/bundled/qc-helper/docs/features/structured-output.md
npm notice 27.2kB dist/bundled/qc-helper/docs/features/sub-agents.md
npm notice 2.3kB dist/bundled/qc-helper/docs/features/tips.md
npm notice 1.4kB dist/bundled/qc-helper/docs/features/token-caching.md
npm notice 10.3kB dist/bundled/qc-helper/docs/features/tool-use-summaries.md
npm notice 22.1kB dist/bundled/qc-helper/docs/features/worktree.md
npm notice 103B dist/bundled/qc-helper/docs/ide-integration/_meta.ts
npm notice 10.2kB dist/bundled/qc-helper/docs/ide-integration/ide-companion-spec.md
npm notice 7.9kB dist/bundled/qc-helper/docs/ide-integration/ide-integration.md
npm notice 12.8kB dist/bundled/qc-helper/docs/integration-github-action.md
npm notice 2.6kB dist/bundled/qc-helper/docs/integration-jetbrains.md
npm notice 1.5kB dist/bundled/qc-helper/docs/integration-vscode.md
npm notice 2.3kB dist/bundled/qc-helper/docs/integration-zed.md
npm notice 4.9kB dist/bundled/qc-helper/docs/overview.md
npm notice 9.0kB dist/bundled/qc-helper/docs/quickstart.md
npm notice 13.8kB dist/bundled/qc-helper/docs/qwen-serve-deploy-local.md
npm notice 77.8kB dist/bundled/qc-helper/docs/qwen-serve.md
npm notice 66B dist/bundled/qc-helper/docs/reference/_meta.ts
npm notice 13.2kB dist/bundled/qc-helper/docs/reference/keyboard-shortcuts.md
npm notice 122B dist/bundled/qc-helper/docs/support/_meta.ts
npm notice 8.1kB dist/bundled/qc-helper/docs/support/tos-privacy.md
npm notice 11.1kB dist/bundled/qc-helper/docs/support/troubleshooting.md
npm notice 1.8kB dist/bundled/qc-helper/docs/support/Uninstall.md
npm notice 10.8kB dist/bundled/qc-helper/SKILL.md
npm notice 24.1kB dist/bundled/review/DESIGN.md
npm notice 52.4kB dist/bundled/review/SKILL.md
npm notice 5.3kB dist/bundled/simplify/SKILL.md
npm notice 12.2kB dist/bundled/stuck/SKILL.md
npm notice 372.4kB dist/chunks/acpAgent-DM7R4BPC.js
npm notice 1.7kB dist/chunks/agent-5J33WFFK.js
npm notice 1.5kB dist/chunks/agent-headless-BV2NMKGJ.js
npm notice 200.6kB dist/chunks/anthropicContentGenerator-PFITVL7Y.js
npm notice 23.9kB dist/chunks/artifact-tool-D2X7G3C3.js
npm notice 12.7kB dist/chunks/askUserQuestion-UGETICJQ.js
npm notice 1.8kB dist/chunks/bridge-TAPJVK2T.js
npm notice 120.7kB dist/chunks/ca-IUFWESZL.js
npm notice 110.8kB dist/chunks/chunk-2AN4ZN7X.js
npm notice 4.6kB dist/chunks/chunk-2MPVVENX.js
npm notice 953B dist/chunks/chunk-2PSWA5ID.js
npm notice 50.6kB dist/chunks/chunk-3GONHQOA.js
npm notice 67.9kB dist/chunks/chunk-3HX5LZ6R.js
npm notice 91.3kB dist/chunks/chunk-3PJXIDKI.js
npm notice 233.0kB dist/chunks/chunk-4CGOWHKM.js
npm notice 181.7kB dist/chunks/chunk-4EFJCW6G.js
npm notice 1.2kB dist/chunks/chunk-5DWXLGOM.js
npm notice 1.8kB dist/chunks/chunk-5GOVVXEV.js
npm notice 129.5kB dist/chunks/chunk-5IFG2VC4.js
npm notice 260.8kB dist/chunks/chunk-7RYW5LQV.js
npm notice 8.3kB dist/chunks/chunk-22IFUCVR.js
npm notice 3.8kB dist/chunks/chunk-37PWGUFM.js
npm notice 1.2MB dist/chunks/chunk-55ZMG67I.js
npm notice 3.1kB dist/chunks/chunk-64WXLC72.js
npm notice 12.6kB dist/chunks/chunk-3227DZO4.js
npm notice 770B dist/chunks/chunk-A4BMJM77.js
npm notice 12.0kB dist/chunks/chunk-ALX6BUYW.js
npm notice 939B dist/chunks/chunk-BC3C4F3Q.js
npm notice 37.5kB dist/chunks/chunk-BKXBARJZ.js
npm notice 1.1kB dist/chunks/chunk-BMFMJINR.js
npm notice 3.3kB dist/chunks/chunk-BR4QREVK.js
npm notice 2.4kB dist/chunks/chunk-BUUQ5HPX.js
npm notice 61.8kB dist/chunks/chunk-BVSVIN45.js
npm notice 35.7kB dist/chunks/chunk-BW4KCQFD.js
npm notice 601.8kB dist/chunks/chunk-BX5YO7UW.js
npm notice 175.1kB dist/chunks/chunk-CC7ZD5DN.js
npm notice 9.7kB dist/chunks/chunk-CF6BB3LT.js
npm notice 19.3kB dist/chunks/chunk-CJCKDMWO.js
npm notice 9.7kB dist/chunks/chunk-CKQA6AWF.js
npm notice 30.0kB dist/chunks/chunk-CS72A5DF.js
npm notice 9.4kB dist/chunks/chunk-DDMOU62Q.js
npm notice 555.4kB dist/chunks/chunk-EJYJYJZ2.js
npm notice 1.8kB dist/chunks/chunk-FDUYT7MN.js
npm notice 9.8kB dist/chunks/chunk-FMBPGXQR.js
npm notice 5.4MB dist/chunks/chunk-FRTQU4PB.js
npm notice 928B dist/chunks/chunk-FXGLL2HL.js
npm notice 1.5MB dist/chunks/chunk-G3I5LRKY.js
npm notice 15.7kB dist/chunks/chunk-G6U2KIMY.js
npm notice 12.9kB dist/chunks/chunk-GANV2UWW.js
npm notice 1.1kB dist/chunks/chunk-GT2FGICD.js
npm notice 1.0kB dist/chunks/chunk-H6BD2ELD.js
npm notice 8.6kB dist/chunks/chunk-HYCC3XM3.js
npm notice 85.0kB dist/chunks/chunk-I4H7PRWQ.js
npm notice 7.2kB dist/chunks/chunk-ITOGNELQ.js
npm notice 44.4kB dist/chunks/chunk-IUAZJQF3.js
npm notice 756B dist/chunks/chunk-IWKSG2AR.js
npm notice 2.5kB dist/chunks/chunk-J2S4EL5Y.js
npm notice 54.8kB dist/chunks/chunk-J37FGIOA.js
npm notice 11.5kB dist/chunks/chunk-JE5FVRPC.js
npm notice 15.6kB dist/chunks/chunk-JGE7KUMJ.js
npm notice 870.7kB dist/chunks/chunk-JKJWQVGR.js
npm notice 31.3kB dist/chunks/chunk-JOLIREYR.js
npm notice 3.4kB dist/chunks/chunk-JZSY4WP3.js
npm notice 542.0kB dist/chunks/chunk-K5PGHDBN.js
npm notice 5.0kB dist/chunks/chunk-K5XU6E4T.js
npm notice 2.2kB dist/chunks/chunk-KCEIFAG6.js
npm notice 2.9kB dist/chunks/chunk-KHDZHZMH.js
npm notice 579B dist/chunks/chunk-KHQOHEZ6.js
npm notice 4.6kB dist/chunks/chunk-KMGMKW5Q.js
npm notice 764B dist/chunks/chunk-KSPVDFE4.js
npm notice 19.3kB dist/chunks/chunk-KYMBIKIW.js
npm notice 406.6kB dist/chunks/chunk-KZ3FAO2L.js
npm notice 2.3kB dist/chunks/chunk-LD2XBG6Z.js
npm notice 3.2kB dist/chunks/chunk-LQ7TMOCE.js
npm notice 793.7kB dist/chunks/chunk-M2U5NM24.js
npm notice 5.7kB dist/chunks/chunk-M7QJ5VI2.js
npm notice 78.0kB dist/chunks/chunk-MFKSOJ3X.js
npm notice 706B dist/chunks/chunk-MLZQVCF3.js
npm notice 671B dist/chunks/chunk-MRO43B25.js
npm notice 29.4kB dist/chunks/chunk-MY4OKIQC.js
npm notice 14.7kB dist/chunks/chunk-NDOC6M5S.js
npm notice 14.3kB dist/chunks/chunk-NL4C3H6C.js
npm notice 5.5kB dist/chunks/chunk-O2VBQ3Y2.js
npm notice 565B dist/chunks/chunk-OFEVLU4C.js
npm notice 11.9kB dist/chunks/chunk-OFT6YGAC.js
npm notice 633.7kB dist/chunks/chunk-OIZIMP5V.js
npm notice 10.5kB dist/chunks/chunk-OMX7CUOE.js
npm notice 38.3kB dist/chunks/chunk-OTC2IDVF.js
npm notice 93.2kB dist/chunks/chunk-P3MYAZBY.js
npm notice 8.6kB dist/chunks/chunk-P6PMSDNN.js
npm notice 353B dist/chunks/chunk-P7M4GA57.js
npm notice 3.1kB dist/chunks/chunk-PQS2MRCN.js
npm notice 29.6kB dist/chunks/chunk-PVGYFFLJ.js
npm notice 369B dist/chunks/chunk-QBZ22PQX.js
npm notice 9.8kB dist/chunks/chunk-QCL5A3CH.js
npm notice 21.5kB dist/chunks/chunk-QI7GOGJR.js
npm notice 19.0kB dist/chunks/chunk-QLDPRILK.js
npm notice 20.2kB dist/chunks/chunk-QN5NZ3UQ.js
npm notice 496B dist/chunks/chunk-QQDPRDVW.js
npm notice 376.1kB dist/chunks/chunk-QSCUMCFH.js
npm notice 4.3kB dist/chunks/chunk-QYUE6W3T.js
npm notice 262B dist/chunks/chunk-R2BXK7SX.js
npm notice 2.8MB dist/chunks/chunk-R4GGQ7TB.js
npm notice 9.7kB dist/chunks/chunk-RD6YJJJ6.js
npm notice 259B dist/chunks/chunk-RKIZXJMB.js
npm notice 2.5kB dist/chunks/chunk-RRVGUXU5.js
npm notice 433.3kB dist/chunks/chunk-RYLJU2DY.js
npm notice 34.3kB dist/chunks/chunk-S7AKE7HL.js
npm notice 4.6kB dist/chunks/chunk-SBBN4BWR.js
npm notice 14.5kB dist/chunks/chunk-SKAZWEV5.js
npm notice 2.0kB dist/chunks/chunk-SKQZZVAV.js
npm notice 723B dist/chunks/chunk-SMXULRAN.js
npm notice 727.4kB dist/chunks/chunk-TERL2NBH.js
npm notice 430B dist/chunks/chunk-TLRYABYP.js
npm notice 2.7kB dist/chunks/chunk-TTI4AO4U.js
npm notice 815.0kB dist/chunks/chunk-U3KSMM7G.js
npm notice 78.6kB dist/chunks/chunk-UFC57OYT.js
npm notice 46.8kB dist/chunks/chunk-UO5GVXQE.js
npm notice 312.5kB dist/chunks/chunk-UUIVNMJB.js
npm notice 3.4kB dist/chunks/chunk-UWCTAVOD.js
npm notice 33.9kB dist/chunks/chunk-UX4SGCGN.js
npm notice 16.0kB dist/chunks/chunk-V256PQI4.js
npm notice 10.1kB dist/chunks/chunk-VRUV32XG.js
npm notice 20.7kB dist/chunks/chunk-VVLOGDB6.js
npm notice 13.5kB dist/chunks/chunk-WKKEODNI.js
npm notice 6.7kB dist/chunks/chunk-X6L4HUD2.js
npm notice 22.2kB dist/chunks/chunk-X7OER5JM.js
npm notice 7.2kB dist/chunks/chunk-XJYUPHRC.js
npm notice 11.3kB dist/chunks/chunk-XM4PA4OX.js
npm notice 4.8kB dist/chunks/chunk-Y6YMRS3U.js
npm notice 779B dist/chunks/chunk-Y6Z2O3WR.js
npm notice 18.3kB dist/chunks/chunk-YJWNDAM6.js
npm notice 61.0kB dist/chunks/chunk-Z2Z3GUXZ.js
npm notice 18.7kB dist/chunks/chunk-ZERZSAZL.js
npm notice 8.1kB dist/chunks/chunk-ZP6UKOPB.js
npm notice 1.5kB dist/chunks/chunk-ZTQ26VBE.js
npm notice 6.5kB dist/chunks/chunk-ZWLCYITF.js
npm notice 90.4kB dist/chunks/computer-use-IAMA4T3E.js
npm notice 1.7kB dist/chunks/contextCommand-BBUIE5TJ.js
npm notice 8.1kB dist/chunks/cron-create-SKEY55RG.js
npm notice 2.9kB dist/chunks/cron-delete-I3NAT32Z.js
npm notice 4.0kB dist/chunks/cron-list-6XRRL6TH.js
npm notice 1.9kB dist/chunks/daemon-status-provider-E2U3ENI6.js
npm notice 123.8kB dist/chunks/de-EOW5PVHF.js
npm notice 747.0kB dist/chunks/devtools-FM6GJPYG.js
npm notice 258B dist/chunks/dist-63IS3ZMI.js
npm notice 160.7kB dist/chunks/dist-663NZ6MI.js
npm notice 497.6kB dist/chunks/dist-J37VXPLD.js
npm notice 4.9MB dist/chunks/dist-LB6OGPVM.js
npm notice 21.8kB dist/chunks/dist-NHEYYB2B.js
npm notice 72.6kB dist/chunks/dist-PQPZ5Q4N.js
npm notice 1.7kB dist/chunks/earlyInputCapture-EW6XVPEN.js
npm notice 33.2kB dist/chunks/edit-TY27ZGCZ.js
npm notice 140.3kB dist/chunks/en-HPWEJBTR.js
npm notice 8.7kB dist/chunks/enter-worktree-FLNYO6WW.js
npm notice 6.3kB dist/chunks/enterPlanMode-225WXIAE.js
npm notice 1.9kB dist/chunks/errors-3A7CJOK7.js
npm notice 18.1kB dist/chunks/exit-worktree-KV5F4ZDC.js
npm notice 28.7kB dist/chunks/exitPlanMode-NSZCSJ6P.js
npm notice 14.5kB dist/chunks/fast-path-3PUH6LX3.js
npm notice 556B dist/chunks/fast-path-settings-OAGU3X5H.js
npm notice 4.8kB dist/chunks/fileFromPath-IBEHA3CO.js
npm notice 127.4kB dist/chunks/fr-BN5NKSAC.js
npm notice 90.5kB dist/chunks/gemini-TGDEXHJX.js
npm notice 7.9kB dist/chunks/geminiContentGenerator-XV6SV6CD.js
npm notice 1.5kB dist/chunks/getMachineId-bsd-4CASPIU4.js
npm notice 1.5kB dist/chunks/getMachineId-darwin-HPQPEMZR.js
npm notice 1.3kB dist/chunks/getMachineId-linux-AUARKYHL.js
npm notice 1.0kB dist/chunks/getMachineId-unsupported-S32ZDA2T.js
npm notice 1.7kB dist/chunks/getMachineId-win-4EFLHYIJ.js
npm notice 10.9kB dist/chunks/glob-NXXPEZN2.js
npm notice 21.9kB dist/chunks/grep-5FOUGNRA.js
npm notice 1.6kB dist/chunks/headlessSafetyWarnings-XMQYUD3D.js
npm notice 1.7kB dist/chunks/initializer-LUGSTHIE.js
npm notice 170.0kB dist/chunks/ja-7DEUB2TS.js
npm notice 270B dist/chunks/keychain-token-storage-YLMDLKXT.js
npm notice 382B dist/chunks/kittyProtocolDetector-OJRCJLIU.js
npm notice 1.8kB dist/chunks/list-MNB5NKFH.js
npm notice 1.7kB dist/chunks/loadedSettingsAdapter-RDC5KR7V.js
npm notice 6.7kB dist/chunks/loop-wakeup-CITGGQHA.js
npm notice 1.5MB dist/chunks/lowlight-FYAAUU5J.js
npm notice 9.4kB dist/chunks/ls-R5WP4BGZ.js
npm notice 35.5kB dist/chunks/lsp-GSICJMMW.js
npm notice 1.8kB dist/chunks/MaxSizedBox-M6JOIFYI.js
npm notice 21.5kB dist/chunks/monitor-GUISQJON.js
npm notice 12.1kB dist/chunks/multipart-parser-AJ4WASWR.js
npm notice 2.8kB dist/chunks/nonInteractiveCli-7GLZF5TR.js
npm notice 27.6kB dist/chunks/notebook-edit-BZOBLSX4.js
npm notice 1.5kB dist/chunks/openaiContentGenerator-3NMKQ6OV.js
npm notice 123.2kB dist/chunks/pt-TNZRNLQB.js
npm notice 7.1kB dist/chunks/qwenContentGenerator-7JOW24TZ.js
npm notice 1.2kB dist/chunks/qwenOAuth2-AG3PFFLZ.js
npm notice 764B dist/chunks/read-file-66QQ3LAM.js
npm notice 6.4kB dist/chunks/read-mcp-resource-DQQW7H7T.js
npm notice 171.4kB dist/chunks/read-package-up-ER5OJUGP.js
npm notice 1.5kB dist/chunks/ripGrep-DI4467XM.js
npm notice 299.9kB dist/chunks/ru-NIAUBKCN.js
npm notice 71.3kB dist/chunks/run-qwen-serve-SZQSII7T.js
npm notice 11.1kB dist/chunks/scheduler-RIBESRJW.js
npm notice 9.6kB dist/chunks/send-message-EE4TWKVU.js
npm notice 1.8kB dist/chunks/serve-AMSNPTEQ.js
npm notice 487.1kB dist/chunks/server-KTAP34OR.js
npm notice 72.2kB dist/chunks/session-6PKOHKDB.js
npm notice 2.8kB dist/chunks/settings-GB3VX5GM.js
npm notice 1.7kB dist/chunks/shell-U3OR5FSV.js
npm notice 17.3kB dist/chunks/skill-NLWDX2AM.js
npm notice 1.8kB dist/chunks/spawnChannel-2SDMA2GM.js
npm notice 59.9kB dist/chunks/src-2U3HPJAA.js
npm notice 48.9kB dist/chunks/src-7XL4G4DC.js
npm notice 6.1kB dist/chunks/StandaloneSessionPicker-PP2IJ55T.js
npm notice 1.8MB dist/chunks/startInteractiveUI-3KVR5B6R.js
npm notice 368B dist/chunks/syntheticOutput-T5YHQ6S2.js
npm notice 492B dist/chunks/task-create-BLY7RHXX.js
npm notice 4.1kB dist/chunks/task-list-3QUYNVYR.js
npm notice 7.3kB dist/chunks/task-stop-U4RATK2V.js
npm notice 12.6kB dist/chunks/task-update-U54O7KJX.js
npm notice 12.7kB dist/chunks/team-create-QDEBI7QJ.js
npm notice 2.9kB dist/chunks/team-delete-LKBYPASD.js
npm notice 1.6kB dist/chunks/theme-manager-5VHMD34K.js
npm notice 21.4kB dist/chunks/todoWrite-OYXKTVYN.js
npm notice 15.8kB dist/chunks/tool-search-LZ667UVG.js
npm notice 1.9MB dist/chunks/tree-sitter-bash-EZ4S5QRV.js
npm notice 254.7kB dist/chunks/tree-sitter-G7JNPPOS.js
npm notice 2.0kB dist/chunks/trustedFolders-JYUBGRVC.js
npm notice 338B dist/chunks/types-QX5C3CHJ.js
npm notice 5.0kB dist/chunks/validateNonInterActiveAuth-R3BIAO7M.js
npm notice 260.4kB dist/chunks/web-fetch-EEB5LZYU.js
npm notice 88.1kB dist/chunks/workflow-GIJJD7I7.js
npm notice 1.8kB dist/chunks/workspace-providers-status-BDY64EJW.js
npm notice 2.1kB dist/chunks/workspace-service-2TVYYE7K.js
npm notice 18.1kB dist/chunks/write-file-IDOEIDE5.js
npm notice 173.4kB dist/chunks/zh-5EUYXASN.js
npm notice 164.1kB dist/chunks/zh-TW-TR3XYGE5.js
npm notice 3.5kB dist/cli.js
npm notice 2.4kB dist/examples/agent/agents/diary.md
npm notice 122B dist/examples/agent/qwen-extension.json
npm notice 75B dist/examples/commands/commands/fs/grep-code.md
npm notice 129B dist/examples/commands/qwen-extension.json
npm notice 137B dist/examples/context/qwen-extension.json
npm notice 670B dist/examples/context/QWEN.md
npm notice 1.4kB dist/examples/mcp-server/example.ts
npm notice 380B dist/examples/mcp-server/package.json
npm notice 440B dist/examples/mcp-server/qwen-extension.json
npm notice 290B dist/examples/mcp-server/tsconfig.json
npm notice 119B dist/examples/skills/qwen-extension.json
npm notice 1.9kB dist/examples/skills/skills/synonyms/SKILL.md
npm notice 2.4kB dist/examples/starter/agents/diary.md
npm notice 378B dist/examples/starter/commands/writing/polish.md
npm notice 1.8kB dist/examples/starter/example.ts
npm notice 420B dist/examples/starter/package.json
npm notice 250B dist/examples/starter/qwen-extension.json
npm notice 1.2kB dist/examples/starter/QWEN.md
npm notice 2.5kB dist/examples/starter/README.md
npm notice 1.9kB dist/examples/starter/skills/synonyms/SKILL.md
npm notice 290B dist/examples/starter/tsconfig.json
npm notice 28.4kB dist/fzfWorker.js
npm notice 120.0kB dist/locales/ca.js
npm notice 123.9kB dist/locales/de.js
npm notice 141.6kB dist/locales/en.js
npm notice 125.8kB dist/locales/fr.js
npm notice 120.7kB dist/locales/ja.js
npm notice 121.5kB dist/locales/pt.js
npm notice 155.1kB dist/locales/ru.js
npm notice 125.0kB dist/locales/zh-TW.js
npm notice 134.4kB dist/locales/zh.js
npm notice 1.0kB dist/sandbox-macos-permissive-closed.sb
npm notice 899B dist/sandbox-macos-permissive-open.sb
npm notice 1.3kB dist/sandbox-macos-permissive-proxied.sb
npm notice 3.3kB dist/sandbox-macos-restrictive-closed.sb
npm notice 3.4kB dist/sandbox-macos-restrictive-open.sb
npm notice 3.6kB dist/sandbox-macos-restrictive-proxied.sb
npm notice 4.5MB dist/vendor/ripgrep/arm64-darwin/rg
npm notice 4.8MB dist/vendor/ripgrep/arm64-linux/rg
npm notice 126B dist/vendor/ripgrep/COPYING
npm notice 4.7MB dist/vendor/ripgrep/x64-darwin/rg
npm notice 5.7MB dist/vendor/ripgrep/x64-linux/rg
npm notice 5.4MB dist/vendor/ripgrep/x64-win32/rg.exe
npm notice 1.4MB dist/vendor/tree-sitter/tree-sitter-bash.wasm
npm notice 190.8kB dist/vendor/tree-sitter/tree-sitter.wasm
npm notice 18.8kB dist/web-shell/assets/abap-DsBKuouk.js
npm notice 14.6kB dist/web-shell/assets/actionscript-3-D_z4Izcz.js
npm notice 48.5kB dist/web-shell/assets/ada-727ZlQH0.js
npm notice 8.9kB dist/web-shell/assets/andromeeda-C3khCPGq.js
npm notice 17.7kB dist/web-shell/assets/angular-html-LfdN0zeE.js
npm notice 211.8kB dist/web-shell/assets/angular-ts-CKsD7JZE.js
npm notice 13.2kB dist/web-shell/assets/apache-Dn00JSTd.js
npm notice 46.8kB dist/web-shell/assets/apex-COJ4H7py.js
npm notice 24.2kB dist/web-shell/assets/apl-BBq3IX1j.js
npm notice 30.8kB dist/web-shell/assets/applescript-Bu5BbsvL.js
npm notice 7.2kB dist/web-shell/assets/ara-7O62HKoU.js
npm notice 3.4kB dist/web-shell/assets/arc-DA7r8Ueo.js
npm notice 149.5kB dist/web-shell/assets/architectureDiagram-3BPJPVTR-ZDUxPtZ2.js
npm notice 93.5kB dist/web-shell/assets/asciidoc-BPT9niGB.js
npm notice 40.9kB dist/web-shell/assets/asm-Dhn9LcZ4.js
npm notice 24.1kB dist/web-shell/assets/astro-CqkE3fuf.js
npm notice 13.7kB dist/web-shell/assets/aurora-x-D-2ljcwZ.js
npm notice 5.5kB dist/web-shell/assets/awk-eg146-Ew.js
npm notice 14.9kB dist/web-shell/assets/ayu-dark-Cv9koXgw.js
npm notice 61.6kB dist/web-shell/assets/ballerina-Du268qiB.js
npm notice 13.0kB dist/web-shell/assets/bat-fje9CFhw.js
npm notice 10.8kB dist/web-shell/assets/beancount-BwXTMy5W.js
npm notice 2.4kB dist/web-shell/assets/berry-3xVqZejG.js
npm notice 5.1kB dist/web-shell/assets/bibtex-xW4inM5L.js
npm notice 4.5kB dist/web-shell/assets/bicep-DHo0CJ0O.js
npm notice 108.0kB dist/web-shell/assets/blade-a8OxSdnT.js
npm notice 74.9kB dist/web-shell/assets/blockDiagram-GPEHLZMM-vrtOf1kJ.js
npm notice 38.1kB dist/web-shell/assets/bsl-Dgyn0ogV.js
npm notice 74.0kB dist/web-shell/assets/c-C3t2pwGQ.js
npm notice 70.0kB dist/web-shell/assets/c4Diagram-AAUBKEIU-BHFjzIi4.js
npm notice 11.0kB dist/web-shell/assets/cadence-DNquZEk8.js
npm notice 3.0kB dist/web-shell/assets/cairo--RitsXJZ.js
npm notice 45.6kB dist/web-shell/assets/catppuccin-frappe-CD_QflpE.js
npm notice 45.6kB dist/web-shell/assets/catppuccin-latte-DRW-0cLl.js
npm notice 45.6kB dist/web-shell/assets/catppuccin-macchiato-C-_shW-Y.js
npm notice 45.6kB dist/web-shell/assets/catppuccin-mocha-LGGdnPYs.js
npm notice 113B dist/web-shell/assets/channel-iRo68q4Q.js
npm notice 532B dist/web-shell/assets/chunk-2J33WTMH-mdeQVz59.js
npm notice 297B dist/web-shell/assets/chunk-4BX2VUAB-BkKMlwBX.js
npm notice 235B dist/web-shell/assets/chunk-55IACEB6-B7bnXNfu.js
npm notice 49.1kB dist/web-shell/assets/chunk-727SXJPM-DGz8Mm6i.js
npm notice 37.6kB dist/web-shell/assets/chunk-AQP2D5EJ-BQAydUNk.js
npm notice 366B dist/web-shell/assets/chunk-FMBD7UC4-GHr2LN_p.js
npm notice 1.9kB dist/web-shell/assets/chunk-ND2GUHAM-7R91lnUx.js
npm notice 193B dist/web-shell/assets/chunk-QZHKN3VN-aTJD3lSQ.js
npm notice 14.6kB dist/web-shell/assets/clarity-BHOwM8T6.js
npm notice 467B dist/web-shell/assets/classDiagram-4FO5ZUOK-iHF24a8X.js
npm notice 467B dist/web-shell/assets/classDiagram-v2-Q7XG4LA2-iHF24a8X.js
npm notice 7.1kB dist/web-shell/assets/clojure-DxSadP1t.js
npm notice 10.5kB dist/web-shell/assets/cmake-DbXoA79R.js
npm notice 40.6kB dist/web-shell/assets/cobol-PTqiYgYu.js
npm notice 547B dist/web-shell/assets/codeowners-Bp6g37R7.js
npm notice 33.6kB dist/web-shell/assets/codeql-sacFqUAJ.js
npm notice 27.7kB dist/web-shell/assets/coffee-dyiR41kL.js
npm notice 28.5kB dist/web-shell/assets/common-lisp-C7gG9l05.js
npm notice 6.0kB dist/web-shell/assets/coq-Dsg_Bt_b.js
npm notice 81.5kB dist/web-shell/assets/cose-bilkent-S5V4N54A-BTf8t1RL.js
npm notice 697.5kB dist/web-shell/assets/cpp-BksuvNSY.js
npm notice 33.7kB dist/web-shell/assets/crystal-DtDmRg-F.js
npm notice 87.2kB dist/web-shell/assets/csharp-D9R-vmeu.js
npm notice 53.8kB dist/web-shell/assets/css-BPhBrDlE.js
npm notice 1.2kB dist/web-shell/assets/csv-B0qRVHPH.js
npm notice 17.3kB dist/web-shell/assets/cue-DtFQj3wx.js
npm notice 6.8kB dist/web-shell/assets/cypher-m2LEI-9-.js
npm notice 443.7kB dist/web-shell/assets/cytoscape.esm-CUqq0XTU.js
npm notice 43.0kB dist/web-shell/assets/d-BoXegm-a.js
npm notice 11.4kB dist/web-shell/assets/dagre-BM42HDAG-_sgp3WuA.js
npm notice 9.1kB dist/web-shell/assets/dark-plus-C3mMm8J8.js
npm notice 7.9kB dist/web-shell/assets/dart-B9wLZaAG.js
npm notice 5.5kB dist/web-shell/assets/dax-ClGRhx96.js
npm notice 8.9kB dist/web-shell/assets/default-aEtf0G7-.svg
npm notice 4.7kB dist/web-shell/assets/defaultLocale-DX6XiGOO.js
npm notice 2.0kB dist/web-shell/assets/desktop-DEIpsLCJ.js
npm notice 6.0kB dist/web-shell/assets/diagram-2AECGRRQ-CROtRy1w.js
npm notice 2.8kB dist/web-shell/assets/diagram-5GNKFQAL-BqGRzwSc.js
npm notice 10.8kB dist/web-shell/assets/diagram-KO2AKTUF-CMrcEtA7.js
npm notice 4.2kB dist/web-shell/assets/diagram-LMA3HP47-BRydGNW5.js
npm notice 15.9kB dist/web-shell/assets/diagram-OG6HWLK6-D0ilgNjV.js
npm notice 2.6kB dist/web-shell/assets/diff-BgYniUM_.js
npm notice 1.8kB dist/web-shell/assets/docker-COcR7UxN.js
npm notice 1.7kB dist/web-shell/assets/dotenv-BjQB5zDj.js
npm notice 21.1kB dist/web-shell/assets/dracula-BzJJZx-M.js
npm notice 21.1kB dist/web-shell/assets/dracula-soft-BXkSAIEj.js
npm notice 10.6kB dist/web-shell/assets/dream-maker-C-nORZOA.js
npm notice 2.4kB dist/web-shell/assets/edge-D5gP-w-T.js
npm notice 18.3kB dist/web-shell/assets/elixir-CLiX3zqd.js
npm notice 11.3kB dist/web-shell/assets/elm-CmHSxxaM.js
npm notice 804.7kB dist/web-shell/assets/emacs-lisp-BX77sIaO.js
npm notice 2.6kB dist/web-shell/assets/erb-BYTLMnw6.js
npm notice 27.0kB dist/web-shell/assets/erDiagram-TEJ5UH35-2lnQeJUM.js
npm notice 36.3kB dist/web-shell/assets/erlang-B-DoSBHF.js
npm notice 53.7kB dist/web-shell/assets/everforest-dark-BgDCqdQA.js
npm notice 53.7kB dist/web-shell/assets/everforest-light-C8M2exoo.js
npm notice 4.8kB dist/web-shell/assets/fennel-bCA53EVm.js
npm notice 5.4kB dist/web-shell/assets/fish-w-ucz2PV.js
npm notice 61.2kB dist/web-shell/assets/flowDiagram-I6XJVG4X-C_ZMdQiC.js
npm notice 3.6kB dist/web-shell/assets/fluent-Dayu4EKP.js
npm notice 1.1kB dist/web-shell/assets/fortran-fixed-form-TqA4NnZg.js
npm notice 98.2kB dist/web-shell/assets/fortran-free-form-DKXYxT9g.js
npm notice 25.8kB dist/web-shell/assets/fsharp-XplgxFYe.js
npm notice 69.3kB dist/web-shell/assets/ganttDiagram-6RSMTGT7-Dw9V_Ny0.js
npm notice 5.5kB dist/web-shell/assets/gdresource-BHYsBjWJ.js
npm notice 18.7kB dist/web-shell/assets/gdscript-DfxzS6Rs.js
npm notice 6.4kB dist/web-shell/assets/gdshader-SKMF96pI.js
npm notice 3.4kB dist/web-shell/assets/genie-ajMbGru0.js
npm notice 12.5kB dist/web-shell/assets/gherkin--30QC5Em.js
npm notice 1.5kB dist/web-shell/assets/git-commit-i4q6IMui.js
npm notice 980B dist/web-shell/assets/git-rebase-B-v9cOL2.js
npm notice 29.9kB dist/web-shell/assets/gitGraphDiagram-PVQCEYII-HDXI-F1B.js
npm notice 14.4kB dist/web-shell/assets/github-dark-default-Cuk6v7N8.js
npm notice 11.4kB dist/web-shell/assets/github-dark-DHJKELXO.js
npm notice 14.4kB dist/web-shell/assets/github-dark-dimmed-DH5Ifo-i.js
npm notice 14.6kB dist/web-shell/assets/github-dark-high-contrast-E3gJ1_iC.js
npm notice 11.2kB dist/web-shell/assets/github-light-DAi9KRSo.js
npm notice 14.2kB dist/web-shell/assets/github-light-default-D7oLnXFd.js
npm notice 14.3kB dist/web-shell/assets/github-light-high-contrast-BfjtVDDH.js
npm notice 2.7kB dist/web-shell/assets/gleam-B430Bg39.js
npm notice 20.6kB dist/web-shell/assets/glimmer-js-D-cwc0-E.js
npm notice 20.6kB dist/web-shell/assets/glimmer-ts-pgjy16dm.js
npm notice 3.9kB dist/web-shell/assets/glsl-DBO2IWDn.js
npm notice 14.9kB dist/web-shell/assets/gnuplot-CM8KxXT1.js
npm notice 52.4kB dist/web-shell/assets/go-B1SYOhNW.js
npm notice 23.9kB dist/web-shell/assets/graph-qsFoMdT2.js
npm notice 18.2kB dist/web-shell/assets/graphql-cDcHW_If.js
npm notice 19.6kB dist/web-shell/assets/groovy-DkBy-JyN.js
npm notice 84.7kB dist/web-shell/assets/hack-D1yCygmZ.js
npm notice 8.5kB dist/web-shell/assets/haml-B2EZWmdv.js
npm notice 12.3kB dist/web-shell/assets/handlebars-BQGss363.js
npm notice 43.3kB dist/web-shell/assets/haskell-BILxekzW.js
npm notice 35.3kB dist/web-shell/assets/haxe-C5wWYbrZ.js
npm notice 12.0kB dist/web-shell/assets/hcl-HzYwdGDm.js
npm notice 12.3kB dist/web-shell/assets/hjson-T-Tgc4AT.js
npm notice 7.6kB dist/web-shell/assets/hlsl-ifBTmRxC.js
npm notice 35.4kB dist/web-shell/assets/houston-DnULxvSX.js
npm notice 61.3kB dist/web-shell/assets/html-C2L_23MC.js
npm notice 970B dist/web-shell/assets/html-derivative-CSfWNPLT.js
npm notice 4.7kB dist/web-shell/assets/http-FRrOvY1W.js
npm notice 1.8kB dist/web-shell/assets/hxml-TIA70rKU.js
npm notice 2.8kB dist/web-shell/assets/hy-BMj5Y0dO.js
npm notice 53.5kB dist/web-shell/assets/imba-bv_oIlVt.js
npm notice 181.9kB dist/web-shell/assets/index-CHmzAWys.css
npm notice 1.8MB dist/web-shell/assets/index-w6GTOHh1.js
npm notice 587B dist/web-shell/assets/infoDiagram-5YYISTIA-CuB8Ebua.js
npm notice 1.5kB dist/web-shell/assets/ini-BjABl1g7.js
npm notice 147B dist/web-shell/assets/init-Gi6I4Gst.js
npm notice 4.2kB dist/web-shell/assets/insert-DmRbh9Rv.svg
npm notice 17.6kB dist/web-shell/assets/ishikawaDiagram-YF4QCWOH-D_tyhVwh.js
npm notice 27.5kB dist/web-shell/assets/java-xI-RfyKK.js
npm notice 198.0kB dist/web-shell/assets/javascript-ySlJ1b_l.js
npm notice 5.7kB dist/web-shell/assets/jinja-DGy0s7-h.js
npm notice 9.7kB dist/web-shell/assets/jison-BqZprYcd.js
npm notice 23.6kB dist/web-shell/assets/journeyDiagram-JHISSGLW-CgCwJQNU.js
npm notice 2.9kB dist/web-shell/assets/json-BQoSv7ci.js
npm notice 3.5kB dist/web-shell/assets/json5-w8dY5SsB.js
npm notice 3.2kB dist/web-shell/assets/jsonc-TU54ms6u.js
npm notice 3.1kB dist/web-shell/assets/jsonl-DREVFZK8.js
npm notice 3.6kB dist/web-shell/assets/jsonnet-BfivnA6A.js
npm notice 3.0kB dist/web-shell/assets/jssm-P4WzXJd0.js
npm notice 201.0kB dist/web-shell/assets/jsx-BAng5TT0.js
npm notice 35.7kB dist/web-shell/assets/julia-BBuGR-5E.js
npm notice 17.1kB dist/web-shell/assets/kanagawa-dragon-CkXjmgJE.js
npm notice 17.1kB dist/web-shell/assets/kanagawa-lotus-CfQXZHmo.js
npm notice 17.1kB dist/web-shell/assets/kanagawa-wave-DWedfzmr.js
npm notice 20.7kB dist/web-shell/assets/kanban-definition-UN3LZRKU-PZUtcbPx.js
npm notice 28.1kB dist/web-shell/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2
npm notice 33.5kB dist/web-shell/assets/KaTeX_AMS-Regular-DMm9YOAa.woff
npm notice 63.6kB dist/web-shell/assets/KaTeX_AMS-Regular-DRggAlZN.ttf
npm notice 12.4kB dist/web-shell/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf
npm notice 7.7kB dist/web-shell/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff
npm notice 6.9kB dist/web-shell/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2
npm notice 7.7kB dist/web-shell/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff
npm notice 6.9kB dist/web-shell/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2
npm notice 12.3kB dist/web-shell/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf
npm notice 19.6kB dist/web-shell/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf
npm notice 13.3kB dist/web-shell/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff
npm notice 11.3kB dist/web-shell/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2
npm notice 19.6kB dist/web-shell/assets/KaTeX_Fraktur-Regular-CB_wures.ttf
npm notice 11.3kB dist/web-shell/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2
npm notice 13.2kB dist/web-shell/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff
npm notice 25.3kB dist/web-shell/assets/KaTeX_Main-Bold-Cx986IdX.woff2
npm notice 29.9kB dist/web-shell/assets/KaTeX_Main-Bold-Jm3AIy58.woff
npm notice 51.3kB dist/web-shell/assets/KaTeX_Main-Bold-waoOVXN0.ttf
npm notice 16.8kB dist/web-shell/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2
npm notice 33.0kB dist/web-shell/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf
npm notice 19.4kB dist/web-shell/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff
npm notice 33.6kB dist/web-shell/assets/KaTeX_Main-Italic-3WenGoN9.ttf
npm notice 19.7kB dist/web-shell/assets/KaTeX_Main-Italic-BMLOBm91.woff
npm notice 17.0kB dist/web-shell/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2
npm notice 26.3kB dist/web-shell/assets/KaTeX_Main-Regular-B22Nviop.woff2
npm notice 30.8kB dist/web-shell/assets/KaTeX_Main-Regular-Dr94JaBh.woff
npm notice 53.6kB dist/web-shell/assets/KaTeX_Main-Regular-ypZvNtVU.ttf
npm notice 31.2kB dist/web-shell/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf
npm notice 16.4kB dist/web-shell/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2
npm notice 18.7kB dist/web-shell/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff
npm notice 18.7kB dist/web-shell/assets/KaTeX_Math-Italic-DA0__PXp.woff
npm notice 31.3kB dist/web-shell/assets/KaTeX_Math-Italic-flOr_0UB.ttf
npm notice 16.4kB dist/web-shell/assets/KaTeX_Math-Italic-t53AETM-.woff2
npm notice 24.5kB dist/web-shell/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf
npm notice 12.2kB dist/web-shell/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2
npm notice 14.4kB dist/web-shell/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff
npm notice 12.0kB dist/web-shell/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2
npm notice 14.1kB dist/web-shell/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff
npm notice 22.4kB dist/web-shell/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf
npm notice 19.4kB dist/web-shell/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf
npm notice 12.3kB dist/web-shell/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff
npm notice 10.3kB dist/web-shell/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2
npm notice 16.6kB dist/web-shell/assets/KaTeX_Script-Regular-C5JkGWo-.ttf
npm notice 9.6kB dist/web-shell/assets/KaTeX_Script-Regular-D3wIWfF6.woff2
npm notice 10.6kB dist/web-shell/assets/KaTeX_Script-Regular-D5yQViql.woff
npm notice 6.5kB dist/web-shell/assets/KaTeX_Size1-Regular-C195tn64.woff
npm notice 12.2kB dist/web-shell/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf
npm notice 5.5kB dist/web-shell/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2
npm notice 11.5kB dist/web-shell/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf
npm notice 5.2kB dist/web-shell/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2
npm notice 6.2kB dist/web-shell/assets/KaTeX_Size2-Regular-oD1tc_U0.woff
npm notice 4.4kB dist/web-shell/assets/KaTeX_Size3-Regular-CTq5MqoE.woff
npm notice 7.6kB dist/web-shell/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf
npm notice 6.0kB dist/web-shell/assets/KaTeX_Size4-Regular-BF-4gkZK.woff
npm notice 4.9kB dist/web-shell/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2
npm notice 10.4kB dist/web-shell/assets/KaTeX_Size4-Regular-DWFBv043.ttf
npm notice 16.0kB dist/web-shell/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff
npm notice 13.6kB dist/web-shell/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2
npm notice 27.6kB dist/web-shell/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf
npm notice 8.8kB dist/web-shell/assets/kotlin-B5lbUyaz.js
npm notice 20.6kB dist/web-shell/assets/kusto-mebxcVVE.js
npm notice 11.5kB dist/web-shell/assets/laserwave-DUszq2jm.js
npm notice 59.4kB dist/web-shell/assets/latex-C-cWTeAZ.js
npm notice 35.8kB dist/web-shell/assets/layout-CNYaLpI5.js
npm notice 4.3kB dist/web-shell/assets/lean-XBlWyCtg.js
npm notice 102.5kB dist/web-shell/assets/less-BfCpw3nA.js
npm notice 9.9kB dist/web-shell/assets/light-plus-B7mTdjB0.js
npm notice 5.7kB dist/web-shell/assets/linear-CZqRdJIU.js
npm notice 17.2kB dist/web-shell/assets/liquid-D3W5UaiH.js
npm notice 3.0kB dist/web-shell/assets/log-Cc5clBb7.js
npm notice 3.2kB dist/web-shell/assets/logo-IuBKFhSY.js
npm notice 15.6kB dist/web-shell/assets/lua-CvWAzNxB.js
npm notice 12.9kB dist/web-shell/assets/luau-Du5NY7AG.js
npm notice 9.0kB dist/web-shell/assets/make-Bvotw-X0.js
npm notice 57.0kB dist/web-shell/assets/markdown-UIAJJxZW.js
npm notice 19.3kB dist/web-shell/assets/marko-z0MBrx5-.js
npm notice 18.6kB dist/web-shell/assets/material-theme-D5KoaKCx.js
npm notice 18.6kB dist/web-shell/assets/material-theme-darker-BfHTSMKl.js
npm notice 18.6kB dist/web-shell/assets/material-theme-lighter-B0m2ddpp.js
npm notice 18.6kB dist/web-shell/assets/material-theme-ocean-CyktbL80.js
npm notice 18.6kB dist/web-shell/assets/material-theme-palenight-Csfq5Kiy.js
npm notice 20.1kB dist/web-shell/assets/matlab-D9-PGadD.js
npm notice 19.7kB dist/web-shell/assets/mdc-DB_EDNY_.js
npm notice 140.4kB dist/web-shell/assets/mdx-sdHcTMYB.js
npm notice 33.1kB dist/web-shell/assets/mermaid-Ci6OQyBP.js
npm notice 619.3kB dist/web-shell/assets/mermaid.core-CPW_4UEF.js
npm notice 6.3kB dist/web-shell/assets/min-dark-CafNBF8u.js
npm notice 7.0kB dist/web-shell/assets/min-light-CTRr51gU.js
npm notice 23.4kB dist/web-shell/assets/mindmap-definition-RKZ34NQL-D_Y75ID7.js
npm notice 3.4kB dist/web-shell/assets/mipsasm-BC5c_5Pe.js
npm notice 72.6kB dist/web-shell/assets/mojo-Tz6hzZYG.js
npm notice 7.9kB dist/web-shell/assets/monokai-D4h5O-jR.js
npm notice 20.2kB dist/web-shell/assets/move-DB_GagMm.js
npm notice 3.7kB dist/web-shell/assets/narrat-DLbgOhZU.js
npm notice 4.0kB dist/web-shell/assets/nextflow-B0XVJmRM.js
npm notice 35.7kB dist/web-shell/assets/nginx-D_VnBJ67.js
npm notice 28.9kB dist/web-shell/assets/night-owl-C39BiMTA.js
npm notice 23.6kB dist/web-shell/assets/nim-ZlGxZxc3.js
npm notice 15.6kB dist/web-shell/assets/nix-shcSOmrb.js
npm notice 26.7kB dist/web-shell/assets/nord-Ddv68eIx.js
npm notice 19.7kB dist/web-shell/assets/nushell-D4Tzg5kh.js
npm notice 107.8kB dist/web-shell/assets/objective-c-Deuh7S70.js
npm notice 175.6kB dist/web-shell/assets/objective-cpp-BUEGK8hf.js
npm notice 65.9kB dist/web-shell/assets/ocaml-BNioltXt.js
npm notice 33.7kB dist/web-shell/assets/one-dark-pro-GBQ2dnAY.js
npm notice 25.3kB dist/web-shell/assets/one-light-PoHY5YXO.js
npm notice 1.2kB dist/web-shell/assets/ordinal-Cboi1Yqb.js
npm notice 4.2kB dist/web-shell/assets/pascal-JqZropPD.js
npm notice 44.5kB dist/web-shell/assets/perl-CHQXSrWU.js
npm notice 113.8kB dist/web-shell/assets/php-B5ebYQev.js
npm notice 5.3kB dist/web-shell/assets/pieDiagram-4H26LBE5-Q4dTyLeF.js
npm notice 9.3kB dist/web-shell/assets/plastic-3e1v2bzS.js
npm notice 8.6kB dist/web-shell/assets/plsql-LKU2TuZ1.js
npm notice 3.4kB dist/web-shell/assets/po-BFLt1xDp.js
npm notice 33.5kB dist/web-shell/assets/poimandres-CS3Unz2-.js
npm notice 4.7kB dist/web-shell/assets/polar-DKykz6zU.js
npm notice 6.5kB dist/web-shell/assets/postcss-B3ZDOciz.js
npm notice 5.9kB dist/web-shell/assets/powerquery-CSHBycmS.js
npm notice 22.3kB dist/web-shell/assets/powershell-BIEUsx6d.js
npm notice 6.4kB dist/web-shell/assets/prisma-B48N-Iqd.js
npm notice 11.4kB dist/web-shell/assets/prolog-BY-TUvya.js
npm notice 6.6kB dist/web-shell/assets/proto-zocC4JxJ.js
npm notice 14.9kB dist/web-shell/assets/pug-CM9l7STV.js
npm notice 11.7kB dist/web-shell/assets/puppet-Cza_XSSt.js
npm notice 17.1kB dist/web-shell/assets/purescript-Bg-kzb6g.js
npm notice 73.5kB dist/web-shell/assets/python-DhUJRlN_.js
npm notice 5.4kB dist/web-shell/assets/qml-D8XfuvdV.js
npm notice 1.0kB dist/web-shell/assets/qmldir-C8lEn-DE.js
npm notice 7.8kB dist/web-shell/assets/qss-DhMKtDLN.js
npm notice 34.5kB dist/web-shell/assets/quadrantDiagram-W4KKPZXB-ckw329Ft.js
npm notice 11.6kB dist/web-shell/assets/queue-DWpnpFgW.svg
npm notice 36.9kB dist/web-shell/assets/r-CwjWoCRV.js
npm notice 97.6kB dist/web-shell/assets/racket-CzouJOBO.js
npm notice 10.6kB dist/web-shell/assets/raku-B1bQXN8T.js
npm notice 25.8kB dist/web-shell/assets/razor-CNLDkMZG.js
npm notice 6.3kB dist/web-shell/assets/red-bN70gL4F.js
npm notice 2.4kB dist/web-shell/assets/reg-5LuOXUq_.js
npm notice 8.1kB dist/web-shell/assets/regexp-DWJ3fJO_.js
npm notice 3.4kB dist/web-shell/assets/rel-DJlmqQ1C.js
npm notice 31.2kB dist/web-shell/assets/requirementDiagram-4Y6WPE33-DbVDm4It.js
npm notice 7.7kB dist/web-shell/assets/riscv-QhoSD0DR.js
npm notice 21.8kB dist/web-shell/assets/rose-pine-CmCqftbK.js
npm notice 21.8kB dist/web-shell/assets/rose-pine-dawn-Ds-gbosJ.js
npm notice 21.8kB dist/web-shell/assets/rose-pine-moon-CjDtw9vr.js
npm notice 10.6kB dist/web-shell/assets/rst-4NLicBqY.js
npm notice 51.5kB dist/web-shell/assets/ruby-DeZ3UC14.js
npm notice 17.6kB dist/web-shell/assets/rust-Be6lgOlo.js
npm notice 23.4kB dist/web-shell/assets/sankeyDiagram-5OEKKPKP-CHuZ_ecH.js
npm notice 9.8kB dist/web-shell/assets/sas-BmTFh92c.js
npm notice 9.4kB dist/web-shell/assets/sass-BJ4Li9vH.js
npm notice 30.5kB dist/web-shell/assets/scala-DQVVAn-B.js
npm notice 8.7kB dist/web-shell/assets/scheme-BJGe-b2p.js
npm notice 28.1kB dist/web-shell/assets/scss-C31hgJw-.js
npm notice 5.1kB dist/web-shell/assets/sdbl-BLhTXw86.js
npm notice 117.3kB dist/web-shell/assets/sequenceDiagram-3UESZ5HK-DU2YSpq-.js
npm notice 6.3kB dist/web-shell/assets/shaderlab-B7qAK45m.js
npm notice 42.7kB dist/web-shell/assets/shellscript-atvbtKCR.js
npm notice 719B dist/web-shell/assets/shellsession-C_rIy8kc.js
npm notice 9.1kB dist/web-shell/assets/slack-dark-BthQWCQV.js
npm notice 9.4kB dist/web-shell/assets/slack-ochin-DqwNpetd.js
npm notice 4.2kB dist/web-shell/assets/smalltalk-DkLiglaE.js
npm notice 20.8kB dist/web-shell/assets/snazzy-light-Bw305WKR.js
npm notice 6.8kB dist/web-shell/assets/solarized-dark-DXbdFlpD.js
npm notice 6.5kB dist/web-shell/assets/solarized-light-L9t79GZl.js
npm notice 16.2kB dist/web-shell/assets/solidity-C1w2a3ep.js
npm notice 7.0kB dist/web-shell/assets/soy-C-lX7w71.js
npm notice 1.5kB dist/web-shell/assets/sparql-bYkjHRlG.js
npm notice 3.9kB dist/web-shell/assets/splunk-Cf8iN4DR.js
npm notice 24.3kB dist/web-shell/assets/sql-COK4E0Yg.js
npm notice 3.6kB dist/web-shell/assets/ssh-config-BknIz3MU.js
npm notice 61.0kB dist/web-shell/assets/stata-DorPZHa4.js
npm notice 10.4kB dist/web-shell/assets/stateDiagram-AJRCARHV-CA9PEBUo.js
npm notice 391B dist/web-shell/assets/stateDiagram-v2-BHNVJYJU-t1LRI0oY.js
npm notice 31.6kB dist/web-shell/assets/stylus-BeQkCIfX.js
npm notice 16.9kB dist/web-shell/assets/svelte-MSaWC3Je.js
npm notice 91.0kB dist/web-shell/assets/swift-BSxZ-RaX.js
npm notice 14.0kB dist/web-shell/assets/synthwave-84-CbfX1IO0.js
npm notice 26.8kB dist/web-shell/assets/system-verilog-C7L56vO4.js
npm notice 8.0kB dist/web-shell/assets/systemd-CUnW07Te.js
npm notice 6.7kB dist/web-shell/assets/talonscript-C1XDQQGZ.js
npm notice 3.4kB dist/web-shell/assets/tasl-CQjiPCtT.js
npm notice 5.0kB dist/web-shell/assets/tcl-DQ1-QYvQ.js
npm notice 24.0kB dist/web-shell/assets/templ-dwX3ZSMB.js
npm notice 13.4kB dist/web-shell/assets/terraform-BbSNqyBO.js
npm notice 9.4kB dist/web-shell/assets/tex-rYs2v40G.js
npm notice 31.4kB dist/web-shell/assets/timeline-definition-PNZ67QCA-Bhlo4WVc.js
npm notice 34.4kB dist/web-shell/assets/tokyo-night-DBQeEorK.js
npm notice 6.5kB dist/web-shell/assets/toml-CB2ApiWb.js
npm notice 9.2kB dist/web-shell/assets/ts-tags-CipyTH0X.js
npm notice 739B dist/web-shell/assets/tsv-B_m7g4N7.js
npm notice 198.8kB dist/web-shell/assets/tsx-B6W0miNI.js
npm notice 3.7kB dist/web-shell/assets/turtle-BMR_PYu6.js
npm notice 23.0kB dist/web-shell/assets/twig-NC5TFiHP.js
npm notice 209.0kB dist/web-shell/assets/typescript-Dj6nwHGl.js
npm notice 28.2kB dist/web-shell/assets/typespec-BpWG_bgh.js
npm notice 8.6kB dist/web-shell/assets/typst-BVUVsWT6.js
npm notice 13.7kB dist/web-shell/assets/v-CAQ2eGtk.js
npm notice 3.4kB dist/web-shell/assets/vala-BFOHcciG.js
npm notice 6.3kB dist/web-shell/assets/vb-CdO5JTpU.js
npm notice 41.8kB dist/web-shell/assets/vennDiagram-CIIHVFJN-6xtPLsyl.js
npm notice 5.9kB dist/web-shell/assets/verilog-CJaU5se_.js
npm notice 12.7kB dist/web-shell/assets/vesper-BEBZ7ncR.js
npm notice 23.8kB dist/web-shell/assets/vhdl-DYoNaHQp.js
npm notice 21.0kB dist/web-shell/assets/viml-m4uW47V2.js
npm notice 13.7kB dist/web-shell/assets/vitesse-black-Bkuqu6BP.js
npm notice 13.8kB dist/web-shell/assets/vitesse-dark-D0r3Knsf.js
npm notice 13.6kB dist/web-shell/assets/vitesse-light-CVO1_9PV.js
npm notice 21.5kB dist/web-shell/assets/vue-BuYVFjOK.js
npm notice 8.7kB dist/web-shell/assets/vue-html-xdeiXROB.js
npm notice 78.2kB dist/web-shell/assets/vyper-nyqBNV6O.js
npm notice 615.3kB dist/web-shell/assets/wardley-L42UT6IY-3eozmXPf.js
npm notice 26.1kB dist/web-shell/assets/wardleyDiagram-YWT4CUSO-BOn6hKss.js
npm notice 15.9kB dist/web-shell/assets/wasm-C6j12Q_x.js
npm notice 622.3kB dist/web-shell/assets/wasm-CG6Dc4jp.js
npm notice 2.2kB dist/web-shell/assets/wenyan-7A4Fjokl.js
npm notice 6.5kB dist/web-shell/assets/wgsl-CB0Krxn9.js
npm notice 56.6kB dist/web-shell/assets/wikitext-DCE3LsBG.js
npm notice 268.6kB dist/web-shell/assets/wolfram-C3FkfJm5.js
npm notice 5.4kB dist/web-shell/assets/xml-e3z08dGr.js
npm notice 1.4kB dist/web-shell/assets/xsl-Dd0NUgwM.js
npm notice 40.4kB dist/web-shell/assets/xychartDiagram-2RQKCTM6-BsP4-I_y.js
npm notice 10.8kB dist/web-shell/assets/yaml-CVw76BM1.js
npm notice 4.4kB dist/web-shell/assets/zenscript-HnGAYVZD.js
npm notice 5.5kB dist/web-shell/assets/zig-BVz_zdnA.js
npm notice 1.1kB dist/web-shell/index.html
npm notice 8.4kB package.json
npm notice 1.4kB scripts/cli-entry.js
npm notice Bundled Dependencies
npm notice dom-accessibility-api
npm notice @alcalzone/ansi-tokenize
npm notice @babel/code-frame
npm notice @babel/helper-validator-identifier
npm notice @babel/runtime
npm notice @kwsites/file-exists
npm notice @kwsites/promise-deferred
npm notice @lydell/node-pty-linux-x64
npm notice @lydell/node-pty
npm notice @testing-library/dom
npm notice @types/aria-query
npm notice ansi-escapes
npm notice ansi-regex
npm notice aria-query
npm notice auto-bind
npm notice cli-cursor
npm notice code-excerpt
npm notice convert-to-spaces
npm notice debug
npm notice dequal
npm notice environment
npm notice es-toolkit
npm notice get-east-asian-width
npm notice indent-string
npm notice ink
npm notice lz-string
npm notice mimic-fn
npm notice onetime
npm notice patch-console
npm notice picocolors
npm notice react-reconciler
npm notice restore-cursor
npm notice scheduler
npm notice stack-utils
npm notice strip-ansi
npm notice tagged-tag
npm notice terminal-size
npm notice ws
npm notice yoga-layout
npm notice ms
npm notice simple-git
npm notice Tarball Details
npm notice name: @qwen-code/qwen-code
npm notice version: 0.19.3
npm notice filename: qwen-code-qwen-code-0.19.3.tgz
npm notice package size: 24.0 MB
npm notice unpacked size: 91.7 MB
npm notice shasum: 62336f13d4eb478ce5e5da3a67ee1deeb7146501
npm notice integrity: sha512-au2E0e4q/RhUv[...]UK7u0qFf9T5Mw==
npm notice bundled deps: 41
npm notice bundled files: 0
npm notice own files: 4953
npm notice total files: 4953
npm notice
qwen-code-qwen-code-0.19.3.tgz
==> Starting check()...
npm notice run @qwen-code/acp-bridge@0.19.3 test
npm notice run vitest run --exclude=**/{qwenConnectionHandler,useAtCompletion,pid-descendants}.test.ts

 RUN  v3.2.4 /startdir/src/qwen-code/packages/acp-bridge

 ✓ src/compactionEngine.test.ts (40 tests) 11ms
 ✓ src/eventBus.test.ts (29 tests) 59ms
permissionMediator: consensus request req-1 for session sess-1 requires unanimity (votersAtIssue.size=2, default quorum=floor(M/2)+1=2); split votes will only resolve via permissionTimeoutMs (5000ms). This breadcrumb fires once per mediator lifetime; subsequent unanimity-required requests are silent.
qwen serve: permission req-1 (session sess-1) timed out after 5000ms
qwen serve: permission req-1 (session sess-1): vote rejected (designated_mismatch (voter is not the prompt originator)) by client "client_B"
a2ui: dropping command with unrecognized shape (version,noop)
 ✓ src/a2uiExtraction.test.ts (14 tests) 6ms
qwen serve: permission req-1 (session sess-1): vote rejected (designated_mismatch (voter not in consensus votersAtIssue snapshot)) by client <anonymous>
permissionMediator: consensus request req-1 for session sess-1 requires unanimity (votersAtIssue.size=2, default quorum=floor(M/2)+1=2); split votes will only resolve via permissionTimeoutMs (5000ms). This breadcrumb fires once per mediator lifetime; subsequent unanimity-required requests are silent.
qwen serve: permission req-1 (session sess-1): vote rejected (designated_mismatch (voter not in consensus votersAtIssue snapshot)) by client "client_late_join"
qwen serve: permission req-1 (session sess-1) timed out after 5000ms
permissionMediator: consensusQuorum override 100 capped to 3 (votersAtIssue.size=3) for request req-1 session sess-1
qwen serve: permission req-1 (session sess-1): vote rejected (remote_not_allowed (local-only policy; vote not from loopback)) by client "client_A"
permissionMediator: emit failed for session="sess-1" type="permission_resolved": Error: bus closed during shutdown
permissionMediator: emit failed for session="sess-1" type="permission_already_resolved": Error: bus closed during shutdown
permissionMediator: audit publisher threw: Error: audit ring full
permissionMediator: audit publisher threw: Error: audit ring full
permissionMediator: audit publisher threw: Error: audit publisher transient error
permissionMediator: audit publisher threw: Error: audit publisher transient error
qwen serve: permission req-1 (session sess-1) timed out after 5000ms
permissionMediator: audit publisher threw: Error: audit publisher transient error
[mid-turn] session=sess:drain drained=2 injected into running turn
[mid-turn] session=sess:multi drained=2 originator=client-1 injected into running turn
[mid-turn] session=sess:multi drained=1 originator=client-2 injected into running turn
 ✓ src/bridgeClient.test.ts (23 tests) 20ms
 ✓ src/permissionMediator.test.ts (40 tests) 27ms
 ✓ src/status.test.ts (17 tests) 4ms
 ✓ src/spawnChannel.test.ts (24 tests) 9ms
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
 ✓ src/inMemoryChannel.test.ts (8 tests) 111ms
qwen serve: channel exited (code=none, signal=none, 0 session(s) torn down)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: channel exited (code=none, signal=none, 1 session(s) torn down)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: channel exited (code=none, signal=none, 0 session(s) torn down)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: channel exited (code=none, signal=none, 0 session(s) torn down)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
sendPrompt: forward failed for session sess:/work/a: temporary failure
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
broadcastPromptCancelledOnce: suppressed duplicate cancel for session sess:/work/a (latch already set)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
sendPrompt: forward failed for session sess:/work/a: forward boom
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: closing session "sess:/work/a" (reason: client_close) by client "client_201fb342-c625-4771-88cc-5816b7dc1307"
qwen serve: channel exited (code=none, signal=none, 0 session(s) torn down)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: updated session metadata "sess:/work/a" displayName=set by client "client_4c754b03-bc7f-453f-a8c0-c632f66cc30a"
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
sendPrompt: forward failed for session sess:/work/a: first prompt failed
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
sendPrompt: forward failed for session sess:/work/a: first prompt boom
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: legacy permission vote "does-not-exist" has no live session (peek returned undefined); returning 404.
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: legacy permission vote "does-not-exist" has no live session (peek returned undefined); returning 404.
qwen serve: legacy permission vote "does-not-exist" has no live session (peek returned undefined); returning 404.
qwen serve: legacy permission vote "does-not-exist" has no live session (peek returned undefined); returning 404.
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[reconcile] session=sess:/work/a target=model action=skipped reason=roundtrip_failed
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[reconcile] session=sess:/work/a target=model action=skipped reason=roundtrip_failed
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: channel exited (code=none, signal=none, 1 session(s) torn down)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[reconcile] session=sess:/work/a target=model action=skipped reason=roundtrip_failed
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[reconcile] session=sess:/work/a target=model action=skipped reason=roundtrip_failed
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: channel exited (code=none, signal=none, 1 session(s) torn down)
sendPrompt: forward failed for session stuck:/work/a: agent channel closed mid-request (session stuck:/work/a)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: channel exited (code=none, signal=none, 0 session(s) torn down)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[reconcile] session=sess:/work/a target=approvalMode action=skipped reason=roundtrip_failed
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
sendPrompt: forward failed for session sess:/work/a: Internal error
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: closing session "sess:/work/a" (reason: client_close)
qwen serve: dropping mcp guardrail extNotification for tombstoned session "sess:/work/a" (post-close stale event)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: closing session "sess:/work/a" (reason: client_close)
qwen serve: WARNING aliveChannels.size=3 (expected 1, max 2 during killSession-then-spawnOrAttach overlap) — possible channel leak; check that prior channels' channel.exited fired and the handler ran cleanup.
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[demux] session=sess:/work/a type=current_model_update action=promoted model=qwen-max
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[demux] session=sess:/work/a type=current_model_update action=suppressed reason=bridge_roundtrip_in_flight
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[demux] session=nonexistent-session type=current_model_update action=dropped reason=no_entry
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[demux] session=sess:/work/a type=current_model_update action=promoted model=qwen-max
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[demux] session=sess:/work/a type=prompt_suggestion action=dropped reason=malformed
[demux] session=sess:/work/a type=prompt_suggestion action=dropped reason=malformed
[demux] session=<missing> type=prompt_suggestion action=dropped reason=malformed
[demux] session=sess:/work/a type=prompt_suggestion action=dropped reason=malformed
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: closing session "sess:/work/a" (reason: client_close)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: channel exited (code=none, signal=none, 0 session(s) torn down)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: channel exited (code=none, signal=none, 0 session(s) torn down)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: channel exited (code=none, signal=none, 0 session(s) torn down)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: channel exited (code=none, signal=none, 3 session(s) torn down)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: closing session "sess:/work/a" (reason: client_close)
qwen serve: channel exited (code=none, signal=none, 0 session(s) torn down)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: closing session "sess:/work/a" (reason: client_close)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: closing session "sess:/work/a" (reason: client_close)
qwen serve: channel exited (code=none, signal=none, 0 session(s) torn down)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: channel exited (code=none, signal=none, 0 session(s) torn down)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: updated session metadata "sess:/work/a" displayName=set
qwen serve: closing session "sess:/work/a" (reason: client_close)
qwen serve: channel exited (code=none, signal=none, 0 session(s) torn down)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: closing session "sess:/work/a" (reason: client_close)
qwen serve: channel exited (code=none, signal=none, 0 session(s) torn down)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve debug: rejected permission vote "4edd3be1-10b7-4528-b382-4d76e585a9a3" for session "sess:/work/a#2"; request belongs to session "sess:/work/a".
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[demux] session=sess:/work/a type=current_mode_update action=promoted mode=auto-edit
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[demux] session=sess:/work/a type=current_mode_update action=suppressed reason=bridge_roundtrip_in_flight
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[demux] session=sess:/work/a type=current_model_update action=promoted model=qwen-max
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[demux] session=sess:/work/a type=current_mode_update action=dropped reason=unknown_mode mode=totally-bogus
[demux] session=sess:/work/a type=current_model_update action=promoted model=qwen-max
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[demux] session=sess:/work/a type=current_mode_update action=promoted mode=auto-edit
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[demux] session=sess:/work/a type=current_mode_update action=promoted mode=auto-edit legacy_frame=skipped
[demux] session=sess:/work/a type=current_model_update action=promoted model=qwen-max
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[demux] session=sess:/work/a type=current_model_update action=promoted model=qwen-turbo
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[demux] session=sess:/work/a type=current_mode_update action=promoted mode=auto-edit
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[demux] session=sess:/work/a type=current_model_update action=promoted model=qwen-turbo
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[demux] session=sess:/work/a type=current_model_update action=promoted model=qwen-turbo
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[reconcile] session=sess:/work/a target=model action=corrected cached=qwen-max actual=qwen-turbo
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[reconcile] session=sess:/work/a target=model action=failed error=[object Object]
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[reconcile] session=sess:/work/a target=model action=skipped reason=roundtrip_failed
[demux] session=sess:/work/a type=current_model_update action=dropped reason=no_entry
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[reconcile] session=sess:/work/a target=model action=skipped reason=generation_changed genBefore=1 genAfter=2
[reconcile] session=sess:/work/a target=model action=corrected cached=qwen-plus actual=qwen-turbo
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[reconcile] session=sess:/work/a target=approvalMode action=corrected cached=yolo actual=plan
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[reconcile] session=sess:/work/a target=approvalMode action=skipped reason=roundtrip_failed
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[reconcile] session=sess:/work/a target=approvalMode action=dropped reason=unknown_mode mode=super-yolo
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: closing session "sess:/work/a" (reason: client_close)
qwen serve: channel exited (code=none, signal=none, 0 session(s) torn down)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: closing session "sess:/work/a" (reason: client_close)
qwen serve: closing session "sess:/work/a#2" (reason: client_close)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: closing session "sess:/work/a" (reason: client_close)
qwen serve: idle timeout (5000ms) expired, killing channel
qwen serve: channel exited (code=none, signal=none, 0 session(s) torn down)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: closing session "sess:/work/a" (reason: client_close)
qwen serve: closing session "sess:/work/a#2" (reason: client_close)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: closing session "sess:/work/a" (reason: client_close)
qwen serve: channel exited (code=none, signal=none, 0 session(s) torn down)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: closing session "sess:/work/a" (reason: client_close)
qwen serve: idle timeout (5000ms) expired, killing channel
qwen serve: channel exited (code=none, signal=none, 0 session(s) torn down)
qwen serve: session reaper started (interval 1000ms, idle threshold 5000ms)
qwen serve: reaping idle session "sess:/work/a" (idle for 5s, threshold 5s)
qwen serve: closing session "sess:/work/a" (reason: idle_timeout)
qwen serve: channel exited (code=none, signal=none, 0 session(s) torn down)
qwen serve: session reaper started (interval 1000ms, idle threshold 2000ms)
sendPrompt: forward failed for session sess:/work/a: agent channel closed mid-request (session sess:/work/a)
qwen serve: session reaper started (interval 1000ms, idle threshold 2000ms)
qwen serve: reaping idle session "sess:/work/a" (idle for 6s, threshold 2s)
qwen serve: closing session "sess:/work/a" (reason: idle_timeout)
qwen serve: channel exited (code=none, signal=none, 0 session(s) torn down)
qwen serve: session reaper started (interval 1000ms, idle threshold 2000ms)
sendPrompt: forward failed for session sess:/work/a: agent channel closed mid-request (session sess:/work/a)
qwen serve: session reaper disabled
qwen serve: session reaper disabled
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: closing session "sess:/work/a" (reason: idle_timeout)
qwen serve: channel exited (code=none, signal=none, 0 session(s) torn down)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: closing session "sess:/work/a" (reason: client_close)
qwen serve: channel exited (code=none, signal=none, 0 session(s) torn down)
qwen serve: session reaper started (interval 1000ms, idle threshold 3000ms)
qwen serve: reaping idle session "sess:/work/a" (idle for 3s, threshold 3s)
qwen serve: closing session "sess:/work/a" (reason: idle_timeout)
qwen serve: reaping idle session "sess:/work/a#2" (idle for 3s, threshold 3s)
qwen serve: closing session "sess:/work/a#2" (reason: idle_timeout)
qwen serve: reaping idle session "sess:/work/a#3" (idle for 3s, threshold 3s)
qwen serve: closing session "sess:/work/a#3" (reason: idle_timeout)
qwen serve: channel exited (code=none, signal=none, 0 session(s) torn down)
qwen serve: session reaper started (interval 1000ms, idle threshold 5000ms)
qwen serve: reaping idle session "sess:/work/a" (idle for 5s, threshold 5s)
qwen serve: closing session "sess:/work/a" (reason: idle_timeout)
qwen serve: channel exited (code=none, signal=none, 0 session(s) torn down)
qwen serve: session reaper started (interval 1000ms, idle threshold 2000ms)
qwen serve: session reaper started (interval 1000ms, idle threshold 3000ms)
qwen serve: closing session "sess:/work/a" (reason: last_client_detached)
qwen serve: idle timeout (2000ms) expired, killing channel
qwen serve: channel exited (code=none, signal=none, 0 session(s) torn down)
qwen serve: session reaper disabled
qwen serve: closing session "sess:/work/a" (reason: last_client_detached)
qwen serve: channel exited (code=none, signal=none, 0 session(s) torn down)
qwen serve: session reaper disabled
qwen serve: closing session "sess:/work/a" (reason: last_client_detached)
qwen serve: channel exited (code=none, signal=none, 0 session(s) torn down)
qwen serve: session reaper disabled
qwen serve: closing session "sess:/work/a" (reason: last_client_detached)
qwen serve: channel exited (code=none, signal=none, 0 session(s) torn down)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: closing session "sess:/work/a" (reason: client_close)
sendPrompt: forward failed for session sess:/work/a: cancelled
qwen serve: channel exited (code=none, signal=none, 0 session(s) torn down)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: channel exited (code=none, signal=none, 0 session(s) torn down)
sendPrompt: forward failed for session sess:/work/a: agent channel closed mid-request (session sess:/work/a)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: channel exited (code=none, signal=none, 1 session(s) torn down)
sendPrompt: forward failed for session sess:/work/a: agent channel closed mid-request (session sess:/work/a)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: channel exited (code=none, signal=none, 1 session(s) torn down)
sendPrompt: forward failed for session sess:/work/a: agent channel closed mid-request (session sess:/work/a)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[mid-turn] session=sess:/work/a rejected: session idle; browser keeps it for next turn
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[mid-turn] session=sess:/work/a dropped 1 undrained message(s) at idle; browser resends next turn
[mid-turn] session=sess:/work/a rejected: session idle; browser keeps it for next turn
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[mid-turn] session=sess:/work/a rejected: empty message; browser keeps it for next turn
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[mid-turn] session=sess:/work/a drained=2 injected into running turn
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[mid-turn] session=sess:/work/a dropped 1 undrained message(s) at idle; browser resends next turn
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[mid-turn] session=sess:/work/a drained=1 injected into running turn
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[mid-turn] session=sess:/work/a drained=1 originator=client_34d8cdee-14b8-4464-b4af-431006521311 injected into running turn
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[mid-turn] session=sess:/work/a rejected: queue full (depth 20 >= 20); browser keeps it for next turn
[mid-turn] session=sess:/work/a dropped 20 undrained message(s) at idle; browser resends next turn
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
[mid-turn] session=sess:/work/a drained=1 injected into running turn
 ✓ src/bridge.test.ts (299 tests) 2752ms

 Test Files  9 passed (9)
      Tests  494 passed (494)
   Start at  12:19:39
   Duration  5.91s (transform 3.30s, setup 0ms, collect 13.31s, tests 3.00s, environment 1ms, prepare 759ms)

npm notice run @qwen-code/audio-capture@0.19.3 test

 RUN  v3.2.4 /startdir/src/qwen-code/packages/audio-capture

 ✓ src/platform.test.ts (2 tests) 2ms

 Test Files  1 passed (1)
      Tests  2 passed (2)
   Start at  12:19:45
   Duration  204ms (transform 32ms, setup 0ms, collect 24ms, tests 2ms, environment 0ms, prepare 57ms)

npm notice run @qwen-code/qwen-code@0.19.3 test

 RUN  v3.2.4 /startdir/src/qwen-code/packages/cli
      Coverage enabled with v8

 ✓ src/serve/auth/device-flow.test.ts (47 tests) 22ms
(node:3251) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 end listeners added to [Socket]. MaxListeners is 10. Use emitter.setMaxListeners() to increase limit
(Use `node --trace-warnings ...` to show where the warning was created)
(node:3251) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 end listeners added to [Socket]. MaxListeners is 10. Use emitter.setMaxListeners() to increase limit
(node:3251) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 finish listeners added to [Socket]. MaxListeners is 10. Use emitter.setMaxListeners() to increase limit
(node:3251) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added to [Socket]. MaxListeners is 10. Use emitter.setMaxListeners() to increase limit
(node:3251) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 close listeners added to [Socket]. MaxListeners is 10. Use emitter.setMaxListeners() to increase limit
(node:3251) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 drain listeners added to [Socket]. MaxListeners is 10. Use emitter.setMaxListeners() to increase limit
(node:3251) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 finish listeners added to [Socket]. MaxListeners is 10. Use emitter.setMaxListeners() to increase limit
(node:3251) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added to [Socket]. MaxListeners is 10. Use emitter.setMaxListeners() to increase limit
(node:3251) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 close listeners added to [Socket]. MaxListeners is 10. Use emitter.setMaxListeners() to increase limit
(node:3251) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 data listeners added to [Socket]. MaxListeners is 10. Use emitter.setMaxListeners() to increase limit
 ✓ src/services/insight/generators/DataProcessor.test.ts (45 tests) 35ms
 ✓ src/utils/modelConfigUtils.test.ts (59 tests) 47ms
 ✓ src/ui/components/shared/text-buffer.test.ts (158 tests) 199ms
 ✓ src/config/settings.test.ts (145 tests) 159ms
 ✓ src/serve/fs/workspace-file-system.test.ts (78 tests) 366ms
 ✓ src/ui/commands/modelCommand.test.ts (47 tests) 117ms
 ✓ src/ui/hooks/atCommandProcessor.test.ts (57 tests) 209ms
 ✓ src/serve/workspace-service/__tests__/facade.test.ts (56 tests) 196ms
 ✓ src/ui/hooks/vim.test.ts (132 tests) 1389ms
 ✓ src/ui/contexts/KeypressContext.test.tsx (95 tests) 1714ms
   ✓ KeypressContext - Kitty Protocol > Enter key handling > auto-recovers from a stuck paste mode via idle timeout  1255ms
qwen serve: daemon log → /tmp/qws-dl-cBz532/debug/daemon/serve-3714-a640111b.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve: createServeApp default fsFactory uses trusted=false — agent ACP writeTextFile calls will reject with untrusted_workspace. Inject deps.fsFactory (with explicit trust) or deps.bridge to override.
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve listening on http://127.0.0.1:45501 (mode=http-bridge, workspace=/tmp/qws-dl-cBz532)
qwen serve: bound to workspace "/tmp/qws-dl-cBz532"
qwen serve: startup timing: processToListenMs=7527 runQwenServeToListenMs=123
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3714-dcc97b62.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve: bound to workspace "/tmp/qws-tv-fYrX0a"
qwen serve: startup timing: processToListenMs=7534 runQwenServeToListenMs=3
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: runtime startup failed: Invalid telemetry configuration: Invalid QWEN_TELEMETRY_SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH: must be a positive integer no greater than 104857600, got ''.
qwen serve listening on http://127.0.0.1:35947 (mode=http-bridge, workspace=/tmp/qws-tv-fYrX0a)
2026-07-31T12:19:56.946Z [ERROR] [DAEMON] runtime startup failed
  Error: Invalid telemetry configuration: Invalid QWEN_TELEMETRY_SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH: must be a positive integer no greater than 104857600, got ''.
      at buildRuntime (/startdir/src/qwen-code/packages/cli/src/serve/run-qwen-serve.ts:1528:15)
      at processTicksAndRejections (node:internal/process/task_queues:104:5)
qwen serve: daemon log → /tmp/qws-pt-0p840G/debug/daemon/serve-3714-4486d4ab.log
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3714-f7e59730.log
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3714-aea67e77.log
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3714-82c22908.log
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3714-036a9d1a.log
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3714-391c08e0.log
qwen serve: daemon log → /tmp/qws-rt-RhbslV/debug/daemon/serve-3714-c394ab37.log
qwen serve: daemon log → /tmp/qws-rt-EPKynq/debug/daemon/serve-3714-fbf20fd3.log
qwen serve: daemon log → /tmp/qws-rt-4gRWIB/debug/daemon/serve-3714-23ff83b1.log
qwen serve: daemon log → /tmp/qws-rt-e3GeUN/debug/daemon/serve-3714-bd4d2f12.log
qwen serve: daemon log → /tmp/qws-rt-HjJPnS/debug/daemon/serve-3714-4ce56722.log
qwen serve: daemon log → /tmp/qws-rt-T4sVTX/debug/daemon/serve-3714-0a76e84b.log
qwen serve: daemon log → /tmp/qws-rt-oFZMfQ/debug/daemon/serve-3714-14608dca.log
qwen serve: daemon log → /tmp/qws-rt-vKe3L0/debug/daemon/serve-3714-596119cb.log
qwen serve: daemon log → /tmp/qws-rt-wN8IdV/debug/daemon/serve-3714-27c401d9.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve listening on http://127.0.0.1:41081 (mode=http-bridge, workspace=/tmp/qws-rt-wN8IdV)
qwen serve: bound to workspace "/tmp/qws-rt-wN8IdV"
qwen serve: startup timing: processToListenMs=7578 runQwenServeToListenMs=7
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
qwen serve: daemon log → /tmp/qws-rt-jxxTgd/debug/daemon/serve-3714-0b8cf143.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve listening on http://127.0.0.1:37975 (mode=http-bridge, workspace=/tmp/qws-rt-jxxTgd)
qwen serve: bound to workspace "/tmp/qws-rt-jxxTgd"
qwen serve: startup timing: processToListenMs=7589 runQwenServeToListenMs=10
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3714-0da83381.log
qwen serve: bound to workspace "/tmp/qws-runtime-fail-p0GV4c"
qwen serve: startup timing: processToListenMs=7594 runQwenServeToListenMs=1
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve listening on http://127.0.0.1:39293 (mode=http-bridge, workspace=/tmp/qws-runtime-fail-p0GV4c)
qwen serve: runtime startup failed: runtime boom
2026-07-31T12:19:57.006Z [ERROR] [DAEMON] runtime startup failed
  Error: runtime boom
      at Object.<anonymous> (/startdir/src/qwen-code/packages/cli/src/serve/run-qwen-serve.test.ts:577:13)
      at Object.mockCall (file:///startdir/src/qwen-code/node_modules/@vitest/spy/dist/index.js:96:15)
      at Object.createAcpSessionBridge (file:///startdir/src/qwen-code/node_modules/tinyspy/dist/index.js:47:103)
      at buildRuntime (/startdir/src/qwen-code/packages/cli/src/serve/run-qwen-serve.ts:1682:15)
      at processTicksAndRejections (node:internal/process/task_queues:104:5)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3714-1825bc66.log
qwen serve listening on http://127.0.0.1:38009 (mode=http-bridge, workspace=/tmp/qws-runtime-fail-close-KmsINO)
qwen serve: bound to workspace "/tmp/qws-runtime-fail-close-KmsINO"
qwen serve: startup timing: processToListenMs=7604 runQwenServeToListenMs=2
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: runtime startup failed: runtime boom
2026-07-31T12:19:57.016Z [ERROR] [DAEMON] runtime startup failed
  Error: runtime boom
      at Object.<anonymous> (/startdir/src/qwen-code/packages/cli/src/serve/run-qwen-serve.test.ts:598:13)
      at Object.mockCall (file:///startdir/src/qwen-code/node_modules/@vitest/spy/dist/index.js:96:15)
      at Object.createAcpSessionBridge (file:///startdir/src/qwen-code/node_modules/tinyspy/dist/index.js:47:103)
      at buildRuntime (/startdir/src/qwen-code/packages/cli/src/serve/run-qwen-serve.ts:1682:15)
      at processTicksAndRejections (node:internal/process/task_queues:104:5)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3714-14c1ad4a.log
qwen serve: bound to workspace "/tmp/qws-runtime-starting-route-tW3Lpw"
qwen serve: startup timing: processToListenMs=7620 runQwenServeToListenMs=2
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve listening on http://127.0.0.1:45715 (mode=http-bridge, workspace=/tmp/qws-runtime-starting-route-tW3Lpw)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: runtime startup failed: Daemon runtime stopped before mounting.
2026-07-31T12:19:57.073Z [ERROR] [DAEMON] runtime startup failed
  Error: Daemon runtime stopped before mounting.
      at /startdir/src/qwen-code/packages/cli/src/serve/run-qwen-serve.ts:2057:17
      at processTicksAndRejections (node:internal/process/task_queues:104:5)
      at waitForRuntimeStartingForShutdown (/startdir/src/qwen-code/packages/cli/src/serve/run-qwen-serve.ts:776:3)
      at /startdir/src/qwen-code/packages/cli/src/serve/run-qwen-serve.ts:2223:17
qwen serve: daemon log → /tmp/qws-runtime-fail-log-0uPo6l/debug/daemon/serve-3714-d74a606a.log
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve listening on http://127.0.0.1:39889 (mode=http-bridge, workspace=/tmp/qws-runtime-fail-log-0uPo6l)
qwen serve: bound to workspace "/tmp/qws-runtime-fail-log-0uPo6l"
qwen serve: startup timing: processToListenMs=7673 runQwenServeToListenMs=1
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: runtime startup failed: runtime boom
2026-07-31T12:19:57.085Z [ERROR] [DAEMON] runtime startup failed
  Error: runtime boom
      at Object.<anonymous> (/startdir/src/qwen-code/packages/cli/src/serve/run-qwen-serve.test.ts:763:13)
      at Object.mockCall (file:///startdir/src/qwen-code/node_modules/@vitest/spy/dist/index.js:96:15)
      at Object.createAcpSessionBridge (file:///startdir/src/qwen-code/node_modules/tinyspy/dist/index.js:47:103)
      at buildRuntime (/startdir/src/qwen-code/packages/cli/src/serve/run-qwen-serve.ts:1682:15)
      at processTicksAndRejections (node:internal/process/task_queues:104:5)
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3714-97edcd75.log
qwen serve: bound to workspace "/tmp/qws-runtime-flush-pending-0Pb8kL"
qwen serve: startup timing: processToListenMs=7678 runQwenServeToListenMs=1
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve listening on http://127.0.0.1:39157 (mode=http-bridge, workspace=/tmp/qws-runtime-flush-pending-0Pb8kL)
qwen serve: /acp WebSocket transport enabled on /acp
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3714-b604b1eb.log
qwen serve: bound to workspace "/tmp/qws-runtime-timeout-GNbJfF"
qwen serve: startup timing: processToListenMs=7687 runQwenServeToListenMs=1
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve listening on http://127.0.0.1:36855 (mode=http-bridge, workspace=/tmp/qws-runtime-timeout-GNbJfF)
qwen serve: runtime startup failed: Daemon runtime startup timed out after 1ms.
2026-07-31T12:19:57.098Z [ERROR] [DAEMON] runtime startup failed
  Error: Daemon runtime startup timed out after 1ms.
      at Timeout.<anonymous> (/startdir/src/qwen-code/packages/cli/src/serve/run-qwen-serve.ts:2078:15)
      at listOnTimeout (node:internal/timers:635:17)
      at processTimers (node:internal/timers:571:7)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: Web Shell index send failed: ENOENT: no such file or directory, stat '/tmp/qwen-webshell-nnJ505/index.html'
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3714-4101d961.log
qwen serve listening on http://127.0.0.1:45437 (mode=http-bridge, workspace=/tmp/qws-runtime-fail-az8ksr)
qwen serve: bound to workspace "/tmp/qws-runtime-fail-az8ksr"
qwen serve: startup timing: processToListenMs=7749 runQwenServeToListenMs=1
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: runtime startup failed: runtime boom
2026-07-31T12:19:57.161Z [ERROR] [DAEMON] runtime startup failed
  Error: runtime boom
      at Object.<anonymous> (/startdir/src/qwen-code/packages/cli/src/serve/run-qwen-serve.test.ts:931:13)
      at Object.mockCall (file:///startdir/src/qwen-code/node_modules/@vitest/spy/dist/index.js:96:15)
      at Object.createAcpSessionBridge (file:///startdir/src/qwen-code/node_modules/tinyspy/dist/index.js:47:103)
      at buildRuntime (/startdir/src/qwen-code/packages/cli/src/serve/run-qwen-serve.ts:1682:15)
      at processTicksAndRejections (node:internal/process/task_queues:104:5)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
 ✓ src/ui/commands/exportCommand.test.ts (40 tests) 102ms
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3714-ee200dbf.log
qwen serve: bound to workspace "/tmp/qws-runtime-partial-fail-rJzCz6"
qwen serve: startup timing: processToListenMs=7788 runQwenServeToListenMs=1
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: runtime startup failed: runtime app boom
2026-07-31T12:19:57.200Z [ERROR] [DAEMON] runtime startup failed
  Error: runtime app boom
      at Object.<anonymous> (/startdir/src/qwen-code/packages/cli/src/serve/run-qwen-serve.test.ts:1094:13)
      at Object.mockCall (file:///startdir/src/qwen-code/node_modules/@vitest/spy/dist/index.js:96:15)
      at Object.createServeApp (file:///startdir/src/qwen-code/node_modules/tinyspy/dist/index.js:47:103)
      at buildRuntime (/startdir/src/qwen-code/packages/cli/src/serve/run-qwen-serve.ts:1758:25)
      at processTicksAndRejections (node:internal/process/task_queues:104:5)
qwen serve listening on http://127.0.0.1:33967 (mode=http-bridge, workspace=/tmp/qws-runtime-partial-fail-rJzCz6)
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3714-6238d61b.log
qwen serve: bound to workspace "/tmp/qws-runtime-close-n83bWW"
qwen serve: startup timing: processToListenMs=7793 runQwenServeToListenMs=1
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve listening on http://127.0.0.1:34261 (mode=http-bridge, workspace=/tmp/qws-runtime-close-n83bWW)
qwen serve: runtime startup failed: Daemon runtime stopped before mounting.
2026-07-31T12:19:57.208Z [ERROR] [DAEMON] runtime startup failed
  Error: Daemon runtime stopped before mounting.
      at /startdir/src/qwen-code/packages/cli/src/serve/run-qwen-serve.ts:2057:17
      at processTicksAndRejections (node:internal/process/task_queues:104:5)
      at waitForRuntimeStartingForShutdown (/startdir/src/qwen-code/packages/cli/src/serve/run-qwen-serve.ts:776:3)
      at /startdir/src/qwen-code/packages/cli/src/serve/run-qwen-serve.ts:2223:17
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3714-1e6faddd.log
qwen serve listening on http://127.0.0.1:39215 (mode=http-bridge, workspace=/tmp/qws-ws-UrcuNb)
qwen serve: bound to workspace "/tmp/qws-ws-UrcuNb"
qwen serve: startup timing: processToListenMs=7814 runQwenServeToListenMs=13
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3714-548622d3.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve listening on http://127.0.0.1:33315 (mode=http-bridge, workspace=/tmp/qws-ws-e0xhAd)
qwen serve: bound to workspace "/tmp/qws-ws-e0xhAd"
qwen serve: startup timing: processToListenMs=7819 runQwenServeToListenMs=5
qwen serve: /acp WebSocket transport enabled on /acp
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3714-58284369.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve listening on http://127.0.0.1:37781 (mode=http-bridge, workspace=/tmp/qws-ws-hs8jTQ)
qwen serve: bound to workspace "/tmp/qws-ws-hs8jTQ"
qwen serve: startup timing: processToListenMs=7828 runQwenServeToListenMs=7
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3714-40c81a16.log
qwen serve: bound to workspace "/tmp/qws-ws-X0M94C"
qwen serve: startup timing: processToListenMs=7833 runQwenServeToListenMs=4
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
qwen serve listening on http://127.0.0.1:34169 (mode=http-bridge, workspace=/tmp/qws-ws-X0M94C)
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3714-b169ecbd.log
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: bound to workspace "/tmp/qws-ws-REgJ1W"
qwen serve: startup timing: processToListenMs=7839 runQwenServeToListenMs=5
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve listening on http://127.0.0.1:36503 (mode=http-bridge, workspace=/tmp/qws-ws-REgJ1W)
qwen serve: ignoring invalid QWEN_SERVE_MCP_CLIENT_BUDGET='0x10' (expected positive integer); MCP budget enforcement disabled for this child.
qwen serve: ignoring invalid QWEN_SERVE_MCP_CLIENT_BUDGET='1e2' (expected positive integer); MCP budget enforcement disabled for this child.
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve listening on http://127.0.0.1:37431 (mode=http-bridge, workspace=/tmp/qws-startup-runtime-dir-x32BYN)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: ignoring invalid QWEN_SERVE_MCP_CLIENT_BUDGET='1.0' (expected positive integer); MCP budget enforcement disabled for this child.
qwen serve listening on http://127.0.0.1:45727 (mode=http-bridge, workspace=/tmp/qws-startup-log-dep-00b96u)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: ignoring invalid QWEN_SERVE_MCP_CLIENT_BUDGET='0b101' (expected positive integer); MCP budget enforcement disabled for this child.
qwen serve: ignoring invalid QWEN_SERVE_MCP_CLIENT_BUDGET='5 abc' (expected positive integer); MCP budget enforcement disabled for this child.
qwen serve: ignoring invalid QWEN_SERVE_MCP_CLIENT_BUDGET='abc' (expected positive integer); MCP budget enforcement disabled for this child.
qwen serve: ignoring invalid QWEN_SERVE_MCP_CLIENT_BUDGET='-5' (expected positive integer); MCP budget enforcement disabled for this child.
qwen serve: ignoring invalid QWEN_SERVE_MCP_CLIENT_BUDGET='0' (expected positive integer); MCP budget enforcement disabled for this child.
qwen serve listening on http://127.0.0.1:39297 (mode=http-bridge, workspace=/tmp/qws-startup-storage-dir-xQpH3A)
qwen serve listening on http://127.0.0.1:35663 (mode=http-bridge, workspace=/tmp/qws-startup-preheat-aCKZyl)
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3714-efab2cf5.log
qwen serve: bound to workspace "/tmp/qws-startup-preheat-aCKZyl"
qwen serve: startup timing: processToListenMs=7894 runQwenServeToListenMs=2
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
2026-07-31T12:19:57.328Z [INFO] [DAEMON] route=GET /daemon/status durationMs=1 status=200 request completed
2026-07-31T12:19:57.331Z [INFO] [DAEMON] route=GET /daemon/status durationMs=1 status=200 request completed
2026-07-31T12:19:57.335Z [INFO] [DAEMON] route=GET /daemon/status durationMs=0 status=200 request completed
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3714-237ec521.log
qwen serve: bound to workspace "/tmp/qws-startup-preheat-tMfLNo"
qwen serve: startup timing: processToListenMs=7936 runQwenServeToListenMs=1
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: ignoring invalid QWEN_SERVE_MCP_CLIENT_BUDGET=' ' (expected positive integer); MCP budget enforcement disabled for this child.
qwen serve listening on http://127.0.0.1:35263 (mode=http-bridge, workspace=/tmp/qws-startup-preheat-tMfLNo)
qwen serve: /acp WebSocket transport enabled on /acp
qwen serve: ACP preheat failed, will retry on first session: preheat boom
2026-07-31T12:19:57.354Z [INFO] [DAEMON] route=GET /daemon/status durationMs=1 status=200 request completed
2026-07-31T12:19:57.357Z [INFO] [DAEMON] route=GET /daemon/status durationMs=0 status=200 request completed
 ✓ src/acp-integration/acpAgent.test.ts (157 tests) 7617ms
 ✓ src/serve/run-qwen-serve.test.ts (68 tests) 562ms
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
(node:3400) [UNDICI-EHPA] Warning: EnvHttpProxyAgent is experimental, expect them to change at any time.
(Use `node --trace-warnings ...` to show where the warning was created)
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
 ✓ src/config/config.test.ts (236 tests) 1473ms
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: fast-path bootstrap failed, falling back to full startup: Failed to read serve fast path settings from /tmp/qws-fast-path-home-CP5l1a/settings.json: Expected property name or '}' in JSON at position 1 (line 1 column 2)
qwen serve: fast-path bootstrap failed, falling back to full startup: Serve fast path settings advanced.excludedEnvVars must be a string array.
qwen serve: fast-path bootstrap failed, falling back to full startup: Serve fast path settings advanced.runtimeOutputDir must be a string.
qwen serve: fast-path bootstrap failed, falling back to full startup: Serve fast path settings security.folderTrust.enabled must be a boolean.
qwen serve: extensions install: refreshed 1 session(s), 0 failed
 ✓ src/nonInteractive/io/BaseJsonOutputAdapter.test.ts (96 tests) 51ms
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
 ✓ src/serve/fast-path.test.ts (56 tests) 58ms
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
 ✓ src/ui/components/shared/vim-buffer-actions.test.ts (74 tests) 22ms
 ✓ src/services/FileCommandLoader.test.ts (40 tests) 112ms
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
 ✓ src/ui/hooks/useStatusLine.test.ts (68 tests) 2989ms
   ✓ useStatusLine > config validation > renders the default preset when no statusLine config is set  2783ms
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
 ✓ src/ui/commands/statsCommand.test.ts (38 tests) 481ms
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
 ✓ src/nonInteractiveCli.test.ts (58 tests | 1 skipped) 750ms
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
 ✓ src/ui/hooks/slashCommandProcessor.test.ts (67 tests) 4981ms
   ✓ useSlashCommandProcessor > Initialization and Command Loading > rebuilds commands when an MCP server connects (surfaces MCP prompts in /)  313ms
   ✓ useSlashCommandProcessor > Initialization and Command Loading > ignores non-connected MCP status changes (no rebuild)  410ms
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
 ✓ src/utils/settingsUtils.test.ts (81 tests) 41ms
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: background task failed: https://***REDACTED***@example.com/private-ext failed
qwen serve: extensions install: mutation succeeded but refresh failed: refresh broke
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions install: background task failed: Only GitHub, Git, and npm extension installs are supported over the daemon endpoint.
qwen serve: extensions install: background task failed: Install source not found: C:\Users\test\qwen-local-extension
qwen serve: extensions install: background task failed: --ref is not applicable for npm extensions.
qwen serve: extensions install: background task failed: --registry is only applicable for npm extensions.
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions enable: refreshed 1 session(s), 0 failed
qwen serve: extensions disable: refreshed 1 session(s), 0 failed
qwen serve: extensions install: refreshed 1 session(s), 0 failed
qwen serve: extensions update: refreshed 1 session(s), 0 failed
qwen serve: extensions update: background task failed: Extension "missing-ext" not found
qwen serve: extensions update: background task failed: Extension "test-ext" has no update
qwen serve: extensions update: background task failed: Update check failed for extension "test-ext": https://***REDACTED***@example.com/check failed
qwen serve: extensions uninstall: refreshed 1 session(s), 0 failed
qwen serve: extensions uninstall: refreshed 1 session(s), 0 failed
qwen serve: extensions uninstall: background task failed: Extension "plain-name" not found
qwen serve: extensions uninstall: background task failed: Extension "https://example.com/missing" not found
 ✓ src/ui/hooks/useGeminiStream.test.tsx (148 tests) 2644ms
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: workspace_mismatch (POST /session): daemon bound to "/work/bound", rejected "/work/different"
qwen serve: bridge error (POST /session): Error: boom
    at spawnImpl (/startdir/src/qwen-code/packages/cli/src/serve/server.test.ts:5320:17)
    at Object.spawnOrAttach (/startdir/src/qwen-code/packages/cli/src/serve/server.test.ts:1178:28)
    at /startdir/src/qwen-code/packages/cli/src/serve/routes/session.ts:97:36
    at Layer.handleRequest (/startdir/src/qwen-code/node_modules/router/lib/layer.js:152:17)
    at next (/startdir/src/qwen-code/node_modules/router/lib/route.js:157:13)
    at passthrough (/startdir/src/qwen-code/packages/cli/src/serve/auth.ts:401:8)
    at Layer.handleRequest (/startdir/src/qwen-code/node_modules/router/lib/layer.js:152:17)
    at next (/startdir/src/qwen-code/node_modules/router/lib/route.js:157:13)
    at Route.dispatch (/startdir/src/qwen-code/node_modules/router/lib/route.js:117:3)
    at handle (/startdir/src/qwen-code/node_modules/router/index.js:435:11)
qwen serve: workspace_mismatch (POST /session): daemon bound to "/work/bound", rejected "/work/different"
qwen serve: DELETE /workspace/agents/"partial-target" partial — removed=project remaining=user:/tmp/qwen-serve-agents-nc4ftC/global/agents/partial-target.md
 ✓ src/serve/workspace-agents.test.ts (38 tests) 689ms
 ✓ src/ui/components/messages/ToolGroupMessage.test.tsx (41 tests) 1750ms
qwen serve: bridge error (POST /session/:id/language session=session-A): Error: unexpected failure
    at setLanguageImpl (/startdir/src/qwen-code/packages/cli/src/serve/server.test.ts:7143:17)
    at Object.setSessionLanguage (/startdir/src/qwen-code/packages/cli/src/serve/server.test.ts:1344:14)
    at /startdir/src/qwen-code/packages/cli/src/serve/routes/session.ts:1263:37
    at Layer.handleRequest (/startdir/src/qwen-code/node_modules/router/lib/layer.js:152:17)
    at next (/startdir/src/qwen-code/node_modules/router/lib/route.js:157:13)
    at passthrough (/startdir/src/qwen-code/packages/cli/src/serve/auth.ts:401:8)
    at Layer.handleRequest (/startdir/src/qwen-code/node_modules/router/lib/layer.js:152:17)
    at next (/startdir/src/qwen-code/node_modules/router/lib/route.js:157:13)
    at Route.dispatch (/startdir/src/qwen-code/node_modules/router/lib/route.js:117:3)
    at handle (/startdir/src/qwen-code/node_modules/router/index.js:435:11)
 ✓ src/nonInteractive/io/StreamJsonOutputAdapter.test.ts (50 tests) 47ms
 ✓ src/ui/voice/voice-transcriber.test.ts (38 tests) 85ms
 ✓ src/utils/nonInteractiveHelpers.test.ts (53 tests) 27ms
 ✓ src/ui/commands/doctorCommand.test.ts (37 tests) 86ms
 ✓ src/config/settingsWatcher.test.ts (46 tests) 58ms
 ✓ src/ui/components/SettingsDialog.test.tsx (54 tests) 8198ms
   ✓ SettingsDialog > Settings Toggling > should sync compact mode with CompactModeContext when toggled  989ms
   ✓ SettingsDialog > Settings Toggling > should not save number settings below their configured minimum  808ms
   ✓ SettingsDialog > Complex State Management > should handle scrolling when there are many settings  435ms
   ✓ SettingsDialog > Output Language > treats empty output language as auto  365ms
   ✓ SettingsDialog > String Settings Editing > should allow editing and committing a string setting  958ms
qwen serve: closeSession failed for "aaaabbbb-cccc-dddd-eeee-ffffaaaabbbb": "Client id \"bad-client\" is not registered for session aaaabbbb-cccc-dddd-eeee-ff
qwen serve: closeSession failed for "s-1": "bridge exploded"
qwen serve: closeSession failed for "aaaa3333-bbbb-cccc-dddd-eeeeeeeeeeee": "agent busy"
qwen serve: closeSession failed for "eeee1111-bbbb-cccc-dddd-eeeeeeeeeeee": "Client id \"bad-client\" is not registered for session eeee1111-bbbb-cccc-dddd-ee
qwen serve: failed to batch delete sessions: "disk on fire"
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: /health deep probe failed: bridge wedged
qwen serve: --allow-origin: * (WARNING: `*` admits any cross-origin browser — bearer token gates API routes; /health and /demo remain pre-auth on loopback unless --require-auth is set)
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve listening on http://127.0.0.1:45015 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=17515 runQwenServeToListenMs=44
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: /acp WebSocket transport enabled on /acp
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=17568 runQwenServeToListenMs=1
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: /acp WebSocket transport enabled on /acp
qwen serve listening on http://127.0.0.1:34817 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
2026-07-31T12:20:04.153Z [INFO] [DAEMON] route=GET /capabilities durationMs=3 status=200 request completed
qwen serve: /acp connection established 04e972b7 (loopback=true, active=1)
2026-07-31T12:20:04.168Z [INFO] [DAEMON] route=POST /acp durationMs=2 status=200 request completed
qwen serve listening on http://127.0.0.1:43269 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
2026-07-31T12:20:04.196Z [INFO] [DAEMON] route=GET /capabilities durationMs=1 status=200 request completed
qwen serve: /acp connection established aa4cb0eb (loopback=true, active=1)
2026-07-31T12:20:04.202Z [INFO] [DAEMON] route=POST /acp durationMs=3 status=200 request completed
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve listening on http://127.0.0.1:46839 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=17655 runQwenServeToListenMs=1
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: /acp WebSocket transport enabled on /acp
2026-07-31T12:20:04.225Z [INFO] [DAEMON] route=GET /capabilities durationMs=0 status=200 request completed
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=17667 runQwenServeToListenMs=1
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve listening on http://127.0.0.1:35985 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: /acp WebSocket transport enabled on /acp
2026-07-31T12:20:04.236Z [INFO] [DAEMON] route=GET /capabilities durationMs=1 status=200 request completed
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve listening on http://127.0.0.1:36437 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=17681 runQwenServeToListenMs=1
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: /acp WebSocket transport enabled on /acp
2026-07-31T12:20:04.250Z [INFO] [DAEMON] route=GET /capabilities durationMs=1 status=200 request completed
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve listening on http://127.0.0.1:33357 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=17692 runQwenServeToListenMs=2
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: /acp WebSocket transport enabled on /acp
2026-07-31T12:20:04.261Z [INFO] [DAEMON] route=GET /capabilities durationMs=1 status=200 request completed
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve listening on http://127.0.0.1:44827 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=17702 runQwenServeToListenMs=1
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: /acp WebSocket transport enabled on /acp
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve listening on http://127.0.0.1:37655 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=17707 runQwenServeToListenMs=1
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: /acp WebSocket transport enabled on /acp
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve listening on http://127.0.0.1:37933 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=17713 runQwenServeToListenMs=1
qwen serve: --require-auth enabled (bearer token mandatory on every route, including loopback /health).
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: /acp WebSocket transport enabled on /acp
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve: Web Shell UI is served WITHOUT auth on a non-loopback bind (the static shell has no secrets; the API stays token-gated). Pass --no-web to disable the UI.
qwen serve: without --allow-origin the Web Shell is read-only on a non-loopback bind — same-origin POSTs are blocked by CORS (403). Pass --allow-origin <origin> or front it with a same-origin proxy.
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=17724 runQwenServeToListenMs=1
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve listening on http://0.0.0.0:40505 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve: /acp WebSocket transport enabled on /acp
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve listening on http://127.0.0.1:43347 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=17729 runQwenServeToListenMs=1
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: /acp WebSocket transport enabled on /acp
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve listening on http://127.0.0.1:43989 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=17752 runQwenServeToListenMs=1
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: /acp WebSocket transport enabled on /acp
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=17764 runQwenServeToListenMs=2
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve listening on http://127.0.0.1:36345 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve: /acp WebSocket transport enabled on /acp
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve listening on http://127.0.0.1:43315 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=17777 runQwenServeToListenMs=1
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: /acp WebSocket transport enabled on /acp
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=17784 runQwenServeToListenMs=2
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: /acp WebSocket transport enabled on /acp
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=17790 runQwenServeToListenMs=1
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve listening on http://Localhost:36657 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve listening on http://[::1]:36251 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve: /acp WebSocket transport enabled on /acp
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve: Web Shell UI is served WITHOUT auth on a non-loopback bind (the static shell has no secrets; the API stays token-gated). Pass --no-web to disable the UI.
qwen serve: without --allow-origin the Web Shell is read-only on a non-loopback bind — same-origin POSTs are blocked by CORS (403). Pass --allow-origin <origin> or front it with a same-origin proxy.
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve listening on http://[::1]:43425 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=17795 runQwenServeToListenMs=1
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: /acp WebSocket transport enabled on /acp
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve: Web Shell UI is served WITHOUT auth on a non-loopback bind (the static shell has no secrets; the API stays token-gated). Pass --no-web to disable the UI.
qwen serve: without --allow-origin the Web Shell is read-only on a non-loopback bind — same-origin POSTs are blocked by CORS (403). Pass --allow-origin <origin> or front it with a same-origin proxy.
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve listening on http://127.0.0.1:45481 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=17819 runQwenServeToListenMs=8
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
2026-07-31T12:20:04.393Z [INFO] [DAEMON] route=GET /capabilities durationMs=10 status=200 request completed
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve listening on http://127.0.0.1:45289 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve listening on http://127.0.0.1:42173 (mode=http-bridge, workspace=/tmp/qwen-runqwen-fs-htwF7M)
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=17846 runQwenServeToListenMs=7
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-747d82a9.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve: bound to workspace "/tmp/qwen-runqwen-fs-htwF7M"
qwen serve: startup timing: processToListenMs=17855 runQwenServeToListenMs=7
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
2026-07-31T12:20:04.439Z [INFO] [DAEMON] route=GET /file durationMs=20 status=200 request completed
2026-07-31T12:20:04.441Z [WARN] [DAEMON] route=GET /file durationMs=1 status=400 request completed
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=17884 runQwenServeToListenMs=3
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
qwen serve listening on http://127.0.0.1:37215 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
2026-07-31T12:20:04.452Z [WARN] [DAEMON] route=GET /file durationMs=0 status=400 request completed
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-0189f6da.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve listening on http://127.0.0.1:34159 (mode=http-bridge, workspace=/tmp/qwen-runqwen-trust-hK5o6T)
qwen serve: bound to workspace "/tmp/qwen-runqwen-trust-hK5o6T"
qwen serve: startup timing: processToListenMs=17905 runQwenServeToListenMs=7
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
 ✓ src/ui/components/ModelDialog.test.tsx (25 tests) 294ms
2026-07-31T12:20:04.498Z [INFO] [DAEMON] route=GET /file durationMs=22 status=200 request completed
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=17966 runQwenServeToListenMs=4
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=17974 runQwenServeToListenMs=7
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
qwen serve listening on http://127.0.0.1:42577 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve listening on http://127.0.0.1:39361 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve listening on http://127.0.0.1:35741 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=17984 runQwenServeToListenMs=8
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve listening on http://127.0.0.1:33741 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=17994 runQwenServeToListenMs=9
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
2026-07-31T12:20:04.560Z [INFO] [DAEMON] sessionId=sess-A SSE stream opened
2026-07-31T12:20:04.566Z [INFO] [DAEMON] sessionId=sess-A durationMs=6 SSE stream closed
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve listening on http://127.0.0.1:39977 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=18013 runQwenServeToListenMs=5
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
2026-07-31T12:20:04.580Z [INFO] [DAEMON] sessionId=sess-A SSE stream opened
2026-07-31T12:20:04.586Z [INFO] [DAEMON] sessionId=sess-A durationMs=6 SSE stream closed
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve listening on http://127.0.0.1:40105 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=18041 runQwenServeToListenMs=16
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
2026-07-31T12:20:04.620Z [INFO] [DAEMON] sessionId=sess-A SSE stream opened
2026-07-31T12:20:04.623Z [INFO] [DAEMON] sessionId=sess-A durationMs=3 SSE stream closed
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=18071 runQwenServeToListenMs=6
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
qwen serve listening on http://127.0.0.1:34067 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
2026-07-31T12:20:04.636Z [INFO] [DAEMON] sessionId=sess-A SSE stream opened
2026-07-31T12:20:04.640Z [INFO] [DAEMON] sessionId=sess-A durationMs=4 SSE stream closed
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve listening on http://127.0.0.1:40201 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=18083 runQwenServeToListenMs=5
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
2026-07-31T12:20:04.648Z [INFO] [DAEMON] sessionId=sess-A SSE stream opened
2026-07-31T12:20:04.656Z [INFO] [DAEMON] sessionId=sess-A durationMs=8 SSE stream closed
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve listening on http://127.0.0.1:39621 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=18109 runQwenServeToListenMs=15
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
2026-07-31T12:20:04.674Z [INFO] [DAEMON] sessionId=sess-A SSE stream opened
2026-07-31T12:20:04.676Z [INFO] [DAEMON] sessionId=sess-A durationMs=2 SSE stream closed
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve listening on http://127.0.0.1:33233 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve listening on http://127.0.0.1:33283 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=18128 runQwenServeToListenMs=4
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
2026-07-31T12:20:04.693Z [INFO] [DAEMON] sessionId=sess-A SSE stream opened
2026-07-31T12:20:04.696Z [INFO] [DAEMON] sessionId=sess-A durationMs=3 SSE stream closed
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=18141 runQwenServeToListenMs=7
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
qwen serve: rejected ?maxQueued "" (not a decimal integer)
2026-07-31T12:20:04.713Z [WARN] [DAEMON] route=GET /session/sess-A/events sessionId=sess-A durationMs=0 status=400 request completed
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=18160 runQwenServeToListenMs=4
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
qwen serve: rejected ?maxQueued "abc" (not a decimal integer)
2026-07-31T12:20:04.725Z [WARN] [DAEMON] route=GET /session/sess-A/events sessionId=sess-A durationMs=0 status=400 request completed
qwen serve listening on http://127.0.0.1:44543 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve listening on http://127.0.0.1:39787 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=18178 runQwenServeToListenMs=4
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
qwen serve: rejected ?maxQueued "0" (outside [16, 2048])
2026-07-31T12:20:04.743Z [WARN] [DAEMON] route=GET /session/sess-A/events sessionId=sess-A durationMs=1 status=400 request completed
qwen serve: rejected ?maxQueued "15" (outside [16, 2048])
2026-07-31T12:20:04.746Z [WARN] [DAEMON] route=GET /session/sess-A/events sessionId=sess-A durationMs=0 status=400 request completed
qwen serve: rejected ?maxQueued "2049" (outside [16, 2048])
2026-07-31T12:20:04.750Z [WARN] [DAEMON] route=GET /session/sess-A/events sessionId=sess-A durationMs=1 status=400 request completed
qwen serve: rejected ?maxQueued "9999" (outside [16, 2048])
2026-07-31T12:20:04.753Z [WARN] [DAEMON] route=GET /session/sess-A/events sessionId=sess-A durationMs=1 status=400 request completed
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=18199 runQwenServeToListenMs=5
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
2026-07-31T12:20:04.764Z [WARN] [DAEMON] route=GET /session/missing/events sessionId=missing durationMs=1 status=404 request completed
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve listening on http://127.0.0.1:40639 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=18208 runQwenServeToListenMs=4
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
qwen serve listening on http://127.0.0.1:33819 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
2026-07-31T12:20:04.773Z [INFO] [DAEMON] sessionId=sess-A SSE stream opened
2026-07-31T12:20:04.776Z [INFO] [DAEMON] sessionId=sess-A durationMs=3 SSE stream closed
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve listening on http://127.0.0.1:43669 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=18324 runQwenServeToListenMs=10
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
2026-07-31T12:20:04.889Z [INFO] [DAEMON] sessionId=sess-A SSE stream opened
qwen serve: bridge iterator error (session sess-A): agent died
2026-07-31T12:20:04.890Z [INFO] [DAEMON] sessionId=sess-A durationMs=1 SSE stream closed
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve listening on http://127.0.0.1:44569 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=18335 runQwenServeToListenMs=5
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
2026-07-31T12:20:04.900Z [INFO] [DAEMON] sessionId=sess-A SSE stream opened
qwen serve: bridge iterator error (session sess-A): AcpSessionBridge initialize timed out after 5000ms [init_timeout]
2026-07-31T12:20:04.901Z [INFO] [DAEMON] sessionId=sess-A durationMs=1 SSE stream closed
qwen serve listening on http://127.0.0.1:43383 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
2026-07-31T12:20:04.914Z [INFO] [DAEMON] sessionId=sess-A durationMs=3 SSE stream closed
qwen serve listening on http://127.0.0.1:43841 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
2026-07-31T12:20:04.925Z [INFO] [DAEMON] sessionId=sess-A durationMs=3 SSE stream closed
qwen serve listening on http://127.0.0.1:45231 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve listening on http://127.0.0.1:44277 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=18395 runQwenServeToListenMs=3
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve listening on http://127.0.0.1:44255 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve: /acp WebSocket transport enabled on /acp
2026-07-31T12:20:04.960Z [INFO] [DAEMON] sessionId=sess-A SSE stream opened
2026-07-31T12:20:04.960Z [INFO] [DAEMON] sessionId=sess-A durationMs=0 SSE stream closed
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve listening on http://127.0.0.1:44865 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=18407 runQwenServeToListenMs=7
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
qwen serve: rejected Last-Event-ID "abc" (not a decimal integer)
2026-07-31T12:20:04.972Z [INFO] [DAEMON] sessionId=sess-A SSE stream opened
2026-07-31T12:20:04.972Z [INFO] [DAEMON] sessionId=sess-A durationMs=0 SSE stream closed
qwen serve: rejected Last-Event-ID "-1" (not a decimal integer)
2026-07-31T12:20:04.980Z [INFO] [DAEMON] sessionId=sess-A SSE stream opened
2026-07-31T12:20:04.980Z [INFO] [DAEMON] sessionId=sess-A durationMs=0 SSE stream closed
qwen serve: rejected Last-Event-ID "1.5e10z" (not a decimal integer)
2026-07-31T12:20:04.983Z [INFO] [DAEMON] sessionId=sess-A SSE stream opened
 ✓ src/ui/hooks/useSlashCompletion.test.ts (30 tests) 932ms
2026-07-31T12:20:04.984Z [INFO] [DAEMON] sessionId=sess-A durationMs=1 SSE stream closed
 ✓ src/ui/hooks/useSelectionList.test.ts (50 tests) 126ms
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: fs audit emit is the default no-op — 1 event(s) dropped so far. Latest type=fs.access (intent=list pathHash=566c63e47cba903f). Inject deps.fsFactory in createServeApp to wire audit into the EventBus.
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: fs audit emit is the default no-op — 1 event(s) dropped so far. Latest type=fs.denied (errorKind=untrusted_workspace intent=write pathHash=303ee418a718dedd). Inject deps.fsFactory in createServeApp to wire audit into the EventBus.
[serve] auth.device-flow: provider=qwen-oauth deviceFlowId=c5c8513f... clientId=- status=started expiresInMs=600000
[serve] auth.device-flow: provider=qwen-oauth deviceFlowId=6c810eb3... clientId=- status=started expiresInMs=600000
[serve] auth.device-flow: provider=qwen-oauth deviceFlowId=c81c9586... clientId=sdk-A status=started expiresInMs=600000
[serve] auth.device-flow: provider=qwen-oauth deviceFlowId=c81c9586... clientId=sdk-B status=started hint="take-over (per-provider singleton; original initiator=sdk-A)"
[serve] auth.device-flow: provider=qwen-oauth deviceFlowId=075fa45b... clientId=- status=started expiresInMs=600000
 ✓ src/nonInteractiveCliCommands.test.ts (35 tests) 59ms
[serve] auth.device-flow: provider=qwen-oauth deviceFlowId=bb12ade8... clientId=- status=started expiresInMs=600000
[serve] auth.device-flow: provider=qwen-oauth deviceFlowId=4ad37f8d... clientId=- status=started expiresInMs=599999
[serve] auth.device-flow: provider=qwen-oauth deviceFlowId=4ad37f8d... clientId=- status=cancelled
[serve] auth.device-flow: provider=qwen-oauth deviceFlowId=6bf145e2... clientId=- status=started expiresInMs=600000
[serve] auth.device-flow: provider=qwen-oauth deviceFlowId=cb39ddeb... clientId=sdk-A status=started expiresInMs=600000
[serve] auth.device-flow: provider=qwen-oauth deviceFlowId=55b0b421... clientId=- status=started expiresInMs=600000
[serve] auth.device-flow: provider=qwen-oauth deviceFlowId=0df82b05... clientId=- status=started expiresInMs=600000
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=19018 runQwenServeToListenMs=5
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
2026-07-31T12:20:05.583Z [INFO] [DAEMON] sessionId=sess-A promptId=1facbc1b-0d1e-450c-9981-a28a740ac1e7 prompt enqueued
2026-07-31T12:20:05.584Z [INFO] [DAEMON] route=POST /session/sess-A/prompt sessionId=sess-A durationMs=1 status=202 request completed
qwen serve listening on http://127.0.0.1:33807 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
2026-07-31T12:20:05.634Z [INFO] [DAEMON] sessionId=sess-A promptId=1facbc1b-0d1e-450c-9981-a28a740ac1e7 prompt turn completed
]0;Qwen - cli                                                                      ]2;Qwen - cli                                                                      ]0;Qwen - cli                                                                      ]2;Qwen - cli                                                                      ]0;Qwen - root                                                                     ]2;Qwen - root                                                                     ]0;Qwen - root                                                                     ]2;Qwen - root                                                                     ]0;Qwen - root                                                                     ]2;Qwen - root                                                                      ✓ src/gemini.test.tsx (26 tests) 5492ms
   ✓ gemini.tsx main function > verifies that we dont load the config before relaunchAppInChildProcess  607ms
   ✓ gemini.tsx main function > should skip full settings discovery in bare mode  538ms
   ✓ gemini.tsx main function > passes the outer session ID into the sandbox child process  504ms
   ✓ gemini.tsx main function > does not pass an empty session ID into the sandbox child process  502ms
   ✓ gemini.tsx main function > does not inject sandbox session ID when argv contains --continue  505ms
   ✓ gemini.tsx main function > does not inject sandbox session ID when argv contains -c  507ms
   ✓ gemini.tsx main function > does not inject sandbox session ID when argv contains --resume  504ms
   ✓ gemini.tsx main function > does not inject sandbox session ID when argv contains -r  507ms
   ✓ gemini.tsx main function > does not inject sandbox session ID when argv contains --session-id  507ms
   ✓ gemini.tsx main function > inserts the sandbox session ID before the argument separator  503ms
 ✓ src/ui/components/messages/ToolMessage.test.tsx (45 tests) 2511ms
 ✓ src/ui/components/MainContent.test.tsx (14 tests) 1619ms
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve listening on http://127.0.0.1:36099 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=20239 runQwenServeToListenMs=3
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
2026-07-31T12:20:06.803Z [INFO] [DAEMON] sessionId=sess-A SSE stream opened
qwen serve: evicting SSE client (session sess-A) — writer idle for 251ms > 200ms timeout
2026-07-31T12:20:07.055Z [INFO] [DAEMON] sessionId=sess-A durationMs=252 SSE stream closed
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve listening on http://127.0.0.1:35217 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=20507 runQwenServeToListenMs=10
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
2026-07-31T12:20:07.078Z [INFO] [DAEMON] sessionId=sess-A SSE stream opened
 ✓ src/serve/acp-http/transport.test.ts (173 tests) 10178ms
 ✓ src/ui/commands/languageCommand.test.ts (49 tests) 81ms
 ✓ src/nonInteractive/control/ControlDispatcher.test.ts (35 tests) 94ms
]0;Qwen - workspace                                                                ]2;Qwen - workspace                                                                 ✓ src/ui/utils/commandUtils.test.ts (56 tests) 66ms
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve listening on http://127.0.0.1:37397 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=21160 runQwenServeToListenMs=20
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
2026-07-31T12:20:07.724Z [INFO] [DAEMON] sessionId=sess-A durationMs=646 SSE stream closed
2026-07-31T12:20:07.725Z [INFO] [DAEMON] sessionId=sess-A SSE stream opened
 ✓ src/nonInteractive/session.test.ts (27 tests) 387ms
 ✓ src/ui/commands/copyCommand.test.ts (37 tests) 62ms
 ✓ src/ui/hooks/use-voice-input.test.ts (23 tests) 185ms
 ✓ src/acp-integration/session/SubAgentTracker.test.ts (28 tests) 490ms
qwen serve: daemon log → /build/.qwen/debug/daemon/serve-3243-9f1b7a7f.log
qwen serve: Web Shell UI served from /startdir/src/qwen-code/packages/web-shell/dist
qwen serve: bound to workspace "/startdir/src/qwen-code/packages/cli"
qwen serve: startup timing: processToListenMs=21881 runQwenServeToListenMs=4
qwen serve: bearer auth disabled (loopback default). Set QWEN_SERVER_TOKEN to enable.
qwen serve: /acp WebSocket transport enabled on /acp
2026-07-31T12:20:08.444Z [INFO] [DAEMON] sessionId=sess-A durationMs=719 SSE stream closed
2026-07-31T12:20:08.445Z [INFO] [DAEMON] sessionId=sess-A SSE stream opened
qwen serve listening on http://127.0.0.1:40427 (mode=http-bridge, workspace=/startdir/src/qwen-code/packages/cli)
2026-07-31T12:20:08.809Z [INFO] [DAEMON] sessionId=sess-A durationMs=364 SSE stream closed
]0;Qwen - workspace                                                                ]2;Qwen - workspace                                                                qwen serve: bridge error (POST /session): Error: legacy-stderr-test-boom
    at spawnImpl (/startdir/src/qwen-code/packages/cli/src/serve/server.test.ts:13331:15)
    at Object.spawnOrAttach (/startdir/src/qwen-code/packages/cli/src/serve/server.test.ts:1178:28)
    at /startdir/src/qwen-code/packages/cli/src/serve/routes/session.ts:97:36
    at Layer.handleRequest (/startdir/src/qwen-code/node_modules/router/lib/layer.js:152:17)
    at next (/startdir/src/qwen-code/node_modules/router/lib/route.js:157:13)
    at passthrough (/startdir/src/qwen-code/packages/cli/src/serve/auth.ts:401:8)
    at Layer.handleRequest (/startdir/src/qwen-code/node_modules/router/lib/layer.js:152:17)
    at next (/startdir/src/qwen-code/node_modules/router/lib/route.js:157:13)
    at Route.dispatch (/startdir/src/qwen-code/node_modules/router/lib/route.js:117:3)
    at handle (/startdir/src/qwen-code/node_modules/router/index.js:435:11)
 ✓ src/utils/errors.test.ts (42 tests) 61ms
qwen serve: createServeApp default fsFactory uses trusted=false — agent ACP writeTextFile calls will reject with untrusted_workspace. Inject deps.fsFactory (with explicit trust) or deps.bridge to override.
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
 ✓ src/serve/server.test.ts (532 tests) 11983ms
   ✓ createServeApp > read-only status routes > evicts the oldest terminal extension operations  2666ms
   ✓ T2.9 SSE writer idle timeout (issue #4514) > does not evict when the writer idle timeout is unset (legacy contract)  642ms
   ✓ T2.9 SSE writer idle timeout (issue #4514) > does NOT evict when active writes keep refreshing lastWriteAt (#4514 T2.9 wenshao review)  737ms
   ✓ T2.9 SSE writer idle timeout (issue #4514) > does NOT evict when a back-pressured write drains within the idle budget  369ms
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
 ✓ src/ui/hooks/useHistoryManager.test.ts (22 tests) 89ms
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
 ✓ src/acp-integration/session/emitters/ToolCallEmitter.test.ts (47 tests) 47ms
 ✓ src/serve/routes/workspace-voice.test.ts (29 tests) 552ms
(node:5619) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 resize listeners added to [Socket]. MaxListeners is 10. Use emitter.setMaxListeners() to increase limit
(Use `node --trace-warnings ...` to show where the warning was created)
 ✓ src/ui/components/background-view/BackgroundTasksDialog.test.tsx (36 tests) 4383ms
 ✓ src/utils/memoryDiagnostics.test.ts (23 tests) 98ms
 ✓ src/ui/hooks/useCommandCompletion.test.ts (29 tests) 200ms
 ✓ src/ui/utils/osc8.test.ts (81 tests) 23ms
 ✓ src/services/prompt-processors/shellProcessor.test.ts (34 tests) 70ms
 ✓ src/ui/hooks/useToolScheduler.test.ts (19 tests) 150ms
(node:6325) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 resize listeners added to [Socket]. MaxListeners is 10. Use emitter.setMaxListeners() to increase limit
(Use `node --trace-warnings ...` to show where the warning was created)
 ✓ src/ui/daemon/daemon-tui-adapter.test.ts (14 tests) 59ms
 ✓ src/acp-integration/session/HistoryReplayer.test.ts (26 tests) 32ms
 ✓ src/ui/components/StandaloneSessionPicker.test.tsx (19 tests) 771ms
 ✓ src/ui/components/shared/text-buffer-external-editor.test.ts (36 tests) 127ms
 ✓ src/ui/utils/mermaidImageRenderer.test.ts (25 tests) 1420ms
   ✓ mermaid image renderer > evicts Mermaid image caches by retained byte size  509ms
 ✓ src/ui/components/extensions/ExtensionsManagerDialog.test.tsx (23 tests) 3781ms
   ✓ ExtensionsManagerDialog (tabbed) > Browse plugins jumps to Discover filtered by the marketplace  312ms
 ✓ src/ui/utils/mergeCompactToolGroups.test.ts (32 tests) 12ms
 ✓ src/config/trustedFolders.test.ts (36 tests) 66ms
 ✓ src/ui/hooks/shellCommandProcessor.test.ts (22 tests) 519ms
 ✓ src/ui/components/background-view/LiveAgentPanel.test.tsx (26 tests) 1788ms
 ✓ src/utils/installationInfo.test.ts (27 tests) 21ms
 ✓ src/nonInteractive/io/JsonOutputAdapter.test.ts (35 tests) 28ms
 ✓ src/utils/languageUtils.test.ts (52 tests) 28ms
 ✓ src/ui/commands/clearCommand.test.ts (15 tests) 69ms
 ✓ src/ui/hooks/useBackgroundTaskView.test.ts (16 tests) 62ms
 ✓ src/ui/hooks/useResumeCommand.test.ts (11 tests) 74ms
 ✓ src/ui/utils/TableRenderer.test.tsx (60 tests) 4102ms
   ✓ <TableRenderer /> > stays stable across multiple content widths  368ms
 ✓ src/ui/keyMatchers.test.ts (46 tests) 17ms
 ✓ src/ui/utils/MarkdownDisplay.test.tsx (101 tests) 5870ms
 ✓ src/serve/bridge-file-system-adapter.test.ts (18 tests) 78ms
 ✓ src/ui/commands/diffCommand.test.ts (25 tests) 32ms
 ✓ src/ui/hooks/useBranchCommand.test.ts (17 tests) 114ms
 ✓ src/ui/commands/directoryCommand.test.tsx (25 tests) 26ms
 ✓ src/serve/auth/qwen-device-flow-provider.test.ts (12 tests) 22ms
 ✓ src/acp-integration/session/Session.test.ts (172 tests) 22295ms
   ✓ Session > prompt > auto-compress > latches mid-turn drain off after repeated timeouts when the client never responds  6046ms
   ✓ Session > prompt > auto-compress > resets the timeout strike count when a drain succeeds  8068ms
   ✓ Session > prompt > auto-compress > recovers a drain that timed out and injects it on the next batch  2082ms
 ✓ src/ui/AppContainer.test.tsx (95 tests) 16499ms
   ✓ AppContainer State Management > Basic Rendering > renders without crashing with minimal props  315ms
   ✓ AppContainer State Management > Terminal Height Calculation > does not remeasure footer height for sticky todo status-only updates  386ms
   ✓ AppContainer State Management > handleRewindConfirm > skips conversation truncation when both-mode file restore fails  488ms
   ✓ AppContainer State Management > handleRewindConfirm > surfaces unexpected outer errors through history  809ms
 ✓ src/validateNonInterActiveAuth.test.ts (13 tests) 62ms
 ✓ src/config/settingsSchema.test.ts (29 tests) 20ms
 ✓ src/ui/utils/customBanner.test.ts (40 tests) 56ms
 ✓ src/ui/components/agent-view/agentHistoryAdapter.test.ts (35 tests) 36ms
 ✓ src/utils/handleAutoUpdate.test.ts (24 tests) 244ms
 ✓ src/ui/hooks/useSessionSearchInput.test.ts (36 tests) 77ms
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: GET /file rejected request missing required ?path
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: GET /stat unexpected error: bound workspace is not configured
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
 ✓ src/config/migration/versions/v2-to-v3.test.ts (31 tests) 16ms
 ✓ src/serve/routes/workspace-file-read.test.ts (31 tests) 474ms
 ✓ src/ui/hooks/useAutoAcceptIndicator.test.ts (15 tests) 81ms
 ✓ src/acp-integration/acpAgent.worktree.test.ts (3 tests) 192ms
 ✓ src/config/jsonSchemaArg.test.ts (40 tests) 426ms
(node:7695) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 exit listeners added to [process]. MaxListeners is 10. Use emitter.setMaxListeners() to increase limit
(Use `node --trace-warnings ...` to show where the warning was created)
 ✓ src/startup/worktreeStartup.test.ts (18 tests) 4113ms
   ✓ setupStartupWorktree > creates a worktree with an auto-generated slug for bare --worktree  339ms
   ✓ setupStartupWorktree > creates a worktree with an explicit slug  325ms
   ✓ setupStartupWorktree > creates a pr-<N> worktree from FETCH_HEAD when fetch succeeds (local fake remote)  647ms
   ✓ setupStartupWorktree > re-attaches to an existing worktree instead of erroring (Phase 6 G1 fix)  525ms
   ✓ persistStartupWorktreeSidecar > adopts a stale marker when re-attaching to an inactive owner  460ms
   ✓ persistStartupWorktreeSidecar > keeps the marker when the owner runtime is still active  422ms
   ✓ persistStartupWorktreeSidecar > finds an active owner under a repo-subdir relative runtime dir  402ms
qwen serve: POST /workspace/memory refused — existing file /tmp/qwen-serve-memory-CfpUUZ/workspace/QWEN.md is 17825792 bytes (cap 16777216)
qwen serve: POST /workspace/memory failed (scope=workspace mode=append): Error: EACCES: permission denied, open '/tmp/qwen-serve-memory-02XhY3/workspace/QWEN.md'
    at open (node:internal/fs/promises:1360:25)
    at Object.writeFile (node:internal/fs/promises:2104:14)
    at runWrite (/startdir/src/qwen-code/packages/core/src/memory/writeContextFile.ts:215:3)
    at /startdir/src/qwen-code/packages/core/src/memory/writeContextFile.ts:161:19
qwen serve: POST /workspace/memory failed (scope=workspace mode=append): Error: EACCES: permission denied, open '/tmp/qwen-serve-memory-02XhY3/workspace/QWEN.md'
    at open (node:internal/fs/promises:1360:25)
    at Object.writeFile (node:internal/fs/promises:2104:14)
    at runWrite (/startdir/src/qwen-code/packages/core/src/memory/writeContextFile.ts:215:3)
    at /startdir/src/qwen-code/packages/core/src/memory/writeContextFile.ts:161:19
qwen serve: GET /workspace/memory failed: Error: boom
    at Storage.<anonymous> (/startdir/src/qwen-code/packages/cli/src/serve/workspace-memory.test.ts:452:17)
    at Storage.mockCall (file:///startdir/src/qwen-code/node_modules/@vitest/spy/dist/index.js:96:15)
    at Storage.getGlobalQwenDir (file:///startdir/src/qwen-code/node_modules/tinyspy/dist/index.js:47:103)
    at collectWorkspaceMemoryStatus (/startdir/src/qwen-code/packages/cli/src/serve/workspace-memory.ts:340:29)
    at /startdir/src/qwen-code/packages/cli/src/serve/workspace-memory.ts:88:22
 ✓ src/ui/components/shared/VirtualizedList.test.tsx (20 tests) 4462ms
   ✓ <VirtualizedList /> > scrollTo > scrollTo middle offset positions correctly  336ms
   ✓ <VirtualizedList /> > auto-scroll during streaming > does NOT auto-scroll when user has scrolled away from bottom  312ms
   ✓ <VirtualizedList /> > auto-scroll during streaming > re-engages auto-scroll when user scrolls back to bottom  401ms
 ✓ src/serve/workspace-memory.test.ts (17 tests) 188ms
 ✓ src/serve/fs/paths.test.ts (29 tests) 58ms
 ✓ src/ui/commands/renameCommand.test.ts (22 tests) 54ms
 ✓ src/serve/auth.test.ts (27 tests) 13ms
 ✓ src/ui/hooks/useExtensionUpdates.test.ts (15 tests) 361ms
 ✓ src/ui/components/shared/BaseSelectionList.test.tsx (26 tests) 1463ms
 ✓ src/ui/hooks/useProviderUpdates.test.ts (15 tests) 333ms
 ✓ src/ui/components/StatsDisplay.test.tsx (17 tests) 1145ms
 ✓ src/ui/hooks/useDeleteCommand.test.ts (14 tests) 101ms
 ✓ src/ui/commands/btwCommand.test.ts (23 tests) 70ms
 ✓ src/config/hot-reload.test.ts (24 tests) 75ms
 ✓ src/services/SkillCommandLoader.test.ts (24 tests) 23ms
 ✓ src/serve/routes/a2ui-action.test.ts (19 tests) 154ms
 ✓ src/ui/components/messages/ToolConfirmationMessage.test.tsx (21 tests) 1282ms
 ✓ src/ui/voice/voice-keyterms.test.ts (28 tests) 70ms
 ✓ src/commands/sessions/list.test.ts (25 tests) 28ms
 ✓ src/services/McpPromptLoader.test.ts (27 tests) 21ms
 ✓ src/ui/components/ModelStatsDisplay.test.tsx (16 tests) 1125ms
 ✓ src/ui/utils/resumeHistoryUtils.test.ts (18 tests) 18ms
 ✓ src/utils/startupProfiler.test.ts (21 tests) 58ms
 ✓ src/commands/mcp/add.test.ts (27 tests) 175ms
 ✓ src/services/CommandService.test.ts (17 tests) 40ms
 ✓ src/ui/components/hooks/constants.test.ts (47 tests) 47ms
 ✓ src/ui/utils/InlineMarkdownRenderer.test.tsx (23 tests) 1053ms
 ✓ src/utils/standalone-update.test.ts (20 tests) 20ms
 ✓ src/serve/routes/workspace-setup-github.test.ts (12 tests) 313ms
 ✓ src/ui/commands/tasksCommand.test.ts (10 tests) 22ms
 ✓ src/config/auth.test.ts (21 tests) 56ms
 ✓ src/ui/components/HistoryItemDisplay.test.tsx (27 tests) 1526ms
 ✓ src/commands/extensions/install.test.ts (16 tests) 28ms
 ✓ src/utils/systemInfo.test.ts (22 tests) 33ms
 ✓ src/config/migration/index.test.ts (30 tests) 14ms
 ✓ src/services/BundledSkillLoader.test.ts (23 tests) 51ms
 ✓ src/serve/rate-limit.test.ts (25 tests) 1524ms
   ✓ rateLimit > fail-open > passes through when bucket map is at capacity  1497ms
Error parsing settings file.
Settings file may be corrupted: Unexpected end of JSON input
 ✓ src/utils/commentJson.test.ts (18 tests) 24ms
 ✓ src/serve/workspace-service/__tests__/integration.test.ts (13 tests) 190ms
 ✓ src/ui/commands/workflowsCommand.test.ts (15 tests) 44ms
 ✓ src/ui/utils/textUtils.test.ts (29 tests) 22ms
 ✓ src/ui/utils/historyMapping.test.ts (23 tests) 13ms
 ✓ src/ui/commands/cdCommand.test.ts (18 tests) 110ms
Invalid values:
  Argument: approval-mode, Given: "invalid_mode", Choices: "plan", "default", "auto-edit", "auto", "yolo"
Cannot use both --yolo (-y) and --approval-mode together. Use --approval-mode=yolo instead.
process.exit unexpectedly called with "1"
 ✓ src/config/config.integration.test.ts (25 tests) 199ms
 ✓ src/ui/components/Composer.test.tsx (20 tests) 852ms
 ✓ src/config/claudeMcpImport.test.ts (14 tests) 30ms
 ✓ src/ui/components/LoadingIndicator.test.tsx (27 tests) 1188ms
 ✓ src/ui/utils/statsDataService.test.ts (17 tests) 30ms
 ✓ src/ui/commands/arenaCommand.test.ts (15 tests) 56ms
qwen serve: --rate-limit-prompt must be a positive integer.
qwen serve: --rate-limit-mutation must be a positive integer.
qwen serve: --rate-limit-read must be a positive integer.
qwen serve: --rate-limit-window-ms must be an integer >= 1000.
qwen serve: --open passes the token in the browser launch command (visible via `ps` / /proc); on a multi-user host open the URL manually instead.
qwen serve: failed to open browser: boom
 ✓ src/serve/routes/workspace-permissions.test.ts (10 tests) 217ms
 ✓ src/ui/components/messages/AskUserQuestionDialog.test.tsx (18 tests | 1 skipped) 3006ms
   ✓ <AskUserQuestionDialog /> > single-select interaction > keeps bare k/j in custom input while Ctrl+P/N still navigates options  374ms
   ✓ <AskUserQuestionDialog /> > multiple questions > does not auto-submit when pressing number key on Submit tab  322ms
 ✓ src/ui/hooks/useQwenAuth.test.ts (17 tests) 50ms
 ✓ src/ui/commands/aboutCommand.test.ts (12 tests) 49ms
 ✓ src/ui/commands/goalCommand.test.ts (18 tests) 89ms
 ✓ src/acp-integration/session/rewrite/MessageRewriteMiddleware.test.ts (12 tests) 28ms
 ✓ src/ui/hooks/useLoadingIndicator.test.ts (11 tests) 108ms
 ✓ src/ui/components/QwenOAuthProgress.test.tsx (18 tests) 1207ms
 ✓ src/ui/auth/useAuth.test.ts (23 tests) 80ms
 ✓ src/ui/voice/qwen-asr-realtime-session.test.ts (12 tests) 61ms
 ✓ src/ui/components/messages/DiffRenderer.test.tsx (16 tests) 1188ms
 ✓ src/commands/extensions/settings.test.ts (20 tests) 81ms
Fatal error: Failed to relaunch the CLI process.
PROCESS_EXIT_CALLED
Fatal error: Failed to relaunch the CLI process.
PROCESS_EXIT_CALLED
Fatal error: Failed to relaunch the CLI process.
Runner failed
Fatal error: Failed to relaunch the CLI process.
PROCESS_EXIT_CALLED
Fatal error: Failed to relaunch the CLI process.
PROCESS_EXIT_CALLED
 ✓ src/serve/workspace-providers-status.test.ts (10 tests) 73ms
 ✓ src/utils/relaunch.test.ts (9 tests) 32ms
 ✓ src/utils/cpuProfiler.test.ts (21 tests) 47ms
 ✓ src/ui/components/shared/ScrollableList.test.tsx (13 tests) 3019ms
   ✓ <ScrollableList /> mouse scrolling > routes wheel SGR events to viewport scroll (window shifts)  325ms
   ✓ <ScrollableList /> mouse scrolling > keeps dragging after the pointer leaves the scrollbar column  339ms
   ✓ <ScrollableList /> keyboard scroll > PageUp scrolls up by one page (containerHeight lines)  431ms
 ✓ src/utils/doctorChecks.test.ts (18 tests) 48ms
 ✓ src/utils/apiPreconnect.test.ts (26 tests) 18ms
 ✓ src/commands/mcp/reconnect.test.ts (9 tests) 28ms
 ✓ src/acp-integration/session/emitters/MessageEmitter.test.ts (20 tests) 25ms
 ✓ src/ui/themes/detect-terminal-theme.test.ts (29 tests) 47ms
 ✓ src/serve/fs/audit.test.ts (13 tests) 10ms
2026-07-31T12:20:38.517Z [ERROR] [DAEMON] route=POST /x route failed
  Error: boom
      at /startdir/src/qwen-code/packages/cli/src/serve/daemon-logger.test.ts:260:17
      at file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:155:11
      at file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:752:26
      at file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1897:20
      at new Promise (<anonymous>)
      at runWithTimeout (file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1863:10)
      at runTest (file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1574:12)
      at runSuite (file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1729:8)
      at runSuite (file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1729:8)
      at runFiles (file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1787:3)
2026-07-31T12:20:38.525Z [INFO] [DAEMON] msg-0
2026-07-31T12:20:38.525Z [INFO] [DAEMON] msg-1
2026-07-31T12:20:38.525Z [INFO] [DAEMON] msg-2
2026-07-31T12:20:38.525Z [INFO] [DAEMON] msg-3
2026-07-31T12:20:38.525Z [INFO] [DAEMON] msg-4
2026-07-31T12:20:38.525Z [INFO] [DAEMON] msg-5
2026-07-31T12:20:38.525Z [INFO] [DAEMON] msg-6
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-7
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-8
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-9
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-10
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-11
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-12
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-13
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-14
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-15
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-16
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-17
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-18
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-19
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-20
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-21
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-22
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-23
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-24
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-25
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-26
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-27
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-28
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-29
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-30
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-31
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-32
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-33
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-34
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-35
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-36
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-37
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-38
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-39
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-40
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-41
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-42
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-43
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-44
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-45
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-46
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-47
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-48
2026-07-31T12:20:38.526Z [INFO] [DAEMON] msg-49
 ✓ src/serve/daemon-logger.test.ts (21 tests) 208ms
 ✓ src/services/commandMetadata.test.ts (37 tests) 14ms
 ✓ src/commands/extensions/consent.test.ts (21 tests) 17ms
 ✓ src/ui/commands/restoreCommand.test.ts (16 tests) 118ms
 ✓ src/ui/utils/todoSnapshot.test.ts (15 tests) 7ms
 ✓ src/utils/sessionPaths.test.ts (8 tests) 99ms
 ✓ src/ui/statusLinePresets.test.ts (18 tests) 24ms
 ✓ src/utils/housekeeping/scheduler.test.ts (13 tests) 45ms
 ✓ src/commands/serve.test.ts (22 tests) 6133ms
   ✓ serve startup import boundary > reaches listening through the dev entrypoint without loading interactive Ink internals first  5987ms
 ✓ src/ui/components/Footer.test.tsx (19 tests) 1085ms
 ✓ src/ui/components/shared/MaxSizedBox.test.tsx (21 tests) 1049ms
 ✓ src/utils/warningHandler.test.ts (13 tests) 296ms
 ✓ src/ui/auth/ProviderSetupSteps.test.tsx (6 tests) 926ms
   ✓ ProviderSetupSteps > filters recommended models when typing search while recommendations are focused  309ms
 ✓ src/utils/earlyInputCapture.test.ts (28 tests) 32ms
 ✓ src/ui/commands/contextCommand.test.ts (9 tests) 56ms
 ✓ src/services/setup-github.test.ts (10 tests) 50ms
 ✓ src/serve/daemon-status.test.ts (5 tests) 25ms
 ✓ src/services/BuiltinCommandLoader.test.ts (11 tests) 26ms
 ✓ src/ui/commands/forkCommand.test.ts (15 tests) 24ms
 ✓ src/dualOutput/DualOutputBridge.test.ts (19 tests) 128ms
 ✓ src/ui/utils/restoreGoal.test.ts (20 tests) 13ms
 ✓ src/ui/hooks/useShellHistory.test.ts (9 tests) 848ms
 ✓ src/serve/fs/contract.test.ts (10 tests) 30ms
Warning: MCP approvals file error: MCP approvals file is not a valid JSON object.
Warning: MCP approvals file error: Expected property name or '}' in JSON at position 1 (line 1 column 2)
 ✓ src/services/FileCommandLoader-extension.test.ts (6 tests) 62ms
 ✓ src/config/mcpApprovals.test.ts (20 tests) 58ms
 ✓ src/ui/themes/color-utils.test.ts (23 tests) 26ms
 ✓ src/ui/components/RewindSelector.test.tsx (10 tests) 1526ms
 ✓ src/ui/components/hooks/HookConfigDetailStep.test.tsx (17 tests) 1176ms
 ✓ src/utils/housekeeping/cleanup.test.ts (15 tests) 99ms
 ✓ src/ui/components/hooks/HooksManagementDialog.test.tsx (8 tests) 2436ms
   ✓ HooksManagementDialog > should navigate from a matcher hook to matcher detail  521ms
   ✓ HooksManagementDialog > should navigate from matcher detail to config detail  462ms
   ✓ HooksManagementDialog > should navigate directly from a non-matcher hook to config detail  842ms
 ✓ src/utils/osc.test.ts (30 tests) 11ms
 ✓ src/commands/extensions/update.test.ts (14 tests) 34ms
 ✓ src/acp-integration/session/Session.worktree.test.ts (4 tests) 27ms
 ✓ src/ui/commands/extensionsCommand.test.ts (11 tests) 34ms
 ✓ src/ui/components/Help.test.tsx (8 tests) 959ms
 ✓ src/ui/themes/theme-manager.test.ts (19 tests) 32ms
 ✓ src/ui/hooks/extension-mention-ref.test.ts (24 tests) 20ms
 ✓ src/serve/env-snapshot.test.ts (13 tests) 398ms
 ✓ src/ui/hooks/useKeypress.test.ts (15 tests) 82ms
 ✓ src/services/command-migration-tool.test.ts (14 tests) 70ms
 ✓ src/ui/components/hooks/HookDetailStep.test.tsx (14 tests) 806ms
 ✓ src/config/migration/versions/v3-to-v4.test.ts (32 tests) 13ms
 ✓ src/ui/components/messages/CompactToolGroupDisplay.test.tsx (19 tests) 283ms
 ✓ src/utils/envVarResolver.test.ts (16 tests) 8ms
 ✓ src/ui/commands/insightCommand.test.ts (5 tests) 24ms
 ✓ src/utils/writeWithBackup.test.ts (13 tests) 12ms
 ✓ src/utils/runBudget.test.ts (42 tests) 23ms
 ✓ src/ui/commands/ideCommand.test.ts (8 tests) 25ms
 ✓ src/services/prompt-processors/injectionParser.test.ts (21 tests) 16ms
 ✓ src/commands/mcp/list.test.ts (7 tests) 16ms
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
 ✓ src/ui/components/ShellConfirmationDialog.test.tsx (12 tests) 842ms
 ✓ src/acp-integration/session/rewrite/LlmRewriter.test.ts (9 tests) 10ms
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
qwen serve: session reaper started (interval 60000ms, idle threshold 1800000ms)
 ✓ src/acp-integration/session/emitters/PlanEmitter.test.ts (19 tests) 14ms
 ✓ src/serve/routes/workspace-file-write.test.ts (10 tests) 351ms
 ✓ src/ui/components/messages/InlineParallelAgentsDisplay.test.tsx (6 tests) 350ms
 ✓ src/ui/hooks/useInputHistoryStore.test.ts (14 tests) 106ms
 ✓ src/ui/components/MemoryDialog.test.tsx (7 tests) 1248ms
 ✓ src/ui/commands/compressCommand.test.ts (10 tests) 50ms
 ❯ src/ui/auth/AuthDialog.test.tsx (25 tests | 10 failed) 55138ms
   ✓ AuthDialog > should show an error if the initial auth type is invalid 99ms
   ✓ AuthDialog > GEMINI_API_KEY environment variable > should detect GEMINI_API_KEY environment variable 45ms
   ✓ AuthDialog > GEMINI_API_KEY environment variable > should not show the GEMINI_API_KEY message if QWEN_DEFAULT_AUTH_TYPE is set to something else 32ms
   ✓ AuthDialog > GEMINI_API_KEY environment variable > should show the GEMINI_API_KEY message if QWEN_DEFAULT_AUTH_TYPE is set to use api key 29ms
   ✓ AuthDialog > QWEN_DEFAULT_AUTH_TYPE environment variable > should select the auth type specified by QWEN_DEFAULT_AUTH_TYPE 26ms
   ✓ AuthDialog > QWEN_DEFAULT_AUTH_TYPE environment variable > should fall back to default if QWEN_DEFAULT_AUTH_TYPE is not set 24ms
   ✓ AuthDialog > QWEN_DEFAULT_AUTH_TYPE environment variable > should show an error and fall back to default if QWEN_DEFAULT_AUTH_TYPE is invalid 26ms
   ✓ AuthDialog > should prevent exiting when no auth method is selected and show error message 137ms
   ✓ AuthDialog > should not exit if there is already an error message 112ms
   ✓ AuthDialog > should allow exiting when auth method is already selected 111ms
   ✓ AuthDialog > should preserve the selected main entry when returning from each top-level flow  801ms
   ✓ AuthDialog > should go back from Coding Plan region selection to Alibaba ModelStudio  302ms
   × AuthDialog > should go back from third-party provider API key input to provider list 5232ms
     → expected '┌────────────────────────────────────…' to contain 'DeepSeek API Key · Step 1/2 · API Key'
   ✓ AuthDialog > should show preset providers in third-party provider options 267ms
   × AuthDialog > drives API key provider steps from endpoint options metadata 5211ms
     → expected '┌────────────────────────────────────…' to contain 'DeepSeek API Key · Step 1/2 · API Key'
   ✓ AuthDialog > should show Alibaba ModelStudio access methods after selecting Alibaba ModelStudio 221ms
   × AuthDialog > should submit Token Plan through the shared subscription handler 5708ms
     → expected "spy" to be called at least once
   × AuthDialog > should pre-fill the Model IDs step with previously saved custom model IDs 5124ms
     → expected '┌────────────────────────────────────…' to match /›\s*(?:\d+\.\s*)?Token Plan/
   ✓ AuthDialog > should return from Token Plan API key input to Token Plan selection  457ms
   × AuthDialog Custom API Key Wizard > navigates to protocol selection when Custom API Key is selected 5108ms
     → expected '┌────────────────────────────────────…' to match /›\s*(?:\d+\.\s*)?Custom Provider/
   × AuthDialog Custom API Key Wizard > navigates to base URL input after selecting a protocol 5334ms
     → expected '┌────────────────────────────────────…' to contain 'Custom Provider · Step 2/6 · Base URL'
   × AuthDialog Custom API Key Wizard > shows review screen with JSON after entering model IDs 5151ms
     → expected '┌────────────────────────────────────…' to match /›\s*(?:\d+\.\s*)?Custom Provider/
   × AuthDialog Custom API Key Wizard > calls handleProviderSubmit on Enter in review view 5092ms
     → expected '┌────────────────────────────────────…' to match /›\s*(?:\d+\.\s*)?Custom Provider/
   × AuthDialog Custom API Key Wizard > shows advanced config screen after entering model IDs 5110ms
     → expected '┌────────────────────────────────────…' to match /›\s*(?:\d+\.\s*)?Custom Provider/
   × AuthDialog Custom API Key Wizard > passes generationConfig when advanced options are toggled 5373ms
     → expected '┌────────────────────────────────────…' to contain 'Custom Provider · Step 3/6 · API Key'
 ✓ src/ui/voice/native-audio-recorder.test.ts (12 tests) 26ms
 ✓ src/ui/hooks/useSessionPicker.test.tsx (8 tests) 118ms
 ✓ src/ui/hooks/useInputHistory.test.ts (11 tests) 65ms
 ✓ src/ui/hooks/useEditorSettings.test.ts (10 tests) 96ms
 ✓ src/ui/hooks/useMessageQueue.test.ts (16 tests) 61ms
 ✓ src/ui/components/hooks/HandlerListBody.test.tsx (11 tests) 748ms
 ✓ src/ui/utils/asciiCharts.test.ts (21 tests) 53ms
 ✓ src/config/migration/versions/v1-to-v2.test.ts (20 tests) 11ms
 ✓ src/ui/hooks/useReverseSearchCompletion.test.tsx (10 tests) 50ms
 ✓ src/utils/gitUtils.test.ts (33 tests) 44ms
 ✓ src/ui/components/StatusLineDialog.test.tsx (5 tests) 1114ms
   ✓ StatusLineDialog > keeps preset priority order after an item is toggled off and on  482ms
 ✓ src/ui/utils/computeStats.test.ts (12 tests) 12ms
 ✓ src/services/prompt-processors/atFileProcessor.test.ts (11 tests) 23ms
 ✓ src/serve/fs/policy.test.ts (18 tests) 49ms
 ✓ src/ui/hooks/useCompletion.test.ts (13 tests) 59ms
 ✓ src/ui/hooks/useExportCompletion.test.ts (20 tests) 69ms
 ✓ src/commands/channel/start.test.ts (5 tests) 24ms
 ✓ src/ui/utils/formatters.test.ts (33 tests) 13ms
 ✓ src/ui/commands/voice-command.test.ts (11 tests) 17ms
 ✓ src/ui/commands/lspCommand.test.ts (9 tests) 27ms
 ✓ src/ui/components/PluginChoicePrompt.test.tsx (13 tests) 957ms
 ✓ src/ui/commands/setupGithubCommand.test.ts (9 tests) 108ms
 ✓ src/serve/daemon-status-provider.test.ts (4 tests) 678ms
 ✓ src/ui/contexts/SessionContext.test.tsx (6 tests) 356ms
 ✓ src/ui/hooks/useAttentionNotifications.test.ts (9 tests) 50ms
 ✓ src/serve/permission-audit.test.ts (10 tests) 9ms
 ✓ src/ui/hooks/useTurnDiffs.test.ts (7 tests) 325ms
 ✓ src/ui/components/SettingsCorruptedDialog.test.tsx (8 tests) 1669ms
   ✓ SettingsCorruptedDialog > should call onContinue when pressing Enter on CONTINUE option  309ms
 ✓ src/ui/commands/bugCommand.test.ts (4 tests) 40ms
 ✓ src/services/voice-service.test.ts (9 tests) 23ms
 ✓ src/acp-integration/service/filesystem.test.ts (8 tests) 10ms
 ✓ src/ui/hooks/useIdeTrustListener.test.ts (5 tests) 54ms
 ✓ src/commands/channel/pidfile.test.ts (16 tests) 327ms
 ✓ src/ui/components/hooks/matcherGrouping.test.ts (13 tests) 8ms
 ✓ src/ui/hooks/useMemoryMonitor.test.ts (8 tests) 32ms
 ✓ src/ui/hooks/useTrustModify.test.ts (8 tests) 59ms
 ✓ src/ui/components/background-view/BackgroundTasksPill.test.tsx (19 tests) 28ms
 ✓ src/ui/commands/skillsCommand.test.ts (9 tests) 25ms
 ✓ src/ui/hooks/useMcpApproval.test.ts (9 tests) 52ms
 ✓ src/ui/hooks/useTimer.test.ts (13 tests) 59ms
 ✓ src/ui/voice/voice-recorder.test.ts (8 tests) 27ms
 ✓ src/ui/commands/hooksCommand.test.ts (8 tests) 37ms
 ✓ src/serve/fs/errors.test.ts (20 tests) 10ms
 ✓ src/commands/extensions/new.test.ts (9 tests) 95ms
 ✓ src/commands/extensions/sources.test.ts (11 tests) 43ms
 ✓ src/utils/windowTitle.test.ts (21 tests) 11ms
 ✓ src/commands/channel/config-utils.test.ts (17 tests) 18ms
 ✓ src/ui/voice/voice-stream-session.test.ts (10 tests) 20ms
 ✓ src/i18n/mustTranslateKeys.test.ts (20 tests) 542ms
 ✓ src/ui/components/agent-view/AgentTabBar.test.tsx (7 tests) 347ms
 ✓ src/ui/components/BaseTextInput.test.tsx (12 tests) 368ms
 ✓ src/ui/components/Header.test.tsx (18 tests) 1011ms
 ✓ src/config/migration/versions/v5-to-v4.test.ts (17 tests) 8ms
 ✓ src/nonInteractive/io/StreamJsonInputReader.test.ts (11 tests) 18ms
 ✓ src/ui/components/messages/CompressionMessage.test.tsx (8 tests) 626ms
 ✓ src/ui/hooks/useFolderTrust.test.ts (9 tests) 48ms
 ✓ src/ui/hooks/usePhraseCycler.test.ts (9 tests) 82ms
 ✓ src/ui/utils/historyUtils.test.ts (13 tests) 5ms
 ✓ src/ui/components/hooks/HookMatcherDetailStep.test.tsx (8 tests) 561ms
 ✓ src/ui/utils/highlight.test.ts (18 tests) 7ms
 ✓ src/utils/terminalSequence.test.ts (26 tests) 10ms
 ✓ src/ui/layouts/DefaultAppLayout.test.tsx (7 tests) 412ms
 ✓ src/ui/utils/synchronizedOutput.test.ts (17 tests) 9ms
 ✓ src/config/loadedSettingsAdapter.test.ts (5 tests) 20ms
 ✓ src/services/commandUtils.test.ts (14 tests) 17ms
 ✓ src/ui/components/mcp/utils.test.ts (16 tests) 11ms
 ✓ src/ui/utils/clipboardUtils.test.ts (27 tests) 55880ms
   ✓ clipboardUtils > clipboardHasImage > should return true when clipboard contains image  3288ms
   ✓ clipboardUtils > clipboardHasImage > should return false when clipboard does not contain image  1959ms
   ✓ clipboardUtils > clipboardHasImage > should return false when wl-paste is not found  1939ms
   ✓ clipboardUtils > xclip / X11 path > clipboardHasImage > should detect xclip as the clipboard tool on X11  2399ms
   ✓ clipboardUtils > xclip / X11 path > clipboardHasImage > should return false when xclip reports no image types  2027ms
   ✓ clipboardUtils > xclip / X11 path > clipboardHasImage > should return false when xclip is not found  1681ms
   ✓ clipboardUtils > xclip / X11 path > saveClipboardImage > should return null when xclip is not found  2220ms
   ✓ clipboardUtils > BMP-to-PNG conversion (wl-paste) > should return null when python3 PIL conversion fails  1782ms
   ✓ clipboardUtils > BMP-to-PNG conversion (wl-paste) > should prefer PNG over BMP when both are available  1864ms
   ✓ clipboardUtils > saveFromCommand error paths > should return null on spawn timeout (5s)  2036ms
   ✓ clipboardUtils > saveFromCommand error paths > should return null on spawn error  1889ms
   ✓ clipboardUtils > saveFromCommand error paths > should return null on stdout error  1877ms
   ✓ clipboardUtils > saveClipboardImage > should return null when no clipboard tool is available  2004ms
   ✓ clipboardUtils > saveClipboardImage > should return null on spawn error during list-types  2372ms
   ✓ clipboardUtils > cleanupOldClipboardImages > should not throw errors when directory does not exist  1857ms
   ✓ clipboardUtils > cleanupOldClipboardImages > should complete without errors on valid directory  1974ms
   ✓ clipboardUtils > macOS/Windows fallback > should return false on non-linux platform when @teddyzhu/clipboard fails  2174ms
   ✓ clipboardUtils > macOS/Windows fallback > should return null on non-linux platform when saving fails  1755ms
   ✓ clipboardUtils > cache behavior > should reset wl-paste cache between clipboardHasImage calls  2279ms
   ✓ clipboardUtils > writeOsc52 > should write OSC 52 sequence to stdout when stdout is TTY  2522ms
   ✓ clipboardUtils > writeOsc52 > should write OSC 52 sequence to stderr when stdout is not TTY but stderr is  1756ms
   ✓ clipboardUtils > writeOsc52 > should return false and not write when neither stdout nor stderr is TTY  2005ms
   ✓ clipboardUtils > writeOsc52 > should handle special characters in text  2166ms
   ✓ clipboardUtils > writeOsc52 > should handle empty string  1848ms
   ✓ clipboardUtils > writeOsc52 > should return false on write error  2017ms
   ✓ clipboardUtils > writeOsc52 > should wrap in tmux DCS envelope when TMUX is set  1912ms
   ✓ clipboardUtils > writeOsc52 > should wrap in screen DCS envelope when STY is set  2273ms
 ✓ src/commands/extensions/utils.test.ts (11 tests) 15ms
 ✓ src/ui/commands/mcpCommand.test.ts (10 tests) 37ms
 ✓ src/ui/components/arena/ArenaSelectDialog.test.tsx (5 tests) 723ms
   ✓ ArenaSelectDialog > toggles quick preview and detailed diff for the highlighted agent  302ms
 ✓ src/ui/components/TrustDialog.test.tsx (6 tests) 545ms
 ✓ src/nonInteractive/control/controllers/permissionController.test.ts (4 tests) 65ms
 ✓ src/ui/components/InputPrompt.test.tsx (184 tests) 71386ms
   ✓ InputPrompt > onTabConsumerChange reporting (issue #4171) > reports true while the followup prompt suggestion is visible  823ms
   ✓ InputPrompt > onTabConsumerChange reporting (issue #4171) > reports false again after the autocomplete dropdown is dismissed  524ms
   ✓ InputPrompt > onSuggestionsVisibilityChange stays narrow (autocomplete only) > stays false when only a followup prompt suggestion is visible  812ms
   ✓ InputPrompt > should set the buffer text when a shell history command is retrieved  393ms
   ✓ InputPrompt > should call shellHistory.addCommandToHistory on submit in shell mode  421ms
   ✓ InputPrompt > should NOT call shell history methods when not in shell mode  751ms
   ✓ InputPrompt > should call completion.navigateUp for up arrow when suggestions are showing  571ms
   ✓ InputPrompt > should call completion.navigateDown for down arrow when suggestions are showing  577ms
   ✓ InputPrompt > should NOT call completion navigation when suggestions are not showing  866ms
   ✓ InputPrompt > clipboard image paste > should handle Ctrl+V when clipboard has an image  404ms
   ✓ InputPrompt > clipboard image paste > should handle Cmd+V when clipboard has an image  398ms
   ✓ InputPrompt > clipboard image paste > should not insert anything when clipboard has no image  416ms
   ✓ InputPrompt > clipboard image paste > should handle image save failure gracefully  385ms
   ✓ InputPrompt > clipboard image paste > should insert image path at cursor position with proper spacing  425ms
   ✓ InputPrompt > clipboard image paste > should handle errors during clipboard operations gracefully  432ms
   ✓ InputPrompt > should complete a partial parent command  463ms
   ✓ InputPrompt > should append a sub-command when the parent command is already complete  397ms
   ✓ InputPrompt > should handle the "backspace" edge case correctly  431ms
   ✓ InputPrompt > should complete a partial argument for a command  399ms
   ✓ InputPrompt > should autocomplete on Enter when suggestions are active, without submitting  403ms
   ✓ InputPrompt > should complete a command based on its altNames  399ms
   ✓ InputPrompt > should not submit on Enter when the buffer is empty or only contains whitespace  384ms
   ✓ InputPrompt > should submit directly on Enter when isPerfectMatch is true  406ms
   ✓ InputPrompt > should submit a perfect match on Enter when suggestions were not navigated  417ms
   ✓ InputPrompt > should fill and submit an export format selected with arrow navigation  581ms
   ✓ InputPrompt > should keep cycling export formats after arrow navigation fills input  651ms
   ✓ InputPrompt > should keep cycling export formats with Ctrl+P/N after arrow navigation fills input  808ms
   ✓ InputPrompt > should keep export format suggestions visible after arrow navigation fills input  460ms
   ✓ InputPrompt > should not clobber manually edited buffer when arrow is pressed after export fill  983ms
   ✓ InputPrompt > should wrap to jsonl when pressing Up from the /export Phase 1 popup  415ms
   ✓ InputPrompt > should wrap Phase 2 cycling backward when pressing Up repeatedly  702ms
   ✓ InputPrompt > should seed Phase 2 cycling when Tab accepts a format in the /export popup  744ms
   ✓ InputPrompt > should not overwrite /export html with extra args when Down is pressed  588ms
   ✓ InputPrompt > should reset export cycling state on Escape so arrows no longer cycle  752ms
   ✓ InputPrompt > should reset export cycling state on Ctrl+C so new input is not overwritten  768ms
   ✓ InputPrompt > should cycle export format on Down when /export <fmt> was typed manually (not via popup)  725ms
   ✓ InputPrompt > should not arm export cycling from restored history text  468ms
   ✓ InputPrompt > should trigger export-specific arrow navigation even when completion suggestions are a superset  466ms
   ✓ InputPrompt > should fall through to generic accept when Tab targets a non-export item in the /export superset popup  438ms
   ✓ InputPrompt > should fall through to generic completion when suggestions are missing an export format  404ms
   ✓ InputPrompt > should trigger Phase 1 export popup even when /export has trailing spaces  408ms
   ✓ InputPrompt > should autocomplete on Enter when user arrow-navigated a perfect-match suggestion list  592ms
   ✓ InputPrompt > should submit directly on Enter after arrow-navigate + backspace + retype to perfect match  1057ms
   ✓ InputPrompt > should submit directly on Enter for a perfect match without prior arrow navigation  420ms
   ✓ InputPrompt > should dismiss completion on Enter after accepting @path suggestion  434ms
   ✓ InputPrompt > should autocomplete @path on Tab without submitting or resetting completion  447ms
   ✓ InputPrompt > should reset history navigation after submitting on Enter  417ms
   ✓ InputPrompt > should submit directly on Enter when a complete leaf command is typed  405ms
   ✓ InputPrompt > should autocomplete an @-path on Enter without submitting  428ms
   ✓ InputPrompt > should add a newline on enter when the line ends with a backslash  421ms
   ✓ InputPrompt > should clear the buffer on Ctrl+C if it has text  416ms
   ✓ InputPrompt > should NOT clear the buffer on Ctrl+C if it is empty  417ms
   ✓ InputPrompt > cursor-based completion trigger > should handle multiline text correctly  328ms
   ✓ InputPrompt > vim mode > should not call buffer.handleInput when vim handles the input  408ms
   ✓ InputPrompt > vim mode > should call buffer.handleInput when vim does not handle the input  423ms
   ✓ InputPrompt > vim mode > should call handleInput when vim mode is disabled  412ms
   ✓ InputPrompt > vim mode > should toggle shortcuts when vim passes through ? on an empty prompt  401ms
   ✓ InputPrompt > unfocused paste > should handle bracketed paste when not focused  411ms
   ✓ InputPrompt > unfocused paste > should ignore regular keypresses when not focused  410ms
   ✓ InputPrompt > multiline paste > should handle multiline paste 'with \n newlines'  408ms
   ✓ InputPrompt > multiline paste > should handle multiline paste 'with extra slashes before \n newlines'  391ms
   ✓ InputPrompt > multiline paste > should handle multiline paste 'with \r\n newlines'  401ms
   ✓ InputPrompt > paste auto-submission protection > should prevent auto-submission immediately after paste with newlines  722ms
   ✓ InputPrompt > paste auto-submission protection > should allow submission after paste protection timeout  342ms
   ✓ InputPrompt > paste auto-submission protection > should not interfere with normal Enter key submission when no recent paste  430ms
   ✓ InputPrompt > enhanced input UX - double ESC clear functionality > should clear buffer on second ESC press  522ms
   ✓ InputPrompt > enhanced input UX - double ESC clear functionality > should handle ESC in shell mode by disabling shell mode  423ms
   ✓ InputPrompt > enhanced input UX - double ESC clear functionality > should handle ESC when completion suggestions are showing  417ms
   ✓ InputPrompt > enhanced input UX - double ESC clear functionality > should not call onEscapePromptChange when not provided  410ms
   ✓ InputPrompt > enhanced input UX - double ESC clear functionality > should not interfere with existing keyboard shortcuts  554ms
   ✓ InputPrompt > reverse search > invokes reverse search on Ctrl+R  436ms
   ✓ InputPrompt > reverse search > resets reverse search state on Escape  531ms
   ✓ InputPrompt > reverse search > completes the highlighted entry on Tab and exits reverse-search  459ms
   ✓ InputPrompt > reverse search > submits the highlighted entry on Enter and exits reverse-search  368ms
   ✓ InputPrompt > reverse search > text and cursor position should be restored after reverse search  324ms
   ✓ InputPrompt > reverse search > does not fall through to shell history on Ctrl+P/N while reverse search is active  734ms
   ✓ InputPrompt > Ctrl+E keyboard shortcut > should move cursor to end of current line in multiline input  440ms
   ✓ InputPrompt > Ctrl+E keyboard shortcut > should move cursor to end of current line for single line input  416ms
   ✓ InputPrompt > command search (Ctrl+R when not in shell) > enters command search on Ctrl+R and shows suggestions  417ms
   ✓ InputPrompt > command search (Ctrl+R when not in shell) > shows command search suggestions over active export suggestions  575ms
   ✓ InputPrompt > command search (Ctrl+R when not in shell) > expands and collapses long suggestion via Right/Left arrows  492ms
   ✓ InputPrompt > command search (Ctrl+R when not in shell) > renders match window and expanded view (snapshots)  582ms
   ✓ InputPrompt > command search (Ctrl+R when not in shell) > does not show expand/collapse indicator for short suggestions  486ms
   ✓ InputPrompt > snapshots > should render correctly in yolo mode  328ms
   ✓ InputPrompt > snapshots > should not show inverted cursor when shell is focused  311ms
   ✓ InputPrompt > should still allow input when shell is not focused  433ms
   ✓ InputPrompt > large paste placeholder > should create placeholder for paste > 1000 characters  419ms
   ✓ InputPrompt > large paste placeholder > should create placeholder for paste > 10 lines  479ms
   ✓ InputPrompt > large paste placeholder > should use sequential IDs for multiple pastes of same size  597ms
   ✓ InputPrompt > large paste placeholder > should expand placeholder to full content on submit  349ms
   ✓ InputPrompt > large paste placeholder > should expand same-size placeholders correctly when #2 appears first  368ms
   ✓ InputPrompt > large paste placeholder > should write expanded placeholder content to shell history  351ms
   ✓ InputPrompt > large paste placeholder > should reuse placeholder ID after deletion  337ms
   ✓ InputPrompt > large paste placeholder > should handle mixed pastes with different character counts  735ms
   ✓ InputPrompt > Ctrl+Y retry shortcut > should trigger handleRetryLastPrompt on Ctrl+Y  386ms
   ✓ InputPrompt > Ctrl+Y retry shortcut > should NOT trigger retry on plain y key  403ms
   ✓ InputPrompt > Ctrl+Y retry shortcut > should NOT trigger retry on Ctrl+R (reverse search)  431ms
   ✓ InputPrompt > Ctrl+Y retry shortcut > should handle Ctrl+Y when feedback dialog is open  439ms
   ✓ InputPrompt > queue input editing > should pop queued messages into input on Up arrow when queue is non-empty  414ms
   ✓ InputPrompt > queue input editing > should prepend queued messages before existing input text  404ms
   ✓ InputPrompt > queue input editing > should pop queued messages on ESC when queue is non-empty  437ms
   ✓ InputPrompt > queue input editing > should fall through to history when pop returns null (race condition)  454ms
   ✓ InputPrompt > queue input editing > should navigate history on Up arrow when queue is empty  444ms
   ✓ InputPrompt > queue input editing > should not intercept Ctrl+P when queue is non-empty  469ms
   ✓ InputPrompt > two-step edge transition for history navigation > Ctrl+P with cursor mid-line snaps to col 0 without touching history  443ms
   ✓ InputPrompt > two-step edge transition for history navigation > Ctrl+N with cursor not at end-of-line snaps to end without touching history  412ms
   ✓ InputPrompt > two-step edge transition for history navigation > Ctrl+P at col 0 walks history and parks the cursor at offset 0  430ms
   ✓ InputPrompt > two-step edge transition for history navigation > Ctrl+P/N and arrows do not change input history while a tool confirmation owns navigation  836ms
   ✓ InputPrompt > two-step edge transition for history navigation > Ctrl+N falls through to the agent tab bar when there is no newer history  421ms
   ✓ InputPrompt > two-step edge transition for history navigation > arrow Down applies the same snap-before-history rule as Ctrl+N  468ms
   ✓ InputPrompt > two-step edge transition for history navigation > arrow Down at end-of-line walks history  424ms
   ✓ InputPrompt > two-step edge transition for history navigation > arrow Down falls through to the agent tab bar when there is no newer history  403ms
   ✓ InputPrompt > two-step edge transition for history navigation > arrow Down jumps straight to the live agent panel when a bg sub-agent is running (#4907)  434ms
   ✓ InputPrompt > two-step edge transition for history navigation > arrow Down still falls through to the tab bar when the only bg entry is a non-agent (shell) task  454ms
   ✓ InputPrompt > two-step edge transition for history navigation > arrow Down skips terminal bg agents after the live panel visibility window (#5067)  449ms
   ✓ InputPrompt > two-step edge transition for history navigation > arrow Down focuses the background-tasks pill when only the pill is shown (workflow-only session)  453ms
   ✓ InputPrompt > two-step edge transition for history navigation > Down at the bottom of the live agent panel descends to the agent tab bar  423ms
   ✓ InputPrompt > two-step edge transition for history navigation > Down at the bottom of the live agent panel returns to the composer when no tab bar exists  431ms
   ✓ InputPrompt > two-step edge transition for history navigation > Down from an expired live panel falls through to the tab bar  416ms
   ✓ InputPrompt > two-step edge transition for history navigation > Enter on the live panel maps visible agents back to their bg entry index  461ms
   ✓ InputPrompt > two-step edge transition for history navigation > arrow Up applies the same two-step rule as Ctrl+P (snap before navigate)  430ms
   ✓ InputPrompt > two-step edge transition for history navigation > suppresses completion menu navigation for history-restored text until edited  875ms
 ✓ src/ui/components/SessionPreview.test.tsx (7 tests) 863ms
(node:19516) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 exit listeners added to [process]. MaxListeners is 10. Use emitter.setMaxListeners() to increase limit
(Use `node --trace-warnings ...` to show where the warning was created)
 ✓ src/services/saved-workflow-loader.test.ts (11 tests) 9ms
 ✓ src/core/initializer.test.ts (11 tests) 20ms
 ✓ src/utils/deepMerge.test.ts (13 tests) 20ms
 ✓ src/ui/commands/approvalModeCommand.test.ts (13 tests) 27ms
 ✓ src/remoteInput/RemoteInputWatcher.test.ts (7 tests) 500ms
 ✓ src/ui/hooks/useGitBranchName.test.ts (8 tests) 42ms
 ✓ src/ui/models/availableModels.test.ts (14 tests) 17ms
 ✓ src/ui/components/Tips.test.ts (9 tests) 16ms
 ✓ src/ui/utils/lowlightLoader.test.ts (5 tests) 67ms
 ✓ src/ui/components/shared/RadioButtonSelect.test.tsx (5 tests) 223ms
 ✓ src/ui/commands/initCommand.test.ts (5 tests) 35ms
 ✓ src/ui/components/AnsiOutput.test.tsx (8 tests) 495ms
qwen serve: /acp WS error: test error
qwen serve: /acp WS write failed: write failed
 ✓ src/ui/components/background-view/liveAgentPanelLayout.measurement.test.tsx (2 tests) 404ms
 ✓ src/serve/acp-http/ws-stream.test.ts (14 tests) 25ms
 ✓ src/ui/components/SuggestionsDisplay.test.tsx (6 tests) 374ms
 ✓ src/ui/utils/mouse.test.ts (15 tests) 9ms
 ✓ src/ui/voice/sox-recorder.test.ts (5 tests) 14ms
 ✓ src/utils/costCalculator.test.ts (14 tests) 7ms
 ✓ src/config/migration/scheduler.test.ts (7 tests) 29ms
 ✓ src/ui/components/AppHeader.test.tsx (6 tests) 491ms
 ✓ src/ui/commands/compressFastCommand.test.ts (7 tests) 20ms
 ✓ src/ui/components/hooks/HooksListStep.test.tsx (9 tests) 587ms
 ✓ src/config/mcpJson.test.ts (11 tests) 15ms
 ✓ src/ui/voice/voice-refine.test.ts (11 tests) 23ms
 ✓ src/nonInteractive/control/controllers/systemController.test.ts (8 tests) 12ms
 ✓ src/ui/components/ConsentPrompt.test.tsx (9 tests) 668ms
 ✓ src/utils/commands.test.ts (13 tests) 12ms
 ✓ src/ui/hooks/useSlashCompletion.integration.test.ts (3 tests) 207ms
 ✓ src/ui/commands/planCommand.test.ts (7 tests) 14ms
 ✓ src/ui/components/background-view/liveAgentPanelVisibility.test.ts (11 tests) 10ms
 ✓ src/ui/commands/resumeCommand.test.ts (9 tests) 17ms
 ✓ src/commands/extensions/disable.test.ts (9 tests) 47ms
 ✓ src/ui/components/messages/DiffStatsDisplay.test.tsx (6 tests) 307ms
qwen serve: /acp SSE onClose threw: onClose boom
qwen serve: /acp SSE write failed, closing stream: EPIPE
 ✓ src/serve/acp-http/sse-stream.test.ts (8 tests) 50ms
 ✓ src/ui/components/background-view/workflow-save-overlay.test.tsx (7 tests) 971ms
 ✓ src/utils/cleanup.test.ts (8 tests) 169ms
 ✓ src/ui/components/mcp/steps/ResourceListStep.test.tsx (5 tests) 719ms
   ✓ ResourceListStep > windows a long list with correct count + arrow indicators  472ms
 ✓ src/ui/utils/updateCheck.test.ts (9 tests) 14ms
 ✓ src/ui/components/arena/ArenaCards.test.tsx (2 tests) 216ms
 ✓ src/i18n/index.test.ts (11 tests) 17012ms
   ✓ bundled locale fallback > loads bundled builtin translations when locale files are absent on disk  2196ms
   ✓ bundled locale fallback > falls back to bundled translations when a user locale default export is null  2123ms
   ✓ bundled locale fallback > falls back to bundled translations when a user locale default export is an array  2186ms
   ✓ language normalization > normalizes explicit locale IDs before loading translations  2092ms
   ✓ language normalization > normalizes explicit POSIX locale strings before loading translations  2303ms
   ✓ localizeToolDisplayName > translates tool badges without colliding with generic UI strings  2389ms
   ✓ localizeToolDisplayName > falls back to the English display name for untranslated tools  1938ms
   ✓ localizeToolDisplayName > has a zh translation for every core tool display name  1771ms
 ✓ src/ui/utils/terminalRedrawOptimizer.test.ts (9 tests) 12ms
 ✓ src/ui/components/StickyTodoList.test.tsx (6 tests) 452ms
 ✓ src/services/FileCommandLoader-markdown.test.ts (4 tests) 87ms
 ✓ src/ui/layouts/ScreenReaderAppLayout.test.tsx (6 tests) 344ms
 ✓ src/commands/mcp/approve.test.ts (7 tests) 71ms
 ✓ src/ui/utils/CodeColorizer.test.ts (18 tests) 7ms
 ✓ src/ui/components/ToolStatsDisplay.test.tsx (5 tests) 328ms
 ✓ src/ui/voice/voice-keyterms-race.test.ts (3 tests) 3943ms
   ✓ buildVoiceKeyterms race checks > does not read a keyterms file swapped in before open  3940ms
 ✓ src/ui/utils/sessionPickerUtils.test.ts (15 tests) 15ms
 ✓ src/ui/utils/MermaidDiagram.test.tsx (5 tests) 627ms
 ✓ src/ui/App.test.tsx (7 tests) 400ms
 ✓ src/ui/utils/backgroundWorkUtils.test.ts (8 tests) 9ms
 ✓ src/services/markdown-command-parser.test.ts (13 tests) 35ms
 ✓ src/ui/components/SkillReviewDialog.test.tsx (7 tests) 405ms
 ✓ src/ui/commands/docsCommand.test.ts (5 tests) 23ms
 ✓ src/nonInteractive/io/StreamJsonOutputAdapter.dualOutput.test.ts (5 tests) 12ms
 ✓ src/ui/components/ApprovalModeDialog.test.tsx (9 tests) 617ms
 ✓ src/commands/extensions/enable.test.ts (9 tests) 52ms
 ✓ src/services/tips/tipScheduler.test.ts (7 tests) 12ms
 ✓ src/utils/sandbox.test.ts (17 tests) 7ms
 ✓ src/ui/components/views/McpStatus.test.tsx (12 tests) 623ms
 ✓ src/services/notificationService.test.ts (9 tests) 17ms
 ✓ src/ui/utils/modelsBySource.test.ts (7 tests) 8ms
 ✓ src/ui/commands/importConfigCommand.test.ts (9 tests) 11ms
 ✓ src/config/normalizeDisabledTools.test.ts (16 tests) 11ms
 ✓ src/ui/commands/historyCommand.test.ts (5 tests) 12ms
 ✓ src/utils/housekeeping/throttledOnce.test.ts (7 tests) 95ms
 ✓ src/services/tips/tipHistory.test.ts (11 tests) 11ms
 ✓ src/ui/hooks/useFocus.test.ts (6 tests) 58ms
 ✓ src/ui/commands/arenaCommand.agentComplete.test.ts (1 test) 35ms
 ✓ src/ui/components/SessionSummaryDisplay.test.tsx (3 tests) 444ms
 ✓ src/ui/components/DiffDialog.test.tsx (1 test) 111ms
 ✓ src/ui/components/shared/EnumSelector.test.tsx (9 tests) 567ms
 ✓ src/ui/hooks/useAwaySummary.test.ts (2 tests) 91ms
 ✓ src/utils/readStdin.test.ts (5 tests) 250ms
 ✓ src/ui/commands/dreamCommand.test.ts (5 tests) 12ms
 ✓ src/ui/components/shared/TextInput.test.tsx (6 tests) 362ms
 ✓ src/serve/routes/workspace-settings.test.ts (6 tests) 92ms
 ✓ src/ui/components/mcp/steps/ServerListStep.test.tsx (5 tests) 407ms
 ✓ src/ui/components/FolderTrustDialog.test.tsx (9 tests) 838ms
 ✓ src/ui/components/views/ContextUsage.test.tsx (4 tests) 615ms
 ✓ src/ui/components/hooks/HooksDisabledStep.test.tsx (8 tests) 430ms
 ✓ src/ui/utils/measure-element-position.test.tsx (4 tests) 205ms
 ✓ src/ui/hooks/useResizeSettleRepaint.test.ts (6 tests) 63ms
 ✓ src/ui/hooks/useWelcomeBack.test.ts (4 tests) 221ms
 ✓ src/ui/contexts/VimModeContext.test.tsx (4 tests) 279ms
 ✓ src/ui/components/messages/ConversationMessages.test.tsx (10 tests) 585ms
 ✓ src/ui/hooks/useConfigInitMessage.test.ts (7 tests) 67ms
 ✓ src/ui/hooks/useSessionPicker.test.ts (4 tests) 36ms
 ✓ src/ui/components/hooks/sourceLabels.test.ts (10 tests) 6ms
 ✓ src/ui/components/mcp/steps/ResourceDetailStep.test.tsx (6 tests) 343ms
 ✓ src/serve/acp-http/connection-registry.test.ts (3 tests) 11ms
 ✓ src/ui/commands/toolsCommand.test.ts (4 tests) 14ms
 ✓ src/ui/utils/markdownUtilities.test.ts (12 tests) 5ms
 ✓ src/ui/app-container-controls-dep.test.ts (3 tests) 3ms
 ✓ src/acp-integration/session/rewrite/TurnBuffer.test.ts (12 tests) 5ms
 ✓ src/ui/hooks/useWorktreeSession.test.tsx (4 tests) 390ms
 ✓ src/ui/components/extensions/steps/ExtensionListStep.test.tsx (5 tests) 390ms
 ✓ src/ui/components/shared/ToolElapsedTime.test.tsx (8 tests) 481ms
 ✓ src/utils/userPromptExpansionHook.test.ts (12 tests) 8ms
 ✓ src/ui/components/PrepareLabel.test.tsx (6 tests) 307ms
 ✓ src/ui/components/SettingInputPrompt.test.tsx (6 tests) 428ms
 ✓ src/ui/components/agent-view/AgentComposer.test.tsx (1 test) 289ms
 ✓ src/ui/hooks/useTerminalNotification.test.ts (6 tests) 11ms
 ✓ src/ui/hooks/useAnimatedScrollbar.test.ts (6 tests) 37ms
 ✓ src/ui/components/QueuedMessageDisplay.test.tsx (7 tests) 615ms
 ✓ src/ui/commands/forgetCommand.test.ts (6 tests) 12ms
 ✓ src/ui/hooks/useModelCommand.test.ts (6 tests) 83ms
 ✓ src/commands/mcp/remove.test.ts (4 tests) 52ms
 ✓ src/utils/headlessSafetyWarnings.test.ts (7 tests) 9ms
 ✓ src/config/mcpServers.test.ts (6 tests) 7ms
 ✓ src/ui/themes/theme.test.ts (5 tests) 5ms
 ✓ src/ui/hooks/useFollowupSuggestions.test.tsx (2 tests) 31ms
 ✓ src/acp-integration/session/permissionUtils.test.ts (4 tests) 8ms
 ✓ src/ui/utils/mermaidVisualRenderer.test.ts (4 tests) 23ms
 ✓ src/acp-integration/session/rewrite/config.test.ts (5 tests) 10ms
No extensions installed.
 ✓ src/commands/extensions.test.tsx (11 tests) 62ms
 ✓ src/commands/auth.test.ts (9 tests) 55ms
 ✓ src/ui/voice/voice-stream-retry.test.ts (5 tests) 13ms
 ✓ src/ui/components/extensions/steps/ActionSelectionStep.test.tsx (5 tests) 333ms
 ✓ src/commands/extensions/list.test.ts (4 tests) 58ms
 ✓ src/ui/components/views/ExtensionsList.test.tsx (9 tests) 495ms
 ✓ src/ui/hooks/useMouseEvents.test.tsx (1 test) 38ms
 ✓ src/services/insight/generators/StaticInsightGenerator.test.ts (1 test) 26ms
 ✓ src/ui/utils/displayUtils.test.ts (8 tests) 11ms
 ✓ src/ui/utils/software-cursor.test.ts (10 tests) 15ms
 ✓ src/commands/extensions/link.test.ts (4 tests) 40ms
 ✓ src/ui/components/ThemeDialog.test.tsx (2 tests) 580ms
   ✓ ThemeDialog Snapshots > should render correctly in theme selection mode  372ms
 ✓ src/ui/components/ContextSummaryDisplay.test.tsx (4 tests) 238ms
 ✓ src/config/modelProvidersScope.test.ts (4 tests) 3ms
 ✓ src/services/tips/tipRegistry.test.ts (5 tests) 4ms
 ✓ src/commands/sessions.test.ts (3 tests) 18ms
 ✓ src/ui/components/TodoDisplay.test.tsx (6 tests) 394ms
 ✓ src/config/keyBindings.test.ts (4 tests) 8ms
 ✓ src/ui/commands/branchCommand.test.ts (6 tests) 11ms
 ✓ src/acp-integration/authPreflight.test.ts (3 tests) 4ms
 ✓ src/ui/hooks/mcpResourceRef.test.ts (7 tests) 4ms
 ✓ src/serve/acp-http/json-rpc.test.ts (9 tests) 5ms
 ✓ src/ui/commands/terminalSetupCommand.test.ts (5 tests) 6ms
 ✓ src/commands/sessions/common.test.ts (3 tests) 5ms
 ✓ src/utils/startupWarnings.test.ts (4 tests) 6ms
 ✓ src/config/path-freshness.test.ts (3 tests) 29ms
 ✓ src/ui/components/SkillStatsDisplay.test.tsx (2 tests) 164ms
 ✓ src/utils/systemInfoFields.test.ts (2 tests) 9ms
 ✓ src/ui/hooks/useBatchedScroll.test.ts (4 tests) 38ms
 ✓ src/ui/components/mcp/steps/ServerDetailStep.test.tsx (4 tests) 258ms
 ✓ src/ui/components/IdeTrustChangeDialog.test.tsx (6 tests) 374ms
 ✓ src/ui/utils/export/collect.test.ts (1 test) 9ms
 ✓ src/utils/acpModelUtils.test.ts (20 tests) 15ms
 ✓ src/core/auth.test.ts (3 tests) 7ms
 ✓ src/ui/commands/authCommand.test.ts (6 tests) 12ms
 ✓ src/ui/commands/rememberCommand.test.ts (5 tests) 18ms
 ✓ src/commands/mcp.test.ts (3 tests) 21ms
 ✓ src/ui/components/shared/DescriptiveRadioButtonSelect.test.tsx (2 tests) 169ms
 ✓ src/utils/userStartupWarnings.test.ts (3 tests) 43ms
 ✓ src/core/theme.test.ts (5 tests) 10ms
 ✓ src/ui/components/messages/BtwMessage.test.tsx (5 tests) 281ms
 ✓ src/test-utils/mockCommandContext.test.ts (3 tests) 11ms
 ✓ src/ui/utils/theme-background.test.ts (3 tests) 6ms
 ✓ src/utils/resolvePath.test.ts (7 tests) 6ms
 ✓ src/ui/components/WorktreeExitDialog.test.tsx (1 test) 164ms
 ✓ src/ui/components/GoalPill.test.tsx (2 tests) 228ms
 ✓ src/ui/components/subagents/manage/AgentSelectionStep.test.tsx (1 test) 132ms
 ✓ src/ui/components/mcp/steps/ToolListStep.test.tsx (1 test) 111ms
 ✓ src/ui/utils/export/normalize.test.ts (1 test) 4ms
 ✓ src/ui/utils/approvalModeDisplay.test.ts (5 tests) 16ms
 ✓ src/utils/standalone-update-verify.test.ts (3 tests) 10ms
 ✓ src/ui/utils/workflow-keyword.test.ts (11 tests) 8ms
 ✓ src/ui/voice/voice-model.test.ts (4 tests) 5ms
 ✓ src/ui/utils/latexRenderer.test.ts (4 tests) 6ms
 ✓ src/ui/commands/statuslineCommand.test.ts (4 tests) 14ms
 ✓ src/serve/server-workspace-service.test.ts (1 test) 34ms
 ✓ src/ui/commands/helpCommand.test.ts (3 tests) 20ms
 ✓ src/ui/contexts/AgentViewContext.test.tsx (2 tests) 159ms
 ✓ src/ui/components/mcp/MCPHealthPill.test.tsx (6 tests) 3ms
 ✓ src/ui/hooks/useThemeCommand.test.ts (1 test) 22ms
 ✓ src/ui/voice/voice-availability.test.ts (5 tests) 4ms
 ✓ src/ui/utils/layoutUtils.test.ts (4 tests) 7ms
 ✓ src/ui/components/messages/GoalStatusMessage.test.tsx (3 tests) 153ms
 ✓ src/ui/commands/quitCommand.test.ts (1 test) 28ms
 ✓ src/services/command-factory.test.ts (2 tests) 34ms
 ✓ src/ui/components/views/ToolsList.test.tsx (3 tests) 218ms
 ✓ src/utils/processUtils.test.ts (1 test) 5ms
 ✓ src/ui/components/LoopDetectionConfirmation.test.tsx (2 tests) 252ms
 ✓ src/services/prompt-processors/argumentProcessor.test.ts (2 tests) 10ms
 ✓ src/ui/components/approvalModeVisuals.test.ts (3 tests) 3ms
 ✓ src/ui/commands/themeCommand.test.ts (2 tests) 8ms
 ✓ src/ui/commands/permissionsCommand.test.ts (3 tests) 8ms
 ✓ src/ui/commands/trustCommand.test.ts (3 tests) 10ms
 ✓ src/acp-integration/runtimeOutputDirContext.test.ts (1 test) 3ms
 ✓ src/ui/components/GeminiRespondingSpinner.test.tsx (2 tests) 95ms
 ✓ src/ui/commands/settingsCommand.test.ts (2 tests) 6ms
 ✓ src/ui/components/messages/StatusMessages.test.tsx (1 test) 101ms
 ✓ src/ui/commands/editorCommand.test.ts (2 tests) 5ms
 ✓ src/ui/components/mcp/MCPManagementDialog.test.tsx (1 test) 68ms
 ✓ src/ui/commands/deleteCommand.test.ts (2 tests) 6ms
 ✓ src/acp-integration/authMethods.test.ts (2 tests) 3ms
 ✓ src/ui/hooks/useDialogClose.test.ts (1 test) 17ms
 ✓ src/utils/midTurnUserMessage.test.ts (3 tests) 4ms
 ✓ src/ui/components/VoiceIndicator.test.tsx (2 tests) 86ms
 ✓ src/ui/components/ExternalAuthProgress.test.tsx (1 test) 60ms
 ✓ src/ui/commands/memoryCommand.test.ts (1 test) 4ms
 ✓ src/ui/components/CronPill.test.tsx (2 tests) 117ms
 ✓ src/commands/extensions/uninstall.test.ts (1 test) 11ms
qwen serve: voice websocket accepted; activeSessions=1
qwen serve: voice websocket start received
qwen serve: voice websocket stop received
qwen serve: voice websocket finalized successfully
qwen serve: voice websocket slot released; activeSessions=0
qwen serve: voice websocket accepted; activeSessions=1
qwen serve: voice websocket accepted; activeSessions=1
qwen serve: voice websocket start received
qwen serve: voice websocket stop received
qwen serve: voice websocket finalized successfully
qwen serve: voice websocket slot released; activeSessions=0
qwen serve: voice websocket accepted; activeSessions=1
qwen serve: voice websocket start received
qwen serve: voice websocket failed: No voice model is configured for this workspace.
qwen serve: voice websocket slot released; activeSessions=0
qwen serve: voice websocket accepted; activeSessions=1
qwen serve: voice websocket start received
qwen serve: voice websocket failed: Voice transcription failed. Please try again.
qwen serve: voice websocket slot released; activeSessions=0
qwen serve: voice websocket accepted; activeSessions=1
qwen serve: voice websocket start received
qwen serve: voice websocket stop received
qwen serve: voice websocket failed: Voice transcription failed. Please try again.
qwen serve: voice websocket slot released; activeSessions=0
qwen serve: voice websocket accepted; activeSessions=1
qwen serve: voice websocket start received
qwen serve: voice websocket abort received
qwen serve: voice websocket slot released; activeSessions=0
qwen serve: voice websocket accepted; activeSessions=1
qwen serve: voice websocket start received
qwen serve: voice websocket abort received
qwen serve: voice websocket slot released; activeSessions=0
qwen serve: voice websocket accepted; activeSessions=1
qwen serve: voice websocket stop received
qwen serve: voice websocket abort received
qwen serve: voice websocket slot released; activeSessions=0
qwen serve: voice websocket accepted; activeSessions=1
qwen serve: voice websocket start received
qwen serve: voice websocket slot released; activeSessions=0
qwen serve: voice websocket accepted; activeSessions=1
qwen serve: voice websocket start received
qwen serve: voice websocket stop received
qwen serve: voice websocket failed: Voice session exceeded the time limit.
qwen serve: voice websocket accepted; activeSessions=1
qwen serve: voice websocket start received
qwen serve: voice websocket failed: Recording is too long for transcription (max ~5 minutes).
qwen serve: voice websocket slot released; activeSessions=0
qwen serve: voice websocket accepted; activeSessions=1
qwen serve: voice websocket start received
qwen serve: voice websocket failed: Queued voice audio exceeded the memory limit.
qwen serve: voice websocket accepted; activeSessions=1
qwen serve: voice websocket start received
qwen serve: voice websocket failed: Voice session exceeded the time limit.
qwen serve: voice websocket slot released; activeSessions=0
qwen serve: voice websocket accepted; activeSessions=1
qwen serve: voice websocket accepted; activeSessions=2
qwen serve: voice websocket accepted; activeSessions=3
qwen serve: voice websocket accepted; activeSessions=4
qwen serve: voice websocket accepted; activeSessions=5
qwen serve: voice websocket accepted; activeSessions=6
qwen serve: voice websocket accepted; activeSessions=7
qwen serve: voice websocket accepted; activeSessions=8
qwen serve: voice websocket failed: Voice session exceeded the time limit.
qwen serve: voice websocket slot released; activeSessions=7
qwen serve: voice websocket failed: Voice session exceeded the time limit.
qwen serve: voice websocket slot released; activeSessions=6
qwen serve: voice websocket failed: Voice session exceeded the time limit.
qwen serve: voice websocket slot released; activeSessions=5
qwen serve: voice websocket failed: Voice session exceeded the time limit.
qwen serve: voice websocket slot released; activeSessions=4
qwen serve: voice websocket failed: Voice session exceeded the time limit.
qwen serve: voice websocket slot released; activeSessions=3
qwen serve: voice websocket failed: Voice session exceeded the time limit.
qwen serve: voice websocket slot released; activeSessions=2
qwen serve: voice websocket failed: Voice session exceeded the time limit.
qwen serve: voice websocket slot released; activeSessions=1
qwen serve: voice websocket failed: Voice session exceeded the time limit.
qwen serve: voice websocket slot released; activeSessions=0
qwen serve: voice websocket accepted; activeSessions=1
qwen serve: voice websocket accepted; activeSessions=1
qwen serve: voice websocket accepted; activeSessions=2
qwen serve: voice websocket accepted; activeSessions=3
qwen serve: voice websocket accepted; activeSessions=4
qwen serve: voice websocket accepted; activeSessions=5
qwen serve: voice websocket accepted; activeSessions=6
qwen serve: voice websocket accepted; activeSessions=7
qwen serve: voice websocket accepted; activeSessions=8
qwen serve: voice websocket rejected; activeSessions=8
qwen serve: voice websocket slot released; activeSessions=7
qwen serve: voice websocket accepted; activeSessions=8
 ✓ src/serve/voice/voice-ws.test.ts (16 tests) 13ms

⎯⎯⎯⎯⎯⎯ Failed Tests 10 ⎯⎯⎯⎯⎯⎯⎯

 FAIL  src/ui/auth/AuthDialog.test.tsx > AuthDialog > should go back from third-party provider API key input to provider list
 FAIL  src/ui/auth/AuthDialog.test.tsx > AuthDialog > drives API key provider steps from endpoint options metadata
AssertionError: expected '┌────────────────────────────────────…' to contain 'DeepSeek API Key · Step 1/2 · API Key'

- Expected
+ Received

- DeepSeek API Key · Step 1/2 · API Key
+ ┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
+ │                                                                                                  │
+ │ Third-party Providers · Provider                                                                 │
+ │                                                                                                  │
+ │ › DeepSeek API Key                                                                               │
+ │   Quick setup for DeepSeek (deepseek-v4-flash, deepseek-v4-pro)                                  │
+ │                                                                                                  │
+ │   MiniMax API Key                                                                                │
+ │   Quick setup for MiniMax models                                                                 │
+ │                                                                                                  │
+ │   Z.AI API Key                                                                                   │
+ │   Quick setup for Z.AI models                                                                    │
+ │                                                                                                  │
+ │   Idealab API Key                                                                                │
+ │   Alibaba internal LLM service (Qwen3.6-Plus-DogFooding, DeepSeek V4, Kimi K2.6)                 │
+ │                                                                                                  │
+ │   ModelScope API Key                                                                             │
+ │   Quick setup for ModelScope API Inference                                                       │
+ │                                                                                                  │
+ │   OpenRouter                                                                                     │
+ │   Connect with an OpenRouter API key (get one from openrouter.ai/keys)                           │
+ │                                                                                                  │
+ │   Requesty                                                                                       │
+ │   Connect with a Requesty API key (get one from app.requesty.ai/api-keys)                        │
+ │                                                                                                  │
+ │ Enter to select, ↑↓ to navigate, Esc to go back                                                  │
+ │                                                                                                  │
+ └──────────────────────────────────────────────────────────────────────────────────────────────────┘

 ❯ vi.waitFor.timeout src/ui/auth/AuthDialog.test.tsx:155:27
    153|   await vi.waitFor(
    154|     () => {
    155|       expect(lastFrame()).toContain(expectedText);
       |                           ^
    156|     },
    157|     { timeout: WAIT_FOR_TIMEOUT },

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/10]⎯

 FAIL  src/ui/auth/AuthDialog.test.tsx > AuthDialog > should submit Token Plan through the shared subscription handler
AssertionError: expected "spy" to be called at least once
 ❯ vi.waitFor.timeout src/ui/auth/AuthDialog.test.tsx:1250:40
    1248|       await vi.waitFor(
    1249|         () => {
    1250|           expect(handleProviderSubmit).toHaveBeenCalled();
       |                                        ^
    1251|         },
    1252|         { timeout: WAIT_FOR_TIMEOUT },

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[2/10]⎯

 FAIL  src/ui/auth/AuthDialog.test.tsx > AuthDialog > should pre-fill the Model IDs step with previously saved custom model IDs
AssertionError: expected '┌────────────────────────────────────…' to match /›\s*(?:\d+\.\s*)?Token Plan/

- Expected: 
/›\s*(?:\d+\.\s*)?Token Plan/

+ Received: 
"┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                                                                                  │
│ Alibaba ModelStudio · Access Method                                                              │
│                                                                                                  │
│ › Coding Plan                                                                                    │
│   For individual developers · Weekly quota included                                              │
│                                                                                                  │
│   Token Plan                                                                                     │
│   For teams and companies · Usage-based billing with dedicated endpoint                          │
│                                                                                                  │
│   Standard API Key                                                                               │
│   Connect with an existing ModelStudio API key                                                   │
│                                                                                                  │
│ Enter to select, ↑↓ to navigate, Esc to go back                                                  │
│                                                                                                  │
└──────────────────────────────────────────────────────────────────────────────────────────────────┘"

 ❯ expectSelectedOption src/ui/auth/AuthDialog.test.tsx:130:17
    128| 
    129| const expectSelectedOption = (frame: string | undefined, label: string…
    130|   expect(frame).toMatch(
       |                 ^
    131|     new RegExp(`›\\s*(?:\\d+\\.\\s*)?${escapeRegExp(label)}`),
    132|   );
 ❯ vi.waitFor.timeout src/ui/auth/AuthDialog.test.tsx:141:7

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[3/10]⎯

 FAIL  src/ui/auth/AuthDialog.test.tsx > AuthDialog Custom API Key Wizard > navigates to protocol selection when Custom API Key is selected
 FAIL  src/ui/auth/AuthDialog.test.tsx > AuthDialog Custom API Key Wizard > shows review screen with JSON after entering model IDs
 FAIL  src/ui/auth/AuthDialog.test.tsx > AuthDialog Custom API Key Wizard > calls handleProviderSubmit on Enter in review view
 FAIL  src/ui/auth/AuthDialog.test.tsx > AuthDialog Custom API Key Wizard > shows advanced config screen after entering model IDs
AssertionError: expected '┌────────────────────────────────────…' to match /›\s*(?:\d+\.\s*)?Custom Provider/

- Expected: 
/›\s*(?:\d+\.\s*)?Custom Provider/

+ Received: 
"┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                                                                                  │
│ Connect a Provider                                                                               │
│                                                                                                  │
│   Alibaba ModelStudio                                                                            │
│   Official recommended setup: Coding Plan, Token Plan, or Standard API Key                       │
│                                                                                                  │
│ › Third-party Providers                                                                          │
│   Choose a built-in provider and connect with an API key                                         │
│                                                                                                  │
│   Custom Provider                                                                                │
│   Manually connect a local server, proxy, or unsupported provider                                │
│                                                                                                  │
│ ────────────────────────────────────────────────────────────────────────────────                 │
│                                                                                                  │
│ Terms of Services and Privacy Notice:                                                            │
│ https://qwenlm.github.io/qwen-code-docs/en/users/support/tos-privacy/                            │
│                                                                                                  │
└──────────────────────────────────────────────────────────────────────────────────────────────────┘"

 ❯ expectSelectedOption src/ui/auth/AuthDialog.test.tsx:130:17
    128| 
    129| const expectSelectedOption = (frame: string | undefined, label: string…
    130|   expect(frame).toMatch(
       |                 ^
    131|     new RegExp(`›\\s*(?:\\d+\\.\\s*)?${escapeRegExp(label)}`),
    132|   );
 ❯ vi.waitFor.timeout src/ui/auth/AuthDialog.test.tsx:141:7

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[4/10]⎯

 FAIL  src/ui/auth/AuthDialog.test.tsx > AuthDialog Custom API Key Wizard > navigates to base URL input after selecting a protocol
AssertionError: expected '┌────────────────────────────────────…' to contain 'Custom Provider · Step 2/6 · Base URL'

- Expected
+ Received

- Custom Provider · Step 2/6 · Base URL
+ ┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
+ │                                                                                                  │
+ │ Custom Provider · Step 1/6 · Protocol                                                            │
+ │                                                                                                  │
+ │ › OpenAI-compatible                                                                              │
+ │   Standard OpenAI API format (most common)                                                       │
+ │                                                                                                  │
+ │   Anthropic-compatible                                                                           │
+ │   Anthropic Messages API format                                                                  │
+ │                                                                                                  │
+ │   Gemini-compatible                                                                              │
+ │   Google Gemini API format                                                                       │
+ │                                                                                                  │
+ │ Enter to select, ↑↓ to navigate, Esc to go back                                                  │
+ │                                                                                                  │
+ └──────────────────────────────────────────────────────────────────────────────────────────────────┘

 ❯ vi.waitFor.timeout src/ui/auth/AuthDialog.test.tsx:155:27
    153|   await vi.waitFor(
    154|     () => {
    155|       expect(lastFrame()).toContain(expectedText);
       |                           ^
    156|     },
    157|     { timeout: WAIT_FOR_TIMEOUT },

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[5/10]⎯

 FAIL  src/ui/auth/AuthDialog.test.tsx > AuthDialog Custom API Key Wizard > passes generationConfig when advanced options are toggled
AssertionError: expected '┌────────────────────────────────────…' to contain 'Custom Provider · Step 3/6 · API Key'

- Expected
+ Received

- Custom Provider · Step 3/6 · API Key
+ ┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
+ │                                                                                                  │
+ │ Custom Provider · Step 2/6 · Base URL                                                            │
+ │                                                                                                  │
+ │                                                                                                  │
+ │ Enter the API endpoint for this protocol.                                                        │
+ │                                                                                                  │
+ │ > https://api.openai.com/v1                                                                      │
+ │                                                                                                  │
+ │ Enter to submit, Esc to go back                                                                  │
+ │                                                                                                  │
+ └──────────────────────────────────────────────────────────────────────────────────────────────────┘

 ❯ vi.waitFor.timeout src/ui/auth/AuthDialog.test.tsx:155:27
    153|   await vi.waitFor(
    154|     () => {
    155|       expect(lastFrame()).toContain(expectedText);
       |                           ^
    156|     },
    157|     { timeout: WAIT_FOR_TIMEOUT },

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[6/10]⎯


 Test Files  1 failed | 503 passed (504)
      Tests  10 failed | 9865 passed | 2 skipped (9877)
   Start at  12:19:46
   Duration  139.11s (transform 59.04s, setup 74.14s, collect 1699.12s, tests 436.25s, environment 239.75s, prepare 59.29s)

JUNIT report written to /startdir/src/qwen-code/packages/cli/junit.xml
npm error Lifecycle script `test` failed with error:
npm error code 1
npm error path /startdir/src/qwen-code/packages/cli
npm error workspace @qwen-code/qwen-code@0.19.3
npm error location /startdir/src/qwen-code/packages/cli
npm error command failed
npm error command sh -c vitest run '--exclude=**/{qwenConnectionHandler,useAtCompletion,pid-descendants}.test.ts'

npm notice run @qwen-code/qwen-code-core@0.19.3 test

 RUN  v3.2.4 /startdir/src/qwen-code/packages/core
      Coverage enabled with v8

 ✓ src/telemetry/session-tracing.test.ts (126 tests) 43ms
 ✓ src/utils/schemaValidator.test.ts (132 tests) 329ms
 ✓ src/services/shellExecutionService.test.ts (120 tests) 442ms
 ✓ src/services/sessionService.test.ts (66 tests) 168ms
 ✓ src/hooks/hookEventHandler.test.ts (125 tests) 152ms
 ✓ src/agents/background-tasks.test.ts (88 tests) 53ms
 ✓ src/core/loggingContentGenerator/loggingContentGenerator.test.ts (58 tests) 71ms
 ✓ src/models/modelsConfig.test.ts (77 tests) 42ms
 ✓ src/core/openaiContentGenerator/pipeline.test.ts (80 tests) 126ms
 ✓ src/services/memoryPressureMonitor.test.ts (72 tests) 119ms

+----------------- Qwen OAuth Device Authorization ------------------+
|                                                                    |
| Please visit the following URL in your browser to authorize:       |
|                                                                    |
| https://chat.qwen.ai/device?code=TEST123                           |
|                                                                    |
| Waiting for authorization to complete...                           |
|                                                                    |
+--------------------------------------------------------------------+


+----------------- Qwen OAuth Device Authorization ------------------+
|                                                                    |
| Please visit the following URL in your browser to authorize:       |
|                                                                    |
| https://chat.qwen.ai/device?code=TEST123                           |
|                                                                    |
| Waiting for authorization to complete...                           |
|                                                                    |
+--------------------------------------------------------------------+


+----------------- Qwen OAuth Device Authorization ------------------+
|                                                                    |
| Please visit the following URL in your browser to authorize:       |
|                                                                    |
| https://chat.qwen.ai/device?code=TEST123                           |
|                                                                    |
| Waiting for authorization to complete...                           |
|                                                                    |
+--------------------------------------------------------------------+


+----------------- Qwen OAuth Device Authorization ------------------+
|                                                                    |
| Please visit the following URL in your browser to authorize:       |
|                                                                    |
| https://chat.qwen.ai/device?code=TEST123                           |
|                                                                    |
| Waiting for authorization to complete...                           |
|                                                                    |
+--------------------------------------------------------------------+


+----------------- Qwen OAuth Device Authorization ------------------+
|                                                                    |
| Please visit the following URL in your browser to authorize:       |
|                                                                    |
| https://chat.qwen.ai/device?code=TEST123                           |
|                                                                    |
| Waiting for authorization to complete...                           |
|                                                                    |
+--------------------------------------------------------------------+

 ✓ src/utils/fileUtils.test.ts (98 tests) 165ms
 ✓ src/qwen/qwenOAuth2.test.ts (86 tests) 2092ms
   ✓ getQwenOAuthClient - Enhanced Error Scenarios > should handle different authentication failure reasons - timeout  2035ms
 ✓ src/tools/skill.test.ts (73 tests) 108ms
 ✓ src/hooks/hookSystem.test.ts (88 tests) 183ms
 ✓ src/permissions/permission-manager.test.ts (247 tests) 161ms
 ✓ src/core/anthropicContentGenerator/anthropicContentGenerator.test.ts (72 tests) 5039ms
   ✓ AnthropicContentGenerator > uses claude-cli identity (User-Agent + x-app + Bearer auth) for non-Anthropic baseURLs  818ms
 ✓ src/core/openaiContentGenerator/converter.test.ts (135 tests) 62ms
 ✓ src/skills/skill-manager.test.ts (73 tests) 217ms
 ✓ src/tools/mcp-client.test.ts (89 tests) 413ms
 ✓ src/services/chatCompressionService.test.ts (71 tests) 206ms
qwen serve: MCP server 'c' refused (budget exhausted, budget=2, mode=enforce)
qwen serve: MCP server 'd' refused (budget exhausted, budget=2, mode=enforce)
qwen serve: MCP server 'mike' refused (budget exhausted, budget=2, mode=enforce)
qwen serve: MCP server 'b' refused (budget exhausted, budget=1, mode=enforce)
qwen serve: MCP server 'b' refused (budget exhausted, budget=1, mode=enforce)
qwen serve: MCP server 'b' refused (budget exhausted, budget=1, mode=enforce)
qwen serve: MCP server 'b' refused (budget exhausted, budget=1, mode=enforce)
 ✓ src/tools/mcp-transport-pool.test.ts (34 tests) 342ms
qwen serve: MCP server 'b' refused (budget exhausted, budget=1, mode=enforce)
qwen serve: ignoring invalid QWEN_SERVE_MCP_CLIENT_BUDGET='-3' (expected positive integer); MCP budget enforcement disabled for this child.
qwen serve: MCP server 'b' refused (budget exhausted, budget=1, mode=enforce)
qwen serve: MCP server 'b' refused (budget exhausted, budget=1, mode=enforce)
qwen serve: MCP server 'b' refused (budget exhausted, budget=1, mode=enforce)
 ✓ src/agents/runtime/workflow-orchestrator.test.ts (115 tests) 573ms
qwen serve: MCP server 'b' refused (budget exhausted, budget=1, mode=enforce)
qwen serve: QWEN_SERVE_MCP_BUDGET_MODE=enforce requires QWEN_SERVE_MCP_CLIENT_BUDGET=N; downgrading to off. Set both env vars to enable MCP guardrail enforcement.
qwen serve: MCP server 'third' refused (budget exhausted, budget=2, mode=enforce)
qwen serve: MCP server 'b' refused (budget exhausted, budget=1, mode=enforce)
qwen serve: MCP server 'b' refused (budget exhausted, budget=1, mode=enforce)
qwen serve: QWEN_SERVE_MCP_BUDGET_MODE=warn requires QWEN_SERVE_MCP_CLIENT_BUDGET=N; downgrading to off. Set both env vars to enable MCP guardrail enforcement.
qwen serve: McpClientManager constructed with budgetMode=enforce but no clientBudget; downgrading to off.
qwen serve: MCP server 'b' refused (budget exhausted, budget=1, mode=enforce)
qwen serve: MCP server 'c' refused (budget exhausted, budget=1, mode=enforce)
qwen serve: MCP server 'b' refused (budget exhausted, budget=1, mode=enforce)
qwen serve: MCP server 'b' refused (budget exhausted, budget=1, mode=enforce)
qwen serve: MCP server 'b' refused (budget exhausted, budget=1, mode=enforce)
qwen serve: MCP server 'c' refused (budget exhausted, budget=1, mode=enforce)
qwen serve: MCP server 'd' refused (budget exhausted, budget=1, mode=enforce)
qwen serve: MCP server 'e' refused (budget exhausted, budget=1, mode=enforce)
qwen serve: MCP server 'b' refused (budget exhausted, budget=1, mode=enforce)
qwen serve: MCP server 'c' refused (budget exhausted, budget=1, mode=enforce)
qwen serve: MCP server 'd' refused (budget exhausted, budget=1, mode=enforce)
 ✓ src/tools/edit.test.ts (81 tests) 486ms
 ✓ src/tools/mcp-client-manager.test.ts (109 tests) 695ms
 ✓ src/agents/background-agent-resume.test.ts (28 tests) 606ms
 ✓ src/services/cronScheduler.test.ts (89 tests) 1660ms
   ✓ CronScheduler > durable ownership > reloads durable tasks when the file changes on disk  367ms
 ✓ src/subagents/subagent-manager.test.ts (113 tests) 650ms
   ✓ SubagentManager > Runtime Configuration Methods > createAgentHeadless model override > should create a new ContentGenerator for bare model IDs  365ms
 ✓ src/tools/agent/agent.test.ts (111 tests) 1109ms
   ✓ AgentTool > AgentToolInvocation > passes custom ignore files into worktree isolation file service  374ms
 ✓ src/services/postCompactAttachments.test.ts (67 tests) 117ms
 ✓ src/utils/atomicFileWrite.test.ts (81 tests) 244ms
 ✓ src/core/coreToolScheduler.test.ts (222 tests) 1374ms
 ✓ src/config/config.test.ts (291 tests) 1813ms
   ✓ Server Config (config.ts) > MCP hot-reload (sub-task 3) > setMcpServers REPLACES (not merges) and works post-init  795ms
 ✓ src/tools/ripGrep.test.ts (75 tests) 505ms
 ✓ src/core/anthropicContentGenerator/converter.test.ts (51 tests) 18ms
 ✓ src/ide/ide-client.test.ts (60 tests) 219ms
 ✓ src/memory/manager.test.ts (45 tests) 193ms
 ✓ src/services/loopDetectionService.test.ts (62 tests) 405ms
 ✓ src/agents/runtime/agent-headless.test.ts (38 tests) 2577ms
   ✓ subagent.ts > AgentHeadless > create (Tool Validation) > should create a AgentHeadless successfully with minimal config  1087ms
 ✓ src/utils/retry.test.ts (84 tests) 163ms
 ✓ src/mcp/oauth-provider.test.ts (27 tests) 220ms
 ✓ src/telemetry/sdk.test.ts (59 tests) 588ms
 ✓ src/services/microcompaction/microcompact.test.ts (56 tests) 40ms
 ✓ src/core/openaiContentGenerator/provider/dashscope.test.ts (70 tests) 52ms
 ✓ src/tools/read-file.test.ts (62 tests) 357ms
 ✓ src/tools/shell.test.ts (250 tests) 3694ms
 ✓ src/services/fileHistoryService.test.ts (51 tests) 280ms
 ✓ src/utils/filesearch/crawler.test.ts (48 tests) 1957ms
 ✓ src/lsp/NativeLspService.test.ts (18 tests) 64ms
 ✓ src/telemetry/log-to-span-processor.test.ts (51 tests) 65ms
 ✓ src/utils/memoryDiscovery.test.ts (38 tests) 241ms
 ✓ src/core/baseLlmClient.test.ts (46 tests) 64ms
 ✓ src/models/modelRegistry.test.ts (74 tests) 39ms
 ✓ src/tools/lsp.test.ts (70 tests) 661ms
 ✓ src/utils/gitDiff.test.ts (58 tests) 2236ms
 ✓ src/hooks/hookAggregator.test.ts (49 tests) 14ms
 ✓ src/utils/memoryImportProcessor.test.ts (31 tests) 75ms
 ✓ src/core/toolHookTriggers.test.ts (58 tests) 36ms
 ✓ src/core/logger.test.ts (52 tests) 177ms
 ✓ src/hooks/hookPlanner.test.ts (64 tests) 17ms
 ✓ src/telemetry/uiTelemetry.test.ts (42 tests) 32ms
 ✓ src/utils/editor.test.ts (152 tests) 77ms
 ✓ src/services/monitorRegistry.test.ts (56 tests) 64ms
 ✓ src/agents/team/tasks.test.ts (53 tests) 190ms
 ✓ src/extension/claude-converter.test.ts (50 tests) 103ms
 ✓ src/qwen/sharedTokenManager.test.ts (32 tests) 287ms
 ✓ src/telemetry/loggers.test.ts (56 tests) 70ms
 ✓ src/qwen/qwenContentGenerator.test.ts (44 tests) 239ms
 ✓ src/tools/write-file.test.ts (50 tests) 220ms
 ✓ src/extension/github.test.ts (64 tests) 284ms
 ✓ src/services/fileReadCache.test.ts (53 tests) 76ms
 ✓ src/tools/monitor.test.ts (73 tests) 98ms
 ✓ src/utils/paths.test.ts (117 tests | 1 skipped) 26ms
 ✓ src/tools/mcp-tool.test.ts (54 tests) 342ms
 ✓ src/extension/extensionManager.test.ts (55 tests) 136ms
 ✓ src/skills/skill-load.test.ts (68 tests) 37ms
 ✓ src/hooks/hookRegistry.test.ts (36 tests) 36ms
 ✓ src/services/commitAttribution.test.ts (58 tests) 22ms
 ✓ src/permissions/autoMode.test.ts (83 tests) 59ms
 ✓ src/core/openaiContentGenerator/streamingToolCallParser.test.ts (60 tests) 24ms
 ✓ src/utils/sessionStorageUtils.test.ts (53 tests) 25ms
 ✓ src/services/backgroundShellRegistry.test.ts (45 tests) 31ms
 ✓ src/utils/shell-utils.test.ts (138 tests) 69ms
 ✓ src/services/chatRecordingService.test.ts (35 tests) 61ms
 ✓ src/tools/todoWrite.test.ts (28 tests) 92ms
 ✓ src/models/modelConfigResolver.test.ts (51 tests) 28ms
 ✓ src/utils/environmentContext.test.ts (44 tests) 93ms
 ✓ src/core/prompts.test.ts (58 tests) 34ms
 ✓ src/agents/team/test-utils/coordination-harness.test.ts (28 tests) 549ms
 ✓ src/telemetry/qwen-logger/qwen-logger.test.ts (36 tests) 47ms
 ✓ src/extension/extensionSettings.test.ts (23 tests) 90ms
 ✓ src/agents/backends/InProcessBackend.test.ts (34 tests) 116ms
 ✓ src/lsp/NativeLspService.integration.test.ts (30 tests) 15ms
 ✓ src/permissions/shell-semantics.test.ts (103 tests) 66ms
 ✓ src/core/turn.test.ts (28 tests) 22ms
 ✓ src/tools/tool-registry.test.ts (34 tests) 176ms
 ✓ src/config/storage.test.ts (63 tests) 29ms
 ✓ src/tools/grep.test.ts (51 tests) 609ms
 ✓ src/tools/workflow/workflow.test.ts (34 tests) 209ms
 ✓ src/utils/truncation.test.ts (28 tests) 50ms
 ✓ src/telemetry/detailed-span-attributes.test.ts (46 tests) 22ms
 ✓ src/utils/openaiLogger.test.ts (38 tests) 184ms
 ✓ src/hooks/hookRunner.test.ts (36 tests) 126ms
 ✓ src/core/geminiChat.test.ts (192 tests) 10182ms
   ✓ GeminiChat > should correctly retry and append to an existing history mid-conversation  2040ms
   ✓ GeminiChat > should retry if the model returns a completely empty stream (no chunks)  2032ms
   ✓ GeminiChat > should discard valid partial content from a failed attempt upon retry  2043ms
 ✓ src/utils/filesearch/fileSearch.test.ts (29 tests) 674ms
[ToolSearch] setTools() failed while revealing deferred tools: chat not initialised
[ToolSearch] setTools() failed while revealing deferred tools: chat not initialised
[ToolSearch] ensureTool failed for "bravo": mid-batch failure
 ✓ src/tools/notebook-edit.test.ts (31 tests) 194ms
 ✓ src/tools/tool-search.test.ts (44 tests) 114ms
 ✓ src/services/gitWorktreeService.test.ts (27 tests) 27ms
 ✓ src/services/visionBridge/vision-bridge-service.test.ts (34 tests) 33ms
 ✓ src/services/sessionService.rename.test.ts (18 tests) 42ms
 ✓ src/utils/runtimeFetchOptions.test.ts (44 tests) 32ms
 ✓ src/core/client.test.ts (207 tests) 11213ms
 ✓ src/utils/notebook.test.ts (30 tests) 41ms
 ✓ src/utils/memoryDiagnostics.test.ts (12 tests) 116ms
 ✓ src/utils/workspaceContext.test.ts (45 tests) 31ms
 ✓ src/utils/pdf.test.ts (34 tests) 29ms
 ✓ src/telemetry/config.test.ts (43 tests) 28ms
 ✓ src/services/fileSystemService.test.ts (43 tests) 32ms
 ✓ src/agents/backends/ITermBackend.test.ts (46 tests) 54ms
 ✓ src/utils/gitDirect.test.ts (68 tests) 110ms
 ✓ src/services/compactionInputSlimming.test.ts (35 tests) 13ms
 ✓ src/telemetry/metrics.test.ts (40 tests) 883ms
 ✓ src/memory/extract.test.ts (14 tests) 102ms
 ✓ src/hooks/promptHookRunner.test.ts (25 tests) 155ms
 ✓ src/utils/shellAstParser.test.ts (148 tests) 94ms
 ✓ src/utils/secure-browser-launcher.test.ts (31 tests) 26ms
 ✓ src/providers/__tests__/install.test.ts (20 tests) 88ms
 ✓ src/tools/computer-use/tool.test.ts (40 tests) 74ms
 ✓ src/utils/sideQuery.test.ts (23 tests) 122ms
 ✓ src/goals/goalHook.test.ts (22 tests) 33ms
 ✓ src/core/openaiContentGenerator/provider/default.test.ts (26 tests) 18ms
 ✓ src/agents/agent-transcript.test.ts (25 tests) 40ms
 ✓ src/tools/exitPlanMode.test.ts (33 tests) 29ms
 ✓ src/utils/rulesDiscovery.test.ts (34 tests) 95ms
 ✓ src/agents/arena/ArenaAgentClient.test.ts (21 tests) 38ms
 ✓ src/services/tokenUsageService.test.ts (18 tests) 357ms
 ✓ src/telemetry/tracer.test.ts (31 tests) 33ms
 ✓ src/tools/glob.test.ts (48 tests) 3012ms
 ✓ src/hooks/sessionHooksManager.test.ts (32 tests) 15ms
 ✓ src/mcp/oauth-utils.test.ts (33 tests) 21ms
 ✓ src/agents/runtime/agent-interactive.test.ts (22 tests) 753ms
 ✓ src/agents/backends/TmuxBackend.test.ts (27 tests) 38ms
 ✓ src/utils/systemEncoding.test.ts (41 tests) 23ms
 ✓ src/agents/workflow-run-registry.test.ts (32 tests) 22ms
 ✓ src/tools/ls.test.ts (30 tests) 195ms
 ✓ src/extension/variables.test.ts (20 tests) 41ms
 ✓ src/core/openaiContentGenerator/provider/deepseek.test.ts (25 tests) 13ms
 ✓ src/mcp/oauth-token-storage.test.ts (31 tests) 969ms
 ✓ src/services/usageHistoryService.test.ts (13 tests) 32ms
 ✓ src/tools/task-stop.test.ts (14 tests) 79ms
 ✓ src/utils/pathReader.test.ts (17 tests) 68ms
 ✓ src/goals/goalJudge.test.ts (20 tests) 16ms
 ✓ src/utils/readManyFiles.test.ts (19 tests) 74ms
 ✓ src/core/tokenLimits.test.ts (59 tests) 30ms
 ✓ src/services/sleepInhibitor.test.ts (21 tests) 818ms
 ✓ src/extension/marketplace.test.ts (32 tests) 44ms
 ✓ src/hooks/asyncHookRegistry.test.ts (20 tests) 15ms
 ✓ src/agents/runtime/workflow-saved.test.ts (33 tests) 114ms
 ✓ src/mcp/token-storage/file-token-storage.test.ts (25 tests) 1036ms
 ✓ src/memory/writeContextFile.test.ts (16 tests) 73ms
 ✓ src/tools/team-lifecycle.test.ts (5 tests) 657ms
   ✓ Team lifecycle E2E > full lifecycle: create → tasks → messages → list → update → delete  636ms
 ✓ src/tools/askUserQuestion.test.ts (23 tests) 17ms
 ✓ src/services/toolUseSummary.test.ts (34 tests) 55ms
 ✓ src/subagents/validation.test.ts (41 tests) 26ms
 ✓ src/agents/team/mailbox.test.ts (18 tests) 186ms
 ✓ src/agents/team/teamHelpers.test.ts (45 tests) 83ms
 ✓ src/utils/rateLimit.test.ts (35 tests) 29ms
 ✓ src/permissions/classifier-transcript.test.ts (14 tests) 8ms
 ✓ src/utils/abortController.test.ts (26 tests | 1 skipped) 40ms
 ✓ src/services/chatRecordingService.autoTitle.test.ts (17 tests) 37ms
 ✓ src/tools/computer-use/client.test.ts (38 tests) 4045ms
   ✓ callTool reconnect path > succeeds on a later attempt after backing off past an earlier transport failure  1007ms
   ✓ callTool reconnect path > exhausts exactly 3 reconnect attempts on persistent transport errors, then re-throws the last  3010ms
 ✓ src/hooks/functionHookRunner.test.ts (20 tests) 95ms
 ✓ src/permissions/classifier.test.ts (23 tests) 23ms
 ✓ src/ide/ideContext.test.ts (23 tests) 17ms
 ✓ src/core/geminiContentGenerator/geminiContentGenerator.test.ts (12 tests) 15ms
 ✓ src/utils/sedEditParser.test.ts (34 tests) 17ms
 ✓ src/utils/forkedAgent.cache.test.ts (12 tests) 20ms
 ✓ src/services/gitWorktreeService.symlinks.integ.test.ts (15 tests) 3790ms
   ✓ GitWorktreeService.createUserWorktree() — symlinkDirectories > works when the repo path itself contains a symlink boundary (round-7 self-inflicted regression guard)  316ms
   ✓ GitWorktreeService.createUserWorktree() — symlinkDirectories > rejects any entry containing a '..' segment (docs contract)  312ms
   ✓ GitWorktreeService.createUserWorktree() — symlinkDirectories > handles multiple entries — some present, some missing  333ms
   ✓ GitWorktreeService.createUserWorktree() — symlinkDirectories > is a no-op when symlinkDirectories is omitted or empty  365ms
 ✓ src/utils/retryErrorClassification.test.ts (27 tests) 15ms
 ✓ src/utils/forkedAgent.agent.test.ts (7 tests) 27ms
 ✓ src/services/chatRecordingService.customTitle.test.ts (13 tests) 31ms
 ✓ src/utils/toolResultDisplayCompaction.test.ts (14 tests) 21ms
 ✓ src/core/__tests__/openaiTimeoutHandling.test.ts (12 tests) 32ms
 ✓ src/utils/partUtils.test.ts (43 tests) 11ms
 ✓ src/agents/arena/ArenaManager.test.ts (25 tests) 3668ms
   ✓ ArenaManager > backend initialization > should emit SESSION_UPDATE with type warning when backend detection returns warning  518ms
   ✓ ArenaManager > chat history forwarding > should pass chatHistory to backend spawnAgent calls  512ms
   ✓ ArenaManager > chat history forwarding > should pass undefined chatHistory when not provided  516ms
   ✓ ArenaManager > active session lifecycle > collects diff summaries and fallback approach summaries  1012ms
   ✓ ArenaManager > active session lifecycle > cancel should stop backend and move session to CANCELLED  513ms
   ✓ ArenaManager > active session lifecycle > cleanup should release backend and worktree resources after start  510ms
 ✓ src/memory/skillReviewNudge.integration.test.ts (18 tests) 39ms
 ✓ src/tools/web-fetch.test.ts (25 tests) 142ms
 ✓ src/followup/followupState.test.ts (18 tests) 23ms
 ✓ src/telemetry/daemon-metrics.test.ts (18 tests) 406ms
 ✓ src/services/cronTasksFile.test.ts (22 tests) 201ms
 ✓ src/tools/send-message.test.ts (16 tests) 116ms
 ↓ src/agents/runtime/workflow-p4a-meta-live.live.test.ts (6 tests | 6 skipped)
 ✓ src/tools/session-mcp-view.test.ts (17 tests) 14ms
 ✓ src/core/openaiContentGenerator/openaiContentGenerator.test.ts (14 tests) 33ms
 ✓ src/agents/runtime/agent-core.test.ts (10 tests) 14ms
 ✓ src/utils/jsonl-utils.test.ts (28 tests) 34ms
 ✓ src/utils/ignorePatterns.test.ts (29 tests) 13ms
 ✓ src/core/openaiContentGenerator/errorHandler.test.ts (36 tests) 47ms
 ✓ src/agents/team/test-utils/fake-agent.test.ts (28 tests) 13ms
 ✓ src/tools/artifact/artifact-tool.test.ts (18 tests) 278ms
 ✓ src/utils/request-tokenizer/imageTokenizer.test.ts (18 tests) 11ms
 ✓ src/permissions/dangerousRules.test.ts (110 tests) 15ms
 ✓ src/tools/agent/agent-override.test.ts (9 tests) 107ms
 ✓ src/memory/skillReviewAgentPlanner.test.ts (19 tests) 43ms
 ✓ src/agents/runtime/agent-statistics.test.ts (32 tests) 34ms
 ✓ src/services/sessionTitle.test.ts (15 tests) 53ms
 ✓ src/memory/userMemory.test.ts (13 tests) 63ms
 ✓ src/utils/debugLogger.test.ts (21 tests) 38ms
 ✓ src/permissions/classifier-prompts/system-prompt.test.ts (21 tests) 11ms
 ✓ src/mcp/token-storage/keychain-token-storage.test.ts (24 tests) 1698ms
 ✓ src/tools/enter-worktree.test.ts (26 tests) 93ms
 ✓ src/permissions/destructive-commands.test.ts (31 tests) 15ms
 ✓ src/tools/read-mcp-resource.test.ts (15 tests) 88ms
 ✓ src/mcp/token-storage/hybrid-token-storage.test.ts (13 tests) 24ms
 ✓ src/utils/getFolderStructure.test.ts (15 tests) 45ms
 ✓ src/utils/yaml-parser.test.ts (38 tests) 67ms
 ✓ src/core/openaiContentGenerator/pipeline.concurrent.test.ts (2 tests) 16ms
 ✓ src/utils/request-tokenizer/textTokenizer.test.ts (31 tests) 84ms
 ✓ src/services/memoryDiagnosticsDumper.test.ts (11 tests) 39ms
 ✓ src/agents/backends/iterm-it2.test.ts (19 tests) 13ms
 ✓ src/tools/modifiable-tool.test.ts (11 tests) 80ms
 ✓ src/services/worktreeSessionService.test.ts (19 tests) 67ms
 ✓ src/utils/generateContentResponseUtilities.test.ts (29 tests) 18ms
 ✓ src/extension/npm.test.ts (26 tests) 23ms
 ✓ src/agents/runtime/workflow-stall.test.ts (24 tests) 37ms
 ✓ src/utils/filesearch/ignore.test.ts (20 tests) 35ms
 ✓ src/core/openaiContentGenerator/taggedThinkingParser.test.ts (27 tests) 7ms
 ✓ src/permissions/denialTracking.test.ts (25 tests) 9ms
 ✓ src/utils/filesearch/fzfWorkerHandle.test.ts (13 tests) 397ms
 ✓ src/services/sessionService.corruption.test.ts (11 tests) 18ms
 ✓ src/confirmation-bus/message-bus.test.ts (15 tests) 82ms
 ✓ src/subagents/agent-frontmatter-schema.test.ts (26 tests) 21ms
 ✓ src/telemetry/resource-attributes.test.ts (35 tests) 19ms
 ✓ src/tools/loop-wakeup.test.ts (19 tests) 107ms
 ✓ src/extension/sourceRegistry.test.ts (22 tests) 22ms
 ✓ src/output/json-formatter.test.ts (15 tests) 8ms
 ✓ src/memory/team-index.test.ts (10 tests) 43ms
 ✓ src/telemetry/daemon-tracing.test.ts (10 tests) 21ms
 ✓ src/tools/computer-use/bootstrap.test.ts (13 tests) 97ms
 ✓ src/memory/indexer.test.ts (7 tests) 80ms
 ✓ src/hooks/httpHookRunner.test.ts (10 tests) 46ms
 ✓ src/utils/terminalSerializer.test.ts (20 tests) 106ms
 ✓ src/memory/team-memory-sync.test.ts (10 tests) 2019ms
   ✓ syncTeamMemory > commits local team memory and pushes it to the remote  307ms
   ✓ syncTeamMemory > reconciles a second writer instead of diverging (commit lands on top)  343ms
 ✓ src/tools/task-update.test.ts (14 tests) 228ms
 ✓ src/models/content-generator-config.test.ts (13 tests) 9ms
 ✓ src/tools/artifact/oss-publisher.test.ts (16 tests) 34ms
 ✓ src/utils/nextSpeakerChecker.test.ts (13 tests) 81ms
 ✓ src/utils/gitIgnoreParser.test.ts (21 tests) 70ms
 ✓ src/utils/runtimeStatus.test.ts (19 tests) 62ms
 ✓ src/core/modalityDefaults.test.ts (42 tests) 13ms
 ✓ src/memory/store.test.ts (10 tests) 41ms
 ✓ src/services/cronTasksLock.test.ts (15 tests) 39ms
 ✓ src/services/runtimeSampleRing.test.ts (10 tests) 13ms
 ✓ src/services/fileReadCache.integration.test.ts (3 tests) 93ms
 ✓ src/services/fileDiscoveryService.test.ts (15 tests) 140ms
 ✓ src/agents/team/test-utils/fake-backend.test.ts (18 tests) 85ms
 ✓ src/utils/envVarResolver.test.ts (16 tests) 10ms
 ✓ src/utils/retryPolicy.test.ts (20 tests) 23ms
 ✓ src/memory/relevanceSelector.test.ts (9 tests) 32ms
 ✓ src/tools/exit-worktree.session.integ.test.ts (8 tests) 3046ms
   ✓ ExitWorktreeTool — WorktreeSession sidecar cleanup > preserves the sidecar after keep so --resume can restore the worktree binding  396ms
   ✓ ExitWorktreeTool — WorktreeSession sidecar cleanup > clears the sidecar after remove  418ms
   ✓ ExitWorktreeTool — WorktreeSession sidecar cleanup > does not clear the sidecar when slug does not match  417ms
   ✓ ExitWorktreeTool — WorktreeSession sidecar cleanup > is a no-op when no sidecar exists  302ms
   ✓ ExitWorktreeTool — WorktreeSession sidecar cleanup > removes a re-attached worktree when the old marker owner is inactive  414ms
   ✓ ExitWorktreeTool — WorktreeSession sidecar cleanup > removes a stale-owned worktree when launched from inside it without a sidecar  406ms
   ✓ ExitWorktreeTool — WorktreeSession sidecar cleanup > refuses a re-attached remove when the marker owner runtime is active  319ms
   ✓ ExitWorktreeTool — WorktreeSession sidecar cleanup > refuses a re-attached remove when the owner is active under a repo-subdir relative runtime dir  372ms
 ✓ src/utils/request-tokenizer/requestTokenizer.test.ts (11 tests) 7ms
 ✓ src/tools/exit-worktree.test.ts (16 tests) 1923ms
   ✓ ExitWorktreeTool > execute() — session ownership & lifecycle > refuses remove when the marker names a different session  398ms
   ✓ ExitWorktreeTool > execute() — session ownership & lifecycle > keep returns success and leaves the worktree + branch intact  367ms
   ✓ ExitWorktreeTool > execute() — session ownership & lifecycle > allows removal when the worktree predates the session-marker guard  368ms
   ✓ ExitWorktreeTool > execute() — session ownership & lifecycle > refuses removal when the worktree branch has unmerged commits  375ms
   ✓ ExitWorktreeTool > execute() — session ownership & lifecycle > marker also written by writeWorktreeSessionMarker survives round-trip  305ms
 ✓ src/utils/filesearch/crawlCache.test.ts (13 tests) 51ms
 ✓ src/subagents/subagent-manager-override.test.ts (6 tests) 25ms
 ✓ src/utils/subagentGenerator.test.ts (9 tests) 47ms
 ✓ src/telemetry/trace-context.test.ts (18 tests) 10ms
 ✓ src/core/contentGenerator.test.ts (9 tests) 51ms
 ✓ src/skills/skill-activation.test.ts (20 tests) 4016ms
   ✓ extractToolFilePaths → SkillActivationRegistry integration > activates a skill keyed on src/**/*.ts from glob({ path: "src", pattern: "**/*.ts" })  4003ms
 ✓ src/agents/workflow-snapshot.test.ts (9 tests) 108ms
 ✓ src/plan-gate/planApprovalGate.test.ts (22 tests) 4028ms
   ✓ runPlanApprovalGate > should return unavailable when agent exhausts retries  2007ms
   ✓ runPlanApprovalGate decision edge cases > should succeed after partial retries (fail 2, then succeed)  2007ms
 ✓ src/core/nonInteractiveToolExecutor.test.ts (8 tests) 21ms
 ✓ src/mcp/token-storage/base-token-storage.test.ts (14 tests) 25ms
[warn] Corrupt extension state file /tmp/ext-prefs-uwlZnY/nested/extension-preferences.json moved aside to /tmp/ext-prefs-uwlZnY/nested/extension-preferences.json.corrupted
 ✓ src/utils/cronParser.test.ts (25 tests) 43ms
 ✓ src/extension/extensionPreferences.test.ts (11 tests) 19ms
 ✓ src/utils/runtimeDiagnostics.test.ts (4 tests) 9ms
 ✓ src/utils/qwenIgnoreParser.test.ts (11 tests) 30ms
 ✓ src/utils/errorParsing.test.ts (18 tests) 8ms
 ✓ src/utils/safeJsonStringify.test.ts (17 tests) 7ms
 ✓ src/tools/mcp-resource-content.test.ts (13 tests) 16ms
 ✓ src/extension/gemini-converter.test.ts (11 tests) 17ms
 ✓ src/utils/editHelper.test.ts (17 tests) 8ms
 ✓ src/tools/computer-use/constants.test.ts (20 tests) 15ms
 ✓ src/tools/tools.test.ts (11 tests) 9ms
 ✓ src/agents/runtime/agent-context.test.ts (17 tests) 19ms
 ✓ src/utils/modelId.test.ts (25 tests) 20ms
 ✓ src/lsp/LspConfigLoader.test.ts (8 tests) 30ms
 ✓ src/hooks/promptHookIntegration.test.ts (9 tests) 115ms
 ✓ src/hooks/envInterpolator.test.ts (30 tests) 16ms
 ✓ src/hooks/detectTodoChanges.test.ts (12 tests) 6ms
 ✓ src/followup/overlayFs.test.ts (15 tests) 34ms
 ✓ src/memory/extractionAgentPlanner.test.ts (10 tests) 29ms
 ✓ src/utils/shellContextEnv.test.ts (12 tests) 15ms
 ✓ src/memory/pending-skills.test.ts (11 tests) 41ms
 ✓ src/memory/team-paths.test.ts (9 tests) 9ms
 ✓ src/utils/ripgrepUtils.test.ts (8 tests) 10ms
 ✓ src/hooks/registerSkillHooks.test.ts (7 tests) 11ms
 ✓ src/hooks/urlValidator.test.ts (20 tests) 14ms
 ✓ src/agents/runtime/workflow-budget.test.ts (20 tests) 10ms
 ✓ src/tools/artifact/html.test.ts (38 tests) 11ms
 ✓ src/tools/cron-list.test.ts (8 tests) 101ms
 ✓ src/memory/recall.test.ts (6 tests) 7ms
 ✓ src/memory/prompt.test.ts (9 tests) 8ms
 ✓ src/hooks/ssrfGuard.test.ts (21 tests) 18ms
 ✓ src/tools/artifact/host-publisher.test.ts (17 tests) 33ms
 ✓ src/mcp/sa-impersonation-provider.test.ts (8 tests) 20ms
 ✓ src/ide/ide-installer.test.ts (10 tests) 42ms
 ✓ src/tools/mcp-pool-key.test.ts (24 tests) 11ms
 ✓ src/lsp/LspServerManager.test.ts (7 tests) 15ms
 ✓ src/tools/toAutoClassifierInput.test.ts (12 tests) 8ms
 ✓ src/core/permissionFlow.test.ts (20 tests) 11ms
 ✓ src/tools/mcp-workspace-budget.test.ts (17 tests) 10ms
 ✓ src/utils/contextLengthError.test.ts (27 tests) 10ms
 ✓ src/utils/gitUtils.test.ts (6 tests) 12ms
 ✓ src/goals/goalLoop.integration.test.ts (2 tests) 13ms
 ✓ src/utils/shellReadOnlyChecker.test.ts (33 tests) 14ms
 ✓ src/tools/computer-use/downloader.test.ts (7 tests) 31ms
 ✓ src/tools/diffOptions.test.ts (9 tests) 8ms
 ✓ src/extension/i18n.test.ts (16 tests) 15ms
 ✓ src/followup/speculationToolGate.test.ts (29 tests) 130ms
 ✓ src/services/tokenEstimation.test.ts (15 tests) 7ms
 ✓ src/memory/memoryLifecycle.integration.test.ts (1 test) 42ms
 ✓ src/agents/runtime/workflow-journal.test.ts (14 tests) 22ms
 ✓ src/ide/process-utils.test.ts (6 tests) 9ms
 ✓ src/utils/textUtils.test.ts (25 tests) 8ms
 ✓ src/resources/resource-registry.test.ts (11 tests) 20ms
 ✓ src/tools/cron-create.test.ts (11 tests) 474ms
   ✓ CronCreateTool > rejects a cron that never matches a real date  345ms
 ✓ src/utils/safeJsonParse.test.ts (14 tests) 11ms
 ✓ src/memory/secret-scanner.test.ts (29 tests) 256ms
 ✓ src/ide/detect-ide.test.ts (14 tests) 7ms
 ✓ src/core/openaiContentGenerator/provider/mimo.test.ts (9 tests) 18ms
 ✓ src/followup/suggestionGenerator.test.ts (19 tests) 11ms
 ✓ src/tools/mcp-discovery-timeout.test.ts (14 tests) 11ms
 ✓ src/memory/scan.test.ts (4 tests) 52ms
 ✓ src/extension/override.test.ts (16 tests) 6ms
 ✓ src/utils/concurrencyLimiter.test.ts (8 tests) 55ms
 ✓ src/utils/errors.test.ts (17 tests) 11ms
 ✓ src/prompts/prompt-registry.test.ts (11 tests) 24ms
 ✓ src/hooks/types.test.ts (12 tests) 6ms
 ✓ src/agents/team/identity.test.ts (15 tests) 7ms
 ✓ src/utils/quotaErrorDetection.test.ts (16 tests) 5ms
 ✓ src/tools/team-create.test.ts (11 tests) 153ms
 ✓ src/extension/settings.test.ts (10 tests) 14ms
 ✓ src/config/config.workflow-registration.test.ts (4 tests) 97ms
 ✓ src/core/loggingContentGenerator/streamContentDetection.test.ts (16 tests) 4ms
 ✓ src/providers/__tests__/presets/alibaba-standard.test.ts (8 tests) 9ms
 ✓ src/agents/runtime/workflow-sandbox.test.ts (109 tests) 30637ms
   ✓ createWorkflowSandbox security > synchronous infinite loop is aborted by vm timeout  30111ms
 ✓ src/services/generatedFiles.test.ts (11 tests) 6ms
 ✓ src/tools/task-create.test.ts (8 tests) 70ms
 ✓ src/services/visionBridge/image-part-utils.test.ts (18 tests) 6ms
 ✓ src/tools/grepReadTracking.test.ts (7 tests) 19ms
 ✓ src/utils/errorReporting.test.ts (5 tests) 13ms
 ✓ src/core/anthropicContentGenerator/usage.test.ts (7 tests) 5ms
 ✓ src/utils/configResolver.test.ts (12 tests) 5ms
 ✓ src/followup/smoke.test.ts (21 tests) 17ms
 ✓ src/mcp/configHash.test.ts (15 tests) 6ms
 ✓ src/hooks/trustedHooks.test.ts (5 tests) 5ms
 ✓ src/agents/arena/diff-summary.test.ts (8 tests) 5ms
 ✓ src/skills/bundled/loop/SKILL.test.ts (5 tests) 18ms
 ✓ src/core/openaiContentGenerator/provider/minimax.test.ts (9 tests) 5ms
 ✓ src/telemetry/file-exporters.test.ts (3 tests) 13ms
 ✓ src/tools/cron-delete.test.ts (7 tests) 103ms
 ✓ src/utils/schemaConverter.test.ts (12 tests) 6ms
 ✓ src/followup/speculation.test.ts (8 tests) 64ms
 ✓ src/services/attributionTrailer.test.ts (4 tests) 8ms
 ✓ src/utils/proxyUtils.test.ts (18 tests) 8ms
 ✓ src/skills/skill-paths.test.ts (7 tests) 23ms
 ✓ src/utils/terminalSafe.test.ts (11 tests) 5ms
 ✓ src/config/config.workflows.test.ts (4 tests) 12ms
 ✓ src/core/openaiContentGenerator/provider/modelscope.test.ts (5 tests) 6ms
 ✓ src/core/inlineMediaLimit.test.ts (13 tests) 7ms
 ✓ src/utils/runtimeStatus.config.test.ts (4 tests) 250ms
 ✓ src/utils/filesearch/result-cache.test.ts (6 tests) 15ms
 ✓ src/utils/toml-to-markdown-converter.test.ts (11 tests) 33ms
 ✓ src/tools/enterPlanMode.test.ts (13 tests) 51ms
 ✓ src/mcp/google-auth-provider.test.ts (8 tests) 20ms
 ✓ src/tools/task-list.test.ts (6 tests) 91ms
 ✓ src/utils/xml.test.ts (10 tests) 15ms
 ✓ src/utils/projectRoot.test.ts (5 tests) 19ms
 ✓ src/subagents/builtin-agents.test.ts (8 tests) 6ms
 ✓ src/memory/team-memory-git-status.test.ts (5 tests) 136ms
 ✓ src/tools/computer-use/schemas.test.ts (8 tests) 19ms
 ✓ src/skills/skill-load.real-parser.test.ts (7 tests) 16ms
 ✓ src/utils/installationManager.test.ts (4 tests) 7ms
 ✓ src/core/toolCallIdUtils.test.ts (3 tests) 5ms
 ✓ src/utils/tool-utils.test.ts (20 tests) 7ms
 ✓ src/hooks/stopHookCap.test.ts (9 tests) 5ms
 ✓ src/hooks/combinedAbortSignal.test.ts (8 tests) 311ms
 ✓ src/extension/storage.test.ts (5 tests) 12ms
 ✓ src/agents/team/leaderPermissionBridge.test.ts (7 tests) 4ms
 ✓ src/core/openaiContentGenerator/provider/mistral.test.ts (4 tests) 7ms
 ✓ src/lsp/NativeLspClient.test.ts (2 tests) 5ms
 ✓ src/core/permission-helpers.test.ts (6 tests) 5ms
 ✓ src/extension/redaction.test.ts (11 tests) 4ms
 ✓ src/providers/__tests__/presets/idealab.test.ts (6 tests) 6ms
 ✓ src/skills/symlinkScope.test.ts (5 tests) 9ms
 ✓ src/memory/extractAgent.test.ts (1 test) 75ms
 ✓ src/utils/bundlePaths.test.ts (4 tests) 4ms
 ✓ src/core/geminiRequest.test.ts (12 tests) 8ms
 ✓ src/telemetry/sanitize.test.ts (10 tests) 11ms
 ✓ src/hooks/instructionsLoadedCallback.test.ts (4 tests) 8ms
 ✓ src/utils/thoughtUtils.test.ts (11 tests) 4ms
 ✓ src/telemetry/session-context.test.ts (7 tests) 4ms
 ✓ src/goals/activeGoalStore.test.ts (7 tests) 5ms
 ✓ src/tools/syntheticOutput.test.ts (7 tests) 61ms
 ✓ src/tools/skill-utils.test.ts (5 tests) 9ms
 ✓ src/memory/const.test.ts (4 tests) 5ms
 ✓ src/tools/team-delete.test.ts (5 tests) 584ms
   ✓ TeamDeleteTool > deletes an active team  313ms
 ✓ src/utils/projectSummary.test.ts (3 tests) 24ms
 ✓ src/tools/computer-use/install-state.test.ts (6 tests) 17ms
 ✓ src/memory/team-memory-secret-guard.test.ts (4 tests) 11ms
 ✓ src/memory/dreamAgentPlanner.test.ts (5 tests) 36ms
 ✓ src/memory/forget.test.ts (1 test) 15ms
 ✓ src/extension/corruptFile.test.ts (2 tests) 9ms
 ✓ src/plan-gate/gateReviewAgents.test.ts (12 tests) 9ms
 ✓ src/tools/artifact/local-publisher.test.ts (3 tests) 23ms
 ✓ src/utils/asyncMessageQueue.test.ts (7 tests) 4ms
 ✓ src/utils/fetch.test.ts (3 tests) 7ms
 ✓ src/tools/artifact/create-publisher.test.ts (5 tests) 4ms
 ✓ src/tools/computer-use/permission-detector.test.ts (6 tests) 4ms
 ✓ src/core/geminiContentGenerator/index.test.ts (3 tests) 8ms
 ✓ src/memory/dream.test.ts (3 tests) 33ms
 ✓ src/providers/__tests__/presets/modelscope.test.ts (3 tests) 7ms
 ✓ src/utils/startupEventSink.test.ts (4 tests) 15ms
 ✓ src/utils/internalPromptIds.test.ts (9 tests) 4ms
 ✓ src/telemetry/trace-id-utils.test.ts (8 tests) 13ms
 ✓ src/lsp/LspConnectionFactory.test.ts (2 tests) 103ms
 ✓ src/utils/messageInspectors.test.ts (5 tests) 3ms
 ✓ src/skills/bundled-skills.integration.test.ts (9 tests) 25ms
 ✓ src/telemetry/telemetry-utils.test.ts (6 tests) 4ms
 ✓ src/tools/enter-worktree.session.integ.test.ts (2 tests) 750ms
   ✓ EnterWorktreeTool — WorktreeSession sidecar > writes a WorktreeSession sidecar with all fields after creating worktree  344ms
   ✓ EnterWorktreeTool — WorktreeSession sidecar > overwrites a previous sidecar when entering a new worktree in the same session  405ms
 ✓ src/subagents/types.test.ts (3 tests) 3ms
 ✓ src/tools/artifact/publisher.test.ts (5 tests) 8ms
 ✓ src/memory/entries.test.ts (1 test) 4ms
 ✓ src/utils/getPty.test.ts (1 test) 4ms
 ✓ src/providers/__tests__/presets/openrouter.test.ts (5 tests) 4ms
 ✓ src/utils/cronDisplay.test.ts (2 tests) 4ms
 ✓ src/utils/env.test.ts (12 tests) 8ms
 ✓ src/providers/__tests__/presets/requesty.test.ts (5 tests) 3ms
 ✓ src/index.test.ts (1 test) 3ms
 ✓ src/providers/__tests__/presets/deepseek.test.ts (3 tests) 6ms
 ✓ src/config/config-session-env.test.ts (3 tests) 8597ms
   ✓ Config sessionEnvClaimed guard > first Config sets process.env QWEN_CODE_SESSION_ID to its sessionId  3991ms
   ✓ Config sessionEnvClaimed guard > subsequent Config does not overwrite the env var set by the first  2302ms
   ✓ Config sessionEnvClaimed guard > startNewSession updates env var to the new session ID  2303ms
 ✓ src/providers/__tests__/provider-config.test.ts (63 tests) 16ms
 ✓ src/providers/__tests__/presets/custom-provider.test.ts (11 tests) 7ms
 ✓ src/providers/__tests__/presets/alibaba-token-plan.test.ts (2 tests) 4ms
 ✓ src/tools/computer-use/registration.test.ts (2 tests) 5ms
 ✓ src/providers/__tests__/presets/zai.test.ts (3 tests) 4ms
 ✓ src/services/gitWorktreeService.hooks.integ.test.ts (3 tests) 674ms
 ✓ src/providers/__tests__/presets/alibaba-coding-plan.test.ts (2 tests) 4ms
 ✓ src/agents/backends/tmux-commands.test.ts (8 tests) 3ms
 ✓ src/providers/__tests__/presets/minimax.test.ts (3 tests) 4ms
 ✓ src/telemetry/telemetry.test.ts (2 tests) 20ms
 ✓ src/services/worktreeCleanup.test.ts (3 tests) 2ms

 Test Files  450 passed | 1 skipped (451)
      Tests  13506 passed | 8 skipped (13514)
   Start at  12:22:06
   Duration  48.03s (transform 61.97s, setup 5.99s, collect 555.29s, tests 153.08s, environment 100ms, prepare 43.91s)

JUNIT report written to /startdir/src/qwen-code/packages/core/junit.xml
 % Coverage report from v8
npm notice run @qwen-code/sdk@0.1.8 test

 RUN  v1.6.1 /startdir/src/qwen-code/packages/sdk-typescript

 ✓ test/unit/daemonEvents.test.ts  (91 tests) 15ms
 ✓ test/unit/daemonUi.test.ts  (248 tests) 64ms
stderr | test/unit/daemonUi.test.ts > daemon UI reducer state machine (PR-E) > enters resync-required state and skips later non-terminal deltas
[daemon-ui] dropping event `assistant.text.delta` while awaitingResync; state may be stale until session reconnect (lastResyncRequired: {"reason":"ring_evicted","lastDeliveredId":1,"earliestAvailableId":4})

stderr | test/unit/daemonUi.test.ts > R6 review batch — recovery flow + pending pointer > clearAwaitingResync AFTER dispatching events: events ARE dropped (documents the flow)
[daemon-ui] dropping event `assistant.text.delta` while awaitingResync; state may be stale until session reconnect (lastResyncRequired: {"reason":"sse_eviction","lastDeliveredId":5,"earliestAvailableId":12})

2026-07-31 12:22:58 [ERROR] [ProcessTransport] Failed to initialize CLI process: Transport start aborted
2026-07-31 12:22:58 [ERROR] [ProcessTransport] Failed to initialize CLI process: Transport start aborted
2026-07-31 12:22:58 [ERROR] [ProcessTransport] CLI process error: Spawn failed
2026-07-31 12:22:58 [ERROR] [ProcessTransport] CLI process exited with code 1
2026-07-31 12:22:58 [ERROR] [ProcessTransport] CLI process terminated by signal SIGTERM
2026-07-31 12:22:58 [ERROR] [ProcessTransport] CLI process error: Process error
2026-07-31 12:22:58 [DEBUG] [ProcessTransport] Spawning CLI (native): qwen --input-format stream-json --output-format stream-json --channel=SDK
2026-07-31 12:22:58 [ERROR] [ProcessTransport] CLI process exited with code 1
2026-07-31 12:22:58 [ERROR] [ProcessTransport] CLI process error: Process error
2026-07-31 12:22:58 [ERROR] [ProcessTransport] CLI process exited with code 1
2026-07-31 12:22:58 [ERROR] [ProcessTransport] CLI process terminated by signal SIGKILL
2026-07-31 12:22:58 [INFO]  [ProcessTransport] CLI process started successfully
2026-07-31 12:22:58 [DEBUG] [ProcessTransport] Forking CLI (node): /path/to/cli.js --input-format stream-json --output-format stream-json --channel=SDK
2026-07-31 12:22:58 [INFO]  [ProcessTransport] CLI process started successfully
 ✓ test/unit/ProcessTransport.test.ts  (71 tests) 56ms
 ✓ test/unit/acpRouteTable.test.ts  (76 tests) 11ms
 ✓ test/unit/DaemonSessionClient.test.ts  (37 tests) 339ms
 ✓ test/unit/AcpHttpTransport.test.ts  (21 tests) 10ms
2026-07-31 12:22:58 [ERROR] [Query] Control response error for request 2c1e47d0-1275-410e-84f0-27dd823fd77a: Test error
2026-07-31 12:22:58 [ERROR] [Query] Initialization error: Test error
[serve-bridge] Tool error: Error: something broke
    at /startdir/src/qwen-code/packages/sdk-typescript/test/unit/serve-bridge.test.ts:151:44
    at file:///startdir/src/qwen-code/packages/sdk-typescript/node_modules/@vitest/runner/dist/index.js:135:14
    at file:///startdir/src/qwen-code/packages/sdk-typescript/node_modules/@vitest/runner/dist/index.js:60:26
    at runTest (file:///startdir/src/qwen-code/packages/sdk-typescript/node_modules/@vitest/runner/dist/index.js:781:17)
    at runSuite (file:///startdir/src/qwen-code/packages/sdk-typescript/node_modules/@vitest/runner/dist/index.js:909:15)
    at runSuite (file:///startdir/src/qwen-code/packages/sdk-typescript/node_modules/@vitest/runner/dist/index.js:909:15)
    at runSuite (file:///startdir/src/qwen-code/packages/sdk-typescript/node_modules/@vitest/runner/dist/index.js:909:15)
    at runFiles (file:///startdir/src/qwen-code/packages/sdk-typescript/node_modules/@vitest/runner/dist/index.js:958:5)
    at startTests (file:///startdir/src/qwen-code/packages/sdk-typescript/node_modules/@vitest/runner/dist/index.js:967:3)
    at file:///startdir/src/qwen-code/packages/sdk-typescript/node_modules/vitest/dist/chunks/runtime-runBaseTests.oAvMKtQC.js:116:7
[serve-bridge] Tool error: string error
[serve-bridge] SSE stream ended unexpectedly for session new-session-id: GET /session/:id/events: HTTP 404
[serve-bridge] Tool error: Error: No SSE stream for session. Was the session created via session_create?
    at /startdir/src/qwen-code/packages/sdk-typescript/src/daemon-mcp/serve-bridge/tools/agent.ts:33:17
    at Object.handler (/startdir/src/qwen-code/packages/sdk-typescript/src/daemon-mcp/serve-bridge/helpers.ts:45:20)
    at /startdir/src/qwen-code/packages/sdk-typescript/test/unit/serve-bridge.test.ts:397:39
    at runTest (file:///startdir/src/qwen-code/packages/sdk-typescript/node_modules/@vitest/runner/dist/index.js:781:11)
    at runSuite (file:///startdir/src/qwen-code/packages/sdk-typescript/node_modules/@vitest/runner/dist/index.js:909:15)
    at runSuite (file:///startdir/src/qwen-code/packages/sdk-typescript/node_modules/@vitest/runner/dist/index.js:909:15)
    at runSuite (file:///startdir/src/qwen-code/packages/sdk-typescript/node_modules/@vitest/runner/dist/index.js:909:15)
    at runFiles (file:///startdir/src/qwen-code/packages/sdk-typescript/node_modules/@vitest/runner/dist/index.js:958:5)
    at startTests (file:///startdir/src/qwen-code/packages/sdk-typescript/node_modules/@vitest/runner/dist/index.js:967:3)
    at file:///startdir/src/qwen-code/packages/sdk-typescript/node_modules/vitest/dist/chunks/runtime-runBaseTests.oAvMKtQC.js:116:7
[serve-bridge] Tool error: Error: Another prompt is already in progress for this session. Wait for it to complete or call prompt_cancel first.
    at /startdir/src/qwen-code/packages/sdk-typescript/src/daemon-mcp/serve-bridge/tools/agent.ts:40:17
    at Object.handler (/startdir/src/qwen-code/packages/sdk-typescript/src/daemon-mcp/serve-bridge/helpers.ts:45:20)
    at /startdir/src/qwen-code/packages/sdk-typescript/test/unit/serve-bridge.test.ts:427:39
    at runTest (file:///startdir/src/qwen-code/packages/sdk-typescript/node_modules/@vitest/runner/dist/index.js:781:11)
    at runSuite (file:///startdir/src/qwen-code/packages/sdk-typescript/node_modules/@vitest/runner/dist/index.js:909:15)
    at runSuite (file:///startdir/src/qwen-code/packages/sdk-typescript/node_modules/@vitest/runner/dist/index.js:909:15)
    at runSuite (file:///startdir/src/qwen-code/packages/sdk-typescript/node_modules/@vitest/runner/dist/index.js:909:15)
    at runFiles (file:///startdir/src/qwen-code/packages/sdk-typescript/node_modules/@vitest/runner/dist/index.js:958:5)
    at startTests (file:///startdir/src/qwen-code/packages/sdk-typescript/node_modules/@vitest/runner/dist/index.js:967:3)
    at file:///startdir/src/qwen-code/packages/sdk-typescript/node_modules/vitest/dist/chunks/runtime-runBaseTests.oAvMKtQC.js:116:7
 ✓ test/unit/serve-bridge.test.ts  (30 tests) 26ms
 ✓ test/unit/RestSseTransport.test.ts  (28 tests) 63ms
 ✓ test/unit/cliPath.test.ts  (33 tests) 9ms
 ✓ test/unit/daemon-sse.test.ts  (18 tests) 6ms
 ✓ test/unit/daemon-public-surface.test.ts  (13 tests) 3ms
 ✓ test/unit/AutoReconnectTransport.test.ts  (18 tests) 18ms
 ✓ test/unit/createSdkMcpServer.test.ts  (18 tests) 9ms
 ✓ test/unit/negotiateTransport.test.ts  (15 tests) 30ms
 ✓ test/unit/AcpWsTransport.test.ts  (31 tests) 7ms
 ✓ test/unit/Stream.test.ts  (22 tests) 6ms
 ✓ test/unit/DaemonClient.test.ts  (190 tests) 1823ms
 ✓ test/unit/AcpEventDenormalizer.test.ts  (18 tests) 3ms
 ✓ test/unit/createQuery.test.ts  (3 tests) 12ms
 ✓ test/unit/DaemonClientVoice.test.ts  (5 tests) 26ms
2026-07-31 12:23:10 [ERROR] [Query] Initialization error: Query is closed
 ✓ test/unit/DaemonAuthFlow.test.ts  (14 tests) 13067ms
 ✓ test/unit/approval-mode-drift.test.ts  (1 test) 1ms
 ✓ test/daemon-ui-transcript.test.ts  (1 test) 2ms
2026-07-31 12:23:21 [ERROR] [Query] Control response error for request f7977b6d-5e82-4b4a-8dfe-ace34c275f2b: Malformed error
 ✓ test/unit/Query.test.ts  (55 tests) 23712ms

 Test Files  24 passed (24)
      Tests  1057 passed (1057)
   Start at  12:22:57
   Duration  24.45s (transform 2.14s, setup 2ms, collect 3.95s, tests 39.32s, environment 2ms, prepare 792ms)

npm notice run qwen-code-vscode-ide-companion@0.19.3 test

 RUN  v3.2.4 /startdir/src/qwen-code/packages/vscode-ide-companion

stderr | src/services/conversationStore.test.ts > ConversationStore > replaceMessages returns false when the conversation is missing
[ConversationStore] replaceMessages: conversation not found: missing

stderr | src/services/conversationStore.test.ts > ConversationStore > renameConversationId returns false when the target id already exists
[ConversationStore] renameConversationId: target conversation already exists: session-1

stderr | src/services/conversationStore.test.ts > ConversationStore > truncateFromUserTurn returns false when the target turn is missing
[ConversationStore] truncateFromUserTurn: target turn not found: 4

 ✓ src/services/conversationStore.test.ts (8 tests) 7ms
stdout | src/services/qwenSessionUpdateHandler.test.ts > QwenSessionUpdateHandler > current_mode_update handling > calls onModeChanged callback with mode id
[SessionUpdateHandler] Processing update type: current_mode_update

stdout | src/services/qwenSessionUpdateHandler.test.ts > QwenSessionUpdateHandler > agent_message_chunk handling > calls onStreamChunk callback with text content
[SessionUpdateHandler] Processing update type: agent_message_chunk

stdout | src/services/qwenSessionUpdateHandler.test.ts > QwenSessionUpdateHandler > agent_message_chunk handling > routes background notification chunks as discrete assistant messages
[SessionUpdateHandler] Processing update type: agent_message_chunk

stdout | src/services/qwenSessionUpdateHandler.test.ts > QwenSessionUpdateHandler > agent_message_chunk handling > forwards the originating sessionId on discrete messages so the receiver can attribute notifications to the owning conversation
[SessionUpdateHandler] Processing update type: agent_message_chunk

stdout | src/services/qwenSessionUpdateHandler.test.ts > QwenSessionUpdateHandler > agent_message_chunk handling > omits sessionId on the emitted message when the notification has no sessionId
[SessionUpdateHandler] Processing update type: agent_message_chunk

stdout | src/services/qwenSessionUpdateHandler.test.ts > QwenSessionUpdateHandler > agent_message_chunk handling > emits usage metadata when present
[SessionUpdateHandler] Processing update type: agent_message_chunk

stdout | src/services/qwenSessionUpdateHandler.test.ts > QwenSessionUpdateHandler > agent_message_chunk handling > maps SDK usage field names to both SDK and legacy fields
[SessionUpdateHandler] Processing update type: agent_message_chunk

stdout | src/services/qwenSessionUpdateHandler.test.ts > QwenSessionUpdateHandler > tool_call handling > calls onToolCall callback with tool call data
[SessionUpdateHandler] Processing update type: tool_call

stdout | src/services/qwenSessionUpdateHandler.test.ts > QwenSessionUpdateHandler > tool_call handling > forwards rawOutput for structured agent execution updates
[SessionUpdateHandler] Processing update type: tool_call_update

stdout | src/services/qwenSessionUpdateHandler.test.ts > QwenSessionUpdateHandler > plan handling > calls onPlan callback with plan entries
[SessionUpdateHandler] Processing update type: plan

stdout | src/services/qwenSessionUpdateHandler.test.ts > QwenSessionUpdateHandler > plan handling > falls back to stream chunk when onPlan is not set
[SessionUpdateHandler] Processing update type: plan

stdout | src/services/qwenSessionUpdateHandler.test.ts > QwenSessionUpdateHandler > available_commands_update handling > calls onAvailableCommands callback with commands
[SessionUpdateHandler] Processing update type: available_commands_update

stdout | src/services/qwenSessionUpdateHandler.test.ts > QwenSessionUpdateHandler > available_commands_update handling > handles commands with input hint
[SessionUpdateHandler] Processing update type: available_commands_update

stdout | src/services/qwenSessionUpdateHandler.test.ts > QwenSessionUpdateHandler > available_commands_update handling > does not call callback when onAvailableCommands is not set
[SessionUpdateHandler] Processing update type: available_commands_update

stdout | src/services/qwenSessionUpdateHandler.test.ts > QwenSessionUpdateHandler > available_commands_update handling > handles empty commands list
[SessionUpdateHandler] Processing update type: available_commands_update

stdout | src/services/qwenSessionUpdateHandler.test.ts > QwenSessionUpdateHandler > available skills handling > reads available skills from available_commands_update metadata
[SessionUpdateHandler] Processing update type: available_commands_update

stdout | src/services/qwenSessionUpdateHandler.test.ts > QwenSessionUpdateHandler > available skills handling > clears available skills when metadata is absent
[SessionUpdateHandler] Processing update type: available_commands_update

stdout | src/services/qwenSessionUpdateHandler.test.ts > QwenSessionUpdateHandler > updateCallbacks > updates mode callback and uses new one
[SessionUpdateHandler] Processing update type: current_mode_update

stdout | src/services/qwenSessionUpdateHandler.test.ts > QwenSessionUpdateHandler > updateCallbacks > updates onAvailableCommands callback
[SessionUpdateHandler] Processing update type: available_commands_update

 ✓ src/services/qwenSessionUpdateHandler.test.ts (19 tests) 13ms
 ✓ src/utils/editorGroupUtils.test.ts (12 tests) 3ms
stdout | src/services/acpFileHandler.test.ts > AcpFileHandler > handleReadTextFile > returns full content when no line/limit specified
[ACP] fs/read_text_file request received for: /test/file.txt
[ACP] Parameters: { line: null, limit: null, sessionId: 'sid' }

stdout | src/services/acpFileHandler.test.ts > AcpFileHandler > handleReadTextFile > returns full content when no line/limit specified
[ACP] Successfully read file: /test/file.txt (18 chars)
[ACP] Returning full file content

stdout | src/services/acpFileHandler.test.ts > AcpFileHandler > handleReadTextFile > uses 1-based line indexing (ACP spec)
[ACP] fs/read_text_file request received for: /test/file.txt
[ACP] Parameters: { line: 2, limit: 2, sessionId: 'sid' }

stdout | src/services/acpFileHandler.test.ts > AcpFileHandler > handleReadTextFile > uses 1-based line indexing (ACP spec)
[ACP] Successfully read file: /test/file.txt (29 chars)
[ACP] Returning 2 lines

stdout | src/services/acpFileHandler.test.ts > AcpFileHandler > handleReadTextFile > treats line=1 as first line
[ACP] fs/read_text_file request received for: /test/file.txt
[ACP] Parameters: { line: 1, limit: 1, sessionId: 'sid' }

stdout | src/services/acpFileHandler.test.ts > AcpFileHandler > handleReadTextFile > treats line=1 as first line
[ACP] Successfully read file: /test/file.txt (18 chars)
[ACP] Returning 1 lines

stdout | src/services/acpFileHandler.test.ts > AcpFileHandler > handleReadTextFile > defaults to line=1 when line is null but limit is set
[ACP] fs/read_text_file request received for: /test/file.txt
[ACP] Parameters: { line: null, limit: 2, sessionId: 'sid' }

stdout | src/services/acpFileHandler.test.ts > AcpFileHandler > handleReadTextFile > defaults to line=1 when line is null but limit is set
[ACP] Successfully read file: /test/file.txt (7 chars)
[ACP] Returning 2 lines

stdout | src/services/acpFileHandler.test.ts > AcpFileHandler > handleReadTextFile > clamps negative line values to 0
[ACP] fs/read_text_file request received for: /test/file.txt
[ACP] Parameters: { line: -5, limit: null, sessionId: 'sid' }

stdout | src/services/acpFileHandler.test.ts > AcpFileHandler > handleReadTextFile > clamps negative line values to 0
[ACP] Successfully read file: /test/file.txt (5 chars)
[ACP] Returning 3 lines

stdout | src/services/acpFileHandler.test.ts > AcpFileHandler > handleReadTextFile > propagates ENOENT errors
[ACP] fs/read_text_file request received for: /missing/file.txt
[ACP] Parameters: { line: null, limit: null, sessionId: 'sid' }

stderr | src/services/acpFileHandler.test.ts > AcpFileHandler > handleReadTextFile > propagates ENOENT errors
[ACP] Failed to read file /missing/file.txt: ENOENT

stdout | src/services/acpFileHandler.test.ts > AcpFileHandler > handleReadTextFile > normalises VS Code FileNotFound to ENOENT
[ACP] fs/read_text_file request received for: /missing/file.txt
[ACP] Parameters: { line: null, limit: null, sessionId: 'sid' }

stderr | src/services/acpFileHandler.test.ts > AcpFileHandler > handleReadTextFile > normalises VS Code FileNotFound to ENOENT
[ACP] Failed to read file /missing/file.txt: file not found

stdout | src/services/acpFileHandler.test.ts > AcpFileHandler > handleWriteTextFile > creates directory and uses WorkspaceEdit for existing file
[ACP] fs/write_text_file request received for: /test/dir/file.txt
[ACP] Content size: 5 bytes
[ACP] Ensuring directory exists: /test/dir

stdout | src/services/acpFileHandler.test.ts > AcpFileHandler > handleWriteTextFile > creates directory and uses WorkspaceEdit for existing file
[ACP] Successfully wrote file: /test/dir/file.txt

stdout | src/services/acpFileHandler.test.ts > AcpFileHandler > handleWriteTextFile > writes bytes directly for new (non-existing) file
[ACP] fs/write_text_file request received for: /test/dir/newfile.txt
[ACP] Content size: 5 bytes
[ACP] Ensuring directory exists: /test/dir

stdout | src/services/acpFileHandler.test.ts > AcpFileHandler > handleWriteTextFile > writes bytes directly for new (non-existing) file
[ACP] Successfully wrote file: /test/dir/newfile.txt

 ✓ src/services/acpFileHandler.test.ts (9 tests) 11ms
 ✓ src/utils/paths.test.ts (18 tests) 10ms
 ✓ src/commands/index.test.ts (5 tests) 7ms
 ✓ src/webview/hooks/useWebViewMessages.test.ts (5 tests) 7ms
 ✓ src/services/acpConnection.test.ts (17 tests) 9ms
 ✓ src/open-files-manager.test.ts (17 tests) 25ms
stdout | src/services/daemonIdeConnection.test.ts > DaemonIdeConnection > proceeds with a second connect after the first one fails
[DaemonIdeConnection] Previous connect failed: { error: 'first connect failed' }

stdout | src/services/daemonIdeConnection.test.ts > DaemonIdeConnection > sends prompts through the bound daemon session
[DaemonIdeConnection] Sending prompt: { sessionId: 'session-1' }

stdout | src/services/daemonIdeConnection.test.ts > DaemonIdeConnection > sends prompts through the bound daemon session
[DaemonIdeConnection] Prompt completed: { sessionId: 'session-1', stopReason: 'end_turn' }

stdout | src/services/daemonIdeConnection.test.ts > DaemonIdeConnection > sends prompts through the bound daemon session
[DaemonIdeConnection] Sending prompt: { sessionId: 'session-1' }

stdout | src/services/daemonIdeConnection.test.ts > DaemonIdeConnection > sends prompts through the bound daemon session
[DaemonIdeConnection] Prompt completed: { sessionId: 'session-1', stopReason: 'end_turn' }

stdout | src/services/daemonIdeConnection.test.ts > DaemonIdeConnection > sends prompts through the bound daemon session
[DaemonIdeConnection] Sending prompt: { sessionId: 'session-1' }

stderr | src/services/daemonIdeConnection.test.ts > DaemonIdeConnection > sends prompts through the bound daemon session
[DaemonIdeConnection] Prompt failed: { sessionId: 'session-1', error: 'prompt failed' }

stderr | src/services/daemonIdeConnection.test.ts > DaemonIdeConnection > cancels permission requests by default and for reject options
[DaemonIdeConnection] Permission option not advertised; cancelling { requestId: 'request-3', optionId: 'stale-option' }

 ✓ src/webview/utils/utils.test.ts (15 tests) 6ms
 ✓ src/services/sessionExportService.test.ts (9 tests) 20ms
stderr | src/services/daemonIdeConnection.test.ts > DaemonIdeConnection > forwards ask-user-question answers and cancels invalid selections
[DaemonIdeConnection] AskUserQuestion option not advertised; cancelling { requestId: 'ask-3', optionId: 'stale-option' }

stderr | src/services/daemonIdeConnection.test.ts > DaemonIdeConnection > ignores malformed permission events
[DaemonIdeConnection] Malformed permission request data

stdout | src/services/daemonIdeConnection.test.ts > DaemonIdeConnection > surfaces session_died as a disconnect
[DaemonIdeConnection] Session died: { sessionId: 'session-1', reason: 'agent exited' }
[DaemonIdeConnection] Clearing session: { sessionId: 'session-1', reason: 'agent exited' }

stderr | src/services/daemonIdeConnection.test.ts > DaemonIdeConnection > ignores stale session_died events from another session
[DaemonIdeConnection] Malformed session_died event

 ✓ src/webview/providers/WebViewContent.test.ts (5 tests) 5ms
stdout | src/services/daemonIdeConnection.test.ts > DaemonIdeConnection > surfaces event stream failures and normal stream completion
[DaemonIdeConnection] Event stream session: { sessionId: 'session-1' }
[DaemonIdeConnection] Clearing session: { sessionId: 'session-1', reason: 'daemon_error' }

stdout | src/services/daemonIdeConnection.test.ts > DaemonIdeConnection > surfaces event stream failures and normal stream completion
[DaemonIdeConnection] Clearing session: { sessionId: 'session-1', reason: 'stream_ended' }

 ✓ src/webview/utils/slashCommandUtils.test.ts (6 tests) 5ms
 ✓ src/services/daemonIdeConnection.test.ts (19 tests) 95ms
 ✓ src/webview/utils/contextUsage.test.ts (4 tests) 7ms
 ✓ src/webview/providers/ChatWebviewViewProvider.test.ts (2 tests) 5ms
 ✓ src/webview/utils/completionUtils.test.ts (4 tests) 4ms
 ✓ src/webview/providers/ChatProviderRegistry.test.ts (2 tests) 4ms
 ✓ src/package.test.ts (2 tests) 3ms
 ✓ src/webview/providers/chatViewRegistration.test.ts (1 test) 7ms
 ✓ src/services/subscriptionPlanDefinitions.test.ts (1 test) 3ms
 ✓ src/utils/errorMessage.test.ts (2 tests) 2ms
 ✓ src/utils/imageSupport.bundle.test.ts (2 tests) 94ms
 ✓ src/utils/file-path.test.ts (4 tests) 6ms
 ✓ src/webview/hooks/useImage.test.ts (2 tests) 31ms
stdout | src/webview/hooks/useWebViewMessages.test.tsx > useWebViewMessages > ignores background streamEnd while a tagged request is active
[useWebViewMessages] Ignoring stale/untagged streamEnd: null active: req-1 source: background_notification

stderr | src/webview/hooks/useWebViewMessages.test.tsx > useWebViewMessages > ignores conversation rewind events when the target turn is missing
[useWebViewMessages] conversationRewound target turn not found: 99

 ✓ src/webview/hooks/useWebViewMessages.test.tsx (12 tests) 44ms
 ✓ src/webview/hooks/message/useMessageHandling.test.tsx (3 tests) 21ms
 ✓ src/webview/components/layout/ModelSelector.test.tsx (9 tests) 74ms
 ✓ src/webview/components/layout/Onboarding.test.tsx (1 test) 32ms
 ✓ src/webview/components/layout/ProviderSetupForm.test.tsx (1 test) 35ms
 ✓ src/webview/hooks/useToolCalls.test.tsx (2 tests) 25ms
 ✓ src/webview/hooks/useMessageSubmit.test.ts (19 tests) 19ms
 ✓ src/webview/App.test.tsx (10 tests) 102ms
 ✓ src/webview/components/messages/toolcalls/index.test.tsx (3 tests) 25ms
 ✓ src/webview/components/layout/InputForm.test.tsx (2 tests) 65ms
 ✓ src/utils/imageSupport.test.ts (1 test) 2ms
stderr | src/webview/utils/imageHandler.test.ts > imageHandler > returns null when file write throws
[ImageHandler] Failed to save image: Error: disk full
    at /startdir/src/qwen-code/packages/vscode-ide-companion/src/webview/utils/imageHandler.test.ts:110:41
    at file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:155:11
    at file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:752:26
    at file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1897:20
    at new Promise (<anonymous>)
    at runWithTimeout (file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1863:10)
    at runTest (file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1574:12)
    at processTicksAndRejections (node:internal/process/task_queues:104:5)
    at runSuite (file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1729:8)
    at runSuite (file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1729:8)

stdout | src/webview/handlers/FileMessageHandler.test.ts > FileMessageHandler > searches files using fuzzy search when query is provided
[FileMessageHandler] handleGetWorkspaceFiles start { query: 'txt', requestId: 7 }
[FileMessageHandler] Searching workspace files with fuzzy search for query txt

stdout | src/webview/handlers/FileMessageHandler.test.ts > FileMessageHandler > searches files using fuzzy search when query is provided
[FileMessageHandler] Sent final workspaceFiles 2

 ✓ src/utils/acpModelInfo.test.ts (15 tests) 6ms
stdout | src/webview/handlers/FileMessageHandler.test.ts > FileMessageHandler > filters ignored paths in non-query mode
[FileMessageHandler] handleGetWorkspaceFiles start { query: undefined, requestId: 7 }
[FileMessageHandler] Sent initial workspaceFiles (open tabs/active) 0

stdout | src/webview/handlers/FileMessageHandler.test.ts > FileMessageHandler > filters ignored paths in non-query mode
[FileMessageHandler] Sent final workspaceFiles 1

stdout | src/webview/handlers/FileMessageHandler.test.ts > FileMessageHandler > openFile resolves relative paths against the workspace
[FileOperations] Opening file: src/app.ts

stdout | src/webview/handlers/FileMessageHandler.test.ts > FileMessageHandler > openFile resolves relative paths against the workspace
[FileOperations] File opened successfully: /workspace/src/app.ts

stdout | src/webview/handlers/FileMessageHandler.test.ts > FileMessageHandler > openFile keeps UNC paths absolute
[FileOperations] Opening file: \\server\share\app.ts

stdout | src/webview/handlers/FileMessageHandler.test.ts > FileMessageHandler > openFile keeps UNC paths absolute
[FileOperations] File opened successfully: \\server\share\app.ts

stdout | src/webview/handlers/FileMessageHandler.test.ts > FileMessageHandler > openFile clamps zero line and column values to the file start
[FileOperations] Opening file: src/app.ts:0:0

stdout | src/webview/handlers/FileMessageHandler.test.ts > FileMessageHandler > openFile clamps zero line and column values to the file start
[FileOperations] File opened successfully: /workspace/src/app.ts

 ✓ src/webview/handlers/AuthMessageHandler.test.ts (10 tests) 10ms
 ✓ src/webview/utils/imageHandler.test.ts (12 tests) 10ms
stdout | src/webview/handlers/FileMessageHandler.test.ts > FileMessageHandler > createAndOpenTempFile viewColumn selection > opens in left group when chat webview has a left neighbor
[FileMessageHandler] Created and opened readonly file: [object Object] in viewColumn: 1

stdout | src/webview/handlers/FileMessageHandler.test.ts > FileMessageHandler > createAndOpenTempFile viewColumn selection > opens in right group when no left neighbor but right exists
[FileMessageHandler] Created and opened readonly file: [object Object] in viewColumn: 2

stdout | src/webview/handlers/FileMessageHandler.test.ts > FileMessageHandler > createAndOpenTempFile viewColumn selection > falls back to ViewColumn.Beside when neither left nor right neighbor exists
[FileMessageHandler] Created and opened readonly file: [object Object] in viewColumn: -2

 ✓ src/webview/handlers/FileMessageHandler.test.ts (8 tests) 10ms
 ✓ src/webview/utils/discontinuedModel.test.ts (13 tests) 4ms
stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider.attachToView > configures sidebar views with workspace/temp roots and resolves image paths through the attached webview
[WebViewProvider] Attaching to WebviewView (viewType=qwen-code.chatView.sidebar)
[WebViewProvider] Attempting to restore auth state and connection for view...

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider.attachToView > configures sidebar views with workspace/temp roots and resolves image paths through the attached webview
[WebViewProvider] Attempting connection...

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider.attachToView > reports clipboard copy success back to the requesting webview
[WebViewProvider] Attaching to WebviewView (viewType=qwen-code.chatView.sidebar)
[WebViewProvider] Attempting to restore auth state and connection for view...

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider.attachToView > reports clipboard copy success back to the requesting webview
[WebViewProvider] Attempting connection...

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider.attachToView > reports clipboard copy failures back to the requesting webview
[WebViewProvider] Attaching to WebviewView (viewType=qwen-code.chatView.sidebar)
[WebViewProvider] Attempting to restore auth state and connection for view...

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider.attachToView > reports clipboard copy failures back to the requesting webview
[WebViewProvider] Attempting connection...

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider.attachToView > streams slash-command notifications into the attached webview
[WebViewProvider] Attaching to WebviewView (viewType=qwen-code.chatView.sidebar)
[WebViewProvider] Attempting to restore auth state and connection for view...

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider.attachToView > streams slash-command notifications into the attached webview
[WebViewProvider] Attempting connection...

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider.attachToView > re-sends cached available commands when the webview becomes ready
[WebViewProvider] Attaching to WebviewView (viewType=qwen-code.chatView.sidebar)
[WebViewProvider] Attempting to restore auth state and connection for view...

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider.attachToView > re-sends cached available commands when the webview becomes ready
[WebViewProvider] Attempting connection...

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider.attachToView > does not special-case plain insight slash notifications in the provider
[WebViewProvider] Attaching to WebviewView (viewType=qwen-code.chatView.sidebar)
[WebViewProvider] Attempting to restore auth state and connection for view...

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider.attachToView > does not special-case plain insight slash notifications in the provider
[WebViewProvider] Attempting connection...

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider.attachToView > routes structured insight progress markers into the attached webview
[WebViewProvider] Attaching to WebviewView (viewType=qwen-code.chatView.sidebar)
[WebViewProvider] Attempting to restore auth state and connection for view...

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider.attachToView > routes structured insight progress markers into the attached webview
[WebViewProvider] Attempting connection...

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider.attachToView > routes structured insight progress markers even when command text is normalized differently
[WebViewProvider] Attaching to WebviewView (viewType=qwen-code.chatView.sidebar)
[WebViewProvider] Attempting to restore auth state and connection for view...

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider.attachToView > routes structured insight progress markers even when command text is normalized differently
[WebViewProvider] Attempting connection...

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider.attachToView > clears structured insight progress when the ready marker arrives
[WebViewProvider] Attaching to WebviewView (viewType=qwen-code.chatView.sidebar)
[WebViewProvider] Attempting to restore auth state and connection for view...

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider.attachToView > clears structured insight progress when the ready marker arrives
[WebViewProvider] Attempting connection...

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider.attachToView > opens the insight report in the browser when requested from the webview
[WebViewProvider] Attaching to WebviewView (viewType=qwen-code.chatView.sidebar)
[WebViewProvider] Attempting to restore auth state and connection for view...

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider.attachToView > opens the insight report in the browser when requested from the webview
[WebViewProvider] Attempting connection...

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider.attachToView > routes resolved image paths back to the requesting attached webview even when a panel exists
[WebViewProvider] Attaching to WebviewView (viewType=qwen-code.chatView.sidebar)
[WebViewProvider] Attempting to restore auth state and connection for view...

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider.attachToView > routes resolved image paths back to the requesting attached webview even when a panel exists
[WebViewProvider] Attempting connection...

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider.attachToView > marks rejected switch_mode permission requests as failed without cancelling the session
[WebViewProvider] Attaching to WebviewView (viewType=qwen-code.chatView.sidebar)
[WebViewProvider] Attempting to restore auth state and connection for view...

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider.attachToView > marks rejected switch_mode permission requests as failed without cancelling the session
[WebViewProvider] Attempting connection...

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider.attachToView > replays available skills to the webview after webviewReady
[WebViewProvider] Attaching to WebviewView (viewType=qwen-code.chatView.sidebar)
[WebViewProvider] Attempting to restore auth state and connection for view...

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider.attachToView > replays available skills to the webview after webviewReady
[WebViewProvider] Attempting connection...

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider.attachToView > replays available commands to the webview after webviewReady
[WebViewProvider] Attaching to WebviewView (viewType=qwen-code.chatView.sidebar)
[WebViewProvider] Attempting to restore auth state and connection for view...

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider.attachToView > replays available commands to the webview after webviewReady
[WebViewProvider] Attempting connection...

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider settings sync > does not report success for api-key settings without interactive auth data
[WebViewProvider] Skipping VSCode settings sync for api-key provider; interactive auth owns provider details

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider settings sync > only syncs non-secret VS Code settings from ~/.qwen/settings.json
[WebViewProvider] Syncing ~/.qwen/settings.json → VSCode settings

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider settings sync > reacts to auth-related qwen-code setting changes
[WebViewProvider] Auth-related qwen-code settings changed by user, syncing...

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider settings sync > clears persisted credentials and disconnects when apiKey is emptied
[WebViewProvider] Auth-related qwen-code settings changed by user, syncing...

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider settings sync > clears persisted credentials and disconnects when apiKey is emptied
[WebViewProvider] apiKey cleared — de-authenticating and clearing persisted credentials

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider settings sync > does not de-auth when non-apiKey auth settings change on an api-key provider
[WebViewProvider] Auth-related qwen-code settings changed by user, syncing...

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider initial model inheritance > applies the requested initial model after creating a new session
[WebViewProvider] Initializing with new session (skipping restoration)

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider initial model inheritance > applies the requested initial model after creating a new session
[WebViewProvider] ACP session created successfully

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider initial model inheritance > applies the requested initial model after creating a new session
[WebViewProvider] Initializing empty conversation

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider initial model inheritance > applies the requested initial model after creating a new session
[WebViewProvider] Empty conversation initialized: null

stdout | src/webview/handlers/SessionMessageHandler.test.ts > SessionMessageHandler > does not create conversation state or send an empty prompt when all pasted images fail to materialize
[SessionMessageHandler] handleSendMessage called with: 

stderr | src/webview/handlers/SessionMessageHandler.test.ts > SessionMessageHandler > does not create conversation state or send an empty prompt when all pasted images fail to materialize
[SessionMessageHandler] Failed to attach the pasted image. Nothing was sent. Please paste the image again.

stdout | src/webview/handlers/SessionMessageHandler.test.ts > SessionMessageHandler > sends formatted prompt text so session restore can reconstruct pasted images
[SessionMessageHandler] handleSendMessage called with: 这是什么内容

stdout | src/webview/handlers/SessionMessageHandler.test.ts > SessionMessageHandler > sends formatted prompt text so session restore can reconstruct pasted images
[SessionMessageHandler] No active conversation, creating one...

stdout | src/webview/handlers/SessionMessageHandler.test.ts > SessionMessageHandler > keeps the conversation store aligned with the ACP session id before editing
[SessionMessageHandler] handleSendMessage called with: first prompt

stdout | src/webview/handlers/SessionMessageHandler.test.ts > SessionMessageHandler > keeps the conversation store aligned with the ACP session id before editing
[SessionMessageHandler] No active conversation, creating one...

stdout | src/webview/handlers/SessionMessageHandler.test.ts > SessionMessageHandler > keeps the conversation store aligned with the ACP session id before editing
[SessionMessageHandler] handleSendMessage called with: edited prompt

stdout | src/webview/handlers/SessionMessageHandler.test.ts > SessionMessageHandler > does not switch to a colliding ACP session id when rename fails
[SessionMessageHandler] handleSendMessage called with: first prompt

stdout | src/webview/handlers/SessionMessageHandler.test.ts > SessionMessageHandler > does not switch to a colliding ACP session id when rename fails
[SessionMessageHandler] No active conversation, creating one...

stderr | src/webview/handlers/SessionMessageHandler.test.ts > SessionMessageHandler > does not switch to a colliding ACP session id when rename fails
[SessionMessageHandler] Failed to align conversation store with ACP session id: conversation-1 session-1

stdout | src/webview/handlers/SessionMessageHandler.test.ts > SessionMessageHandler > syncs ACP session id alignment through the owning router setter
[SessionMessageHandler] handleSendMessage called with: first prompt

stdout | src/webview/handlers/SessionMessageHandler.test.ts > SessionMessageHandler > syncs ACP session id alignment through the owning router setter
[SessionMessageHandler] No active conversation, creating one...

stdout | src/webview/handlers/SessionMessageHandler.test.ts > SessionMessageHandler > rewinds the active ACP session before sending an edited message
[SessionMessageHandler] handleSendMessage called with: edited prompt

stdout | src/webview/handlers/SessionMessageHandler.test.ts > SessionMessageHandler > restores the edited conversation snapshot when replacement send fails
[SessionMessageHandler] handleSendMessage called with: edited prompt

stderr | src/webview/handlers/SessionMessageHandler.test.ts > SessionMessageHandler > restores the edited conversation snapshot when replacement send fails
[SessionMessageHandler] Error sending message: Error: send failed
    at /startdir/src/qwen-code/packages/vscode-ide-companion/src/webview/handlers/SessionMessageHandler.test.ts:534:46
    at file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:155:11
    at file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:752:26
    at file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1897:20
    at new Promise (<anonymous>)
    at runWithTimeout (file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1863:10)
    at runTest (file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1574:12)
    at processTicksAndRejections (node:internal/process/task_queues:104:5)
    at runSuite (file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1729:8)
    at runSuite (file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1729:8)

stdout | src/webview/handlers/SessionMessageHandler.test.ts > SessionMessageHandler > continues edits with ACP-only rewind when no local snapshot exists
[SessionMessageHandler] handleSendMessage called with: edited prompt

stderr | src/webview/handlers/SessionMessageHandler.test.ts > SessionMessageHandler > continues edits with ACP-only rewind when no local snapshot exists
[SessionMessageHandler] Local conversation snapshot missing before edit; continuing with ACP rewind only.

stdout | src/webview/handlers/SessionMessageHandler.test.ts > SessionMessageHandler > recovers a missing edit snapshot from persisted session messages
[SessionMessageHandler] handleSendMessage called with: edited prompt

stdout | src/webview/handlers/SessionMessageHandler.test.ts > SessionMessageHandler > restores the edited conversation snapshot when ACP rewind fails
[SessionMessageHandler] handleSendMessage called with: edited prompt

stderr | src/webview/handlers/SessionMessageHandler.test.ts > SessionMessageHandler > restores the edited conversation snapshot when ACP rewind fails
[SessionMessageHandler] Failed to rewind session: Error: rewind failed
    at /startdir/src/qwen-code/packages/vscode-ide-companion/src/webview/handlers/SessionMessageHandler.test.ts:736:48
    at file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:155:11
    at file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:752:26
    at file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1897:20
    at new Promise (<anonymous>)
    at runWithTimeout (file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1863:10)
    at runTest (file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1574:12)
    at processTicksAndRejections (node:internal/process/task_queues:104:5)
    at runSuite (file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1729:8)
    at runSuite (file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1729:8)

stdout | src/webview/handlers/SessionMessageHandler.test.ts > SessionMessageHandler > restores store and ACP history when saving the edited user message fails
[SessionMessageHandler] handleSendMessage called with: edited prompt

stderr | src/webview/handlers/SessionMessageHandler.test.ts > SessionMessageHandler > restores store and ACP history when saving the edited user message fails
[SessionMessageHandler] Failed to save user message: Error: storage failed
    at /startdir/src/qwen-code/packages/vscode-ide-companion/src/webview/handlers/SessionMessageHandler.test.ts:806:45
    at file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:155:11
    at file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:752:26
    at file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1897:20
    at new Promise (<anonymous>)
    at runWithTimeout (file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1863:10)
    at runTest (file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1574:12)
    at processTicksAndRejections (node:internal/process/task_queues:104:5)
    at runSuite (file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1729:8)
    at runSuite (file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1729:8)

stdout | src/webview/handlers/SessionMessageHandler.test.ts > SessionMessageHandler > rejects edit submissions with invalid target turn indexes
[SessionMessageHandler] handleSendMessage called with: edited prompt

stderr | src/webview/handlers/SessionMessageHandler.test.ts > SessionMessageHandler > rejects edit submissions with invalid target turn indexes
[SessionMessageHandler] Invalid message edit target. -1

stdout | src/webview/handlers/SessionMessageHandler.test.ts > SessionMessageHandler > keeps currentConversationId aligned with the archived sessionId when session/load falls back to a new ACP session
[SessionMessageHandler] Switching to session: archived-session

stderr | src/webview/handlers/SessionMessageHandler.test.ts > SessionMessageHandler > keeps currentConversationId aligned with the archived sessionId when session/load falls back to a new ACP session
[SessionMessageHandler] session/load failed, using fallback: Error: session not found on server
    at /startdir/src/qwen-code/packages/vscode-ide-companion/src/webview/handlers/SessionMessageHandler.test.ts:892:28
    at file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:155:11
    at file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:752:26
    at file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1897:20
    at new Promise (<anonymous>)
    at runWithTimeout (file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1863:10)
    at runTest (file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1574:12)
    at processTicksAndRejections (node:internal/process/task_queues:104:5)
    at runSuite (file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1729:8)
    at runSuite (file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1729:8)

stdout | src/webview/handlers/SessionMessageHandler.test.ts > SessionMessageHandler > forces a fresh ACP session when the webview requests a new session
[SessionMessageHandler] Creating new Qwen session...

stdout | src/webview/handlers/SessionMessageHandler.test.ts > SessionMessageHandler > intercepts /export html and uses the VSCode export flow instead of sending a prompt
[SessionMessageHandler] handleSendMessage called with: /export html

stdout | src/webview/handlers/SessionMessageHandler.test.ts > SessionMessageHandler > prefers the active ACP session id over the local conversation id when exporting
[SessionMessageHandler] handleSendMessage called with: /export html

stdout | src/webview/handlers/SessionMessageHandler.test.ts > SessionMessageHandler > reports bare /export as a missing subcommand instead of exporting
[SessionMessageHandler] handleSendMessage called with: /export

stdout | src/webview/handlers/SessionMessageHandler.test.ts > SessionMessageHandler > reports export failures back to the user
[SessionMessageHandler] handleSendMessage called with: /export md

stderr | src/webview/handlers/SessionMessageHandler.test.ts > SessionMessageHandler > reports export failures back to the user
[SessionMessageHandler] Failed to export session: Error: disk full
    at /startdir/src/qwen-code/packages/vscode-ide-companion/src/webview/handlers/SessionMessageHandler.test.ts:1084:47
    at file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:155:11
    at file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:752:26
    at file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1897:20
    at new Promise (<anonymous>)
    at runWithTimeout (file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1863:10)
    at runTest (file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1574:12)
    at processTicksAndRejections (node:internal/process/task_queues:104:5)
    at runSuite (file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1729:8)
    at runSuite (file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1729:8)

stdout | src/webview/handlers/SessionMessageHandler.test.ts > SessionMessageHandler > encodes exported file links before rendering markdown
[SessionMessageHandler] handleSendMessage called with: /export html

stderr | src/webview/handlers/SessionMessageHandler.test.ts > SessionMessageHandler > handleSetModel — discontinued model defensive validation (Issue #3745) > rejects a non-runtime Qwen OAuth model and surfaces an error
[SessionMessageHandler] Rejected discontinued model qwen3-coder-plus(qwen-oauth)

stderr | src/services/settingsWriter.test.ts > settingsWriter > applyProviderInstallPlanToFile > throws on malformed settings file instead of silently overwriting it
[settingsWriter] Failed to parse /tmp/qwen-vscode-settings-X60LQP/.qwen/settings.json; refusing to overwrite a malformed file. SyntaxError: Expected ',' or ']' after array element in JSON at position 17 (line 1 column 18)
    at JSON.parse (<anonymous>)
    at readSettings (/startdir/src/qwen-code/packages/vscode-ide-companion/src/services/settingsWriter.ts:185:17)
    at createFileSettingsAdapter (/startdir/src/qwen-code/packages/vscode-ide-companion/src/services/settingsWriter.ts:436:14)
    at Module.applyProviderInstallPlanToFile (/startdir/src/qwen-code/packages/vscode-ide-companion/src/services/settingsWriter.ts:545:20)
    at /startdir/src/qwen-code/packages/vscode-ide-companion/src/services/settingsWriter.test.ts:283:20
    at file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:155:11
    at file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:752:26
    at file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1897:20
    at new Promise (<anonymous>)
    at runWithTimeout (file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1863:10)

stderr | src/services/settingsWriter.test.ts > settingsWriter > snapshotSettingsForRollback / restoreSettingsSnapshot > snapshot returns null on a malformed file and restore is then a no-op
[settingsWriter] Failed to parse /tmp/qwen-vscode-settings-rMo3aZ/.qwen/settings.json; refusing to overwrite a malformed file. SyntaxError: Expected ',' or ']' after array element in JSON at position 17 (line 1 column 18)
    at JSON.parse (<anonymous>)
    at readSettings (/startdir/src/qwen-code/packages/vscode-ide-companion/src/services/settingsWriter.ts:185:17)
    at Module.snapshotSettingsForRollback (/startdir/src/qwen-code/packages/vscode-ide-companion/src/services/settingsWriter.ts:563:28)
    at /startdir/src/qwen-code/packages/vscode-ide-companion/src/services/settingsWriter.test.ts:440:24
    at file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:155:11
    at file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:752:26
    at file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1897:20
    at new Promise (<anonymous>)
    at runWithTimeout (file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1863:10)
    at runTest (file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:1574:12)
[settingsWriter] snapshotSettingsForRollback failed; credential rollback disabled: Error

stdout | src/webview/providers/WebViewProvider.test.ts > Notification & dot indicator > shows orange dot and notification when a long task completes while panel is not active
[WebViewProvider] Attaching to WebviewView (viewType=qwen-code.chatView.sidebar)
[WebViewProvider] Attempting to restore auth state and connection for view...
[WebViewProvider] Syncing ~/.qwen/settings.json → VSCode settings

stdout | src/webview/providers/WebViewProvider.test.ts > Notification & dot indicator > shows orange dot and notification when a long task completes while panel is not active
[WebViewProvider] Attempting connection...

 ✓ src/webview/handlers/SessionMessageHandler.test.ts (23 tests) 23ms
 ✓ src/services/settingsWriter.test.ts (17 tests) 18ms
stdout | src/webview/providers/WebViewProvider.test.ts > Notification & dot indicator > does not show notification for short tasks (< 20s)
[WebViewProvider] Attaching to WebviewView (viewType=qwen-code.chatView.sidebar)
[WebViewProvider] Attempting to restore auth state and connection for view...
[WebViewProvider] Syncing ~/.qwen/settings.json → VSCode settings

stdout | src/webview/providers/WebViewProvider.test.ts > Notification & dot indicator > does not show notification for short tasks (< 20s)
[WebViewProvider] Attempting connection...

stdout | src/webview/providers/WebViewProvider.test.ts > Notification & dot indicator > does not show notification when user is watching the panel
[WebViewProvider] Attaching to WebviewView (viewType=qwen-code.chatView.sidebar)
[WebViewProvider] Attempting to restore auth state and connection for view...
[WebViewProvider] Syncing ~/.qwen/settings.json → VSCode settings

stdout | src/webview/providers/WebViewProvider.test.ts > Notification & dot indicator > does not show notification when user is watching the panel
[WebViewProvider] Attempting connection...

stdout | src/webview/providers/WebViewProvider.test.ts > Notification & dot indicator > shows blue dot and notification for permission requests when panel is not active
[WebViewProvider] Attaching to WebviewView (viewType=qwen-code.chatView.sidebar)
[WebViewProvider] Attempting to restore auth state and connection for view...
[WebViewProvider] Syncing ~/.qwen/settings.json → VSCode settings

stdout | src/webview/providers/WebViewProvider.test.ts > Notification & dot indicator > shows blue dot and notification for permission requests when panel is not active
[WebViewProvider] Attempting connection...

stdout | src/webview/providers/WebViewProvider.test.ts > Notification & dot indicator > blue dot takes priority over orange dot
[WebViewProvider] Attaching to WebviewView (viewType=qwen-code.chatView.sidebar)
[WebViewProvider] Attempting to restore auth state and connection for view...
[WebViewProvider] Syncing ~/.qwen/settings.json → VSCode settings

stdout | src/webview/providers/WebViewProvider.test.ts > Notification & dot indicator > blue dot takes priority over orange dot
[WebViewProvider] Attempting connection...

stdout | src/webview/providers/WebViewProvider.test.ts > Notification & dot indicator > does not send duplicate idle notifications for multi-turn tasks
[WebViewProvider] Attaching to WebviewView (viewType=qwen-code.chatView.sidebar)
[WebViewProvider] Attempting to restore auth state and connection for view...
[WebViewProvider] Syncing ~/.qwen/settings.json → VSCode settings

stdout | src/webview/providers/WebViewProvider.test.ts > Notification & dot indicator > does not send duplicate idle notifications for multi-turn tasks
[WebViewProvider] Attempting connection...

stdout | src/webview/providers/WebViewProvider.test.ts > Notification & dot indicator > does not show idle notification for background notification turns
[WebViewProvider] Attaching to WebviewView (viewType=qwen-code.chatView.sidebar)
[WebViewProvider] Attempting to restore auth state and connection for view...
[WebViewProvider] Syncing ~/.qwen/settings.json → VSCode settings

stdout | src/webview/providers/WebViewProvider.test.ts > Notification & dot indicator > does not show idle notification for background notification turns
[WebViewProvider] Attempting connection...

stdout | src/webview/providers/WebViewProvider.test.ts > Notification & dot indicator > does not notify when notifications setting is disabled
[WebViewProvider] Attaching to WebviewView (viewType=qwen-code.chatView.sidebar)
[WebViewProvider] Attempting to restore auth state and connection for view...
[WebViewProvider] Syncing ~/.qwen/settings.json → VSCode settings

stdout | src/webview/providers/WebViewProvider.test.ts > Notification & dot indicator > does not notify when notifications setting is disabled
[WebViewProvider] Attempting connection...

stdout | src/webview/providers/WebViewProvider.test.ts > Notification & dot indicator > cancellation resets agentStartTime so the next short task does not trigger phantom notification
[WebViewProvider] Attaching to WebviewView (viewType=qwen-code.chatView.sidebar)
[WebViewProvider] Attempting to restore auth state and connection for view...
[WebViewProvider] Syncing ~/.qwen/settings.json → VSCode settings

stdout | src/webview/providers/WebViewProvider.test.ts > Notification & dot indicator > cancellation resets agentStartTime so the next short task does not trigger phantom notification
[WebViewProvider] Attempting connection...

stdout | src/webview/providers/WebViewProvider.test.ts > Notification & dot indicator > does not show dot when dotIndicator setting is disabled
[WebViewProvider] Attaching to WebviewView (viewType=qwen-code.chatView.sidebar)
[WebViewProvider] Attempting to restore auth state and connection for view...
[WebViewProvider] Syncing ~/.qwen/settings.json → VSCode settings

stdout | src/webview/providers/WebViewProvider.test.ts > Notification & dot indicator > does not show dot when dotIndicator setting is disabled
[WebViewProvider] Attempting connection...

stdout | src/webview/providers/WebViewProvider.test.ts > Notification & dot indicator > notifies when VS Code is focused but panel is not visible
[WebViewProvider] Attaching to WebviewView (viewType=qwen-code.chatView.sidebar)
[WebViewProvider] Attempting to restore auth state and connection for view...
[WebViewProvider] Syncing ~/.qwen/settings.json → VSCode settings

stdout | src/webview/providers/WebViewProvider.test.ts > Notification & dot indicator > notifies when VS Code is focused but panel is not visible
[WebViewProvider] Attempting connection...

stdout | src/webview/providers/WebViewProvider.test.ts > Notification & dot indicator > notifies when VS Code is not focused but panel is visible
[WebViewProvider] Attaching to WebviewView (viewType=qwen-code.chatView.sidebar)
[WebViewProvider] Attempting to restore auth state and connection for view...
[WebViewProvider] Syncing ~/.qwen/settings.json → VSCode settings

stdout | src/webview/providers/WebViewProvider.test.ts > Notification & dot indicator > notifies when VS Code is not focused but panel is visible
[WebViewProvider] Attempting connection...

stdout | src/webview/providers/WebViewProvider.test.ts > Notification & dot indicator > shows blue dot and notification for askUserQuestion when panel is not active
[WebViewProvider] Attaching to WebviewView (viewType=qwen-code.chatView.sidebar)
[WebViewProvider] Attempting to restore auth state and connection for view...
[WebViewProvider] Syncing ~/.qwen/settings.json → VSCode settings

stdout | src/webview/providers/WebViewProvider.test.ts > Notification & dot indicator > shows blue dot and notification for askUserQuestion when panel is not active
[WebViewProvider] Attempting connection...

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider.handleAuthInteractive credential rollback > restores the snapshot when the reconnect leaves authState !== true
[WebViewProvider] authInteractive: provider=deepseek, host=api.deepseek.com

stdout | src/services/qwenAgentManager.test.ts > QwenAgentManager.createNewSession > creates a fresh ACP session when explicitly requested even if one is already active
[QwenAgentManager] Creating new session...

stdout | src/services/qwenAgentManager.test.ts > QwenAgentManager.createNewSession > creates a fresh ACP session when explicitly requested even if one is already active
[QwenAgentManager] newSession returned: {
  "sessionId": "session-2"
}
[QwenAgentManager] New session created with ID: session-2

stdout | src/services/qwenAgentManager.test.ts > QwenAgentManager.createNewSession > creates a distinct fresh session after an in-flight bootstrap when forceNew is requested
[QwenAgentManager] createNewSession: session creation already in flight

stdout | src/services/qwenAgentManager.test.ts > QwenAgentManager.createNewSession > creates a distinct fresh session after an in-flight bootstrap when forceNew is requested
[QwenAgentManager] Creating new session...

stdout | src/services/qwenAgentManager.test.ts > QwenAgentManager.createNewSession > creates a distinct fresh session after an in-flight bootstrap when forceNew is requested
[QwenAgentManager] newSession returned: {
  "sessionId": "session-2"
}
[QwenAgentManager] New session created with ID: session-2

 ✓ src/services/qwenAgentManager.test.ts (9 tests) 11ms
 ✓ src/ide-server.test.ts (13 tests | 1 skipped) 82ms
stderr | src/extension.test.ts > activate > should not show the info message on subsequent activations
[ReadonlyFileSystemProvider] Instance already exists, replacing with new instance

stderr | src/extension.test.ts > activate > should register a handler for onDidGrantWorkspaceTrust
[ReadonlyFileSystemProvider] Instance already exists, replacing with new instance

stderr | src/extension.test.ts > activate > should register the webview view provider for the sidebar position
[ReadonlyFileSystemProvider] Instance already exists, replacing with new instance

stderr | src/extension.test.ts > activate > should launch the Qwen Code when the user clicks the button
[ReadonlyFileSystemProvider] Instance already exists, replacing with new instance

stderr | src/extension.test.ts > activate > update notification > should show an update notification if a newer version is available
[ReadonlyFileSystemProvider] Instance already exists, replacing with new instance

stderr | src/extension.test.ts > activate > update notification > should not show an update notification if the version is the same
[ReadonlyFileSystemProvider] Instance already exists, replacing with new instance

stderr | src/extension.test.ts > activate > update notification > does not show the notification for 'cloudshell'
[ReadonlyFileSystemProvider] Instance already exists, replacing with new instance

stderr | src/extension.test.ts > activate > update notification > does not show the notification for 'firebasestudio'
[ReadonlyFileSystemProvider] Instance already exists, replacing with new instance

stderr | src/extension.test.ts > activate > update notification > should not show an update notification if the version is older
[ReadonlyFileSystemProvider] Instance already exists, replacing with new instance

stderr | src/extension.test.ts > activate > update notification > should execute the install command when the user clicks "Update"
[ReadonlyFileSystemProvider] Instance already exists, replacing with new instance

stderr | src/extension.test.ts > activate > update notification > should handle fetch errors gracefully
[ReadonlyFileSystemProvider] Instance already exists, replacing with new instance

 ✓ src/extension.test.ts (12 tests) 27ms
stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider.handleAuthInteractive credential rollback > disconnects the agent after rolling back rejected credentials
[WebViewProvider] authInteractive: provider=deepseek, host=api.deepseek.com

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider.handleAuthInteractive credential rollback > does NOT restore when the reconnect authenticates (authState === true)
[WebViewProvider] authInteractive: provider=deepseek, host=api.deepseek.com

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider.handleAuthInteractive credential rollback > swallows a rollback write failure so the authError message still sends
[WebViewProvider] authInteractive: provider=deepseek, host=api.deepseek.com

stderr | src/webview/providers/WebViewProvider.test.ts > WebViewProvider.handleAuthInteractive credential rollback > swallows a rollback write failure so the authError message still sends
[WebViewProvider] settings rollback failed: Error: EPERM: rename failed
    at /startdir/src/qwen-code/packages/vscode-ide-companion/src/webview/providers/WebViewProvider.test.ts:1901:13
    at mockCall (file:///startdir/src/qwen-code/node_modules/@vitest/spy/dist/index.js:96:15)
    at spy (file:///startdir/src/qwen-code/node_modules/tinyspy/dist/index.js:47:103)
    at safeRollback (/startdir/src/qwen-code/packages/vscode-ide-companion/src/webview/providers/WebViewProvider.ts:1395:9)
    at WebViewProvider.handleAuthInteractive (/startdir/src/qwen-code/packages/vscode-ide-companion/src/webview/providers/WebViewProvider.ts:1447:9)
    at /startdir/src/qwen-code/packages/vscode-ide-companion/src/webview/providers/WebViewProvider.test.ts:1917:5
    at file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:752:20

stdout | src/webview/providers/WebViewProvider.test.ts > WebViewProvider.handleAuthInteractive credential rollback > rolls back + disconnects + reports authError when doInitializeAgentConnection throws (outer catch)
[WebViewProvider] authInteractive: provider=deepseek, host=api.deepseek.com

stderr | src/webview/providers/WebViewProvider.test.ts > WebViewProvider.handleAuthInteractive credential rollback > rolls back + disconnects + reports authError when doInitializeAgentConnection throws (outer catch)
[WebViewProvider] authInteractive failed: Error: disk exploded mid-reconnect
    at WebViewProvider.<anonymous> (/startdir/src/qwen-code/packages/vscode-ide-companion/src/webview/providers/WebViewProvider.test.ts:1954:13)
    at WebViewProvider.mockCall (file:///startdir/src/qwen-code/node_modules/@vitest/spy/dist/index.js:96:15)
    at WebViewProvider.spy [as doInitializeAgentConnection] (file:///startdir/src/qwen-code/node_modules/tinyspy/dist/index.js:47:103)
    at WebViewProvider.handleAuthInteractive (/startdir/src/qwen-code/packages/vscode-ide-companion/src/webview/providers/WebViewProvider.ts:1432:18)
    at /startdir/src/qwen-code/packages/vscode-ide-companion/src/webview/providers/WebViewProvider.test.ts:1957:5
    at file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:752:20
[WebViewProvider] settings rollback failed: Error: EPERM: rename failed
    at /startdir/src/qwen-code/packages/vscode-ide-companion/src/webview/providers/WebViewProvider.test.ts:1901:13
    at mockCall (file:///startdir/src/qwen-code/node_modules/@vitest/spy/dist/index.js:96:15)
    at spy (file:///startdir/src/qwen-code/node_modules/tinyspy/dist/index.js:47:103)
    at safeRollback (/startdir/src/qwen-code/packages/vscode-ide-companion/src/webview/providers/WebViewProvider.ts:1395:9)
    at WebViewProvider.handleAuthInteractive (/startdir/src/qwen-code/packages/vscode-ide-companion/src/webview/providers/WebViewProvider.ts:1469:7)
    at /startdir/src/qwen-code/packages/vscode-ide-companion/src/webview/providers/WebViewProvider.test.ts:1957:5
    at file:///startdir/src/qwen-code/node_modules/@vitest/runner/dist/chunk-hooks.js:752:20

 ✓ src/webview/providers/WebViewProvider.test.ts (48 tests) 1588ms
   ✓ WebViewProvider.handleAuthInteractive credential rollback > restores the snapshot when the reconnect leaves authState !== true  304ms
   ✓ WebViewProvider.handleAuthInteractive credential rollback > disconnects the agent after rolling back rejected credentials  303ms
   ✓ WebViewProvider.handleAuthInteractive credential rollback > does NOT restore when the reconnect authenticates (authState === true)  303ms
   ✓ WebViewProvider.handleAuthInteractive credential rollback > swallows a rollback write failure so the authError message still sends  309ms
   ✓ WebViewProvider.handleAuthInteractive credential rollback > rolls back + disconnects + reports authError when doInitializeAgentConnection throws (outer catch)  304ms

 Test Files  47 passed (47)
      Tests  432 passed | 1 skipped (433)
   Start at  12:23:22
   Duration  6.94s (transform 7.95s, setup 0ms, collect 66.46s, tests 2.62s, environment 4.02s, prepare 4.96s)

npm notice run @qwen-code/web-shell@0.19.3 test

 RUN  v3.2.4 /startdir/src/qwen-code/packages/web-shell/client

 ✓ adapters/transcriptAdapter.test.ts (6 tests) 4ms
 ✓ midTurnDedup.test.ts (12 tests) 5ms
 ✓ utils/copyCommand.test.ts (11 tests) 8ms
 ✓ components/messages/codeHighlighter.retry.test.ts (4 tests) 5ms
 ✓ utils/modelSwitchMessages.test.ts (3 tests) 3ms
 ✓ utils/localCommandQueue.test.ts (5 tests) 5ms
 ✓ build-artifact.test.ts (5 tests) 25ms
 ✓ adapters/transcriptToMessages.test.ts (97 tests) 34ms
 ✓ components/messages/codeHighlighter.test.ts (6 tests) 142ms
 ✓ components/messages/toolFormatting.test.ts (28 tests) 11ms
 ✓ components/messages/SettingsMessage.test.ts (10 tests) 4ms
 ✓ completions/slashCompletion.test.ts (19 tests) 41ms
 ✓ config/daemon.test.ts (14 tests) 189ms
 ✓ voice/useVoiceCapture.test.tsx (9 tests) 65ms
 ✓ components/Editor.keymap.test.ts (5 tests) 46ms
 ✓ components/ErrorBoundary.test.tsx (6 tests) 39ms
 ✓ components/MessageItem.dom.test.tsx (4 tests) 55ms
 ✓ components/RootErrorFallback.test.tsx (5 tests) 89ms
 ✓ components/StreamingStatus.test.tsx (9 tests) 70ms
stderr | components/messages/EnhancedMarkdownTable.test.tsx > EnhancedMarkdownTable > quick copies the visible sorted table
An update to InteractiveMarkdownTable inside a test was not wrapped in act(...).

When testing, code that causes React state updates should be wrapped into act(...):

act(() => {
  /* fire events that update state */
});
/* assert on the output */

This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act

stderr | components/messages/EnhancedMarkdownTable.test.tsx > EnhancedMarkdownTable > sanitizes spreadsheet formulas when copying TSV
An update to InteractiveMarkdownTable inside a test was not wrapped in act(...).

When testing, code that causes React state updates should be wrapped into act(...):

act(() => {
  /* fire events that update state */
});
/* assert on the output */

This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act
An update to InteractiveMarkdownTable inside a test was not wrapped in act(...).

When testing, code that causes React state updates should be wrapped into act(...):

act(() => {
  /* fire events that update state */
});
/* assert on the output */

This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act

 ✓ components/MessageTimestamp.test.tsx (5 tests) 52ms
stderr | components/messages/EnhancedMarkdownTable.test.tsx > EnhancedMarkdownTable > quick copy skips hidden columns
An update to InteractiveMarkdownTable inside a test was not wrapped in act(...).

When testing, code that causes React state updates should be wrapped into act(...):

act(() => {
  /* fire events that update state */
});
/* assert on the output */

This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act

 ✓ components/messages/PlanMessage.test.tsx (6 tests) 55ms
 ✓ components/messages/TodoView.test.tsx (4 tests) 71ms
 ✓ components/MessageList.dom.test.tsx (8 tests) 104ms
 ✓ components/messages/Markdown.coldHighlight.test.ts (2 tests) 60ms
stderr | components/messages/EnhancedMarkdownTable.test.tsx > EnhancedMarkdownTable > selection copy skips hidden columns between selected cells
An update to InteractiveMarkdownTable inside a test was not wrapped in act(...).

When testing, code that causes React state updates should be wrapped into act(...):

act(() => {
  /* fire events that update state */
});
/* assert on the output */

This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act

 ✓ components/messages/AssistantMessage.test.tsx (5 tests) 58ms
stderr | components/messages/EnhancedMarkdownTable.test.tsx > EnhancedMarkdownTable > stops extending a selection after window blur
An update to InteractiveMarkdownTable inside a test was not wrapped in act(...).

When testing, code that causes React state updates should be wrapped into act(...):

act(() => {
  /* fire events that update state */
});
/* assert on the output */

This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act

 ✓ index.test.tsx (2 tests) 58ms
stderr | components/messages/EnhancedMarkdownTable.test.tsx > EnhancedMarkdownTable > selects cells with touch drag
An update to InteractiveMarkdownTable inside a test was not wrapped in act(...).

When testing, code that causes React state updates should be wrapped into act(...):

act(() => {
  /* fire events that update state */
});
/* assert on the output */

This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act

 ✓ voice/VoiceButton.test.tsx (3 tests) 44ms
 ✓ components/messages/EnhancedMarkdownTable.test.tsx (50 tests) 729ms
 ✓ components/messages/UserMessage.test.tsx (2 tests) 25ms
 ✓ utils/todos.test.ts (64 tests) 16ms
 ✓ components/messages/tools/SubAgentPanel.test.tsx (3 tests) 42ms
 ✓ components/messages/ToolGroup.test.tsx (10 tests) 6ms
 ✓ hooks/useComposerCore.test.ts (10 tests) 3ms
 ✓ components/messages/ToolApproval.test.ts (6 tests) 18ms
 ✓ components/MessageList.test.ts (62 tests) 19ms
 ✓ components/messages/Markdown.test.ts (38 tests) 1807ms
   ✓ Markdown code highlighting while streaming > highlights the block as it streams, and the appended chunk too  614ms
   ✓ Markdown code highlighting while streaming > applies Shiki highlighting once a code block has settled  305ms
   ✓ Markdown code highlighting while streaming > drops stale highlighted HTML when the code is replaced (regeneration)  611ms

 Test Files  36 passed (36)
      Tests  538 passed (538)
   Start at  12:23:29
   Duration  3.78s (transform 11.71s, setup 0ms, collect 26.86s, tests 4.01s, environment 7.04s, prepare 4.01s)

npm notice run @qwen-code/webui@0.19.3 test

 RUN  v3.2.4 /startdir/src/qwen-code/packages/webui

 ✓ src/components/toolcalls/labelUtils.test.ts (8 tests) 7ms
 ✓ src/daemon/session/promptContent.test.ts (2 tests) 3ms
 ✓ src/daemon/session/mappers.test.ts (8 tests) 6ms
 ✓ src/daemon/session/selectors.test.ts (7 tests) 8ms
Browserslist: browsers data (caniuse-lite) is 8 months old. Please run:
  npx update-browserslist-db@latest
  Why you should do it regularly: https://github.com/browserslist/update-db#readme
stderr | src/daemon/workspace/hooks/useDaemonResource.test.tsx > useDaemonResource > loads data on autoLoad
The current testing environment is not configured to support act(...)

 ✓ src/daemon/session/clientLifecycle.test.ts (13 tests) 18ms
stderr | src/daemon/workspace/hooks/useDaemonResource.test.tsx > useDaemonResource > loads data on autoLoad
The current testing environment is not configured to support act(...)

stderr | src/daemon/workspace/hooks/useDaemonResource.test.tsx > useDaemonResource > loads data on autoLoad
The current testing environment is not configured to support act(...)

stderr | src/daemon/workspace/hooks/useDaemonResource.test.tsx > useDaemonResource > loads data on autoLoad
The current testing environment is not configured to support act(...)

stderr | src/daemon/workspace/hooks/useDaemonResource.test.tsx > useDaemonResource > does not load when enabled is false
The current testing environment is not configured to support act(...)

stderr | src/daemon/workspace/hooks/useDaemonResource.test.tsx > useDaemonResource > does not load when enabled is false
The current testing environment is not configured to support act(...)

stderr | src/daemon/workspace/hooks/useDaemonResource.test.tsx > useDaemonResource > reports error on load failure
The current testing environment is not configured to support act(...)

stderr | src/daemon/workspace/hooks/useDaemonResource.test.tsx > useDaemonResource > reports error on load failure
The current testing environment is not configured to support act(...)

stderr | src/daemon/workspace/hooks/useDaemonResource.test.tsx > useDaemonResource > reports error on load failure
The current testing environment is not configured to support act(...)

stderr | src/daemon/workspace/hooks/useDaemonResource.test.tsx > useDaemonResource > reports error on load failure
The current testing environment is not configured to support act(...)

stderr | src/daemon/workspace/hooks/useDaemonResource.test.tsx > useDaemonResource > stale response does not overwrite fresh data
The current testing environment is not configured to support act(...)

stderr | src/daemon/workspace/hooks/useDaemonResource.test.tsx > useDaemonResource > stale response does not overwrite fresh data
The current testing environment is not configured to support act(...)
The current testing environment is not configured to support act(...)

stderr | src/daemon/workspace/hooks/useDaemonResource.test.tsx > useDaemonResource > stale response does not overwrite fresh data
The current testing environment is not configured to support act(...)

stderr | src/daemon/workspace/hooks/useDaemonResource.test.tsx > useDaemonResource > stale response does not overwrite fresh data
The current testing environment is not configured to support act(...)

stderr | src/daemon/workspace/hooks/useDaemonResource.test.tsx > useDaemonResource > stale error does not overwrite fresh data
The current testing environment is not configured to support act(...)

stderr | src/daemon/workspace/hooks/useDaemonResource.test.tsx > useDaemonResource > stale error does not overwrite fresh data
The current testing environment is not configured to support act(...)
The current testing environment is not configured to support act(...)

stderr | src/daemon/workspace/hooks/useDaemonResource.test.tsx > useDaemonResource > stale error does not overwrite fresh data
The current testing environment is not configured to support act(...)

stderr | src/daemon/workspace/hooks/useDaemonResource.test.tsx > useDaemonResource > stale error does not overwrite fresh data
The current testing environment is not configured to support act(...)

 ✓ src/daemon/workspace/hooks/useDaemonResource.test.tsx (5 tests) 24ms
 ✓ src/components/messages/MarkdownRenderer/MarkdownRenderer.test.tsx (2 tests) 49ms
 ✓ src/components/PermissionDrawer.test.tsx (2 tests) 27ms
 ✓ src/components/messages/MessageMeta.test.tsx (4 tests) 62ms
 ✓ src/components/toolcalls/routing.test.ts (11 tests) 2ms
 ✓ src/components/ChatViewer/ChatViewer.test.tsx (2 tests) 7ms
stdout | src/daemon/midTurnInjectedSidechannel.test.ts > mid-turn injected sidechannel pub/sub > caps the buffer, evicting oldest batches past the limit
[mid-turn] sidechannel buffer over 64; evicting 1 oldest batch(es)
[mid-turn] sidechannel buffer over 64; evicting 1 oldest batch(es)
[mid-turn] sidechannel buffer over 64; evicting 1 oldest batch(es)
[mid-turn] sidechannel buffer over 64; evicting 1 oldest batch(es)
[mid-turn] sidechannel buffer over 64; evicting 1 oldest batch(es)
[mid-turn] sidechannel buffer over 64; evicting 1 oldest batch(es)

 ✓ src/daemon/midTurnInjectedSidechannel.test.ts (11 tests) 6ms
 ✓ src/daemon/transcriptAdapter.test.ts (9 tests) 6ms
 ✓ src/daemon/workspace/DaemonWorkspaceProvider.test.tsx (11 tests) 39ms
stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > keeps capabilities handshake failures out of the transcript
[DaemonSessionProvider] retriable SSE error, preserving session for delta resume (sessionId=undefined)

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > uses session context models over workspace provider defaults
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > falls back to provider context window for session context models
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > falls back to provider models when session context only has current model
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does not use provider context window for an unmatched session model
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > adds daemon goal status metadata to the transcript
[DaemonSessionProvider] SSE stream ended

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > adds daemon goal status metadata to the transcript
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > routes mid_turn_message_injected frames to the sidechannel and transcript
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > prevents double submit while a prompt is running
[DaemonSessionProvider] SSE stream ended

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > keeps prompt loading active after non-blocking prompt acceptance
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > keeps prompt loading active after non-blocking prompt acceptance
[DaemonSessionProvider] SSE stream ended

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > settles non-blocking prompts when turn completion arrives before acceptance returns
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > settles non-blocking prompts when turn completion arrives before acceptance returns
[DaemonSessionProvider] SSE stream ended

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > allows the next prompt after a turn completes before acceptance returns
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > allows the next prompt after a turn completes before acceptance returns
[DaemonSessionProvider] SSE stream ended

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > rejects the prompt when turn_error arrives before acceptance returns
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > rejects the prompt when turn_error arrives before acceptance returns
[DaemonSessionProvider] SSE stream ended

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > sends image prompt content through the daemon action
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > sends image prompt content through the daemon action
[DaemonSessionProvider] SSE stream ended

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > passes retry prompts through the daemon action
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > passes retry prompts through the daemon action
[DaemonSessionProvider] SSE stream ended

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > submits permission selections with optional answers
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > exposes pending permission blocks
[DaemonSessionProvider] SSE stream ended

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > exposes pending permission blocks
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > exposes workspace event signals from daemon session events
[DaemonSessionProvider] SSE stream ended

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > exposes workspace event signals from daemon session events
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > treats prompt abort during cancel as cancellation and keeps busy until cancel completes
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > treats prompt abort during cancel as cancellation and keeps busy until cancel completes
[DaemonSessionProvider] SSE stream ended

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > ends assistant streaming when prompt fails with a non-abort error
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does not insert abort errors from shell commands into the transcript
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > keeps cancellation turn errors in the transcript
[DaemonSessionProvider] SSE stream ended

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > keeps cancellation turn errors in the transcript
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > exposes prompt cancellation events as transcript blocks
[DaemonSessionProvider] SSE stream ended

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > exposes prompt cancellation events as transcript blocks
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > keeps forward-failed prompt cancellations out of blocks
[DaemonSessionProvider] SSE stream ended

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > keeps forward-failed prompt cancellations out of blocks
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > exposes catchingUp on resume and clears it on replay_complete
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > never sets catchingUp on a fresh subscription (no Last-Event-ID)
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > clears prompt state and transcript when reconnect attaches a different session
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > clears prompt state and transcript when reconnect attaches a different session
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > reuses the same session client after a normal SSE stream end
[DaemonSessionProvider] SSE stream ended

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > reuses the same session client after a normal SSE stream end
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does not inject replay snapshot again after a normal SSE stream end
[DaemonSessionProvider] SSE stream ended

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does not inject replay snapshot again after a normal SSE stream end
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > injects replay snapshot on initial session load
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > keeps replayed non-turn events from marking a prompt as waiting
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > keeps restored active prompts streaming after replay completes
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > keeps restored active prompts streaming after an SSE stream end
[DaemonSessionProvider] SSE stream ended

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > keeps restored active prompts streaming after an SSE stream end
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > keeps local prompts active when a restored prompt completes
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > keeps local prompts active when a restored prompt completes
[DaemonSessionProvider] SSE stream ended

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > keeps restored active prompts busy after shell commands finish
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > settles restored active prompts when turn_complete arrives
[DaemonSessionProvider] SSE stream ended

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > settles restored active prompts when turn_complete arrives
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > settles restored active prompts when turn_error arrives
[DaemonSessionProvider] SSE stream ended

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > settles restored active prompts when turn_error arrives
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > settles restored active prompts when prompt_cancelled arrives
[DaemonSessionProvider] SSE stream ended

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > settles restored active prompts when prompt_cancelled arrives
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > keeps local prompts active when a restored prompt is cancelled
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > keeps local prompts active when a restored prompt is cancelled
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does not revive settled restored active prompts after SSE reconnect
[DaemonSessionProvider] SSE stream ended

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does not revive settled restored active prompts after SSE reconnect
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > reloads restored active prompts after epoch reset
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > clears restored active prompts when epoch reload is idle
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > keeps restored active prompts streaming after retriable SSE errors
[DaemonSessionProvider] retriable SSE error, preserving session for delta resume (sessionId=session-1)

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > keeps restored active prompts streaming after retriable SSE errors
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > keeps locally submitted prompts active after retriable SSE errors
[DaemonSessionProvider] retriable SSE error, preserving session for delta resume (sessionId=session-1)

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > keeps locally submitted prompts active after retriable SSE errors
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > keeps restored active prompts streaming after resync requests
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does not infer active prompts from replayed user turns without terminal events
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > finishes replayed assistant streaming when replay ends with turn_error
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > finishes each completed turn in replay snapshots
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does not let replay state events overwrite fresh connection status
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > uses providers current model when session context has no model
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > seeds tokenCount from the latest replay usage on attach
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > keeps the in-memory tokenCount across SSE re-subscribe when replay has no usage
[DaemonSessionProvider] SSE stream ended

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > keeps the in-memory tokenCount across SSE re-subscribe when replay has no usage
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > resets tokenCount when reconnect attaches a different session without replay usage
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > bumps workspace event signals from replay snapshot events
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > finishes passive assistant streaming when no prompt action is active
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > finishes replayed assistant streaming when replay completes
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > creates a fresh thread session without cancelling the previous session
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > creates a fresh thread session without cancelling the previous session
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > uses session-scoped client IDs when switching between loaded sessions
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > uses session-scoped client IDs when switching between loaded sessions
An update to DaemonSessionProvider inside a test was not wrapped in act(...).

When testing, code that causes React state updates should be wrapped into act(...):

act(() => {
  /* fire events that update state */
});
/* assert on the output */

This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act
An update to DaemonSessionProvider inside a test was not wrapped in act(...).

When testing, code that causes React state updates should be wrapped into act(...):

act(() => {
  /* fire events that update state */
});
/* assert on the output */

This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act
An update to DaemonSessionProvider inside a test was not wrapped in act(...).

When testing, code that causes React state updates should be wrapped into act(...):

act(() => {
  /* fire events that update state */
});
/* assert on the output */

This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act
An update to DaemonSessionProvider inside a test was not wrapped in act(...).

When testing, code that causes React state updates should be wrapped into act(...):

act(() => {
  /* fire events that update state */
});
/* assert on the output */

This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act
An update to DaemonSessionProvider inside a test was not wrapped in act(...).

When testing, code that causes React state updates should be wrapped into act(...):

act(() => {
  /* fire events that update state */
});
/* assert on the output */

This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > uses session-scoped client IDs when switching between loaded sessions
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > uses session-scoped client IDs when switching between loaded sessions
An update to DaemonSessionProvider inside a test was not wrapped in act(...).

When testing, code that causes React state updates should be wrapped into act(...):

act(() => {
  /* fire events that update state */
});
/* assert on the output */

This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act
An update to DaemonSessionProvider inside a test was not wrapped in act(...).

When testing, code that causes React state updates should be wrapped into act(...):

act(() => {
  /* fire events that update state */
});
/* assert on the output */

This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act
An update to DaemonSessionProvider inside a test was not wrapped in act(...).

When testing, code that causes React state updates should be wrapped into act(...):

act(() => {
  /* fire events that update state */
});
/* assert on the output */

This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act
An update to DaemonSessionProvider inside a test was not wrapped in act(...).

When testing, code that causes React state updates should be wrapped into act(...):

act(() => {
  /* fire events that update state */
});
/* assert on the output */

This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act
An update to DaemonSessionProvider inside a test was not wrapped in act(...).

When testing, code that causes React state updates should be wrapped into act(...):

act(() => {
  /* fire events that update state */
});
/* assert on the output */

This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > uses session-scoped client IDs when switching between loaded sessions
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > reuses the branched session client when switching after branch
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > reuses the branched session client when switching after branch
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > exposes daemon capabilities on the connection state
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > exposes the restored session display name on the connection state
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > updates the connection display name from metadata events
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > recovers internally when the daemon requests a state resync
[DaemonSessionProvider] ring eviction detected, reloading session (sessionId=session-resync)

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > recovers internally when the daemon requests a state resync
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > marks the connection unhealthy after repeated heartbeat failures
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > ignores stale connect attempts after provider props change
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > ignores stale connect attempts after provider props change
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > rejects interrupted session loads as AbortError during cleanup
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4171
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4171
  }
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > rejects interrupted session loads as AbortError during cleanup
[DaemonSessionProvider] retriable SSE error, preserving session for delta resume (sessionId=undefined)

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > rejects interrupted session loads as AbortError during cleanup
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > clears transcript immediately for default session switches
An update to DaemonSessionProvider inside a test was not wrapped in act(...).

When testing, code that causes React state updates should be wrapped into act(...):

act(() => {
  /* fire events that update state */
});
/* assert on the output */

This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act
An update to DaemonSessionProvider inside a test was not wrapped in act(...).

When testing, code that causes React state updates should be wrapped into act(...):

act(() => {
  /* fire events that update state */
});
/* assert on the output */

This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act
An update to DaemonSessionProvider inside a test was not wrapped in act(...).

When testing, code that causes React state updates should be wrapped into act(...):

act(() => {
  /* fire events that update state */
});
/* assert on the output */

This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act
An update to DaemonSessionProvider inside a test was not wrapped in act(...).

When testing, code that causes React state updates should be wrapped into act(...):

act(() => {
  /* fire events that update state */
});
/* assert on the output */

This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act
An update to DaemonSessionProvider inside a test was not wrapped in act(...).

When testing, code that causes React state updates should be wrapped into act(...):

act(() => {
  /* fire events that update state */
});
/* assert on the output */

This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > clears transcript immediately for default session switches
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > keeps transcript until replay for deferred session switches
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > keeps transcript until replay for deferred session switches
An update to DaemonSessionProvider inside a test was not wrapped in act(...).

When testing, code that causes React state updates should be wrapped into act(...):

act(() => {
  /* fire events that update state */
});
/* assert on the output */

This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act
An update to DaemonSessionProvider inside a test was not wrapped in act(...).

When testing, code that causes React state updates should be wrapped into act(...):

act(() => {
  /* fire events that update state */
});
/* assert on the output */

This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act
An update to DaemonSessionProvider inside a test was not wrapped in act(...).

When testing, code that causes React state updates should be wrapped into act(...):

act(() => {
  /* fire events that update state */
});
/* assert on the output */

This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act
An update to DaemonSessionProvider inside a test was not wrapped in act(...).

When testing, code that causes React state updates should be wrapped into act(...):

act(() => {
  /* fire events that update state */
});
/* assert on the output */

This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act
An update to DaemonSessionProvider inside a test was not wrapped in act(...).

When testing, code that causes React state updates should be wrapped into act(...):

act(() => {
  /* fire events that update state */
});
/* assert on the output */

This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > keeps transcript until replay for deferred session switches
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does not reconnect when event processing options change
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > clears the session when reconnect is disabled after SSE stream end
[DaemonSessionProvider] SSE stream ended

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > clears the session when reconnect is disabled after SSE stream end
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > still reconnects on 410 session-not-found errors when autoReconnect is true
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > leaves missing sessions disconnected on 404 when requested
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > times out hung setModel actions
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > times out hung respondToPermission actions
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > reloads stale transcript after epoch-reset resync
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > reloads the session snapshot after ring-evicted resync
[DaemonSessionProvider] ring eviction detected, reloading session (sessionId=session-ring-evicted)

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > reloads the session snapshot after ring-evicted resync
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > settles active prompts from replay snapshot after ring eviction
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > settles active prompts from replay snapshot after ring eviction
[DaemonSessionProvider] ring eviction detected, reloading session (sessionId=session-ring-active-prompt)

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > rejects active prompts from replay turn_error after ring eviction
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > rejects active prompts from replay turn_error after ring eviction
[DaemonSessionProvider] ring eviction detected, reloading session (sessionId=session-ring-active-error)

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does not settle unaccepted prompts from historical replay turns
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does not settle unaccepted prompts from historical replay turns
[DaemonSessionProvider] ring eviction detected, reloading session (sessionId=session-ring-unaccepted-prompt)

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does not settle unaccepted prompts from historical replay turns
[DaemonSessionProvider] SSE stream ended

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > keeps own user messages when replay rebuilds after ring eviction
[DaemonSessionProvider] ring eviction detected, reloading session (sessionId=session-own-user-replay)

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > keeps own user messages when replay rebuilds after ring eviction
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > skips malformed replay events without dropping later replay history
[DaemonSessionProvider] ring eviction detected, reloading session (sessionId=session-bad-replay)

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > skips malformed replay events without dropping later replay history
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > skips malformed replay events without dropping later replay history
[DaemonSessionProvider] skipped malformed replay event: Error: bad replay payload
    at Object.get (/startdir/src/qwen-code/packages/webui/src/daemon/session/DaemonSessionProvider.test.tsx:5190:15)
    at extractServerTimestamp (/startdir/src/qwen-code/packages/sdk-typescript/src/daemon/ui/normalizer.ts:480:22)
    at createBase (/startdir/src/qwen-code/packages/sdk-typescript/src/daemon/ui/normalizer.ts:446:27)
    at normalizeDaemonEvent (/startdir/src/qwen-code/packages/sdk-typescript/src/daemon/ui/normalizer.ts:58:16)
    at normalizeAndFilterEvent (/startdir/src/qwen-code/packages/webui/src/daemon/session/DaemonSessionProvider.tsx:1368:22)
    at run (/startdir/src/qwen-code/packages/webui/src/daemon/session/DaemonSessionProvider.tsx:649:40)

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > retries when ring-evicted reload fails once
[DaemonSessionProvider] ring eviction detected, reloading session (sessionId=session-ring-retry)

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > retries when ring-evicted reload fails once
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > retries when ring-evicted reload fails once
[DaemonSessionProvider] retriable SSE error, preserving session for delta resume (sessionId=undefined)

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > accepts live events after ring-evicted reload reconnects
[DaemonSessionProvider] ring eviction detected, reloading session (sessionId=session-reattach)

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > accepts live events after ring-evicted reload reconnects
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > preserves session and uses delta resume after a retriable SSE error
[DaemonSessionProvider] retriable SSE error, preserving session for delta resume (sessionId=session-1)

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > preserves session and uses delta resume after a retriable SSE error
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > routes session_died errors to notices, not transcript
[DaemonSessionProvider] daemon notice: {
  message: 'Session died (no details available)',
  debugMessage: 'Session died (no details available)',
  recoverable: false,
  severity: 'error',
  category: 'connection',
  operation: 'stream',
  code: 'daemon.session_died',
  id: 'daemon-notice-1785500618113-1',
  createdAt: 1785500618113
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > routes session_died errors to notices, not transcript
[DaemonSessionProvider] SSE stream ended

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > routes session_died errors to notices, not transcript
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "idle_timeout"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed with reason "last_client_detached"
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > does NOT stop reconnect on session_closed without reason field
[DaemonSessionProvider] SSE stream ended

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > routes stream_error to notices with connection category
[DaemonSessionProvider] daemon notice: {
  message: 'SSE stream error (no details available)',
  debugMessage: 'SSE stream error (no details available)',
  recoverable: true,
  severity: 'warning',
  category: 'connection',
  operation: 'stream',
  code: 'daemon.stream_error',
  id: 'daemon-notice-1785500618482-1',
  createdAt: 1785500618482
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > routes stream_error to notices with connection category
[DaemonSessionProvider] SSE stream ended

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > routes stream_error to notices with connection category
[DaemonSessionProvider] detach failed: [TypeError: fetch failed] {
  [cause]: Error: connect ECONNREFUSED 127.0.0.1:4170
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1864:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 4170
  }
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > routes model_switch_failed to notices with user_action category
[DaemonSessionProvider] SSE stream ended

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > keeps turn_error in transcript instead of routing to notices
[DaemonSessionProvider] SSE stream ended

stderr | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > routes client_evicted to notices with connection category
[DaemonSessionProvider] daemon notice: {
  message: 'Another client connected',
  debugMessage: 'Another client connected',
  recoverable: true,
  severity: 'warning',
  category: 'connection',
  operation: 'stream',
  code: 'daemon.client_evicted',
  id: 'daemon-notice-1785500618486-1',
  createdAt: 1785500618486
}

stdout | src/daemon/session/DaemonSessionProvider.test.tsx > DaemonSessionProvider > routes client_evicted to notices with connection category
[DaemonSessionProvider] SSE stream ended

 ✓ src/daemon/session/DaemonSessionProvider.test.tsx (105 tests) 3093ms
   ✓ DaemonSessionProvider > keeps restored active prompts streaming after resync requests  1007ms
   ✓ DaemonSessionProvider > reloads stale transcript after epoch-reset resync  1080ms

 Test Files  15 passed (15)
      Tests  200 passed (200)
   Start at  12:23:34
   Duration  4.39s (transform 2.18s, setup 0ms, collect 6.01s, tests 3.36s, environment 2.25s, prepare 861ms)

npm notice run @qwen-code/channel-telegram@0.19.3 test

 RUN  v3.2.4 /startdir/src/qwen-code/packages/channels/telegram

 ✓ src/TelegramAdapter.test.ts (6 tests) 9ms

 Test Files  1 passed (1)
      Tests  6 passed (6)
   Start at  12:23:38
   Duration  344ms (transform 74ms, setup 0ms, collect 156ms, tests 9ms, environment 0ms, prepare 56ms)

npm notice run @qwen-code/channel-dingtalk@0.19.3 test

 RUN  v3.2.4 /startdir/src/qwen-code/packages/channels/dingtalk

 ✓ src/markdown.test.ts (26 tests) 6ms
 ✓ src/DingtalkAdapter.test.ts (3 tests) 3ms

 Test Files  2 passed (2)
      Tests  29 passed (29)
   Start at  12:23:39
   Duration  254ms (transform 79ms, setup 0ms, collect 96ms, tests 10ms, environment 0ms, prepare 128ms)

npm notice run @qwen-code/channel-qqbot@0.19.3 test

 RUN  v3.2.4 /startdir/src/qwen-code/packages/channels/qqbot

 ✓ src/accounts.test.ts (8 tests) 3ms
 ✓ src/api.test.ts (13 tests) 6ms
[QQ:test-bot] Markdown rejected (HTTP 400: markdown unsupported), retrying as plain text
[QQ:test-bot] Send HTTP 500 (msg_seq=-): 
[QQ:test-bot] Token refresh failed: Error: token endpoint down, retrying in 60s
[QQ:test-bot] Token refresh failed: Error: still down, retrying in 60s
[QQ:test-bot] RC: gateway down (retry in 2000ms, attempt 1/5)
[QQ:test-bot] RC: gateway down (retry in 4000ms, attempt 2/5)
[QQ:test-bot] RC: gateway down (retry in 8000ms, attempt 3/5)
[QQ:test-bot] RC: gateway down (retry in 16000ms, attempt 4/5)
[QQ:test-bot] RC: gateway down (retry in 30000ms, attempt 5/5)
[QQ:test-bot] RC: exhausted 5 reconnect retries, will retry in 60s
[QQ:test-bot] RC: reconnect attempts exhausted, giving up
[QQ:test-bot] RC: token refresh failed, retrying...
[QQ:test-bot] RC: token refresh failed, retrying...
[QQ:test-bot] RC: token refresh failed, retrying...
[QQ:test-bot] RC: token refresh failed, retrying...
[QQ:test-bot] RC: token refresh failed, retrying...
[QQ:test-bot] RC: exhausted 5 reconnect retries, will retry in 60s
[QQ:test-bot] Send error: Error: network down
[QQ:test-bot] WebSocket closed (code=4001)
[QQ:test-bot] Reconnecting in 2000ms (attempt 1/20)
 ✓ src/send.test.ts (45 tests) 23ms

 Test Files  3 passed (3)
      Tests  66 passed (66)
   Start at  12:23:39
   Duration  306ms (transform 166ms, setup 0ms, collect 201ms, tests 33ms, environment 0ms, prepare 193ms)

==> ERROR: A failure occurred in check().
    Aborting...
==> ERROR: Build failed, check /home/alhp/workspace/chroot/build_868e8784-9781-43f2-9305-c1e238cde4c6/build
