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
test-minidb
1m 48s
build
1m 52s
test-pi-tui
46s
test-windows
0s
lint
1m 8s
typecheck
2m 34s
test
2s
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.
|
|
[agent-core-v2] test/agent/toolExecutor/toolExecutor.test.ts > truncation pipeline > recovers an expanded Glob listing beyond spill retention using complete saved pages:
packages/agent-core-v2/test/agent/toolExecutor/toolExecutor.test.ts#L1299
AssertionError: expected true not to be true // Object.is equality
❯ test/agent/toolExecutor/toolExecutor.test.ts:1299:35
|
|
[agent-core-v2] test/agent/toolExecutor/toolExecutor.test.ts > truncation pipeline > recovers every Glob match through spill and Read when the match limit is disabled:
packages/agent-core-v2/test/agent/toolExecutor/toolExecutor.test.ts#L1256
AssertionError: expected true not to be true // Object.is equality
❯ test/agent/toolExecutor/toolExecutor.test.ts:1256:33
|
|
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/survey-controller.test.ts > SurveyController interaction > counts word-wrapped title rows instead of dividing characters:
apps/pythinker-code/test/tui/controllers/survey-controller.test.ts#L1637
AssertionError: expected [] to not have a length of +0
❯ test/tui/controllers/survey-controller.test.ts:1637:44
|
|
[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-plugin-unicorn(no-array-sort):
packages/agent-core-v2/src/features/reminder/reminderService.ts#L165
Use `Array#toSorted()` instead of `Array#sort()`.
|
|
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"
|
|
eslint(no-console):
packages/agent-core-v2/src/_base/errors/unexpectedError.ts#L21
Unexpected console statement.
|
|
eslint(no-console):
packages/agent-core-v2/src/_base/errors/unexpectedError.ts#L4
Unexpected console statement.
|
|
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"
|