Skip to content

fix(tui): speed up model picker and dedupe aliases #11

fix(tui): speed up model picker and dedupe aliases

fix(tui): speed up model picker and dedupe aliases #11

Triggered via push August 1, 2026 04:32
Status Failure
Total duration 9m 36s
Artifacts

ci.yml

on: push
Fit to window
Zoom out
Zoom in

Annotations

6 errors and 14 warnings
lint
Process completed with exit code 1.
test
Process completed with exit code 1.
[pythinker-core] test/tools/rg-locator.test.ts > ensureRgPath download branch > fetches ripgrep over HTTPS: packages/agent-core/test/tools/rg-locator.test.ts#L316
Error: Snapshot `ensureRgPath download branch > fetches ripgrep over HTTPS 1` mismatched Expected: "[Error: Ripgrep archive checksum mismatch for ripgrep-15.0.0-aarch64-apple-darwin.tar.gz: expected 98bb2e61e7277ba0ea72d2ae2592497fd8d2940934a16b122448d302a6637e3b, got d09ddfae9f45fa5423557d7d5887afb665ef2174a9e3a1417c8c0b97a87c6269. CDN content may have changed.]" Received: "[Error: Ripgrep archive checksum mismatch for ripgrep-15.0.0-x86_64-unknown-linux-musl.tar.gz: expected 253ad0fd5fef0d64cba56c70dccdacc1916d4ed70ad057cc525fcdb0c3bbd2a7, got d09ddfae9f45fa5423557d7d5887afb665ef2174a9e3a1417c8c0b97a87c6269. CDN content may have changed.]" ❯ test/tools/rg-locator.test.ts:316:56
[pythinker-core] test/session/subagent-host.test.ts > SessionSubagentHost > inherits active parent user tools when spawning a subagent: packages/agent-core/test/session/subagent-host.test.ts#L498
AssertionError: expected [ { name: 'Read', …(4) }, …(21) ] to deep equally contain { name: 'Lookup', …(3) } - Expected: { "active": true, "description": "Look up a short test value.", "name": "Lookup", "source": "user", } + Received: [ { "active": true, "description": "Read a text file from the local filesystem. If the user provides a concrete file path to a text file, call Read directly. Do not `Glob`, `ls`, or otherwise pre-check known text file paths; missing or invalid file paths return errors you can handle. Do not use Read for directories; use `ls` via Bash for a known directory, or Glob when you need files/directories matching a pattern. Use `Grep` only when the task is to search for unknown content or locations. When you need several files, prefer to read them in parallel: emit multiple `Read` calls in a single response instead of reading one file per turn. - Relative paths resolve against the working directory; a path outside the working directory must be absolute. - Returns up to 1000 lines or 100 KB per call, whichever comes first; lines longer than 2000 chars are truncated mid-line. - Page larger files with `line_offset` (1-based start line) and `n_lines`. Omit `n_lines` to read up to the 1000-line cap. - Sensitive files (`.env` files, credential stores, SSH keys, and similar secrets) are refused to protect secrets; do not attempt to read them. - Only UTF-8 text files can be read. Non-UTF-8 encodings, binary files, and files containing NUL bytes are refused; use `ReadMediaFile` for images or video, and Bash or an MCP tool for other binary formats. - Negative line_offset reads from the end of the file (for example, -100 reads the last 100 lines); the absolute value cannot exceed 1000. - Output format: `<line-number>\\t<content>` per line. - A `<system>...</system>` status block is appended after the file content; it summarizes how much was read (line and byte counts, truncation, line-ending notes) and is not part of the file itself. - Pure CRLF files are displayed with LF line endings; `Edit` matches this output and preserves CRLF when writing back. - Mixed or lone carriage-return line endings are shown as `\\r` and require exact `Edit.old_string` escapes. - After a successful `Edit`/`Write`, do not re-read solely to prove the write landed. When the task depends on an exact file, API, or output shape, inspect the final external contract before finishing. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "line_offset": { "anyOf": [ { "maximum": 9007199254740991, "minimum": 1, "type": "integer", }, { "maximum": -1, "minimum": -1000, "type": "integer", }, ], "description": "The line number to start reading from. Omit to start at line 1. Negative values read from the end of the file; the absolute value cannot exceed 1000.", }, "n_lines": { "description": "The number of lines to read; the tool also applies its internal cap. Omit to read up to the internal cap of 1000 lines.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer", }, "path": { "description": "Path to a text file. Relative paths resolve against the working directory; a path outside the working directory must be absolute. Directories are not supported; use `ls` via Bash for a known directory, or Glob for pattern search.", "type": "string", }, }, "required": [ "path", ], "type": "object", }, "name": "Read", "source": "builtin", }, { "active": true, "description": "Create, append to, or replace a file entirely. - Missing parent directories are created. - Mode defaults to overwrite; append adds content at EOF without adding a newline. - Write is NOT ALLOWED for incremental changes to existing files
[pythinker-core] test/session/lifecycle-hooks.test.ts > Session lifecycle hooks > watches absolute paths returned by SessionStart hooks: packages/agent-core/test/session/lifecycle-hooks.test.ts#L214
Error: Test timed out in 5000ms. If this is a long-running test, pass a timeout value as the last argument or configure it globally with "testTimeout". ❯ test/session/lifecycle-hooks.test.ts:214:3
[pythinker-core] test/session/lifecycle-hooks.test.ts > Session lifecycle hooks > reroots configured FileChanged paths when the hook cwd changes: packages/agent-core/test/session/lifecycle-hooks.test.ts#L607
Error: ENOENT: no such file or directory, open '/tmp/pythinker-session-hooks-tYdi4X/hooks.jsonl' ❯ waitForFile test/session/lifecycle-hooks.test.ts:607:7 ❯ test/session/lifecycle-hooks.test.ts:200:5 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { errno: -2, code: 'ENOENT', syscall: 'open', path: '/tmp/pythinker-session-hooks-tYdi4X/hooks.jsonl' }
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(no-underscore-dangle): apps/pythinker-code/src/tui/theme/theme.ts#L40
Unexpected dangling '_' in '`_palette`'.
eslint(no-underscore-dangle): apps/pythinker-code/src/tui/theme/theme.ts#L34
Unexpected dangling '_' in '`_palette`'.
eslint(no-underscore-dangle): apps/pythinker-code/src/tui/theme/theme.ts#L30
Unexpected dangling '_' in '`_palette`'.
eslint(no-underscore-dangle): apps/pythinker-code/src/tui/theme/theme.ts#L26
Unexpected dangling '_' in '`_palette`'.
eslint(no-underscore-dangle): apps/pythinker-code/src/tui/theme/theme.ts#L22
Unexpected dangling '_' in '`_palette`'.
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/
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
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/