Skip to content

fix(configure): reject literal "undefined" and "null" gateway auth tokens#13767

Merged
steipete merged 7 commits intoopenclaw:mainfrom
omair445:fix/configure-undefined-token
Feb 13, 2026
Merged

fix(configure): reject literal "undefined" and "null" gateway auth tokens#13767
steipete merged 7 commits intoopenclaw:mainfrom
omair445:fix/configure-undefined-token

Conversation

@omair445
Copy link
Contributor

@omair445 omair445 commented Feb 11, 2026

Summary

openclaw configure can write the literal string "undefined" as gateway.auth.token when params.token is JS undefined. This creates a guessable/known token that poses a security risk and can cause gateway issues under load.

Fixes #13756

Root Cause

buildGatewayAuthConfig directly assigns params.token without guarding against undefined, empty, or the literal strings "undefined"/"null" (common JS coercion artifacts). While JSON.stringify omits undefined object values, the token can arrive as the string "undefined" via template literal interpolation or String(undefined) in certain code paths.

Behavior Changes

  • buildGatewayAuthConfig now sanitizes token/password values: rejects undefined, empty strings, and the literal strings "undefined" and "null"
  • normalizeGatewayTokenInput now rejects "undefined" and "null" strings (returns "" so the caller falls back to randomToken())
  • No change to valid token/password handling

Codebase and GitHub Search

  • Searched for all callers of buildGatewayAuthConfig (configure.gateway.ts, configure.wizard.ts)
  • Searched for normalizeGatewayTokenInput usage (configure.gateway.ts, onboard-helpers.ts)
  • Confirmed the configure.gateway.ts path already uses normalizeGatewayTokenInput(tokenInput) || randomToken() — this fix hardens the deeper layers

Tests

All existing + 7 new tests pass (18 total):

configure.gateway-auth.test.ts (+4 new):

  • omits token when undefined is passed
  • rejects the literal string "undefined" as token
  • rejects the literal string "null" as token
  • omits password when undefined is passed

onboard-helpers.test.ts (+2 new):

  • rejects the literal string "undefined"
  • rejects the literal string "null"
✓ src/commands/configure.gateway-auth.test.ts (7 tests) 6ms
✓ src/commands/onboard-helpers.test.ts (11 tests) 10ms

lobster-biscuit

Sign-Off

  • Models used: Claude Opus 4
  • Submitter effort: AI-assisted, manually verified all code paths
  • Agent notes: Defense-in-depth fix — hardens both the builder function and the input normalizer

Greptile Overview

Greptile Summary

This PR hardens gateway auth configuration handling by sanitizing token/password inputs and rejecting common JS-coercion artifacts (the literal strings "undefined" and "null").

Changes are centered in src/commands/configure.gateway-auth.ts, adding a sanitizeAuthValue() helper and using it inside buildGatewayAuthConfig() so that invalid/empty values are omitted instead of being written into gateway.auth.*. Separately, normalizeGatewayTokenInput() in src/commands/onboard-helpers.ts now returns "" for "undefined"/"null" after trimming, preserving the existing normalizeGatewayTokenInput(tokenInput) || randomToken() fallback behavior in gateway setup flows.

Tests were expanded to cover undefined and literal-string token/password cases in both the auth builder and token normalizer.

Confidence Score: 5/5

  • This PR is safe to merge with minimal risk.
  • Changes are small, well-scoped input sanitization with accompanying unit tests. Verified that GatewayAuthConfig permits optional token/password, and downstream auth resolution/authorization already treats missing secrets as misconfiguration rather than silently authenticating.
  • No files require special attention

@openclaw-barnacle openclaw-barnacle bot added the commands Command implementations label Feb 11, 2026
@Takhoffman Takhoffman force-pushed the fix/configure-undefined-token branch from b1b5eea to f0372d9 Compare February 12, 2026 13:52
@steipete steipete self-assigned this Feb 13, 2026
@steipete steipete merged commit 59733a0 into openclaw:main Feb 13, 2026
9 checks passed
@steipete
Copy link
Contributor

steipete commented Feb 13, 2026

Superseded by the updated landed comment below with concrete SHAs.

Landed via synced main + squash merge.

  • Gate: pnpm check && pnpm build && pnpm test
  • Land commit: 7f10599d4de20fd293c02e4ec0327c27f5bc86aa
  • Merge commit: 59733a02c88415f90ead9b59c7f1036869fa22a2

Thanks @omair445!

Copy link
Contributor

Landed via synced main + squash merge.

  • Gate: pnpm check && pnpm build && pnpm test
  • Land commit: 7f10599d4de20fd293c02e4ec0327c27f5bc86aa
  • Merge commit: 59733a02c88415f90ead9b59c7f1036869fa22a2

Thanks @omair445!

@steipete
Copy link
Contributor

Landed via synced main + squash merge.

  • Gate:

[email protected] check /Users/steipete/Projects/clawdbot7/.worktrees/pr-13767
pnpm format:check && pnpm tsgo && pnpm lint

[email protected] format:check /Users/steipete/Projects/clawdbot7/.worktrees/pr-13767
oxfmt --check

Checking formatting...

All matched files use the correct format.
Finished in 6107ms on 4286 files using 16 threads.

[email protected] lint /Users/steipete/Projects/clawdbot7/.worktrees/pr-13767
oxlint --type-aware

Found 0 warnings and 0 errors.
Finished in 9.3s on 2908 files using 16 threads.

[email protected] build /Users/steipete/Projects/clawdbot7/.worktrees/pr-13767
pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts

[email protected] canvas:a2ui:bundle /Users/steipete/Projects/clawdbot7/.worktrees/pr-13767
bash scripts/bundle-a2ui.sh

A2UI bundle up to date; skipping.
ℹ tsdown v0.20.3 powered by rolldown v1.0.0-rc.3
ℹ config file: /Users/steipete/Projects/clawdbot7/.worktrees/pr-13767/tsdown.config.ts
ℹ entry: src/index.ts
ℹ target: node22.12.0
ℹ tsconfig: tsconfig.json
ℹ entry: src/entry.ts
ℹ target: node22.12.0
ℹ tsconfig: tsconfig.json
ℹ entry: src/infra/warning-filter.ts
ℹ target: node22.12.0
ℹ tsconfig: tsconfig.json
ℹ entry: src/plugin-sdk/index.ts
ℹ target: node22.12.0
ℹ tsconfig: tsconfig.json
ℹ entry: src/extensionAPI.ts
ℹ target: node22.12.0
ℹ tsconfig: tsconfig.json
ℹ entry: src/hooks/llm-slug-generator.ts, src/hooks/bundled/boot-md/handler.ts, src/hooks/bundled/command-logger/handler.ts, src/hooks/bundled/session-memory/handler.ts
ℹ target: node22.12.0
ℹ tsconfig: tsconfig.json
ℹ Build start
ℹ Cleaning 1544 files
ℹ dist/warning-filter.js 1.74 kB │ gzip: 0.64 kB
ℹ 1 files, total: 1.74 kB
✔ Build complete in 456ms
ℹ dist/plugin-sdk/index.js 876.28 kB │ gzip: 192.05 kB
ℹ dist/plugin-sdk/pi-model-discovery-Dw3A6oXH.js 1.12 kB │ gzip: 0.52 kB
ℹ 2 files, total: 877.40 kB
✔ Build complete in 1170ms
ℹ dist/extensionAPI.js 2415.04 kB
ℹ dist/pi-embedded-helpers-at-4mzm_.js 329.28 kB │ gzip: 73.68 kB
ℹ dist/config-DvFfi1VN.js 212.02 kB │ gzip: 41.96 kB
ℹ dist/manager-C8QNk2H0.js 119.34 kB │ gzip: 24.94 kB
ℹ dist/model-selection-DZp81OUN.js 104.99 kB │ gzip: 23.12 kB
ℹ dist/deliver-DajKPJqS.js 87.08 kB │ gzip: 21.60 kB
ℹ dist/chrome-DL0avO8n.js 63.35 kB │ gzip: 16.31 kB
ℹ dist/pw-ai-r-MhIk86.js 61.51 kB │ gzip: 14.36 kB
ℹ dist/runner-DlE4hvKz.js 60.60 kB │ gzip: 13.98 kB
ℹ dist/image-Eg-BUImK.js 38.61 kB │ gzip: 10.12 kB
ℹ dist/exec-CJFFoM7H.js 38.59 kB │ gzip: 11.45 kB
ℹ dist/qmd-manager-BXSY3Ws1.js 25.32 kB │ gzip: 7.17 kB
ℹ dist/agent-scope-CSGOYQwR.js 23.34 kB │ gzip: 5.57 kB
ℹ dist/login-qr-DzmPob1b.js 16.70 kB │ gzip: 5.50 kB
ℹ dist/sqlite-gsL4_9Ep.js 11.89 kB │ gzip: 3.79 kB
ℹ dist/fetch-timeout-Mk19YXJl.js 9.08 kB │ gzip: 3.12 kB
ℹ dist/paths-rb94mUrR.js 8.32 kB │ gzip: 2.25 kB
ℹ dist/github-copilot-token-wCk9Fg_E.js 3.97 kB │ gzip: 1.54 kB
ℹ dist/paths--d6CtDXS.js 3.90 kB │ gzip: 1.18 kB
ℹ dist/redact-BIMJ3ntQ.js 3.51 kB │ gzip: 1.38 kB
ℹ dist/pi-auth-json-B15Oq33G.js 2.67 kB │ gzip: 1.09 kB
ℹ dist/audio-preflight-DnE3uCnS.js 2.50 kB │ gzip: 1.07 kB
ℹ dist/command-format-CFzL448l.js 1.93 kB │ gzip: 0.74 kB
ℹ dist/errors-dpUbQseI.js 1.09 kB │ gzip: 0.47 kB
ℹ dist/pi-model-discovery-EhM2JAQo.js 0.84 kB │ gzip: 0.37 kB
ℹ dist/transcript-events-BrkSiEN9.js 0.59 kB │ gzip: 0.29 kB
ℹ dist/rolldown-runtime-Cbj13DAv.js 0.42 kB │ gzip: 0.28 kB
ℹ 27 files, total: 3646.50 kB
✔ Build complete in 1225ms
ℹ Granting execute permission to dist/entry.js
ℹ dist/bundled/boot-md/handler.js 32.32 kB │ gzip: 8.35 kB
ℹ dist/bundled/session-memory/handler.js 5.88 kB │ gzip: 2.22 kB
ℹ dist/llm-slug-generator.js 2.58 kB │ gzip: 1.20 kB
ℹ dist/bundled/command-logger/handler.js 1.52 kB │ gzip: 0.75 kB
ℹ dist/pi-embedded-DToI5Plo.js 2415.59 kB
ℹ dist/pi-embedded-helpers-CTGElePM.js 329.36 kB │ gzip: 73.73 kB
ℹ dist/config-CVPNq4aC.js 212.06 kB │ gzip: 41.97 kB
ℹ dist/manager-Dx7B7fto.js 119.32 kB │ gzip: 24.93 kB
ℹ dist/model-auth-ROB08Hba.js 104.99 kB │ gzip: 23.41 kB
ℹ dist/deliver-BStnBZAX.js 88.28 kB │ gzip: 21.79 kB
ℹ dist/chrome-BfB6JdKF.js 63.36 kB │ gzip: 16.30 kB
ℹ dist/pw-ai-CFgSESWX.js 61.51 kB │ gzip: 14.36 kB
ℹ dist/runner-DYG_Jfjl.js 60.57 kB │ gzip: 13.98 kB
ℹ dist/exec-B8lXct-k.js 38.65 kB │ gzip: 11.46 kB
ℹ dist/image-BYd0qKjp.js 38.61 kB │ gzip: 10.12 kB
ℹ dist/qmd-manager-BHf6j1MD.js 25.32 kB │ gzip: 7.17 kB
ℹ dist/agent-scope-DFsG0UHu.js 23.32 kB │ gzip: 5.57 kB
ℹ dist/login-qr-CXdGurI1.js 16.70 kB │ gzip: 5.50 kB
ℹ dist/sqlite-B0K_lfzU.js 11.87 kB │ gzip: 3.78 kB
ℹ dist/fetch-timeout-Dy0soQIG.js 9.08 kB │ gzip: 3.12 kB
ℹ dist/paths-BZtyHNCi.js 8.32 kB │ gzip: 2.25 kB
ℹ dist/github-copilot-token-DkiRbJdR.js 3.97 kB │ gzip: 1.55 kB
ℹ dist/paths-BZJaxR6t.js 3.90 kB │ gzip: 1.17 kB
ℹ dist/redact-BrXLgslJ.js 3.51 kB │ gzip: 1.38 kB
ℹ dist/pi-auth-json-DrH_ggba.js 2.66 kB │ gzip: 1.09 kB
ℹ dist/audio-preflight-CAF0wiJ0.js 2.50 kB │ gzip: 1.06 kB
ℹ dist/command-format-qUVxzqYm.js 1.93 kB │ gzip: 0.74 kB
ℹ dist/errors-B91HIDPD.js 1.09 kB │ gzip: 0.47 kB
ℹ dist/pi-model-discovery-DqgqUyAv.js 0.84 kB │ gzip: 0.37 kB
ℹ dist/transcript-events-BHS7QoRl.js 0.59 kB │ gzip: 0.29 kB
ℹ dist/rolldown-runtime-Cbj13DAv.js 0.42 kB │ gzip: 0.28 kB
ℹ 31 files, total: 3690.65 kB
✔ Build complete in 1438ms
ℹ Granting execute permission to dist/index.js
ℹ dist/entry.js 50.15 kB │ gzip: 13.80 kB
ℹ dist/loader-CPiFepil.js 2306.47 kB
ℹ dist/gateway-cli-e7398FF5.js 688.78 kB │ gzip: 160.21 kB
ℹ dist/config-guard-DBvHu0eU.js 234.65 kB │ gzip: 50.73 kB
ℹ dist/config-4GE0d-SQ.js 188.19 kB │ gzip: 36.42 kB
ℹ dist/onboard-skills-BtQ56ug5.js 152.25 kB │ gzip: 32.51 kB
ℹ dist/sandbox-BBq6oNI9.js 129.50 kB │ gzip: 29.50 kB
ℹ dist/status-j3AE7HXQ.js 121.11 kB │ gzip: 31.33 kB
ℹ dist/manager-B8EqZeyx.js 119.33 kB │ gzip: 24.94 kB
ℹ dist/auth-profiles-9yKLbl0n.js 115.63 kB │ gzip: 25.51 kB
ℹ dist/doctor-DcFN8ViB.js 101.32 kB │ gzip: 25.69 kB
ℹ dist/models-cli-7Vu0Daxx.js 98.47 kB │ gzip: 22.28 kB
ℹ dist/audit-C3jfnFT5.js 93.91 kB │ gzip: 22.66 kB
ℹ dist/deliver-Cq4Ojy6f.js 88.47 kB │ gzip: 21.80 kB
ℹ dist/tui-CpAcP4QD.js 88.14 kB │ gzip: 20.70 kB
ℹ dist/routes-CV1Wrx3q.js 80.02 kB │ gzip: 15.95 kB
ℹ dist/client-DIOEZN6D.js 70.33 kB │ gzip: 12.51 kB
ℹ dist/runner-OSLdyQIU.js 63.87 kB │ gzip: 14.89 kB
ℹ dist/pw-ai-CjS8oJut.js 61.53 kB │ gzip: 14.37 kB
ℹ dist/chrome-CIC9dZMq.js 60.97 kB │ gzip: 15.49 kB
ℹ dist/health-format-CGM4qyXX.js 55.89 kB │ gzip: 13.52 kB
ℹ dist/channels-cli-7AupEmrL.js 55.60 kB │ gzip: 14.06 kB
ℹ dist/github-copilot-auth-BUiM2mEL.js 52.12 kB │ gzip: 9.26 kB
ℹ dist/nodes-cli-BSsfLqwY.js 51.96 kB │ gzip: 11.21 kB
ℹ dist/node-cli-B-WXfITy.js 49.28 kB │ gzip: 12.46 kB
ℹ dist/pi-embedded-helpers-BRHwDHeW.js 47.93 kB │ gzip: 12.51 kB
ℹ dist/update-runner-oa4kbUMx.js 42.28 kB │ gzip: 9.32 kB
ℹ dist/update-cli-CyfR4TSm.js 39.21 kB │ gzip: 11.08 kB
ℹ dist/hooks-cli-ByU0xv7_.js 35.67 kB │ gzip: 8.18 kB
ℹ dist/acp-cli-CFtMxUU8.js 32.65 kB │ gzip: 8.83 kB
ℹ dist/exec-approvals-C67V-ljH.js 31.32 kB │ gzip: 7.11 kB
ℹ dist/skills-kuVO0__j.js 31.26 kB │ gzip: 8.05 kB
ℹ dist/daemon-cli-C4D5-Bs8.js 31.20 kB │ gzip: 7.48 kB
ℹ dist/configure-DlCLYSy6.js 30.54 kB │ gzip: 8.00 kB
ℹ dist/agent-1SEYxDVU.js 29.15 kB │ gzip: 7.31 kB
ℹ dist/server-context-BQDzlBct.js 27.69 kB │ gzip: 7.19 kB
ℹ dist/plugins-cli-B2W_EFtF.js 26.19 kB │ gzip: 6.99 kB
ℹ dist/session-cost-usage-B-tyjp76.js 26.00 kB │ gzip: 6.08 kB
ℹ dist/commands-registry-1oEstzZ0.js 25.43 kB │ gzip: 5.86 kB
ℹ dist/qmd-manager-CeyOLIcV.js 25.38 kB │ gzip: 7.20 kB
ℹ dist/cron-cli-BYyX61Lc.js 23.40 kB │ gzip: 5.79 kB
ℹ dist/service-V0L-uhoP.js 23.28 kB │ gzip: 5.58 kB
ℹ dist/onboard-channels-BwIU9d_8.js 23.01 kB │ gzip: 5.86 kB
ℹ dist/image-IY7liBv2.js 22.39 kB │ gzip: 6.58 kB
ℹ dist/sandbox-cli-BTjEJ6jN.js 21.65 kB │ gzip: 5.53 kB
ℹ dist/manifest-registry-CVsqjgX0.js 21.35 kB │ gzip: 5.28 kB
ℹ dist/auth-SPwSKVh3.js 20.01 kB │ gzip: 5.71 kB
ℹ dist/service-audit-EWyvQGsf.js 18.65 kB │ gzip: 4.84 kB
ℹ dist/daemon-runtime-BRh7moSd.js 18.23 kB │ gzip: 5.08 kB
ℹ dist/plugins-Dljp885j.js 17.93 kB │ gzip: 3.93 kB
ℹ dist/plugin-auto-enable-nuKWxdyy.js 16.82 kB │ gzip: 4.33 kB
ℹ dist/login-qr-5CxRn0eM.js 16.81 kB │ gzip: 5.52 kB
ℹ dist/completion-cli-D_FtE9-T.js 16.59 kB │ gzip: 4.40 kB
ℹ dist/tool-display-DbdMQFZx.js 16.39 kB │ gzip: 3.81 kB
ℹ dist/security-cli-OjmD6j-d.js 16.17 kB │ gzip: 4.61 kB
ℹ dist/hooks-status-DAKVD8Qf.js 16.06 kB │ gzip: 4.23 kB
ℹ dist/gmail-setup-utils-DBRHaokR.js 15.37 kB │ gzip: 4.45 kB
ℹ dist/webhooks-cli-COodbXQQ.js 14.46 kB │ gzip: 3.94 kB
ℹ dist/systemd-BC6vxBKJ.js 14.34 kB │ gzip: 4.11 kB
ℹ dist/installs-lNo08jC-.js 14.08 kB │ gzip: 3.50 kB
ℹ dist/agent-scope-6FYfZhnL.js 13.89 kB │ gzip: 3.68 kB
ℹ dist/exec-approvals-cli-TYPGI269.js 13.75 kB │ gzip: 3.42 kB
ℹ dist/pairing-store-D3TpRftC.js 11.97 kB │ gzip: 3.13 kB
ℹ dist/skills-cli-BTS9nncZ.js 11.83 kB │ gzip: 2.92 kB
ℹ dist/ws-log-WrJ4QYu7.js 11.82 kB │ gzip: 2.84 kB
ℹ dist/call-CoZ00Gnw.js 11.43 kB │ gzip: 3.43 kB
ℹ dist/register.subclis-BVmE7wuh.js 10.61 kB │ gzip: 2.90 kB
ℹ dist/sqlite-2UsPaJz5.js 10.24 kB │ gzip: 3.33 kB
ℹ dist/logs-cli-C8Fn-n5L.js 9.16 kB │ gzip: 3.07 kB
ℹ dist/fetch-timeout-CTdPvvr6.js 9.06 kB │ gzip: 3.11 kB
ℹ dist/accounts-Bvh0DFxS.js 8.89 kB │ gzip: 2.59 kB
ℹ dist/commands-GorakYvZ.js 8.81 kB │ gzip: 2.44 kB
ℹ dist/update-D7xPDpN3.js 8.71 kB │ gzip: 2.20 kB
ℹ dist/table-Bvka_vkc.js 8.47 kB │ gzip: 2.74 kB
ℹ dist/utils-BLJAc3ZV.js 8.28 kB │ gzip: 3.02 kB
ℹ dist/program-MjHMjZx4.js 8.25 kB │ gzip: 3.29 kB
ℹ dist/session-key-DVvxnFKg.js 7.90 kB │ gzip: 1.92 kB
ℹ dist/server-node-events-DSKERyfB.js 7.86 kB │ gzip: 2.26 kB
ℹ dist/directory-cli-DuaXlvIZ.js 7.79 kB │ gzip: 1.86 kB
ℹ dist/dns-cli-ik8UkqX7.js 7.68 kB │ gzip: 2.83 kB
ℹ dist/skill-scanner-BrGkh5K7.js 7.60 kB │ gzip: 2.53 kB
ℹ dist/skills-status-CW20aMse.js 7.40 kB │ gzip: 2.28 kB
ℹ dist/exec-CACT5OAW.js 7.15 kB │ gzip: 2.37 kB
ℹ dist/run-main-K0tyz3yf.js 7.03 kB │ gzip: 2.76 kB
ℹ dist/devices-cli-0H-pswyN.js 6.97 kB │ gzip: 2.06 kB
ℹ dist/nodes-screen-CVL9363A.js 6.71 kB │ gzip: 1.87 kB
ℹ dist/system-cli-7JZar5qZ.js 6.27 kB │ gzip: 1.97 kB
ℹ dist/ws-DUQa1zLi.js 5.82 kB │ gzip: 2.00 kB
ℹ dist/shared-B0cQV7by.js 5.81 kB │ gzip: 2.08 kB
ℹ dist/docs-cli-DcCXx2Oh.js 5.47 kB │ gzip: 1.97 kB
ℹ dist/pairing-cli-Cj_Uk_Jw.js 5.09 kB │ gzip: 1.87 kB
ℹ dist/widearea-dns-C4RnIR9O.js 5.04 kB │ gzip: 1.91 kB
ℹ dist/auth-health-Ba_KnFOh.js 4.93 kB │ gzip: 1.50 kB
ℹ dist/message-channel-DWcu72r7.js 4.29 kB │ gzip: 1.26 kB
ℹ dist/paths-BZK4Ct0I.js 4.16 kB │ gzip: 1.19 kB
ℹ dist/progress-COHv-uNT.js 4.14 kB │ gzip: 1.37 kB
ℹ dist/wsl-s2WQxR0a.js 3.98 kB │ gzip: 1.58 kB
ℹ dist/github-copilot-token-Cfs0Wxr8.js 3.96 kB │ gzip: 1.54 kB
ℹ dist/rpc-C-9Ty2k.js 3.84 kB │ gzip: 1.62 kB
ℹ dist/redact-UvkXqguc.js 3.62 kB │ gzip: 1.41 kB
ℹ dist/shared-Ch3NrTMb.js 3.20 kB │ gzip: 1.16 kB
ℹ dist/systemd-linger-Bniq-3Zb.js 3.19 kB │ gzip: 1.01 kB
ℹ dist/cli-DqXq1Eow.js 3.15 kB │ gzip: 1.34 kB
ℹ dist/ports-CS82sy58.js 3.14 kB │ gzip: 1.12 kB
ℹ dist/archive-aSMUcOc6.js 3.00 kB │ gzip: 1.16 kB
ℹ dist/openclaw-root-BKsZvO6K.js 2.94 kB │ gzip: 0.83 kB
ℹ dist/constants-BvQ6S8j5.js 2.88 kB │ gzip: 0.79 kB
ℹ dist/audio-preflight-Cx8E6qRw.js 2.87 kB │ gzip: 1.23 kB
ℹ dist/path-env-OJAyUeWW.js 2.83 kB │ gzip: 1.09 kB
ℹ dist/control-service-BLiXJdmq.js 2.76 kB │ gzip: 1.05 kB
ℹ dist/tui-cli-pbGsgM4Q.js 2.71 kB │ gzip: 1.26 kB
ℹ dist/clack-prompter-DpuKn_Uy.js 2.60 kB │ gzip: 0.84 kB
ℹ dist/note-Duiadw1g.js 2.45 kB │ gzip: 0.89 kB
ℹ dist/format-duration--hQihAvf.js 2.42 kB │ gzip: 0.91 kB
ℹ dist/format-relative-Cywx6ldk.js 2.13 kB │ gzip: 0.86 kB
ℹ dist/node-service-BeQ546ji.js 2.09 kB │ gzip: 0.62 kB
ℹ dist/channel-selection-s9Rn8Vnb.js 2.06 kB │ gzip: 0.73 kB
ℹ dist/control-auth-BO9GW9NO.js 1.89 kB │ gzip: 0.71 kB
ℹ dist/brew-DlQQMJ3n.js 1.65 kB │ gzip: 0.58 kB
ℹ dist/command-format-Bxe0mWee.js 1.58 kB │ gzip: 0.63 kB
ℹ dist/usage-format-Bhl_WCWP.js 1.50 kB │ gzip: 0.59 kB
ℹ dist/command-options-B3hxLHtX.js 1.35 kB │ gzip: 0.58 kB
ℹ dist/errors-Cojm0Kl7.js 1.25 kB │ gzip: 0.53 kB
ℹ dist/parse-log-line-CfVgwy6x.js 1.23 kB │ gzip: 0.52 kB
ℹ dist/tailnet-uoFvUSsw.js 1.21 kB │ gzip: 0.55 kB
ℹ dist/channel-options-DI_7VFRV.js 1.18 kB │ gzip: 0.56 kB
ℹ dist/gateway-rpc-cLtEXC7f.js 1.17 kB │ gzip: 0.62 kB
ℹ dist/systemd-hints-BVLopJ9O.js 1.11 kB │ gzip: 0.55 kB
ℹ dist/is-main-B9A8S9YC.js 1.00 kB │ gzip: 0.39 kB
ℹ dist/status-BZK9Fzls.js 0.96 kB │ gzip: 0.43 kB
ℹ dist/cli-utils-CodyYLHe.js 0.86 kB │ gzip: 0.42 kB
ℹ dist/pi-model-discovery-EhM2JAQo.js 0.84 kB │ gzip: 0.37 kB
ℹ dist/status-DCkF_L3U.js 0.82 kB │ gzip: 0.35 kB
ℹ dist/deps-Cehci0yx.js 0.81 kB │ gzip: 0.31 kB
ℹ dist/helpers-CUVSCDJV.js 0.79 kB │ gzip: 0.39 kB
ℹ dist/format-CL8VOhxX.js 0.76 kB │ gzip: 0.39 kB
ℹ dist/parse-Bw0oH-rT.js 0.70 kB │ gzip: 0.36 kB
ℹ dist/help-format-Cd5PLwXe.js 0.66 kB │ gzip: 0.29 kB
ℹ dist/transcript-events-Ch7wLX-j.js 0.59 kB │ gzip: 0.29 kB
ℹ dist/channels-status-issues-BqYwNuuC.js 0.55 kB │ gzip: 0.30 kB
ℹ dist/links-DpxpaKe1.js 0.49 kB │ gzip: 0.31 kB
ℹ dist/logging-B3KnAryz.js 0.49 kB │ gzip: 0.29 kB
ℹ dist/parse-timeout-D1XX_zN
.js 0.46 kB │ gzip: 0.26 kB
ℹ dist/prompt-style-Cf1r1L6k.js 0.44 kB │ gzip: 0.23 kB
ℹ dist/rolldown-runtime-Cbj13DAv.js 0.42 kB │ gzip: 0.28 kB
ℹ dist/helpers-ByYj2Aq5.js 0.41 kB │ gzip: 0.26 kB
ℹ dist/pi-auth-json-YKdqYMd-.js 0.30 kB │ gzip: 0.20 kB
ℹ dist/pairing-labels-DgJXwefW.js 0.26 kB │ gzip: 0.18 kB
ℹ dist/prompts-Dszjy1n_.js 0.24 kB │ gzip: 0.17 kB
ℹ dist/logging-D-Jq2wIo.js 0.01 kB │ gzip: 0.03 kB
ℹ 150 files, total: 6406.86 kB
✔ Build complete in 2058ms
ℹ dist/index.js 242.61 kB │ gzip: 53.62 kB
ℹ dist/reply-Zh-SQa_T.js 2306.61 kB
ℹ dist/gateway-cli-BwfM5lSJ.js 688.82 kB │ gzip: 160.21 kB
ℹ dist/config-CW_jZ4gq.js 188.23 kB │ gzip: 36.43 kB
ℹ dist/onboard-skills-DS7oCGmy.js 152.25 kB │ gzip: 32.34 kB
ℹ dist/sandbox-Cmdv1mV5.js 129.57 kB │ gzip: 29.72 kB
ℹ dist/onboarding-BhpcoIze.js 124.17 kB │ gzip: 32.23 kB
ℹ dist/manager-DzWLvVO5.js 119.42 kB │ gzip: 24.96 kB
ℹ dist/model-selection-CVSSouq3.js 115.71 kB │ gzip: 25.17 kB
ℹ dist/doctor-DArFK6Jn.js 101.43 kB │ gzip: 25.74 kB
ℹ dist/models-cli-BrSpJbOq.js 98.58 kB │ gzip: 22.33 kB
ℹ dist/audit-BFWFZh3F.js 93.92 kB │ gzip: 22.67 kB
ℹ dist/deliver-Cri9HjC6.js 88.47 kB │ gzip: 21.79 kB
ℹ dist/tui-CIFRY2m8.js 88.19 kB │ gzip: 20.72 kB
ℹ dist/routes-enHxN6An.js 80.07 kB │ gzip: 15.82 kB
ℹ dist/client-D7rFeZmq.js 70.34 kB │ gzip: 12.52 kB
ℹ dist/runner-C8CQTLmD.js 63.87 kB │ gzip: 14.93 kB
ℹ dist/chrome-Cvr-57lg.js 62.18 kB │ gzip: 15.91 kB
ℹ dist/pw-ai-BnhzLkYs.js 61.58 kB │ gzip: 14.40 kB
ℹ dist/health-format-DtdgYGZ7.js 55.94 kB │ gzip: 13.54 kB
ℹ dist/channels-cli-BeKDflrm.js 55.66 kB │ gzip: 14.10 kB
ℹ dist/github-copilot-auth-BR73jnO1.js 52.13 kB │ gzip: 9.28 kB
ℹ dist/nodes-cli-DcFKzN4Z.js 52.07 kB │ gzip: 11.26 kB
ℹ dist/node-cli-yIlsAzAp.js 49.40 kB │ gzip: 12.50 kB
ℹ dist/pi-embedded-helpers-IJvPeVEl.js 47.94 kB │ gzip: 12.52 kB
ℹ dist/update-runner-D_fl3rrG.js 42.27 kB │ gzip: 9.31 kB
ℹ dist/update-cli-Br5gHRB-.js 39.29 kB │ gzip: 11.13 kB
ℹ dist/hooks-cli-BoRRxHoV.js 35.78 kB │ gzip: 8.24 kB
ℹ dist/acp-cli-DkY2LF8q.js 32.76 kB │ gzip: 8.88 kB
ℹ dist/exec-approvals-Bqk-tIxY.js 31.32 kB │ gzip: 7.11 kB
ℹ dist/skills-BsrJVglo.js 31.32 kB │ gzip: 8.07 kB
ℹ dist/daemon-cli-BlLJgBdX.js 31.26 kB │ gzip: 7.50 kB
ℹ dist/configure-BpSsbZkd.js 30.60 kB │ gzip: 8.03 kB
ℹ dist/subsystem-BoExtIHo.js 30.24 kB │ gzip: 8.65 kB
ℹ dist/agent-Cq0s2qwc.js 29.16 kB │ gzip: 7.31 kB
ℹ dist/server-context-DmcefnRa.js 27.70 kB │ gzip: 7.21 kB
ℹ dist/completion-cli-QRrWMgg3.js 26.72 kB │ gzip: 6.82 kB
ℹ dist/plugins-cli-ByuYf1C6.js 26.31 kB │ gzip: 7.04 kB
ℹ dist/session-cost-usage-BYUb7fov.js 26.00 kB │ gzip: 6.08 kB
ℹ dist/commands-registry-BJvbQSMx.js 25.45 kB │ gzip: 5.87 kB
ℹ dist/qmd-manager-CDbM3i7l.js 25.43 kB │ gzip: 7.22 kB
ℹ dist/cron-cli-BzumD68S.js 23.50 kB │ gzip: 5.83 kB
ℹ dist/service--nPk7DvT.js 23.30 kB │ gzip: 5.59 kB
ℹ dist/onboard-channels-wa1o7Eay.js 23.02 kB │ gzip: 5.87 kB
ℹ dist/image-DOZOWYKL.js 22.39 kB │ gzip: 6.58 kB
ℹ dist/sandbox-cli-BchQkxvK.js 21.75 kB │ gzip: 5.57 kB
ℹ dist/manifest-registry-CQhdnDBZ.js 21.35 kB │ gzip: 5.27 kB
ℹ dist/auth-BPLQulWW.js 20.33 kB │ gzip: 5.83 kB
ℹ dist/service-audit-3JOjKOgg.js 18.65 kB │ gzip: 4.84 kB
ℹ dist/daemon-runtime-C1hkWcAE.js 18.24 kB │ gzip: 5.11 kB
ℹ dist/plugins-BlB_-Jnm.js 17.98 kB │ gzip: 3.96 kB
ℹ dist/plugin-auto-enable-CNyFPThN.js 16.83 kB │ gzip: 4.34 kB
ℹ dist/login-qr-BZ8AYyXm.js 16.82 kB │ gzip: 5.54 kB
ℹ dist/tool-display-CZRIDMRm.js 16.39 kB │ gzip: 3.81 kB
ℹ dist/security-cli-CRrNJq0e.js 16.29 kB │ gzip: 4.67 kB
ℹ dist/hooks-status-X9nl66RK.js 16.07 kB │ gzip: 4.23 kB
ℹ dist/gmail-setup-utils-ChDQ0AlG.js 15.38 kB │ gzip: 4.45 kB
ℹ dist/webhooks-cli-Z_WpwAVJ.js 14.57 kB │ gzip: 3.99 kB
ℹ dist/systemd-DrmBtJ5T.js 14.35 kB │ gzip: 4.12 kB
ℹ dist/installs-DscWb9b9.js 14.08 kB │ gzip: 3.50 kB
ℹ dist/agent-scope-Eyr6qR85.js 13.90 kB │ gzip: 3.68 kB
ℹ dist/exec-approvals-cli-Cl2CSUcQ.js 13.85 kB │ gzip: 3.46 kB
ℹ dist/pairing-store-Fk5pBYAZ.js 11.98 kB │ gzip: 3.13 kB
ℹ dist/skills-cli-Ddsz1OCN.js 11.94 kB │ gzip: 2.98 kB
ℹ dist/sqlite-D3kSF_Z3.js 11.90 kB │ gzip: 3.79 kB
ℹ dist/ws-log-DN1vJKoH.js 11.83 kB │ gzip: 2.85 kB
ℹ dist/call-CAlUAD6t.js 11.44 kB │ gzip: 3.44 kB
ℹ dist/logs-cli-BWoPB_9B.js 9.26 kB │ gzip: 3.11 kB
ℹ dist/paths-DVBShlw6.js 9.12 kB │ gzip: 2.47 kB
ℹ dist/fetch-CQ-hrPks.js 9.06 kB │ gzip: 3.11 kB
ℹ dist/accounts-nBF7HiCR.js 8.94 kB │ gzip: 2.61 kB
ℹ dist/pi-tools.policy-DZl6y-bx.js 8.81 kB │ gzip: 2.44 kB
ℹ dist/update-C-R4f4yL.js 8.71 kB │ gzip: 2.20 kB
ℹ dist/table-B8dx3v4v.js 8.48 kB │ gzip: 2.75 kB
ℹ dist/utils-Cd9QdCHh.js 8.45 kB │ gzip: 3.11 kB
ℹ dist/server-node-events-DmD5oVwS.js 7.97 kB │ gzip: 2.31 kB
ℹ dist/directory-cli-BCu_7T9G.js 7.90 kB │ gzip: 1.92 kB
ℹ dist/session-key-BWxPj0z_.js 7.90 kB │ gzip: 1.92 kB
ℹ dist/dns-cli-DmhK9tmX.js 7.79 kB │ gzip: 2.88 kB
ℹ dist/skill-scanner-CucvxYhu.js 7.60 kB │ gzip: 2.53 kB
ℹ dist/skills-status-CMv_bxYe.js 7.42 kB │ gzip: 2.29 kB
ℹ dist/exec-YIosokWE.js 7.16 kB │ gzip: 2.38 kB
ℹ dist/devices-cli-BnCpNIe8.js 7.07 kB │ gzip: 2.12 kB
ℹ dist/nodes-screen-DsHJIN2I.js 6.71 kB │ gzip: 1.87 kB
ℹ dist/system-cli-xaIeW0Ul.js 6.38 kB │ gzip: 2.03 kB
ℹ dist/shared-BeNmeqBN.js 5.82 kB │ gzip: 2.09 kB
ℹ dist/ws-CHCQHs0F.js 5.82 kB │ gzip: 2.00 kB
ℹ dist/docs-cli-CLrhl3ce.js 5.55 kB │ gzip: 2.01 kB
ℹ dist/pairing-cli-ChyvGCxs.js 5.19 kB │ gzip: 1.93 kB
ℹ dist/widearea-dns-DzuRdwk5.js 5.04 kB │ gzip: 1.90 kB
ℹ dist/auth-health-D9FVEjeP.js 4.94 kB │ gzip: 1.51 kB
ℹ dist/message-channel-BLi2a6Yw.js 4.30 kB │ gzip: 1.27 kB
ℹ dist/paths-DdKf4lHp.js 4.16 kB │ gzip: 1.20 kB
ℹ dist/progress-C9kngsTD.js 4.16 kB │ gzip: 1.38 kB
ℹ dist/dispatcher-C3XEGPFo.js 3.98 kB │ gzip: 1.58 kB
ℹ dist/github-copilot-token-BW-SEg7E.js 3.97 kB │ gzip: 1.55 kB
ℹ dist/rpc-B1wxs_o7.js 3.84 kB │ gzip: 1.62 kB
ℹ dist/redact-BRsnXqwD.js 3.62 kB │ gzip: 1.41 kB
ℹ dist/cli-BOMY7jW_.js 3.26 kB │ gzip: 1.39 kB
ℹ dist/shared-IZSdAj_0.js 3.21 kB │ gzip: 1.17 kB
ℹ dist/systemd-linger-NC2kl1SC.js 3.19 kB │ gzip: 1.01 kB
ℹ dist/archive-beaSfAzA.js 3.00 kB │ gzip: 1.16 kB
ℹ dist/audio-preflight-f68_NBHZ.js 2.97 kB │ gzip: 1.27 kB
ℹ dist/openclaw-root-CEnmuBUN.js 2.94 kB │ gzip: 0.83 kB
ℹ dist/constants-BvQ6S8j5.js 2.88 kB │ gzip: 0.79 kB
ℹ dist/path-env-CaYUVIML.js 2.83 kB │ gzip: 1.10 kB
ℹ dist/tui-cli-Drvs0f8K.js 2.81 kB │ gzip: 1.30 kB
ℹ dist/control-service-rnJoxEoH.js 2.77 kB │ gzip: 1.05 kB
ℹ dist/clack-prompter-Bz3Mmcl-.js 2.61 kB │ gzip: 0.85 kB
ℹ dist/note-BhRSeNeu.js 2.46 kB │ gzip: 0.91 kB
ℹ dist/channel-options-DYIXzX2a.js 2.46 kB │ gzip: 0.98 kB
ℹ dist/format-duration-84n6_DgO.js 2.42 kB │ gzip: 0.91 kB
ℹ dist/format-relative-cegC_FF5.js 2.13 kB │ gzip: 0.86 kB
ℹ dist/node-service-C8DTHTMg.js 2.09 kB │ gzip: 0.62 kB
ℹ dist/channel-selection-C_0QMwTN.js 2.06 kB │ gzip: 0.73 kB
ℹ dist/command-format-ChfKqObn.js 1.95 kB │ gzip: 0.74 kB
ℹ dist/control-auth-DJ46eghM.js 1.89 kB │ gzip: 0.71 kB
ℹ dist/brew-ROHf0-Xp.js 1.65 kB │ gzip: 0.58 kB
ℹ dist/usage-format-CpORtVCG.js 1.50 kB │ gzip: 0.59 kB
ℹ dist/errors-Bv81hF2P.js 1.25 kB │ gzip: 0.53 kB
ℹ dist/parse-log-line-BuRiE-Ij.js 1.23 kB │ gzip: 0.52 kB
ℹ dist/env-ONzUVAG2.js 1.21 kB │ gzip: 0.57 kB
ℹ dist/tailnet-DATIFSsY.js 1.21 kB │ gzip: 0.55 kB
ℹ dist/gateway-rpc-BAWhHILi.js 1.17 kB │ gzip: 0.62 kB
ℹ dist/systemd-hints-CXNtLw9Q.js 1.11 kB │ gzip: 0.55 kB
ℹ dist/is-main-BWoXGz7p.js 1.00 kB │ gzip: 0.39 kB
ℹ dist/status-Dg1cZuTA.js 0.97 kB │ gzip: 0.44 kB
ℹ dist/boolean-BgXe2hyu.js 0.86 kB │ gzip: 0.38 kB
ℹ dist/cli-utils-CRhVAaLV.js 0.86 kB │ gzip: 0.42 kB
ℹ dist/pi-model-discovery-EwKVHlZB.js 0.84 kB │ gzip: 0.37 kB
ℹ dist/status-C_dMhoE0.js 0.82 kB │ gzip: 0.35 kB
ℹ dist/deps-C2uFLLa0.js 0.81 kB │ gzip: 0.32 kB
ℹ dist/helpers-8O7IVGO-.js 0.79 kB │ gzip: 0.39 kB
ℹ dist/format-DcfK-dwd.js 0.76 kB │ gzip: 0.39 kB
ℹ dist/parse-Bw0oH-rT.js 0.70 kB │ gzip: 0.36 kB
ℹ dist/help-format-C48TXngO.js 0.67 kB │ gzip: 0.30 kB
ℹ dist/transcript-events-Bp7fGnwv.js 0.59 kB │ gzip: 0.29 kB
ℹ dist/channels-status-issues-C7LukWqH.js 0.55 kB │ gzip: 0.30 kB
ℹ dist/logging-BAyPwvdH.js 0.50 kB │ gzip: 0.30 kB
ℹ dist/links-Eax1UO3w.js 0.49 kB │ gzip: 0.30 kB
ℹ dist/parse-timeout-D1XX_zN_.js 0.46 kB │ gzip: 0.26 kB
ℹ dist/prompt-style-CIbmaxSa.js 0.45 kB │ gzip: 0.24 kB
ℹ dist/pi-auth-json-DkNhRSZB.js 0.43 kB │ gzip: 0.26 kB
ℹ dist/rolldown-runtime-Cbj13DAv.js 0.42 kB │ gzip: 0.28 kB
ℹ dist/helpers-HyeZXsnu.js 0.41 kB │ gzip: 0.26 kB
ℹ dist/pairing-labels-CJ6ORYJI.js 0.26 kB │ gzip: 0.19 kB
ℹ dist/prompts-Bg96reub.js 0.24 kB │ gzip: 0.17 kB
ℹ dist/logging-fywhKCmE.js 0.01 kB │ gzip: 0.03 kB
ℹ 148 files, total: 6398.15 kB
✔ Build complete in 2079ms

