chore: upstream reconcile through reference 99eaa993b #1349
Triggered via pull request
September 19, 2026 16:15
Status
Failure
Total duration
5m 22s
Artifacts
–
ci.yml
on: pull_request
Matrix: test
test-minidb
1m 45s
build
1m 45s
test-pi-tui
1m 3s
test-windows
lint
1m 11s
typecheck
1m 19s
test
3s
Annotations
63 errors, 20 warnings, and 11 notices
|
eslint(no-unused-vars):
apps/pythinker-code/src/tui/components/messages/expert-talk-panel.ts#L7
Type 'ExpertTalkStatusV1' is imported but never used.
|
|
eslint(no-unused-vars):
apps/pythinker-code/src/tui/components/messages/expert-talk-panel.ts#L4
Type 'ExpertTalkRunV1' is imported but never used.
|
|
eslint(no-unused-vars):
apps/pythinker-code/src/tui/components/panes/btw-panel.ts#L8
Type 'PythinkerMarkdownTheme' is imported but never used.
|
|
eslint(no-unused-vars):
apps/pythinker-code/src/tui/commands/auth.ts#L2
Function 'platformValue' is declared but never used.
|
|
eslint(no-unused-vars):
packages/agent-gateway/src/transport/ws/v1/subagentRosterTracker.ts#L3
Identifier 'toRoutingWire' is imported but never used.
|
|
eslint(no-unused-vars):
apps/pythinker-code/src/cli/telemetry.ts#L23
Identifier 'createPythinkerCodeHostIdentity' is imported but never used.
|
|
eslint(no-unused-vars):
apps/pythinker-code/src/cli/telemetry.ts#L3
Identifier 'PythinkerAuthFacade' is imported but never used.
|
|
eslint(no-dupe-keys):
apps/pythinker-code/test/tui/controllers/session-event-handler-plugin-updates.test.ts#L62
Duplicate key 'surveyController'
|
|
eslint(no-unused-vars):
apps/pythinker-code/src/tui/components/messages/agent-dynamic-workflow-progress.ts#L827
Variable 'estimate' is declared but never used. Unused variables should start with a '_'.
|
|
eslint(no-unused-vars):
apps/pythinker-code/src/tui/components/messages/agent-dynamic-workflow-progress.ts#L799
Variable 'progressEstimate' is declared but never used. Unused variables should start with a '_'.
|
|
build
Process completed with exit code 1.
|
|
[pythinker-sdk] test/session-prompt-events.test.ts > Session.prompt events > persists only conversation through the selected turn across resume:
packages/agent-core-v2/src/llm-adapter/model/catalog-service.ts#L307
Error2: Model "fake-model" is not configured in config.toml.
❯ ModelCatalog.buildModel ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:307:13
❯ ModelCatalog.entry ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:136:24
❯ ModelCatalog.get ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:112:17
❯ AgentProfileService.bind ../agent-core-v2/src/agent/profile/profileService.ts:296:37
❯ SDKRpcClientV2.materializeMainAgent src/sdk-rpc-client-v2.ts:1741:9
❯ SDKRpcClientV2.agentFacade src/sdk-rpc-client-v2.ts:1779:5
❯ SDKRpcClientV2.prompt src/sdk-rpc-client-v2.ts:2026:19
❯ Session.prompt src/session.ts:213:5
❯ runPrompt test/session-prompt-events.test.ts:801:3
❯ test/session-prompt-events.test.ts:552:7
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { code: 'config.invalid', details: { model: 'fake-model' } }
|
|
[pythinker-sdk] test/session-prompt-events.test.ts > Session.prompt events > starts btw through RPC as a forked subagent without prompt metadata updates:
packages/agent-core-v2/src/llm-adapter/model/catalog-service.ts#L307
Error2: Model "fake-model" is not configured in config.toml.
❯ ModelCatalog.buildModel ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:307:13
❯ ModelCatalog.entry ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:136:24
❯ ModelCatalog.get ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:112:17
❯ AgentProfileService.bind ../agent-core-v2/src/agent/profile/profileService.ts:296:37
❯ SDKRpcClientV2.materializeMainAgent src/sdk-rpc-client-v2.ts:1741:9
❯ SDKRpcClientV2.agentFacade src/sdk-rpc-client-v2.ts:1779:5
❯ SDKRpcClientV2.prompt src/sdk-rpc-client-v2.ts:2026:19
❯ Session.prompt src/session.ts:213:5
❯ test/session-prompt-events.test.ts:486:7
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { code: 'config.invalid', details: { model: 'fake-model' } }
|
|
[pythinker-sdk] test/session-prompt-events.test.ts > Session.prompt events > includes persisted subagent replay only when resume explicitly requests it:
packages/agent-core-v2/src/llm-adapter/model/catalog-service.ts#L307
Error2: Model "fake-model" is not configured in config.toml.
❯ ModelCatalog.buildModel ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:307:13
❯ ModelCatalog.entry ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:136:24
❯ ModelCatalog.get ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:112:17
❯ AgentProfileService.bind ../agent-core-v2/src/agent/profile/profileService.ts:296:37
❯ SDKRpcClientV2.materializeMainAgent src/sdk-rpc-client-v2.ts:1741:9
❯ SDKRpcClientV2.generateAgentsMd src/sdk-rpc-client-v2.ts:2135:5
❯ Session.init src/session.ts:331:5
❯ test/session-prompt-events.test.ts:444:7
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { code: 'config.invalid', details: { model: 'fake-model' } }
|
|
[pythinker-sdk] test/session-prompt-events.test.ts > Session.prompt events > carries the prompt on the public turn.started event for subagent system triggers:
packages/agent-core-v2/src/llm-adapter/model/catalog-service.ts#L307
Error2: Model "fake-model" is not configured in config.toml.
❯ ModelCatalog.buildModel ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:307:13
❯ ModelCatalog.entry ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:136:24
❯ ModelCatalog.get ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:112:17
❯ AgentProfileService.bind ../agent-core-v2/src/agent/profile/profileService.ts:296:37
❯ SDKRpcClientV2.materializeMainAgent src/sdk-rpc-client-v2.ts:1741:9
❯ SDKRpcClientV2.generateAgentsMd src/sdk-rpc-client-v2.ts:2135:5
❯ Session.init src/session.ts:331:5
❯ test/session-prompt-events.test.ts:416:7
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { code: 'config.invalid', details: { model: 'fake-model' } }
|
|
[pythinker-sdk] test/session-prompt-events.test.ts > Session.prompt events > runs init through generateAgentsMd RPC as a subagent system trigger without prompt metadata updates:
packages/agent-core-v2/src/llm-adapter/model/catalog-service.ts#L307
Error2: Model "fake-model" is not configured in config.toml.
❯ ModelCatalog.buildModel ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:307:13
❯ ModelCatalog.entry ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:136:24
❯ ModelCatalog.get ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:112:17
❯ AgentProfileService.bind ../agent-core-v2/src/agent/profile/profileService.ts:296:37
❯ SDKRpcClientV2.materializeMainAgent src/sdk-rpc-client-v2.ts:1741:9
❯ SDKRpcClientV2.generateAgentsMd src/sdk-rpc-client-v2.ts:2135:5
❯ Session.init src/session.ts:331:5
❯ test/session-prompt-events.test.ts:370:7
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { code: 'config.invalid', details: { model: 'fake-model' } }
|
|
[pythinker-sdk] test/session-prompt-events.test.ts > Session.prompt events > supports onEvent unsubscribe without touching runtime wire directly:
packages/agent-core-v2/src/llm-adapter/model/catalog-service.ts#L307
Error2: Model "fake-model" is not configured in config.toml.
❯ ModelCatalog.buildModel ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:307:13
❯ ModelCatalog.entry ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:136:24
❯ ModelCatalog.get ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:112:17
❯ AgentProfileService.bind ../agent-core-v2/src/agent/profile/profileService.ts:296:37
❯ SDKRpcClientV2.materializeMainAgent src/sdk-rpc-client-v2.ts:1741:9
❯ SDKRpcClientV2.agentFacade src/sdk-rpc-client-v2.ts:1779:5
❯ SDKRpcClientV2.prompt src/sdk-rpc-client-v2.ts:2026:19
❯ Session.prompt src/session.ts:213:5
❯ test/session-prompt-events.test.ts:345:7
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { code: 'config.invalid', details: { model: 'fake-model' } }
|
|
[pythinker-sdk] test/session-prompt-events.test.ts > Session.prompt events > emits mapped turn events through Session.onEvent:
packages/agent-core-v2/src/llm-adapter/model/catalog-service.ts#L307
Error2: Model "fake-model" is not configured in config.toml.
❯ ModelCatalog.buildModel ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:307:13
❯ ModelCatalog.entry ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:136:24
❯ ModelCatalog.get ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:112:17
❯ AgentProfileService.bind ../agent-core-v2/src/agent/profile/profileService.ts:296:37
❯ SDKRpcClientV2.materializeMainAgent src/sdk-rpc-client-v2.ts:1741:9
❯ SDKRpcClientV2.agentFacade src/sdk-rpc-client-v2.ts:1779:5
❯ SDKRpcClientV2.prompt src/sdk-rpc-client-v2.ts:2026:19
❯ Session.prompt src/session.ts:213:5
❯ test/session-prompt-events.test.ts:299:7
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { code: 'config.invalid', details: { model: 'fake-model' } }
|
|
[pythinker-sdk] test/session-prompt-events.test.ts > Session.prompt events > persists sanitized prompt metadata without marking the title custom:
packages/agent-core-v2/src/llm-adapter/model/catalog-service.ts#L307
Error2: Model "fake-model" is not configured in config.toml.
❯ ModelCatalog.buildModel ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:307:13
❯ ModelCatalog.entry ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:136:24
❯ ModelCatalog.get ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:112:17
❯ AgentProfileService.bind ../agent-core-v2/src/agent/profile/profileService.ts:296:37
❯ SDKRpcClientV2.materializeMainAgent src/sdk-rpc-client-v2.ts:1741:9
❯ SDKRpcClientV2.agentFacade src/sdk-rpc-client-v2.ts:1779:5
❯ SDKRpcClientV2.prompt src/sdk-rpc-client-v2.ts:2026:19
❯ Session.prompt src/session.ts:213:5
❯ test/session-prompt-events.test.ts:235:7
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { code: 'config.invalid', details: { model: 'fake-model' } }
|
|
[pythinker-sdk] test/session-prompt-events.test.ts > Session.prompt events > preserves existing custom metadata when an SDK metadata patch is resumed:
packages/agent-core-v2/src/llm-adapter/model/catalog-service.ts#L307
Error2: Model "fake-model" is not configured in config.toml.
❯ ModelCatalog.buildModel ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:307:13
❯ ModelCatalog.entry ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:136:24
❯ ModelCatalog.get ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:112:17
❯ AgentProfileService.bind ../agent-core-v2/src/agent/profile/profileService.ts:296:37
❯ SDKRpcClientV2.materializeMainAgent src/sdk-rpc-client-v2.ts:1741:9
❯ SDKRpcClientV2.createGoal src/sdk-rpc-client-v2.ts:2253:19
❯ test/session-prompt-events.test.ts:198:7
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { code: 'config.invalid', details: { model: 'fake-model' } }
|
|
[pythinker-sdk] test/session-prompt-events.test.ts > Session.prompt events > continues notifying sessions after disabling and restarting with identical prompt and tools:
packages/agent-core-v2/src/llm-adapter/model/catalog-service.ts#L307
Error2: Model "fake-model" is not configured in config.toml.
❯ ModelCatalog.buildModel ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:307:13
❯ ModelCatalog.entry ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:136:24
❯ ModelCatalog.get ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:112:17
❯ AgentProfileService.bind ../agent-core-v2/src/agent/profile/profileService.ts:296:37
❯ SDKRpcClientV2.materializeMainAgent src/sdk-rpc-client-v2.ts:1741:9
❯ SDKRpcClientV2.agentFacade src/sdk-rpc-client-v2.ts:1779:5
❯ SDKRpcClientV2.prompt src/sdk-rpc-client-v2.ts:2026:19
❯ Session.prompt src/session.ts:213:5
❯ test/session-prompt-events.test.ts:162:9
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { code: 'config.invalid', details: { model: 'fake-model' } }
|
|
[agent-gateway] test/modelCatalog.test.ts > server-v2 /api/v1 model/provider catalog > refreshes OAuth provider models through POST /providers:refresh:
packages/agent-gateway/test/modelCatalog.test.ts#L339
AssertionError: expected { changed: [], unchanged: [], …(1) } to deeply equal { changed: [ { …(4) } ], …(2) }
- Expected
+ Received
{
- "changed": [
- {
- "added": 1,
- "provider_id": "openai",
- "provider_name": "Pythinker Code",
- "removed": 0,
- },
- ],
+ "changed": [],
"failed": [],
"unchanged": [],
}
❯ test/modelCatalog.test.ts:339:23
|
|
[agent-gateway] test/modelCatalog.test.ts > server-v2 /api/v1 model/provider catalog > sets the global default model and reflects it in /config:
packages/agent-gateway/test/modelCatalog.test.ts#L237
AssertionError: expected 40413 to be +0 // Object.is equality
- Expected
+ Received
- 0
+ 40413
❯ test/modelCatalog.test.ts:237:23
|
|
[agent-gateway] test/modelCatalog.test.ts > server-v2 /api/v1 model/provider catalog > lists providers and returns a single provider by id:
packages/agent-gateway/test/modelCatalog.test.ts#L197
AssertionError: expected [ { id: 'pythinker', …(5) }, …(1) ] to deeply equal [ { id: 'pythinker', …(6) }, …(1) ]
- Expected
+ Received
[
{
"base_url": "https://api.example.test/v1",
- "default_model": "k2",
"has_api_key": true,
"id": "pythinker",
- "models": [
- "k2",
- "turbo",
- ],
+ "models": [],
"status": "connected",
"type": "pythinker",
},
{
"has_api_key": false,
"id": "openai",
- "models": [
- "gpt4o",
- ],
+ "models": [],
"status": "unconfigured",
"type": "openai",
},
]
❯ test/modelCatalog.test.ts:197:34
|
|
[agent-gateway] test/modelCatalog.test.ts > server-v2 /api/v1 model/provider catalog > lists configured models as selectable aliases:
packages/agent-gateway/test/modelCatalog.test.ts#L151
AssertionError: expected [] to deeply equal [ …(3) ]
- Expected
+ Received
- [
- {
- "capabilities": [
- "thinking",
- ],
- "display_name": "Kimi K2",
- "max_context_size": 131072,
- "model": "k2",
- "provider": "pythinker",
- },
- {
- "display_name": "Pythinker Turbo",
- "max_context_size": 32768,
- "model": "turbo",
- "provider": "pythinker",
- },
- {
- "display_name": "gpt-4o",
- "max_context_size": 128000,
- "model": "gpt4o",
- "provider": "openai",
- },
- ]
+ []
❯ test/modelCatalog.test.ts:151:29
|
|
[agent-gateway] test/auth.test.ts > server-v2 GET /api/v1/auth > returns models_ready=true for a providerless flat default model:
packages/agent-gateway/test/auth.test.ts#L148
AssertionError: expected false to be true // Object.is equality
- Expected
+ Received
- true
+ false
❯ test/auth.test.ts:148:34
|
|
[agent-gateway] test/auth.test.ts > server-v2 GET /api/v1/auth > returns models_ready=true when the default model resolves to a configured provider:
packages/agent-gateway/test/auth.test.ts#L86
AssertionError: expected { ready: false, …(3) } to deeply equal { models_ready: true, …(2) }
- Expected
+ Received
{
- "managed_provider": null,
- "models_ready": true,
+ "default_model": "x",
+ "models_ready": false,
"providers_count": 1,
+ "ready": false,
}
❯ test/auth.test.ts:86:29
|
|
[agent-gateway] test/auth.test.ts > server-v2 GET /api/v1/auth > returns models_ready=false with an empty snapshot on empty config:
packages/agent-gateway/test/auth.test.ts#L63
AssertionError: expected { ready: false, …(3) } to deeply equal { models_ready: false, …(2) }
- Expected
+ Received
{
- "managed_provider": null,
+ "default_model": null,
"models_ready": false,
"providers_count": 0,
+ "ready": false,
}
❯ test/auth.test.ts:63:29
|
|
[extension] test/workspace-paths.test.ts:
apps/vscode/src/runtime/pythinker-runtime.ts#L11
Error: Cannot find module './legacy-approval' imported from /home/runner/work/pythinker-code/pythinker-code/apps/vscode/src/runtime/pythinker-runtime.ts
❯ src/runtime/pythinker-runtime.ts:11:1
❯ src/handlers/chat.handler.ts:11:1
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { code: 'ERR_MODULE_NOT_FOUND' }
|
|
[extension] test/session-runtime.test.ts:
apps/vscode/src/runtime/session-runtime.ts#L20
Error: Cannot find module './legacy-approval' imported from /home/runner/work/pythinker-code/pythinker-code/apps/vscode/src/runtime/session-runtime.ts
❯ src/runtime/session-runtime.ts:20:1
❯ test/session-runtime.test.ts:24:1
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { code: 'ERR_MODULE_NOT_FOUND' }
|
|
[extension] test/legacy-migration.manager.test.ts:
apps/vscode/test/legacy-migration.manager.test.ts#L14
Error: Cannot find module '../src/migration' imported from /home/runner/work/pythinker-code/pythinker-code/apps/vscode/test/legacy-migration.manager.test.ts
❯ test/legacy-migration.manager.test.ts:14:1
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { code: 'ERR_MODULE_NOT_FOUND' }
|
|
typecheck
Process completed with exit code 1.
|
|
[agent-gateway] test/modelCatalogProviderWrite.test.ts > server-v2 /api/v1 provider write endpoints > creates a provider with model aliases and persists them to config.toml:
packages/agent-gateway/test/modelCatalogProviderWrite.test.ts#L208
AssertionError: expected 200 to be 201 // Object.is equality
- Expected
+ Received
- 201
+ 200
❯ test/modelCatalogProviderWrite.test.ts:208:20
|
|
[agent-gateway] test/codex-login.test.ts > Codex login routes > maps invalid input and unknown login ids to stable wire codes:
packages/agent-gateway/test/codex-login.test.ts#L129
AssertionError: expected { …(3) } to match object { code: 40001 }
(3 matching properties omitted from actual)
- Expected
+ Received
{
- "code": 40001,
+ "error": "Not Found",
+ "message": "Route POST:/api/v1/auth/codex/login-1:submit_code not found",
+ "statusCode": 404,
}
❯ test/codex-login.test.ts:129:28
|
|
[agent-gateway] test/codex-login.test.ts > Codex login routes > matches the web start, poll, submit, and cancel contract:
packages/agent-gateway/test/codex-login.test.ts#L86
AssertionError: expected { …(3) } to match object { code: +0, data: { …(2) } }
(3 matching properties omitted from actual)
- Expected
+ Received
{
- "code": 0,
- "data": {
- "login_id": "login-1",
- "loopback": true,
- },
+ "error": "Not Found",
+ "message": "Route POST:/api/v1/auth/codex:start not found",
+ "statusCode": 404,
}
❯ test/codex-login.test.ts:86:26
|
|
[agent-gateway] test/boot.test.ts > server-v2 boot > seeds default Pythinker identity headers from hostIdentity that opts.seeds can override:
packages/agent-gateway/test/boot.test.ts#L136
AssertionError: expected undefined to be '0.0.0-test' // Object.is equality
- Expected:
"0.0.0-test"
+ Received:
undefined
❯ test/boot.test.ts:136:47
|
|
[agent-gateway] test/boot.test.ts > server-v2 boot > boots agent-core-v2 and serves the basic /api/v1 routes:
packages/agent-gateway/test/boot.test.ts#L84
AssertionError: expected 404 to be 200 // Object.is equality
- Expected
+ Received
- 200
+ 404
❯ test/boot.test.ts:84:30
|
|
[extension] test/bridge-handler.test.ts:
apps/vscode/src/runtime/pythinker-runtime.ts#L11
Error: Cannot find module './legacy-approval' imported from /home/runner/work/pythinker-code/pythinker-code/apps/vscode/src/runtime/pythinker-runtime.ts
❯ src/runtime/pythinker-runtime.ts:11:1
❯ src/handlers/chat.handler.ts:11:1
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { code: 'ERR_MODULE_NOT_FOUND' }
|
|
[pythinker-sdk] test/sdk-rpc-client-v2.test.ts > SDKRpcClientV2 (agent-core-v2 wiring) > gates NotifyUser for all profiles and preserves fork prompts: {"enabled":true,"panel":true}:
packages/agent-core-v2/src/llm-adapter/model/catalog-service.ts#L307
Error2: Model "stub" is not configured in config.toml.
❯ ModelCatalog.buildModel ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:307:13
❯ ModelCatalog.entry ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:136:24
❯ ModelCatalog.get ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:112:17
❯ AgentProfileService.bind ../agent-core-v2/src/agent/profile/profileService.ts:296:37
❯ AgentLifecycleService.bindBootstrap ../agent-core-v2/src/session/agentLifecycle/agentLifecycleService.ts:398:7
❯ AgentLifecycleService.buildAgentScope ../agent-core-v2/src/session/agentLifecycle/agentLifecycleService.ts:348:7
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { code: 'config.invalid', details: { model: 'stub' } }
|
|
[pythinker-sdk] test/sdk-rpc-client-v2.test.ts > SDKRpcClientV2 (agent-core-v2 wiring) > gates NotifyUser for all profiles and preserves fork prompts: {"enabled":true,"panel":false}:
packages/agent-core-v2/src/llm-adapter/model/catalog-service.ts#L307
Error2: Model "stub" is not configured in config.toml.
❯ ModelCatalog.buildModel ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:307:13
❯ ModelCatalog.entry ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:136:24
❯ ModelCatalog.get ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:112:17
❯ AgentProfileService.bind ../agent-core-v2/src/agent/profile/profileService.ts:296:37
❯ AgentLifecycleService.bindBootstrap ../agent-core-v2/src/session/agentLifecycle/agentLifecycleService.ts:398:7
❯ AgentLifecycleService.buildAgentScope ../agent-core-v2/src/session/agentLifecycle/agentLifecycleService.ts:348:7
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { code: 'config.invalid', details: { model: 'stub' } }
|
|
[pythinker-sdk] test/sdk-rpc-client-v2.test.ts > SDKRpcClientV2 (agent-core-v2 wiring) > gates NotifyUser for all profiles and preserves fork prompts: {"enabled":false,"panel":true}:
packages/agent-core-v2/src/llm-adapter/model/catalog-service.ts#L307
Error2: Model "stub" is not configured in config.toml.
❯ ModelCatalog.buildModel ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:307:13
❯ ModelCatalog.entry ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:136:24
❯ ModelCatalog.get ../agent-core-v2/src/llm-adapter/model/catalog-service.ts:112:17
❯ AgentProfileService.bind ../agent-core-v2/src/agent/profile/profileService.ts:296:37
❯ AgentLifecycleService.bindBootstrap ../agent-core-v2/src/session/agentLifecycle/agentLifecycleService.ts:398:7
❯ AgentLifecycleService.buildAgentScope ../agent-core-v2/src/session/agentLifecycle/agentLifecycleService.ts:348:7
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { code: 'config.invalid', details: { model: 'stub' } }
|
|
[pythinker-sdk] test/sdk-rpc-client-v2.test.ts > SDKRpcClientV2 (agent-core-v2 wiring) > seeds the host request headers (User-Agent + X-Msh-*) into the engine:
packages/node-sdk/test/sdk-rpc-client-v2.test.ts#L355
AssertionError: expected undefined to be 'pythinker_code_cli' // Object.is equality
- Expected:
"pythinker_code_cli"
+ Received:
undefined
❯ test/sdk-rpc-client-v2.test.ts:355:41
|
|
[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/workspaces.test.ts > server-v2 /api/v1/workspaces > adds a relative directory without persisting when persist is false:
packages/agent-gateway/test/workspaces.test.ts#L371
AssertionError: promise resolved "'[workspace]\nadditional_dir = [ "/tmp…'" instead of rejecting
- Expected:
Error {
"message": "rejected promise",
}
+ Received:
"[workspace]
additional_dir = [ \"/tmp/pythinker-server-v2-workspaces-3M97UU/extra\" ]
"
❯ test/workspaces.test.ts:371:57
|
|
[agent-gateway] test/workspaces.test.ts > server-v2 /api/v1/workspaces > adds an additional directory and persists it by default:
packages/agent-gateway/test/workspaces.test.ts#L339
Error: EEXIST: file already exists, mkdir '/tmp/pythinker-server-v2-workspaces-3M97UU/extra'
❯ test/workspaces.test.ts:339:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { errno: -17, code: 'EEXIST', syscall: 'mkdir', path: '/tmp/pythinker-server-v2-workspaces-3M97UU/extra' }
|
|
[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-b80y92rx', …(12) } to match object { id: 'test-b80y92rx', …(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-b80y92rx",
"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_943f3647-ec43-4cb1-b686-3ccfd75a6ff6",
"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-19T16:20:04.283Z",
+ "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
|
|
[extension] test/telemetry.test.ts > extension telemetry composition root > resolves the endpoint through the region resolver per flush:
apps/vscode/test/telemetry.test.ts#L145
AssertionError: expected "vi.fn()" to be called with arguments: [ ObjectContaining{…} ]
Received:
1st vi.fn() call:
[
- ObjectContaining {
- "configuredOAuthHost": "https://auth.kimi.ai",
- "configuredOAuthKey": "oauth/pythinker-code-global",
+ {
"homeDir": "/pythinker-home",
+ "readMarker": true,
},
]
Number of calls: 1
❯ test/telemetry.test.ts:145:41
|
|
[extension] test/telemetry.test.ts > extension telemetry composition root > initializes the shared stack with extension identity and the config gate:
apps/vscode/test/telemetry.test.ts#L126
AssertionError: expected undefined to be type of 'function'
Expected: "function"
Received: "undefined"
❯ test/telemetry.test.ts:126:39
|
|
[extension] test/settings-store.test.ts > Webview MCP update bridge > sends a lossless structured MCP edit request to the extension host:
apps/vscode/webview-ui/src/services/bridge.ts#L52
TypeError: Cannot read properties of undefined (reading 'webviewid')
❯ new Bridge webview-ui/src/services/bridge.ts:52:44
❯ webview-ui/src/services/bridge.ts:341:23
❯ test/settings-store.test.ts:221:24
|
|
[extension] test/pythinker-harness.integration.test.ts:
apps/vscode/src/runtime/pythinker-runtime.ts#L11
Error: Cannot find module './legacy-approval' imported from /home/runner/work/pythinker-code/pythinker-code/apps/vscode/src/runtime/pythinker-runtime.ts
❯ src/runtime/pythinker-runtime.ts:11:1
❯ src/handlers/chat.handler.ts:11:1
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { code: 'ERR_MODULE_NOT_FOUND' }
|
|
[agent-gateway] test/modelCatalogCatalog.test.ts > server-v2 /api/v1 catalog browse + import endpoints > imports every valid registry entry with a source blob and full model metadata:
packages/agent-gateway/test/modelCatalogCatalog.test.ts#L561
AssertionError: expected 200 to be 201 // Object.is equality
- Expected
+ Received
- 201
+ 200
❯ test/modelCatalogCatalog.test.ts:561:20
|
|
[agent-gateway] test/modelCatalogCatalog.test.ts > server-v2 /api/v1 catalog browse + import endpoints > replaces an explicit OAuth credential during catalog import:
packages/agent-gateway/test/modelCatalogCatalog.test.ts#L482
AssertionError: expected 200 to be 201 // Object.is equality
- Expected
+ Received
- 201
+ 200
❯ test/modelCatalogCatalog.test.ts:482:20
|
|
[agent-gateway] test/modelCatalogCatalog.test.ts > server-v2 /api/v1 catalog browse + import endpoints > answers 40004 when a needs-base-url entry is imported without one, 201 with one:
packages/agent-gateway/test/modelCatalogCatalog.test.ts#L462
AssertionError: expected 200 to be 201 // Object.is equality
- Expected
+ Received
- 201
+ 200
❯ test/modelCatalogCatalog.test.ts:462:23
|
|
[agent-gateway] test/modelCatalogCatalog.test.ts > server-v2 /api/v1 catalog browse + import endpoints > honors the id override for the local provider id:
packages/agent-gateway/test/modelCatalogCatalog.test.ts#L429
AssertionError: expected 200 to be 201 // Object.is equality
- Expected
+ Received
- 201
+ 200
❯ test/modelCatalogCatalog.test.ts:429:20
|
|
[agent-gateway] test/modelCatalogCatalog.test.ts > server-v2 /api/v1 catalog browse + import endpoints > keeps the stored api_key when a re-import omits it (tri-state like PUT):
packages/agent-gateway/test/modelCatalogCatalog.test.ts#L401
AssertionError: expected 200 to be 201 // Object.is equality
- Expected
+ Received
- 201
+ 200
❯ test/modelCatalogCatalog.test.ts:401:26
|
|
[agent-gateway] test/modelCatalogCatalog.test.ts > server-v2 /api/v1 catalog browse + import endpoints > re-imports an existing id as a refresh: credentials replaced, stale aliases dropped:
packages/agent-gateway/test/modelCatalogCatalog.test.ts#L368
AssertionError: expected 200 to be 201 // Object.is equality
- Expected
+ Received
- 201
+ 200
❯ test/modelCatalogCatalog.test.ts:368:26
|
|
[agent-gateway] test/modelCatalogCatalog.test.ts > server-v2 /api/v1 catalog browse + import endpoints > adopts a usable global default_model on a fresh setup:
packages/agent-gateway/test/modelCatalogCatalog.test.ts#L356
AssertionError: expected 200 to be 201 // Object.is equality
- Expected
+ Received
- 201
+ 200
❯ test/modelCatalogCatalog.test.ts:356:20
|
|
[agent-gateway] test/modelCatalogCatalog.test.ts > server-v2 /api/v1 catalog browse + import endpoints > never touches the global default pointers on import:
packages/agent-gateway/test/modelCatalogCatalog.test.ts#L344
AssertionError: expected 200 to be 201 // Object.is equality
- Expected
+ Received
- 201
+ 200
❯ test/modelCatalogCatalog.test.ts:344:20
|
|
[agent-gateway] test/modelCatalogCatalog.test.ts > server-v2 /api/v1 catalog browse + import endpoints > imports a catalog entry as a provider with all model aliases:
packages/agent-gateway/test/modelCatalogCatalog.test.ts#L308
AssertionError: expected 200 to be 201 // Object.is equality
- Expected
+ Received
- 201
+ 200
❯ test/modelCatalogCatalog.test.ts:308:20
|
|
[extension] test/pythinker-runtime.test.ts:
apps/vscode/src/runtime/pythinker-runtime.ts#L11
Error: Cannot find module './legacy-approval' imported from /home/runner/work/pythinker-code/pythinker-code/apps/vscode/src/runtime/pythinker-runtime.ts
❯ src/runtime/pythinker-runtime.ts:11:1
❯ test/pythinker-runtime.test.ts:27:1
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { code: 'ERR_MODULE_NOT_FOUND' }
|
|
test
Process completed with exit code 1.
|
|
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-unicorn(prefer-code-point):
packages/agent-core-v2/src/agent/contextMemory/compactionHandoff.ts#L339
Prefer `codePointAt` over `charCodeAt`
|
|
eslint-plugin-unicorn(prefer-code-point):
packages/agent-core-v2/src/agent/contextMemory/compactionHandoff.ts#L337
Prefer `codePointAt` over `charCodeAt`
|
|
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/human/utils/watch.ts#L90
Unexpected console statement.
|
|
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.
|
|
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)
|
|
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/
|
|
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/
|
|
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 (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/
|
|
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-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/
|
|
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 (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/
|
|
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-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"
|
|
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"
|
|
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 (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"
|
|
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-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"
|
|
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 (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
"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"
|