@prometheus-ai/agent 0.5.3 → 0.5.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +39 -0
- package/dist/cli.js +25110 -0
- package/dist/types/async/index.d.ts +0 -1
- package/dist/types/async/job-manager.d.ts +33 -0
- package/dist/types/autolearn/controller.d.ts +25 -0
- package/dist/types/autolearn/managed-skills.d.ts +45 -0
- package/dist/types/autoresearch/state.d.ts +1 -1
- package/dist/types/autoresearch/tools/init-experiment.d.ts +1 -1
- package/dist/types/autoresearch/tools/log-experiment.d.ts +1 -1
- package/dist/types/autoresearch/tools/run-experiment.d.ts +1 -1
- package/dist/types/autoresearch/tools/update-notes.d.ts +1 -1
- package/dist/types/autoresearch/types.d.ts +1 -1
- package/dist/types/capability/context-file.d.ts +0 -13
- package/dist/types/capability/mcp.d.ts +1 -0
- package/dist/types/capability/rule-buckets.d.ts +1 -1
- package/dist/types/capability/rule.d.ts +6 -1
- package/dist/types/capability/types.d.ts +0 -4
- package/dist/types/cli/args.d.ts +23 -3
- package/dist/types/cli/bench-cli.d.ts +78 -0
- package/dist/types/cli/claude-trace-cli.d.ts +7 -0
- package/dist/types/cli/dry-balance-cli.d.ts +16 -2
- package/dist/types/cli/gallery-cli.d.ts +43 -0
- package/dist/types/cli/gallery-fixtures/agentic.d.ts +2 -0
- package/dist/types/cli/gallery-fixtures/codeintel.d.ts +3 -0
- package/dist/types/cli/gallery-fixtures/edit.d.ts +3 -0
- package/dist/types/cli/gallery-fixtures/fs.d.ts +2 -0
- package/dist/types/cli/gallery-fixtures/index.d.ts +4 -0
- package/dist/types/cli/gallery-fixtures/interaction.d.ts +3 -0
- package/dist/types/cli/gallery-fixtures/memory.d.ts +2 -0
- package/dist/types/cli/gallery-fixtures/misc.d.ts +3 -0
- package/dist/types/cli/gallery-fixtures/search.d.ts +3 -0
- package/dist/types/cli/gallery-fixtures/shell.d.ts +3 -0
- package/dist/types/cli/gallery-fixtures/types.d.ts +55 -0
- package/dist/types/cli/gallery-fixtures/web.d.ts +2 -0
- package/dist/types/cli/gallery-screenshot.d.ts +35 -0
- package/dist/types/cli/gateway-cli.d.ts +4 -0
- package/dist/types/cli/grievances-cli.d.ts +1 -1
- package/dist/types/cli/list-models.d.ts +6 -14
- package/dist/types/cli/models-cli.d.ts +49 -0
- package/dist/types/cli/session-picker.d.ts +1 -1
- package/dist/types/cli/setup-cli.d.ts +1 -1
- package/dist/types/cli/setup-model-picker.d.ts +14 -0
- package/dist/types/cli/startup-cwd.d.ts +2 -0
- package/dist/types/cli/update-cli.d.ts +13 -40
- package/dist/types/cli/usage-cli.d.ts +81 -0
- package/dist/types/cli-commands.d.ts +12 -0
- package/dist/types/collab/crypto.d.ts +7 -0
- package/dist/types/collab/guest.d.ts +37 -0
- package/dist/types/collab/host.d.ts +29 -0
- package/dist/types/collab/protocol.d.ts +119 -0
- package/dist/types/collab/relay-client.d.ts +22 -0
- package/dist/types/commands/bench.d.ts +29 -0
- package/dist/types/commands/gallery.d.ts +47 -0
- package/dist/types/commands/gateway.d.ts +3 -0
- package/dist/types/commands/install.d.ts +1 -1
- package/dist/types/commands/join.d.ts +12 -0
- package/dist/types/commands/launch.d.ts +8 -4
- package/dist/types/commands/models.d.ts +33 -0
- package/dist/types/commands/read.d.ts +1 -1
- package/dist/types/commands/say.d.ts +24 -0
- package/dist/types/commands/token.d.ts +25 -0
- package/dist/types/commands/usage.d.ts +34 -0
- package/dist/types/commit/agentic/tools/analyze-file.d.ts +1 -1
- package/dist/types/commit/agentic/tools/git-file-diff.d.ts +1 -1
- package/dist/types/commit/agentic/tools/git-hunk.d.ts +1 -1
- package/dist/types/commit/agentic/tools/git-overview.d.ts +1 -1
- package/dist/types/commit/agentic/tools/propose-changelog.d.ts +1 -1
- package/dist/types/commit/agentic/tools/propose-commit.d.ts +1 -1
- package/dist/types/commit/agentic/tools/recent-commits.d.ts +1 -1
- package/dist/types/commit/agentic/tools/schemas.d.ts +1 -1
- package/dist/types/commit/agentic/tools/split-commit.d.ts +1 -1
- package/dist/types/commit/analysis/conventional.d.ts +2 -2
- package/dist/types/commit/analysis/summary.d.ts +2 -2
- package/dist/types/commit/changelog/generate.d.ts +3 -3
- package/dist/types/commit/changelog/index.d.ts +2 -2
- package/dist/types/commit/map-reduce/index.d.ts +3 -3
- package/dist/types/commit/map-reduce/map-phase.d.ts +2 -2
- package/dist/types/commit/map-reduce/reduce-phase.d.ts +2 -2
- package/dist/types/commit/model-selection.d.ts +10 -4
- package/dist/types/commit/shared-llm.d.ts +1 -1
- package/dist/types/config/api-key-resolver.d.ts +43 -0
- package/dist/types/config/append-only-context-mode.d.ts +2 -1
- package/dist/types/config/keybindings.d.ts +12 -7
- package/dist/types/config/model-discovery.d.ts +57 -0
- package/dist/types/config/model-equivalence.d.ts +1 -1
- package/dist/types/config/model-registry.d.ts +86 -222
- package/dist/types/config/model-resolver.d.ts +43 -12
- package/dist/types/config/model-roles.d.ts +29 -0
- package/dist/types/config/models-config-schema.d.ts +536 -43
- package/dist/types/config/models-config.d.ts +391 -0
- package/dist/types/config/settings-schema.d.ts +1211 -324
- package/dist/types/config/settings.d.ts +15 -3
- package/dist/types/dap/config.d.ts +14 -1
- package/dist/types/dap/types.d.ts +10 -0
- package/dist/types/debug/log-viewer.d.ts +1 -1
- package/dist/types/debug/raw-sse.d.ts +1 -1
- package/dist/types/debug/report-bundle.d.ts +3 -0
- package/dist/types/debug/terminal-info.d.ts +0 -1
- package/dist/types/discovery/at-imports.d.ts +15 -0
- package/dist/types/discovery/prometheus-extension-roots.d.ts +7 -7
- package/dist/types/edit/diff.d.ts +3 -2
- package/dist/types/edit/file-snapshot-store.d.ts +18 -0
- package/dist/types/edit/hashline/noop-loop-guard.d.ts +72 -0
- package/dist/types/edit/hashline/params.d.ts +1 -1
- package/dist/types/edit/index.d.ts +0 -1
- package/dist/types/edit/modes/apply-patch.d.ts +1 -1
- package/dist/types/edit/modes/patch.d.ts +1 -1
- package/dist/types/edit/modes/replace.d.ts +1 -1
- package/dist/types/edit/renderer.d.ts +1 -0
- package/dist/types/eval/__tests__/completion-bridge.test.d.ts +1 -0
- package/dist/types/eval/__tests__/helpers-local-roots.test.d.ts +1 -0
- package/dist/types/eval/__tests__/js-context-manager.test.d.ts +1 -0
- package/dist/types/eval/backend.d.ts +7 -2
- package/dist/types/eval/bridge-timeout.d.ts +1 -1
- package/dist/types/eval/completion-bridge.d.ts +25 -0
- package/dist/types/eval/idle-timeout.d.ts +1 -5
- package/dist/types/eval/js/context-manager.d.ts +1 -0
- package/dist/types/eval/js/executor.d.ts +2 -0
- package/dist/types/eval/js/index.d.ts +1 -1
- package/dist/types/eval/js/shared/helpers.d.ts +7 -1
- package/dist/types/eval/js/shared/rewrite-imports.d.ts +6 -6
- package/dist/types/eval/js/shared/runtime.d.ts +6 -1
- package/dist/types/eval/js/worker-protocol.d.ts +6 -0
- package/dist/types/eval/py/__tests__/prelude.test.d.ts +1 -0
- package/dist/types/eval/py/executor.d.ts +12 -0
- package/dist/types/eval/py/index.d.ts +1 -1
- package/dist/types/eval/py/kernel.d.ts +6 -1
- package/dist/types/eval/py/runtime.d.ts +9 -0
- package/dist/types/exa/index.d.ts +1 -19
- package/dist/types/exa/mcp-client.d.ts +10 -3
- package/dist/types/exa/types.d.ts +0 -83
- package/dist/types/exec/bash-executor.d.ts +7 -0
- package/dist/types/export/custom-share.d.ts +1 -2
- package/dist/types/export/html/index.d.ts +39 -0
- package/dist/types/export/html/template-js.d.ts +2 -0
- package/dist/types/export/share.d.ts +61 -0
- package/dist/types/export/ttsr.d.ts +14 -0
- package/dist/types/extensibility/custom-commands/types.d.ts +9 -4
- package/dist/types/extensibility/custom-tools/loader.d.ts +30 -4
- package/dist/types/extensibility/custom-tools/types.d.ts +16 -8
- package/dist/types/extensibility/extensions/index.d.ts +1 -1
- package/dist/types/extensibility/extensions/loader.d.ts +20 -1
- package/dist/types/extensibility/extensions/model-api.d.ts +17 -0
- package/dist/types/extensibility/extensions/runner.d.ts +5 -2
- package/dist/types/extensibility/extensions/types.d.ts +72 -11
- package/dist/types/extensibility/hooks/index.d.ts +2 -1
- package/dist/types/extensibility/hooks/loader.d.ts +1 -1
- package/dist/types/extensibility/hooks/types.d.ts +11 -5
- package/dist/types/extensibility/{legacy-pi-ai-shim.d.ts → legacy-package-ai-shim.d.ts} +2 -2
- package/dist/types/extensibility/plugins/{legacy-pi-compat.d.ts → legacy-package-compat.d.ts} +20 -3
- package/dist/types/extensibility/plugins/loader.d.ts +11 -0
- package/dist/types/extensibility/plugins/marketplace-auto-update.d.ts +8 -0
- package/dist/types/extensibility/plugins/types.d.ts +2 -2
- package/dist/types/extensibility/shared-events.d.ts +3 -3
- package/dist/types/extensibility/skills.d.ts +10 -0
- package/dist/types/extensibility/slash-commands.d.ts +1 -11
- package/dist/types/gateway/adapters/telegram/access.d.ts +4 -1
- package/dist/types/gateway/adapters/telegram/setup-api.d.ts +1 -1
- package/dist/types/gateway/adapters/telegram/webhook.d.ts +1 -1
- package/dist/types/gateway/types.d.ts +1 -1
- package/dist/types/goals/guided-setup.d.ts +18 -0
- package/dist/types/goals/state.d.ts +1 -1
- package/dist/types/goals/tools/goal-tool.d.ts +1 -1
- package/dist/types/hindsight/mental-models.d.ts +17 -8
- package/dist/types/hindsight/transcript.d.ts +1 -1
- package/dist/types/index.d.ts +5 -0
- package/dist/types/internal-urls/artifact-protocol.d.ts +2 -2
- package/dist/types/internal-urls/history-protocol.d.ts +14 -0
- package/dist/types/internal-urls/index.d.ts +1 -0
- package/dist/types/internal-urls/local-protocol.d.ts +14 -2
- package/dist/types/internal-urls/types.d.ts +1 -1
- package/dist/types/irc/bus.d.ts +79 -0
- package/dist/types/lib/xai-http.d.ts +1 -1
- package/dist/types/lsp/client.d.ts +10 -0
- package/dist/types/lsp/config.d.ts +2 -2
- package/dist/types/lsp/edits.d.ts +9 -0
- package/dist/types/lsp/format-options.d.ts +32 -0
- package/dist/types/lsp/index.d.ts +2 -7
- package/dist/types/lsp/types.d.ts +13 -1
- package/dist/types/lsp/utils.d.ts +6 -2
- package/dist/types/main.d.ts +23 -8
- package/dist/types/mcp/json-rpc.d.ts +5 -0
- package/dist/types/mcp/manager.d.ts +8 -0
- package/dist/types/mcp/oauth-discovery.d.ts +6 -1
- package/dist/types/mcp/oauth-flow.d.ts +13 -3
- package/dist/types/mcp/startup-events.d.ts +11 -0
- package/dist/types/mcp/tool-bridge.d.ts +2 -0
- package/dist/types/mcp/transports/stdio.d.ts +13 -0
- package/dist/types/mcp/types.d.ts +2 -0
- package/dist/types/memories/index.d.ts +7 -15
- package/dist/types/memories/storage.d.ts +0 -10
- package/dist/types/memory-backend/index.d.ts +3 -1
- package/dist/types/memory-backend/local-backend.d.ts +4 -3
- package/dist/types/memory-backend/resolve.d.ts +2 -2
- package/dist/types/memory-backend/runtime.d.ts +4 -0
- package/dist/types/memory-backend/types.d.ts +67 -2
- package/dist/types/mnemopi/config.d.ts +31 -1
- package/dist/types/mnemopi/state.d.ts +40 -2
- package/dist/types/modes/acp/acp-agent.d.ts +1 -2
- package/dist/types/modes/components/agent-dashboard.d.ts +17 -1
- package/dist/types/modes/components/agent-hub.d.ts +82 -0
- package/dist/types/modes/components/assistant-message.d.ts +5 -12
- package/dist/types/modes/components/bash-execution.d.ts +1 -1
- package/dist/types/modes/components/chat-block.d.ts +64 -0
- package/dist/types/modes/components/collab-prompt-message.d.ts +10 -0
- package/dist/types/modes/components/compaction-summary-message.d.ts +25 -5
- package/dist/types/modes/components/copy-selector.d.ts +1 -1
- package/dist/types/modes/components/custom-editor.d.ts +49 -2
- package/dist/types/modes/components/custom-editor.test.d.ts +1 -0
- package/dist/types/modes/components/dynamic-border.d.ts +1 -1
- package/dist/types/modes/components/extensions/extension-dashboard.d.ts +1 -1
- package/dist/types/modes/components/extensions/extension-list.d.ts +1 -1
- package/dist/types/modes/components/extensions/inspector-panel.d.ts +1 -1
- package/dist/types/modes/components/footer.d.ts +1 -1
- package/dist/types/modes/components/hook-editor.d.ts +5 -0
- package/dist/types/modes/components/hook-input.d.ts +4 -0
- package/dist/types/modes/components/hook-selector.d.ts +5 -7
- package/dist/types/modes/components/index.d.ts +1 -0
- package/dist/types/modes/components/late-diagnostics-message.d.ts +20 -0
- package/dist/types/modes/components/logout-account-selector.d.ts +8 -0
- package/dist/types/modes/components/mcp-add-wizard.d.ts +2 -1
- package/dist/types/modes/components/model-selector.d.ts +1 -1
- package/dist/types/modes/components/oauth-selector.d.ts +10 -1
- package/dist/types/modes/components/overlay-box.d.ts +17 -0
- package/dist/types/modes/components/plan-review-overlay.d.ts +61 -0
- package/dist/types/modes/components/plan-toc.d.ts +41 -0
- package/dist/types/modes/components/read-tool-group.d.ts +8 -0
- package/dist/types/modes/components/reset-usage-selector.d.ts +12 -0
- package/dist/types/modes/components/segment-track.d.ts +11 -6
- package/dist/types/modes/components/session-selector.d.ts +18 -9
- package/dist/types/modes/components/settings-defs.d.ts +9 -2
- package/dist/types/modes/components/settings-selector.d.ts +17 -4
- package/dist/types/modes/components/snapcompact-shape-preview.d.ts +31 -0
- package/dist/types/modes/components/status-line/component.d.ts +61 -0
- package/dist/types/modes/components/status-line/index.d.ts +1 -0
- package/dist/types/modes/components/status-line/types.d.ts +47 -3
- package/dist/types/modes/components/tiny-title-download-progress.d.ts +1 -1
- package/dist/types/modes/components/tool-execution.d.ts +49 -2
- package/dist/types/modes/components/transcript-container.d.ts +76 -26
- package/dist/types/modes/components/tree-selector.d.ts +2 -2
- package/dist/types/modes/components/ttsr-notification.d.ts +5 -1
- package/dist/types/modes/components/usage-row.d.ts +3 -0
- package/dist/types/modes/components/user-message-selector.d.ts +1 -1
- package/dist/types/modes/components/user-message.d.ts +2 -1
- package/dist/types/modes/components/visual-truncate.d.ts +1 -1
- package/dist/types/modes/components/welcome.d.ts +12 -2
- package/dist/types/modes/controllers/command-controller.d.ts +3 -2
- package/dist/types/modes/controllers/event-controller.d.ts +7 -1
- package/dist/types/modes/controllers/extension-ui-controller.d.ts +0 -1
- package/dist/types/modes/controllers/input-controller.d.ts +25 -3
- package/dist/types/modes/controllers/mcp-command-controller.d.ts +8 -0
- package/dist/types/modes/controllers/selector-controller.d.ts +5 -2
- package/dist/types/modes/controllers/session-focus-controller.d.ts +31 -0
- package/dist/types/modes/controllers/streaming-reveal.d.ts +22 -0
- package/dist/types/modes/controllers/tan-command-controller.d.ts +6 -0
- package/dist/types/modes/controllers/tool-args-reveal.d.ts +43 -0
- package/dist/types/modes/gradient-highlight.d.ts +9 -4
- package/dist/types/modes/image-references.d.ts +14 -3
- package/dist/types/modes/index.d.ts +8 -7
- package/dist/types/modes/interactive-mode.d.ts +92 -16
- package/dist/types/modes/magic-keywords.d.ts +14 -2
- package/dist/types/modes/markdown-prose.d.ts +1 -1
- package/dist/types/modes/oauth-manual-input.d.ts +7 -0
- package/dist/types/modes/rpc/rpc-client.d.ts +48 -2
- package/dist/types/modes/rpc/rpc-mode.d.ts +67 -2
- package/dist/types/modes/rpc/rpc-subagents.d.ts +24 -0
- package/dist/types/modes/rpc/rpc-types.d.ts +113 -1
- package/dist/types/modes/runtime-init.d.ts +4 -0
- package/dist/types/modes/session-observer-registry.d.ts +9 -0
- package/dist/types/modes/setup-version.d.ts +11 -0
- package/dist/types/modes/setup-wizard/index.d.ts +7 -2
- package/dist/types/modes/setup-wizard/lazy.d.ts +2 -0
- package/dist/types/modes/setup-wizard/scenes/sign-in.d.ts +4 -1
- package/dist/types/modes/setup-wizard/scenes/types.d.ts +11 -2
- package/dist/types/modes/setup-wizard/scenes/web-search.d.ts +6 -2
- package/dist/types/modes/setup-wizard/wizard-overlay.d.ts +1 -1
- package/dist/types/modes/theme/theme.d.ts +42 -7
- package/dist/types/modes/types.d.ts +62 -13
- package/dist/types/modes/utils/context-usage.d.ts +6 -1
- package/dist/types/modes/utils/copy-targets.d.ts +21 -1
- package/dist/types/modes/utils/ui-helpers.d.ts +4 -4
- package/dist/types/modes/workflow.d.ts +3 -3
- package/dist/types/plan-mode/approved-plan.d.ts +27 -8
- package/dist/types/plan-mode/plan-protection.d.ts +4 -4
- package/dist/types/registry/agent-lifecycle.d.ts +51 -0
- package/dist/types/registry/agent-registry.d.ts +33 -5
- package/dist/types/sdk.d.ts +46 -4
- package/dist/types/secrets/index.d.ts +1 -1
- package/dist/types/secrets/obfuscator.d.ts +9 -3
- package/dist/types/session/agent-session.d.ts +136 -66
- package/dist/types/session/agent-storage.d.ts +2 -1
- package/dist/types/session/auth-broker-config.d.ts +4 -0
- package/dist/types/session/auth-storage.d.ts +1 -1
- package/dist/types/session/codex-auto-reset.d.ts +111 -0
- package/dist/types/session/indexed-session-storage.d.ts +3 -3
- package/dist/types/session/messages.d.ts +26 -15
- package/dist/types/session/session-context.d.ts +39 -0
- package/dist/types/session/session-entries.d.ts +159 -0
- package/dist/types/session/session-history-format.d.ts +12 -0
- package/dist/types/session/session-listing.d.ts +69 -0
- package/dist/types/session/session-loader.d.ts +16 -0
- package/dist/types/session/session-manager.d.ts +107 -440
- package/dist/types/session/session-migrations.d.ts +12 -0
- package/dist/types/session/session-paths.d.ts +25 -0
- package/dist/types/session/session-persistence.d.ts +8 -0
- package/dist/types/session/session-storage.d.ts +11 -7
- package/dist/types/session/snapcompact-inline.d.ts +145 -0
- package/dist/types/session/snapcompact-savings-journal.d.ts +46 -0
- package/dist/types/session/streaming-output.d.ts +46 -0
- package/dist/types/session/tool-choice-queue.d.ts +6 -6
- package/dist/types/session/yield-queue.d.ts +10 -1
- package/dist/types/slash-commands/acp-builtins.d.ts +16 -0
- package/dist/types/slash-commands/available-commands.d.ts +34 -0
- package/dist/types/slash-commands/builtin-registry.d.ts +10 -0
- package/dist/types/slash-commands/helpers/active-oauth-account.d.ts +14 -0
- package/dist/types/slash-commands/helpers/logout.d.ts +15 -0
- package/dist/types/slash-commands/helpers/reset-usage.d.ts +27 -0
- package/dist/types/slash-commands/helpers/stats-dashboard.d.ts +13 -0
- package/dist/types/slash-commands/types.d.ts +5 -9
- package/dist/types/ssh/connection-manager.d.ts +8 -0
- package/dist/types/stt/asr-client.d.ts +90 -0
- package/dist/types/stt/asr-protocol.d.ts +97 -0
- package/dist/types/stt/asr-worker.d.ts +2 -0
- package/dist/types/stt/downloader.d.ts +38 -0
- package/dist/types/stt/endpointer.d.ts +59 -0
- package/dist/types/stt/index.d.ts +5 -1
- package/dist/types/stt/models.d.ts +120 -0
- package/dist/types/stt/recorder.d.ts +17 -0
- package/dist/types/stt/stt-controller.d.ts +6 -0
- package/dist/types/stt/transcriber.d.ts +5 -7
- package/dist/types/stt/wav.d.ts +29 -0
- package/dist/types/system-prompt.d.ts +9 -1
- package/dist/types/task/commands.d.ts +1 -1
- package/dist/types/task/discovery.d.ts +1 -2
- package/dist/types/task/executor.d.ts +61 -2
- package/dist/types/task/index.d.ts +37 -6
- package/dist/types/task/output-manager.d.ts +0 -7
- package/dist/types/task/parallel.d.ts +2 -2
- package/dist/types/task/prometheus-command.d.ts +2 -2
- package/dist/types/task/render.d.ts +20 -7
- package/dist/types/task/repair-args.d.ts +8 -7
- package/dist/types/task/types.d.ts +109 -52
- package/dist/types/task/worktree.d.ts +2 -0
- package/dist/types/telemetry-export.d.ts +2 -2
- package/dist/types/thinking.d.ts +4 -0
- package/dist/types/tiny/models.d.ts +1 -1
- package/dist/types/tiny/title-client.d.ts +12 -1
- package/dist/types/tiny/title-protocol.d.ts +1 -0
- package/dist/types/tools/archive-reader.d.ts +5 -0
- package/dist/types/tools/ask.d.ts +6 -1
- package/dist/types/tools/ast-edit.d.ts +4 -1
- package/dist/types/tools/ast-grep.d.ts +4 -1
- package/dist/types/tools/bash.d.ts +5 -2
- package/dist/types/tools/browser/attach.d.ts +4 -4
- package/dist/types/tools/browser/cmux/cmux-tab.d.ts +202 -0
- package/dist/types/tools/browser/cmux/rpc.d.ts +70 -0
- package/dist/types/tools/browser/cmux/socket-client.d.ts +19 -0
- package/dist/types/tools/browser/registry.d.ts +17 -3
- package/dist/types/tools/browser/render.d.ts +2 -0
- package/dist/types/tools/browser/tab-protocol.d.ts +2 -0
- package/dist/types/tools/browser/tab-supervisor.d.ts +16 -4
- package/dist/types/tools/browser/tab-worker.d.ts +18 -1
- package/dist/types/tools/browser.d.ts +3 -1
- package/dist/types/tools/checkpoint.d.ts +1 -1
- package/dist/types/tools/conflict-detect.d.ts +16 -0
- package/dist/types/tools/debug.d.ts +1 -1
- package/dist/types/tools/eval-render.d.ts +1 -8
- package/dist/types/tools/eval.d.ts +9 -1
- package/dist/types/tools/fetch.d.ts +17 -8
- package/dist/types/tools/find.d.ts +1 -8
- package/dist/types/tools/gh-cache-invalidation.d.ts +6 -0
- package/dist/types/tools/gh.d.ts +4 -1
- package/dist/types/tools/github-cache.d.ts +19 -0
- package/dist/types/tools/grouped-file-output.d.ts +46 -12
- package/dist/types/tools/image-gen.d.ts +1 -1
- package/dist/types/tools/index.d.ts +89 -8
- package/dist/types/tools/inspect-image.d.ts +1 -1
- package/dist/types/tools/irc.d.ts +79 -39
- package/dist/types/tools/job.d.ts +8 -2
- package/dist/types/tools/learn.d.ts +51 -0
- package/dist/types/tools/manage-skill.d.ts +40 -0
- package/dist/types/tools/memory-edit.d.ts +2 -2
- package/dist/types/tools/memory-recall.d.ts +1 -1
- package/dist/types/tools/memory-reflect.d.ts +1 -1
- package/dist/types/tools/memory-render.d.ts +4 -1
- package/dist/types/tools/memory-retain.d.ts +1 -1
- package/dist/types/tools/path-utils.d.ts +17 -5
- package/dist/types/tools/plan-mode-guard.d.ts +18 -9
- package/dist/types/tools/read.d.ts +3 -2
- package/dist/types/tools/render-mermaid.d.ts +1 -1
- package/dist/types/tools/render-utils.d.ts +47 -27
- package/dist/types/tools/renderers.d.ts +10 -2
- package/dist/types/tools/report-tool-issue.d.ts +6 -1
- package/dist/types/tools/resolve.d.ts +1 -1
- package/dist/types/tools/review.d.ts +1 -1
- package/dist/types/tools/search-tool-bm25.d.ts +1 -1
- package/dist/types/tools/search.d.ts +7 -3
- package/dist/types/tools/sqlite-reader.d.ts +4 -0
- package/dist/types/tools/ssh.d.ts +2 -1
- package/dist/types/tools/todo.d.ts +7 -15
- package/dist/types/tools/tool-result.d.ts +2 -0
- package/dist/types/tools/tool-timeouts.d.ts +1 -1
- package/dist/types/tools/tts.d.ts +26 -1
- package/dist/types/tools/write.d.ts +6 -3
- package/dist/types/tools/yield.d.ts +8 -0
- package/dist/types/tts/downloader.d.ts +20 -0
- package/dist/types/tts/index.d.ts +8 -0
- package/dist/types/tts/models.d.ts +82 -0
- package/dist/types/tts/player.d.ts +32 -0
- package/dist/types/tts/runtime.d.ts +6 -0
- package/dist/types/tts/streaming-player.d.ts +41 -0
- package/dist/types/tts/tts-client.d.ts +93 -0
- package/dist/types/tts/tts-protocol.d.ts +95 -0
- package/dist/types/tts/tts-worker.d.ts +2 -0
- package/dist/types/tts/vocalizer.d.ts +41 -0
- package/dist/types/tts/wav.d.ts +8 -0
- package/dist/types/tui/code-cell.d.ts +0 -2
- package/dist/types/tui/hyperlink.d.ts +13 -7
- package/dist/types/tui/output-block.d.ts +16 -22
- package/dist/types/tui/status-line.d.ts +3 -0
- package/dist/types/utils/block-context.d.ts +35 -0
- package/dist/types/utils/changelog.d.ts +8 -0
- package/dist/types/utils/clipboard.d.ts +4 -3
- package/dist/types/utils/enhanced-paste.d.ts +20 -0
- package/dist/types/utils/file-mentions.d.ts +7 -0
- package/dist/types/utils/git.d.ts +22 -3
- package/dist/types/utils/image-loading.d.ts +30 -1
- package/dist/types/utils/session-color.d.ts +15 -3
- package/dist/types/utils/thinking-display.d.ts +17 -0
- package/dist/types/utils/title-generator.d.ts +3 -2
- package/dist/types/utils/tool-choice.d.ts +8 -0
- package/dist/types/utils/tools-manager.d.ts +2 -1
- package/dist/types/web/kagi.d.ts +2 -2
- package/dist/types/web/parallel.d.ts +3 -0
- package/dist/types/web/scrapers/github.d.ts +22 -0
- package/dist/types/web/scrapers/readthedocs.d.ts +3 -0
- package/dist/types/web/scrapers/types.d.ts +12 -0
- package/dist/types/web/search/index.d.ts +1 -1
- package/dist/types/web/search/providers/anthropic.d.ts +2 -1
- package/dist/types/web/search/providers/base.d.ts +2 -1
- package/dist/types/web/search/providers/brave.d.ts +2 -1
- package/dist/types/web/search/providers/codex.d.ts +2 -1
- package/dist/types/web/search/providers/exa.d.ts +2 -1
- package/dist/types/web/search/providers/gemini.d.ts +10 -6
- package/dist/types/web/search/providers/jina.d.ts +7 -2
- package/dist/types/web/search/providers/kagi.d.ts +7 -2
- package/dist/types/web/search/providers/kimi.d.ts +7 -2
- package/dist/types/web/search/providers/parallel.d.ts +2 -1
- package/dist/types/web/search/providers/perplexity.d.ts +10 -2
- package/dist/types/web/search/providers/searxng.d.ts +2 -1
- package/dist/types/web/search/providers/synthetic.d.ts +7 -3
- package/dist/types/web/search/providers/tavily.d.ts +2 -1
- package/dist/types/web/search/providers/zai.d.ts +2 -1
- package/dist/types/web/search/types.d.ts +1 -1
- package/examples/extensions/api-demo.ts +2 -2
- package/package.json +41 -15
- package/scripts/bench-guard.ts +71 -0
- package/scripts/build-binary.ts +24 -25
- package/scripts/bundle-dist.ts +97 -0
- package/scripts/generate-share-viewer.ts +34 -0
- package/scripts/prometheus +42 -0
- package/scripts/prometheus.ts +20 -0
- package/src/async/index.ts +0 -1
- package/src/async/job-manager.ts +106 -3
- package/src/auto-thinking/classifier.ts +2 -1
- package/src/autolearn/controller.ts +139 -0
- package/src/autolearn/managed-skills.ts +257 -0
- package/src/autoresearch/dashboard.ts +1 -1
- package/src/autoresearch/prompt-setup.md +6 -6
- package/src/autoresearch/prompt.md +6 -6
- package/src/autoresearch/state.ts +1 -1
- package/src/autoresearch/storage.ts +2 -1
- package/src/autoresearch/tools/init-experiment.ts +1 -1
- package/src/autoresearch/tools/log-experiment.ts +1 -1
- package/src/autoresearch/tools/run-experiment.ts +1 -1
- package/src/autoresearch/tools/update-notes.ts +1 -1
- package/src/autoresearch/types.ts +1 -1
- package/src/capability/context-file.ts +0 -14
- package/src/capability/fs.ts +10 -0
- package/src/capability/index.ts +1 -6
- package/src/capability/mcp.ts +1 -0
- package/src/capability/rule-buckets.ts +4 -2
- package/src/capability/rule.ts +10 -1
- package/src/capability/types.ts +0 -4
- package/src/cli/args.ts +66 -13
- package/src/cli/auth-broker-cli.ts +6 -7
- package/src/cli/auth-gateway-cli.ts +8 -9
- package/src/cli/bench-cli.ts +437 -0
- package/src/cli/claude-trace-cli.ts +28 -50
- package/src/cli/completion-gen.ts +28 -28
- package/src/cli/dry-balance-cli.ts +56 -23
- package/src/cli/gallery-cli.ts +231 -0
- package/src/cli/gallery-fixtures/agentic.ts +407 -0
- package/src/cli/gallery-fixtures/codeintel.ts +187 -0
- package/src/cli/gallery-fixtures/edit.ts +194 -0
- package/src/cli/gallery-fixtures/fs.ts +220 -0
- package/src/cli/gallery-fixtures/index.ts +40 -0
- package/src/cli/gallery-fixtures/interaction.ts +49 -0
- package/src/cli/gallery-fixtures/memory.ts +81 -0
- package/src/cli/gallery-fixtures/misc.ts +250 -0
- package/src/cli/gallery-fixtures/search.ts +213 -0
- package/src/cli/gallery-fixtures/shell.ts +167 -0
- package/src/cli/gallery-fixtures/types.ts +57 -0
- package/src/cli/gallery-fixtures/web.ts +158 -0
- package/src/cli/gallery-screenshot.ts +279 -0
- package/src/cli/gateway-cli.ts +32 -2
- package/src/cli/grievances-cli.ts +1 -1
- package/src/cli/list-models.ts +16 -174
- package/src/cli/models-cli.ts +429 -0
- package/src/cli/session-picker.ts +2 -1
- package/src/cli/setup-cli.ts +148 -47
- package/src/cli/setup-model-picker.ts +43 -0
- package/src/cli/startup-cwd.ts +68 -0
- package/src/cli/update-cli.ts +144 -272
- package/src/cli/usage-cli.ts +774 -0
- package/src/cli-commands.ts +36 -0
- package/src/cli.ts +141 -32
- package/src/collab/crypto.ts +63 -0
- package/src/collab/guest.ts +451 -0
- package/src/collab/host.ts +565 -0
- package/src/collab/protocol.ts +241 -0
- package/src/collab/relay-client.ts +216 -0
- package/src/commands/bench.ts +42 -0
- package/src/commands/complete.ts +1 -1
- package/src/commands/gallery.ts +52 -0
- package/src/commands/gateway.ts +4 -0
- package/src/commands/install.ts +1 -1
- package/src/commands/join.ts +39 -0
- package/src/commands/launch.ts +8 -4
- package/src/commands/models.ts +61 -0
- package/src/commands/read.ts +6 -3
- package/src/commands/say.ts +102 -0
- package/src/commands/setup.ts +1 -1
- package/src/commands/token.ts +89 -0
- package/src/commands/usage.ts +43 -0
- package/src/commit/agentic/agent.ts +2 -1
- package/src/commit/agentic/tools/analyze-file.ts +42 -20
- package/src/commit/agentic/tools/git-file-diff.ts +1 -1
- package/src/commit/agentic/tools/git-hunk.ts +1 -1
- package/src/commit/agentic/tools/git-overview.ts +1 -1
- package/src/commit/agentic/tools/propose-changelog.ts +1 -1
- package/src/commit/agentic/tools/propose-commit.ts +1 -1
- package/src/commit/agentic/tools/recent-commits.ts +1 -1
- package/src/commit/agentic/tools/schemas.ts +1 -1
- package/src/commit/agentic/tools/split-commit.ts +9 -2
- package/src/commit/analysis/conventional.ts +2 -2
- package/src/commit/analysis/summary.ts +3 -3
- package/src/commit/changelog/generate.ts +3 -3
- package/src/commit/changelog/index.ts +2 -2
- package/src/commit/map-reduce/index.ts +3 -3
- package/src/commit/map-reduce/map-phase.ts +2 -2
- package/src/commit/map-reduce/reduce-phase.ts +2 -2
- package/src/commit/model-selection.ts +35 -12
- package/src/commit/pipeline.ts +4 -4
- package/src/commit/shared-llm.ts +1 -1
- package/src/config/api-key-resolver.ts +67 -0
- package/src/config/append-only-context-mode.ts +6 -12
- package/src/config/keybindings.ts +9 -4
- package/src/config/mcp-schema.json +4 -0
- package/src/config/model-discovery.ts +574 -0
- package/src/config/model-equivalence.ts +5 -4
- package/src/config/model-registry.ts +659 -1093
- package/src/config/model-resolver.ts +374 -174
- package/src/config/model-roles.ts +88 -0
- package/src/config/models-config-schema.ts +61 -9
- package/src/config/models-config.ts +130 -0
- package/src/config/settings-schema.ts +1445 -382
- package/src/config/settings.ts +261 -69
- package/src/dap/client.ts +138 -53
- package/src/dap/config.ts +41 -2
- package/src/dap/defaults.json +1 -0
- package/src/dap/session.ts +263 -161
- package/src/dap/types.ts +10 -0
- package/src/debug/index.ts +50 -60
- package/src/debug/log-viewer.ts +1 -1
- package/src/debug/protocol-probe.ts +1 -1
- package/src/debug/raw-sse-buffer.ts +7 -4
- package/src/debug/raw-sse.ts +1 -1
- package/src/debug/report-bundle.ts +9 -0
- package/src/debug/terminal-info.ts +0 -3
- package/src/discovery/agents-md.ts +25 -21
- package/src/discovery/agents.ts +9 -15
- package/src/discovery/at-imports.ts +273 -0
- package/src/discovery/builtin-rules/index.ts +4 -0
- package/src/discovery/builtin-rules/ts-no-test-timers.md +55 -0
- package/src/discovery/builtin-rules/ts-redundant-clear-guard.md +75 -0
- package/src/discovery/builtin.ts +45 -23
- package/src/discovery/claude-plugins.ts +44 -5
- package/src/discovery/helpers.ts +50 -9
- package/src/discovery/prometheus-extension-roots.ts +10 -10
- package/src/discovery/prometheus-plugins.ts +10 -10
- package/src/edit/diff.ts +191 -4
- package/src/edit/file-snapshot-store.ts +34 -1
- package/src/edit/hashline/block-resolver.ts +20 -1
- package/src/edit/hashline/diff.ts +123 -2
- package/src/edit/hashline/execute.ts +60 -4
- package/src/edit/hashline/filesystem.ts +2 -1
- package/src/edit/hashline/noop-loop-guard.ts +99 -0
- package/src/edit/hashline/params.ts +1 -1
- package/src/edit/index.ts +47 -18
- package/src/edit/modes/apply-patch.ts +1 -1
- package/src/edit/modes/patch.ts +59 -3
- package/src/edit/modes/replace.ts +58 -24
- package/src/edit/notebook.ts +22 -2
- package/src/edit/renderer.ts +315 -151
- package/src/eval/__tests__/agent-bridge.test.ts +105 -39
- package/src/eval/__tests__/budget-bridge.test.ts +1 -1
- package/src/eval/__tests__/completion-bridge.test.ts +412 -0
- package/src/eval/__tests__/helpers-local-roots.test.ts +58 -0
- package/src/eval/__tests__/js-context-manager.test.ts +241 -0
- package/src/eval/__tests__/llm-bridge.test.ts +6 -4
- package/src/eval/__tests__/shared-executors.test.ts +34 -92
- package/src/eval/agent-bridge.ts +39 -23
- package/src/eval/backend.ts +15 -2
- package/src/eval/bridge-timeout.ts +1 -1
- package/src/eval/completion-bridge.ts +203 -0
- package/src/eval/idle-timeout.ts +3 -10
- package/src/eval/js/context-manager.ts +108 -31
- package/src/eval/js/executor.ts +9 -2
- package/src/eval/js/index.ts +7 -3
- package/src/eval/js/shared/helpers.ts +59 -13
- package/src/eval/js/shared/local-module-loader.ts +2 -2
- package/src/eval/js/shared/prelude.txt +167 -30
- package/src/eval/js/shared/rewrite-imports.ts +58 -34
- package/src/eval/js/shared/runtime.ts +24 -16
- package/src/eval/js/tool-bridge.ts +4 -0
- package/src/eval/js/worker-core.ts +1 -0
- package/src/eval/js/worker-entry.ts +6 -0
- package/src/eval/js/worker-protocol.ts +6 -0
- package/src/eval/llm-bridge.ts +2 -1
- package/src/eval/py/__tests__/prelude.test.ts +19 -0
- package/src/eval/py/executor.ts +70 -26
- package/src/eval/py/index.ts +13 -4
- package/src/eval/py/kernel.ts +48 -9
- package/src/eval/py/prelude.py +73 -24
- package/src/eval/py/runner.py +133 -28
- package/src/eval/py/runtime.ts +38 -1
- package/src/exa/index.ts +1 -26
- package/src/exa/mcp-client.ts +10 -10
- package/src/exa/types.ts +0 -97
- package/src/exec/bash-executor.ts +104 -7
- package/src/export/custom-share.ts +1 -1
- package/src/export/html/index.ts +119 -17
- package/src/export/html/share-loader.js +102 -0
- package/src/export/html/template-js.ts +6 -0
- package/src/export/html/template.css +745 -459
- package/src/export/html/template.css.d.ts +2 -0
- package/src/export/html/template.html +6 -3
- package/src/export/html/template.js +277 -891
- package/src/export/html/tool-views.generated.d.ts +2 -0
- package/src/export/html/tool-views.generated.js +38 -0
- package/src/export/share.ts +269 -0
- package/src/export/ttsr.ts +122 -1
- package/src/extensibility/custom-commands/loader.ts +7 -4
- package/src/extensibility/custom-commands/types.ts +9 -4
- package/src/extensibility/custom-tools/loader.ts +51 -23
- package/src/extensibility/custom-tools/types.ts +16 -8
- package/src/extensibility/extensions/get-commands-handler.ts +2 -1
- package/src/extensibility/extensions/index.ts +1 -0
- package/src/extensibility/extensions/loader.ts +70 -20
- package/src/extensibility/extensions/model-api.ts +41 -0
- package/src/extensibility/extensions/runner.ts +12 -2
- package/src/extensibility/extensions/types.ts +83 -11
- package/src/extensibility/extensions/wrapper.ts +41 -5
- package/src/extensibility/hooks/index.ts +2 -1
- package/src/extensibility/hooks/loader.ts +6 -3
- package/src/extensibility/hooks/types.ts +11 -5
- package/src/extensibility/{legacy-pi-ai-shim.ts → legacy-package-ai-shim.ts} +2 -2
- package/src/extensibility/plugins/doctor.ts +1 -2
- package/src/extensibility/plugins/installer.ts +2 -2
- package/src/extensibility/plugins/{legacy-pi-compat.ts → legacy-package-compat.ts} +165 -77
- package/src/extensibility/plugins/loader.ts +34 -23
- package/src/extensibility/plugins/manager.ts +226 -95
- package/src/extensibility/plugins/marketplace-auto-update.ts +49 -0
- package/src/extensibility/plugins/types.ts +3 -3
- package/src/extensibility/shared-events.ts +3 -3
- package/src/extensibility/skills.ts +113 -9
- package/src/extensibility/slash-commands.ts +1 -97
- package/src/gateway/adapters/telegram/access.ts +39 -4
- package/src/gateway/adapters/telegram/normalize.ts +16 -1
- package/src/gateway/adapters/telegram/setup-api.ts +7 -1
- package/src/gateway/adapters/telegram/webhook.ts +26 -5
- package/src/gateway/context.ts +9 -1
- package/src/gateway/types.ts +1 -1
- package/src/goals/guided-setup.ts +133 -0
- package/src/goals/state.ts +1 -1
- package/src/goals/tools/goal-tool.ts +38 -28
- package/src/hindsight/bank.ts +17 -2
- package/src/hindsight/client.ts +27 -2
- package/src/hindsight/mental-models.ts +59 -12
- package/src/hindsight/state.ts +12 -3
- package/src/hindsight/transcript.ts +1 -1
- package/src/index.ts +5 -0
- package/src/internal-urls/artifact-protocol.ts +11 -2
- package/src/internal-urls/docs-index.generated.ts +11 -9
- package/src/internal-urls/history-protocol.ts +113 -0
- package/src/internal-urls/index.ts +1 -0
- package/src/internal-urls/issue-pr-protocol.ts +22 -9
- package/src/internal-urls/local-protocol.ts +42 -7
- package/src/internal-urls/memory-protocol.ts +4 -31
- package/src/internal-urls/router.ts +3 -1
- package/src/internal-urls/types.ts +1 -1
- package/src/irc/bus.ts +303 -0
- package/src/lib/xai-http.ts +3 -3
- package/src/lsp/client.ts +245 -104
- package/src/lsp/clients/biome-client.ts +101 -39
- package/src/lsp/clients/lsp-linter-client.ts +2 -10
- package/src/lsp/config.ts +15 -5
- package/src/lsp/defaults.json +6 -0
- package/src/lsp/edits.ts +143 -95
- package/src/lsp/format-options.ts +119 -0
- package/src/lsp/index.ts +233 -93
- package/src/lsp/render.ts +11 -35
- package/src/lsp/types.ts +13 -1
- package/src/lsp/utils.ts +31 -12
- package/src/main.ts +396 -216
- package/src/mcp/config-writer.ts +7 -3
- package/src/mcp/json-rpc.ts +35 -5
- package/src/mcp/manager.ts +31 -16
- package/src/mcp/oauth-discovery.ts +34 -4
- package/src/mcp/oauth-flow.ts +61 -8
- package/src/mcp/render.ts +7 -1
- package/src/mcp/startup-events.ts +21 -0
- package/src/mcp/tool-bridge.ts +2 -0
- package/src/mcp/transports/stdio.ts +224 -4
- package/src/mcp/types.ts +2 -0
- package/src/memories/index.ts +174 -1128
- package/src/memories/storage.ts +2 -41
- package/src/memory-backend/index.ts +14 -1
- package/src/memory-backend/local-backend.ts +18 -3
- package/src/memory-backend/off-backend.ts +9 -0
- package/src/memory-backend/resolve.ts +4 -6
- package/src/memory-backend/runtime.ts +66 -0
- package/src/memory-backend/types.ts +82 -2
- package/src/mnemopi/backend.ts +220 -28
- package/src/mnemopi/config.ts +138 -33
- package/src/mnemopi/state.ts +91 -11
- package/src/modes/acp/acp-agent.ts +149 -142
- package/src/modes/acp/acp-event-mapper.ts +5 -1
- package/src/modes/components/agent-dashboard.ts +17 -11
- package/src/modes/components/agent-hub.ts +1346 -0
- package/src/modes/components/assistant-message.ts +190 -80
- package/src/modes/components/bash-execution.ts +1 -1
- package/src/modes/components/btw-panel.ts +5 -1
- package/src/modes/components/chat-block.ts +111 -0
- package/src/modes/components/collab-prompt-message.ts +30 -0
- package/src/modes/components/compaction-summary-message.ts +168 -33
- package/src/modes/components/copy-selector.ts +2 -45
- package/src/modes/components/custom-editor.test.ts +96 -0
- package/src/modes/components/custom-editor.ts +405 -118
- package/src/modes/components/custom-message.ts +1 -3
- package/src/modes/components/diff.ts +13 -2
- package/src/modes/components/dynamic-border.ts +12 -3
- package/src/modes/components/execution-shared.ts +1 -2
- package/src/modes/components/extensions/extension-dashboard.ts +8 -5
- package/src/modes/components/extensions/extension-list.ts +1 -1
- package/src/modes/components/extensions/inspector-panel.ts +7 -3
- package/src/modes/components/extensions/state-manager.ts +36 -41
- package/src/modes/components/footer.ts +4 -2
- package/src/modes/components/history-search.ts +1 -1
- package/src/modes/components/hook-editor.ts +8 -0
- package/src/modes/components/hook-input.ts +8 -0
- package/src/modes/components/hook-message.ts +1 -3
- package/src/modes/components/hook-selector.ts +6 -7
- package/src/modes/components/index.ts +1 -0
- package/src/modes/components/late-diagnostics-message.ts +60 -0
- package/src/modes/components/login-dialog.ts +1 -1
- package/src/modes/components/logout-account-selector.ts +130 -0
- package/src/modes/components/mcp-add-wizard.ts +14 -1
- package/src/modes/components/model-selector.ts +177 -75
- package/src/modes/components/oauth-selector.ts +102 -16
- package/src/modes/components/overlay-box.ts +108 -0
- package/src/modes/components/plan-review-overlay.ts +845 -0
- package/src/modes/components/plan-toc.ts +138 -0
- package/src/modes/components/plugin-settings.ts +22 -5
- package/src/modes/components/read-tool-group.ts +442 -39
- package/src/modes/components/reset-usage-selector.ts +161 -0
- package/src/modes/components/segment-track.ts +44 -7
- package/src/modes/components/session-selector.ts +97 -37
- package/src/modes/components/settings-defs.ts +28 -6
- package/src/modes/components/settings-selector.ts +541 -93
- package/src/modes/components/skill-message.ts +0 -1
- package/src/modes/components/snapcompact-shape-preview-doc.md +11 -0
- package/src/modes/components/snapcompact-shape-preview.ts +193 -0
- package/src/modes/components/{status-line.ts → status-line/component.ts} +205 -168
- package/src/modes/components/status-line/index.ts +1 -0
- package/src/modes/components/status-line/presets.ts +3 -3
- package/src/modes/components/status-line/segments.ts +26 -7
- package/src/modes/components/status-line/types.ts +40 -9
- package/src/modes/components/tiny-title-download-progress.ts +1 -1
- package/src/modes/components/tips.txt +7 -3
- package/src/modes/components/todo-reminder.ts +0 -2
- package/src/modes/components/tool-execution.ts +236 -103
- package/src/modes/components/transcript-container.ts +724 -99
- package/src/modes/components/tree-selector.ts +19 -4
- package/src/modes/components/ttsr-notification.ts +72 -30
- package/src/modes/components/usage-row.ts +18 -0
- package/src/modes/components/user-message-selector.ts +1 -1
- package/src/modes/components/user-message.ts +28 -12
- package/src/modes/components/visual-truncate.ts +1 -1
- package/src/modes/components/welcome.ts +80 -22
- package/src/modes/controllers/command-controller-shared.ts +7 -6
- package/src/modes/controllers/command-controller.ts +210 -180
- package/src/modes/controllers/event-controller.ts +352 -142
- package/src/modes/controllers/extension-ui-controller.ts +167 -208
- package/src/modes/controllers/input-controller.ts +778 -162
- package/src/modes/controllers/mcp-command-controller.ts +232 -80
- package/src/modes/controllers/selector-controller.ts +284 -145
- package/src/modes/controllers/session-focus-controller.ts +112 -0
- package/src/modes/controllers/ssh-command-controller.ts +2 -2
- package/src/modes/controllers/streaming-reveal.ts +295 -0
- package/src/modes/controllers/tan-command-controller.ts +173 -0
- package/src/modes/controllers/tool-args-reveal.ts +174 -0
- package/src/modes/gradient-highlight.ts +21 -9
- package/src/modes/image-references.ts +33 -7
- package/src/modes/index.ts +8 -25
- package/src/modes/interactive-mode.ts +840 -186
- package/src/modes/magic-keywords.ts +28 -6
- package/src/modes/markdown-prose.ts +1 -1
- package/src/modes/oauth-manual-input.ts +30 -3
- package/src/modes/rpc/rpc-client.ts +186 -3
- package/src/modes/rpc/rpc-mode.ts +318 -24
- package/src/modes/rpc/rpc-subagents.ts +265 -0
- package/src/modes/rpc/rpc-types.ts +111 -2
- package/src/modes/runtime-init.ts +28 -3
- package/src/modes/session-observer-registry.ts +72 -3
- package/src/modes/setup-version.ts +11 -0
- package/src/modes/setup-wizard/index.ts +16 -4
- package/src/modes/setup-wizard/lazy.ts +16 -0
- package/src/modes/setup-wizard/scenes/glyph.ts +25 -7
- package/src/modes/setup-wizard/scenes/providers.ts +45 -12
- package/src/modes/setup-wizard/scenes/sign-in.ts +14 -13
- package/src/modes/setup-wizard/scenes/splash.ts +1 -1
- package/src/modes/setup-wizard/scenes/telegram.ts +77 -22
- package/src/modes/setup-wizard/scenes/theme.ts +29 -2
- package/src/modes/setup-wizard/scenes/types.ts +11 -2
- package/src/modes/setup-wizard/scenes/web-search.ts +26 -9
- package/src/modes/setup-wizard/wizard-overlay.ts +40 -3
- package/src/modes/shared.ts +2 -0
- package/src/modes/theme/defaults/dark-poimandres.json +1 -1
- package/src/modes/theme/defaults/light-poimandres.json +1 -1
- package/src/modes/theme/shimmer.ts +20 -9
- package/src/modes/theme/theme-schema.json +1 -1
- package/src/modes/theme/theme.ts +342 -82
- package/src/modes/types.ts +60 -18
- package/src/modes/utils/context-usage.ts +88 -8
- package/src/modes/utils/copy-targets.ts +133 -27
- package/src/modes/utils/hotkeys-markdown.ts +3 -2
- package/src/modes/utils/ui-helpers.ts +191 -110
- package/src/modes/workflow.ts +10 -10
- package/src/plan-mode/approved-plan.ts +66 -43
- package/src/plan-mode/plan-protection.ts +4 -4
- package/src/priority.json +5 -1
- package/src/prompts/agents/designer.md +1 -1
- package/src/prompts/agents/explore.md +3 -3
- package/src/prompts/agents/librarian.md +2 -3
- package/src/prompts/agents/oracle.md +2 -2
- package/src/prompts/agents/plan.md +6 -6
- package/src/prompts/agents/reviewer.md +1 -1
- package/src/prompts/agents/task.md +6 -5
- package/src/prompts/bench.md +12 -0
- package/src/prompts/ci-green-request.md +5 -7
- package/src/prompts/goals/goal-budget-limit.md +2 -2
- package/src/prompts/goals/goal-continuation.md +4 -4
- package/src/prompts/goals/goal-mode-active.md +1 -1
- package/src/prompts/goals/guided-goal-interview.md +8 -0
- package/src/prompts/goals/guided-goal-system.md +12 -0
- package/src/prompts/memories/consolidation.md +2 -7
- package/src/prompts/memories/consolidation_system.md +4 -0
- package/src/prompts/memories/identity_review.md +2 -2
- package/src/prompts/memories/read-path.md +11 -10
- package/src/prompts/memories/stage_one_system.md +2 -2
- package/src/prompts/review-custom-request.md +1 -1
- package/src/prompts/system/agent-creation-architect.md +2 -2
- package/src/prompts/system/auto-continue.md +1 -1
- package/src/prompts/system/autolearn-guidance-learn.md +1 -0
- package/src/prompts/system/autolearn-guidance.md +7 -0
- package/src/prompts/system/autolearn-nudge.md +3 -0
- package/src/prompts/system/background-tan-dispatch.md +8 -0
- package/src/prompts/system/btw-user.md +2 -2
- package/src/prompts/system/commit-message-system.md +13 -1
- package/src/prompts/system/custom-system-prompt.md +1 -1
- package/src/prompts/system/eager-task.md +7 -0
- package/src/prompts/system/eager-todo.md +11 -6
- package/src/prompts/system/empty-stop-retry.md +4 -6
- package/src/prompts/system/irc-autoreply.md +6 -0
- package/src/prompts/system/irc-incoming.md +3 -4
- package/src/prompts/system/manual-continue.md +7 -0
- package/src/prompts/system/omfg-user.md +3 -4
- package/src/prompts/system/orchestrate-notice.md +10 -10
- package/src/prompts/system/personalities/default.md +26 -0
- package/src/prompts/system/personalities/friendly.md +17 -0
- package/src/prompts/system/personalities/pragmatic.md +15 -0
- package/src/prompts/system/plan-mode-active.md +70 -77
- package/src/prompts/system/plan-mode-approved.md +1 -1
- package/src/prompts/system/plan-mode-subagent.md +4 -5
- package/src/prompts/system/plan-mode-tool-decision-reminder.md +1 -1
- package/src/prompts/system/project-prompt.md +2 -2
- package/src/prompts/system/snapcompact-context-frames-note.md +1 -0
- package/src/prompts/system/snapcompact-context-stub.md +1 -0
- package/src/prompts/system/snapcompact-system-frames-note.md +1 -0
- package/src/prompts/system/snapcompact-system-stub.md +1 -0
- package/src/prompts/system/snapcompact-toolresult-note.md +1 -0
- package/src/prompts/system/subagent-system-prompt.md +7 -8
- package/src/prompts/system/system-prompt.md +28 -57
- package/src/prompts/system/tiny-title-system.md +1 -1
- package/src/prompts/system/title-marker-instruction.md +1 -0
- package/src/prompts/system/title-system-marker.md +16 -0
- package/src/prompts/system/title-system.md +16 -3
- package/src/prompts/system/ttsr-tool-reminder.md +1 -1
- package/src/prompts/system/workflow-notice.md +4 -4
- package/src/prompts/tools/ast-edit.md +1 -1
- package/src/prompts/tools/ast-grep.md +2 -2
- package/src/prompts/tools/bash.md +16 -8
- package/src/prompts/tools/browser.md +33 -43
- package/src/prompts/tools/debug.md +1 -1
- package/src/prompts/tools/eval.md +31 -51
- package/src/prompts/tools/find.md +0 -1
- package/src/prompts/tools/github.md +8 -7
- package/src/prompts/tools/goal.md +1 -1
- package/src/prompts/tools/image-gen.md +1 -1
- package/src/prompts/tools/inspect-image-system.md +1 -1
- package/src/prompts/tools/irc.md +39 -31
- package/src/prompts/tools/job.md +2 -1
- package/src/prompts/tools/learn.md +7 -0
- package/src/prompts/tools/lsp-late-diagnostic.md +8 -0
- package/src/prompts/tools/lsp.md +2 -2
- package/src/prompts/tools/manage-skill.md +9 -0
- package/src/prompts/tools/memory-edit.md +1 -1
- package/src/prompts/tools/patch.md +2 -2
- package/src/prompts/tools/read.md +31 -39
- package/src/prompts/tools/recall.md +1 -1
- package/src/prompts/tools/reflect.md +1 -1
- package/src/prompts/tools/render-mermaid.md +2 -2
- package/src/prompts/tools/replace.md +4 -10
- package/src/prompts/tools/rewind.md +2 -2
- package/src/prompts/tools/search-tool-bm25.md +1 -9
- package/src/prompts/tools/search.md +0 -1
- package/src/prompts/tools/ssh.md +0 -4
- package/src/prompts/tools/task-summary.md +5 -16
- package/src/prompts/tools/task.md +47 -31
- package/src/prompts/tools/todo.md +6 -3
- package/src/registry/agent-lifecycle.ts +218 -0
- package/src/registry/agent-registry.ts +46 -5
- package/src/sdk.ts +692 -219
- package/src/secrets/index.ts +8 -1
- package/src/secrets/obfuscator.ts +40 -19
- package/src/session/agent-session.ts +1577 -806
- package/src/session/agent-storage.ts +18 -9
- package/src/session/auth-broker-config.ts +30 -1
- package/src/session/auth-storage.ts +6 -0
- package/src/session/codex-auto-reset.ts +202 -0
- package/src/session/history-storage.ts +3 -2
- package/src/session/indexed-session-storage.ts +7 -10
- package/src/session/messages.ts +59 -95
- package/src/session/session-context.ts +352 -0
- package/src/session/session-dump-format.ts +12 -3
- package/src/session/session-entries.ts +194 -0
- package/src/session/session-history-format.ts +246 -0
- package/src/session/session-listing.ts +588 -0
- package/src/session/session-loader.ts +106 -0
- package/src/session/session-manager.ts +1003 -2920
- package/src/session/session-migrations.ts +78 -0
- package/src/session/session-paths.ts +193 -0
- package/src/session/session-persistence.ts +131 -0
- package/src/session/session-storage.ts +91 -30
- package/src/session/snapcompact-inline.ts +542 -0
- package/src/session/snapcompact-savings-journal.ts +113 -0
- package/src/session/streaming-output.ts +248 -11
- package/src/session/tool-choice-queue.ts +23 -11
- package/src/session/yield-queue.ts +20 -2
- package/src/slash-commands/acp-builtins.ts +25 -1
- package/src/slash-commands/available-commands.ts +105 -0
- package/src/slash-commands/builtin-registry.ts +575 -49
- package/src/slash-commands/helpers/active-oauth-account.ts +44 -0
- package/src/slash-commands/helpers/context-report.ts +28 -1
- package/src/slash-commands/helpers/logout.ts +88 -0
- package/src/slash-commands/helpers/reset-usage.ts +66 -0
- package/src/slash-commands/helpers/stats-dashboard.ts +85 -0
- package/src/slash-commands/helpers/usage-report.ts +38 -3
- package/src/slash-commands/types.ts +5 -9
- package/src/ssh/connection-manager.ts +27 -0
- package/src/ssh/ssh-executor.ts +60 -4
- package/src/stt/asr-client.ts +520 -0
- package/src/stt/asr-protocol.ts +65 -0
- package/src/stt/asr-worker.ts +790 -0
- package/src/stt/downloader.ts +107 -47
- package/src/stt/endpointer.ts +259 -0
- package/src/stt/index.ts +5 -1
- package/src/stt/models.ts +150 -0
- package/src/stt/recorder.ts +254 -67
- package/src/stt/stt-controller.ts +201 -22
- package/src/stt/transcriber.ts +37 -68
- package/src/stt/wav.ts +173 -0
- package/src/system-prompt.ts +52 -10
- package/src/task/agents.ts +3 -4
- package/src/task/commands.ts +3 -2
- package/src/task/discovery.ts +17 -24
- package/src/task/executor.ts +1054 -529
- package/src/task/index.ts +862 -757
- package/src/task/output-manager.ts +0 -11
- package/src/task/parallel.ts +3 -3
- package/src/task/prometheus-command.ts +2 -2
- package/src/task/render.ts +529 -182
- package/src/task/repair-args.ts +21 -9
- package/src/task/types.ts +144 -66
- package/src/task/worktree.ts +64 -56
- package/src/telemetry-export.ts +27 -9
- package/src/thinking.ts +9 -7
- package/src/tiny/models.ts +2 -2
- package/src/tiny/text.ts +5 -1
- package/src/tiny/title-client.ts +72 -20
- package/src/tiny/title-protocol.ts +1 -1
- package/src/tiny/worker.ts +23 -99
- package/src/tool-discovery/tool-index.ts +2 -0
- package/src/tools/archive-reader.ts +94 -2
- package/src/tools/ask.ts +234 -177
- package/src/tools/ast-edit.ts +136 -80
- package/src/tools/ast-grep.ts +41 -45
- package/src/tools/auto-generated-guard.ts +20 -3
- package/src/tools/bash-interactive.ts +28 -8
- package/src/tools/bash.ts +198 -35
- package/src/tools/browser/attach.ts +26 -7
- package/src/tools/browser/cmux/cmux-tab.ts +1264 -0
- package/src/tools/browser/cmux/rpc.ts +156 -0
- package/src/tools/browser/cmux/socket-client.ts +309 -0
- package/src/tools/browser/launch.ts +11 -2
- package/src/tools/browser/readable.ts +19 -2
- package/src/tools/browser/registry.ts +52 -5
- package/src/tools/browser/render.ts +13 -5
- package/src/tools/browser/tab-protocol.ts +2 -0
- package/src/tools/browser/tab-supervisor.ts +256 -34
- package/src/tools/browser/tab-worker.ts +259 -91
- package/src/tools/browser.ts +44 -2
- package/src/tools/checkpoint.ts +1 -1
- package/src/tools/conflict-detect.ts +50 -4
- package/src/tools/debug.ts +27 -12
- package/src/tools/eval-render.ts +32 -35
- package/src/tools/eval.ts +26 -12
- package/src/tools/fetch.ts +450 -99
- package/src/tools/find.ts +182 -142
- package/src/tools/gh-cache-invalidation.ts +255 -0
- package/src/tools/gh-renderer.ts +104 -51
- package/src/tools/gh.ts +232 -37
- package/src/tools/github-cache.ts +97 -7
- package/src/tools/grouped-file-output.ts +159 -52
- package/src/tools/image-gen.ts +237 -132
- package/src/tools/index.ts +147 -26
- package/src/tools/inspect-image-renderer.ts +74 -45
- package/src/tools/inspect-image.ts +12 -6
- package/src/tools/irc.ts +626 -173
- package/src/tools/job.ts +106 -29
- package/src/tools/learn.ts +144 -0
- package/src/tools/manage-skill.ts +104 -0
- package/src/tools/memory-edit.ts +4 -4
- package/src/tools/memory-recall.ts +7 -9
- package/src/tools/memory-reflect.ts +5 -9
- package/src/tools/memory-render.ts +23 -6
- package/src/tools/memory-retain.ts +4 -4
- package/src/tools/path-utils.ts +102 -48
- package/src/tools/plan-mode-guard.ts +101 -40
- package/src/tools/read.ts +475 -120
- package/src/tools/render-mermaid.ts +1 -1
- package/src/tools/render-utils.ts +132 -76
- package/src/tools/renderers.ts +12 -1
- package/src/tools/report-tool-issue.ts +14 -6
- package/src/tools/resolve.ts +20 -3
- package/src/tools/review.ts +2 -2
- package/src/tools/search-tool-bm25.ts +37 -24
- package/src/tools/search.ts +233 -115
- package/src/tools/sqlite-reader.ts +26 -17
- package/src/tools/ssh.ts +20 -14
- package/src/tools/todo.ts +197 -191
- package/src/tools/tool-result.ts +8 -0
- package/src/tools/tool-timeouts.ts +1 -1
- package/src/tools/tts.ts +205 -74
- package/src/tools/write.ts +291 -155
- package/src/tools/yield.ts +10 -1
- package/src/tts/downloader.ts +64 -0
- package/src/tts/index.ts +8 -0
- package/src/tts/models.ts +137 -0
- package/src/tts/player.ts +137 -0
- package/src/tts/runtime.ts +21 -0
- package/src/tts/streaming-player.ts +266 -0
- package/src/tts/tts-client.ts +647 -0
- package/src/tts/tts-protocol.ts +60 -0
- package/src/tts/tts-worker.ts +505 -0
- package/src/tts/vocalizer.ts +162 -0
- package/src/tts/wav.ts +58 -0
- package/src/tui/code-cell.ts +2 -7
- package/src/tui/hyperlink.ts +40 -26
- package/src/tui/output-block.ts +60 -108
- package/src/tui/status-line.ts +5 -1
- package/src/utils/block-context.ts +312 -0
- package/src/utils/changelog.ts +27 -1
- package/src/utils/clipboard.ts +91 -22
- package/src/utils/commit-message-generator.ts +8 -3
- package/src/utils/enhanced-paste.ts +230 -0
- package/src/utils/file-mentions.ts +3 -1
- package/src/utils/git.ts +315 -15
- package/src/utils/image-loading.ts +65 -4
- package/src/utils/session-color.ts +83 -9
- package/src/utils/thinking-display.ts +37 -0
- package/src/utils/title-generator.ts +73 -10
- package/src/utils/tool-choice.ts +16 -0
- package/src/utils/tools-manager.ts +19 -1
- package/src/web/kagi.ts +28 -26
- package/src/web/parallel.ts +7 -3
- package/src/web/scrapers/arxiv.ts +1 -1
- package/src/web/scrapers/github.ts +351 -3
- package/src/web/scrapers/go-pkg.ts +1 -1
- package/src/web/scrapers/iacr.ts +1 -1
- package/src/web/scrapers/readthedocs.ts +1 -1
- package/src/web/scrapers/twitter.ts +2 -1
- package/src/web/scrapers/types.ts +87 -8
- package/src/web/scrapers/wikipedia.ts +1 -1
- package/src/web/scrapers/youtube.ts +9 -3
- package/src/web/search/index.ts +15 -2
- package/src/web/search/providers/anthropic.ts +62 -21
- package/src/web/search/providers/base.ts +2 -1
- package/src/web/search/providers/brave.ts +5 -2
- package/src/web/search/providers/codex.ts +87 -51
- package/src/web/search/providers/exa.ts +101 -10
- package/src/web/search/providers/gemini.ts +49 -24
- package/src/web/search/providers/jina.ts +15 -5
- package/src/web/search/providers/kagi.ts +9 -2
- package/src/web/search/providers/kimi.ts +45 -20
- package/src/web/search/providers/parallel.ts +39 -24
- package/src/web/search/providers/perplexity.ts +226 -63
- package/src/web/search/providers/searxng.ts +19 -3
- package/src/web/search/providers/synthetic.ts +16 -11
- package/src/web/search/providers/tavily.ts +12 -9
- package/src/web/search/providers/zai.ts +22 -9
- package/src/web/search/render.ts +59 -64
- package/src/web/search/types.ts +5 -1
- package/dist/types/discovery/context-files.d.ts +0 -17
- package/dist/types/exa/factory.d.ts +0 -13
- package/dist/types/exa/render.d.ts +0 -19
- package/dist/types/exa/researcher.d.ts +0 -9
- package/dist/types/exa/search.d.ts +0 -9
- package/dist/types/exa/websets.d.ts +0 -9
- package/dist/types/export/html/template.generated.d.ts +0 -1
- package/dist/types/modes/components/session-observer-overlay.d.ts +0 -11
- package/dist/types/modes/components/status-line.d.ts +0 -77
- package/dist/types/slash-commands/headless-plan.d.ts +0 -3
- package/dist/types/stt/setup.d.ts +0 -18
- package/scripts/generate-template.ts +0 -33
- package/src/discovery/context-files.ts +0 -49
- package/src/exa/factory.ts +0 -60
- package/src/exa/render.ts +0 -244
- package/src/exa/researcher.ts +0 -36
- package/src/exa/search.ts +0 -47
- package/src/exa/websets.ts +0 -248
- package/src/export/html/template.generated.ts +0 -2
- package/src/modes/components/session-observer-overlay.ts +0 -852
- package/src/slash-commands/headless-plan.ts +0 -142
- package/src/stt/setup.ts +0 -52
- package/src/stt/transcribe.py +0 -70
- /package/dist/types/extensibility/{legacy-pi-coding-agent-shim.d.ts → legacy-package-agent-shim.d.ts} +0 -0
- /package/src/extensibility/{legacy-pi-coding-agent-shim.ts → legacy-package-agent-shim.ts} +0 -0
package/src/modes/theme/theme.ts
CHANGED
|
@@ -9,11 +9,11 @@ import {
|
|
|
9
9
|
highlightCode as nativeHighlightCode,
|
|
10
10
|
supportsLanguage as nativeSupportsLanguage,
|
|
11
11
|
} from "@prometheus-ai/natives";
|
|
12
|
-
import type { EditorTheme, MarkdownTheme, SelectListTheme, SymbolTheme } from "@prometheus-ai/tui";
|
|
12
|
+
import type { EditorTheme, MarkdownTheme, SelectListTheme, SettingsListTheme, SymbolTheme } from "@prometheus-ai/tui";
|
|
13
13
|
import { adjustHsv, colorLuma, getCustomThemesDir, isEnoent, logger, relativeLuminance } from "@prometheus-ai/utils";
|
|
14
14
|
import chalk from "chalk";
|
|
15
15
|
import { LRUCache } from "lru-cache/raw";
|
|
16
|
-
import
|
|
16
|
+
import { z } from "zod/v4";
|
|
17
17
|
// Embed theme JSON files at build time
|
|
18
18
|
import darkThemeJson from "./dark.json" with { type: "json" };
|
|
19
19
|
import { defaultThemes } from "./defaults";
|
|
@@ -43,6 +43,7 @@ export type SymbolKey =
|
|
|
43
43
|
| "status.running"
|
|
44
44
|
| "status.shadowed"
|
|
45
45
|
| "status.aborted"
|
|
46
|
+
| "status.done"
|
|
46
47
|
// Navigation
|
|
47
48
|
| "nav.cursor"
|
|
48
49
|
| "nav.selected"
|
|
@@ -95,6 +96,7 @@ export type SymbolKey =
|
|
|
95
96
|
| "icon.pause"
|
|
96
97
|
| "icon.loop"
|
|
97
98
|
| "icon.folder"
|
|
99
|
+
| "icon.search"
|
|
98
100
|
| "icon.scratchFolder"
|
|
99
101
|
| "icon.file"
|
|
100
102
|
| "icon.git"
|
|
@@ -105,7 +107,9 @@ export type SymbolKey =
|
|
|
105
107
|
| "icon.cost"
|
|
106
108
|
| "icon.time"
|
|
107
109
|
| "icon.prometheus"
|
|
110
|
+
| "icon.ghost"
|
|
108
111
|
| "icon.agents"
|
|
112
|
+
| "icon.job"
|
|
109
113
|
| "icon.cache"
|
|
110
114
|
| "icon.input"
|
|
111
115
|
| "icon.output"
|
|
@@ -127,6 +131,8 @@ export type SymbolKey =
|
|
|
127
131
|
| "icon.extensionInstruction"
|
|
128
132
|
// STT
|
|
129
133
|
| "icon.mic"
|
|
134
|
+
// Compaction divider
|
|
135
|
+
| "icon.camera"
|
|
130
136
|
// Thinking Levels
|
|
131
137
|
| "thinking.minimal"
|
|
132
138
|
| "thinking.low"
|
|
@@ -192,12 +198,35 @@ export type SymbolKey =
|
|
|
192
198
|
| "tab.model"
|
|
193
199
|
| "tab.interaction"
|
|
194
200
|
| "tab.context"
|
|
195
|
-
| "tab.
|
|
201
|
+
| "tab.files"
|
|
202
|
+
| "tab.shell"
|
|
196
203
|
| "tab.tools"
|
|
197
204
|
| "tab.memory"
|
|
198
205
|
| "tab.tasks"
|
|
199
206
|
| "tab.providers"
|
|
200
|
-
|
|
207
|
+
// Tool identity icons
|
|
208
|
+
| "tool.write"
|
|
209
|
+
| "tool.edit"
|
|
210
|
+
| "tool.bash"
|
|
211
|
+
| "tool.ssh"
|
|
212
|
+
| "tool.lsp"
|
|
213
|
+
| "tool.gh"
|
|
214
|
+
| "tool.webSearch"
|
|
215
|
+
| "tool.exa"
|
|
216
|
+
| "tool.browser"
|
|
217
|
+
| "tool.eval"
|
|
218
|
+
| "tool.debug"
|
|
219
|
+
| "tool.mcp"
|
|
220
|
+
| "tool.job"
|
|
221
|
+
| "tool.task"
|
|
222
|
+
| "tool.todo"
|
|
223
|
+
| "tool.memory"
|
|
224
|
+
| "tool.ask"
|
|
225
|
+
| "tool.resolve"
|
|
226
|
+
| "tool.review"
|
|
227
|
+
| "tool.inspectImage"
|
|
228
|
+
| "tool.goal"
|
|
229
|
+
| "tool.irc";
|
|
201
230
|
|
|
202
231
|
type SymbolMap = Record<SymbolKey, string>;
|
|
203
232
|
|
|
@@ -213,6 +242,7 @@ const UNICODE_SYMBOLS: SymbolMap = {
|
|
|
213
242
|
"status.running": "⟳",
|
|
214
243
|
"status.shadowed": "◌",
|
|
215
244
|
"status.aborted": "⏹",
|
|
245
|
+
"status.done": "•",
|
|
216
246
|
// Navigation
|
|
217
247
|
"nav.cursor": "❯",
|
|
218
248
|
"nav.selected": "➤",
|
|
@@ -265,6 +295,7 @@ const UNICODE_SYMBOLS: SymbolMap = {
|
|
|
265
295
|
"icon.pause": "⏸",
|
|
266
296
|
"icon.loop": "↻",
|
|
267
297
|
"icon.folder": "📁",
|
|
298
|
+
"icon.search": "🔍",
|
|
268
299
|
"icon.scratchFolder": "🗑",
|
|
269
300
|
"icon.file": "📄",
|
|
270
301
|
"icon.git": "⎇",
|
|
@@ -274,8 +305,10 @@ const UNICODE_SYMBOLS: SymbolMap = {
|
|
|
274
305
|
"icon.context": "◫",
|
|
275
306
|
"icon.cost": "💲",
|
|
276
307
|
"icon.time": "⏱",
|
|
277
|
-
"icon.prometheus": "
|
|
308
|
+
"icon.prometheus": "π",
|
|
309
|
+
"icon.ghost": "👻",
|
|
278
310
|
"icon.agents": "👥",
|
|
311
|
+
"icon.job": "⚙",
|
|
279
312
|
"icon.cache": "💾",
|
|
280
313
|
"icon.input": "⤵",
|
|
281
314
|
"icon.output": "⤴",
|
|
@@ -297,13 +330,15 @@ const UNICODE_SYMBOLS: SymbolMap = {
|
|
|
297
330
|
"icon.extensionInstruction": "📘",
|
|
298
331
|
// STT
|
|
299
332
|
"icon.mic": "🎤",
|
|
333
|
+
// Compaction divider
|
|
334
|
+
"icon.camera": "📷",
|
|
300
335
|
// Thinking levels
|
|
301
336
|
"thinking.minimal": "◔ min",
|
|
302
337
|
"thinking.low": "◑ low",
|
|
303
338
|
"thinking.medium": "◒ med",
|
|
304
339
|
"thinking.high": "◕ high",
|
|
305
340
|
"thinking.xhigh": "◉ xhigh",
|
|
306
|
-
"thinking.autoPending": "
|
|
341
|
+
"thinking.autoPending": "⟳",
|
|
307
342
|
// Checkboxes
|
|
308
343
|
"checkbox.checked": "☑",
|
|
309
344
|
"checkbox.unchecked": "☐",
|
|
@@ -362,12 +397,35 @@ const UNICODE_SYMBOLS: SymbolMap = {
|
|
|
362
397
|
"tab.model": "🤖",
|
|
363
398
|
"tab.interaction": "⌨",
|
|
364
399
|
"tab.context": "📋",
|
|
365
|
-
"tab.
|
|
400
|
+
"tab.files": "📁",
|
|
401
|
+
"tab.shell": "💻",
|
|
366
402
|
"tab.tools": "🔧",
|
|
367
403
|
"tab.memory": "🧠",
|
|
368
404
|
"tab.tasks": "📦",
|
|
369
405
|
"tab.providers": "🌐",
|
|
370
|
-
|
|
406
|
+
// Tool identity icons (per-tool signature glyph on the success header)
|
|
407
|
+
"tool.write": "✎",
|
|
408
|
+
"tool.edit": "✎",
|
|
409
|
+
"tool.bash": "❯",
|
|
410
|
+
"tool.ssh": "⇄",
|
|
411
|
+
"tool.lsp": "💡",
|
|
412
|
+
"tool.gh": "⎇",
|
|
413
|
+
"tool.webSearch": "⌕",
|
|
414
|
+
"tool.exa": "🔭",
|
|
415
|
+
"tool.browser": "🌐",
|
|
416
|
+
"tool.eval": "▶",
|
|
417
|
+
"tool.debug": "🐞",
|
|
418
|
+
"tool.mcp": "🔌",
|
|
419
|
+
"tool.job": "⚙",
|
|
420
|
+
"tool.task": "⇶",
|
|
421
|
+
"tool.todo": "☑",
|
|
422
|
+
"tool.memory": "🧠",
|
|
423
|
+
"tool.ask": "?",
|
|
424
|
+
"tool.resolve": "✓",
|
|
425
|
+
"tool.review": "◉",
|
|
426
|
+
"tool.inspectImage": "🖼",
|
|
427
|
+
"tool.goal": "◎",
|
|
428
|
+
"tool.irc": "✉",
|
|
371
429
|
};
|
|
372
430
|
|
|
373
431
|
const NERD_SYMBOLS: SymbolMap = {
|
|
@@ -392,6 +450,8 @@ const NERD_SYMBOLS: SymbolMap = {
|
|
|
392
450
|
"status.shadowed": "◐",
|
|
393
451
|
// pick: | alt:
|
|
394
452
|
"status.aborted": "\uf04d",
|
|
453
|
+
// pick: • | alt: ● ·
|
|
454
|
+
"status.done": "•",
|
|
395
455
|
// Navigation
|
|
396
456
|
// pick: | alt:
|
|
397
457
|
"nav.cursor": "\uf054",
|
|
@@ -490,6 +550,7 @@ const NERD_SYMBOLS: SymbolMap = {
|
|
|
490
550
|
"icon.loop": "\uf021",
|
|
491
551
|
// pick: | alt:
|
|
492
552
|
"icon.folder": "\uf115",
|
|
553
|
+
"icon.search": "\uf002",
|
|
493
554
|
// pick: | alt:
|
|
494
555
|
"icon.scratchFolder": "\uf014",
|
|
495
556
|
// pick: | alt:
|
|
@@ -508,10 +569,14 @@ const NERD_SYMBOLS: SymbolMap = {
|
|
|
508
569
|
"icon.cost": "\uf155",
|
|
509
570
|
// pick: | alt: ◷ ◴
|
|
510
571
|
"icon.time": "\uf017",
|
|
511
|
-
// pick: | alt:
|
|
572
|
+
// pick: | alt: π ∏ ∑
|
|
512
573
|
"icon.prometheus": "\ue22c",
|
|
574
|
+
// pick: (nf-md-ghost) | alt: 👻
|
|
575
|
+
"icon.ghost": "\u{f02a0}",
|
|
513
576
|
// pick: | alt:
|
|
514
577
|
"icon.agents": "\uf0c0",
|
|
578
|
+
// pick: (nf-fa-gear) | alt: ⚙
|
|
579
|
+
"icon.job": "\uf013",
|
|
515
580
|
// pick: | alt:
|
|
516
581
|
"icon.cache": "\uf1c0",
|
|
517
582
|
// pick: | alt: →
|
|
@@ -550,6 +615,8 @@ const NERD_SYMBOLS: SymbolMap = {
|
|
|
550
615
|
"icon.extensionInstruction": "\uf02d",
|
|
551
616
|
// STT - fa-microphone
|
|
552
617
|
"icon.mic": "\uf130",
|
|
618
|
+
// Compaction divider - fa-camera-retro
|
|
619
|
+
"icon.camera": "\uf083",
|
|
553
620
|
// Thinking Levels - emoji labels
|
|
554
621
|
// pick: 🤨 min | alt: min min
|
|
555
622
|
"thinking.minimal": "\u{F0E7} min",
|
|
@@ -561,8 +628,8 @@ const NERD_SYMBOLS: SymbolMap = {
|
|
|
561
628
|
"thinking.high": "\u{F111} high",
|
|
562
629
|
// pick: 🧠 xhi | alt: xhi xhi
|
|
563
630
|
"thinking.xhigh": "\u{F06D} xhi",
|
|
564
|
-
// pick:
|
|
565
|
-
"thinking.autoPending": "\
|
|
631
|
+
// pick: (fa-circle-o-notch) | alt: (nf-md-cached) ⟳
|
|
632
|
+
"thinking.autoPending": "\uf1ce",
|
|
566
633
|
// Checkboxes
|
|
567
634
|
// pick: | alt:
|
|
568
635
|
"checkbox.checked": "\uf14a",
|
|
@@ -632,12 +699,35 @@ const NERD_SYMBOLS: SymbolMap = {
|
|
|
632
699
|
"tab.model": "",
|
|
633
700
|
"tab.interaction": "",
|
|
634
701
|
"tab.context": "",
|
|
635
|
-
"tab.
|
|
702
|
+
"tab.files": "",
|
|
703
|
+
"tab.shell": "",
|
|
636
704
|
"tab.tools": "",
|
|
637
705
|
"tab.memory": "",
|
|
638
706
|
"tab.tasks": "",
|
|
639
707
|
"tab.providers": "",
|
|
640
|
-
|
|
708
|
+
// Tool identity icons (per-tool signature glyph on the success header)
|
|
709
|
+
"tool.write": "\uEA7F",
|
|
710
|
+
"tool.edit": "\uEA73",
|
|
711
|
+
"tool.bash": "\uEBCA",
|
|
712
|
+
"tool.ssh": "\uEB3A",
|
|
713
|
+
"tool.lsp": "\uEA61",
|
|
714
|
+
"tool.gh": "\uEA84",
|
|
715
|
+
"tool.webSearch": "\uEB01",
|
|
716
|
+
"tool.exa": "\uEB68",
|
|
717
|
+
"tool.browser": "\uEAAE",
|
|
718
|
+
"tool.eval": "\uEBAF",
|
|
719
|
+
"tool.debug": "\uEAD8",
|
|
720
|
+
"tool.mcp": "\uEB2D",
|
|
721
|
+
"tool.job": "\uEBA2",
|
|
722
|
+
"tool.task": "\uf4a0",
|
|
723
|
+
"tool.todo": "\uEAB3",
|
|
724
|
+
"tool.memory": "\uEACE",
|
|
725
|
+
"tool.ask": "\uEAC7",
|
|
726
|
+
"tool.resolve": "\uEBB1",
|
|
727
|
+
"tool.review": "\uEA70",
|
|
728
|
+
"tool.inspectImage": "\uEAEA",
|
|
729
|
+
"tool.goal": "\uEBF8",
|
|
730
|
+
"tool.irc": "\uF086",
|
|
641
731
|
};
|
|
642
732
|
|
|
643
733
|
const ASCII_SYMBOLS: SymbolMap = {
|
|
@@ -652,6 +742,7 @@ const ASCII_SYMBOLS: SymbolMap = {
|
|
|
652
742
|
"status.running": "[~]",
|
|
653
743
|
"status.shadowed": "[/]",
|
|
654
744
|
"status.aborted": "[-]",
|
|
745
|
+
"status.done": "*",
|
|
655
746
|
// Navigation
|
|
656
747
|
"nav.cursor": ">",
|
|
657
748
|
"nav.selected": "->",
|
|
@@ -704,6 +795,7 @@ const ASCII_SYMBOLS: SymbolMap = {
|
|
|
704
795
|
"icon.pause": "||",
|
|
705
796
|
"icon.loop": "loop",
|
|
706
797
|
"icon.folder": "[D]",
|
|
798
|
+
"icon.search": "[/]",
|
|
707
799
|
"icon.scratchFolder": "[T]",
|
|
708
800
|
"icon.file": "[F]",
|
|
709
801
|
"icon.git": "git:",
|
|
@@ -713,8 +805,10 @@ const ASCII_SYMBOLS: SymbolMap = {
|
|
|
713
805
|
"icon.context": "ctx:",
|
|
714
806
|
"icon.cost": "$",
|
|
715
807
|
"icon.time": "t:",
|
|
716
|
-
"icon.prometheus": "
|
|
808
|
+
"icon.prometheus": "pi",
|
|
809
|
+
"icon.ghost": "@",
|
|
717
810
|
"icon.agents": "AG",
|
|
811
|
+
"icon.job": "bg",
|
|
718
812
|
"icon.cache": "cache",
|
|
719
813
|
"icon.input": "in:",
|
|
720
814
|
"icon.output": "out:",
|
|
@@ -736,13 +830,15 @@ const ASCII_SYMBOLS: SymbolMap = {
|
|
|
736
830
|
"icon.extensionInstruction": "IN",
|
|
737
831
|
// STT
|
|
738
832
|
"icon.mic": "MIC",
|
|
833
|
+
// Compaction divider
|
|
834
|
+
"icon.camera": "[o]",
|
|
739
835
|
// Thinking Levels
|
|
740
836
|
"thinking.minimal": "[min]",
|
|
741
837
|
"thinking.low": "[low]",
|
|
742
838
|
"thinking.medium": "[med]",
|
|
743
839
|
"thinking.high": "[high]",
|
|
744
840
|
"thinking.xhigh": "[xhi]",
|
|
745
|
-
"thinking.autoPending": "[
|
|
841
|
+
"thinking.autoPending": "[~]",
|
|
746
842
|
// Checkboxes
|
|
747
843
|
"checkbox.checked": "[x]",
|
|
748
844
|
"checkbox.unchecked": "[ ]",
|
|
@@ -799,12 +895,35 @@ const ASCII_SYMBOLS: SymbolMap = {
|
|
|
799
895
|
"tab.model": "[M]",
|
|
800
896
|
"tab.interaction": "[I]",
|
|
801
897
|
"tab.context": "[X]",
|
|
802
|
-
"tab.
|
|
898
|
+
"tab.files": "[F]",
|
|
899
|
+
"tab.shell": "[S]",
|
|
803
900
|
"tab.tools": "[T]",
|
|
804
901
|
"tab.memory": "[Y]",
|
|
805
902
|
"tab.tasks": "[K]",
|
|
806
903
|
"tab.providers": "[P]",
|
|
807
|
-
|
|
904
|
+
// Tool identity icons (per-tool signature glyph on the success header)
|
|
905
|
+
"tool.write": "+f",
|
|
906
|
+
"tool.edit": "~",
|
|
907
|
+
"tool.bash": "$",
|
|
908
|
+
"tool.ssh": "ssh",
|
|
909
|
+
"tool.lsp": "lsp",
|
|
910
|
+
"tool.gh": "gh",
|
|
911
|
+
"tool.webSearch": "web",
|
|
912
|
+
"tool.exa": "exa",
|
|
913
|
+
"tool.browser": "[w]",
|
|
914
|
+
"tool.eval": ">_",
|
|
915
|
+
"tool.debug": "dbg",
|
|
916
|
+
"tool.mcp": "<>",
|
|
917
|
+
"tool.job": "job",
|
|
918
|
+
"tool.task": ">>>",
|
|
919
|
+
"tool.todo": "[x]",
|
|
920
|
+
"tool.memory": "mem",
|
|
921
|
+
"tool.ask": "[?]",
|
|
922
|
+
"tool.resolve": "[v]",
|
|
923
|
+
"tool.review": "rev",
|
|
924
|
+
"tool.inspectImage": "[i]",
|
|
925
|
+
"tool.goal": "(o)",
|
|
926
|
+
"tool.irc": "irc",
|
|
808
927
|
};
|
|
809
928
|
|
|
810
929
|
const SYMBOL_PRESETS: Record<SymbolPreset, SymbolMap> = {
|
|
@@ -1290,9 +1409,23 @@ const langMap: Record<string, SymbolKey> = {
|
|
|
1290
1409
|
bin: "lang.binary",
|
|
1291
1410
|
};
|
|
1292
1411
|
|
|
1412
|
+
/**
|
|
1413
|
+
* Resolve a theme color value (hex string or 256-color index) to a CSS hex string.
|
|
1414
|
+
* Empty string represents the default terminal color.
|
|
1415
|
+
*/
|
|
1416
|
+
function resolveToHex(value: string | number, isLight: boolean): string {
|
|
1417
|
+
if (typeof value === "number") return ansi256ToHex(value);
|
|
1418
|
+
if (value === "") return isLight ? "#000000" : "#e5e5e7";
|
|
1419
|
+
return value;
|
|
1420
|
+
}
|
|
1421
|
+
|
|
1293
1422
|
export class Theme {
|
|
1294
1423
|
#fgColors: Record<ThemeColor, string>;
|
|
1295
1424
|
#bgColors: Record<ThemeBg, string>;
|
|
1425
|
+
/** Resolved hex strings for foreground colors — populated at construction. */
|
|
1426
|
+
readonly #hexFgColors: Record<ThemeColor, string>;
|
|
1427
|
+
/** Resolved hex strings for background colors — populated at construction. */
|
|
1428
|
+
readonly #hexBgColors: Record<ThemeBg, string>;
|
|
1296
1429
|
#symbols: SymbolMap;
|
|
1297
1430
|
#spinnerFramesOverrides: Partial<Record<SpinnerType, string[]>>;
|
|
1298
1431
|
/**
|
|
@@ -1305,7 +1438,6 @@ export class Theme {
|
|
|
1305
1438
|
readonly statusLineLuminance: number | undefined;
|
|
1306
1439
|
/** WCAG relative luminance of the status-line background — basis for accent contrast. */
|
|
1307
1440
|
readonly #statusLineContrastLuminance: number | undefined;
|
|
1308
|
-
|
|
1309
1441
|
constructor(
|
|
1310
1442
|
fgColors: Record<ThemeColor, string | number>,
|
|
1311
1443
|
bgColors: Record<ThemeBg, string | number>,
|
|
@@ -1316,13 +1448,19 @@ export class Theme {
|
|
|
1316
1448
|
) {
|
|
1317
1449
|
this.statusLineLuminance = colorLuma(bgColors.statusLineBg);
|
|
1318
1450
|
this.#statusLineContrastLuminance = relativeLuminance(bgColors.statusLineBg);
|
|
1451
|
+
const slIsLight = this.statusLineLuminance !== undefined && this.statusLineLuminance > 0.5;
|
|
1452
|
+
|
|
1319
1453
|
this.#fgColors = {} as Record<ThemeColor, string>;
|
|
1454
|
+
this.#hexFgColors = {} as Record<ThemeColor, string>;
|
|
1320
1455
|
for (const [key, value] of Object.entries(fgColors) as [ThemeColor, string | number][]) {
|
|
1321
1456
|
this.#fgColors[key] = fgAnsi(value, mode);
|
|
1457
|
+
this.#hexFgColors[key] = resolveToHex(value, slIsLight);
|
|
1322
1458
|
}
|
|
1323
1459
|
this.#bgColors = {} as Record<ThemeBg, string>;
|
|
1460
|
+
this.#hexBgColors = {} as Record<ThemeBg, string>;
|
|
1324
1461
|
for (const [key, value] of Object.entries(bgColors) as [ThemeBg, string | number][]) {
|
|
1325
1462
|
this.#bgColors[key] = bgAnsi(value, mode);
|
|
1463
|
+
this.#hexBgColors[key] = resolveToHex(value, slIsLight);
|
|
1326
1464
|
}
|
|
1327
1465
|
// Build symbol map from preset + overrides
|
|
1328
1466
|
const baseSymbols = SYMBOL_PRESETS[symbolPreset];
|
|
@@ -1350,6 +1488,70 @@ export class Theme {
|
|
|
1350
1488
|
return this.isLight ? this.#statusLineContrastLuminance : undefined;
|
|
1351
1489
|
}
|
|
1352
1490
|
|
|
1491
|
+
/**
|
|
1492
|
+
* Get the resolved CSS hex string for a foreground theme color.
|
|
1493
|
+
*/
|
|
1494
|
+
getColorHex(color: ThemeColor): string {
|
|
1495
|
+
const hex = this.#hexFgColors[color];
|
|
1496
|
+
if (hex === undefined) throw new Error(`Unknown theme color: ${color}`);
|
|
1497
|
+
return hex || (this.isLight ? "#000000" : "#e5e5e7");
|
|
1498
|
+
}
|
|
1499
|
+
|
|
1500
|
+
/**
|
|
1501
|
+
* Get all foreground and background theme colors as CSS hex strings.
|
|
1502
|
+
* Skips colors resolved to the default terminal color (unstyled).
|
|
1503
|
+
*/
|
|
1504
|
+
getAllThemeColorHexes(): string[] {
|
|
1505
|
+
const hexes: string[] = [];
|
|
1506
|
+
for (const hex of Object.values(this.#hexFgColors)) {
|
|
1507
|
+
if (hex) hexes.push(hex);
|
|
1508
|
+
}
|
|
1509
|
+
for (const hex of Object.values(this.#hexBgColors)) {
|
|
1510
|
+
if (hex) hexes.push(hex);
|
|
1511
|
+
}
|
|
1512
|
+
return hexes;
|
|
1513
|
+
}
|
|
1514
|
+
|
|
1515
|
+
/**
|
|
1516
|
+
* Get the most visually dominant theme colors as CSS hex strings — accent,
|
|
1517
|
+
* border, success, error, warning, heading, link, diff markers, etc.
|
|
1518
|
+
* These are the colors the session accent could visually clash with.
|
|
1519
|
+
* Skips colors resolved to the default terminal color (unstyled).
|
|
1520
|
+
*/
|
|
1521
|
+
getMajorThemeColorHexes(): string[] {
|
|
1522
|
+
const majors: ThemeColor[] = [
|
|
1523
|
+
"accent",
|
|
1524
|
+
"border",
|
|
1525
|
+
"borderAccent",
|
|
1526
|
+
"borderMuted",
|
|
1527
|
+
"success",
|
|
1528
|
+
"error",
|
|
1529
|
+
"warning",
|
|
1530
|
+
"mdHeading",
|
|
1531
|
+
"mdLink",
|
|
1532
|
+
"mdCode",
|
|
1533
|
+
"mdCodeBlock",
|
|
1534
|
+
"mdQuoteBorder",
|
|
1535
|
+
"mdListBullet",
|
|
1536
|
+
"toolDiffAdded",
|
|
1537
|
+
"toolDiffRemoved",
|
|
1538
|
+
"customMessageLabel",
|
|
1539
|
+
"thinkingText",
|
|
1540
|
+
];
|
|
1541
|
+
const hexes: string[] = [];
|
|
1542
|
+
for (const key of majors) {
|
|
1543
|
+
const hex = this.#hexFgColors[key];
|
|
1544
|
+
if (hex) hexes.push(hex);
|
|
1545
|
+
}
|
|
1546
|
+
return hexes;
|
|
1547
|
+
}
|
|
1548
|
+
/**
|
|
1549
|
+
* Get the resolved CSS hex string for the theme's accent color.
|
|
1550
|
+
*/
|
|
1551
|
+
getAccentColorHex(): string {
|
|
1552
|
+
return this.getColorHex("accent");
|
|
1553
|
+
}
|
|
1554
|
+
|
|
1353
1555
|
fg(color: ThemeColor, text: string): string {
|
|
1354
1556
|
const ansi = this.#fgColors[color];
|
|
1355
1557
|
if (!ansi) throw new Error(`Unknown theme color: ${color}`);
|
|
@@ -1485,6 +1687,7 @@ export class Theme {
|
|
|
1485
1687
|
running: this.#symbols["status.running"],
|
|
1486
1688
|
shadowed: this.#symbols["status.shadowed"],
|
|
1487
1689
|
aborted: this.#symbols["status.aborted"],
|
|
1690
|
+
done: this.#symbols["status.done"],
|
|
1488
1691
|
};
|
|
1489
1692
|
}
|
|
1490
1693
|
|
|
@@ -1570,8 +1773,10 @@ export class Theme {
|
|
|
1570
1773
|
context: this.#symbols["icon.context"],
|
|
1571
1774
|
cost: this.#symbols["icon.cost"],
|
|
1572
1775
|
time: this.#symbols["icon.time"],
|
|
1573
|
-
|
|
1776
|
+
pi: this.#symbols["icon.prometheus"],
|
|
1777
|
+
ghost: this.#symbols["icon.ghost"],
|
|
1574
1778
|
agents: this.#symbols["icon.agents"],
|
|
1779
|
+
job: this.#symbols["icon.job"],
|
|
1575
1780
|
cache: this.#symbols["icon.cache"],
|
|
1576
1781
|
input: this.#symbols["icon.input"],
|
|
1577
1782
|
output: this.#symbols["icon.output"],
|
|
@@ -1592,6 +1797,7 @@ export class Theme {
|
|
|
1592
1797
|
extensionContextFile: this.#symbols["icon.extensionContextFile"],
|
|
1593
1798
|
extensionInstruction: this.#symbols["icon.extensionInstruction"],
|
|
1594
1799
|
mic: this.#symbols["icon.mic"],
|
|
1800
|
+
camera: this.#symbols["icon.camera"],
|
|
1595
1801
|
};
|
|
1596
1802
|
}
|
|
1597
1803
|
|
|
@@ -1892,6 +2098,11 @@ var currentThemeName: string | undefined;
|
|
|
1892
2098
|
export function getCurrentThemeName(): string | undefined {
|
|
1893
2099
|
return currentThemeName;
|
|
1894
2100
|
}
|
|
2101
|
+
|
|
2102
|
+
/** Returns unstyled `text` before `initTheme()` assigns the global theme; use only for early-render paths. */
|
|
2103
|
+
export function fgOrPlain(color: ThemeColor, text: string, styledText: string = text): string {
|
|
2104
|
+
return typeof theme === "undefined" ? text : theme.fg(color, styledText);
|
|
2105
|
+
}
|
|
1895
2106
|
var currentSymbolPresetOverride: SymbolPreset | undefined;
|
|
1896
2107
|
var currentColorBlindMode: boolean = false;
|
|
1897
2108
|
var themeWatcher: fs.FSWatcher | undefined;
|
|
@@ -1902,6 +2113,7 @@ var autoDarkTheme: string = "dark";
|
|
|
1902
2113
|
var autoLightTheme: string = "light";
|
|
1903
2114
|
var onThemeChangeCallback: (() => void) | undefined;
|
|
1904
2115
|
var themeLoadRequestId: number = 0;
|
|
2116
|
+
let themeEpoch = 0;
|
|
1905
2117
|
|
|
1906
2118
|
function getCurrentThemeOptions(): CreateThemeOptions {
|
|
1907
2119
|
return {
|
|
@@ -1954,9 +2166,7 @@ export async function setTheme(
|
|
|
1954
2166
|
if (enableWatcher) {
|
|
1955
2167
|
await startThemeWatcher();
|
|
1956
2168
|
}
|
|
1957
|
-
|
|
1958
|
-
onThemeChangeCallback();
|
|
1959
|
-
}
|
|
2169
|
+
notifyThemeChange();
|
|
1960
2170
|
return { success: true };
|
|
1961
2171
|
} catch (error) {
|
|
1962
2172
|
if (requestId !== themeLoadRequestId) {
|
|
@@ -1965,6 +2175,10 @@ export async function setTheme(
|
|
|
1965
2175
|
// Theme is invalid - fall back to dark theme
|
|
1966
2176
|
currentThemeName = "dark";
|
|
1967
2177
|
theme = await loadTheme("dark", getCurrentThemeOptions());
|
|
2178
|
+
// The active theme just changed to the fallback — bump the epoch so memoized
|
|
2179
|
+
// renderers (e.g. ToolExecutionComponent) re-shape with the fallback colors
|
|
2180
|
+
// instead of holding the failed theme's stale styling.
|
|
2181
|
+
notifyThemeChange();
|
|
1968
2182
|
// Don't start watcher for fallback theme
|
|
1969
2183
|
return {
|
|
1970
2184
|
success: false,
|
|
@@ -1981,9 +2195,7 @@ export async function previewTheme(name: string): Promise<{ success: boolean; er
|
|
|
1981
2195
|
return { success: false, error: "Theme preview superseded by a newer request" };
|
|
1982
2196
|
}
|
|
1983
2197
|
theme = loadedTheme;
|
|
1984
|
-
|
|
1985
|
-
onThemeChangeCallback();
|
|
1986
|
-
}
|
|
2198
|
+
notifyThemeChange();
|
|
1987
2199
|
return { success: true };
|
|
1988
2200
|
} catch (error) {
|
|
1989
2201
|
if (requestId !== themeLoadRequestId) {
|
|
@@ -2030,9 +2242,7 @@ export function setThemeInstance(themeInstance: Theme): void {
|
|
|
2030
2242
|
theme = themeInstance;
|
|
2031
2243
|
currentThemeName = "<in-memory>";
|
|
2032
2244
|
stopThemeWatcher();
|
|
2033
|
-
|
|
2034
|
-
onThemeChangeCallback();
|
|
2035
|
-
}
|
|
2245
|
+
notifyThemeChange();
|
|
2036
2246
|
}
|
|
2037
2247
|
|
|
2038
2248
|
/**
|
|
@@ -2053,7 +2263,7 @@ export async function setSymbolPreset(preset: SymbolPreset): Promise<void> {
|
|
|
2053
2263
|
theme = await loadTheme("dark", getCurrentThemeOptions());
|
|
2054
2264
|
if (requestId !== themeLoadRequestId) return;
|
|
2055
2265
|
}
|
|
2056
|
-
|
|
2266
|
+
notifyThemeChange();
|
|
2057
2267
|
}
|
|
2058
2268
|
|
|
2059
2269
|
/**
|
|
@@ -2082,7 +2292,7 @@ export async function setColorBlindMode(enabled: boolean): Promise<void> {
|
|
|
2082
2292
|
theme = await loadTheme("dark", getCurrentThemeOptions());
|
|
2083
2293
|
if (requestId !== themeLoadRequestId) return;
|
|
2084
2294
|
}
|
|
2085
|
-
|
|
2295
|
+
notifyThemeChange();
|
|
2086
2296
|
}
|
|
2087
2297
|
|
|
2088
2298
|
/**
|
|
@@ -2096,6 +2306,23 @@ export function onThemeChange(callback: () => void): void {
|
|
|
2096
2306
|
onThemeChangeCallback = callback;
|
|
2097
2307
|
}
|
|
2098
2308
|
|
|
2309
|
+
/**
|
|
2310
|
+
* Monotonic counter bumped on any theme-affecting change that should invalidate
|
|
2311
|
+
* cached renders: theme swaps and reloads (including the invalid-theme dark
|
|
2312
|
+
* fallback), theme previews, symbol-preset changes, and color-blind-mode
|
|
2313
|
+
* changes — everything that routes through {@link notifyThemeChange}. Consumers
|
|
2314
|
+
* key cached renders on it so the next render re-shapes their output.
|
|
2315
|
+
*/
|
|
2316
|
+
export function getThemeEpoch(): number {
|
|
2317
|
+
return themeEpoch;
|
|
2318
|
+
}
|
|
2319
|
+
|
|
2320
|
+
/** Bump the theme epoch and notify the registered theme-change listener. */
|
|
2321
|
+
function notifyThemeChange(): void {
|
|
2322
|
+
themeEpoch++;
|
|
2323
|
+
onThemeChangeCallback?.();
|
|
2324
|
+
}
|
|
2325
|
+
|
|
2099
2326
|
/**
|
|
2100
2327
|
* Get available symbol presets.
|
|
2101
2328
|
*/
|
|
@@ -2148,9 +2375,7 @@ async function startThemeWatcher(): Promise<void> {
|
|
|
2148
2375
|
loadTheme(watchedThemeName, getCurrentThemeOptions())
|
|
2149
2376
|
.then(loadedTheme => {
|
|
2150
2377
|
theme = loadedTheme;
|
|
2151
|
-
|
|
2152
|
-
onThemeChangeCallback();
|
|
2153
|
-
}
|
|
2378
|
+
notifyThemeChange();
|
|
2154
2379
|
})
|
|
2155
2380
|
.catch(() => {
|
|
2156
2381
|
// Ignore errors (file might be in invalid state while being edited)
|
|
@@ -2190,9 +2415,7 @@ function reevaluateAutoTheme(debugLabel: string): void {
|
|
|
2190
2415
|
loadTheme(resolved, getCurrentThemeOptions())
|
|
2191
2416
|
.then(loadedTheme => {
|
|
2192
2417
|
theme = loadedTheme;
|
|
2193
|
-
|
|
2194
|
-
onThemeChangeCallback();
|
|
2195
|
-
}
|
|
2418
|
+
notifyThemeChange();
|
|
2196
2419
|
})
|
|
2197
2420
|
.catch(err => {
|
|
2198
2421
|
logger.debug(`Theme switch on ${debugLabel} failed`, { error: String(err) });
|
|
@@ -2314,18 +2537,74 @@ function ansi256ToHex(index: number): string {
|
|
|
2314
2537
|
return `#${grayHex}${grayHex}${grayHex}`;
|
|
2315
2538
|
}
|
|
2316
2539
|
|
|
2540
|
+
/**
|
|
2541
|
+
* Classify a parsed theme JSON as light/dark by the perceived luminance of its
|
|
2542
|
+
* status-line background. Mirrors {@link Theme.isLight} so the synchronous
|
|
2543
|
+
* helpers below stay in lockstep with the runtime classifier — see the comment
|
|
2544
|
+
* on `Theme.statusLineLuminance` for why `statusLineBg` is the source of truth
|
|
2545
|
+
* (themes like `porcelain` style a dark chat bubble on an otherwise-light
|
|
2546
|
+
* theme, so `userMessageBg` is unreliable).
|
|
2547
|
+
*/
|
|
2548
|
+
function isLightThemeJson(themeJson: ThemeJson): boolean {
|
|
2549
|
+
try {
|
|
2550
|
+
const resolved = resolveVarRefs(themeJson.colors.statusLineBg, themeJson.vars ?? {});
|
|
2551
|
+
const luminance = colorLuma(resolved);
|
|
2552
|
+
return luminance !== undefined && luminance > 0.5;
|
|
2553
|
+
} catch {
|
|
2554
|
+
return false;
|
|
2555
|
+
}
|
|
2556
|
+
}
|
|
2557
|
+
|
|
2558
|
+
function getHtmlDefaultTextForSurface(surface: string | number | undefined): string {
|
|
2559
|
+
const luminance = surface === undefined ? undefined : colorLuma(surface);
|
|
2560
|
+
return luminance !== undefined && luminance > 0.5 ? "#000000" : "#e5e5e7";
|
|
2561
|
+
}
|
|
2562
|
+
|
|
2563
|
+
function resolveThemeExportColors(themeJson: ThemeJson): {
|
|
2564
|
+
pageBg?: string;
|
|
2565
|
+
cardBg?: string;
|
|
2566
|
+
infoBg?: string;
|
|
2567
|
+
} {
|
|
2568
|
+
const exportSection = themeJson.export;
|
|
2569
|
+
if (!exportSection) return {};
|
|
2570
|
+
|
|
2571
|
+
const vars = themeJson.vars ?? {};
|
|
2572
|
+
const resolve = (value: string | number | undefined): string | undefined => {
|
|
2573
|
+
if (value === undefined) return undefined;
|
|
2574
|
+
if (typeof value === "number") return ansi256ToHex(value);
|
|
2575
|
+
if (value === "" || value.startsWith("#")) return value;
|
|
2576
|
+
const varName = value.startsWith("$") ? value.slice(1) : value;
|
|
2577
|
+
if (varName in vars) {
|
|
2578
|
+
const resolved = resolveVarRefs(varName, vars);
|
|
2579
|
+
return typeof resolved === "number" ? ansi256ToHex(resolved) : resolved;
|
|
2580
|
+
}
|
|
2581
|
+
return value;
|
|
2582
|
+
};
|
|
2583
|
+
|
|
2584
|
+
return {
|
|
2585
|
+
pageBg: resolve(exportSection.pageBg),
|
|
2586
|
+
cardBg: resolve(exportSection.cardBg),
|
|
2587
|
+
infoBg: resolve(exportSection.infoBg),
|
|
2588
|
+
};
|
|
2589
|
+
}
|
|
2590
|
+
|
|
2317
2591
|
/**
|
|
2318
2592
|
* Get resolved theme colors as CSS-compatible hex strings.
|
|
2319
2593
|
* Used by HTML export to generate CSS custom properties.
|
|
2320
2594
|
*/
|
|
2321
2595
|
export async function getResolvedThemeColors(themeName?: string): Promise<Record<string, string>> {
|
|
2322
2596
|
const name = themeName ?? getDefaultTheme();
|
|
2323
|
-
const isLight = name === "light";
|
|
2324
2597
|
const themeJson = await loadThemeJson(name);
|
|
2598
|
+
const exportColors = resolveThemeExportColors(themeJson);
|
|
2325
2599
|
const resolved = resolveThemeColors(themeJson.colors, themeJson.vars);
|
|
2326
2600
|
|
|
2327
|
-
//
|
|
2328
|
-
|
|
2601
|
+
// Empty foreground tokens use the terminal default color. In HTML export,
|
|
2602
|
+
// that default must contrast the export surface, not the TUI status line:
|
|
2603
|
+
// custom light themes can still export dark transcript cards when they omit
|
|
2604
|
+
// `export`, because generateThemeVars derives those cards from userMessageBg.
|
|
2605
|
+
const defaultText = getHtmlDefaultTextForSurface(
|
|
2606
|
+
exportColors.cardBg ?? exportColors.pageBg ?? resolved.userMessageBg,
|
|
2607
|
+
);
|
|
2329
2608
|
|
|
2330
2609
|
const cssColors: Record<string, string> = {};
|
|
2331
2610
|
for (const [key, value] of Object.entries(resolved)) {
|
|
@@ -2342,8 +2621,9 @@ export async function getResolvedThemeColors(themeName?: string): Promise<Record
|
|
|
2342
2621
|
}
|
|
2343
2622
|
|
|
2344
2623
|
/**
|
|
2345
|
-
* Check if a theme is a "light" theme by analyzing its background
|
|
2346
|
-
* Loads theme JSON synchronously (built-in or custom file
|
|
2624
|
+
* Check if a theme is a "light" theme by analyzing its status-line background
|
|
2625
|
+
* luminance. Loads theme JSON synchronously (built-in or custom file on disk)
|
|
2626
|
+
* for callers in synchronous flows (settings migration, setup wizard).
|
|
2347
2627
|
*/
|
|
2348
2628
|
export function isLightTheme(themeName?: string): boolean {
|
|
2349
2629
|
const name = themeName ?? "dark";
|
|
@@ -2360,13 +2640,7 @@ export function isLightTheme(themeName?: string): boolean {
|
|
|
2360
2640
|
return false;
|
|
2361
2641
|
}
|
|
2362
2642
|
}
|
|
2363
|
-
|
|
2364
|
-
const resolved = resolveVarRefs(themeJson.colors.userMessageBg, themeJson.vars ?? {});
|
|
2365
|
-
const luminance = colorLuma(resolved);
|
|
2366
|
-
return luminance !== undefined && luminance > 0.5;
|
|
2367
|
-
} catch {
|
|
2368
|
-
return false;
|
|
2369
|
-
}
|
|
2643
|
+
return isLightThemeJson(themeJson);
|
|
2370
2644
|
}
|
|
2371
2645
|
|
|
2372
2646
|
/**
|
|
@@ -2381,27 +2655,7 @@ export async function getThemeExportColors(themeName?: string): Promise<{
|
|
|
2381
2655
|
const name = themeName ?? getDefaultTheme();
|
|
2382
2656
|
try {
|
|
2383
2657
|
const themeJson = await loadThemeJson(name);
|
|
2384
|
-
|
|
2385
|
-
if (!exportSection) return {};
|
|
2386
|
-
|
|
2387
|
-
const vars = themeJson.vars ?? {};
|
|
2388
|
-
const resolve = (value: string | number | undefined): string | undefined => {
|
|
2389
|
-
if (value === undefined) return undefined;
|
|
2390
|
-
if (typeof value === "number") return ansi256ToHex(value);
|
|
2391
|
-
if (value === "" || value.startsWith("#")) return value;
|
|
2392
|
-
const varName = value.startsWith("$") ? value.slice(1) : value;
|
|
2393
|
-
if (varName in vars) {
|
|
2394
|
-
const resolved = resolveVarRefs(varName, vars);
|
|
2395
|
-
return typeof resolved === "number" ? ansi256ToHex(resolved) : resolved;
|
|
2396
|
-
}
|
|
2397
|
-
return value;
|
|
2398
|
-
};
|
|
2399
|
-
|
|
2400
|
-
return {
|
|
2401
|
-
pageBg: resolve(exportSection.pageBg),
|
|
2402
|
-
cardBg: resolve(exportSection.cardBg),
|
|
2403
|
-
infoBg: resolve(exportSection.infoBg),
|
|
2404
|
-
};
|
|
2658
|
+
return resolveThemeExportColors(themeJson);
|
|
2405
2659
|
} catch {
|
|
2406
2660
|
return {};
|
|
2407
2661
|
}
|
|
@@ -2443,19 +2697,19 @@ function getHighlightColors(t: Theme): NativeHighlightColors {
|
|
|
2443
2697
|
* switch (which always reassigns `theme`) must invalidate every entry.
|
|
2444
2698
|
*
|
|
2445
2699
|
* Why this exists: animated tool blocks (eval/bash) repaint their box on every
|
|
2446
|
-
* ~
|
|
2447
|
-
* Without memoization each frame re-
|
|
2448
|
-
* Rust FFI — ~26ms for 100 lines, ~40ms for 150 —
|
|
2449
|
-
* budget and starving the spinner/render timers (the "TUI freeze").
|
|
2700
|
+
* ~33ms border-shimmer frame, and markdown re-lexes on every streamed delta.
|
|
2701
|
+
* Without memoization each frame can re-tokenize an unchanged code body through
|
|
2702
|
+
* the Rust FFI — ~26ms for 100 lines, ~40ms for 150 — consuming or overrunning
|
|
2703
|
+
* the 33ms frame budget and starving the spinner/render timers (the "TUI freeze").
|
|
2450
2704
|
*/
|
|
2451
2705
|
const HIGHLIGHT_CACHE_MAX = 256;
|
|
2452
2706
|
const highlightCache = new LRUCache<string, string>({ max: HIGHLIGHT_CACHE_MAX });
|
|
2453
2707
|
let highlightCacheTheme: Theme | undefined;
|
|
2454
2708
|
|
|
2455
|
-
function highlightCached(code: string, validLang: string | undefined): string | null {
|
|
2456
|
-
if (highlightCacheTheme !==
|
|
2709
|
+
function highlightCached(code: string, validLang: string | undefined, highlightTheme: Theme): string | null {
|
|
2710
|
+
if (highlightCacheTheme !== highlightTheme) {
|
|
2457
2711
|
highlightCache.clear();
|
|
2458
|
-
highlightCacheTheme =
|
|
2712
|
+
highlightCacheTheme = highlightTheme;
|
|
2459
2713
|
}
|
|
2460
2714
|
const key = `${validLang ?? ""}\x00${code}`;
|
|
2461
2715
|
const hit = highlightCache.get(key);
|
|
@@ -2464,7 +2718,7 @@ function highlightCached(code: string, validLang: string | undefined): string |
|
|
|
2464
2718
|
}
|
|
2465
2719
|
let highlighted: string;
|
|
2466
2720
|
try {
|
|
2467
|
-
highlighted = nativeHighlightCode(code, validLang, getHighlightColors(
|
|
2721
|
+
highlighted = nativeHighlightCode(code, validLang, getHighlightColors(highlightTheme));
|
|
2468
2722
|
} catch {
|
|
2469
2723
|
return null;
|
|
2470
2724
|
}
|
|
@@ -2476,9 +2730,9 @@ function highlightCached(code: string, validLang: string | undefined): string |
|
|
|
2476
2730
|
* Highlight code with syntax coloring based on file extension or language.
|
|
2477
2731
|
* Returns array of highlighted lines.
|
|
2478
2732
|
*/
|
|
2479
|
-
export function highlightCode(code: string, lang?: string): string[] {
|
|
2733
|
+
export function highlightCode(code: string, lang?: string, highlightTheme: Theme = theme): string[] {
|
|
2480
2734
|
const validLang = lang && nativeSupportsLanguage(lang) ? lang : undefined;
|
|
2481
|
-
const highlighted = highlightCached(code, validLang);
|
|
2735
|
+
const highlighted = highlightCached(code, validLang, highlightTheme);
|
|
2482
2736
|
// Always return a fresh array: callers (e.g. renderCodeCell) push extra lines
|
|
2483
2737
|
// onto the result, which would corrupt the cached string otherwise.
|
|
2484
2738
|
return (highlighted ?? code).split("\n");
|
|
@@ -2526,7 +2780,7 @@ export function getMarkdownTheme(): MarkdownTheme {
|
|
|
2526
2780
|
resolveMermaidAscii,
|
|
2527
2781
|
highlightCode: (code: string, lang?: string): string[] => {
|
|
2528
2782
|
const validLang = lang && nativeSupportsLanguage(lang) ? lang : undefined;
|
|
2529
|
-
const highlighted = highlightCached(code, validLang);
|
|
2783
|
+
const highlighted = highlightCached(code, validLang, theme);
|
|
2530
2784
|
if (highlighted !== null) return highlighted.split("\n");
|
|
2531
2785
|
return code.split("\n").map(line => theme.fg("mdCodeBlock", line));
|
|
2532
2786
|
},
|
|
@@ -2544,6 +2798,7 @@ export function getSelectListTheme(): SelectListTheme {
|
|
|
2544
2798
|
scrollInfo: (text: string) => theme.fg("muted", text),
|
|
2545
2799
|
noMatch: (text: string) => theme.fg("muted", text),
|
|
2546
2800
|
symbols: getSymbolTheme(),
|
|
2801
|
+
hovered: (text: string) => theme.bg("selectedBg", text),
|
|
2547
2802
|
};
|
|
2548
2803
|
}
|
|
2549
2804
|
|
|
@@ -2556,14 +2811,19 @@ export function getEditorTheme(): EditorTheme {
|
|
|
2556
2811
|
};
|
|
2557
2812
|
}
|
|
2558
2813
|
|
|
2559
|
-
export function getSettingsListTheme():
|
|
2814
|
+
export function getSettingsListTheme(): SettingsListTheme {
|
|
2560
2815
|
return {
|
|
2561
2816
|
label: (text: string, selected: boolean, changed: boolean) =>
|
|
2562
2817
|
changed ? theme.fg("statusLineGitDirty", text) : selected ? theme.fg("accent", text) : text,
|
|
2563
2818
|
value: (text: string, selected: boolean, changed: boolean) =>
|
|
2564
|
-
|
|
2819
|
+
changed ? theme.fg("statusLineGitDirty", text) : selected ? theme.fg("accent", text) : theme.fg("muted", text),
|
|
2565
2820
|
description: (text: string) => theme.fg("dim", text),
|
|
2566
2821
|
cursor: theme.fg("accent", `${theme.nav.cursor} `),
|
|
2567
2822
|
hint: (text: string) => theme.fg("dim", text),
|
|
2823
|
+
heading: (text: string, dimmed: boolean) =>
|
|
2824
|
+
dimmed ? theme.fg("dim", theme.underline(text)) : theme.fg("muted", theme.bold(theme.underline(text))),
|
|
2825
|
+
section: (text: string, active: boolean) =>
|
|
2826
|
+
active ? theme.fg("accent", theme.bold(text)) : theme.fg("muted", text),
|
|
2827
|
+
hovered: (text: string) => theme.bg("selectedBg", text),
|
|
2568
2828
|
};
|
|
2569
2829
|
}
|