pi-mono/packages/coding-agent/test
Mario Zechner eb3e9feed1 feat(coding-agent): split tool renderers and theme validation from their implementations
A presentation draws tool calls and colours; it executes nothing and validates
nothing. Both cost it typebox anyway, which is 17 MB of module graph: 682 ESM
modules whose narrowest entry re-exports ~300 of them, so there is no
cherry-picking and both doors had to close before any process stopped paying.

ToolExecutionComponent no longer looks up createAllToolDefinitions by tool name;
callers pass what to render, and its parameter type now says so. Each built-in
tool's presentation moves to core/tools/renderers/<tool>.ts, leaving the schema
and execute path behind; bash and powershell share createShellRenderers(prompt).
Tool definitions keep their exact public shape and spread the renderers in.
withBuiltInRenderers() preserves the old fallback, where an extension override
without renderers still draws like the built-in - that behaviour used to live
inside the component, and two tests caught its absence.

theme.ts keeps palettes; the typebox schema and its error formatting move to
theme-json.ts, installed through setThemeJsonValidator. Built-in themes were
never validated, so only processes that load user-authored themes need it. pi
installs it during startup, before the first theme loads, and the invalid-theme
message is unchanged.

Measured with mini, running built output: the presentation drops from 87 MB and
99 files to 72 MB and 88 files, with typebox absent from its graph, while still
rendering tool output through the real built-in renderers.