[email protected] build:plugin-sdk:dts /Users/steipete/Projects/clawdbot7/.worktrees/pr-13767
tsc -p tsconfig.plugin-sdk.dts.json

[copy-hook-metadata] Copied boot-md/HOOK.md
[copy-hook-metadata] Copied command-logger/HOOK.md
[copy-hook-metadata] Copied session-memory/HOOK.md
[copy-hook-metadata] Done

[email protected] test /Users/steipete/Projects/clawdbot7/.worktrees/pr-13767
node scripts/test-parallel.mjs

RUN v4.0.18 /Users/steipete/Projects/clawdbot7/.worktrees/pr-13767

RUN v4.0.18 /Users/steipete/Projects/clawdbot7/.worktrees/pr-13767

RUN v4.0.18 /Users/steipete/Projects/clawdbot7/.worktrees/pr-13767

✓ extensions/twitch/src/twitch-client.test.ts (30 tests) 40ms
✓ src/gateway/server-methods/agents-mutate.test.ts (16 tests) 38ms
✓ src/cli/config-cli.test.ts (3 tests) 3884ms
✓ preserves existing config keys when setting a new value 1461ms
✓ does not inject runtime defaults into the written config 901ms
✓ preserves existing config keys when unsetting a value 1501ms
✓ src/gateway/server-methods/skills.update.normalizes-api-key.test.ts (1 test) 6260ms
✓ strips embedded CR/LF from apiKey 6248ms
✓ src/browser/pw-tools-core.screenshots-element-selector.test.ts (5 tests) 5018ms
✓ screenshots an element selector 4999ms
✓ src/browser/pw-tools-core.clamps-timeoutms-scrollintoview.test.ts (6 tests) 5689ms
✓ clamps timeoutMs for scrollIntoView 5598ms
✓ src/browser/pw-tools-core.waits-next-download-saves-it.test.ts (6 tests) 5663ms
✓ waits for the next download and saves it 5613ms
✓ src/browser/pw-tools-core.last-file-chooser-arm-wins.test.ts (3 tests) 5685ms
✓ last file-chooser arm wins 5679ms
✓ src/channels/plugins/actions/discord.test.ts (6 tests) 6275ms
✓ lists channel and upload actions by default 6265ms
✓ src/browser/server.covers-additional-endpoint-branches.test.ts (10 tests) 6931ms
✓ covers additional endpoint branches 6588ms
✓ src/hooks/gmail-setup-utils.test.ts (3 tests) 7428ms
✓ resolves a working python path and caches the result 6420ms
✓ includes stdout and exit code when tailscale serve fails 624ms
✓ includes JSON parse failure details with stdout 366ms
✓ src/cli/skills-cli.test.ts (13 tests) 2090ms
✓ loads bundled skills and formats them 1098ms
✓ formats info for a real bundled skill (peekaboo) 962ms
✓ src/gateway/call.test.ts (21 tests) 261ms
✓ src/gateway/hooks-mapping.test.ts (9 tests) 32ms
✓ src/browser/server.agent-contract-form-layout-act-commands.test.ts (4 tests) 1807ms
✓ agent contract: form + layout act commands 1575ms
✓ src/browser/server.skips-default-maxchars-explicitly-set-zero.test.ts (5 tests) 1632ms
✓ skips default maxChars when explicitly set to zero 1307ms
✓ src/cron/isolated-agent.delivers-response-has-heartbeat-ok-but-includes.test.ts (2 tests) 2472ms
✓ delivers when response has HEARTBEAT_OK but includes media 1486ms
✓ uses shared announce flow when heartbeat ack padding exceeds configured limit 980ms
✓ src/tui/theme/theme.test.ts (10 tests) 2598ms
✓ should handle unknown languages gracefully 2372ms
✓ src/cli/update-cli.test.ts (20 tests) 4063ms
✓ exports updateCommand and registerUpdateCli 3143ms
✓ src/config/config.env-vars.test.ts (4 tests) 2743ms
✓ applies env vars from env block when missing 845ms
✓ does not override existing env vars 751ms
✓ applies env vars from env.vars when missing 652ms
✓ loads ${VAR} substitutions from ~/.openclaw/.env on repeated runtime loads 488ms
✓ src/browser/server.evaluate-disabled-does-not-block-storage.test.ts (1 test) 3818ms
✓ blocks act:evaluate but still allows cookies/storage reads 3815ms
✓ src/memory/index.test.ts (10 tests) 1974ms
✓ indexes memory files and searches by vector 327ms
✓ finds keyword matches via hybrid search when query embedding is zero 400ms
✓ hybrid weights can favor keyword matches when text weight dominates 379ms
✓ src/gateway/chat-attachments.test.ts (12 tests) 197ms
✓ src/gateway/server-methods/logs.test.ts (1 test) 218ms
✓ src/browser/server.auth-token-gates-http.test.ts (1 test) 3964ms
✓ requires bearer auth for standalone browser HTTP routes 3954ms
✓ src/web/media.test.ts (15 tests) 2025ms
✓ optimizes images when options object omits optimizeImages 304ms
✓ falls back to JPEG when PNG alpha cannot fit under cap 1092ms
✓ src/browser/server.post-tabs-open-profile-unknown-returns-404.test.ts (9 tests) 2036ms
✓ POST /tabs/open?profile=unknown returns 404 1946ms
✓ src/browser/server.serves-status-starts-browser-requested.test.ts (2 tests) 1764ms
✓ serves status + starts browser when requested 1554ms
✓ src/gateway/server-methods/agent-timestamp.test.ts (15 tests) 95ms
✓ src/browser/server.agent-contract-snapshot-endpoints.test.ts (2 tests) 1556ms
✓ agent contract: snapshot endpoints 1499ms
✓ src/gateway/boot.test.ts (3 tests) 248ms
✓ src/web/logout.test.ts (3 tests) 1526ms
✓ deletes cached credentials when present 1432ms
✓ src/cli/cron-cli.test.ts (15 tests) 1474ms
✓ trims model and thinking on cron add 1435ms
✓ src/cron/service.runs-one-shot-main-job-disables-it.test.ts (11 tests) 1654ms
✓ runs a one-shot main job and disables it after success when requested 369ms
✓ wakeMode now falls back to queued heartbeat when main lane stays busy 302ms
✓ src/telegram/bot.test.ts (84 tests) 3877ms
✓ routes callback_query payloads as messages and answers callbacks 399ms
✓ includes reply-to context when a Telegram reply is received 322ms
✓ sends GIF replies as animations 384ms
✓ dedupes duplicate message updates by update_id 527ms
✓ src/auto-reply/reply.block-streaming.test.ts (5 tests) 4517ms
✓ waits for block replies before returning final payloads 1211ms
✓ preserves block reply ordering when typing start is slow 859ms
✓ drops final payloads when block replies streamed 688ms
✓ falls back to final payloads when block reply send times out 848ms
✓ does not enable block streaming for telegram streamMode block 896ms
✓ extensions/bluebubbles/src/send.test.ts (33 tests) 90ms
✓ extensions/nostr/src/nostr-bus.fuzz.test.ts (76 tests) 53ms
✓ extensions/bluebubbles/src/actions.test.ts (27 tests) 303ms
✓ src/auto-reply/reply.raw-body.test.ts (6 tests) 6429ms
✓ /model, /think, /verbose directives detected from RawBody even when Body has structural wrapper 1151ms
✓ /model status detected from RawBody 924ms
✓ CommandBody is honored when RawBody is missing 519ms
✓ Integration: WhatsApp group message with structural wrapper and RawBody command 973ms
✓ preserves history when RawBody is provided for command parsing 1814ms
✓ reuses non-default agent session files without throwing path validation errors 1042ms
✓ src/plugins/loader.test.ts (14 tests) 1085ms
✓ disables bundled plugins by default 710ms
✓ src/plugins/tools.optional.test.ts (5 tests) 1471ms
✓ skips optional tools without explicit allowlist 827ms
✓ skips conflicting tool names but keeps other tools 322ms
✓ extensions/bluebubbles/src/monitor.test.ts (51 tests) 1135ms
✓ src/security/audit.test.ts (58 tests) 4982ms
✓ flags plugins with dangerous code patterns (deep audit) 1016ms
✓ reports detailed code-safety issues for both plugins and skills 1000ms
✓ flags plugin extension entry path traversal in deep audit 989ms
✓ reports scan_failed when plugin code scanner throws during deep audit 817ms
✓ src/auto-reply/reply.queue.test.ts (2 tests) 3258ms
✓ collects queued messages and drains after run completes 1833ms
✓ summarizes dropped followups when cap is exceeded 1368ms
✓ src/security/fix.test.ts (5 tests) 1239ms
✓ tightens groupPolicy + filesystem perms 672ms
✓ src/gateway/origin-check.test.ts (5 tests) 10ms
✓ src/infra/ports.test.ts (4 tests) 1752ms
✓ ensurePortAvailable rejects when port busy 908ms
✓ handlePortError exits nicely on EADDRINUSE 835ms
✓ src/memory/manager.batch.test.ts (4 tests) 1331ms
✓ uses OpenAI batch uploads when enabled 350ms
✓ falls back to non-batch on failure and resets failures after success 404ms
✓ disables batch after repeated failures and skips batch thereafter 391ms
✓ src/memory/manager.embedding-batches.test.ts (6 tests) 1165ms
✓ splits large files across multiple embedding batches 329ms
✓ src/web/auto-reply.web-auto-reply.prefixes-body-same-phone-marker-from.test.ts (8 tests) 587ms
✓ src/gateway/server.nodes.late-invoke.test.ts (1 test) 38385ms
✓ extensions/msteams/src/attachments.test.ts (19 tests) 214ms
✓ src/infra/run-node.test.ts (1 test) 1549ms
✓ preserves control-ui assets by building with tsdown --no-clean 1543ms
✓ src/gateway/tools-invoke-http.test.ts (10 tests) 38863ms
✓ src/memory/qmd-manager.test.ts (25 tests) 1683ms
✓ src/auto-reply/skill-commands.test.ts (5 tests) 1812ms
✓ merges command names across agents and de-duplicates 1790ms
✓ extensions/nostr/src/nostr-bus.integration.test.ts (26 tests) 48ms
✓ extensions/bluebubbles/src/chat.test.ts (31 tests) 51ms
✓ src/line/bot-handlers.test.ts (4 tests) 1656ms
✓ src/auto-reply/reply.heartbeat-typing.test.ts (2 tests) 2345ms
✓ starts typing for normal runs 1790ms
✓ does not start typing for heartbeat runs 517ms
✓ src/cli/exec-approvals-cli.test.ts (2 tests) 1602ms
✓ routes get command to local, gateway, and node modes 1588ms
✓ src/cron/service.restart-catchup.test.ts (2 tests) 456ms
✓ executes an overdue recurring job immediately on start 358ms
✓ src/canvas-host/server.test.ts (9 tests) 819ms
✓ serves HTML with injection and broadcasts reload on file changes 544ms
✓ src/hooks/install.test.ts (6 tests) 1142ms
✓ installs hook packs from zip archives 515ms
✓ installs hook packs from tar archives 320ms
✓ src/auto-reply/reply/session-resets.test.ts (15 tests) 674ms
✓ src/config/schema.test.ts (5 tests) 791ms
✓ exports schema + hints 734ms
✓ extensions/twitch/src/access-control.test.ts (31 tests) 37ms
✓ src/gateway/session-utils.fs.test.ts (32 tests) 338ms
✓ src/docker-setup.test.ts (5 tests) 1150ms
✓ handles unset optional env vars under strict mode 317ms
✓ supports a home volume when extra mounts are empty 378ms
✓ src/gateway/assistant-identity.test.ts (3 tests) 6ms
✓ src/gateway/client.maxpayload.test.ts (1 test) 145ms
✓ src/web/auto-reply.partial-reply-gating.test.ts (5 tests) 3488ms
✓ does not send partial replies for WhatsApp provider 476ms
✓ defaults to self-only when no config is present 2644ms
✓ src/config/config.identity-defaults.test.ts (7 tests) 5748ms
✓ does not derive mention defaults and only sets ackReactionScope when identity is present 1570ms
✓ supports provider textChunkLimit config 444ms
✓ accepts blank model provider apiKey values 1376ms
✓ respects empty responsePrefix to disable identity defaults 1094ms
✓ does not derive responsePrefix from identity emoji 769ms
✓ src/auto-reply/inbound.test.ts (23 tests) 492ms
✓ prefers BodyForAgent over Body for group chats 317ms
✓ src/process/child-process-bridge.test.ts (1 test) 2052ms
✓ forwards SIGTERM to the wrapped child 2048ms
✓ src/hooks/bundled/session-memory/handler.test.ts (10 tests) 3269ms
✓ respects custom messages config (limits to N messages) 335ms
✓ filters messages before slicing (fix for #2681) 336ms
✓ handles session files with fewer messages than requested 333ms
✓ src/gateway/server.plugin-http-auth.test.ts (1 test) 860ms
✓ requires gateway auth for /api/channels/* plugin routes and allows authenticated pass-through 850ms
✓ src/pairing/pairing-store.test.ts (4 tests) 598ms
✓ extensions/voice-call/src/webhook-security.test.ts (11 tests) 139ms
✓ src/cron/service.issue-regressions.test.ts (10 tests) 1153ms
✓ skips forced manual runs while a timer-triggered run is in progress 398ms
✓ src/config/sessions/store.lock.test.ts (10 tests) 1155ms
✓ serializes concurrent updateSessionStore calls without data loss 400ms
✓ src/gateway/control-ui.test.ts (1 test) 37ms
✓ src/config/config.plugin-validation.test.ts (7 tests) 1015ms
✓ surfaces plugin config diagnostics 348ms
✓ src/browser/cdp.test.ts (6 tests) 410ms
✓ src/web/auto-reply.web-auto-reply.requires-mention-group-chats-injects-history-replying.test.ts (8 tests) 1103ms
✓ requires mention in group chats and injects history when replying 368ms
✓ detects LID mentions using authDir mapping 383ms
✓ extensions/nostr/src/nostr-profile.fuzz.test.ts (51 tests) 2175ms
✓ handles rapid sequential events with monotonic timestamps 1890ms
✓ src/gateway/server-methods/agent.test.ts (3 tests) 23ms
✓ src/agents/tools/web-fetch.cf-markdown.test.ts (6 tests) 890ms
✓ falls back to readability for text/html responses 633ms
✓ src/infra/gateway-lock.test.ts (3 tests) 504ms
✓ src/web/auto-reply.web-auto-reply.falls-back-text-media-send-fails.test.ts (3 tests) 1072ms
✓ falls back to text when media send fails 426ms
✓ compresses media over 5MB and still sends it 583ms
✓ src/config/sessions.test.ts (27 tests) 323ms
✓ extensions/bluebubbles/src/reactions.test.ts (46 tests) 20ms
✓ src/web/auto-reply.typing-controller-idle.test.ts (1 test) 322ms
✓ marks dispatch idle after replies flush 307ms
✓ src/gateway/server-methods/exec-approval.test.ts (8 tests) 21ms
✓ extensions/nostr/src/nostr-profile.test.ts (31 tests) 205ms
✓ src/infra/heartbeat-runner.returns-default-unset.test.ts (33 tests) 498ms
✓ extensions/nostr/src/nostr-profile-http.test.ts (12 tests) 148ms
✓ src/telegram/bot.create-telegram-bot.routes-dms-by-telegram-accountid-binding.test.ts (8 tests) 511ms
✓ sends GIF replies as animations 376ms
✓ src/daemon/schtasks.test.ts (17 tests) 278ms
✓ src/web/auto-reply.web-auto-reply.uses-per-agent-mention-patterns-group-gating.test.ts (4 tests) 415ms
✓ extensions/twitch/src/outbound.test.ts (22 tests) 14ms
✓ src/agents/pi-embedded-runner.sanitize-session-history.test.ts (10 tests) 311ms
✓ src/telegram/bot.create-telegram-bot.applies-topic-skill-filters-system-prompts.test.ts (5 tests) 390ms
✓ src/cron/service.every-jobs-fire.test.ts (3 tests) 573ms
✓ fires an every-type main job when the timer fires a few ms late 365ms
✓ src/infra/update-runner.test.ts (13 tests) 588ms
✓ src/gateway/server-methods/usage.sessions-usage.test.ts (5 tests) 37ms
✓ src/gateway/session-utils.test.ts (29 tests) 37ms
✓ src/gateway/server-methods/send.test.ts (7 tests) 89ms
✓ src/infra/transport-ready.test.ts (3 tests) 393ms
✓ returns when the check succeeds and logs after the delay 335ms
✓ src/web/inbound.media.test.ts (4 tests) 306ms
✓ extensions/twitch/src/onboarding.test.ts (15 tests) 29ms
✓ src/config/config.pruning-defaults.test.ts (4 tests) 590ms
✓ extensions/twitch/src/send.test.ts (9 tests) 11ms
✓ src/gateway/server-methods/usage.test.ts (5 tests) 10ms
✓ src/infra/control-ui-assets.test.ts (17 tests) 526ms
✓ src/memory/manager.embedding-token-limit.test.ts (2 tests) 552ms
✓ src/slack/monitor/message-handler/prepare.inbound-contract.test.ts (8 tests) 438ms
✓ produces a finalized MsgContext 302ms
✓ src/config/config.compaction-settings.test.ts (2 tests) 437ms
✓ preserves memory flush config values 334ms
✓ src/auto-reply/reply/session.test.ts (14 tests) 510ms
✓ src/web/auto-reply.broadcast-groups.broadcasts-sequentially-configured-order.test.ts (3 tests) 543ms
✓ broadcasts sequentially in configured order 353ms
✓ src/gateway/server-utils.test.ts (4 tests) 7ms
✓ src/imessage/send.test.ts (4 tests) 707ms
✓ sends to chat_id targets 627ms
✓ src/gateway/chat-sanitize.test.ts (4 tests) 5ms
✓ src/telegram/bot.create-telegram-bot.installs-grammy-throttler.test.ts (10 tests) 523ms
✓ routes callback_query payloads as messages and answers callbacks 324ms
✓ src/config/config.backup-rotation.test.ts (1 test) 464ms
✓ keeps a 5-deep backup ring for config writes 461ms
✓ src/telegram/bot.create-telegram-bot.accepts-group-messages-mentionpatterns-match-without-botusername.test.ts (8 tests) 467ms
✓ src/process/command-queue.test.ts (8 tests) 413ms
✓ extensions/memory-lancedb/index.test.ts (7 tests | 1 skipped) 546ms
✓ memory plugin registers and initializes correctly 464ms
✓ src/web/auto-reply.web-auto-reply.sends-tool-summaries-immediately-responseprefix.test.ts (3 tests) 209ms
✓ src/auto-reply/reply.media-note.test.ts (1 test) 540ms
✓ includes all MediaPaths in the agent prompt 535ms
✓ src/cli/nodes-cli.coverage.test.ts (5 tests) 566ms
✓ lists nodes via node.list 545ms
✓ src/gateway/sessions-patch.test.ts (7 tests) 27ms
✓ src/browser/extension-relay.test.ts (4 tests) 306ms
✓ src/process/exec.test.ts (2 tests) 406ms
✓ extensions/bluebubbles/src/attachments.test.ts (18 tests) 108ms
✓ extensions/msteams/src/messenger.test.ts (11 tests) 27ms
✓ src/gateway/protocol/index.test.ts (6 tests) 23ms
✓ src/gateway/hooks.test.ts (15 tests) 11ms
✓ src/telegram/bot.create-telegram-bot.sends-replies-without-native-reply-threading.test.ts (7 tests) 522ms
✓ src/cron/service.store-migration.test.ts (1 test) 101ms
✓ src/memory/manager.sync-errors-do-not-crash.test.ts (1 test) 388ms
✓ does not raise unhandledRejection when watch-triggered sync fails 380ms
✓ src/auto-reply/reply/agent-runner.memory-flush.runreplyagent-memory-flush.increments-compaction-count-flush-compaction-completes.test.ts (1 test) 197ms
✓ src/slack/monitor.tool-result.sends-tool-summaries-responseprefix.test.ts (12 tests) 416ms
✓ src/gateway/server-startup-memory.test.ts (3 tests) 9ms
✓ src/infra/archive.test.ts (3 tests) 257ms
✓ extensions/voice-call/src/config.test.ts (14 tests) 36ms
✓ src/hooks/loader.test.ts (9 tests) 306ms
✓ src/gateway/auth-rate-limit.test.ts (17 tests) 48ms
✓ extensions/msteams/src/mentions.test.ts (20 tests) 16ms
✓ src/gateway/server-node-events.test.ts (3 tests) 26ms
✓ src/cron/service.read-ops-nonblocking.test.ts (1 test) 144ms
✓ src/config/sessions.cache.test.ts (8 tests) 561ms
✓ src/auto-reply/reply/agent-runner.messaging-tools.test.ts (5 tests) 345ms
✓ src/auto-reply/reply/followup-runner.test.ts (6 tests) 346ms
✓ src/browser/pw-ai.test.ts (6 tests) 299ms
✓ extensions/line/src/channel.sendPayload.test.ts (7 tests) 22ms
✓ src/gateway/server-chat.agent-events.test.ts (5 tests) 18ms
✓ src/wizard/onboarding.test.ts (5 tests) 605ms
✓ src/daemon/launchd.test.ts (14 tests) 369ms
✓ src/web/auto-reply.broadcast-groups.skips-unknown-broadcast-agent-ids-agents-list.test.ts (1 test) 219ms
✓ src/gateway/auth.test.ts (9 tests) 9ms
✓ src/web/auto-reply.web-auto-reply.supports-always-group-activation-silent-token-preserves.test.ts (4 tests) 787ms
✓ supports always-on group activation with silent token and clears pending history 331ms
✓ logs outbound replies to file 395ms
✓ src/cron/service.skips-main-jobs-empty-systemevent-text.test.ts (3 tests) 505ms
✓ skips main jobs with empty systemEvent text 414ms
✓ src/gateway/net.test.ts (7 tests) 141ms
✓ extensions/voice-call/src/manager.test.ts (6 tests) 36ms
✓ src/infra/path-env.test.ts (4 tests) 289ms
✓ src/slack/monitor.tool-result.threads-top-level-replies-replytomode-is-all.test.ts (7 tests) 397ms
✓ extensions/lobster/src/lobster-tool.test.ts (9 tests) 1971ms
✓ runs lobster and returns parsed envelope in details 422ms
✓ tolerates noisy stdout before the JSON envelope 538ms
✓ uses pluginConfig.lobsterPath when provided 495ms
✓ rejects invalid JSON from lobster 498ms
✓ src/config/config.agent-concurrency-defaults.test.ts (4 tests) 422ms
✓ injects defaults on load 409ms
✓ src/security/skill-scanner.test.ts (25 tests) 355ms
✓ src/auto-reply/reply/abort.test.ts (5 tests) 253ms
✓ src/gateway/server/plugins-http.test.ts (4 tests) 9ms
✓ extensions/twitch/src/status.test.ts (12 tests) 88ms
✓ src/config/sessions/store.pruning.test.ts (29 tests) 776ms
✓ src/auto-reply/reply/agent-runner.heartbeat-typing.runreplyagent-typing-heartbeat.signals-typing-block-replies.test.ts (4 tests) 206ms
✓ src/gateway/server-chat-registry.test.ts (1 test) 12ms
✓ extensions/feishu/src/bot.test.ts (4 tests) 42ms
✓ src/config/io.compat.test.ts (4 tests) 756ms
✓ uses ~/.openclaw/openclaw.json when config exists 574ms
✓ src/gateway/server-methods/agent-job.test.ts (2 tests) 22ms
✓ src/media/server.test.ts (6 tests) 483ms
✓ src/gateway/config-reload.test.ts (8 tests) 56ms
✓ src/telegram/bot.create-telegram-bot.matches-usernames-case-insensitively-grouppolicy-is.test.ts (9 tests) 580ms
✓ src/infra/outbound/deliver.test.ts (18 tests) 30ms
✓ src/auto-reply/reply/agent-runner.memory-flush.runreplyagent-memory-flush.uses-configured-prompts-memory-flush-runs.test.ts (2 tests) 93ms
✓ extensions/google-gemini-cli-auth/oauth.test.ts (5 tests) 87ms
✓ src/memory/manager.atomic-reindex.test.ts (1 test) 287ms
✓ src/cli/memory-cli.test.ts (10 tests) 362ms
✓ src/cron/session-reaper.test.ts (14 tests) 248ms
✓ src/memory/internal.test.ts (10 tests) 360ms
✓ src/web/outbound.test.ts (9 tests) 218ms
✓ src/gateway/server-methods/chat.transcript-writes.guardrail.test.ts (1 test) 28ms
✓ src/gateway/server-node-subscriptions.test.ts (2 tests) 9ms
✓ src/config/io.write-config.test.ts (1 test) 465ms
✓ persists caller changes onto resolved config without leaking runtime defaults 463ms
✓ extensions/msteams/src/file-consent-helpers.test.ts (16 tests) 15ms
✓ src/infra/heartbeat-runner.respects-ackmaxchars-heartbeat-acks.test.ts (9 tests) 624ms
✓ src/infra/session-cost-usage.test.ts (7 tests) 404ms
✓ src/gateway/ws-log.test.ts (4 tests) 15ms
✓ src/gateway/server-discovery.test.ts (3 tests) 8ms
✓ src/infra/provider-usage.fetch.antigravity.test.ts (18 tests) 294ms
✓ src/browser/chrome.test.ts (14 tests) 332ms
✓ src/config/config.discord.test.ts (1 test) 331ms
✓ loads discord guild map + dm group settings 329ms
✓ src/gateway/server-broadcast.test.ts (1 test) 5ms
✓ src/web/monitor-inbox.blocks-messages-from-unauthorized-senders-not-allowfrom.test.ts (9 tests) 113ms
✓ src/gateway/server-plugins.test.ts (1 test) 14ms
✓ src/auto-reply/envelope.test.ts (12 tests) 105ms
✓ extensions/bluebubbles/src/targets.test.ts (24 tests) 9ms
✓ src/auto-reply/reply/agent-runner.memory-flush.runreplyagent-memory-flush.runs-memory-flush-turn-updates-session-metadata.test.ts (2 tests) 350ms
✓ runs a memory flush turn and updates session metadata 312ms
✓ src/gateway/node-command-policy.test.ts (2 tests) 10ms

Test Files 44 passed (44)
Tests 298 passed (298)
Start at 17:08:24
Duration 145.05s (transform 84.97s, setup 329.36s, import 105.22s, tests 86.72s, environment 8ms)

✓ src/auto-reply/status.test.ts (21 tests) 471ms
✓ reads transcript usage for non-default agents 351ms
✓ src/infra/heartbeat-runner.sender-prefers-delivery-target.test.ts (1 test) 246ms
✓ src/telegram/bot.create-telegram-bot.blocks-all-group-messages-grouppolicy-is.test.ts (7 tests) 144ms
✓ src/telegram/webhook.test.ts (2 tests) 330ms
✓ extensions/msteams/src/media-helpers.test.ts (38 tests) 92ms
✓ src/media/store.test.ts (14 tests) 290ms
✓ src/auto-reply/reply/agent-runner.auto-compaction-updates-total-tokens.test.ts (2 tests) 168ms
✓ src/web/auto-reply/session-snapshot.test.ts (1 test) 130ms
✓ src/infra/heartbeat-runner.model-override.test.ts (4 tests) 333ms
✓ src/telegram/bot.create-telegram-bot.matches-tg-prefixed-allowfrom-entries-case-insensitively.test.ts (6 tests) 287ms
✓ src/cli/browser-cli-extension.test.ts (4 tests) 157ms
✓ extensions/nostr/src/nostr-bus.test.ts (32 tests) 221ms
✓ extensions/twitch/src/probe.test.ts (10 tests) 181ms
✓ src/infra/heartbeat-runner.ghost-reminder.test.ts (3 tests) 297ms
✓ src/discord/send.creates-thread.test.ts (20 tests) 252ms
✓ src/infra/format-time/format-time.test.ts (31 tests) 195ms
✓ src/telegram/send.preserves-thread-params-plain-text-fallback.test.ts (5 tests) 42ms
✓ src/memory/manager.vector-dedupe.test.ts (1 test) 52ms
✓ src/telegram/send.returns-undefined-empty-input.test.ts (35 tests) 317ms
✓ extensions/diagnostics-otel/src/service.test.ts (1 test) 9ms
✓ src/discord/monitor.tool-result.sends-status-replies-responseprefix.test.ts (6 tests) 176ms
✓ src/cron/service.prevents-duplicate-timers.test.ts (1 test) 249ms
✓ src/plugins/wired-hooks-compaction.test.ts (3 tests) 113ms
✓ src/web/monitor-inbox.captures-media-path-image-messages.test.ts (8 tests) 225ms
✓ src/infra/update-startup.test.ts (3 tests) 148ms
✓ extensions/llm-task/src/llm-task-tool.test.ts (8 tests) 270ms
✓ src/slack/monitor.tool-result.forces-thread-replies-replytoid-is-set.test.ts (4 tests) 308ms
✓ extensions/twitch/src/token.test.ts (9 tests) 11ms
✓ src/channels/plugins/catalog.test.ts (3 tests) 190ms
✓ src/telegram/bot-message-context.dm-threads.test.ts (5 tests) 312ms
✓ src/memory/search-manager.test.ts (4 tests) 99ms
✓ extensions/matrix/src/matrix/send.test.ts (3 tests) 500ms
✓ src/cron/service.store.migration.test.ts (2 tests) 324ms
✓ src/media/mime.test.ts (12 tests) 65ms
✓ src/imessage/monitor.skips-group-messages-without-mention-by-default.test.ts (12 tests) 357ms
✓ src/cron/service/jobs.schedule-error-isolation.test.ts (7 tests) 36ms
✓ src/auto-reply/reply/route-reply.test.ts (16 tests) 31ms
✓ extensions/whatsapp/src/resolve-target.test.ts (9 tests) 7ms
✓ src/media/store.redirect.test.ts (2 tests) 95ms
✓ src/telegram/bot.create-telegram-bot.dedupes-duplicate-callback-query-updates-by-update.test.ts (2 tests) 539ms
✓ dedupes duplicate callback_query updates by update_id 352ms
✓ extensions/msteams/src/policy.test.ts (15 tests) 21ms
✓ src/auto-reply/reply/agent-runner.heartbeat-typing.runreplyagent-typing-heartbeat.resets-corrupted-gemini-sessions-deletes-transcripts.test.ts (4 tests) 400ms
✓ src/slack/monitor/media.test.ts (16 tests) 254ms
✓ src/signal/monitor.tool-result.sends-tool-summaries-responseprefix.test.ts (11 tests) 185ms
✓ src/config/schema.hints.test.ts (3 tests) 256ms
✓ src/config/config.irc.test.ts (7 tests) 55ms
✓ src/telegram/send.caption-split.test.ts (9 tests) 117ms
✓ src/auto-reply/reply/agent-runner.heartbeat-typing.runreplyagent-typing-heartbeat.retries-after-compaction-failure-by-resetting-session.test.ts (3 tests) 407ms
✓ retries after compaction failure by resetting the session 340ms
✓ src/web/auto-reply/heartbeat-runner.timestamp.test.ts (1 test) 53ms
✓ src/telegram/send.proxy.test.ts (3 tests) 81ms
✓ src/markdown/ir.table-bullets.test.ts (7 tests) 50ms
✓ src/infra/outbound/message-action-runner.test.ts (26 tests) 514ms
✓ src/auto-reply/reply/queue.collect-routing.test.ts (8 tests) 156ms
✓ src/auto-reply/reply/reply-routing.test.ts (18 tests) 240ms
✓ src/infra/device-pairing.test.ts (2 tests) 221ms
✓ extensions/nostr/src/channel.test.ts (21 tests) 22ms
✓ src/canvas-host/server.state-dir.test.ts (1 test) 233ms
✓ src/telegram/fetch.test.ts (5 tests) 159ms
✓ src/config/sessions/transcript.test.ts (6 tests) 94ms
✓ src/cron/run-log.test.ts (3 tests) 353ms
✓ src/auto-reply/reply/agent-runner.heartbeat-typing.runreplyagent-typing-heartbeat.signals-typing-normal-runs.test.ts (7 tests) 75ms
✓ src/web/monitor-inbox.streams-inbound-messages.test.ts (8 tests) 305ms
✓ src/telegram/format.test.ts (19 tests) 31ms
✓ src/auto-reply/reply/commands.test.ts (21 tests) 256ms
✓ extensions/nostr/src/types.test.ts (12 tests) 206ms
✓ src/config/config.gateway-remote-transport.test.ts (2 tests) 19ms
✓ src/signal/monitor/event-handler.mention-gating.test.ts (9 tests) 145ms
✓ extensions/feishu/src/media.test.ts (4 tests) 8ms
✓ src/version.test.ts (4 tests) 162ms
✓ src/cli/dns-cli.test.ts (1 test) 173ms
✓ src/commands/auth-choice.apply.huggingface.test.ts (3 tests) 288ms
✓ src/telegram/bot-message-context.dm-topic-threadid.test.ts (3 tests) 50ms
✓ extensions/irc/src/onboarding.test.ts (2 tests) 25ms
✓ extensions/feishu/src/reply-dispatcher.test.ts (2 tests) 9ms
✓ src/hooks/frontmatter.test.ts (20 tests) 629ms
✓ parses single-line key-value pairs 352ms
✓ src/config/redact-snapshot.test.ts (53 tests) 2445ms
✓ main schema redact works (samples) 1418ms
✓ extensions/googlechat/src/resolve-target.test.ts (6 tests) 8ms
✓ src/infra/infra-store.test.ts (12 tests) 35ms
✓ src/cron/schedule.test.ts (9 tests) 206ms
✓ src/auto-reply/reply/session-updates.incrementcompactioncount.test.ts (3 tests) 306ms
✓ src/plugins/uninstall.test.ts (23 tests) 414ms
✓ src/discord/send.sends-basic-channel-messages.test.ts (26 tests) 283ms
✓ extensions/irc/src/policy.test.ts (6 tests) 122ms
✓ src/infra/infra-runtime.test.ts (9 tests) 128ms
✓ src/auto-reply/reply.triggers.trigger-handling.stages-inbound-media-into-sandbox-workspace.security.test.ts (1 test) 49ms
✓ src/telegram/bot-message-context.sender-prefix.test.ts (3 tests) 54ms
✓ src/telegram/bot/delivery.test.ts (10 tests) 30ms
✓ extensions/nostr/src/nostr-state-store.test.ts (7 tests) 151ms
✓ src/slack/monitor.threading.missing-thread-ts.test.ts (1 test) 154ms
✓ src/telegram/update-offset-store.test.ts (1 test) 26ms
Usage: program models auth [options] [command]

Manage model auth profiles

Options:
--agent Agent id for auth order get/set/clear
-h, --help display help for command

Commands:
add Interactive auth helper (setup-token or paste
token)
login [options] Run a provider plugin auth flow (OAuth/API
key)
setup-token [options] Run a provider CLI to create/sync a token (TTY
required)
paste-token [options] Paste a token into auth-profiles.json and
update config
login-github-copilot [options] Login to GitHub Copilot via GitHub device flow
(TTY required)
order Manage per-agent auth profile order overrides
✓ src/cli/models-cli.test.ts (4 tests) 276ms
✓ extensions/matrix/src/matrix/send/targets.test.ts (5 tests) 14ms
✓ src/discord/monitor/message-handler.inbound-contract.test.ts (2 tests) 330ms
✓ passes a finalized MsgContext to dispatchInboundMessage 317ms
✓ src/signal/monitor/event-handler.inbound-contract.test.ts (1 test) 271ms
✓ src/infra/restart-sentinel.test.ts (3 tests) 93ms
✓ src/infra/tailscale.test.ts (10 tests) 55ms
✓ src/web/qr-image.test.ts (2 tests) 142ms
✓ src/infra/heartbeat-active-hours.test.ts (7 tests) 56ms
✓ src/infra/provider-usage.auth.normalizes-keys.test.ts (2 tests) 219ms
✓ src/auto-reply/reply/commands-policy.test.ts (10 tests) 473ms
✓ src/config/plugin-auto-enable.test.ts (10 tests) 45ms
✓ src/imessage/monitor.updates-last-route-chat-id-direct-messages.test.ts (2 tests) 394ms
✓ src/config/config.sandbox-docker.test.ts (2 tests) 605ms
✓ accepts binds array in sandbox.docker config 406ms
✓ src/browser/pw-session.get-page-for-targetid.extension-fallback.test.ts (1 test) 463ms
✓ falls back to the only page when CDP session attachment is blocked (extension relays) 461ms
✓ src/config/config.preservation-on-validation-failure.test.ts (2 tests) 46ms
✓ src/web/monitor-inbox.allows-messages-from-senders-allowfrom-list.test.ts (7 tests) 334ms
✓ src/telegram/send.edit-message.test.ts (3 tests) 99ms
✓ extensions/matrix/src/matrix/monitor/media.test.ts (2 tests) 9ms
✓ src/slack/format.test.ts (18 tests) 41ms
✓ extensions/nostr/src/nostr-profile-import.test.ts (7 tests) 33ms
✓ src/auto-reply/reply/agent-runner.transient-http-retry.test.ts (1 test) 17ms
✓ src/telegram/send.video-note.test.ts (4 tests) 103ms
✓ src/config/config.identity-avatar.test.ts (3 tests) 274ms
✓ src/discord/audit.test.ts (1 test) 47ms
✓ src/infra/provider-usage.test.ts (10 tests) 151ms
✓ src/media-understanding/providers/deepgram/audio.test.ts (2 tests) 48ms
✓ src/auto-reply/reply/session-usage.test.ts (4 tests) 109ms
✓ src/infra/heartbeat-visibility.test.ts (13 tests) 22ms
✓ src/memory/manager.async-search.test.ts (1 test) 308ms
✓ does not await sync when searching 302ms
✓ src/infra/ports-inspect.test.ts (1 test) 756ms
✓ reports busy when lsof is missing but loopback listener exists 750ms
✓ src/infra/net/ssrf.pinning.test.ts (5 tests) 211ms
✓ src/cron/service.delivery-plan.test.ts (2 tests) 501ms
✓ src/web/auto-reply/monitor/message-line.test.ts (1 test) 277ms
✓ extensions/voice-call/src/media-stream.test.ts (2 tests) 11ms
✓ src/media-understanding/attachments.ssrf.test.ts (1 test) 25ms
✓ extensions/twitch/src/config.test.ts (9 tests) 8ms
✓ src/auto-reply/reply/agent-runner.heartbeat-typing.runreplyagent-typing-heartbeat.still-replies-even-if-session-reset-fails.test.ts (2 tests) 974ms
✓ still replies even if session reset fails to persist 870ms
✓ src/cron/service.issue-13992-regression.test.ts (4 tests) 667ms
✓ should compute missing nextRunAtMs during maintenance 487ms
✓ src/signal/format.test.ts (6 tests) 287ms
✓ extensions/msteams/src/conversation-store-fs.test.ts (1 test) 1131ms
✓ filters and prunes expired entries (but keeps legacy ones) 1078ms
✓ extensions/line/src/channel.logout.test.ts (2 tests) 15ms
✓ src/media-understanding/providers/google/video.test.ts (2 tests) 13ms
✓ src/web/login.coverage.test.ts (3 tests) 72ms
✓ src/telegram/sticker-cache.test.ts (17 tests) 174ms
✓ src/daemon/service-audit.test.ts (3 tests) 37ms
✓ src/cli/pairing-cli.test.ts (7 tests) 201ms
✓ extensions/msteams/src/inbound.test.ts (8 tests) 36ms
✓ src/slack/monitor/message-handler/prepare.sender-prefix.test.ts (2 tests) 40ms
✓ src/infra/bonjour.test.ts (7 tests) 33ms
✓ src/auto-reply/reply/typing.test.ts (17 tests) 19ms
✓ src/infra/unhandled-rejections.fatal-detection.test.ts (10 tests) 262ms
✓ src/browser/pw-session.test.ts (6 tests) 141ms
✓ src/auto-reply/reply/agent-runner.memory-flush.runreplyagent-memory-flush.skips-memory-flush-cli-providers.test.ts (1 test) 34ms
✓ extensions/voice-call/src/providers/twilio.test.ts (3 tests) 8ms
✓ src/infra/exec-approvals.test.ts (53 tests) 60ms
✓ src/config/config.multi-agent-agentdir-validation.test.ts (2 tests) 126ms
✓ src/infra/device-identity.state-dir.test.ts (1 test) 300ms
✓ src/auto-reply/command-control.test.ts (19 tests) 110ms
✓ src/infra/heartbeat-runner.scheduler.test.ts (5 tests) 183ms
✓ src/cron/store.test.ts (3 tests) 26ms
✓ src/line/bot-message-context.test.ts (2 tests) 270ms
✓ src/utils.test.ts (25 tests) 88ms
✓ src/hooks/internal-hooks.test.ts (18 tests) 28ms
✓ src/auto-reply/reply/agent-runner.memory-flush.runreplyagent-memory-flush.skips-memory-flush-sandbox-workspace-is-read.test.ts (2 tests) 310ms
✓ src/auto-reply/reply/commands-approve.test.ts (5 tests) 21ms
✓ src/media/fetch.test.ts (3 tests) 152ms
✓ src/markdown/frontmatter.test.ts (5 tests) 92ms
✓ src/auto-reply/reply/dispatch-from-config.test.ts (12 tests) 50ms
✓ src/logger.test.ts (5 tests) 37ms
✓ extensions/msteams/src/polls.test.ts (3 tests) 306ms
✓ src/auto-reply/reply/agent-runner.block-streaming.test.ts (1 test) 50ms
✓ src/auto-reply/reply/commands-parsing.test.ts (8 tests) 183ms
✓ src/scripts/canvas-a2ui-copy.test.ts (2 tests) 241ms
✓ extensions/feishu/src/bot.checkBotMentioned.test.ts (5 tests) 11ms
✓ src/tts/tts.test.ts (35 tests) 98ms
✓ src/web/session.test.ts (8 tests) 28ms
✓ src/auto-reply/reply.triggers.trigger-handling.stages-inbound-media-into-sandbox-workspace.test.ts (1 test) 243ms
✓ src/config/paths.test.ts (9 tests) 217ms
✓ src/logging/console-capture.test.ts (9 tests) 131ms
✓ src/terminal/stream-writer.test.ts (2 tests) 6ms
✓ src/slack/monitor/slash.command-arg-menus.test.ts (5 tests) 15ms
✓ src/cli/logs-cli.test.ts (9 tests) 17ms
✓ src/auto-reply/reply/agent-runner.claude-cli.test.ts (1 test) 70ms
✓ extensions/zalo/src/monitor.webhook.test.ts (1 test) 213ms
✓ src/auto-reply/reply.directive.parse.test.ts (31 tests) 70ms
✓ src/infra/outbound/message-action-runner.threading.test.ts (7 tests) 30ms
✓ src/line/markdown-to-line.test.ts (38 tests) 23ms
✓ src/line/flex-templates.test.ts (43 tests) 63ms
✓ src/config/normalize-paths.test.ts (1 test) 242ms
✓ src/browser/profiles.test.ts (28 tests) 41ms
✓ extensions/mattermost/src/channel.test.ts (5 tests) 16ms
✓ src/config/includes.test.ts (25 tests) 16ms
✓ src/line/template-messages.test.ts (35 tests) 107ms
✓ src/agents/model-catalog.test.ts (3 tests) 32ms
✓ src/config/env-substitution.test.ts (31 tests) 69ms
✓ src/tui/commands.test.ts (3 tests) 7ms
✓ src/config/model-alias-defaults.test.ts (5 tests) 82ms
✓ src/browser/client.test.ts (6 tests) 157ms
✓ src/infra/heartbeat-wake.test.ts (9 tests) 233ms
✓ src/infra/brew.test.ts (3 tests) 316ms
✓ src/tui/components/searchable-select-list.test.ts (13 tests) 58ms
✓ src/plugins/voice-call.plugin.test.ts (6 tests) 88ms
✓ extensions/matrix/src/matrix/client.test.ts (2 tests) 57ms
✓ src/acp/client.test.ts (5 tests) 18ms
✓ extensions/googlechat/src/api.test.ts (2 tests) 10ms
✓ src/cli/nodes-camera.test.ts (8 tests) 216ms
✓ src/tui/tui-command-handlers.test.ts (1 test) 14ms
✓ src/config/sessions/paths.test.ts (12 tests) 134ms
✓ src/infra/net/fetch-guard.ssrf.test.ts (4 tests) 290ms
✓ src/browser/server-context.remote-tab-ops.test.ts (6 tests) 34ms
✓ src/memory/batch-voyage.test.ts (2 tests) 21ms
✓ src/discord/monitor.test.ts (46 tests) 125ms
✓ src/infra/shell-env.test.ts (4 tests) 7ms
✓ src/media-understanding/runner.auto-audio.test.ts (2 tests) 146ms
✓ src/globals.test.ts (2 tests) 25ms
✓ src/auto-reply/commands-registry.test.ts (16 tests) 160ms
✓ src/agents/models-config.providers.vllm.test.ts (2 tests) 17ms
✓ src/infra/retry.test.ts (8 tests) 21ms
✓ src/memory/session-files.test.ts (3 tests) 295ms
✓ extensions/zalouser/src/status-issues.test.ts (4 tests) 6ms
✓ src/plugins/discovery.test.ts (4 tests) 66ms
✓ extensions/matrix/src/resolve-targets.test.ts (2 tests) 5ms
✓ extensions/matrix/src/matrix/accounts.test.ts (3 tests) 70ms
✓ src/browser/pw-tools-core.interactions.evaluate.abort.test.ts (2 tests) 40ms
✓ src/web/auto-reply/mentions.test.ts (3 tests) 8ms
✓ src/discord/monitor/message-handler.process.test.ts (2 tests) 136ms
✓ extensions/matrix/src/channel.directory.test.ts (1 test) 11ms
✓ src/discord/monitor.gateway.test.ts (4 tests) 14ms
✓ src/web/login.test.ts (1 test) 26ms
✓ src/telegram/monitor.test.ts (6 tests) 32ms
✓ src/discord/resolve-channels.test.ts (2 tests) 56ms
✓ src/plugins/wired-hooks-session.test.ts (3 tests) 8ms
✓ src/infra/dotenv.test.ts (2 tests) 30ms
✓ src/config/telegram-webhook-secret.test.ts (4 tests) 33ms
✓ extensions/msteams/src/probe.test.ts (3 tests) 31ms
✓ src/telegram/bot-native-commands.plugin-auth.test.ts (1 test) 18ms
✓ extensions/matrix/src/matrix/monitor/allowlist.test.ts (3 tests) 17ms
✓ src/browser/chrome.default-browser.test.ts (2 tests) 8ms
✓ src/infra/ssh-config.test.ts (3 tests) 61ms
✓ src/discord/chunk.test.ts (10 tests) 78ms
✓ src/browser/control-auth.auto-token.test.ts (5 tests) 44ms
✓ extensions/irc/src/protocol.test.ts (4 tests) 60ms
✓ src/infra/system-events.test.ts (2 tests) 276ms
✓ src/config/config.broadcast.test.ts (3 tests) 61ms
✓ src/telegram/bot-native-commands.test.ts (3 tests) 24ms
✓ src/web/accounts.whatsapp-auth.test.ts (4 tests) 59ms
✓ src/web/reconnect.test.ts (4 tests) 9ms
✓ extensions/msteams/src/errors.test.ts (6 tests) 37ms
✓ src/auto-reply/reply/formatting.test.ts (20 tests) 216ms
✓ src/memory/embeddings.test.ts (12 tests) 103ms
✓ src/web/inbound.test.ts (14 tests) 37ms
✓ src/telegram/download.test.ts (2 tests) 158ms
✓ src/slack/monitor/context.test.ts (7 tests) 82ms
✓ src/cron/cron-protocol-conformance.test.ts (2 tests) 404ms
✓ ui + swift include all cron delivery modes from gateway schema 317ms
✓ src/telegram/audit.test.ts (3 tests) 156ms
✓ src/plugins/cli.test.ts (1 test) 936ms
✓ skips plugin CLI registrars when commands already exist 912ms
✓ extensions/irc/src/normalize.test.ts (3 tests) 21ms
✓ src/browser/client-fetch.loopback-auth.test.ts (3 tests) 33ms
✓ src/agents/pi-auth-json.test.ts (1 test) 221ms
✓ src/media-understanding/runner.deepgram.test.ts (1 test) 41ms
✓ src/imessage/targets.test.ts (10 tests) 9ms
✓ extensions/googlechat/src/targets.test.ts (4 tests) 5ms
✓ src/auto-reply/chunk.test.ts (44 tests) 23ms
✓ src/discord/monitor/gateway-registry.test.ts (5 tests) 10ms
✓ src/cron/normalize.test.ts (15 tests) 13ms
✓ src/web/auto-reply/monitor/process-message.inbound-contract.test.ts (1 test) 68ms
✓ src/security/external-content.test.ts (29 tests) 17ms
✓ src/web/auto-reply/monitor/group-gating.test.ts (1 test) 174ms
✓ src/cli/browser-cli-inspect.test.ts (2 tests) 19ms
✓ extensions/msteams/src/channel.directory.test.ts (1 test) 20ms
✓ src/discord/monitor/threading.test.ts (9 tests) 67ms
✓ src/security/audit-extra.sync.test.ts (3 tests) 26ms
✓ src/media/store.header-ext.test.ts (1 test) 21ms
✓ src/logging/console-settings.test.ts (2 tests) 31ms
✓ src/channels/command-gating.test.ts (8 tests) 11ms
✓ src/infra/bonjour-discovery.test.ts (4 tests) 34ms
✓ extensions/irc/src/client.test.ts (4 tests) 9ms
✓ src/auto-reply/reply/agent-runner.response-usage-footer.test.ts (2 tests) 45ms
✓ src/auto-reply/reply/agent-runner.authprofileid-fallback.test.ts (1 test) 68ms
✓ src/config/sessions/metadata.test.ts (1 test) 5ms
✓ extensions/feishu/src/channel.test.ts (1 test) 15ms
✓ src/auto-reply/reply/agent-runner-utils.test.ts (6 tests) 11ms
✓ src/auto-reply/reply/agent-runner.reasoning-tags.test.ts (2 tests) 100ms
✓ src/auto-reply/reply/line-directives.test.ts (36 tests) 130ms
✓ src/config/slack-http-config.test.ts (4 tests) 18ms
✓ src/shared/text/reasoning-tags.test.ts (39 tests) 11ms
✓ src/infra/warning-filter.test.ts (3 tests) 10ms
✓ src/daemon/service-env.test.ts (17 tests) 23ms
✓ src/config/agent-dirs.test.ts (2 tests) 214ms
✓ src/security/windows-acl.test.ts (26 tests) 175ms
✓ src/tui/tui-input-history.test.ts (8 tests) 125ms
✓ src/config/config.schema-regressions.test.ts (2 tests) 52ms
✓ extensions/matrix/src/matrix/format.test.ts (5 tests) 57ms
✓ src/auto-reply/reply/directive-handling.model.test.ts (5 tests) 39ms
✓ src/browser/routes/dispatcher.abort.test.ts (1 test) 72ms
✓ src/discord/monitor/agent-components.test.ts (3 tests) 48ms
✓ extensions/voice-call/src/providers/plivo.test.ts (1 test) 41ms
✓ src/media-understanding/providers/openai/audio.test.ts (2 tests) 70ms
✓ src/telegram/probe.test.ts (5 tests) 21ms
✓ src/telegram/model-buttons.test.ts (28 tests) 13ms
✓ src/browser/profiles-service.test.ts (4 tests) 43ms
✓ src/discord/api.test.ts (3 tests) 107ms
✓ src/media/host.test.ts (3 tests) 24ms
✓ src/discord/targets.test.ts (11 tests) 12ms
✓ extensions/msteams/src/polls-store.test.ts (2 tests) 302ms
✓ src/channels/ack-reactions.test.ts (9 tests) 97ms
✓ extensions/tlon/src/urbit/sse-client.test.ts (1 test) 9ms
✓ src/channels/plugins/actions/telegram.test.ts (6 tests) 105ms
✓ src/telegram/reaction-level.test.ts (7 tests) 429ms
✓ src/config/slack-token-validation.test.ts (2 tests) 71ms
✓ src/infra/infra-parsing.test.ts (13 tests) 292ms
✓ src/cli/prompt.test.ts (2 tests) 47ms
✓ src/auto-reply/model.test.ts (21 tests) 126ms
✓ src/slack/monitor/slash.policy.test.ts (6 tests) 18ms
✓ src/cli/program.force.test.ts (6 tests) 175ms
✓ src/infra/update-check.test.ts (2 tests) 35ms
✓ extensions/matrix/src/matrix/monitor/rooms.test.ts (1 test) 71ms
✓ src/slack/threading-tool-context.test.ts (7 tests) 21ms
✓ src/telegram/bot/helpers.test.ts (24 tests) 27ms
✓ src/auto-reply/reply/model-selection.inherit-parent.test.ts (6 tests) 69ms
✓ src/line/probe.test.ts (2 tests) 25ms
✓ src/infra/exec-approval-forwarder.test.ts (5 tests) 11ms
✓ src/telegram/token.test.ts (6 tests) 31ms
✓ src/logging/logger.import-side-effects.test.ts (1 test) 72ms
✓ src/config/config.msteams.test.ts (2 tests) 27ms
✓ src/auto-reply/heartbeat.test.ts (20 tests) 56ms
✓ src/config/config.talk-voicealiases.test.ts (2 tests) 223ms
✓ src/config/config.tools-alsoAllow.test.ts (3 tests) 35ms
✓ src/macos/relay-smoke.test.ts (5 tests) 240ms
✓ src/channels/web/index.test.ts (1 test) 15ms
✓ extensions/tlon/src/urbit/send.test.ts (1 test) 354ms
✓ uses aura v3 helpers for the DM id 327ms
✓ src/config/config.telegram-custom-commands.test.ts (2 tests) 169ms
✓ src/browser/server-context.ensure-tab-available.prefers-last-target.test.ts (3 tests) 170ms
✓ src/memory/hybrid.test.ts (4 tests) 10ms
✓ src/slack/actions.read.test.ts (2 tests) 279ms
✓ src/docs/slash-commands-doc.test.ts (1 test) 112ms
✓ src/browser/config.test.ts (12 tests) 284ms
✓ src/routing/resolve-route.test.ts (29 tests) 67ms
✓ src/line/webhook.test.ts (5 tests) 776ms
✓ parses JSON from raw string body 407ms
✓ extensions/zalo/src/channel.directory.test.ts (1 test) 360ms
✓ src/cli/nodes-screen.test.ts (3 tests) 5ms
✓ src/tui/tui-event-handlers.test.ts (10 tests) 33ms
✓ src/infra/outbound/targets.test.ts (15 tests) 74ms
✓ src/providers/google-shared.preserves-parameters-type-is-missing.test.ts (9 tests) 350ms
✓ src/web/login-qr.test.ts (1 test) 49ms
✓ src/providers/github-copilot-token.test.ts (3 tests) 297ms
✓ src/config/channel-capabilities.test.ts (6 tests) 13ms
✓ src/agents/pi-embedded-runner/model.test.ts (14 tests) 59ms
✓ src/line/accounts.test.ts (14 tests) 54ms
✓ src/infra/outbound/outbound-session.test.ts (7 tests) 335ms
✓ src/auto-reply/reply/model-selection.override-respected.test.ts (4 tests) 160ms
✓ extensions/twitch/src/plugin.test.ts (1 test) 114ms
✓ extensions/irc/src/monitor.test.ts (3 tests) 7ms
✓ src/providers/qwen-portal-oauth.test.ts (3 tests) 31ms
✓ src/hooks/gmail.test.ts (8 tests) 11ms
✓ src/cron/service.rearm-timer-when-running.test.ts (1 test) 30ms
✓ src/infra/runtime-guard.test.ts (5 tests) 9ms
✓ src/infra/unhandled-rejections.test.ts (19 tests) 7ms
✓ src/line/reply-chunks.test.ts (3 tests) 17ms
✓ src/cli/hooks-cli.test.ts (3 tests) 15ms
✓ src/config/config.gateway-tools-config.test.ts (2 tests) 62ms
✓ src/channels/plugins/actions/signal.test.ts (9 tests) 113ms
✓ src/line/auto-reply-delivery.test.ts (3 tests) 16ms
✓ src/slack/targets.test.ts (6 tests) 16ms
✓ src/cli/profile.test.ts (19 tests) 11ms
✓ src/line/rich-menu.test.ts (20 tests) 115ms
✓ src/web/inbound/media.node.test.ts (9 tests) 9ms
✓ src/config/ui-seam-color.test.ts (3 tests) 60ms
✓ src/media/parse.test.ts (14 tests) 31ms
✓ src/telegram/targets.test.ts (11 tests) 6ms
✓ src/discord/monitor/presence-cache.test.ts (2 tests) 8ms
✓ src/tui/tui.submit-handler.test.ts (4 tests) 27ms
✓ src/daemon/constants.test.ts (35 tests) 17ms
✓ src/slack/monitor/channel-config.test.ts (5 tests) 8ms
✓ extensions/nextcloud-talk/src/policy.test.ts (3 tests) 48ms
✓ src/auto-reply/tool-meta.test.ts (6 tests) 12ms
✓ src/commands/models/list.list-command.forward-compat.test.ts (1 test) 8ms
✓ src/channels/plugins/directory-config.test.ts (4 tests) 10ms
✓ src/channels/plugins/outbound/telegram.test.ts (2 tests) 34ms
✓ src/signal/send-reactions.test.ts (3 tests) 12ms
✓ extensions/irc/src/config-schema.test.ts (2 tests) 108ms
✓ src/infra/tmp-openclaw-dir.test.ts (4 tests) 10ms
✓ src/agents/huggingface-models.test.ts (5 tests) 42ms
✓ src/infra/outbound/target-resolver.test.ts (2 tests) 6ms
✓ src/plugin-sdk/index.test.ts (1 test) 10ms
✓ src/logging/redact.test.ts (9 tests) 11ms
✓ src/config/config.web-search-provider.test.ts (1 test) 10ms
✓ src/daemon/program-args.test.ts (3 tests) 58ms
✓ src/telegram/bot-message-dispatch.test.ts (1 test) 102ms
✓ extensions/tlon/src/monitor/processed-messages.test.ts (1 test) 5ms
✓ src/cli/progress.test.ts (2 tests) 47ms
✓ src/channels/channel-config.test.ts (13 tests) 17ms
✓ src/slack/monitor.test.ts (15 tests) 25ms
✓ src/config/config.skills-entries-config.test.ts (2 tests) 11ms
✓ src/signal/monitor.test.ts (6 tests) 12ms
✓ src/browser/pw-role-snapshot.test.ts (7 tests) 57ms
✓ extensions/tlon/src/config-schema.test.ts (2 tests) 83ms
✓ extensions/googlechat/src/monitor.test.ts (4 tests) 8ms
✓ src/auto-reply/reply/history.test.ts (7 tests) 12ms
✓ src/auto-reply/reply/response-prefix-template.test.ts (27 tests) 64ms
✓ src/discord/monitor/allow-list.test.ts (12 tests) 184ms
✓ src/memory/embeddings-voyage.test.ts (4 tests) 11ms
✓ src/cron/delivery.test.ts (2 tests) 60ms
✓ src/plugins/wired-hooks-message.test.ts (4 tests) 11ms
✓ src/daemon/systemd.test.ts (10 tests) 14ms
✓ src/discord/gateway-logging.test.ts (3 tests) 41ms
✓ extensions/matrix/src/matrix/poll-types.test.ts (1 test) 6ms
✓ src/slack/threading.test.ts (5 tests) 60ms
✓ src/infra/system-presence.test.ts (2 tests) 8ms
✓ src/providers/google-shared.ensures-function-call-comes-after-user-turn.test.ts (2 tests) 17ms
✓ src/channels/plugins/outbound/whatsapp.test.ts (3 tests) 115ms
✓ src/process/spawn-utils.test.ts (2 tests) 11ms
✓ extensions/msteams/src/sent-message-cache.test.ts (1 test) 21ms
✓ src/channels/plugins/actions/discord/handle-action.test.ts (2 tests) 8ms
✓ src/commands/signal-install.test.ts (15 tests) 16ms
✓ extensions/feishu/src/targets.test.ts (3 tests) 5ms
✓ src/auto-reply/thinking.test.ts (15 tests) 8ms
✓ src/acp/session.test.ts (1 test) 8ms
✓ src/browser/target-id.test.ts (4 tests) 6ms
✓ src/channel-web.barrel.test.ts (1 test) 47ms
✓ src/whatsapp/normalize.test.ts (8 tests) 8ms
✓ src/auto-reply/reply/subagents-utils.test.ts (5 tests) 15ms
✓ src/cli/argv.test.ts (11 tests) 42ms
✓ src/auto-reply/reply/memory-flush.test.ts (11 tests) 8ms
✓ src/auto-reply/reply/commands-info.test.ts (1 test) 246ms
✓ src/security/secret-equal.test.ts (4 tests) 89ms
✓ extensions/zalouser/src/channel.test.ts (1 test) 13ms

Test Files 93 passed (93)
Tests 988 passed | 1 skipped (989)
Start at 17:08:24
Duration 528.87s (transform 122.57s, setup 875.08s, import 1065.43s, tests 13.37s, environment 294ms)

✓ src/tui/tui-formatters.test.ts (8 tests) 7ms
✓ src/cli/browser-cli.test.ts (3 tests) 12ms
✓ src/slack/http/registry.test.ts (5 tests) 337ms
✓ src/terminal/table.test.ts (5 tests) 12ms
✓ src/memory/backend-config.test.ts (6 tests) 8ms
✓ src/channels/typing.test.ts (3 tests) 7ms
✓ src/infra/outbound/payloads.test.ts (5 tests) 9ms
✓ src/wizard/onboarding.completion.test.ts (2 tests) 11ms
✓ src/tui/tui-session-actions.test.ts (1 test) 7ms
✓ src/wizard/session.test.ts (3 tests) 7ms
✓ src/web/inbound/access-control.pairing-history.test.ts (2 tests) 8ms
✓ src/tts/prepare-text.test.ts (5 tests) 6ms
✓ src/logging/console-timestamp.test.ts (4 tests) 11ms
✓ src/media-understanding/resolve.test.ts (6 tests) 25ms
✓ src/cli/run-main.test.ts (4 tests) 71ms
✓ src/slack/channel-migration.test.ts (4 tests) 8ms
✓ src/pairing/pairing-messages.test.ts (6 tests) 138ms
✓ src/telegram/draft-stream.test.ts (3 tests) 9ms
✓ src/discord/monitor/exec-approvals.test.ts (17 tests) 20ms
✓ src/telegram/proxy.test.ts (1 test) 137ms
✓ src/daemon/runtime-paths.test.ts (5 tests) 7ms
✓ src/tui/tui-local-shell.test.ts (1 test) 22ms
✓ src/polls.test.ts (3 tests) 13ms
✓ src/index.test.ts (6 tests) 35ms
✓ src/infra/outbound/outbound-policy.test.ts (4 tests) 7ms
✓ src/config/config.talk-api-key-fallback.test.ts (2 tests) 7ms
✓ src/tui/tui-overlays.test.ts (2 tests) 13ms
✓ src/telegram/network-errors.test.ts (11 tests) 16ms
✓ src/config/runtime-overrides.test.ts (4 tests) 28ms
✓ src/telegram/accounts.test.ts (4 tests) 10ms
✓ src/acp/session-mapper.test.ts (2 tests) 8ms
✓ src/slack/resolve-channels.test.ts (2 tests) 6ms
✓ src/infra/home-dir.test.ts (8 tests) 6ms
✓ src/cli/cron-cli/shared.test.ts (2 tests) 25ms
✓ src/media-understanding/runner.vision-skip.test.ts (1 test) 7ms
✓ src/channels/plugins/config-writes.test.ts (4 tests) 5ms
✓ src/cron/service.jobs.test.ts (3 tests) 11ms
✓ src/utils/transcript-tools.test.ts (7 tests) 16ms
✓ src/auto-reply/reply/reply-payloads.auto-threading.test.ts (6 tests) 7ms
✓ src/acp/event-mapper.test.ts (2 tests) 7ms
✓ src/utils/boolean.test.ts (4 tests) 7ms
✓ src/signal/probe.test.ts (2 tests) 524ms
✓ extracts version from {version} result 489ms
✓ src/utils/delivery-context.test.ts (5 tests) 18ms
✓ src/wizard/onboarding.gateway-config.test.ts (2 tests) 178ms
✓ src/cli/wait.test.ts (1 test) 10ms
✓ src/markdown/whatsapp.test.ts (13 tests) 67ms
✓ src/routing/session-key.test.ts (6 tests) 15ms
✓ src/infra/heartbeat-runner.cron-system-event-filter.test.ts (5 tests) 31ms
✓ src/web/accounts.test.ts (4 tests) 8ms
✓ src/channels/plugins/onboarding/signal.test.ts (6 tests) 18ms
✓ src/channels/location.test.ts (4 tests) 10ms
✓ src/infra/outbound/format.test.ts (7 tests) 14ms
✓ src/auto-reply/media-note.test.ts (11 tests) 15ms
✓ src/plugins/slots.test.ts (4 tests) 6ms
✓ src/plugins/wired-hooks-gateway.test.ts (3 tests) 12ms
✓ src/slack/client.test.ts (3 tests) 40ms
✓ src/discord/pluralkit.test.ts (3 tests) 8ms
✓ src/infra/env.test.ts (4 tests) 6ms
✓ src/agents/sandbox/fs-bridge.test.ts (1 test) 6ms
✓ src/cli/parse-bytes.test.ts (4 tests) 5ms
✓ src/terminal/restore.test.ts (1 test) 52ms
✓ src/agents/transcript-policy.test.ts (4 tests) 6ms
✓ src/telegram/draft-chunking.test.ts (3 tests) 6ms
✓ src/plugins/config-state.test.ts (7 tests) 158ms
✓ src/channels/registry.test.ts (4 tests) 402ms
✓ src/infra/outbound/envelope.test.ts (4 tests) 8ms
✓ src/channels/plugins/normalize/signal.test.ts (5 tests) 41ms
✓ src/utils/message-channel.test.ts (2 tests) 5ms
✓ src/infra/outbound/agent-delivery.test.ts (3 tests) 6ms
✓ src/tui/gateway-chat.test.ts (3 tests) 6ms
✓ src/discord/token.test.ts (3 tests) 6ms
✓ src/link-understanding/detect.test.ts (4 tests) 5ms
✓ src/line/send.test.ts (9 tests) 8ms
✓ src/channels/plugins/slack.actions.test.ts (1 test) 10ms
✓ src/cli/daemon-cli-compat.test.ts (2 tests) 44ms
✓ src/auto-reply/reply/mentions.test.ts (4 tests) 15ms
✓ src/browser/cdp.helpers.test.ts (4 tests) 37ms
✓ src/discord/probe.intents.test.ts (4 tests) 5ms
✓ src/utils/usage-format.test.ts (3 tests) 6ms
✓ src/channels/targets.test.ts (4 tests) 6ms
✓ src/daemon/paths.test.ts (6 tests) 9ms
✓ src/telegram/inline-buttons.test.ts (6 tests) 14ms
✓ src/telegram/voice.test.ts (3 tests) 30ms
✓ src/infra/agent-events.test.ts (3 tests) 6ms
✓ src/infra/widearea-dns.test.ts (2 tests) 9ms
✓ src/slack/monitor/thread-resolution.test.ts (1 test) 6ms
✓ src/config/sessions/reset.test.ts (4 tests) 77ms
✓ src/infra/fetch.test.ts (2 tests) 8ms
✓ src/logging/console-prefix.test.ts (5 tests) 76ms
✓ src/channels/sender-identity.test.ts (3 tests) 6ms
✓ src/media-understanding/format.test.ts (5 tests) 5ms
✓ src/auto-reply/reply/normalize-reply.test.ts (3 tests) 12ms
✓ src/daemon/systemd-availability.test.ts (2 tests) 5ms
✓ src/telegram/network-config.test.ts (5 tests) 20ms
✓ src/cli/nodes-canvas.test.ts (2 tests) 20ms
✓ src/config/commands.test.ts (2 tests) 80ms
✓ src/channels/plugins/normalize/imessage.test.ts (2 tests) 8ms
✓ src/channels/plugins/load.test.ts (2 tests) 7ms
✓ src/node-host/runner.test.ts (3 tests) 9ms
✓ src/cli/parse-duration.test.ts (6 tests) 6ms
✓ src/telegram/group-migration.test.ts (4 tests) 6ms
✓ src/channels/conversation-label.test.ts (5 tests) 6ms
✓ src/line/signature.test.ts (3 tests) 10ms
✓ src/cron/isolated-agent/session.test.ts (3 tests) 9ms
✓ src/signal/daemon.test.ts (4 tests) 5ms
✓ src/plugins/source-display.test.ts (3 tests) 5ms
✓ src/channels/mention-gating.test.ts (5 tests) 5ms
✓ src/infra/tls/fingerprint.test.ts (1 test) 6ms
✓ src/config/config-paths.test.ts (2 tests) 5ms
✓ src/tui/tui-stream-assembler.test.ts (4 tests) 7ms
✓ src/imessage/probe.test.ts (1 test) 6ms
✓ src/telegram/bot-message.test.ts (2 tests) 13ms
✓ src/browser/routes/utils.test.ts (3 tests) 5ms
✓ src/media-understanding/scope.test.ts (2 tests) 4ms
✓ src/telegram/sent-message-cache.test.ts (3 tests) 32ms
✓ src/channels/plugins/index.test.ts (1 test) 38ms
✓ src/tui/tui.test.ts (2 tests) 62ms
✓ src/daemon/systemd-unit.test.ts (3 tests) 24ms
✓ src/channels/chat-type.test.ts (3 tests) 7ms
✓ src/sessions/send-policy.test.ts (4 tests) 5ms
✓ src/signal/monitor/mentions.test.ts (3 tests) 6ms
✓ src/logging/parse-log-line.test.ts (3 tests) 7ms
✓ src/tui/tui-waiting.test.ts (2 tests) 11ms
✓ src/hooks/gmail-watcher.test.ts (1 test) 4ms

Test Files 613 passed (613)
Tests 4297 passed (4297)
Start at 17:08:24
Duration 615.17s (transform 296.65s, setup 6068.82s, import 2429.04s, tests 234.66s, environment 557ms)

Thanks @omair445!

@steipete
Copy link
Contributor

Landed via synced main + squash merge.

  • Gate:

[email protected] check /Users/steipete/Projects/clawdbot7/.worktrees/pr-13767
pnpm format:check && pnpm tsgo && pnpm lint

[email protected] format:check /Users/steipete/Projects/clawdbot7/.worktrees/pr-13767
oxfmt --check

Checking formatting...

All matched files use the correct format.
Finished in 11080ms on 4286 files using 16 threads.

[email protected] lint /Users/steipete/Projects/clawdbot7/.worktrees/pr-13767
oxlint --type-aware

Found 0 warnings and 0 errors.
Finished in 22.4s on 2908 files using 16 threads.

[email protected] build /Users/steipete/Projects/clawdbot7/.worktrees/pr-13767
pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts

[email protected] canvas:a2ui:bundle /Users/steipete/Projects/clawdbot7/.worktrees/pr-13767
bash scripts/bundle-a2ui.sh

A2UI bundle up to date; skipping.
ℹ tsdown v0.20.3 powered by rolldown v1.0.0-rc.3
ℹ config file: /Users/steipete/Projects/clawdbot7/.worktrees/pr-13767/tsdown.config.ts
ℹ entry: src/index.ts
ℹ target: node22.12.0
ℹ tsconfig: tsconfig.json
ℹ entry: src/entry.ts
ℹ target: node22.12.0
ℹ tsconfig: tsconfig.json
ℹ entry: src/extensionAPI.ts
ℹ target: node22.12.0
ℹ tsconfig: tsconfig.json
ℹ entry: src/infra/warning-filter.ts
ℹ target: node22.12.0
ℹ tsconfig: tsconfig.json
ℹ entry: src/plugin-sdk/index.ts
ℹ target: node22.12.0
ℹ tsconfig: tsconfig.json
ℹ entry: src/hooks/llm-slug-generator.ts, src/hooks/bundled/command-logger/handler.ts, src/hooks/bundled/boot-md/handler.ts, src/hooks/bundled/session-memory/handler.ts
ℹ target: node22.12.0
ℹ tsconfig: tsconfig.json
ℹ Build start
ℹ Cleaning 1544 files
ℹ dist/warning-filter.js 1.74 kB │ gzip: 0.64 kB
ℹ 1 files, total: 1.74 kB
✔ Build complete in 1322ms
ℹ dist/plugin-sdk/index.js 876.28 kB │ gzip: 192.05 kB
ℹ dist/plugin-sdk/pi-model-discovery-Dw3A6oXH.js 1.12 kB │ gzip: 0.52 kB
ℹ 2 files, total: 877.40 kB
✔ Build complete in 2395ms
ℹ dist/extensionAPI.js 2415.04 kB
ℹ dist/pi-embedded-helpers-at-4mzm_.js 329.28 kB │ gzip: 73.68 kB
ℹ dist/config-DvFfi1VN.js 212.02 kB │ gzip: 41.96 kB
ℹ dist/manager-C8QNk2H0.js 119.34 kB │ gzip: 24.94 kB
ℹ dist/model-selection-DZp81OUN.js 104.99 kB │ gzip: 23.12 kB
ℹ dist/deliver-DajKPJqS.js 87.08 kB │ gzip: 21.60 kB
ℹ dist/chrome-DL0avO8n.js 63.35 kB │ gzip: 16.31 kB
ℹ dist/pw-ai-r-MhIk86.js 61.51 kB │ gzip: 14.36 kB
ℹ dist/runner-DlE4hvKz.js 60.60 kB │ gzip: 13.98 kB
ℹ dist/image-Eg-BUImK.js 38.61 kB │ gzip: 10.12 kB
ℹ dist/exec-CJFFoM7H.js 38.59 kB │ gzip: 11.45 kB
ℹ dist/qmd-manager-BXSY3Ws1.js 25.32 kB │ gzip: 7.17 kB
ℹ dist/agent-scope-CSGOYQwR.js 23.34 kB │ gzip: 5.57 kB
ℹ dist/login-qr-DzmPob1b.js 16.70 kB │ gzip: 5.50 kB
ℹ dist/sqlite-gsL4_9Ep.js 11.89 kB │ gzip: 3.79 kB
ℹ dist/fetch-timeout-Mk19YXJl.js 9.08 kB │ gzip: 3.12 kB
ℹ dist/paths-rb94mUrR.js 8.32 kB │ gzip: 2.25 kB
ℹ dist/github-copilot-token-wCk9Fg_E.js 3.97 kB │ gzip: 1.54 kB
ℹ dist/paths--d6CtDXS.js 3.90 kB │ gzip: 1.18 kB
ℹ dist/redact-BIMJ3ntQ.js 3.51 kB │ gzip: 1.38 kB
ℹ dist/pi-auth-json-B15Oq33G.js 2.67 kB │ gzip: 1.09 kB
ℹ dist/audio-preflight-DnE3uCnS.js 2.50 kB │ gzip: 1.07 kB
ℹ dist/command-format-CFzL448l.js 1.93 kB │ gzip: 0.74 kB
ℹ dist/errors-dpUbQseI.js 1.09 kB │ gzip: 0.47 kB
ℹ dist/pi-model-discovery-EhM2JAQo.js 0.84 kB │ gzip: 0.37 kB
ℹ dist/transcript-events-BrkSiEN9.js 0.59 kB │ gzip: 0.29 kB
ℹ dist/rolldown-runtime-Cbj13DAv.js 0.42 kB │ gzip: 0.28 kB
ℹ 27 files, total: 3646.50 kB
✔ Build complete in 2568ms
ℹ Granting execute permission to dist/entry.js
ℹ Granting execute permission to dist/index.js
ℹ dist/bundled/boot-md/handler.js 32.32 kB │ gzip: 8.35 kB
ℹ dist/bundled/session-memory/handler.js 5.88 kB │ gzip: 2.22 kB
ℹ dist/llm-slug-generator.js 2.58 kB │ gzip: 1.20 kB
ℹ dist/bundled/command-logger/handler.js 1.52 kB │ gzip: 0.75 kB
ℹ dist/pi-embedded-DToI5Plo.js 2415.59 kB
ℹ dist/pi-embedded-helpers-CTGElePM.js 329.36 kB │ gzip: 73.73 kB
ℹ dist/config-CVPNq4aC.js 212.06 kB │ gzip: 41.97 kB
ℹ dist/manager-Dx7B7fto.js 119.32 kB │ gzip: 24.93 kB
ℹ dist/model-auth-ROB08Hba.js 104.99 kB │ gzip: 23.41 kB
ℹ dist/deliver-BStnBZAX.js 88.28 kB │ gzip: 21.79 kB
ℹ dist/chrome-BfB6JdKF.js 63.36 kB │ gzip: 16.30 kB
ℹ dist/pw-ai-CFgSESWX.js 61.51 kB │ gzip: 14.36 kB
ℹ dist/runner-DYG_Jfjl.js 60.57 kB │ gzip: 13.98 kB
ℹ dist/exec-B8lXct-k.js 38.65 kB │ gzip: 11.46 kB
ℹ dist/image-BYd0qKjp.js 38.61 kB │ gzip: 10.12 kB
ℹ dist/qmd-manager-BHf6j1MD.js 25.32 kB │ gzip: 7.17 kB
ℹ dist/agent-scope-DFsG0UHu.js 23.32 kB │ gzip: 5.57 kB
ℹ dist/login-qr-CXdGurI1.js 16.70 kB │ gzip: 5.50 kB
ℹ dist/sqlite-B0K_lfzU.js 11.87 kB │ gzip: 3.78 kB
ℹ dist/fetch-timeout-Dy0soQIG.js 9.08 kB │ gzip: 3.12 kB
ℹ dist/paths-BZtyHNCi.js 8.32 kB │ gzip: 2.25 kB
ℹ dist/github-copilot-token-DkiRbJdR.js 3.97 kB │ gzip: 1.55 kB
ℹ dist/paths-BZJaxR6t.js 3.90 kB │ gzip: 1.17 kB
ℹ dist/redact-BrXLgslJ.js 3.51 kB │ gzip: 1.38 kB
ℹ dist/pi-auth-json-DrH_ggba.js 2.66 kB │ gzip: 1.09 kB
ℹ dist/audio-preflight-CAF0wiJ0.js 2.50 kB │ gzip: 1.06 kB
ℹ dist/command-format-qUVxzqYm.js 1.93 kB │ gzip: 0.74 kB
ℹ dist/errors-B91HIDPD.js 1.09 kB │ gzip: 0.47 kB
ℹ dist/pi-model-discovery-DqgqUyAv.js 0.84 kB │ gzip: 0.37 kB
ℹ dist/transcript-events-BHS7QoRl.js 0.59 kB │ gzip: 0.29 kB
ℹ dist/rolldown-runtime-Cbj13DAv.js 0.42 kB │ gzip: 0.28 kB
ℹ 31 files, total: 3690.65 kB
✔ Build complete in 3010ms
ℹ dist/entry.js 50.15 kB │ gzip: 13.80 kB
ℹ dist/loader-CPiFepil.js 2306.47 kB
ℹ dist/gateway-cli-e7398FF5.js 688.78 kB │ gzip: 160.21 kB
ℹ dist/config-guard-DBvHu0eU.js 234.65 kB │ gzip: 50.73 kB
ℹ dist/config-4GE0d-SQ.js 188.19 kB │ gzip: 36.42 kB
ℹ dist/onboard-skills-BtQ56ug5.js 152.25 kB │ gzip: 32.51 kB
ℹ dist/sandbox-BBq6oNI9.js 129.50 kB │ gzip: 29.50 kB
ℹ dist/status-j3AE7HXQ.js 121.11 kB │ gzip: 31.33 kB
ℹ dist/manager-B8EqZeyx.js 119.33 kB │ gzip: 24.94 kB
ℹ dist/auth-profiles-9yKLbl0n.js 115.63 kB │ gzip: 25.51 kB
ℹ dist/doctor-DcFN8ViB.js 101.32 kB │ gzip: 25.69 kB
ℹ dist/models-cli-7Vu0Daxx.js 98.47 kB │ gzip: 22.28 kB
ℹ dist/audit-C3jfnFT5.js 93.91 kB │ gzip: 22.66 kB
ℹ dist/deliver-Cq4Ojy6f.js 88.47 kB │ gzip: 21.80 kB
ℹ dist/tui-CpAcP4QD.js 88.14 kB │ gzip: 20.70 kB
ℹ dist/routes-CV1Wrx3q.js 80.02 kB │ gzip: 15.95 kB
ℹ dist/client-DIOEZN6D.js 70.33 kB │ gzip: 12.51 kB
ℹ dist/runner-OSLdyQIU.js 63.87 kB │ gzip: 14.89 kB
ℹ dist/pw-ai-CjS8oJut.js 61.53 kB │ gzip: 14.37 kB
ℹ dist/chrome-CIC9dZMq.js 60.97 kB │ gzip: 15.49 kB
ℹ dist/health-format-CGM4qyXX.js 55.89 kB │ gzip: 13.52 kB
ℹ dist/channels-cli-7AupEmrL.js 55.60 kB │ gzip: 14.06 kB
ℹ dist/github-copilot-auth-BUiM2mEL.js 52.12 kB │ gzip: 9.26 kB
ℹ dist/nodes-cli-BSsfLqwY.js 51.96 kB │ gzip: 11.21 kB
ℹ dist/node-cli-B-WXfITy.js 49.28 kB │ gzip: 12.46 kB
ℹ dist/pi-embedded-helpers-BRHwDHeW.js 47.93 kB │ gzip: 12.51 kB
ℹ dist/update-runner-oa4kbUMx.js 42.28 kB │ gzip: 9.32 kB
ℹ dist/update-cli-CyfR4TSm.js 39.21 kB │ gzip: 11.08 kB
ℹ dist/hooks-cli-ByU0xv7_.js 35.67 kB │ gzip: 8.18 kB
ℹ dist/acp-cli-CFtMxUU8.js 32.65 kB │ gzip: 8.83 kB
ℹ dist/exec-approvals-C67V-ljH.js 31.32 kB │ gzip: 7.11 kB
ℹ dist/skills-kuVO0__j.js 31.26 kB │ gzip: 8.05 kB
ℹ dist/daemon-cli-C4D5-Bs8.js 31.20 kB │ gzip: 7.48 kB
ℹ dist/configure-DlCLYSy6.js 30.54 kB │ gzip: 8.00 kB
ℹ dist/agent-1SEYxDVU.js 29.15 kB │ gzip: 7.31 kB
ℹ dist/server-context-BQDzlBct.js 27.69 kB │ gzip: 7.19 kB
ℹ dist/plugins-cli-B2W_EFtF.js 26.19 kB │ gzip: 6.99 kB
ℹ dist/session-cost-usage-B-tyjp76.js 26.00 kB │ gzip: 6.08 kB
ℹ dist/commands-registry-1oEstzZ0.js 25.43 kB │ gzip: 5.86 kB
ℹ dist/qmd-manager-CeyOLIcV.js 25.38 kB │ gzip: 7.20 kB
ℹ dist/cron-cli-BYyX61Lc.js 23.40 kB │ gzip: 5.79 kB
ℹ dist/service-V0L-uhoP.js 23.28 kB │ gzip: 5.58 kB
ℹ dist/onboard-channels-BwIU9d_8.js 23.01 kB │ gzip: 5.86 kB
ℹ dist/image-IY7liBv2.js 22.39 kB │ gzip: 6.58 kB
ℹ dist/sandbox-cli-BTjEJ6jN.js 21.65 kB │ gzip: 5.53 kB
ℹ dist/manifest-registry-CVsqjgX0.js 21.35 kB │ gzip: 5.28 kB
ℹ dist/auth-SPwSKVh3.js 20.01 kB │ gzip: 5.71 kB
ℹ dist/service-audit-EWyvQGsf.js 18.65 kB │ gzip: 4.84 kB
ℹ dist/daemon-runtime-BRh7moSd.js 18.23 kB │ gzip: 5.08 kB
ℹ dist/plugins-Dljp885j.js 17.93 kB │ gzip: 3.93 kB
ℹ dist/plugin-auto-enable-nuKWxdyy.js 16.82 kB │ gzip: 4.33 kB
ℹ dist/login-qr-5CxRn0eM.js 16.81 kB │ gzip: 5.52 kB
ℹ dist/completion-cli-D_FtE9-T.js 16.59 kB │ gzip: 4.40 kB
ℹ dist/tool-display-DbdMQFZx.js 16.39 kB │ gzip: 3.81 kB
ℹ dist/security-cli-OjmD6j-d.js 16.17 kB │ gzip: 4.61 kB
ℹ dist/hooks-status-DAKVD8Qf.js 16.06 kB │ gzip: 4.23 kB
ℹ dist/gmail-setup-utils-DBRHaokR.js 15.37 kB │ gzip: 4.45 kB
ℹ dist/webhooks-cli-COodbXQQ.js 14.46 kB │ gzip: 3.94 kB
ℹ dist/systemd-BC6vxBKJ.js 14.34 kB │ gzip: 4.11 kB
ℹ dist/installs-lNo08jC-.js 14.08 kB │ gzip: 3.50 kB
ℹ dist/agent-scope-6FYfZhnL.js 13.89 kB │ gzip: 3.68 kB
ℹ dist/exec-approvals-cli-TYPGI269.js 13.75 kB │ gzip: 3.42 kB
ℹ dist/pairing-store-D3TpRftC.js 11.97 kB │ gzip: 3.13 kB
ℹ dist/skills-cli-BTS9nncZ.js 11.83 kB │ gzip: 2.92 kB
ℹ dist/ws-log-WrJ4QYu7.js 11.82 kB │ gzip: 2.84 kB
ℹ dist/call-CoZ00Gnw.js 11.43 kB │ gzip: 3.43 kB
ℹ dist/register.subclis-BVmE7wuh.js 10.61 kB │ gzip: 2.90 kB
ℹ dist/sqlite-2UsPaJz5.js 10.24 kB │ gzip: 3.33 kB
ℹ dist/logs-cli-C8Fn-n5L.js 9.16 kB │ gzip: 3.07 kB
ℹ dist/fetch-timeout-CTdPvvr6.js 9.06 kB │ gzip: 3.11 kB
ℹ dist/accounts-Bvh0DFxS.js 8.89 kB │ gzip: 2.59 kB
ℹ dist/commands-GorakYvZ.js 8.81 kB │ gzip: 2.44 kB
ℹ dist/update-D7xPDpN3.js 8.71 kB │ gzip: 2.20 kB
ℹ dist/table-Bvka_vkc.js 8.47 kB │ gzip: 2.74 kB
ℹ dist/utils-BLJAc3ZV.js 8.28 kB │ gzip: 3.02 kB
ℹ dist/program-MjHMjZx4.js 8.25 kB │ gzip: 3.29 kB
ℹ dist/session-key-DVvxnFKg.js 7.90 kB │ gzip: 1.92 kB
ℹ dist/server-node-events-DSKERyfB.js 7.86 kB │ gzip: 2.26 kB
ℹ dist/directory-cli-DuaXlvIZ.js 7.79 kB │ gzip: 1.86 kB
ℹ dist/dns-cli-ik8UkqX7.js 7.68 kB │ gzip: 2.83 kB
ℹ dist/skill-scanner-BrGkh5K7.js 7.60 kB │ gzip: 2.53 kB
ℹ dist/skills-status-CW20aMse.js 7.40 kB │ gzip: 2.28 kB
ℹ dist/exec-CACT5OAW.js 7.15 kB │ gzip: 2.37 kB
ℹ dist/run-main-K0tyz3yf.js 7.03 kB │ gzip: 2.76 kB
ℹ dist/devices-cli-0H-pswyN.js 6.97 kB │ gzip: 2.06 kB
ℹ dist/nodes-screen-CVL9363A.js 6.71 kB │ gzip: 1.87 kB
ℹ dist/system-cli-7JZar5qZ.js 6.27 kB │ gzip: 1.97 kB
ℹ dist/ws-DUQa1zLi.js 5.82 kB │ gzip: 2.00 kB
ℹ dist/shared-B0cQV7by.js 5.81 kB │ gzip: 2.08 kB
ℹ dist/docs-cli-DcCXx2Oh.js 5.47 kB │ gzip: 1.97 kB
ℹ dist/pairing-cli-Cj_Uk_Jw.js 5.09 kB │ gzip: 1.87 kB
ℹ dist/widearea-dns-C4RnIR9O.js 5.04 kB │ gzip: 1.91 kB
ℹ dist/auth-health-Ba_KnFOh.js 4.93 kB │ gzip: 1.50 kB
ℹ dist/message-channel-DWcu72r7.js 4.29 kB │ gzip: 1.26 kB
ℹ dist/paths-BZK4Ct0I.js 4.16 kB │ gzip: 1.19 kB
ℹ dist/progress-COHv-uNT.js 4.14 kB │ gzip: 1.37 kB
ℹ dist/wsl-s2WQxR0a.js 3.98 kB │ gzip: 1.58 kB
ℹ dist/github-copilot-token-Cfs0Wxr8.js 3.96 kB │ gzip: 1.54 kB
ℹ dist/rpc-C-9Ty2k.js 3.84 kB │ gzip: 1.62 kB
ℹ dist/redact-UvkXqguc.js 3.62 kB │ gzip: 1.41 kB
ℹ dist/shared-Ch3NrTMb.js 3.20 kB │ gzip: 1.16 kB
ℹ dist/systemd-linger-Bniq-3Zb.js 3.19 kB │ gzip: 1.01 kB
ℹ dist/cli-DqXq1Eow.js 3.15 kB │ gzip: 1.34 kB
ℹ dist/ports-CS82sy58.js 3.14 kB │ gzip: 1.12 kB
ℹ dist/archive-aSMUcOc6.js 3.00 kB │ gzip: 1.16 kB
ℹ dist/openclaw-root-BKsZvO6K.js 2.94 kB │ gzip: 0.83 kB
ℹ dist/constants-BvQ6S8j5.js 2.88 kB │ gzip: 0.79 kB
ℹ dist/audio-preflight-Cx8E6qRw.js 2.87 kB │ gzip: 1.23 kB
ℹ dist/path-env-OJAyUeWW.js 2.83 kB │ gzip: 1.09 kB
ℹ dist/control-service-BLiXJdmq.js 2.76 kB │ gzip: 1.05 kB
ℹ dist/tui-cli-pbGsgM4Q.js 2.71 kB │ gzip: 1.26 kB
ℹ dist/clack-prompter-DpuKn_Uy.js 2.60 kB │ gzip: 0.84 kB
ℹ dist/note-Duiadw1g.js 2.45 kB │ gzip: 0.89 kB
ℹ dist/format-duration--hQihAvf.js 2.42 kB │ gzip: 0.91 kB
ℹ dist/format-relative-Cywx6ldk.js 2.13 kB │ gzip: 0.86 kB
ℹ dist/node-service-BeQ546ji.js 2.09 kB │ gzip: 0.62 kB
ℹ dist/channel-selection-s9Rn8Vnb.js 2.06 kB │ gzip: 0.73 kB
ℹ dist/control-auth-BO9GW9NO.js 1.89 kB │ gzip: 0.71 kB
ℹ dist/brew-DlQQMJ3n.js 1.65 kB │ gzip: 0.58 kB
ℹ dist/command-format-Bxe0mWee.js 1.58 kB │ gzip: 0.63 kB
ℹ dist/usage-format-Bhl_WCWP.js 1.50 kB │ gzip: 0.59 kB
ℹ dist/command-options-B3hxLHtX.js 1.35 kB │ gzip: 0.58 kB
ℹ dist/errors-Cojm0Kl7.js 1.25 kB │ gzip: 0.53 kB
ℹ dist/parse-log-line-CfVgwy6x.js 1.23 kB │ gzip: 0.52 kB
ℹ dist/tailnet-uoFvUSsw.js 1.21 kB │ gzip: 0.55 kB
ℹ dist/channel-options-DI_7VFRV.js 1.18 kB │ gzip: 0.56 kB
ℹ dist/gateway-rpc-cLtEXC7f.js 1.17 kB │ gzip: 0.62 kB
ℹ dist/systemd-hints-BVLopJ9O.js 1.11 kB │ gzip: 0.55 kB
ℹ dist/is-main-B9A8S9YC.js 1.00 kB │ gzip: 0.39 kB
ℹ dist/status-BZK9Fzls.js 0.96 kB │ gzip: 0.43 kB
ℹ dist/cli-utils-CodyYLHe.js 0.86 kB │ gzip: 0.42 kB
ℹ dist/pi-model-discovery-EhM2JAQo.js 0.84 kB │ gzip: 0.37 kB
ℹ dist/status-DCkF_L3U.js 0.82 kB │ gzip: 0.35 kB
ℹ dist/deps-Cehci0yx.js 0.81 kB │ gzip: 0.31 kB
ℹ dist/helpers-CUVSCDJV.js 0.79 kB │ gzip: 0.39 kB
ℹ dist/format-CL8VOhxX.js 0.76 kB │ gzip: 0.39 kB
ℹ dist/parse-Bw0oH-rT.js 0.70 kB │ gzip: 0.36 kB
ℹ dist/help-format-Cd5PLwXe.js 0.66 kB │ gzip: 0.29 kB
ℹ dist/transcript-events-Ch7wLX-j.js 0.59 kB │ gzip: 0.29 kB
ℹ dist/channels-status-issues-BqYwNuuC.js 0.55 kB │ gzip: 0.30 kB
ℹ dist/links-DpxpaKe1.js 0.49 kB │ gzip: 0.31 kB
ℹ dist/logging-B3KnAryz.js 0.49 kB │ gzip: 0.29 kB
ℹ dist/parse-timeout-D1XX_zN
.js 0.46 kB │ gzip: 0.26 kB
ℹ dist/prompt-style-Cf1r1L6k.js 0.44 kB │ gzip: 0.23 kB
ℹ dist/rolldown-runtime-Cbj13DAv.js 0.42 kB │ gzip: 0.28 kB
ℹ dist/helpers-ByYj2Aq5.js 0.41 kB │ gzip: 0.26 kB
ℹ dist/pi-auth-json-YKdqYMd-.js 0.30 kB │ gzip: 0.20 kB
ℹ dist/pairing-labels-DgJXwefW.js 0.26 kB │ gzip: 0.18 kB
ℹ dist/prompts-Dszjy1n_.js 0.24 kB │ gzip: 0.17 kB
ℹ dist/logging-D-Jq2wIo.js 0.01 kB │ gzip: 0.03 kB
ℹ 150 files, total: 6406.86 kB
✔ Build complete in 4347ms
ℹ dist/index.js 242.61 kB │ gzip: 53.62 kB
ℹ dist/reply-Zh-SQa_T.js 2306.61 kB
ℹ dist/gateway-cli-BwfM5lSJ.js 688.82 kB │ gzip: 160.21 kB
ℹ dist/config-CW_jZ4gq.js 188.23 kB │ gzip: 36.43 kB
ℹ dist/onboard-skills-DS7oCGmy.js 152.25 kB │ gzip: 32.34 kB
ℹ dist/sandbox-Cmdv1mV5.js 129.57 kB │ gzip: 29.72 kB
ℹ dist/onboarding-BhpcoIze.js 124.17 kB │ gzip: 32.23 kB
ℹ dist/manager-DzWLvVO5.js 119.42 kB │ gzip: 24.96 kB
ℹ dist/model-selection-CVSSouq3.js 115.71 kB │ gzip: 25.17 kB
ℹ dist/doctor-DArFK6Jn.js 101.43 kB │ gzip: 25.74 kB
ℹ dist/models-cli-BrSpJbOq.js 98.58 kB │ gzip: 22.33 kB
ℹ dist/audit-BFWFZh3F.js 93.92 kB │ gzip: 22.67 kB
ℹ dist/deliver-Cri9HjC6.js 88.47 kB │ gzip: 21.79 kB
ℹ dist/tui-CIFRY2m8.js 88.19 kB │ gzip: 20.72 kB
ℹ dist/routes-enHxN6An.js 80.07 kB │ gzip: 15.82 kB
ℹ dist/client-D7rFeZmq.js 70.34 kB │ gzip: 12.52 kB
ℹ dist/runner-C8CQTLmD.js 63.87 kB │ gzip: 14.93 kB
ℹ dist/chrome-Cvr-57lg.js 62.18 kB │ gzip: 15.91 kB
ℹ dist/pw-ai-BnhzLkYs.js 61.58 kB │ gzip: 14.40 kB
ℹ dist/health-format-DtdgYGZ7.js 55.94 kB │ gzip: 13.54 kB
ℹ dist/channels-cli-BeKDflrm.js 55.66 kB │ gzip: 14.10 kB
ℹ dist/github-copilot-auth-BR73jnO1.js 52.13 kB │ gzip: 9.28 kB
ℹ dist/nodes-cli-DcFKzN4Z.js 52.07 kB │ gzip: 11.26 kB
ℹ dist/node-cli-yIlsAzAp.js 49.40 kB │ gzip: 12.50 kB
ℹ dist/pi-embedded-helpers-IJvPeVEl.js 47.94 kB │ gzip: 12.52 kB
ℹ dist/update-runner-D_fl3rrG.js 42.27 kB │ gzip: 9.31 kB
ℹ dist/update-cli-Br5gHRB-.js 39.29 kB │ gzip: 11.13 kB
ℹ dist/hooks-cli-BoRRxHoV.js 35.78 kB │ gzip: 8.24 kB
ℹ dist/acp-cli-DkY2LF8q.js 32.76 kB │ gzip: 8.88 kB
ℹ dist/exec-approvals-Bqk-tIxY.js 31.32 kB │ gzip: 7.11 kB
ℹ dist/skills-BsrJVglo.js 31.32 kB │ gzip: 8.07 kB
ℹ dist/daemon-cli-BlLJgBdX.js 31.26 kB │ gzip: 7.50 kB
ℹ dist/configure-BpSsbZkd.js 30.60 kB │ gzip: 8.03 kB
ℹ dist/subsystem-BoExtIHo.js 30.24 kB │ gzip: 8.65 kB
ℹ dist/agent-Cq0s2qwc.js 29.16 kB │ gzip: 7.31 kB
ℹ dist/server-context-DmcefnRa.js 27.70 kB │ gzip: 7.21 kB
ℹ dist/completion-cli-QRrWMgg3.js 26.72 kB │ gzip: 6.82 kB
ℹ dist/plugins-cli-ByuYf1C6.js 26.31 kB │ gzip: 7.04 kB
ℹ dist/session-cost-usage-BYUb7fov.js 26.00 kB │ gzip: 6.08 kB
ℹ dist/commands-registry-BJvbQSMx.js 25.45 kB │ gzip: 5.87 kB
ℹ dist/qmd-manager-CDbM3i7l.js 25.43 kB │ gzip: 7.22 kB
ℹ dist/cron-cli-BzumD68S.js 23.50 kB │ gzip: 5.83 kB
ℹ dist/service--nPk7DvT.js 23.30 kB │ gzip: 5.59 kB
ℹ dist/onboard-channels-wa1o7Eay.js 23.02 kB │ gzip: 5.87 kB
ℹ dist/image-DOZOWYKL.js 22.39 kB │ gzip: 6.58 kB
ℹ dist/sandbox-cli-BchQkxvK.js 21.75 kB │ gzip: 5.57 kB
ℹ dist/manifest-registry-CQhdnDBZ.js 21.35 kB │ gzip: 5.27 kB
ℹ dist/auth-BPLQulWW.js 20.33 kB │ gzip: 5.83 kB
ℹ dist/service-audit-3JOjKOgg.js 18.65 kB │ gzip: 4.84 kB
ℹ dist/daemon-runtime-C1hkWcAE.js 18.24 kB │ gzip: 5.11 kB
ℹ dist/plugins-BlB_-Jnm.js 17.98 kB │ gzip: 3.96 kB
ℹ dist/plugin-auto-enable-CNyFPThN.js 16.83 kB │ gzip: 4.34 kB
ℹ dist/login-qr-BZ8AYyXm.js 16.82 kB │ gzip: 5.54 kB
ℹ dist/tool-display-CZRIDMRm.js 16.39 kB │ gzip: 3.81 kB
ℹ dist/security-cli-CRrNJq0e.js 16.29 kB │ gzip: 4.67 kB
ℹ dist/hooks-status-X9nl66RK.js 16.07 kB │ gzip: 4.23 kB
ℹ dist/gmail-setup-utils-ChDQ0AlG.js 15.38 kB │ gzip: 4.45 kB
ℹ dist/webhooks-cli-Z_WpwAVJ.js 14.57 kB │ gzip: 3.99 kB
ℹ dist/systemd-DrmBtJ5T.js 14.35 kB │ gzip: 4.12 kB
ℹ dist/installs-DscWb9b9.js 14.08 kB │ gzip: 3.50 kB
ℹ dist/agent-scope-Eyr6qR85.js 13.90 kB │ gzip: 3.68 kB
ℹ dist/exec-approvals-cli-Cl2CSUcQ.js 13.85 kB │ gzip: 3.46 kB
ℹ dist/pairing-store-Fk5pBYAZ.js 11.98 kB │ gzip: 3.13 kB
ℹ dist/skills-cli-Ddsz1OCN.js 11.94 kB │ gzip: 2.98 kB
ℹ dist/sqlite-D3kSF_Z3.js 11.90 kB │ gzip: 3.79 kB
ℹ dist/ws-log-DN1vJKoH.js 11.83 kB │ gzip: 2.85 kB
ℹ dist/call-CAlUAD6t.js 11.44 kB │ gzip: 3.44 kB
ℹ dist/logs-cli-BWoPB_9B.js 9.26 kB │ gzip: 3.11 kB
ℹ dist/paths-DVBShlw6.js 9.12 kB │ gzip: 2.47 kB
ℹ dist/fetch-CQ-hrPks.js 9.06 kB │ gzip: 3.11 kB
ℹ dist/accounts-nBF7HiCR.js 8.94 kB │ gzip: 2.61 kB
ℹ dist/pi-tools.policy-DZl6y-bx.js 8.81 kB │ gzip: 2.44 kB
ℹ dist/update-C-R4f4yL.js 8.71 kB │ gzip: 2.20 kB
ℹ dist/table-B8dx3v4v.js 8.48 kB │ gzip: 2.75 kB
ℹ dist/utils-Cd9QdCHh.js 8.45 kB │ gzip: 3.11 kB
ℹ dist/server-node-events-DmD5oVwS.js 7.97 kB │ gzip: 2.31 kB
ℹ dist/directory-cli-BCu_7T9G.js 7.90 kB │ gzip: 1.92 kB
ℹ dist/session-key-BWxPj0z_.js 7.90 kB │ gzip: 1.92 kB
ℹ dist/dns-cli-DmhK9tmX.js 7.79 kB │ gzip: 2.88 kB
ℹ dist/skill-scanner-CucvxYhu.js 7.60 kB │ gzip: 2.53 kB
ℹ dist/skills-status-CMv_bxYe.js 7.42 kB │ gzip: 2.29 kB
ℹ dist/exec-YIosokWE.js 7.16 kB │ gzip: 2.38 kB
ℹ dist/devices-cli-BnCpNIe8.js 7.07 kB │ gzip: 2.12 kB
ℹ dist/nodes-screen-DsHJIN2I.js 6.71 kB │ gzip: 1.87 kB
ℹ dist/system-cli-xaIeW0Ul.js 6.38 kB │ gzip: 2.03 kB
ℹ dist/shared-BeNmeqBN.js 5.82 kB │ gzip: 2.09 kB
ℹ dist/ws-CHCQHs0F.js 5.82 kB │ gzip: 2.00 kB
ℹ dist/docs-cli-CLrhl3ce.js 5.55 kB │ gzip: 2.01 kB
ℹ dist/pairing-cli-ChyvGCxs.js 5.19 kB │ gzip: 1.93 kB
ℹ dist/widearea-dns-DzuRdwk5.js 5.04 kB │ gzip: 1.90 kB
ℹ dist/auth-health-D9FVEjeP.js 4.94 kB │ gzip: 1.51 kB
ℹ dist/message-channel-BLi2a6Yw.js 4.30 kB │ gzip: 1.27 kB
ℹ dist/paths-DdKf4lHp.js 4.16 kB │ gzip: 1.20 kB
ℹ dist/progress-C9kngsTD.js 4.16 kB │ gzip: 1.38 kB
ℹ dist/dispatcher-C3XEGPFo.js 3.98 kB │ gzip: 1.58 kB
ℹ dist/github-copilot-token-BW-SEg7E.js 3.97 kB │ gzip: 1.55 kB
ℹ dist/rpc-B1wxs_o7.js 3.84 kB │ gzip: 1.62 kB
ℹ dist/redact-BRsnXqwD.js 3.62 kB │ gzip: 1.41 kB
ℹ dist/cli-BOMY7jW_.js 3.26 kB │ gzip: 1.39 kB
ℹ dist/shared-IZSdAj_0.js 3.21 kB │ gzip: 1.17 kB
ℹ dist/systemd-linger-NC2kl1SC.js 3.19 kB │ gzip: 1.01 kB
ℹ dist/archive-beaSfAzA.js 3.00 kB │ gzip: 1.16 kB
ℹ dist/audio-preflight-f68_NBHZ.js 2.97 kB │ gzip: 1.27 kB
ℹ dist/openclaw-root-CEnmuBUN.js 2.94 kB │ gzip: 0.83 kB
ℹ dist/constants-BvQ6S8j5.js 2.88 kB │ gzip: 0.79 kB
ℹ dist/path-env-CaYUVIML.js 2.83 kB │ gzip: 1.10 kB
ℹ dist/tui-cli-Drvs0f8K.js 2.81 kB │ gzip: 1.30 kB
ℹ dist/control-service-rnJoxEoH.js 2.77 kB │ gzip: 1.05 kB
ℹ dist/clack-prompter-Bz3Mmcl-.js 2.61 kB │ gzip: 0.85 kB
ℹ dist/note-BhRSeNeu.js 2.46 kB │ gzip: 0.91 kB
ℹ dist/channel-options-DYIXzX2a.js 2.46 kB │ gzip: 0.98 kB
ℹ dist/format-duration-84n6_DgO.js 2.42 kB │ gzip: 0.91 kB
ℹ dist/format-relative-cegC_FF5.js 2.13 kB │ gzip: 0.86 kB
ℹ dist/node-service-C8DTHTMg.js 2.09 kB │ gzip: 0.62 kB
ℹ dist/channel-selection-C_0QMwTN.js 2.06 kB │ gzip: 0.73 kB
ℹ dist/command-format-ChfKqObn.js 1.95 kB │ gzip: 0.74 kB
ℹ dist/control-auth-DJ46eghM.js 1.89 kB │ gzip: 0.71 kB
ℹ dist/brew-ROHf0-Xp.js 1.65 kB │ gzip: 0.58 kB
ℹ dist/usage-format-CpORtVCG.js 1.50 kB │ gzip: 0.59 kB
ℹ dist/errors-Bv81hF2P.js 1.25 kB │ gzip: 0.53 kB
ℹ dist/parse-log-line-BuRiE-Ij.js 1.23 kB │ gzip: 0.52 kB
ℹ dist/env-ONzUVAG2.js 1.21 kB │ gzip: 0.57 kB
ℹ dist/tailnet-DATIFSsY.js 1.21 kB │ gzip: 0.55 kB
ℹ dist/gateway-rpc-BAWhHILi.js 1.17 kB │ gzip: 0.62 kB
ℹ dist/systemd-hints-CXNtLw9Q.js 1.11 kB │ gzip: 0.55 kB
ℹ dist/is-main-BWoXGz7p.js 1.00 kB │ gzip: 0.39 kB
ℹ dist/status-Dg1cZuTA.js 0.97 kB │ gzip: 0.44 kB
ℹ dist/boolean-BgXe2hyu.js 0.86 kB │ gzip: 0.38 kB
ℹ dist/cli-utils-CRhVAaLV.js 0.86 kB │ gzip: 0.42 kB
ℹ dist/pi-model-discovery-EwKVHlZB.js 0.84 kB │ gzip: 0.37 kB
ℹ dist/status-C_dMhoE0.js 0.82 kB │ gzip: 0.35 kB
ℹ dist/deps-C2uFLLa0.js 0.81 kB │ gzip: 0.32 kB
ℹ dist/helpers-8O7IVGO-.js 0.79 kB │ gzip: 0.39 kB
ℹ dist/format-DcfK-dwd.js 0.76 kB │ gzip: 0.39 kB
ℹ dist/parse-Bw0oH-rT.js 0.70 kB │ gzip: 0.36 kB
ℹ dist/help-format-C48TXngO.js 0.67 kB │ gzip: 0.30 kB
ℹ dist/transcript-events-Bp7fGnwv.js 0.59 kB │ gzip: 0.29 kB
ℹ dist/channels-status-issues-C7LukWqH.js 0.55 kB │ gzip: 0.30 kB
ℹ dist/logging-BAyPwvdH.js 0.50 kB │ gzip: 0.30 kB
ℹ dist/links-Eax1UO3w.js 0.49 kB │ gzip: 0.30 kB
ℹ dist/parse-timeout-D1XX_zN_.js 0.46 kB │ gzip: 0.26 kB
ℹ dist/prompt-style-CIbmaxSa.js 0.45 kB │ gzip: 0.24 kB
ℹ dist/pi-auth-json-DkNhRSZB.js 0.43 kB │ gzip: 0.26 kB
ℹ dist/rolldown-runtime-Cbj13DAv.js 0.42 kB │ gzip: 0.28 kB
ℹ dist/helpers-HyeZXsnu.js 0.41 kB │ gzip: 0.26 kB
ℹ dist/pairing-labels-CJ6ORYJI.js 0.26 kB │ gzip: 0.19 kB
ℹ dist/prompts-Bg96reub.js 0.24 kB │ gzip: 0.17 kB
ℹ dist/logging-fywhKCmE.js 0.01 kB │ gzip: 0.03 kB
ℹ 148 files, total: 6398.15 kB
✔ Build complete in 4369ms

[email protected] build:plugin-sdk:dts /Users/steipete/Projects/clawdbot7/.worktrees/pr-13767
tsc -p tsconfig.plugin-sdk.dts.json

[copy-hook-metadata] Copied boot-md/HOOK.md
[copy-hook-metadata] Copied command-logger/HOOK.md
[copy-hook-metadata] Copied session-memory/HOOK.md
[copy-hook-metadata] Done

[email protected] test /Users/steipete/Projects/clawdbot7/.worktrees/pr-13767
node scripts/test-parallel.mjs

RUN v4.0.18 /Users/steipete/Projects/clawdbot7/.worktrees/pr-13767

RUN v4.0.18 /Users/steipete/Projects/clawdbot7/.worktrees/pr-13767

RUN v4.0.18 /Users/steipete/Projects/clawdbot7/.worktrees/pr-13767

✓ extensions/twitch/src/twitch-client.test.ts (30 tests) 45ms
✓ src/cli/config-cli.test.ts (3 tests) 1940ms
✓ preserves existing config keys when setting a new value 976ms
✓ does not inject runtime defaults into the written config 489ms
✓ preserves existing config keys when unsetting a value 468ms
✓ src/browser/pw-tools-core.screenshots-element-selector.test.ts (5 tests) 3928ms
✓ screenshots an element selector 3919ms
✓ src/browser/pw-tools-core.clamps-timeoutms-scrollintoview.test.ts (6 tests) 3956ms
✓ clamps timeoutMs for scrollIntoView 3949ms
✓ src/browser/pw-tools-core.waits-next-download-saves-it.test.ts (6 tests) 4081ms
✓ waits for the next download and saves it 3994ms
✓ src/browser/pw-tools-core.last-file-chooser-arm-wins.test.ts (3 tests) 4154ms
✓ last file-chooser arm wins 3943ms
✓ src/gateway/server-methods/skills.update.normalizes-api-key.test.ts (1 test) 5580ms
✓ strips embedded CR/LF from apiKey 5565ms
✓ src/channels/plugins/actions/discord.test.ts (6 tests) 4447ms
✓ lists channel and upload actions by default 4439ms
✓ src/browser/server.covers-additional-endpoint-branches.test.ts (10 tests) 5211ms
✓ covers additional endpoint branches 4917ms
✓ src/hooks/gmail-setup-utils.test.ts (3 tests) 6035ms
✓ resolves a working python path and caches the result 5089ms
✓ includes stdout and exit code when tailscale serve fails 489ms
✓ includes JSON parse failure details with stdout 451ms
✓ src/cli/skills-cli.test.ts (13 tests) 2446ms
✓ loads bundled skills and formats them 1267ms
✓ formats info for a real bundled skill (peekaboo) 1164ms
✓ src/browser/server.agent-contract-form-layout-act-commands.test.ts (4 tests) 1868ms
✓ agent contract: form + layout act commands 1653ms
✓ src/cron/isolated-agent.delivers-response-has-heartbeat-ok-but-includes.test.ts (2 tests) 2190ms
✓ delivers when response has HEARTBEAT_OK but includes media 1238ms
✓ uses shared announce flow when heartbeat ack padding exceeds configured limit 923ms
✓ src/browser/server.skips-default-maxchars-explicitly-set-zero.test.ts (5 tests) 1496ms
✓ skips default maxChars when explicitly set to zero 1351ms
✓ src/tui/theme/theme.test.ts (10 tests) 1784ms
✓ should handle unknown languages gracefully 1522ms
✓ src/config/config.env-vars.test.ts (4 tests) 2415ms
✓ applies env vars from env block when missing 416ms
✓ does not override existing env vars 758ms
✓ applies env vars from env.vars when missing 560ms
✓ loads ${VAR} substitutions from ~/.openclaw/.env on repeated runtime loads 676ms
✓ src/browser/server.evaluate-disabled-does-not-block-storage.test.ts (1 test) 3855ms
✓ blocks act:evaluate but still allows cookies/storage reads 3819ms
✓ src/cli/update-cli.test.ts (20 tests) 3577ms
✓ exports updateCommand and registerUpdateCli 2486ms
✓ src/gateway/session-utils.fs.test.ts (32 tests) 90ms
✓ src/memory/index.test.ts (10 tests) 2362ms
✓ preserves existing index when forced reindex fails 509ms
✓ hybrid weights can favor keyword matches when text weight dominates 390ms
✓ src/browser/server.auth-token-gates-http.test.ts (1 test) 9135ms
✓ requires bearer auth for standalone browser HTTP routes 9120ms
✓ src/web/media.test.ts (15 tests) 2200ms
✓ optimizes images when options object omits optimizeImages 556ms
✓ falls back to JPEG when PNG alpha cannot fit under cap 1026ms
✓ src/gateway/call.test.ts (21 tests) 330ms
✓ src/browser/server.post-tabs-open-profile-unknown-returns-404.test.ts (9 tests) 2073ms
✓ POST /tabs/open?profile=unknown returns 404 1850ms
✓ src/browser/server.serves-status-starts-browser-requested.test.ts (2 tests) 1332ms
✓ serves status + starts browser when requested 1176ms
✓ src/browser/server.agent-contract-snapshot-endpoints.test.ts (2 tests) 1987ms
✓ agent contract: snapshot endpoints 1601ms
✓ agent contract: navigation + common act commands 371ms
✓ src/web/logout.test.ts (3 tests) 1973ms
✓ deletes cached credentials when present 1829ms
✓ src/cli/cron-cli.test.ts (15 tests) 1118ms
✓ trims model and thinking on cron add 1104ms
✓ src/cron/service.runs-one-shot-main-job-disables-it.test.ts (11 tests) 1354ms
✓ runs a one-shot main job and disables it after success when requested 302ms
✓ src/telegram/bot.test.ts (84 tests) 3192ms
✓ dedupes duplicate message updates by update_id 345ms
✓ src/auto-reply/reply.block-streaming.test.ts (5 tests) 4503ms
✓ waits for block replies before returning final payloads 1006ms
✓ preserves block reply ordering when typing start is slow 691ms
✓ drops final payloads when block replies streamed 901ms
✓ falls back to final payloads when block reply send times out 868ms
✓ does not enable block streaming for telegram streamMode block 1032ms
✓ src/gateway/server.plugin-http-auth.test.ts (1 test) 1567ms
✓ requires gateway auth for /api/channels/* plugin routes and allows authenticated pass-through 1509ms
✓ src/auto-reply/reply.raw-body.test.ts (6 tests) 9258ms
✓ /model, /think, /verbose directives detected from RawBody even when Body has structural wrapper 1344ms
✓ /model status detected from RawBody 939ms
✓ CommandBody is honored when RawBody is missing 619ms
✓ Integration: WhatsApp group message with structural wrapper and RawBody command 546ms
✓ preserves history when RawBody is provided for command parsing 1917ms
✓ reuses non-default agent session files without throwing path validation errors 3788ms
✓ src/plugins/loader.test.ts (14 tests) 3680ms
✓ disables bundled plugins by default 3269ms
✓ src/plugins/tools.optional.test.ts (5 tests) 4267ms
✓ skips optional tools without explicit allowlist 3481ms
✓ rejects plugin id collisions with core tool names 396ms
✓ src/security/audit.test.ts (58 tests) 9248ms
✓ treats Windows ACL-only perms as secure 340ms
✓ flags plugins with dangerous code patterns (deep audit) 937ms
✓ reports detailed code-safety issues for both plugins and skills 2454ms
✓ flags plugin extension entry path traversal in deep audit 1780ms
✓ reports scan_failed when plugin code scanner throws during deep audit 2520ms
✓ src/gateway/boot.test.ts (3 tests) 430ms
✓ extensions/bluebubbles/src/actions.test.ts (27 tests) 153ms
✓ extensions/nostr/src/nostr-bus.fuzz.test.ts (76 tests) 255ms
✓ extensions/bluebubbles/src/send.test.ts (33 tests) 252ms
✓ src/auto-reply/reply.queue.test.ts (2 tests) 7949ms
✓ collects queued messages and drains after run completes 5725ms
✓ summarizes dropped followups when cap is exceeded 2185ms
✓ extensions/bluebubbles/src/monitor.test.ts (51 tests) 1485ms
✓ src/security/fix.test.ts (5 tests) 1388ms
✓ tightens groupPolicy + filesystem perms 396ms
✓ does not seed WhatsApp groupAllowFrom if allowFrom is set 319ms
✓ tightens perms for credentials + agent auth/sessions + include files 526ms
✓ src/infra/ports.test.ts (4 tests) 2192ms
✓ ensurePortAvailable rejects when port busy 1207ms
✓ handlePortError exits nicely on EADDRINUSE 981ms
✓ src/memory/manager.batch.test.ts (4 tests) 1068ms
✓ falls back to non-batch on failure and resets failures after success 352ms
✓ src/web/auto-reply.web-auto-reply.prefixes-body-same-phone-marker-from.test.ts (8 tests) 358ms
✓ src/memory/manager.embedding-batches.test.ts (6 tests) 1617ms
✓ splits large files across multiple embedding batches 522ms
✓ retries embeddings on rate limit errors 303ms
✓ retries embeddings on transient 5xx errors 357ms
✓ src/memory/qmd-manager.test.ts (25 tests) 1798ms
✓ src/gateway/server.nodes.late-invoke.test.ts (1 test) 50671ms
✓ src/gateway/tools-invoke-http.test.ts (10 tests) 51196ms
✓ src/auto-reply/skill-commands.test.ts (5 tests) 2204ms
✓ merges command names across agents and de-duplicates 2197ms
✓ src/gateway/server-methods/logs.test.ts (1 test) 159ms
✓ src/infra/run-node.test.ts (1 test) 1410ms
✓ preserves control-ui assets by building with tsdown --no-clean 1394ms
✓ src/cron/service.restart-catchup.test.ts (2 tests) 364ms
✓ extensions/nostr/src/nostr-bus.integration.test.ts (26 tests) 86ms
✓ src/line/bot-handlers.test.ts (4 tests) 1633ms
✓ src/gateway/chat-attachments.test.ts (12 tests) 328ms
✓ src/auto-reply/reply.heartbeat-typing.test.ts (2 tests) 2670ms
✓ starts typing for normal runs 1515ms
✓ does not start typing for heartbeat runs 1145ms
✓ extensions/msteams/src/attachments.test.ts (19 tests) 413ms
✓ returns empty string when no attachments 362ms
✓ src/cli/exec-approvals-cli.test.ts (2 tests) 2421ms
✓ routes get command to local, gateway, and node modes 2173ms
✓ src/canvas-host/server.test.ts (9 tests) 3222ms
✓ creates a default index.html when missing 454ms
✓ skips live reload injection when disabled 742ms
✓ serves canvas content from the mounted base path 506ms
✓ reuses a handler without closing it twice 414ms
✓ serves HTML with injection and broadcasts reload on file changes 585ms
✓ extensions/bluebubbles/src/chat.test.ts (31 tests) 320ms
✓ src/auto-reply/reply/session-resets.test.ts (15 tests) 2952ms
✓ /reset preserves thinkingLevel and reasoningLevel from previous session 729ms
✓ /new preserves ttsAuto from previous session 356ms
✓ src/hooks/install.test.ts (6 tests) 4731ms
✓ installs hook packs from zip archives 2878ms
✓ installs hook packs from tar archives 545ms
✓ rejects hook packs with traversal-like ids 365ms
✓ rejects hook packs with reserved ids 496ms
✓ src/config/schema.test.ts (5 tests) 3812ms
✓ exports schema + hints 3017ms
✓ src/docker-setup.test.ts (5 tests) 3209ms
✓ handles unset optional env vars under strict mode 1017ms
✓ supports a home volume when extra mounts are empty 822ms
✓ avoids associative arrays so the script remains Bash 3.2-compatible 1053ms
✓ src/gateway/client.maxpayload.test.ts (1 test) 282ms
✓ src/gateway/net.test.ts (7 tests) 32ms
✓ src/gateway/server-methods/agent-timestamp.test.ts (15 tests) 442ms
✓ src/config/config.identity-defaults.test.ts (7 tests) 4246ms
✓ does not derive mention defaults and only sets ackReactionScope when identity is present 1040ms
✓ keeps ackReaction unset and does not synthesize agent/session defaults when identity is missing 745ms
✓ does not override explicit values 914ms
✓ supports provider textChunkLimit config 364ms
✓ respects empty responsePrefix to disable identity defaults 543ms
✓ does not derive responsePrefix from identity emoji 301ms
✓ extensions/twitch/src/access-control.test.ts (31 tests) 9ms
✓ src/web/auto-reply.partial-reply-gating.test.ts (5 tests) 4363ms
✓ does not send partial replies for WhatsApp provider 1626ms
✓ updates last-route for direct chats without senderE164 335ms
✓ defaults to self-only when no config is present 2063ms
✓ src/auto-reply/inbound.test.ts (23 tests) 315ms
✓ src/process/child-process-bridge.test.ts (1 test) 1275ms
✓ forwards SIGTERM to the wrapped child 1272ms
✓ src/hooks/bundled/session-memory/handler.test.ts (10 tests) 1336ms
✓ src/cron/service.issue-regressions.test.ts (10 tests) 961ms
✓ skips forced manual runs while a timer-triggered run is in progress 419ms
✓ src/config/sessions/store.lock.test.ts (10 tests) 1674ms
✓ serializes concurrent updateSessionStore calls without data loss 611ms
✓ concurrent updateSessionStoreEntry patches all merge correctly 389ms
✓ src/pairing/pairing-store.test.ts (4 tests) 792ms
✓ caps pending requests at the default limit 371ms
✓ src/gateway/config-reload.test.ts (8 tests) 79ms
✓ src/gateway/auth-rate-limit.test.ts (17 tests) 15ms
✓ src/config/config.plugin-validation.test.ts (7 tests) 1731ms
✓ rejects missing plugin ids in allow/deny/slots 307ms
✓ rejects unknown heartbeat targets 314ms
✓ extensions/voice-call/src/webhook-security.test.ts (11 tests) 245ms
✓ src/gateway/server-methods/agents-mutate.test.ts (16 tests) 161ms
✓ src/browser/cdp.test.ts (6 tests) 996ms
✓ creates a target via the browser websocket 943ms
✓ src/web/auto-reply.web-auto-reply.requires-mention-group-chats-injects-history-replying.test.ts (8 tests) 2894ms
✓ bypasses mention gating for owner /status in group chats 776ms
✓ detects LID mentions using authDir mapping 985ms
✓ derives self E.164 from LID selfJid for mention gating 449ms
✓ src/agents/tools/web-fetch.cf-markdown.test.ts (6 tests) 2619ms
✓ falls back to readability for text/html responses 2209ms
✓ src/infra/gateway-lock.test.ts (3 tests) 1010ms
✓ blocks concurrent acquisition until release 635ms
✓ src/web/auto-reply.web-auto-reply.falls-back-text-media-send-fails.test.ts (3 tests) 1825ms
✓ falls back to text when media send fails 370ms
✓ returns a warning when remote media fetch 404s 554ms
✓ compresses media over 5MB and still sends it 868ms
✓ src/config/sessions.test.ts (27 tests) 1095ms
✓ updateLastRoute persists channel and target 415ms
✓ extensions/nostr/src/nostr-profile.fuzz.test.ts (51 tests) 3151ms
✓ handles profile with all fields at max length 455ms
✓ handles rapid sequential events with monotonic timestamps 2629ms
✓ src/web/auto-reply.typing-controller-idle.test.ts (1 test) 504ms
✓ marks dispatch idle after replies flush 501ms
✓ extensions/bluebubbles/src/reactions.test.ts (46 tests) 32ms
✓ src/gateway/control-ui.test.ts (1 test) 85ms
✓ src/daemon/schtasks.test.ts (17 tests) 385ms
✓ src/gateway/server-methods/send.test.ts (7 tests) 62ms
✓ src/infra/heartbeat-runner.returns-default-unset.test.ts (33 tests) 1050ms
✓ uses the last non-empty payload for delivery 337ms
✓ src/agents/pi-embedded-runner.sanitize-session-history.test.ts (10 tests) 448ms
✓ extensions/nostr/src/nostr-profile-http.test.ts (12 tests) 20ms
✓ extensions/nostr/src/nostr-profile.test.ts (31 tests) 331ms
✓ src/gateway/session-utils.test.ts (29 tests) 61ms
✓ src/telegram/bot.create-telegram-bot.routes-dms-by-telegram-accountid-binding.test.ts (8 tests) 793ms
✓ sends GIF replies as animations 405ms
✓ src/gateway/server-methods/usage.sessions-usage.test.ts (5 tests) 79ms
✓ src/infra/update-runner.test.ts (13 tests) 1025ms
✓ src/cron/service.every-jobs-fire.test.ts (3 tests) 822ms
✓ fires an every-type main job when the timer fires a few ms late 370ms
✓ src/web/auto-reply.web-auto-reply.uses-per-agent-mention-patterns-group-gating.test.ts (4 tests) 412ms
✓ extensions/twitch/src/outbound.test.ts (22 tests) 63ms
✓ src/telegram/bot.create-telegram-bot.applies-topic-skill-filters-system-prompts.test.ts (5 tests) 632ms
✓ src/web/inbound.media.test.ts (4 tests) 264ms
✓ src/infra/transport-ready.test.ts (3 tests) 435ms
✓ returns when the check succeeds and logs after the delay 346ms
✓ src/gateway/hooks-mapping.test.ts (9 tests) 118ms
✓ src/gateway/server-methods/chat.transcript-writes.guardrail.test.ts (1 test) 7ms
✓ extensions/twitch/src/onboarding.test.ts (15 tests) 138ms
✓ src/config/config.pruning-defaults.test.ts (4 tests) 1095ms
✓ does not enable contextPruning by default 326ms
✓ enables cache-ttl pruning + 1h heartbeat for Anthropic OAuth 427ms
✓ src/slack/monitor/message-handler/prepare.inbound-contract.test.ts (8 tests) 538ms
✓ produces a finalized MsgContext 304ms
✓ src/gateway/sessions-patch.test.ts (7 tests) 64ms
✓ src/infra/control-ui-assets.test.ts (17 tests) 1214ms
✓ src/memory/manager.embedding-token-limit.test.ts (2 tests) 725ms
✓ splits oversized chunks so each embedding input stays <= 8192 UTF-8 bytes 605ms
✓ src/web/auto-reply.broadcast-groups.broadcasts-sequentially-configured-order.test.ts (3 tests) 1109ms
✓ broadcasts sequentially in configured order 607ms
✓ broadcasts in parallel by default 344ms
✓ src/telegram/bot.create-telegram-bot.installs-grammy-throttler.test.ts (10 tests) 834ms
✓ src/auto-reply/reply/session.test.ts (14 tests) 1122ms
✓ extensions/twitch/src/send.test.ts (9 tests) 11ms
✓ src/config/config.compaction-settings.test.ts (2 tests) 840ms
✓ preserves memory flush config values 388ms
✓ defaults compaction mode to safeguard 439ms
✓ src/imessage/send.test.ts (4 tests) 878ms
✓ sends to chat_id targets 797ms
✓ src/config/config.backup-rotation.test.ts (1 test) 990ms
✓ keeps a 5-deep backup ring for config writes 980ms
✓ src/gateway/protocol/index.test.ts (6 tests) 6ms
✓ src/telegram/bot.create-telegram-bot.accepts-group-messages-mentionpatterns-match-without-botusername.test.ts (8 tests) 704ms
✓ includes reply-to context when a Telegram reply is received 606ms
✓ src/auto-reply/reply.media-note.test.ts (1 test) 1232ms
✓ includes all MediaPaths in the agent prompt 1225ms
✓ src/web/auto-reply.web-auto-reply.sends-tool-summaries-immediately-responseprefix.test.ts (3 tests) 947ms
✓ skips tool summaries and sends final reply with responsePrefix 698ms
✓ src/process/command-queue.test.ts (8 tests) 633ms
✓ src/gateway/server-methods/agent-job.test.ts (2 tests) 23ms
✓ src/cli/nodes-cli.coverage.test.ts (5 tests) 3685ms
✓ lists nodes via node.list 3448ms
✓ extensions/memory-lancedb/index.test.ts (7 tests | 1 skipped) 3118ms
✓ memory plugin registers and initializes correctly 2903ms
✓ src/gateway/server-methods/agent.test.ts (3 tests) 179ms
✓ src/browser/extension-relay.test.ts (4 tests) 708ms
✓ advertises CDP WS only when extension is connected 579ms
✓ src/process/exec.test.ts (2 tests) 3444ms
✓ passes env overrides to child 2568ms
✓ merges custom env with process.env 871ms
✓ src/memory/manager.sync-errors-do-not-crash.test.ts (1 test) 315ms
✓ does not raise unhandledRejection when watch-triggered sync fails 313ms
✓ src/cron/service.store-migration.test.ts (1 test) 187ms
✓ extensions/bluebubbles/src/attachments.test.ts (18 tests) 207ms
✓ src/telegram/bot.create-telegram-bot.sends-replies-without-native-reply-threading.test.ts (7 tests) 988ms
✓ sends replies without native reply threading 475ms
✓ src/auto-reply/reply/agent-runner.memory-flush.runreplyagent-memory-flush.increments-compaction-count-flush-compaction-completes.test.ts (1 test) 577ms
✓ increments compaction count when flush compaction completes 549ms
✓ src/gateway/server-methods/exec-approval.test.ts (8 tests) 82ms
✓ extensions/msteams/src/messenger.test.ts (11 tests) 243ms
✓ src/gateway/server-node-events.test.ts (3 tests) 41ms
✓ src/gateway/ws-log.test.ts (4 tests) 11ms
✓ src/slack/monitor.tool-result.sends-tool-summaries-responseprefix.test.ts (12 tests) 458ms
✓ src/infra/archive.test.ts (3 tests) 589ms
✓ src/hooks/loader.test.ts (9 tests) 778ms
✓ should load multiple handlers 310ms
✓ src/cron/service.read-ops-nonblocking.test.ts (1 test) 379ms
✓ keeps list and status responsive during a long isolated run 373ms
✓ src/gateway/server-chat.agent-events.test.ts (5 tests) 41ms
✓ src/auto-reply/reply/agent-runner.messaging-tools.test.ts (5 tests) 514ms
✓ src/config/sessions.cache.test.ts (8 tests) 396ms
✓ extensions/voice-call/src/config.test.ts (14 tests) 12ms
✓ src/browser/pw-ai.test.ts (6 tests) 487ms
✓ src/auto-reply/reply/followup-runner.test.ts (6 tests) 406ms
✓ src/daemon/launchd.test.ts (14 tests) 635ms
✓ src/gateway/server-plugins.test.ts (1 test) 5ms
✓ extensions/msteams/src/mentions.test.ts (20 tests) 13ms
✓ extensions/line/src/channel.sendPayload.test.ts (7 tests) 102ms
✓ src/web/auto-reply.broadcast-groups.skips-unknown-broadcast-agent-ids-agents-list.test.ts (1 test) 244ms
✓ src/web/auto-reply.web-auto-reply.supports-always-group-activation-silent-token-preserves.test.ts (4 tests) 747ms
✓ src/gateway/hooks.test.ts (15 tests) 10ms
✓ src/cron/service.skips-main-jobs-empty-systemevent-text.test.ts (3 tests) 510ms
✓ skips main jobs with empty systemEvent text 305ms
✓ src/wizard/onboarding.test.ts (5 tests) 976ms
✓ skips prompts and setup steps when flags are set 317ms
✓ offers TUI hatch even without BOOTSTRAP.md 330ms
✓ src/infra/path-env.test.ts (4 tests) 358ms
✓ src/slack/monitor.tool-result.threads-top-level-replies-replytomode-is-all.test.ts (7 tests) 453ms
✓ src/gateway/server-chat-registry.test.ts (1 test) 24ms
✓ src/gateway/node-command-policy.test.ts (2 tests) 5ms
✓ src/config/config.agent-concurrency-defaults.test.ts (4 tests) 700ms
✓ injects defaults on load 618ms
✓ src/security/skill-scanner.test.ts (25 tests) 616ms
✓ src/config/io.compat.test.ts (4 tests) 1425ms
✓ uses ~/.openclaw/openclaw.json when config exists 795ms
✓ honors explicit OPENCLAW_CONFIG_PATH override 342ms
✓ src/config/sessions/store.pruning.test.ts (29 tests) 1878ms
✓ multiple rotations: only keeps 3 most recent .bak files 341ms
❯ extensions/lobster/src/lobster-tool.test.ts (9 tests | 1 failed) 3263ms
✓ runs lobster and returns parsed envelope in details 791ms
✓ tolerates noisy stdout before the JSON envelope 528ms
✓ requires absolute lobsterPath when provided (even though it is ignored) 22ms
✓ rejects lobsterPath (deprecated) when invalid 12ms
✓ rejects absolute cwd 1ms
✓ rejects cwd that escapes the gateway working directory 0ms
× uses pluginConfig.lobsterPath when provided 1010ms
✓ rejects invalid JSON from lobster 880ms
✓ can be gated off in sandboxed contexts 0ms
✓ extensions/twitch/src/status.test.ts (12 tests) 166ms
✓ src/auto-reply/reply/agent-runner.heartbeat-typing.runreplyagent-typing-heartbeat.signals-typing-block-replies.test.ts (4 tests) 662ms
✓ announces auto-compaction in verbose mode and tracks count 514ms
✓ src/auto-reply/reply/abort.test.ts (5 tests) 744ms
✓ triggerBodyNormalized extracts /stop from RawBody for abort detection 330ms
✓ extensions/voice-call/src/manager.test.ts (6 tests) 156ms
✓ src/gateway/origin-check.test.ts (5 tests) 10ms
✓ src/media/server.test.ts (6 tests) 1126ms
✓ serves media and cleans up after send 379ms
✓ expires old media 315ms
✓ src/telegram/bot.create-telegram-bot.matches-usernames-case-insensitively-grouppolicy-is.test.ts (9 tests) 1332ms
✓ allows direct messages regardless of groupPolicy 638ms
✓ src/infra/outbound/deliver.test.ts (18 tests) 519ms
✓ src/memory/manager.atomic-reindex.test.ts (1 test) 498ms
✓ keeps the prior index when a full reindex fails 466ms
✓ src/cli/memory-cli.test.ts (10 tests) 355ms
✓ src/gateway/auth.test.ts (9 tests) 10ms
✓ src/gateway/server-methods/usage.test.ts (5 tests) 175ms
✓ extensions/feishu/src/bot.test.ts (4 tests) 109ms
✓ src/auto-reply/reply/agent-runner.memory-flush.runreplyagent-memory-flush.uses-configured-prompts-memory-flush-runs.test.ts (2 tests) 635ms
✓ uses configured prompts for memory flush runs 408ms
✓ src/gateway/server/plugins-http.test.ts (4 tests) 58ms
✓ src/cron/session-reaper.test.ts (14 tests) 653ms
✓ src/web/outbound.test.ts (9 tests) 2929ms
✓ sends message via active listener 465ms
✓ maps audio to PTT with opus mime when ogg 388ms
✓ maps video with caption 444ms
✓ marks gif playback for video when requested 397ms
✓ sends polls via active listener 303ms
✓ sends reactions via active listener 332ms
✓ src/memory/internal.test.ts (10 tests) 1115ms
✓ includes files from additional paths (directory) 495ms
✓ extensions/google-gemini-cli-auth/oauth.test.ts (5 tests) 422ms
✓ returns null when gemini binary is not in PATH 400ms
✓ src/config/io.write-config.test.ts (1 test) 1507ms
✓ persists caller changes onto resolved config without leaking runtime defaults 1492ms
✓ src/gateway/server-startup-memory.test.ts (3 tests) 11ms
✓ src/infra/session-cost-usage.test.ts (7 tests) 712ms
✓ aggregates daily totals with log cost and pricing fallback 328ms
✓ src/infra/heartbeat-runner.respects-ackmaxchars-heartbeat-acks.test.ts (9 tests) 976ms
✓ src/browser/chrome.test.ts (14 tests) 704ms
✓ extensions/msteams/src/file-consent-helpers.test.ts (16 tests) 71ms
✓ src/gateway/server-node-subscriptions.test.ts (2 tests) 53ms
✓ src/gateway/server-discovery.test.ts (3 tests) 20ms
✓ src/config/config.discord.test.ts (1 test) 586ms
✓ loads discord guild map + dm group settings 570ms
✓ src/infra/provider-usage.fetch.antigravity.test.ts (18 tests) 422ms
✓ src/gateway/server-utils.test.ts (4 tests) 70ms
✓ src/auto-reply/envelope.test.ts (12 tests) 152ms
✓ src/gateway/assistant-identity.test.ts (3 tests) 24ms
✓ src/auto-reply/reply/agent-runner.memory-flush.runreplyagent-memory-flush.runs-memory-flush-turn-updates-session-metadata.test.ts (2 tests) 481ms
✓ runs a memory flush turn and updates session metadata 352ms
✓ src/web/monitor-inbox.blocks-messages-from-unauthorized-senders-not-allowfrom.test.ts (9 tests) 76ms
✓ src/telegram/bot.create-telegram-bot.blocks-all-group-messages-grouppolicy-is.test.ts (7 tests) 387ms
✓ src/auto-reply/status.test.ts (21 tests) 497ms
✓ src/gateway/chat-sanitize.test.ts (4 tests) 8ms
✓ extensions/bluebubbles/src/targets.test.ts (24 tests) 14ms
✓ src/gateway/server-broadcast.test.ts (1 test) 9ms

Test Files 44 passed (44)
Tests 298 passed (298)
Start at 17:11:06
Duration 212.84s (transform 112.86s, setup 490.86s, import 161.21s, tests 112.71s, environment 13ms)

✓ src/media/store.test.ts (14 tests) 577ms
✓ src/telegram/webhook.test.ts (2 tests) 287ms
✓ src/infra/heartbeat-runner.sender-prefers-delivery-target.test.ts (1 test) 209ms
✓ src/auto-reply/reply/agent-runner.auto-compaction-updates-total-tokens.test.ts (2 tests) 431ms
✓ updates totalTokens after auto-compaction using lastCallUsage 388ms
✓ src/web/auto-reply/session-snapshot.test.ts (1 test) 46ms
✓ src/infra/heartbeat-runner.model-override.test.ts (4 tests) 416ms
✓ extensions/msteams/src/media-helpers.test.ts (38 tests) 419ms
✓ src/telegram/bot.create-telegram-bot.matches-tg-prefixed-allowfrom-entries-case-insensitively.test.ts (6 tests) 1711ms
✓ matches tg:-prefixed allowFrom entries case-insensitively in group allowlist 582ms
✓ routes General topic replies using thread id 1 501ms
✓ src/cli/browser-cli-extension.test.ts (4 tests) 987ms
✓ walks up to find the assets directory 305ms
✓ installs into the state dir (never node_modules) 356ms
✓ extensions/nostr/src/nostr-bus.test.ts (32 tests) 593ms
✓ derives public key from hex private key 370ms
✓ src/telegram/send.preserves-thread-params-plain-text-fallback.test.ts (5 tests) 838ms
✓ preserves thread params in plain text fallback 766ms
✓ src/discord/send.creates-thread.test.ts (20 tests) 595ms
✓ extensions/twitch/src/probe.test.ts (10 tests) 201ms
✓ src/infra/format-time/format-time.test.ts (31 tests) 243ms
✓ src/infra/heartbeat-runner.ghost-reminder.test.ts (3 tests) 654ms
✓ does not use CRON_EVENT_PROMPT when only a HEARTBEAT_OK event is present 436ms
✓ src/memory/manager.vector-dedupe.test.ts (1 test) 266ms
✓ src/telegram/send.returns-undefined-empty-input.test.ts (35 tests) 436ms
✓ src/cron/service.prevents-duplicate-timers.test.ts (1 test) 425ms
✓ avoids duplicate runs when two services share a store 411ms
✓ src/discord/monitor.tool-result.sends-status-replies-responseprefix.test.ts (6 tests) 431ms
✓ src/plugins/wired-hooks-compaction.test.ts (3 tests) 201ms
✓ src/web/monitor-inbox.captures-media-path-image-messages.test.ts (8 tests) 252ms
✓ src/infra/update-startup.test.ts (3 tests) 2322ms
✓ logs update hint for npm installs when newer tag exists 1964ms
✓ extensions/diagnostics-otel/src/service.test.ts (1 test) 75ms
✓ extensions/llm-task/src/llm-task-tool.test.ts (8 tests) 3033ms
✓ returns parsed json 638ms
✓ validates schema 1516ms
✓ src/slack/monitor.tool-result.forces-thread-replies-replytoid-is-set.test.ts (4 tests) 1409ms
✓ forces thread replies when replyToId is set 1197ms
✓ extensions/twitch/src/token.test.ts (9 tests) 136ms
✓ src/memory/search-manager.test.ts (4 tests) 127ms
✓ src/channels/plugins/catalog.test.ts (3 tests) 396ms
✓ src/telegram/bot-message-context.dm-threads.test.ts (5 tests) 571ms
✓ uses thread session key for dm topics 426ms
✓ src/cron/service.store.migration.test.ts (2 tests) 820ms
✓ migrates isolated jobs to announce delivery and drops isolation 470ms
✓ src/media/mime.test.ts (12 tests) 60ms
✓ src/auto-reply/reply/route-reply.test.ts (16 tests) 1402ms
✓ applies responsePrefix when routing 453ms
✓ src/imessage/monitor.skips-group-messages-without-mention-by-default.test.ts (12 tests) 1534ms
✓ allows group messages when imessage groups default disables mention gating 584ms
✓ allows group messages when requireMention is true but no mentionPatterns exist 395ms
✓ src/cron/service/jobs.schedule-error-isolation.test.ts (7 tests) 423ms
✓ src/media/store.redirect.test.ts (2 tests) 406ms
✓ extensions/matrix/src/matrix/send.test.ts (3 tests) 1551ms
✓ extensions/whatsapp/src/resolve-target.test.ts (9 tests) 649ms
✓ src/auto-reply/reply/agent-runner.heartbeat-typing.runreplyagent-typing-heartbeat.resets-corrupted-gemini-sessions-deletes-transcripts.test.ts (4 tests) 383ms
✓ resets corrupted Gemini sessions and deletes transcripts 305ms
✓ src/telegram/bot.create-telegram-bot.dedupes-duplicate-callback-query-updates-by-update.test.ts (2 tests) 818ms
✓ dedupes duplicate callback_query updates by update_id 563ms
✓ src/slack/monitor/media.test.ts (16 tests) 469ms
✓ prefers url_private_download over url_private 374ms
✓ src/signal/monitor.tool-result.sends-tool-summaries-responseprefix.test.ts (11 tests) 678ms
✓ extensions/msteams/src/policy.test.ts (15 tests) 1222ms
✓ src/config/schema.hints.test.ts (3 tests) 1742ms
✓ main schema yields correct hints (samples) 1576ms
✓ src/config/config.irc.test.ts (7 tests) 852ms
✓ src/telegram/send.caption-split.test.ts (9 tests) 875ms
✓ splits long captions into media + text messages when text exceeds 1024 chars 678ms
✓ src/auto-reply/reply/agent-runner.heartbeat-typing.runreplyagent-typing-heartbeat.retries-after-compaction-failure-by-resetting-session.test.ts (3 tests) 2325ms
✓ retries after compaction failure by resetting the session 1367ms
✓ retries after context overflow payload by resetting the session 434ms
✓ src/web/auto-reply/heartbeat-runner.timestamp.test.ts (1 test) 352ms
✓ injects a cron-style Current time line into the heartbeat prompt 335ms
✓ src/markdown/ir.table-bullets.test.ts (7 tests) 401ms
✓ preserves inline styles and links in bullets mode 317ms
✓ src/telegram/send.proxy.test.ts (3 tests) 222ms
✓ src/auto-reply/reply/reply-routing.test.ts (18 tests) 96ms
✓ src/infra/outbound/message-action-runner.test.ts (26 tests) 3269ms
✓ allows send when target matches current channel 455ms
✓ requires message when no media hint is provided 709ms
✓ allows WhatsApp send when target matches current chat 390ms
✓ src/auto-reply/reply/queue.collect-routing.test.ts (8 tests) 342ms
✓ src/infra/device-pairing.test.ts (2 tests) 354ms
✓ src/config/sessions/transcript.test.ts (6 tests) 333ms
✓ extensions/nostr/src/channel.test.ts (21 tests) 70ms
✓ src/canvas-host/server.state-dir.test.ts (1 test) 257ms
✓ src/telegram/fetch.test.ts (5 tests) 175ms
✓ src/cron/run-log.test.ts (3 tests) 78ms
✓ src/telegram/format.test.ts (19 tests) 165ms
✓ src/signal/monitor/event-handler.mention-gating.test.ts (9 tests) 180ms
✓ src/auto-reply/reply/commands.test.ts (21 tests) 308ms
✓ src/web/monitor-inbox.streams-inbound-messages.test.ts (8 tests) 514ms
✓ streams inbound messages 409ms
✓ src/auto-reply/reply/agent-runner.heartbeat-typing.runreplyagent-typing-heartbeat.signals-typing-normal-runs.test.ts (7 tests) 86ms
✓ src/config/config.gateway-remote-transport.test.ts (2 tests) 34ms
✓ extensions/feishu/src/media.test.ts (4 tests) 12ms
✓ src/version.test.ts (4 tests) 181ms
✓ src/cli/dns-cli.test.ts (1 test) 365ms
✓ prints setup info (no apply) 362ms
✓ src/commands/auth-choice.apply.huggingface.test.ts (3 tests) 319ms
✓ src/telegram/bot-message-context.dm-topic-threadid.test.ts (3 tests) 101ms
✓ extensions/irc/src/onboarding.test.ts (2 tests) 11ms
✓ extensions/nostr/src/types.test.ts (12 tests) 298ms
✓ src/config/redact-snapshot.test.ts (53 tests) 367ms
✓ src/hooks/frontmatter.test.ts (20 tests) 245ms
✓ src/infra/infra-store.test.ts (12 tests) 178ms
✓ src/cron/schedule.test.ts (9 tests) 167ms
✓ src/auto-reply/reply/session-updates.incrementcompactioncount.test.ts (3 tests) 272ms
✓ extensions/googlechat/src/resolve-target.test.ts (6 tests) 33ms
✓ extensions/feishu/src/reply-dispatcher.test.ts (2 tests) 16ms
✓ src/auto-reply/reply.triggers.trigger-handling.stages-inbound-media-into-sandbox-workspace.security.test.ts (1 test) 206ms
✓ extensions/irc/src/policy.test.ts (6 tests) 6ms
✓ src/plugins/uninstall.test.ts (23 tests) 244ms
✓ src/discord/send.sends-basic-channel-messages.test.ts (26 tests) 397ms
✓ src/telegram/bot/delivery.test.ts (10 tests) 239ms
✓ src/telegram/bot-message-context.sender-prefix.test.ts (3 tests) 198ms
✓ src/infra/infra-runtime.test.ts (9 tests) 32ms
Usage: program models auth [options] [command]

Manage model auth profiles

Options:
--agent Agent id for auth order get/set/clear
-h, --help display help for command

Commands:
add Interactive auth helper (setup-token or paste
token)
login [options] Run a provider plugin auth flow (OAuth/API
key)
setup-token [options] Run a provider CLI to create/sync a token (TTY
required)
paste-token [options] Paste a token into auth-profiles.json and
update config
login-github-copilot [options] Login to GitHub Copilot via GitHub device flow
(TTY required)
order Manage per-agent auth profile order overrides
✓ src/cli/models-cli.test.ts (4 tests) 325ms
✓ src/slack/monitor.threading.missing-thread-ts.test.ts (1 test) 95ms
✓ src/telegram/update-offset-store.test.ts (1 test) 83ms
✓ src/infra/restart-sentinel.test.ts (3 tests) 82ms
✓ src/signal/monitor/event-handler.inbound-contract.test.ts (1 test) 346ms
✓ passes a finalized MsgContext to dispatchInboundMessage 302ms
✓ src/web/qr-image.test.ts (2 tests) 134ms
✓ src/infra/tailscale.test.ts (10 tests) 46ms
✓ extensions/nostr/src/nostr-state-store.test.ts (7 tests) 371ms
✓ extensions/matrix/src/matrix/send/targets.test.ts (5 tests) 37ms
✓ src/discord/monitor/message-handler.inbound-contract.test.ts (2 tests) 484ms
✓ src/infra/heartbeat-active-hours.test.ts (7 tests) 164ms
✓ src/infra/provider-usage.auth.normalizes-keys.test.ts (2 tests) 236ms
✓ src/auto-reply/reply/commands-policy.test.ts (10 tests) 246ms
✓ src/config/plugin-auto-enable.test.ts (10 tests) 228ms
✓ src/config/config.sandbox-docker.test.ts (2 tests) 46ms
✓ src/imessage/monitor.updates-last-route-chat-id-direct-messages.test.ts (2 tests) 252ms
✓ src/web/monitor-inbox.allows-messages-from-senders-allowfrom-list.test.ts (7 tests) 148ms
✓ src/browser/pw-session.get-page-for-targetid.extension-fallback.test.ts (1 test) 460ms
✓ falls back to the only page when CDP session attachment is blocked (extension relays) 439ms
✓ src/config/config.preservation-on-validation-failure.test.ts (2 tests) 150ms
✓ src/telegram/send.edit-message.test.ts (3 tests) 144ms
✓ src/slack/format.test.ts (18 tests) 38ms
✓ src/config/config.identity-avatar.test.ts (3 tests) 86ms
✓ extensions/matrix/src/matrix/monitor/media.test.ts (2 tests) 13ms
✓ src/auto-reply/reply/agent-runner.transient-http-retry.test.ts (1 test) 62ms
✓ src/discord/audit.test.ts (1 test) 38ms
✓ src/telegram/send.video-note.test.ts (4 tests) 123ms
✓ src/media-understanding/providers/deepgram/audio.test.ts (2 tests) 11ms
✓ extensions/nostr/src/nostr-profile-import.test.ts (7 tests) 11ms
✓ src/infra/provider-usage.test.ts (10 tests) 157ms
✓ src/memory/manager.async-search.test.ts (1 test) 233ms
✓ src/auto-reply/reply/session-usage.test.ts (4 tests) 241ms
✓ src/infra/heartbeat-visibility.test.ts (13 tests) 7ms
✓ src/infra/ports-inspect.test.ts (1 test) 27ms
✓ src/infra/net/ssrf.pinning.test.ts (5 tests) 52ms
✓ src/cron/service.delivery-plan.test.ts (2 tests) 358ms
✓ src/web/auto-reply/monitor/message-line.test.ts (1 test) 246ms
✓ extensions/voice-call/src/media-stream.test.ts (2 tests) 94ms
✓ src/media-understanding/attachments.ssrf.test.ts (1 test) 173ms
✓ src/auto-reply/reply/agent-runner.heartbeat-typing.runreplyagent-typing-heartbeat.still-replies-even-if-session-reset-fails.test.ts (2 tests) 206ms
✓ extensions/msteams/src/conversation-store-fs.test.ts (1 test) 390ms
✓ filters and prunes expired entries (but keeps legacy ones) 350ms
✓ src/signal/format.test.ts (6 tests) 134ms
✓ src/cron/service.issue-13992-regression.test.ts (4 tests) 211ms
✓ extensions/twitch/src/config.test.ts (9 tests) 64ms
✓ src/media-understanding/providers/google/video.test.ts (2 tests) 42ms
✓ src/web/login.coverage.test.ts (3 tests) 66ms
✓ src/daemon/service-audit.test.ts (3 tests) 156ms
✓ src/cli/pairing-cli.test.ts (7 tests) 132ms
✓ src/slack/monitor/message-handler/prepare.sender-prefix.test.ts (2 tests) 51ms
✓ src/telegram/sticker-cache.test.ts (17 tests) 84ms
✓ extensions/msteams/src/inbound.test.ts (8 tests) 76ms
✓ extensions/line/src/channel.logout.test.ts (2 tests) 16ms
✓ src/infra/bonjour.test.ts (7 tests) 39ms
✓ src/auto-reply/reply/typing.test.ts (17 tests) 250ms
✓ src/browser/pw-session.test.ts (6 tests) 102ms
✓ src/infra/unhandled-rejections.fatal-detection.test.ts (10 tests) 207ms
✓ src/auto-reply/reply/agent-runner.memory-flush.runreplyagent-memory-flush.skips-memory-flush-cli-providers.test.ts (1 test) 295ms
✓ src/config/config.multi-agent-agentdir-validation.test.ts (2 tests) 109ms
✓ src/infra/exec-approvals.test.ts (53 tests) 96ms
✓ src/infra/device-identity.state-dir.test.ts (1 test) 73ms
✓ src/auto-reply/command-control.test.ts (19 tests) 101ms
✓ extensions/voice-call/src/providers/twilio.test.ts (3 tests) 35ms
✓ src/line/bot-message-context.test.ts (2 tests) 45ms
✓ src/infra/heartbeat-runner.scheduler.test.ts (5 tests) 126ms
✓ src/hooks/internal-hooks.test.ts (18 tests) 33ms
✓ src/cron/store.test.ts (3 tests) 55ms
✓ src/utils.test.ts (25 tests) 66ms
✓ src/auto-reply/reply/dispatch-from-config.test.ts (12 tests) 21ms
✓ src/auto-reply/reply/agent-runner.memory-flush.runreplyagent-memory-flush.skips-memory-flush-sandbox-workspace-is-read.test.ts (2 tests) 114ms
✓ src/media/fetch.test.ts (3 tests) 93ms
✓ src/markdown/frontmatter.test.ts (5 tests) 89ms
✓ src/auto-reply/reply/commands-approve.test.ts (5 tests) 29ms
✓ src/auto-reply/reply/commands-parsing.test.ts (8 tests) 34ms
✓ src/logger.test.ts (5 tests) 46ms
✓ src/scripts/canvas-a2ui-copy.test.ts (2 tests) 125ms
✓ extensions/msteams/src/polls.test.ts (3 tests) 433ms
✓ stores and records poll votes 425ms
✓ src/auto-reply/reply/agent-runner.block-streaming.test.ts (1 test) 201ms
✓ src/tts/tts.test.ts (35 tests) 79ms
✓ src/auto-reply/reply.triggers.trigger-handling.stages-inbound-media-into-sandbox-workspace.test.ts (1 test) 31ms
✓ src/web/session.test.ts (8 tests) 163ms
✓ extensions/feishu/src/bot.checkBotMentioned.test.ts (5 tests) 17ms
✓ src/logging/console-capture.test.ts (9 tests) 101ms
✓ src/config/paths.test.ts (9 tests) 211ms
✓ src/auto-reply/reply/agent-runner.claude-cli.test.ts (1 test) 47ms
✓ src/cli/logs-cli.test.ts (9 tests) 43ms
✓ src/terminal/stream-writer.test.ts (2 tests) 6ms
✓ src/slack/monitor/slash.command-arg-menus.test.ts (5 tests) 185ms
✓ src/line/markdown-to-line.test.ts (38 tests) 18ms
✓ src/line/flex-templates.test.ts (43 tests) 15ms
✓ extensions/zalo/src/monitor.webhook.test.ts (1 test) 81ms
✓ src/infra/outbound/message-action-runner.threading.test.ts (7 tests) 68ms
✓ src/config/normalize-paths.test.ts (1 test) 90ms
✓ src/auto-reply/reply.directive.parse.test.ts (31 tests) 94ms
✓ src/line/template-messages.test.ts (35 tests) 206ms
✓ src/browser/profiles.test.ts (28 tests) 485ms
✓ raw config vs resolved config - shows the data source difference 455ms
✓ src/config/includes.test.ts (25 tests) 98ms
✓ src/config/env-substitution.test.ts (31 tests) 45ms
✓ src/agents/model-catalog.test.ts (3 tests) 93ms
✓ src/tui/commands.test.ts (3 tests) 9ms
✓ src/config/model-alias-defaults.test.ts (5 tests) 64ms
✓ src/browser/client.test.ts (6 tests) 229ms
✓ extensions/mattermost/src/channel.test.ts (5 tests) 13ms
✓ src/infra/heartbeat-wake.test.ts (9 tests) 93ms
✓ src/tui/components/searchable-select-list.test.ts (13 tests) 129ms
✓ src/plugins/voice-call.plugin.test.ts (6 tests) 35ms
✓ src/infra/brew.test.ts (3 tests) 158ms
✓ src/acp/client.test.ts (5 tests) 59ms
✓ extensions/matrix/src/matrix/client.test.ts (2 tests) 97ms
✓ src/tui/tui-command-handlers.test.ts (1 test) 18ms
✓ src/config/sessions/paths.test.ts (12 tests) 20ms
✓ src/cli/nodes-camera.test.ts (8 tests) 61ms
✓ src/infra/net/fetch-guard.ssrf.test.ts (4 tests) 126ms
✓ src/memory/batch-voyage.test.ts (2 tests) 42ms
✓ src/browser/server-context.remote-tab-ops.test.ts (6 tests) 20ms
✓ src/infra/shell-env.test.ts (4 tests) 6ms
✓ extensions/googlechat/src/api.test.ts (2 tests) 11ms
✓ src/media-understanding/runner.auto-audio.test.ts (2 tests) 157ms
✓ src/discord/monitor.test.ts (46 tests) 148ms
✓ src/globals.test.ts (2 tests) 16ms
✓ src/memory/session-files.test.ts (3 tests) 40ms
✓ src/auto-reply/commands-registry.test.ts (16 tests) 154ms
✓ src/plugins/discovery.test.ts (4 tests) 46ms
✓ extensions/zalouser/src/status-issues.test.ts (4 tests) 8ms
✓ src/agents/models-config.providers.vllm.test.ts (2 tests) 13ms
✓ src/infra/retry.test.ts (8 tests) 19ms
✓ extensions/matrix/src/matrix/accounts.test.ts (3 tests) 11ms
✓ src/discord/monitor/message-handler.process.test.ts (2 tests) 110ms
✓ src/browser/pw-tools-core.interactions.evaluate.abort.test.ts (2 tests) 116ms
✓ src/web/auto-reply/mentions.test.ts (3 tests) 6ms
✓ src/discord/monitor.gateway.test.ts (4 tests) 37ms
✓ src/telegram/monitor.test.ts (6 tests) 58ms
✓ extensions/matrix/src/channel.directory.test.ts (1 test) 13ms
✓ extensions/matrix/src/resolve-targets.test.ts (2 tests) 6ms
✓ src/web/login.test.ts (1 test) 19ms
✓ src/plugins/wired-hooks-session.test.ts (3 tests) 7ms
✓ src/discord/resolve-channels.test.ts (2 tests) 19ms
✓ src/infra/dotenv.test.ts (2 tests) 25ms
✓ src/telegram/bot-native-commands.plugin-auth.test.ts (1 test) 13ms
✓ src/browser/chrome.default-browser.test.ts (2 tests) 44ms
✓ extensions/msteams/src/probe.test.ts (3 tests) 15ms
✓ src/config/telegram-webhook-secret.test.ts (4 tests) 22ms
✓ extensions/matrix/src/matrix/monitor/allowlist.test.ts (3 tests) 6ms
✓ src/infra/ssh-config.test.ts (3 tests) 96ms
✓ src/browser/control-auth.auto-token.test.ts (5 tests) 96ms
✓ src/discord/chunk.test.ts (10 tests) 84ms
✓ src/config/config.broadcast.test.ts (3 tests) 44ms
✓ src/telegram/bot-native-commands.test.ts (3 tests) 117ms
✓ src/infra/system-events.test.ts (2 tests) 18ms
✓ extensions/irc/src/protocol.test.ts (4 tests) 47ms
✓ src/web/inbound.test.ts (14 tests) 7ms
✓ src/web/accounts.whatsapp-auth.test.ts (4 tests) 32ms
✓ src/web/reconnect.test.ts (4 tests) 14ms
✓ src/auto-reply/reply/formatting.test.ts (20 tests) 20ms
✓ src/telegram/download.test.ts (2 tests) 15ms
✓ src/memory/embeddings.test.ts (12 tests) 59ms
✓ extensions/msteams/src/errors.test.ts (6 tests) 9ms
✓ src/slack/monitor/context.test.ts (7 tests) 26ms
✓ src/agents/pi-auth-json.test.ts (1 test) 19ms
✓ src/telegram/audit.test.ts (3 tests) 34ms
✓ src/cron/cron-protocol-conformance.test.ts (2 tests) 30ms
✓ src/plugins/cli.test.ts (1 test) 20ms
✓ src/browser/client-fetch.loopback-auth.test.ts (3 tests) 30ms
✓ src/imessage/targets.test.ts (10 tests) 69ms
✓ extensions/irc/src/normalize.test.ts (3 tests) 5ms
✓ src/discord/monitor/gateway-registry.test.ts (5 tests) 5ms
✓ src/auto-reply/chunk.test.ts (44 tests) 40ms
✓ src/media-understanding/runner.deepgram.test.ts (1 test) 17ms
✓ extensions/googlechat/src/targets.test.ts (4 tests) 178ms
✓ src/web/auto-reply/monitor/group-gating.test.ts (1 test) 102ms
✓ src/security/external-content.test.ts (29 tests) 172ms
✓ src/web/auto-reply/monitor/process-message.inbound-contract.test.ts (1 test) 29ms
✓ src/cron/normalize.test.ts (15 tests) 17ms
✓ src/cli/browser-cli-inspect.test.ts (2 tests) 20ms
✓ src/discord/monitor/threading.test.ts (9 tests) 6ms
✓ src/security/audit-extra.sync.test.ts (3 tests) 6ms
✓ src/media/store.header-ext.test.ts (1 test) 28ms
✓ extensions/msteams/src/channel.directory.test.ts (1 test) 9ms
✓ src/logging/console-settings.test.ts (2 tests) 25ms
✓ src/infra/bonjour-discovery.test.ts (4 tests) 84ms
✓ extensions/irc/src/client.test.ts (4 tests) 59ms
✓ src/auto-reply/reply/agent-runner.response-usage-footer.test.ts (2 tests) 125ms
✓ src/channels/command-gating.test.ts (8 tests) 36ms
✓ src/auto-reply/reply/agent-runner-utils.test.ts (6 tests) 8ms
✓ src/config/sessions/metadata.test.ts (1 test) 8ms
✓ src/auto-reply/reply/line-directives.test.ts (36 tests) 53ms
✓ src/shared/text/reasoning-tags.test.ts (39 tests) 9ms
✓ src/auto-reply/reply/agent-runner.authprofileid-fallback.test.ts (1 test) 32ms
✓ extensions/feishu/src/channel.test.ts (1 test) 10ms
✓ src/config/slack-http-config.test.ts (4 tests) 116ms
✓ src/auto-reply/reply/agent-runner.reasoning-tags.test.ts (2 tests) 80ms
✓ src/infra/warning-filter.test.ts (3 tests) 9ms
✓ src/daemon/service-env.test.ts (17 tests) 16ms
✓ src/tui/tui-input-history.test.ts (8 tests) 8ms
✓ src/config/agent-dirs.test.ts (2 tests) 17ms
✓ src/security/windows-acl.test.ts (26 tests) 53ms
✓ src/config/config.schema-regressions.test.ts (2 tests) 32ms
✓ extensions/matrix/src/matrix/format.test.ts (5 tests) 31ms
✓ src/telegram/probe.test.ts (5 tests) 17ms
✓ src/browser/routes/dispatcher.abort.test.ts (1 test) 12ms
✓ src/discord/monitor/agent-components.test.ts (3 tests) 14ms
✓ src/auto-reply/reply/directive-handling.model.test.ts (5 tests) 62ms
✓ src/media-understanding/providers/openai/audio.test.ts (2 tests) 12ms
✓ src/telegram/model-buttons.test.ts (28 tests) 26ms
✓ src/browser/profiles-service.test.ts (4 tests) 17ms
✓ src/discord/api.test.ts (3 tests) 74ms
✓ extensions/voice-call/src/providers/plivo.test.ts (1 test) 25ms
✓ src/channels/ack-reactions.test.ts (9 tests) 32ms
✓ src/discord/targets.test.ts (11 tests) 12ms
✓ src/media/host.test.ts (3 tests) 74ms
✓ src/channels/plugins/actions/telegram.test.ts (6 tests) 44ms
✓ src/telegram/reaction-level.test.ts (7 tests) 8ms
✓ src/cli/prompt.test.ts (2 tests) 7ms
✓ src/infra/infra-parsing.test.ts (13 tests) 8ms
✓ extensions/msteams/src/polls-store.test.ts (2 tests) 34ms
✓ extensions/tlon/src/urbit/sse-client.test.ts (1 test) 7ms
✓ src/config/slack-token-validation.test.ts (2 tests) 15ms
✓ src/slack/monitor/slash.policy.test.ts (6 tests) 29ms
✓ src/auto-reply/model.test.ts (21 tests) 10ms
✓ src/cli/program.force.test.ts (6 tests) 19ms
✓ src/infra/update-check.test.ts (2 tests) 6ms
✓ src/telegram/bot/helpers.test.ts (24 tests) 18ms
✓ src/line/probe.test.ts (2 tests) 43ms
✓ src/slack/threading-tool-context.test.ts (7 tests) 6ms
✓ src/auto-reply/reply/model-selection.inherit-parent.test.ts (6 tests) 8ms
✓ src/infra/exec-approval-forwarder.test.ts (5 tests) 9ms
✓ extensions/matrix/src/matrix/monitor/rooms.test.ts (1 test) 16ms
✓ src/telegram/token.test.ts (6 tests) 9ms
✓ src/logging/logger.import-side-effects.test.ts (1 test) 5ms
✓ src/config/config.msteams.test.ts (2 tests) 14ms
✓ src/config/config.talk-voicealiases.test.ts (2 tests) 10ms
✓ src/auto-reply/heartbeat.test.ts (20 tests) 9ms
✓ src/macos/relay-smoke.test.ts (5 tests) 31ms
✓ src/channels/web/index.test.ts (1 test) 9ms
✓ src/config/config.tools-alsoAllow.test.ts (3 tests) 14ms
✓ src/memory/hybrid.test.ts (4 tests) 6ms
✓ src/docs/slash-commands-doc.test.ts (1 test) 18ms
✓ src/browser/server-context.ensure-tab-available.prefers-last-target.test.ts (3 tests) 10ms
✓ src/slack/actions.read.test.ts (2 tests) 293ms
✓ src/config/config.telegram-custom-commands.test.ts (2 tests) 23ms
✓ extensions/tlon/src/urbit/send.test.ts (1 test) 23ms
✓ src/browser/config.test.ts (12 tests) 14ms
✓ src/line/webhook.test.ts (5 tests) 56ms
✓ src/infra/outbound/targets.test.ts (15 tests) 144ms
✓ src/routing/resolve-route.test.ts (29 tests) 27ms
✓ src/cli/nodes-screen.test.ts (3 tests) 17ms
✓ src/tui/tui-event-handlers.test.ts (10 tests) 136ms
✓ src/web/login-qr.test.ts (1 test) 35ms
✓ src/config/channel-capabilities.test.ts (6 tests) 6ms
✓ src/providers/github-copilot-token.test.ts (3 tests) 10ms
✓ src/providers/google-shared.preserves-parameters-type-is-missing.test.ts (9 tests) 26ms
✓ src/agents/pi-embedded-runner/model.test.ts (14 tests) 16ms
✓ extensions/zalo/src/channel.directory.test.ts (1 test) 11ms
✓ src/line/accounts.test.ts (14 tests) 24ms
✓ src/auto-reply/reply/model-selection.override-respected.test.ts (4 tests) 125ms
✓ src/infra/outbound/outbound-session.test.ts (7 tests) 9ms
✓ src/providers/qwen-portal-oauth.test.ts (3 tests) 9ms
✓ src/cron/service.rearm-timer-when-running.test.ts (1 test) 9ms
✓ src/cli/hooks-cli.test.ts (3 tests) 14ms
✓ extensions/irc/src/monitor.test.ts (3 tests) 29ms
✓ src/infra/runtime-guard.test.ts (5 tests) 9ms
✓ src/infra/unhandled-rejections.test.ts (19 tests) 9ms
✓ src/hooks/gmail.test.ts (8 tests) 8ms
✓ src/line/reply-chunks.test.ts (3 tests) 8ms
✓ extensions/twitch/src/plugin.test.ts (1 test) 94ms
✓ src/line/auto-reply-delivery.test.ts (3 tests) 8ms
✓ src/config/config.gateway-tools-config.test.ts (2 tests) 8ms
✓ src/channels/plugins/actions/signal.test.ts (9 tests) 24ms
✓ src/slack/targets.test.ts (6 tests) 47ms
✓ src/cli/profile.test.ts (19 tests) 17ms
✓ src/line/rich-menu.test.ts (20 tests) 95ms
✓ src/config/ui-seam-color.test.ts (3 tests) 9ms
✓ src/web/inbound/media.node.test.ts (9 tests) 7ms
✓ src/media/parse.test.ts (14 tests) 9ms
✓ src/discord/monitor/presence-cache.test.ts (2 tests) 4ms
✓ src/telegram/targets.test.ts (11 tests) 7ms
✓ src/tui/tui.submit-handler.test.ts (4 tests) 8ms
✓ src/daemon/constants.test.ts (35 tests) 8ms
✓ src/auto-reply/tool-meta.test.ts (6 tests) 9ms
✓ src/slack/monitor/channel-config.test.ts (5 tests) 9ms
✓ src/commands/models/list.list-command.forward-compat.test.ts (1 test) 7ms
✓ extensions/nextcloud-talk/src/policy.test.ts (3 tests) 9ms
✓ src/channels/plugins/outbound/telegram.test.ts (2 tests) 10ms
✓ src/channels/plugins/directory-config.test.ts (4 tests) 9ms
✓ src/agents/huggingface-models.test.ts (5 tests) 45ms
✓ src/signal/send-reactions.test.ts (3 tests) 39ms
✓ src/plugin-sdk/index.test.ts (1 test) 69ms
✓ src/infra/tmp-openclaw-dir.test.ts (4 tests) 12ms
✓ src/infra/outbound/target-resolver.test.ts (2 tests) 7ms
✓ src/config/config.web-search-provider.test.ts (1 test) 8ms
✓ src/logging/redact.test.ts (9 tests) 9ms
✓ src/telegram/bot-message-dispatch.test.ts (1 test) 25ms
✓ src/daemon/program-args.test.ts (3 tests) 10ms
✓ src/cli/progress.test.ts (2 tests) 7ms
✓ src/channels/channel-config.test.ts (13 tests) 7ms
✓ src/slack/monitor.test.ts (15 tests) 30ms
✓ src/config/config.skills-entries-config.test.ts (2 tests) 8ms
✓ extensions/tlon/src/monitor/processed-messages.test.ts (1 test) 5ms
✓ src/signal/monitor.test.ts (6 tests) 8ms
✓ extensions/irc/src/config-schema.test.ts (2 tests) 11ms
✓ src/browser/pw-role-snapshot.test.ts (7 tests) 8ms
✓ src/discord/monitor/allow-list.test.ts (12 tests) 7ms
✓ src/auto-reply/reply/response-prefix-template.test.ts (27 tests) 10ms
✓ src/cron/delivery.test.ts (2 tests) 6ms
✓ src/auto-reply/reply/history.test.ts (7 tests) 7ms
✓ src/memory/embeddings-voyage.test.ts (4 tests) 18ms
✓ src/plugins/wired-hooks-message.test.ts (4 tests) 17ms
✓ extensions/tlon/src/config-schema.test.ts (2 tests) 9ms
✓ src/daemon/systemd.test.ts (10 tests) 12ms
✓ src/discord/gateway-logging.test.ts (3 tests) 6ms
✓ src/slack/threading.test.ts (5 tests) 5ms
✓ src/infra/system-presence.test.ts (2 tests) 7ms
✓ extensions/googlechat/src/monitor.test.ts (4 tests) 6ms
✓ src/providers/google-shared.ensures-function-call-comes-after-user-turn.test.ts (2 tests) 7ms
✓ src/channels/plugins/outbound/whatsapp.test.ts (3 tests) 5ms
✓ extensions/matrix/src/matrix/poll-types.test.ts (1 test) 4ms
✓ src/process/spawn-utils.test.ts (2 tests) 8ms
✓ src/acp/session.test.ts (1 test) 18ms
✓ src/channel-web.barrel.test.ts (1 test) 7ms
✓ src/auto-reply/thinking.test.ts (15 tests) 78ms
✓ src/channels/plugins/actions/discord/handle-action.test.ts (2 tests) 8ms
✓ src/commands/signal-install.test.ts (15 tests) 14ms
✓ src/browser/target-id.test.ts (4 tests) 6ms
✓ extensions/msteams/src/sent-message-cache.test.ts (1 test) 5ms
✓ extensions/feishu/src/targets.test.ts (3 tests) 6ms
✓ src/whatsapp/normalize.test.ts (8 tests) 15ms
✓ src/auto-reply/reply/subagents-utils.test.ts (5 tests) 7ms
✓ src/cli/argv.test.ts (11 tests) 37ms
✓ src/auto-reply/reply/memory-flush.test.ts (11 tests) 11ms
✓ src/auto-reply/reply/commands-info.test.ts (1 test) 18ms
✓ src/terminal/table.test.ts (5 tests) 10ms
✓ src/security/secret-equal.test.ts (4 tests) 16ms
✓ src/tui/tui-formatters.test.ts (8 tests) 8ms
✓ src/slack/http/registry.test.ts (5 tests) 10ms
✓ src/cli/browser-cli.test.ts (3 tests) 10ms
✓ src/memory/backend-config.test.ts (6 tests) 9ms
✓ src/channels/typing.test.ts (3 tests) 32ms
✓ src/infra/outbound/payloads.test.ts (5 tests) 8ms
✓ src/wizard/onboarding.completion.test.ts (2 tests) 20ms
✓ src/tui/tui-session-actions.test.ts (1 test) 7ms
✓ extensions/zalouser/src/channel.test.ts (1 test) 11ms

Test Files 1 failed | 92 passed (93)
Tests 1 failed | 987 passed | 1 skipped (989)
Start at 17:11:06
Duration 514.00s (transform 162.17s, setup 843.06s, import 1016.08s, tests 25.70s, environment 93ms)

✓ src/wizard/session.test.ts (3 tests) 10ms
✓ src/tts/prepare-text.test.ts (5 tests) 7ms
✓ src/web/inbound/access-control.pairing-history.test.ts (2 tests) 9ms
✓ src/pairing/pairing-messages.test.ts (6 tests) 6ms
✓ src/logging/console-timestamp.test.ts (4 tests) 24ms
✓ src/slack/channel-migration.test.ts (4 tests) 9ms
✓ src/cli/run-main.test.ts (4 tests) 17ms
✓ src/discord/monitor/exec-approvals.test.ts (17 tests) 10ms
✓ src/telegram/draft-stream.test.ts (3 tests) 8ms
✓ src/media-understanding/resolve.test.ts (6 tests) 8ms
✓ src/telegram/proxy.test.ts (1 test) 6ms
✓ src/daemon/runtime-paths.test.ts (5 tests) 7ms
✓ src/tui/tui-local-shell.test.ts (1 test) 45ms
✓ src/index.test.ts (6 tests) 13ms
✓ src/polls.test.ts (3 tests) 5ms
✓ src/infra/outbound/outbound-policy.test.ts (4 tests) 8ms
✓ src/tui/tui-overlays.test.ts (2 tests) 9ms
✓ src/telegram/accounts.test.ts (4 tests) 6ms
✓ src/config/config.talk-api-key-fallback.test.ts (2 tests) 11ms
✓ src/telegram/network-errors.test.ts (11 tests) 8ms
✓ src/config/runtime-overrides.test.ts (4 tests) 6ms
✓ src/acp/session-mapper.test.ts (2 tests) 19ms
✓ src/slack/resolve-channels.test.ts (2 tests) 10ms
✓ src/cli/cron-cli/shared.test.ts (2 tests) 7ms
✓ src/media-understanding/runner.vision-skip.test.ts (1 test) 7ms
✓ src/infra/home-dir.test.ts (8 tests) 7ms
✓ src/channels/plugins/config-writes.test.ts (4 tests) 7ms
✓ src/acp/event-mapper.test.ts (2 tests) 5ms
✓ src/cron/service.jobs.test.ts (3 tests) 6ms
✓ src/auto-reply/reply/reply-payloads.auto-threading.test.ts (6 tests) 7ms
✓ src/signal/probe.test.ts (2 tests) 4ms
✓ src/utils/transcript-tools.test.ts (7 tests) 7ms
✓ src/cli/wait.test.ts (1 test) 9ms
✓ src/utils/delivery-context.test.ts (5 tests) 7ms
✓ src/utils/boolean.test.ts (4 tests) 9ms
✓ src/markdown/whatsapp.test.ts (13 tests) 6ms
✓ src/wizard/onboarding.gateway-config.test.ts (2 tests) 11ms
✓ src/routing/session-key.test.ts (6 tests) 8ms
✓ src/infra/heartbeat-runner.cron-system-event-filter.test.ts (5 tests) 7ms
✓ src/channels/plugins/onboarding/signal.test.ts (6 tests) 6ms
✓ src/channels/location.test.ts (4 tests) 6ms
✓ src/web/accounts.test.ts (4 tests) 7ms
✓ src/plugins/slots.test.ts (4 tests) 7ms
✓ src/infra/outbound/format.test.ts (7 tests) 7ms
✓ src/auto-reply/media-note.test.ts (11 tests) 7ms
✓ src/slack/client.test.ts (3 tests) 7ms
✓ src/plugins/wired-hooks-gateway.test.ts (3 tests) 7ms
✓ src/discord/pluralkit.test.ts (3 tests) 6ms
✓ src/infra/env.test.ts (4 tests) 5ms
✓ src/agents/sandbox/fs-bridge.test.ts (1 test) 7ms
✓ src/cli/parse-bytes.test.ts (4 tests) 6ms
✓ src/terminal/restore.test.ts (1 test) 14ms
✓ src/agents/transcript-policy.test.ts (4 tests) 5ms
✓ src/telegram/draft-chunking.test.ts (3 tests) 5ms
✓ src/channels/plugins/normalize/signal.test.ts (5 tests) 7ms
✓ src/channels/registry.test.ts (4 tests) 6ms
✓ src/plugins/config-state.test.ts (7 tests) 5ms
✓ src/infra/outbound/envelope.test.ts (4 tests) 6ms
✓ src/infra/outbound/agent-delivery.test.ts (3 tests) 7ms
✓ src/tui/gateway-chat.test.ts (3 tests) 13ms
✓ src/link-understanding/detect.test.ts (4 tests) 6ms
✓ src/utils/message-channel.test.ts (2 tests) 5ms
✓ src/discord/token.test.ts (3 tests) 32ms
✓ src/channels/plugins/slack.actions.test.ts (1 test) 6ms
✓ src/cli/daemon-cli-compat.test.ts (2 tests) 7ms
✓ src/line/send.test.ts (9 tests) 7ms
✓ src/browser/cdp.helpers.test.ts (4 tests) 11ms
✓ src/auto-reply/reply/mentions.test.ts (4 tests) 10ms
✓ src/discord/probe.intents.test.ts (4 tests) 5ms
✓ src/daemon/paths.test.ts (6 tests) 6ms
✓ src/telegram/inline-buttons.test.ts (6 tests) 8ms
✓ src/utils/usage-format.test.ts (3 tests) 15ms
✓ src/channels/targets.test.ts (4 tests) 66ms
✓ src/telegram/voice.test.ts (3 tests) 11ms
✓ src/infra/agent-events.test.ts (3 tests) 19ms
✓ src/slack/monitor/thread-resolution.test.ts (1 test) 9ms
✓ src/infra/widearea-dns.test.ts (2 tests) 7ms
✓ src/config/sessions/reset.test.ts (4 tests) 32ms
✓ src/infra/fetch.test.ts (2 tests) 8ms
✓ src/logging/console-prefix.test.ts (5 tests) 8ms
✓ src/channels/sender-identity.test.ts (3 tests) 66ms
✓ src/telegram/network-config.test.ts (5 tests) 5ms
✓ src/media-understanding/format.test.ts (5 tests) 5ms
✓ src/daemon/systemd-availability.test.ts (2 tests) 6ms
✓ src/channels/plugins/load.test.ts (2 tests) 10ms
✓ src/config/commands.test.ts (2 tests) 5ms
✓ src/channels/plugins/normalize/imessage.test.ts (2 tests) 8ms
✓ src/auto-reply/reply/normalize-reply.test.ts (3 tests) 6ms
✓ src/node-host/runner.test.ts (3 tests) 19ms
✓ src/cli/parse-duration.test.ts (6 tests) 5ms
✓ src/cli/nodes-canvas.test.ts (2 tests) 5ms
✓ src/telegram/group-migration.test.ts (4 tests) 12ms
✓ src/channels/conversation-label.test.ts (5 tests) 13ms
✓ src/cron/isolated-agent/session.test.ts (3 tests) 7ms
✓ src/line/signature.test.ts (3 tests) 7ms
✓ src/plugins/source-display.test.ts (3 tests) 5ms
✓ src/signal/daemon.test.ts (4 tests) 5ms
✓ src/channels/mention-gating.test.ts (5 tests) 5ms
✓ src/browser/routes/utils.test.ts (3 tests) 6ms
✓ src/tui/tui-stream-assembler.test.ts (4 tests) 7ms
✓ src/config/config-paths.test.ts (2 tests) 17ms
✓ src/infra/tls/fingerprint.test.ts (1 test) 4ms
✓ src/imessage/probe.test.ts (1 test) 5ms
✓ src/media-understanding/scope.test.ts (2 tests) 5ms
✓ src/telegram/sent-message-cache.test.ts (3 tests) 7ms
✓ src/telegram/bot-message.test.ts (2 tests) 7ms
✓ src/channels/chat-type.test.ts (3 tests) 5ms
✓ src/channels/plugins/index.test.ts (1 test) 4ms
✓ src/tui/tui.test.ts (2 tests) 4ms
✓ src/daemon/systemd-unit.test.ts (3 tests) 5ms
✓ src/sessions/send-policy.test.ts (4 tests) 5ms
✓ src/signal/monitor/mentions.test.ts (3 tests) 5ms
✓ src/logging/parse-log-line.test.ts (3 tests) 4ms
✓ src/tui/tui-waiting.test.ts (2 tests) 5ms
✓ src/hooks/gmail-watcher.test.ts (1 test) 4ms

Test Files 613 passed (613)
Tests 4297 passed (4297)
Start at 17:11:06
Duration 541.60s (transform 279.28s, setup 4859.22s, import 2715.90s, tests 298.68s, environment 512ms)

 ELIFECYCLE  Test failed. See above for more details.

Thanks @omair445!

skyhawk14 pushed a commit to skyhawk14/openclaw that referenced this pull request Feb 13, 2026
…kens (openclaw#13767)

* fix(configure): reject literal "undefined" and "null" gateway auth tokens

* fix(configure): reject literal "undefined" and "null" gateway auth tokens

* fix(configure): validate gateway password prompt and harden token coercion (openclaw#13767) (thanks @omair445)

* test: remove unused vitest imports in baseline lint fixtures (openclaw#13767)

---------

Co-authored-by: Luna AI <[email protected]>
Co-authored-by: Peter Steinberger <[email protected]>
zhangyang-crazy-one pushed a commit to zhangyang-crazy-one/openclaw that referenced this pull request Feb 13, 2026
…kens (openclaw#13767)

* fix(configure): reject literal "undefined" and "null" gateway auth tokens

* fix(configure): reject literal "undefined" and "null" gateway auth tokens

* fix(configure): validate gateway password prompt and harden token coercion (openclaw#13767) (thanks @omair445)

* test: remove unused vitest imports in baseline lint fixtures (openclaw#13767)

---------

Co-authored-by: Luna AI <[email protected]>
Co-authored-by: Peter Steinberger <[email protected]>
@omair445
Copy link
Contributor Author

Thanks for merging @steipete! Glad this one made it in 🙏

steipete added a commit to azade-c/openclaw that referenced this pull request Feb 14, 2026
…kens (openclaw#13767)

* fix(configure): reject literal "undefined" and "null" gateway auth tokens

* fix(configure): reject literal "undefined" and "null" gateway auth tokens

* fix(configure): validate gateway password prompt and harden token coercion (openclaw#13767) (thanks @omair445)

* test: remove unused vitest imports in baseline lint fixtures (openclaw#13767)

---------

Co-authored-by: Luna AI <[email protected]>
Co-authored-by: Peter Steinberger <[email protected]>
GwonHyeok pushed a commit to learners-superpumped/openclaw that referenced this pull request Feb 15, 2026
…kens (openclaw#13767)

* fix(configure): reject literal "undefined" and "null" gateway auth tokens

* fix(configure): reject literal "undefined" and "null" gateway auth tokens

* fix(configure): validate gateway password prompt and harden token coercion (openclaw#13767) (thanks @omair445)

* test: remove unused vitest imports in baseline lint fixtures (openclaw#13767)

---------

Co-authored-by: Luna AI <[email protected]>
Co-authored-by: Peter Steinberger <[email protected]>
cloud-neutral pushed a commit to cloud-neutral-toolkit/openclawbot.svc.plus that referenced this pull request Feb 15, 2026
…kens (openclaw#13767)

* fix(configure): reject literal "undefined" and "null" gateway auth tokens

* fix(configure): reject literal "undefined" and "null" gateway auth tokens

* fix(configure): validate gateway password prompt and harden token coercion (openclaw#13767) (thanks @omair445)

* test: remove unused vitest imports in baseline lint fixtures (openclaw#13767)

---------

Co-authored-by: Luna AI <[email protected]>
Co-authored-by: Peter Steinberger <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

commands Command implementations size: S

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: openclaw configure writes literal string "undefined" as gateway.auth.token

2 participants

Comments