Skip to content

chore: upstream reconcile through reference 99eaa993b #1401

chore: upstream reconcile through reference 99eaa993b

chore: upstream reconcile through reference 99eaa993b #1401

Triggered via pull request September 19, 2026 20:14
Status Failure
Total duration 3m 40s
Artifacts –

ci.yml

on: pull_request
Matrix: test
Fit to window
Zoom out
Zoom in

Annotations

30 errors, 20 warnings, and 11 notices
test (4)
Process completed with exit code 1.
[cli] test/tui/components/dialogs/model-selector.test.ts > ModelSelectorComponent > keeps the live Off state when switching to another thinking-capable model: apps/pythinker-code/test/tui/components/dialogs/model-selector.test.ts#L241
AssertionError: expected '─────────────────────────────────────…' to contain '[ Off ]' - Expected + Received - [ Off ] + ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── + Select a model + ↑↓ navigate · Enter select · Esc cancel + + Pythinker Current oauth-example ← current + ❯ Pythinker Other oauth-example + + Thinking (←→ to switch) + [ On ] Off + + ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ❯ test/tui/components/dialogs/model-selector.test.ts:241:26
[cli] test/tui/components/dialogs/model-selector.test.ts > ModelSelectorComponent > keeps the thinking draft when moving across models: apps/pythinker-code/test/tui/components/dialogs/model-selector.test.ts#L221
AssertionError: expected "vi.fn()" to be called with arguments: [ { alias: 'thinking', …(1) } ] Received: 1st vi.fn() call: [ { "alias": "thinking", - "thinking": "on", + "thinking": "off", }, ] Number of calls: 1 ❯ test/tui/components/dialogs/model-selector.test.ts:221:22
[cli] test/cli/run-shell.test.ts > runShell > tracks exit and prints resume instructions from the TUI exit handler: apps/pythinker-code/test/cli/run-shell.test.ts#L839
AssertionError: expected "vi.fn()" to be called with arguments: [ [ Socket{ …(22), …(15) }, …(1) ] ] Number of calls: 0 ❯ test/cli/run-shell.test.ts:839:32
test (1)
Process completed with exit code 1.
test (5)
Process completed with exit code 1.
[cli] test/tui/commands/web.test.ts > handleRemoteControlCommand > starts the tunnel and saves a token-free session QR code: apps/pythinker-code/test/tui/commands/web.test.ts#L245
AssertionError: expected "vi.fn()" to be called with arguments: [ ObjectContaining{…} ] Received: 1st vi.fn() call: [ - ObjectContaining { + { + "clientVersion": "pythinker-code/0.42.0", "homeDir": "/tmp/pythinker-rc-qrcode-0Z3pLT/custom-home", "localOrigin": "http://127.0.0.1:58627", - "localServerToken": Any<Function>, + "localServerToken": "local-server-token", + "onStatus": [Function onStatus], }, ] Number of calls: 1 ❯ test/tui/commands/web.test.ts:245:40
[cli] test/tui/commands/web.test.ts > handleRemoteControlCommand > stays in the TUI with a readable error when no relay key is configured: apps/pythinker-code/test/tui/commands/web.test.ts#L161
AssertionError: expected "vi.fn()" to be called with arguments: [ StringContaining "relay key" ] Number of calls: 0 ❯ test/tui/commands/web.test.ts:161:28
[cli] test/tui/commands/web.test.ts > handleWebCommand > starts the new server on takeover, printing the banner and opening the deep link: apps/pythinker-code/test/tui/commands/web.test.ts#L142
AssertionError: expected '\n ▐█▛█▛█▌ Pythinker server ready …' to contain ' ●' - Expected + Received - ● + + ▐█▛█▛█▌ Pythinker server ready 0.42.0 + ▐█████▌ Local web UI is available from this machine. + + Local: http://127.0.0.1:58627/#token=tok-1 + Network: off use --host to enable + + Token: tok-1 + + Logs: off use --log-level info to enable + Stop: Ctrl+C + + Session: http://127.0.0.1:58627/sessions/ses-1#token=tok-1 + ❯ test/tui/commands/web.test.ts:142:66
[cli] test/cli/v2-run-print.test.ts > runV2Print > initializes the v1 telemetry pipeline alongside the cloud appender: apps/pythinker-code/test/cli/v2-run-print.test.ts#L608
AssertionError: expected "vi.fn()" to be called with arguments: [ { …(9) } ] Received: 1st vi.fn() call: [ { "appName": "pythinker-code-cli", "deviceId": "device-1", - "endpoint": Any<Function>, - "getAccessToken": Any<Function>, + "endpoint": [Function endpoint], "homeDir": "/home/runner/.pythinker-code", "model": "k2", - "onUnexpectedError": Any<Function>, + "onUnexpectedError": [Function onUnexpectedError], "uiMode": "print", "version": "1.2.3-test", }, ] Number of calls: 1 ❯ test/cli/v2-run-print.test.ts:608:39
[agent-gateway] test/search/searchRoute.test.ts > server-v2 /api/v1/search > serves literal mode through the wire: packages/agent-gateway/test/search/searchRoute.test.ts#L207
AssertionError: expected true to be false // Object.is equality - Expected + Received - false + true ❯ test/search/searchRoute.test.ts:207:66
[agent-gateway] test/search/searchRoute.test.ts > server-v2 /api/v1/search > rejects invalid bodies with 40001: packages/agent-gateway/test/search/searchRoute.test.ts#L184
AssertionError: expected +0 to be 40001 // Object.is equality - Expected + Received - 40001 + 0 ❯ test/search/searchRoute.test.ts:184:31
[agent-gateway] test/prompts.test.ts > server-v2 /api/v1 prompts > attaches a server-local file by path without copying it: packages/agent-gateway/test/prompts.test.ts#L1451
AssertionError: expected { type: 'text', …(1) } to deeply equal { type: 'text', …(1) } - Expected + Received { - "text": "Attached file \"notes.txt\" (application/octet-stream, 20 bytes): /tmp/pythinker-attach-path-S72UXJ/notes.txt open it with the Read tool", + "text": "Attached file \"notes.txt\" (application/octet-stream, 20 bytes): /tmp/pythinker-attach-path-S72UXJ/notes.txt — open it with the Read tool", "type": "text", } ❯ test/prompts.test.ts:1451:26
[cli] test/tui/pythinker-tui-startup.test.ts > PythinkerTUI startup > logs login failures with session context: packages/node-sdk/src/login/platform-values.ts#L4
TypeError: Cannot read properties of undefined (reading 'startsWith') ❯ catalogProviderIdFromPlatformValue ../../packages/node-sdk/src/login/platform-values.ts:4:14 ❯ runLogin ../../packages/node-sdk/src/login/flows.ts:58:29 ❯ Module.handleLoginCommand src/tui/commands/auth.ts:95:3 ❯ test/tui/pythinker-tui-startup.test.ts:2152:7
[cli] test/tui/pythinker-tui-startup.test.ts > PythinkerTUI startup > tracks login with already_logged_in when a token already exists: packages/node-sdk/src/login/platform-values.ts#L4
TypeError: Cannot read properties of undefined (reading 'startsWith') ❯ catalogProviderIdFromPlatformValue ../../packages/node-sdk/src/login/platform-values.ts:4:14 ❯ runLogin ../../packages/node-sdk/src/login/flows.ts:58:29 ❯ Module.handleLoginCommand src/tui/commands/auth.ts:95:3 ❯ test/tui/pythinker-tui-startup.test.ts:2114:5
[cli] test/tui/pythinker-tui-startup.test.ts > PythinkerTUI startup > does not override active session thinking when configured thinking is enabled after OAuth login: packages/node-sdk/src/login/platform-values.ts#L4
TypeError: Cannot read properties of undefined (reading 'startsWith') ❯ catalogProviderIdFromPlatformValue ../../packages/node-sdk/src/login/platform-values.ts:4:14 ❯ runLogin ../../packages/node-sdk/src/login/flows.ts:58:29 ❯ Module.handleLoginCommand src/tui/commands/auth.ts:95:3 ❯ test/tui/pythinker-tui-startup.test.ts:2080:5
[cli] test/tui/pythinker-tui-startup.test.ts > PythinkerTUI startup > preserves fresh startup yolo and plan intent after OAuth login: packages/node-sdk/src/login/platform-values.ts#L4
TypeError: Cannot read properties of undefined (reading 'startsWith') ❯ catalogProviderIdFromPlatformValue ../../packages/node-sdk/src/login/platform-values.ts:4:14 ❯ runLogin ../../packages/node-sdk/src/login/flows.ts:58:29 ❯ Module.handleLoginCommand src/tui/commands/auth.ts:95:3 ❯ test/tui/pythinker-tui-startup.test.ts:2050:5
[cli] test/tui/pythinker-tui-startup.test.ts > PythinkerTUI startup > hydrates permission defaults after a session-less v2 login without a default model: packages/node-sdk/src/login/platform-values.ts#L4
TypeError: Cannot read properties of undefined (reading 'startsWith') ❯ catalogProviderIdFromPlatformValue ../../packages/node-sdk/src/login/platform-values.ts:4:14 ❯ runLogin ../../packages/node-sdk/src/login/flows.ts:58:29 ❯ Module.handleLoginCommand src/tui/commands/auth.ts:95:3 ❯ test/tui/pythinker-tui-startup.test.ts:463:5
[cli] test/tui/pythinker-tui-startup.test.ts > PythinkerTUI startup > hydrates permission/plan defaults after a session-less v2 login: packages/node-sdk/src/login/platform-values.ts#L4
TypeError: Cannot read properties of undefined (reading 'startsWith') ❯ catalogProviderIdFromPlatformValue ../../packages/node-sdk/src/login/platform-values.ts:4:14 ❯ runLogin ../../packages/node-sdk/src/login/flows.ts:58:29 ❯ Module.handleLoginCommand src/tui/commands/auth.ts:95:3 ❯ test/tui/pythinker-tui-startup.test.ts:426:5
[cli] test/cli/export.test.ts > pythinker export > builds the v2 harness by default: apps/pythinker-code/test/cli/export.test.ts#L564
AssertionError: expected "vi.fn()" to be called 1 times, but got 0 times ❯ test/cli/export.test.ts:564:49
[klient] test/e2e/legacy/client.test.ts > DaemonClient session action helpers > model catalog helpers call the catalog and action-suffix routes: packages/klient/test/e2e/legacy/client.test.ts#L463
AssertionError: expected [ [ 'GET', …(1) ], …(4) ] to deeply equal [ [ 'GET', …(1) ], …(4) ] - Expected + Received @@ -7,11 +7,11 @@ "GET", "http://server.example.test/api/v1/models", ], [ "POST", - "http://server.example.test/api/v1/models/pythinker-code%2Fkimi-for-coding:set_default", + "http://server.example.test/api/v1/models/openai%2Fgpt-4o:set_default", ], [ "GET", "http://server.example.test/api/v1/providers", ], ❯ test/e2e/legacy/client.test.ts:463:63
[agent-gateway] test/tasks.test.ts > server-v2 /api/v1/sessions/{sid}/tasks > lists registered tasks with mapped kind/status and wire-shaped fields: packages/agent-gateway/test/tasks.test.ts#L221
AssertionError: expected { id: 'test-ye00skeu', …(12) } to match object { id: 'test-ye00skeu', …(11) } (3 matching properties omitted from actual) - Expected + Received @@ -1,22 +1,11 @@ { "agent_id": "sub-1", - "current_routing_env_revision": "route-env:v1:aaa", "id": "test-ye00skeu", "kind": "subagent", "model": "provider/secondary", "parent_tool_call_id": "call-parent-1", - "routing": { - "feature_source": "env", - "model_source": "policy-pool", - "operation": "spawn", - "policy_mode": "pool", - "policy_source": "config", - "profile_source": "requested", - "route_decision": "route-decision:v1:bbb", - "routing_env_revision": "route-env:v1:aaa", - }, "run_in_background": true, "session_id": "session_4c9e5d8f-e947-4fcd-9f87-c86558aa5d5d", "status": "running", "subagent_type": "explore", "thinking_effort": "low", ❯ test/tasks.test.ts:221:31
[agent-gateway] test/subagentRosterTracker.test.ts > SubagentRosterTracker > carries the routing provenance and current revision from subagent.spawned: packages/agent-gateway/test/subagentRosterTracker.test.ts#L44
AssertionError: expected [ { id: 'agent-r', …(14) } ] to deeply equal [ ObjectContaining{…} ] - Expected + Received [ { - "current_routing_env_revision": "route-env:v1:new", + "created_at": "2026-09-19T20:16:31.639Z", + "current_routing_env_revision": undefined, + "description": "task agent-r", + "dynamic_workflow_index": 0, "id": "agent-r", - "routing": { - "feature_source": "default", - "model_source": "resume-existing", - "operation": "resume", - "policy_mode": "inherit", - "policy_source": "default", - "profile_source": "resume-existing", - "route_decision": "route-decision:v1:x", - "routing_env_revision": "route-env:v1:old", - }, + "kind": "subagent", + "model": undefined, + "parent_tool_call_id": "tc_dynamic_workflow_1", + "routing": undefined, + "run_in_background": false, + "session_id": "sess_1", + "status": "running", + "subagent_phase": "queued", + "subagent_type": "pythinker-subagent", + "thinking_effort": undefined, }, ] ❯ test/subagentRosterTracker.test.ts:44:24
test (2)
Process completed with exit code 1.
[cli] test/tui/controllers/plugin-update-notifier.test.ts > PluginUpdateNotifier > resolves plugin tools whose qualified name core truncated before the separator: apps/pythinker-code/test/tui/controllers/plugin-update-notifier.test.ts#L186
AssertionError: expected 60 to be 55 // Object.is equality - Expected + Received - 55 + 60 ❯ test/tui/controllers/plugin-update-notifier.test.ts:186:40
[cli] test/tui/pythinker-tui-message-flow.test.ts > PythinkerTUI message flow > marks only core user-cancellation subagent failures as cancelled: apps/pythinker-code/test/tui/pythinker-tui-message-flow.test.ts#L6343
AssertionError: expected ' \n ─ Agent DynamicWorkflow ─ Revie…' to contain '✗ The user manually interrupted this …' - Expected + Received - ✗ The user manually interrupted this subagent x. + + ─ Agent DynamicWorkflow ─ Review changed files ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── + + 001 ⊘ Cancelled. 002 [⣀⣀⣀⣀⣀⣀⣀⣀] ✗ The user manually interrupted this subag + + 🌑 Aborted. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + ❯ test/tui/pythinker-tui-message-flow.test.ts:6343:24
test
Process completed with exit code 1.
test-pi-tui
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
lint
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
eslint-plugin-import(no-duplicates): packages/agent-core-v2/src/_base/di/scope.ts#L3
Module './instantiation' is imported more than once in this file
eslint(no-console): packages/agent-core-v2/src/_base/di/lifecycle.ts#L640
Unexpected console statement.
eslint(no-console): packages/agent-core-v2/src/_base/di/lifecycle.ts#L558
Unexpected console statement.
eslint(no-loop-func): packages/agent-core-v2/src/_base/event.ts#L211
Function declared in a loop contains unsafe references to variable(s)
eslint(no-loop-func): packages/agent-core-v2/src/_base/event.ts#L206
Function declared in a loop contains unsafe references to variable(s)
eslint-plugin-unicorn(catch-error-name): packages/agent-core-v2/src/_base/errors/unexpectedError.ts#L28
The catch parameter "err" should be named "error"
eslint-plugin-unicorn(catch-error-name): packages/agent-core-v2/src/_base/errors/unexpectedError.ts#L20
The catch parameter "handlerErr" should be named "error"
test-minidb
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
build
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
typecheck
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
test (4)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
test (1)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
test (5)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
test (3)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
test (2)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
test-pi-tui
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
lint
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
test-minidb
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
build
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
typecheck
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
test (4)
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
test (1)
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
test (5)
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
test (3)
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
test (2)
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
test
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"