gitextract_w7t9d370/ ├── .gitattributes ├── .github/ │ ├── APPROVED_CONTRIBUTORS │ ├── APPROVED_CONTRIBUTORS.vacation │ ├── ISSUE_TEMPLATE/ │ │ ├── bug.yml │ │ ├── config.yml │ │ └── contribution.yml │ └── workflows/ │ ├── approve-contributor.yml │ ├── build-binaries.yml │ ├── ci.yml │ ├── oss-weekend-issues.yml │ └── pr-gate.yml ├── .gitignore ├── .husky/ │ └── pre-commit ├── .pi/ │ ├── extensions/ │ │ ├── diff.ts │ │ ├── files.ts │ │ ├── prompt-url-widget.ts │ │ ├── redraws.ts │ │ └── tps.ts │ ├── git/ │ │ └── .gitignore │ ├── npm/ │ │ └── .gitignore │ └── prompts/ │ ├── cl.md │ ├── is.md │ └── pr.md ├── AGENTS.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── biome.json ├── package.json ├── packages/ │ ├── agent/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── agent-loop.ts │ │ │ ├── agent.ts │ │ │ ├── index.ts │ │ │ ├── proxy.ts │ │ │ └── types.ts │ │ ├── test/ │ │ │ ├── agent-loop.test.ts │ │ │ ├── agent.test.ts │ │ │ ├── bedrock-models.test.ts │ │ │ ├── bedrock-utils.ts │ │ │ ├── e2e.test.ts │ │ │ └── utils/ │ │ │ ├── calculate.ts │ │ │ └── get-current-time.ts │ │ ├── tsconfig.build.json │ │ └── vitest.config.ts │ ├── ai/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── bedrock-provider.d.ts │ │ ├── bedrock-provider.js │ │ ├── package.json │ │ ├── scripts/ │ │ │ ├── generate-models.ts │ │ │ └── generate-test-image.ts │ │ ├── src/ │ │ │ ├── api-registry.ts │ │ │ ├── bedrock-provider.ts │ │ │ ├── cli.ts │ │ │ ├── env-api-keys.ts │ │ │ ├── index.ts │ │ │ ├── models.generated.ts │ │ │ ├── models.ts │ │ │ ├── oauth.ts │ │ │ ├── providers/ │ │ │ │ ├── amazon-bedrock.ts │ │ │ │ ├── anthropic.ts │ │ │ │ ├── azure-openai-responses.ts │ │ │ │ ├── github-copilot-headers.ts │ │ │ │ ├── google-gemini-cli.ts │ │ │ │ ├── google-shared.ts │ │ │ │ ├── google-vertex.ts │ │ │ │ ├── google.ts │ │ │ │ ├── mistral.ts │ │ │ │ ├── openai-codex-responses.ts │ │ │ │ ├── openai-completions.ts │ │ │ │ ├── openai-responses-shared.ts │ │ │ │ ├── openai-responses.ts │ │ │ │ ├── register-builtins.ts │ │ │ │ ├── simple-options.ts │ │ │ │ └── transform-messages.ts │ │ │ ├── stream.ts │ │ │ ├── types.ts │ │ │ └── utils/ │ │ │ ├── event-stream.ts │ │ │ ├── hash.ts │ │ │ ├── json-parse.ts │ │ │ ├── oauth/ │ │ │ │ ├── anthropic.ts │ │ │ │ ├── github-copilot.ts │ │ │ │ ├── google-antigravity.ts │ │ │ │ ├── google-gemini-cli.ts │ │ │ │ ├── index.ts │ │ │ │ ├── oauth-page.ts │ │ │ │ ├── openai-codex.ts │ │ │ │ ├── pkce.ts │ │ │ │ └── types.ts │ │ │ ├── overflow.ts │ │ │ ├── sanitize-unicode.ts │ │ │ ├── typebox-helpers.ts │ │ │ └── validation.ts │ │ ├── test/ │ │ │ ├── abort.test.ts │ │ │ ├── anthropic-oauth.test.ts │ │ │ ├── anthropic-tool-name-normalization.test.ts │ │ │ ├── azure-utils.ts │ │ │ ├── bedrock-models.test.ts │ │ │ ├── bedrock-utils.ts │ │ │ ├── cache-retention.test.ts │ │ │ ├── context-overflow.test.ts │ │ │ ├── cross-provider-handoff.test.ts │ │ │ ├── empty.test.ts │ │ │ ├── github-copilot-anthropic.test.ts │ │ │ ├── github-copilot-oauth.test.ts │ │ │ ├── google-gemini-cli-claude-thinking-header.test.ts │ │ │ ├── google-gemini-cli-empty-stream.test.ts │ │ │ ├── google-gemini-cli-retry-delay.test.ts │ │ │ ├── google-shared-gemini3-unsigned-tool-call.test.ts │ │ │ ├── google-shared-image-tool-result-routing.test.ts │ │ │ ├── google-thinking-signature.test.ts │ │ │ ├── google-tool-call-missing-args.test.ts │ │ │ ├── google-vertex-api-key-resolution.test.ts │ │ │ ├── image-tool-result.test.ts │ │ │ ├── interleaved-thinking.test.ts │ │ │ ├── lazy-module-load.test.ts │ │ │ ├── oauth.ts │ │ │ ├── openai-codex-stream.test.ts │ │ │ ├── openai-completions-tool-choice.test.ts │ │ │ ├── openai-completions-tool-result-images.test.ts │ │ │ ├── openai-responses-reasoning-replay-e2e.test.ts │ │ │ ├── openai-responses-tool-result-images.test.ts │ │ │ ├── responseid.test.ts │ │ │ ├── stream.test.ts │ │ │ ├── supports-xhigh.test.ts │ │ │ ├── tokens.test.ts │ │ │ ├── tool-call-id-normalization.test.ts │ │ │ ├── tool-call-without-result.test.ts │ │ │ ├── total-tokens.test.ts │ │ │ ├── transform-messages-copilot-openai-to-anthropic.test.ts │ │ │ ├── unicode-surrogate.test.ts │ │ │ ├── validation.test.ts │ │ │ ├── xhigh.test.ts │ │ │ └── zen.test.ts │ │ ├── tsconfig.build.json │ │ └── vitest.config.ts │ ├── coding-agent/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── docs/ │ │ │ ├── compaction.md │ │ │ ├── custom-provider.md │ │ │ ├── development.md │ │ │ ├── extensions.md │ │ │ ├── json.md │ │ │ ├── keybindings.md │ │ │ ├── models.md │ │ │ ├── packages.md │ │ │ ├── prompt-templates.md │ │ │ ├── providers.md │ │ │ ├── rpc.md │ │ │ ├── sdk.md │ │ │ ├── session.md │ │ │ ├── settings.md │ │ │ ├── shell-aliases.md │ │ │ ├── skills.md │ │ │ ├── terminal-setup.md │ │ │ ├── termux.md │ │ │ ├── themes.md │ │ │ ├── tmux.md │ │ │ ├── tree.md │ │ │ ├── tui.md │ │ │ └── windows.md │ │ ├── examples/ │ │ │ ├── README.md │ │ │ ├── extensions/ │ │ │ │ ├── README.md │ │ │ │ ├── antigravity-image-gen.ts │ │ │ │ ├── auto-commit-on-exit.ts │ │ │ │ ├── bash-spawn-hook.ts │ │ │ │ ├── bookmark.ts │ │ │ │ ├── built-in-tool-renderer.ts │ │ │ │ ├── claude-rules.ts │ │ │ │ ├── commands.ts │ │ │ │ ├── confirm-destructive.ts │ │ │ │ ├── custom-compaction.ts │ │ │ │ ├── custom-footer.ts │ │ │ │ ├── custom-header.ts │ │ │ │ ├── custom-provider-anthropic/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.ts │ │ │ │ │ └── package.json │ │ │ │ ├── custom-provider-gitlab-duo/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── package.json │ │ │ │ │ └── test.ts │ │ │ │ ├── custom-provider-qwen-cli/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.ts │ │ │ │ │ └── package.json │ │ │ │ ├── dirty-repo-guard.ts │ │ │ │ ├── doom-overlay/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── README.md │ │ │ │ │ ├── doom/ │ │ │ │ │ │ ├── build/ │ │ │ │ │ │ │ ├── doom.js │ │ │ │ │ │ │ └── doom.wasm │ │ │ │ │ │ ├── build.sh │ │ │ │ │ │ └── doomgeneric_pi.c │ │ │ │ │ ├── doom-component.ts │ │ │ │ │ ├── doom-engine.ts │ │ │ │ │ ├── doom-keys.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── wad-finder.ts │ │ │ │ ├── dynamic-resources/ │ │ │ │ │ ├── SKILL.md │ │ │ │ │ ├── dynamic.json │ │ │ │ │ ├── dynamic.md │ │ │ │ │ └── index.ts │ │ │ │ ├── dynamic-tools.ts │ │ │ │ ├── event-bus.ts │ │ │ │ ├── file-trigger.ts │ │ │ │ ├── git-checkpoint.ts │ │ │ │ ├── handoff.ts │ │ │ │ ├── hello.ts │ │ │ │ ├── inline-bash.ts │ │ │ │ ├── input-transform.ts │ │ │ │ ├── interactive-shell.ts │ │ │ │ ├── mac-system-theme.ts │ │ │ │ ├── message-renderer.ts │ │ │ │ ├── minimal-mode.ts │ │ │ │ ├── modal-editor.ts │ │ │ │ ├── model-status.ts │ │ │ │ ├── notify.ts │ │ │ │ ├── overlay-qa-tests.ts │ │ │ │ ├── overlay-test.ts │ │ │ │ ├── permission-gate.ts │ │ │ │ ├── pirate.ts │ │ │ │ ├── plan-mode/ │ │ │ │ │ ├── README.md │ │ │ │ │ ├── index.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── preset.ts │ │ │ │ ├── protected-paths.ts │ │ │ │ ├── provider-payload.ts │ │ │ │ ├── qna.ts │ │ │ │ ├── question.ts │ │ │ │ ├── questionnaire.ts │ │ │ │ ├── rainbow-editor.ts │ │ │ │ ├── reload-runtime.ts │ │ │ │ ├── rpc-demo.ts │ │ │ │ ├── sandbox/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.ts │ │ │ │ │ └── package.json │ │ │ │ ├── send-user-message.ts │ │ │ │ ├── session-name.ts │ │ │ │ ├── shutdown-command.ts │ │ │ │ ├── snake.ts │ │ │ │ ├── space-invaders.ts │ │ │ │ ├── ssh.ts │ │ │ │ ├── status-line.ts │ │ │ │ ├── subagent/ │ │ │ │ │ ├── README.md │ │ │ │ │ ├── agents/ │ │ │ │ │ │ ├── planner.md │ │ │ │ │ │ ├── reviewer.md │ │ │ │ │ │ ├── scout.md │ │ │ │ │ │ └── worker.md │ │ │ │ │ ├── agents.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── prompts/ │ │ │ │ │ ├── implement-and-review.md │ │ │ │ │ ├── implement.md │ │ │ │ │ └── scout-and-plan.md │ │ │ │ ├── summarize.ts │ │ │ │ ├── system-prompt-header.ts │ │ │ │ ├── timed-confirm.ts │ │ │ │ ├── titlebar-spinner.ts │ │ │ │ ├── todo.ts │ │ │ │ ├── tool-override.ts │ │ │ │ ├── tools.ts │ │ │ │ ├── trigger-compact.ts │ │ │ │ ├── truncated-tool.ts │ │ │ │ ├── widget-placement.ts │ │ │ │ └── with-deps/ │ │ │ │ ├── .gitignore │ │ │ │ ├── index.ts │ │ │ │ └── package.json │ │ │ ├── rpc-extension-ui.ts │ │ │ └── sdk/ │ │ │ ├── 01-minimal.ts │ │ │ ├── 02-custom-model.ts │ │ │ ├── 03-custom-prompt.ts │ │ │ ├── 04-skills.ts │ │ │ ├── 05-tools.ts │ │ │ ├── 06-extensions.ts │ │ │ ├── 07-context-files.ts │ │ │ ├── 08-prompt-templates.ts │ │ │ ├── 09-api-keys-and-oauth.ts │ │ │ ├── 10-settings.ts │ │ │ ├── 11-sessions.ts │ │ │ ├── 12-full-control.ts │ │ │ └── README.md │ │ ├── package.json │ │ ├── scripts/ │ │ │ └── migrate-sessions.sh │ │ ├── src/ │ │ │ ├── bun/ │ │ │ │ ├── cli.ts │ │ │ │ └── register-bedrock.ts │ │ │ ├── cli/ │ │ │ │ ├── args.ts │ │ │ │ ├── config-selector.ts │ │ │ │ ├── file-processor.ts │ │ │ │ ├── initial-message.ts │ │ │ │ ├── list-models.ts │ │ │ │ └── session-picker.ts │ │ │ ├── cli.ts │ │ │ ├── config.ts │ │ │ ├── core/ │ │ │ │ ├── agent-session.ts │ │ │ │ ├── auth-storage.ts │ │ │ │ ├── bash-executor.ts │ │ │ │ ├── compaction/ │ │ │ │ │ ├── branch-summarization.ts │ │ │ │ │ ├── compaction.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── defaults.ts │ │ │ │ ├── diagnostics.ts │ │ │ │ ├── event-bus.ts │ │ │ │ ├── exec.ts │ │ │ │ ├── export-html/ │ │ │ │ │ ├── ansi-to-html.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── template.css │ │ │ │ │ ├── template.html │ │ │ │ │ ├── template.js │ │ │ │ │ └── tool-renderer.ts │ │ │ │ ├── extensions/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── loader.ts │ │ │ │ │ ├── runner.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── wrapper.ts │ │ │ │ ├── footer-data-provider.ts │ │ │ │ ├── index.ts │ │ │ │ ├── keybindings.ts │ │ │ │ ├── messages.ts │ │ │ │ ├── model-registry.ts │ │ │ │ ├── model-resolver.ts │ │ │ │ ├── package-manager.ts │ │ │ │ ├── prompt-templates.ts │ │ │ │ ├── resolve-config-value.ts │ │ │ │ ├── resource-loader.ts │ │ │ │ ├── sdk.ts │ │ │ │ ├── session-manager.ts │ │ │ │ ├── settings-manager.ts │ │ │ │ ├── skills.ts │ │ │ │ ├── slash-commands.ts │ │ │ │ ├── system-prompt.ts │ │ │ │ ├── timings.ts │ │ │ │ └── tools/ │ │ │ │ ├── bash.ts │ │ │ │ ├── edit-diff.ts │ │ │ │ ├── edit.ts │ │ │ │ ├── file-mutation-queue.ts │ │ │ │ ├── find.ts │ │ │ │ ├── grep.ts │ │ │ │ ├── index.ts │ │ │ │ ├── ls.ts │ │ │ │ ├── path-utils.ts │ │ │ │ ├── read.ts │ │ │ │ ├── truncate.ts │ │ │ │ └── write.ts │ │ │ ├── index.ts │ │ │ ├── main.ts │ │ │ ├── migrations.ts │ │ │ ├── modes/ │ │ │ │ ├── index.ts │ │ │ │ ├── interactive/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── armin.ts │ │ │ │ │ │ ├── assistant-message.ts │ │ │ │ │ │ ├── bash-execution.ts │ │ │ │ │ │ ├── bordered-loader.ts │ │ │ │ │ │ ├── branch-summary-message.ts │ │ │ │ │ │ ├── compaction-summary-message.ts │ │ │ │ │ │ ├── config-selector.ts │ │ │ │ │ │ ├── countdown-timer.ts │ │ │ │ │ │ ├── custom-editor.ts │ │ │ │ │ │ ├── custom-message.ts │ │ │ │ │ │ ├── daxnuts.ts │ │ │ │ │ │ ├── diff.ts │ │ │ │ │ │ ├── dynamic-border.ts │ │ │ │ │ │ ├── extension-editor.ts │ │ │ │ │ │ ├── extension-input.ts │ │ │ │ │ │ ├── extension-selector.ts │ │ │ │ │ │ ├── footer.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── keybinding-hints.ts │ │ │ │ │ │ ├── login-dialog.ts │ │ │ │ │ │ ├── model-selector.ts │ │ │ │ │ │ ├── oauth-selector.ts │ │ │ │ │ │ ├── scoped-models-selector.ts │ │ │ │ │ │ ├── session-selector-search.ts │ │ │ │ │ │ ├── session-selector.ts │ │ │ │ │ │ ├── settings-selector.ts │ │ │ │ │ │ ├── show-images-selector.ts │ │ │ │ │ │ ├── skill-invocation-message.ts │ │ │ │ │ │ ├── theme-selector.ts │ │ │ │ │ │ ├── thinking-selector.ts │ │ │ │ │ │ ├── tool-execution.ts │ │ │ │ │ │ ├── tree-selector.ts │ │ │ │ │ │ ├── user-message-selector.ts │ │ │ │ │ │ ├── user-message.ts │ │ │ │ │ │ └── visual-truncate.ts │ │ │ │ │ ├── interactive-mode.ts │ │ │ │ │ └── theme/ │ │ │ │ │ ├── dark.json │ │ │ │ │ ├── light.json │ │ │ │ │ ├── theme-schema.json │ │ │ │ │ └── theme.ts │ │ │ │ ├── print-mode.ts │ │ │ │ └── rpc/ │ │ │ │ ├── jsonl.ts │ │ │ │ ├── rpc-client.ts │ │ │ │ ├── rpc-mode.ts │ │ │ │ └── rpc-types.ts │ │ │ └── utils/ │ │ │ ├── changelog.ts │ │ │ ├── child-process.ts │ │ │ ├── clipboard-image.ts │ │ │ ├── clipboard-native.ts │ │ │ ├── clipboard.ts │ │ │ ├── exif-orientation.ts │ │ │ ├── frontmatter.ts │ │ │ ├── git.ts │ │ │ ├── image-convert.ts │ │ │ ├── image-resize.ts │ │ │ ├── mime.ts │ │ │ ├── photon.ts │ │ │ ├── shell.ts │ │ │ ├── sleep.ts │ │ │ └── tools-manager.ts │ │ ├── test/ │ │ │ ├── agent-session-auto-compaction-queue.test.ts │ │ │ ├── agent-session-branching.test.ts │ │ │ ├── agent-session-compaction.test.ts │ │ │ ├── agent-session-concurrent.test.ts │ │ │ ├── agent-session-dynamic-provider.test.ts │ │ │ ├── agent-session-dynamic-tools.test.ts │ │ │ ├── agent-session-model-switch-thinking.test.ts │ │ │ ├── agent-session-retry.test.ts │ │ │ ├── agent-session-tree-navigation.test.ts │ │ │ ├── args.test.ts │ │ │ ├── auth-storage.test.ts │ │ │ ├── bash-close-hang-windows.test.ts │ │ │ ├── block-images.test.ts │ │ │ ├── clipboard-image-bmp-conversion.test.ts │ │ │ ├── clipboard-image.test.ts │ │ │ ├── compaction-extensions-example.test.ts │ │ │ ├── compaction-extensions.test.ts │ │ │ ├── compaction-serialization.test.ts │ │ │ ├── compaction-summary-reasoning.test.ts │ │ │ ├── compaction-thinking-model.test.ts │ │ │ ├── compaction.test.ts │ │ │ ├── extensions-discovery.test.ts │ │ │ ├── extensions-input-event.test.ts │ │ │ ├── extensions-runner.test.ts │ │ │ ├── file-mutation-queue.test.ts │ │ │ ├── fixtures/ │ │ │ │ ├── assistant-message-with-thinking-code.json │ │ │ │ ├── before-compaction.jsonl │ │ │ │ ├── empty-agent/ │ │ │ │ │ └── .gitkeep │ │ │ │ ├── empty-cwd/ │ │ │ │ │ └── .gitkeep │ │ │ │ ├── large-session.jsonl │ │ │ │ ├── skills/ │ │ │ │ │ ├── consecutive-hyphens/ │ │ │ │ │ │ └── SKILL.md │ │ │ │ │ ├── disable-model-invocation/ │ │ │ │ │ │ └── SKILL.md │ │ │ │ │ ├── invalid-name-chars/ │ │ │ │ │ │ └── SKILL.md │ │ │ │ │ ├── invalid-yaml/ │ │ │ │ │ │ └── SKILL.md │ │ │ │ │ ├── long-name/ │ │ │ │ │ │ └── SKILL.md │ │ │ │ │ ├── missing-description/ │ │ │ │ │ │ └── SKILL.md │ │ │ │ │ ├── multiline-description/ │ │ │ │ │ │ └── SKILL.md │ │ │ │ │ ├── name-mismatch/ │ │ │ │ │ │ └── SKILL.md │ │ │ │ │ ├── nested/ │ │ │ │ │ │ └── child-skill/ │ │ │ │ │ │ └── SKILL.md │ │ │ │ │ ├── no-frontmatter/ │ │ │ │ │ │ └── SKILL.md │ │ │ │ │ ├── root-skill-preferred/ │ │ │ │ │ │ ├── SKILL.md │ │ │ │ │ │ └── nested-child/ │ │ │ │ │ │ └── SKILL.md │ │ │ │ │ ├── unknown-field/ │ │ │ │ │ │ └── SKILL.md │ │ │ │ │ └── valid-skill/ │ │ │ │ │ └── SKILL.md │ │ │ │ └── skills-collision/ │ │ │ │ ├── first/ │ │ │ │ │ └── calendar/ │ │ │ │ │ └── SKILL.md │ │ │ │ └── second/ │ │ │ │ └── calendar/ │ │ │ │ └── SKILL.md │ │ │ ├── footer-data-provider.test.ts │ │ │ ├── footer-width.test.ts │ │ │ ├── frontmatter.test.ts │ │ │ ├── git-ssh-url.test.ts │ │ │ ├── git-update.test.ts │ │ │ ├── image-processing.test.ts │ │ │ ├── initial-message.test.ts │ │ │ ├── interactive-mode-status.test.ts │ │ │ ├── keybindings-migration.test.ts │ │ │ ├── model-registry.test.ts │ │ │ ├── model-resolver.test.ts │ │ │ ├── package-command-paths.test.ts │ │ │ ├── package-manager-ssh.test.ts │ │ │ ├── package-manager.test.ts │ │ │ ├── path-utils.test.ts │ │ │ ├── plan-mode-utils.test.ts │ │ │ ├── prompt-templates.test.ts │ │ │ ├── resource-loader.test.ts │ │ │ ├── rpc-example.ts │ │ │ ├── rpc-jsonl.test.ts │ │ │ ├── rpc.test.ts │ │ │ ├── sdk-codex-cache-probe-tool-loop.ts │ │ │ ├── sdk-skills.test.ts │ │ │ ├── session-info-modified-timestamp.test.ts │ │ │ ├── session-manager/ │ │ │ │ ├── build-context.test.ts │ │ │ │ ├── custom-session-id.test.ts │ │ │ │ ├── file-operations.test.ts │ │ │ │ ├── labels.test.ts │ │ │ │ ├── migration.test.ts │ │ │ │ ├── save-entry.test.ts │ │ │ │ └── tree-traversal.test.ts │ │ │ ├── session-selector-path-delete.test.ts │ │ │ ├── session-selector-rename.test.ts │ │ │ ├── session-selector-search.test.ts │ │ │ ├── settings-manager-bug.test.ts │ │ │ ├── settings-manager.test.ts │ │ │ ├── skills.test.ts │ │ │ ├── streaming-render-debug.ts │ │ │ ├── system-prompt.test.ts │ │ │ ├── test-theme-colors.ts │ │ │ ├── tool-execution-component.test.ts │ │ │ ├── tools.test.ts │ │ │ ├── tree-selector.test.ts │ │ │ ├── truncate-to-width.test.ts │ │ │ └── utilities.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.examples.json │ │ └── vitest.config.ts │ ├── mom/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── dev.sh │ │ ├── docker.sh │ │ ├── docs/ │ │ │ ├── artifacts-server.md │ │ │ ├── events.md │ │ │ ├── new.md │ │ │ ├── sandbox.md │ │ │ ├── slack-bot-minimal-guide.md │ │ │ └── v86.md │ │ ├── package.json │ │ ├── scripts/ │ │ │ └── migrate-timestamps.ts │ │ ├── src/ │ │ │ ├── agent.ts │ │ │ ├── context.ts │ │ │ ├── download.ts │ │ │ ├── events.ts │ │ │ ├── log.ts │ │ │ ├── main.ts │ │ │ ├── sandbox.ts │ │ │ ├── slack.ts │ │ │ ├── store.ts │ │ │ └── tools/ │ │ │ ├── attach.ts │ │ │ ├── bash.ts │ │ │ ├── edit.ts │ │ │ ├── index.ts │ │ │ ├── read.ts │ │ │ ├── truncate.ts │ │ │ └── write.ts │ │ └── tsconfig.build.json │ ├── pods/ │ │ ├── README.md │ │ ├── docs/ │ │ │ ├── gml-4.5.md │ │ │ ├── gpt-oss.md │ │ │ ├── implementation-plan.md │ │ │ ├── kimi-k2.md │ │ │ ├── models.md │ │ │ ├── plan.md │ │ │ └── qwen3-coder.md │ │ ├── package.json │ │ ├── scripts/ │ │ │ ├── model_run.sh │ │ │ └── pod_setup.sh │ │ ├── src/ │ │ │ ├── cli.ts │ │ │ ├── commands/ │ │ │ │ ├── models.ts │ │ │ │ ├── pods.ts │ │ │ │ └── prompt.ts │ │ │ ├── config.ts │ │ │ ├── index.ts │ │ │ ├── model-configs.ts │ │ │ ├── models.json │ │ │ ├── ssh.ts │ │ │ └── types.ts │ │ └── tsconfig.build.json │ ├── tui/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── autocomplete.ts │ │ │ ├── components/ │ │ │ │ ├── box.ts │ │ │ │ ├── cancellable-loader.ts │ │ │ │ ├── editor.ts │ │ │ │ ├── image.ts │ │ │ │ ├── input.ts │ │ │ │ ├── loader.ts │ │ │ │ ├── markdown.ts │ │ │ │ ├── select-list.ts │ │ │ │ ├── settings-list.ts │ │ │ │ ├── spacer.ts │ │ │ │ ├── text.ts │ │ │ │ └── truncated-text.ts │ │ │ ├── editor-component.ts │ │ │ ├── fuzzy.ts │ │ │ ├── index.ts │ │ │ ├── keybindings.ts │ │ │ ├── keys.ts │ │ │ ├── kill-ring.ts │ │ │ ├── stdin-buffer.ts │ │ │ ├── terminal-image.ts │ │ │ ├── terminal.ts │ │ │ ├── tui.ts │ │ │ ├── undo-stack.ts │ │ │ └── utils.ts │ │ ├── test/ │ │ │ ├── autocomplete.test.ts │ │ │ ├── bug-regression-isimageline-startswith-bug.test.ts │ │ │ ├── chat-simple.ts │ │ │ ├── editor.test.ts │ │ │ ├── fuzzy.test.ts │ │ │ ├── image-test.ts │ │ │ ├── input.test.ts │ │ │ ├── key-tester.ts │ │ │ ├── keys.test.ts │ │ │ ├── markdown.test.ts │ │ │ ├── overlay-non-capturing.test.ts │ │ │ ├── overlay-options.test.ts │ │ │ ├── overlay-short-content.test.ts │ │ │ ├── regression-regional-indicator-width.test.ts │ │ │ ├── select-list.test.ts │ │ │ ├── stdin-buffer.test.ts │ │ │ ├── terminal-image.test.ts │ │ │ ├── test-themes.ts │ │ │ ├── truncated-text.test.ts │ │ │ ├── tui-overlay-style-leak.test.ts │ │ │ ├── tui-render.test.ts │ │ │ ├── viewport-overwrite-repro.ts │ │ │ ├── virtual-terminal.ts │ │ │ └── wrap-ansi.test.ts │ │ ├── tsconfig.build.json │ │ └── vitest.config.ts │ └── web-ui/ │ ├── CHANGELOG.md │ ├── README.md │ ├── example/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── index.html │ │ ├── package.json │ │ ├── src/ │ │ │ ├── app.css │ │ │ ├── custom-messages.ts │ │ │ └── main.ts │ │ ├── tsconfig.json │ │ └── vite.config.ts │ ├── package.json │ ├── scripts/ │ │ └── count-prompt-tokens.ts │ ├── src/ │ │ ├── ChatPanel.ts │ │ ├── app.css │ │ ├── components/ │ │ │ ├── AgentInterface.ts │ │ │ ├── AttachmentTile.ts │ │ │ ├── ConsoleBlock.ts │ │ │ ├── CustomProviderCard.ts │ │ │ ├── ExpandableSection.ts │ │ │ ├── Input.ts │ │ │ ├── MessageEditor.ts │ │ │ ├── MessageList.ts │ │ │ ├── Messages.ts │ │ │ ├── ProviderKeyInput.ts │ │ │ ├── SandboxedIframe.ts │ │ │ ├── StreamingMessageContainer.ts │ │ │ ├── ThinkingBlock.ts │ │ │ ├── message-renderer-registry.ts │ │ │ └── sandbox/ │ │ │ ├── ArtifactsRuntimeProvider.ts │ │ │ ├── AttachmentsRuntimeProvider.ts │ │ │ ├── ConsoleRuntimeProvider.ts │ │ │ ├── FileDownloadRuntimeProvider.ts │ │ │ ├── RuntimeMessageBridge.ts │ │ │ ├── RuntimeMessageRouter.ts │ │ │ └── SandboxRuntimeProvider.ts │ │ ├── dialogs/ │ │ │ ├── ApiKeyPromptDialog.ts │ │ │ ├── AttachmentOverlay.ts │ │ │ ├── CustomProviderDialog.ts │ │ │ ├── ModelSelector.ts │ │ │ ├── PersistentStorageDialog.ts │ │ │ ├── ProvidersModelsTab.ts │ │ │ ├── SessionListDialog.ts │ │ │ └── SettingsDialog.ts │ │ ├── index.ts │ │ ├── prompts/ │ │ │ └── prompts.ts │ │ ├── storage/ │ │ │ ├── app-storage.ts │ │ │ ├── backends/ │ │ │ │ └── indexeddb-storage-backend.ts │ │ │ ├── store.ts │ │ │ ├── stores/ │ │ │ │ ├── custom-providers-store.ts │ │ │ │ ├── provider-keys-store.ts │ │ │ │ ├── sessions-store.ts │ │ │ │ └── settings-store.ts │ │ │ └── types.ts │ │ ├── tools/ │ │ │ ├── artifacts/ │ │ │ │ ├── ArtifactElement.ts │ │ │ │ ├── ArtifactPill.ts │ │ │ │ ├── Console.ts │ │ │ │ ├── DocxArtifact.ts │ │ │ │ ├── ExcelArtifact.ts │ │ │ │ ├── GenericArtifact.ts │ │ │ │ ├── HtmlArtifact.ts │ │ │ │ ├── ImageArtifact.ts │ │ │ │ ├── MarkdownArtifact.ts │ │ │ │ ├── PdfArtifact.ts │ │ │ │ ├── SvgArtifact.ts │ │ │ │ ├── TextArtifact.ts │ │ │ │ ├── artifacts-tool-renderer.ts │ │ │ │ ├── artifacts.ts │ │ │ │ └── index.ts │ │ │ ├── extract-document.ts │ │ │ ├── index.ts │ │ │ ├── javascript-repl.ts │ │ │ ├── renderer-registry.ts │ │ │ ├── renderers/ │ │ │ │ ├── BashRenderer.ts │ │ │ │ ├── CalculateRenderer.ts │ │ │ │ ├── DefaultRenderer.ts │ │ │ │ └── GetCurrentTimeRenderer.ts │ │ │ └── types.ts │ │ └── utils/ │ │ ├── attachment-utils.ts │ │ ├── auth-token.ts │ │ ├── format.ts │ │ ├── i18n.ts │ │ ├── model-discovery.ts │ │ ├── proxy-utils.ts │ │ └── test-sessions.ts │ ├── tsconfig.build.json │ └── tsconfig.json ├── pi-mono.code-workspace ├── pi-test.sh ├── scripts/ │ ├── browser-smoke-entry.ts │ ├── build-binaries.sh │ ├── check-browser-smoke.mjs │ ├── cost.ts │ ├── oss-weekend.mjs │ ├── release.mjs │ ├── session-transcripts.ts │ └── sync-versions.js ├── test.sh ├── tsconfig.base.json └── tsconfig.json