Also: packages/server's vitest aliases were prefix matches, so a subpath import
resolved onto index.ts/utils/uuid and failed five suites; they are exact now
with explicit subpath rules. And mini-test.sh spawns mini the way pi-test.sh
spawns pi, with --fresh/--stop for the detached session server.
2026-08-26 23:08:57 +02:00
..
fixtures feat(coding-agent): add setup-driven facet generations 2026-08-25 15:58:25 +02:00
session-manager fix(coding-agent): preserve branch summary source leaf 2026-08-19 12:02:37 +02:00
suite fix(coding-agent): reject truncated compaction summaries closes #7048 2026-08-24 13:08:30 +02:00
agent-session-auto-compaction-queue.test.ts fix(agent): restore streamFn extension compatibility 2026-07-21 18:37:07 +02:00
agent-session-branching.test.ts feat(coding-agent): replace model registry with model runtime 2026-07-14 17:48:45 +02:00
agent-session-compaction.test.ts fix(agent): restore streamFn extension compatibility 2026-07-21 18:37:07 +02:00
agent-session-concurrent.test.ts fix(agent): restore streamFn extension compatibility 2026-07-21 18:37:07 +02:00
agent-session-dynamic-provider.test.ts fix(agent): decouple agent streams from compat 2026-07-20 17:54:36 +02:00
agent-session-dynamic-tools.test.ts fix(coding-agent): soften PI environment guideline 2026-08-06 22:50:27 +02:00
agent-session-retry.test.ts fix(agent): restore streamFn extension compatibility 2026-07-21 18:37:07 +02:00
agent-session-runtime-events.test.ts feat(coding-agent): replace model registry with model runtime 2026-07-14 17:48:45 +02:00
agent-session-stats.test.ts fix(agent): restore streamFn extension compatibility 2026-07-21 18:37:07 +02:00
agent-session-tree-navigation.test.ts feat(coding-agent): replace model registry with model runtime 2026-07-14 17:48:45 +02:00
ansi-utils.test.ts chore: pin dependencies and use native TypeScript 2026-05-20 12:46:17 +02:00
args.test.ts fix(coding-agent): reduce redundant slow tests 2026-08-17 22:57:18 +02:00
assistant-message.test.ts feat(tui): add reusable mouse interaction support 2026-08-14 15:26:27 +02:00
auth-check.test.ts feat(coding-agent): add auth preflight 2026-08-06 19:43:52 +02:00
auth-storage.test.ts fix(coding-agent): preserve managed state file permissions 2026-08-22 01:19:25 +02:00
bash-close-hang-windows.test.ts chore: pin dependencies and use native TypeScript 2026-05-20 12:46:17 +02:00
bash-execution-width.test.ts chore: pin dependencies and use native TypeScript 2026-05-20 12:46:17 +02:00
block-images.test.ts fix(coding-agent): process BMP images from disk 2026-06-25 12:52:21 +02:00
branch-summarization.test.ts fix(coding-agent): reject truncated compaction summaries closes #7048 2026-08-24 13:08:30 +02:00
branch-summary-extensions.test.ts fix(coding-agent): preserve branch summary source leaf 2026-08-19 12:02:37 +02:00
cache-stats.test.ts feat(coding-agent): replace model registry with model runtime 2026-07-14 17:48:45 +02:00
changelog.test.ts fix(coding-agent): fix changelog links 2026-06-08 20:31:20 +02:00
clipboard-image-bmp-conversion.test.ts chore: pin dependencies and use native TypeScript 2026-05-20 12:46:17 +02:00
clipboard-image.test.ts Fix native clipboard in bun release (#6418) 2026-07-08 11:20:24 +02:00
clipboard-native.test.ts fix(coding-agent): fall back to text clipboard paste 2026-07-10 21:46:15 +02:00
clipboard.test.ts fix(coding-agent): read clipboard text on Wayland 2026-07-31 18:10:28 +03:00
compaction-extensions-example.test.ts fix(coding-agent): preserve extension auth endpoints 2026-08-04 12:37:02 +02:00
compaction-extensions.test.ts fix(agent): restore streamFn extension compatibility 2026-07-21 18:37:07 +02:00
compaction-serialization.test.ts chore: pin dependencies and use native TypeScript 2026-05-20 12:46:17 +02:00
compaction-summary-reasoning.test.ts fix(coding-agent): reject truncated compaction summaries closes #7048 2026-08-24 13:08:30 +02:00
compaction.test.ts Revert "feat(coding-agent): add cache-friendly compaction primitives" 2026-08-19 09:52:26 +02:00
config-value-migration.test.ts feat(coding-agent): replace model registry with model runtime 2026-07-14 17:48:45 +02:00
config.test.ts feat(coding-agent): bundle Node runtime (#8474) 2026-08-22 21:19:38 +02:00
credential-print.test.ts feat(coding-agent): add auth preflight 2026-08-06 19:43:52 +02:00
custom-editor-history-keybindings.test.ts feat(tui): add configurable prompt history actions 2026-08-05 21:34:21 +02:00
custom-message.test.ts feat(coding-agent): expose output padding to custom renderers (#7045) 2026-07-25 08:29:34 +02:00
default-tools-setting.test.ts feat(coding-agent): add optional PowerShell tool (#8512) 2026-08-24 12:27:03 +02:00
edit-tool-legacy-input.test.ts chore: pin dependencies and use native TypeScript 2026-05-20 12:46:17 +02:00
edit-tool-no-full-redraw.test.ts feat(tui): add alternate-screen renderer 2026-07-30 12:59:48 +02:00
experimental-chat-service.test.ts feat(agent): simplify durable operation graph 2026-08-26 16:10:53 +02:00
experimental-cli-command.test.ts Merge remote-tracking branch 'origin/main' into dev 2026-08-24 07:50:17 +00:00
experimental-cli-resolution.test.ts feat(coding-agent): configure remote session workers 2026-08-17 01:25:40 +03:00
experimental-client-tui.test.ts feat(coding-agent): add setup-driven facet generations 2026-08-25 15:58:25 +02:00
experimental-facets.test.ts feat(coding-agent): add setup-driven facet generations 2026-08-25 15:58:25 +02:00
experimental-harness-wire-adapter.test.ts feat(agent): expose durable lane operations 2026-08-26 21:14:59 +02:00
experimental-internal-process.test.ts fix(coding-agent): allow internal process startup in CI 2026-08-17 18:42:54 +02:00
experimental-remote-runtime.test.ts feat(agent): expose durable lane operations 2026-08-26 21:14:59 +02:00
experimental-server-lifecycle.test.ts feat(coding-agent): move experimental runtime outside CLI 2026-08-16 22:53:32 +03:00
experimental-server-profile.test.ts feat(coding-agent): move experimental runtime outside CLI 2026-08-16 22:53:32 +03:00
experimental-server-replacement.test.ts feat(coding-agent): configure remote session workers 2026-08-17 01:25:40 +03:00
experimental-service-stubs.test.ts feat(coding-agent): add setup-driven facet generations 2026-08-25 15:58:25 +02:00
experimental-session-directory.test.ts feat(coding-agent): move experimental runtime outside CLI 2026-08-16 22:53:32 +03:00
experimental-session-support.ts feat(agent): separate sessions, branches, and lanes 2026-08-25 16:52:29 +02:00
experimental-session-worker-lifecycle.test.ts feat(agent): replace remote sessions with routed services 2026-08-19 23:10:15 +02:00
experimental-session-worker-manager.test.ts feat(agent): expose durable lane operations 2026-08-26 21:14:59 +02:00
experimental-tool-strict-mode.test.ts feat(coding-agent): add optional PowerShell tool (#8512) 2026-08-24 12:27:03 +02:00
experimental.test.ts feat(coding-agent): add experimental feature guard (#5547) 2026-06-09 13:23:07 +02:00
export-html-skill-block.test.ts fix(coding-agent): strip skill wrapper XML from HTML export user messages (#4234) 2026-05-06 18:06:37 +02:00
export-html-whitespace.test.ts chore: pin dependencies and use native TypeScript 2026-05-20 12:46:17 +02:00
export-html-xss.test.ts Fix HTML export URL sanitization 2026-06-02 16:32:18 +02:00
export-jsonl-share.test.ts feat(coding-agent): include context in Radius session shares 2026-08-23 20:45:14 +02:00
extensions-discovery.test.ts Markdown api (#7231) 2026-07-30 22:39:04 +02:00
extensions-input-event.test.ts fix(coding-agent): keep unit model stores in memory 2026-08-05 16:23:31 +02:00
extensions-runner.test.ts fix: register flag type mismatch (#8123) 2026-08-17 09:42:51 +02:00
external-editor.test.ts fix(coding-agent): speed up external editor launch (#6903) 2026-07-22 15:49:01 +02:00
file-mutation-queue.test.ts fix(coding-agent): use async operations in tools 2026-05-23 09:50:03 +02:00
first-time-setup-fork.test.ts fix(coding-agent): skip first-time setup for forks (#5627) 2026-06-11 21:36:26 +02:00
first-time-setup.test.ts feat(coding-agent): add experimental first-time setup flow (#5587) 2026-06-10 12:11:49 +02:00
footer-data-provider.test.ts chore: pin dependencies and use native TypeScript 2026-05-20 12:46:17 +02:00
footer-width.test.ts fix(coding-agent): only label known subscriptions in footer 2026-08-06 07:47:35 +02:00
format-resume-command.test.ts feat(coding-agent): print resume hint on interactive exit 2026-05-29 15:56:42 +08:00
frontmatter.test.ts chore: pin dependencies and use native TypeScript 2026-05-20 12:46:17 +02:00
git-merge-and-resolve-extension.test.ts fix(coding-agent): drain follow-ups queued during agent_end 2026-05-28 18:27:39 +10:00
git-ssh-url.test.ts fix(coding-agent): harden git package install paths 2026-06-02 18:20:35 +02:00
git-update.test.ts fix(coding-agent): reduce redundant git update tests 2026-08-17 22:22:35 +02:00
http-dispatcher.test.ts fix(coding-agent): increase connection attempt timeout (#7435) 2026-08-02 09:26:23 +02:00
image-process.test.ts fix(coding-agent): process BMP images from disk 2026-06-25 12:52:21 +02:00
image-processing.test.ts fix(coding-agent): use async operations in tools 2026-05-23 09:50:03 +02:00
image-resize-callers.test.ts chore: pin dependencies and use native TypeScript 2026-05-20 12:46:17 +02:00
initial-message.test.ts chore: pin dependencies and use native TypeScript 2026-05-20 12:46:17 +02:00
input-transform-streaming-example.test.ts feat(coding-agent): expose streamingBehavior on InputEvent 2026-05-28 15:52:38 +10:00
interactive-mode-anthropic-warning.test.ts feat(coding-agent): replace model registry with model runtime 2026-07-14 17:48:45 +02:00
interactive-mode-clone-command.test.ts fix(coding-agent): preserve startup extension UI 2026-06-21 23:19:34 +02:00
interactive-mode-compaction.test.ts feat(coding-agent): show compaction usage notices 2026-08-18 13:27:00 +02:00
interactive-mode-import-command.test.ts fix(coding-agent): stabilize interactive status indicators 2026-06-29 16:53:39 +02:00
interactive-mode-startup-input.test.ts fix(coding-agent): show managed-tool startup status in TUI 2026-08-13 15:54:34 +02:00
interactive-mode-status.test.ts chore(settings-selector): get rid of --default and global model 2026-08-20 13:30:47 +02:00
interactive-mode-suspend.test.ts chore: pin dependencies and use native TypeScript 2026-05-20 12:46:17 +02:00
interactive-tui.test.ts feat(coding-agent): configure fullscreen exit output 2026-08-07 18:30:28 +02:00
keybindings-migration.test.ts chore: pin dependencies and use native TypeScript 2026-05-20 12:46:17 +02:00
keybindings.test.ts fix(coding-agent): use Windows-friendly keybinding defaults 2026-08-23 23:30:16 +02:00
llama-extension.test.ts feat: show llama presets if autoload enabled (#8558) 2026-08-24 13:29:51 +02:00
management-http.test.ts fix(coding-agent): retry hung model catalog requests 2026-08-17 12:55:56 +02:00
max-thinking.test.ts feat(ai): add max thinking level 2026-07-09 22:30:53 +02:00
mermaid.test.ts feat(coding-agent): render Mermaid diagrams (#7624) 2026-08-05 09:43:24 +02:00
model-catalog-refresh.test.ts fix(coding-agent): share concurrent model catalog refreshes 2026-08-13 09:43:36 +02:00
model-registry.test.ts fix(coding-agent): expose finish reason compatibility override (#8487) 2026-08-23 23:34:30 +02:00
model-resolver.test.ts fix(ai): update cloudflare gateway sonnet test id (#8260) 2026-08-17 19:52:37 +02:00
model-runtime-auth-options.test.ts fix(coding-agent): only label known subscriptions in footer 2026-08-06 07:47:35 +02:00
model-runtime-cloudflare-compat.test.ts fix(coding-agent): update Cloudflare compat test model 2026-08-14 09:32:24 +02:00
model-runtime-credential-sync.test.ts fix(coding-agent): make model refresh cancellation caller-owned 2026-08-04 00:03:52 +02:00
model-runtime-modify-models-compat.test.ts fix(ai): separate deferred request options 2026-08-04 12:45:00 +02:00
model-runtime-test-utils.ts fix(coding-agent): keep unit model stores in memory 2026-08-05 16:23:31 +02:00
model-selector.test.ts fix(coding-agent): keep model and thinking level changes session scoped (#8356) 2026-08-19 16:48:29 +02:00
models-store.test.ts fix(coding-agent): preserve managed state file permissions 2026-08-22 01:19:25 +02:00
oauth-selector.test.ts feat(coding-agent): replace model registry with model runtime 2026-07-14 17:48:45 +02:00
package-command-paths.test.ts feat(coding-agent): update managed installations in place 2026-08-24 09:34:34 +02:00
package-distribution.test.ts feat(coding-agent): bundle Node runtime (#8474) 2026-08-22 21:19:38 +02:00
package-manager-ssh.test.ts chore: pin dependencies and use native TypeScript 2026-05-20 12:46:17 +02:00
package-manager.test.ts fix: reduce workspace dependency tree 2026-08-23 09:28:19 +02:00
path-utils.test.ts fix(coding-agent): Clean up Path Handling (#4873) 2026-05-22 11:25:15 +02:00
paths.test.ts fix(coding-agent): normalize Windows shell drive paths 2026-08-05 20:42:05 +02:00
pi-user-agent.test.ts chore: pin dependencies and use native TypeScript 2026-05-20 12:46:17 +02:00
plan-mode-extension.test.ts fix(coding-agent): fix plan-mode example 2026-06-21 22:10:17 +02:00
plan-mode-utils.test.ts chore: pin dependencies and use native TypeScript 2026-05-20 12:46:17 +02:00
plugin-app-model-vertical-slice.test.ts feat(agent): simplify plugin service names 2026-08-22 00:37:32 +02:00
plugin-app-tui.test.ts feat(coding-agent): separate remote plugin app fixture 2026-08-15 20:35:43 +02:00
powershell-tool.test.ts feat(coding-agent): add optional PowerShell tool (#8512) 2026-08-24 12:27:03 +02:00
print-mode.test.ts fix(coding-agent): make JSON streaming output linear (#7394) 2026-08-03 18:33:22 +02:00
prompt-templates.test.ts fix(coding-agent): support all-argument prompt defaults closes #6695 2026-07-17 13:52:32 +02:00
radius.test.ts fix(coding-agent): make model refresh cancellation caller-owned 2026-08-04 00:03:52 +02:00
remote-catalog-provider.test.ts fix: retry transient management HTTP requests (#7632) 2026-08-05 09:38:28 +02:00
resolve-config-value.test.ts feat(coding-agent): replace model registry with model runtime 2026-07-14 17:48:45 +02:00
resource-loader.test.ts feat(coding-agent): support AGENTS.override.md (#7681) 2026-08-05 21:24:31 +02:00
restore-sandbox-env.test.ts chore: pin dependencies and use native TypeScript 2026-05-20 12:46:17 +02:00
rpc-client-clone.test.ts chore: pin dependencies and use native TypeScript 2026-05-20 12:46:17 +02:00
rpc-client-process-exit.test.ts fix(rpc): reject pending requests on child process exit 2026-05-25 00:40:07 +02:00
rpc-example.ts chore: pin dependencies and use native TypeScript 2026-05-20 12:46:17 +02:00
rpc-jsonl.test.ts chore: pin dependencies and use native TypeScript 2026-05-20 12:46:17 +02:00
rpc-prompt-response-semantics.test.ts fix(coding-agent): prevent flaky RPC prompt tests 2026-08-04 09:50:42 +02:00
rpc.test.ts feat: get_available_thinking_levels rpc (#6865) 2026-07-20 16:29:10 +02:00
runtime-credentials.test.ts fix(coding-agent): make model refresh cancellation caller-owned 2026-08-04 00:03:52 +02:00
scrollbar-theme.test.ts feat(tui): add fullscreen transcript search (#7913) 2026-08-11 10:59:28 +02:00
sdk-codex-cache-probe-tool-loop.ts fix(coding-agent): show system prompt files in startup context (#7266) 2026-07-29 17:05:22 +02:00
sdk-openrouter-attribution.test.ts fix(coding-agent): keep unit model stores in memory 2026-08-05 16:23:31 +02:00
sdk-session-manager.test.ts fix(coding-agent): soften PI environment guideline 2026-08-06 22:50:27 +02:00
sdk-skills.test.ts fix(coding-agent): show system prompt files in startup context (#7266) 2026-07-29 17:05:22 +02:00
sdk-stream-options.test.ts fix(ai): make provider retries abortable (#6980) 2026-07-23 12:25:37 +02:00
session-cwd.test.ts chore: pin dependencies and use native TypeScript 2026-05-20 12:46:17 +02:00
session-file-invalid.test.ts fix(coding-agent): shorten invalid session error 2026-06-25 15:20:08 +02:00
session-id-readonly.test.ts fix(coding-agent): reduce redundant slow tests 2026-08-17 22:57:18 +02:00
session-info-modified-timestamp.test.ts chore: pin dependencies and use native TypeScript 2026-05-20 12:46:17 +02:00
session-selector-path-delete.test.ts fix(coding-agent): sort threaded sessions by latest activity in the subtree 2026-06-16 00:39:30 +04:00
session-selector-rename.test.ts chore: pin dependencies and use native TypeScript 2026-05-20 12:46:17 +02:00
session-selector-search.test.ts chore: pin dependencies and use native TypeScript 2026-05-20 12:46:17 +02:00
settings-diagnostics.test.ts fix(coding-agent): report settings diagnostic paths 2026-08-19 13:07:53 +02:00
settings-manager-bug.test.ts chore: pin dependencies and use native TypeScript 2026-05-20 12:46:17 +02:00
settings-manager.test.ts feat(coding-agent): include paths in settings errors 2026-08-19 13:07:20 +02:00
settings-selector.test.ts fix(coding-agent): keep model and thinking level changes session scoped (#8356) 2026-08-19 16:48:29 +02:00
skills.test.ts chore: pin dependencies and use native TypeScript 2026-05-20 12:46:17 +02:00
startup-session-name.test.ts fix(coding-agent): reduce redundant slow tests 2026-08-17 22:57:18 +02:00
status-indicator.test.ts fix(coding-agent): stabilize interactive status indicators 2026-06-29 16:53:39 +02:00
stdout-cleanliness.test.ts fix(coding-agent): reduce redundant slow tests 2026-08-17 22:57:18 +02:00
streaming-render-debug.ts feat(tui): add alternate-screen renderer 2026-07-30 12:59:48 +02:00
syntax-highlight.test.ts feat(coding-agent): defer uncommon syntax grammars 2026-08-22 22:50:12 +02:00
system-prompt.test.ts feat(coding-agent): add optional PowerShell tool (#8512) 2026-08-24 12:27:03 +02:00
test-harness.test.ts fix(coding-agent): avoid custom store lock convoys 2026-08-05 16:16:58 +02:00
test-harness.ts fix(coding-agent): keep unit model stores in memory 2026-08-05 16:23:31 +02:00
test-network-env.ts fix(coding-agent): run coding-agent tests offline by default (#7031) 2026-07-27 11:27:43 +02:00
test-theme-colors.ts feat(tui): add fullscreen transcript search (#7913) 2026-08-11 10:59:28 +02:00
theme-controller.test.ts feat(coding-agent): add per-run theme selection (#7722) 2026-08-12 16:25:38 +02:00
theme-detection.test.ts fix(coding-agent): reduce automatic theme detection delay 2026-08-07 00:22:00 +02:00
theme-export.test.ts chore: pin dependencies and use native TypeScript 2026-05-20 12:46:17 +02:00
theme-picker.test.ts fix(coding-agent): list themes by content name 2026-05-21 00:10:50 +04:00
tool-execution-component.test.ts feat(coding-agent): split tool renderers and theme validation from their implementations 2026-08-26 23:08:57 +02:00
tool-result-images.test.ts fix(coding-agent): resize images returned by tools (#7330) 2026-08-03 14:02:03 +02:00
tool-system-prompt-contributions.test.ts feat(coding-agent): add optional PowerShell tool (#8512) 2026-08-24 12:27:03 +02:00
tools-manager.test.ts fix(coding-agent): show managed-tool startup status in TUI 2026-08-13 15:54:34 +02:00
tools.test.ts fix(coding-agent): reduce redundant slow tests 2026-08-17 22:57:18 +02:00
tree-selector.test.ts feat(coding-agent): add message copy shortcut 2026-07-10 21:35:53 +02:00
trigger-compact-extension.test.ts Revert "fix(coding-agent): build-check-test (#7206)" 2026-07-28 15:09:46 +02:00
truncate-to-width.test.ts chore: migrate pi packages to earendil works scope 2026-05-07 15:59:42 +02:00
trust-manager.test.ts fix(coding-agent): avoid project trust prompt for update (#5674) 2026-06-12 23:37:16 +02:00
trust-selector.test.ts feat(ui): Improved project approval settings 2026-06-09 13:25:54 +02:00
user-message.test.ts Markdown api (#7231) 2026-07-30 22:39:04 +02:00
utilities.ts fix(coding-agent): make model refresh cancellation caller-owned 2026-08-04 00:03:52 +02:00
version-check.test.ts fix: retry transient management HTTP requests (#7632) 2026-08-05 09:38:28 +02:00