@astralyn/pi 0.99.0 → 1.0.1
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 +58 -3
- package/dist/bundle/chunks/anthropic-messages-YET4T7BO.js +6 -0
- package/dist/bundle/chunks/anthropic.js +2 -2
- package/dist/bundle/chunks/azure-openai-responses-SBLL5YN3.js +2 -0
- package/dist/bundle/chunks/bedrock-converse-stream.js +3 -3
- package/dist/bundle/chunks/chunk-4TT2QGFL.js +2 -0
- package/dist/bundle/chunks/chunk-GIG5IHES.js +2 -0
- package/dist/bundle/chunks/{chunk-VW2P3X6P.js → chunk-H2N2THAO.js} +436 -668
- package/dist/bundle/chunks/{chunk-A576H74Y.js → chunk-IZ3S3GDX.js} +1 -1
- package/dist/bundle/chunks/{chunk-ABVRAYXT.js → chunk-NY3CWK44.js} +2 -2
- package/dist/bundle/chunks/chunk-SVJ7OGEB.js +2 -0
- package/dist/bundle/chunks/chunk-TRHTWM3C.js +2 -0
- package/dist/bundle/chunks/{chunk-DEWXBB6W.js → chunk-V66VGGOM.js} +1 -1
- package/dist/bundle/chunks/chunk-XDYM2567.js +20 -0
- package/dist/bundle/chunks/{cloudflare-workers-ai-system-one-ZYSAFXXL.js → cloudflare-workers-ai-system-one-QI46LUZ6.js} +1 -1
- package/dist/bundle/chunks/codemode-worker.js +90 -10
- package/dist/bundle/chunks/github-copilot.js +1 -1
- package/dist/bundle/chunks/{google-generative-ai-SDNQVVXA.js → google-generative-ai-YTZCSHQN.js} +1 -1
- package/dist/bundle/chunks/{google-vertex-LZXOLBIO.js → google-vertex-OTFZJJXQ.js} +1 -1
- package/dist/bundle/chunks/{llama-cpp-classify-7IYGGPND.js → llama-cpp-classify-R7DQLTQN.js} +1 -1
- package/dist/bundle/chunks/{mistral-conversations-VYKPSSAM.js → mistral-conversations-ELH4V4TY.js} +1 -1
- package/dist/bundle/chunks/node-USQQ7C6M.js +16 -0
- package/dist/bundle/chunks/openai-chatgpt.js +2 -2
- package/dist/bundle/chunks/{openai-codex-responses-HZ4VUDXD.js → openai-codex-responses-OLVTU4UA.js} +1 -1
- package/dist/bundle/chunks/openai-codex.js +1 -1
- package/dist/bundle/chunks/openai-completions-53M2KJ67.js +7 -0
- package/dist/bundle/chunks/openai-responses-4ABDEL4Z.js +3 -0
- package/dist/bundle/chunks/{openrouter-images-5524IQHX.js → openrouter-images-YP3YVB54.js} +1 -1
- package/dist/bundle/chunks/openrouter.js +1 -1
- package/dist/bundle/chunks/radius.js +1 -1
- package/dist/bundle/chunks/{typesafe-system-one-Z2CDLKEY.js → typesafe-system-one-RREJAKWB.js} +1 -1
- package/dist/bundle/chunks/virtual-modules-YFKU7JZF.js +2 -0
- package/dist/bundle/cli.js +1 -1
- package/dist/bundle/index.js +1 -1
- package/dist/bundle/rpc-entry.js +1 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +5 -2
- package/dist/cli/args.js.map +1 -1
- package/dist/config.d.ts +5 -8
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +19 -13
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session.d.ts +21 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +65 -12
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/export-html/tool-renderer.d.ts +3 -3
- package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
- package/dist/core/export-html/tool-renderer.js +3 -3
- package/dist/core/export-html/tool-renderer.js.map +1 -1
- package/dist/core/extensions/index.d.ts +2 -2
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +18 -1
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +3 -1
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +6 -0
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +15 -1
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/keybindings.d.ts +51 -11
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +11 -3
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/mcp-servers.d.ts +40 -7
- package/dist/core/mcp-servers.d.ts.map +1 -1
- package/dist/core/mcp-servers.js +63 -11
- package/dist/core/mcp-servers.js.map +1 -1
- package/dist/core/model-config.d.ts +36 -0
- package/dist/core/model-config.d.ts.map +1 -1
- package/dist/core/model-config.js +14 -2
- package/dist/core/model-config.js.map +1 -1
- package/dist/core/model-registry.d.ts +3 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +4 -0
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver.js +1 -1
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/model-runtime.d.ts +6 -0
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +22 -18
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/provider-composer.d.ts +2 -1
- package/dist/core/provider-composer.d.ts.map +1 -1
- package/dist/core/provider-composer.js +13 -0
- package/dist/core/provider-composer.js.map +1 -1
- package/dist/core/radius.d.ts +2 -0
- package/dist/core/radius.d.ts.map +1 -1
- package/dist/core/radius.js +2 -0
- package/dist/core/radius.js.map +1 -1
- package/dist/core/remote-catalog-provider.d.ts.map +1 -1
- package/dist/core/remote-catalog-provider.js +4 -9
- package/dist/core/remote-catalog-provider.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +1 -0
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/settings-manager.d.ts +7 -5
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +2 -1
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/system-prompt.js +1 -1
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/tasks/format.d.ts +7 -0
- package/dist/core/tasks/format.d.ts.map +1 -0
- package/dist/core/tasks/format.js +14 -0
- package/dist/core/tasks/format.js.map +1 -0
- package/dist/core/tasks/history.d.ts.map +1 -1
- package/dist/core/tasks/history.js +0 -19
- package/dist/core/tasks/history.js.map +1 -1
- package/dist/core/tasks/output.d.ts +8 -0
- package/dist/core/tasks/output.d.ts.map +1 -1
- package/dist/core/tasks/output.js +19 -0
- package/dist/core/tasks/output.js.map +1 -1
- package/dist/core/tasks/presentation.d.ts +1 -3
- package/dist/core/tasks/presentation.d.ts.map +1 -1
- package/dist/core/tasks/presentation.js +79 -166
- package/dist/core/tasks/presentation.js.map +1 -1
- package/dist/core/tasks/runtime.d.ts +16 -9
- package/dist/core/tasks/runtime.d.ts.map +1 -1
- package/dist/core/tasks/runtime.js +89 -106
- package/dist/core/tasks/runtime.js.map +1 -1
- package/dist/core/tasks/session.d.ts.map +1 -1
- package/dist/core/tasks/session.js +13 -4
- package/dist/core/tasks/session.js.map +1 -1
- package/dist/core/tasks/store.d.ts +20 -6
- package/dist/core/tasks/store.d.ts.map +1 -1
- package/dist/core/tasks/store.js +45 -18
- package/dist/core/tasks/store.js.map +1 -1
- package/dist/core/tasks/types.d.ts +14 -54
- package/dist/core/tasks/types.d.ts.map +1 -1
- package/dist/core/tasks/types.js +1 -5
- package/dist/core/tasks/types.js.map +1 -1
- package/dist/core/tools/renderers/bash.d.ts.map +1 -1
- package/dist/core/tools/renderers/bash.js +11 -34
- package/dist/core/tools/renderers/bash.js.map +1 -1
- package/dist/core/tools/renderers/index.d.ts +2 -2
- package/dist/core/tools/renderers/index.d.ts.map +1 -1
- package/dist/core/tools/renderers/index.js.map +1 -1
- package/dist/core/tools/shell-execution.d.ts +0 -1
- package/dist/core/tools/shell-execution.d.ts.map +1 -1
- package/dist/core/tools/shell-execution.js +3 -10
- package/dist/core/tools/shell-execution.js.map +1 -1
- package/dist/core/tools/shell-tool.d.ts.map +1 -1
- package/dist/core/tools/shell-tool.js +2 -4
- package/dist/core/tools/shell-tool.js.map +1 -1
- package/dist/core/tools/tasks/actions.d.ts +1 -1
- package/dist/core/tools/tasks/actions.d.ts.map +1 -1
- package/dist/core/tools/tasks/actions.js +26 -12
- package/dist/core/tools/tasks/actions.js.map +1 -1
- package/dist/core/tools/tasks/constants.d.ts +2 -6
- package/dist/core/tools/tasks/constants.d.ts.map +1 -1
- package/dist/core/tools/tasks/constants.js +2 -6
- package/dist/core/tools/tasks/constants.js.map +1 -1
- package/dist/core/tools/tasks/schema.d.ts +1 -1
- package/dist/core/tools/tasks/schema.d.ts.map +1 -1
- package/dist/core/tools/tasks/schema.js +8 -7
- package/dist/core/tools/tasks/schema.js.map +1 -1
- package/dist/core/tools/tasks/types.d.ts +8 -38
- package/dist/core/tools/tasks/types.d.ts.map +1 -1
- package/dist/core/tools/tasks/types.js +6 -11
- package/dist/core/tools/tasks/types.js.map +1 -1
- package/dist/core/virtual-models.d.ts +2 -0
- package/dist/core/virtual-models.d.ts.map +1 -1
- package/dist/core/virtual-models.js +19 -12
- package/dist/core/virtual-models.js.map +1 -1
- package/dist/extensions/btw/agent.d.ts +17 -8
- package/dist/extensions/btw/agent.d.ts.map +1 -1
- package/dist/extensions/btw/agent.js +74 -76
- package/dist/extensions/btw/agent.js.map +1 -1
- package/dist/extensions/btw/controller.d.ts +0 -1
- package/dist/extensions/btw/controller.d.ts.map +1 -1
- package/dist/extensions/btw/controller.js +26 -33
- package/dist/extensions/btw/controller.js.map +1 -1
- package/dist/extensions/btw/panel.d.ts +13 -14
- package/dist/extensions/btw/panel.d.ts.map +1 -1
- package/dist/extensions/btw/panel.js +38 -29
- package/dist/extensions/btw/panel.js.map +1 -1
- package/dist/extensions/codemode/execute.d.ts.map +1 -1
- package/dist/extensions/codemode/execute.js +197 -51
- package/dist/extensions/codemode/execute.js.map +1 -1
- package/dist/extensions/codemode/renderer.d.ts.map +1 -1
- package/dist/extensions/codemode/renderer.js +43 -25
- package/dist/extensions/codemode/renderer.js.map +1 -1
- package/dist/extensions/codemode/tool.d.ts +12 -11
- package/dist/extensions/codemode/tool.d.ts.map +1 -1
- package/dist/extensions/codemode/tool.js +73 -129
- package/dist/extensions/codemode/tool.js.map +1 -1
- package/dist/extensions/codemode/worker.d.ts +1 -1
- package/dist/extensions/codemode/worker.js +1 -1
- package/dist/extensions/codemode/worker.js.map +1 -1
- package/dist/extensions/deepwiki/schema.d.ts +1 -1
- package/dist/extensions/index.d.ts.map +1 -1
- package/dist/extensions/index.js +0 -2
- package/dist/extensions/index.js.map +1 -1
- package/dist/extensions/mcp/cli.d.ts.map +1 -1
- package/dist/extensions/mcp/cli.js +23 -5
- package/dist/extensions/mcp/cli.js.map +1 -1
- package/dist/extensions/mcp/config.d.ts +19 -5
- package/dist/extensions/mcp/config.d.ts.map +1 -1
- package/dist/extensions/mcp/config.js +60 -12
- package/dist/extensions/mcp/config.js.map +1 -1
- package/dist/extensions/mcp/index.d.ts +36 -9
- package/dist/extensions/mcp/index.d.ts.map +1 -1
- package/dist/extensions/mcp/index.js +309 -100
- package/dist/extensions/mcp/index.js.map +1 -1
- package/dist/extensions/mcp/oauth.d.ts +14 -8
- package/dist/extensions/mcp/oauth.d.ts.map +1 -1
- package/dist/extensions/mcp/oauth.js +105 -36
- package/dist/extensions/mcp/oauth.js.map +1 -1
- package/dist/extensions/mcp/runtime.d.ts +2 -0
- package/dist/extensions/mcp/runtime.d.ts.map +1 -1
- package/dist/extensions/mcp/runtime.js +17 -9
- package/dist/extensions/mcp/runtime.js.map +1 -1
- package/dist/extensions/mcp/tools.d.ts +8 -5
- package/dist/extensions/mcp/tools.d.ts.map +1 -1
- package/dist/extensions/mcp/tools.js +50 -26
- package/dist/extensions/mcp/tools.js.map +1 -1
- package/dist/extensions/mcp/ui.d.ts.map +1 -1
- package/dist/extensions/mcp/ui.js +7 -1
- package/dist/extensions/mcp/ui.js.map +1 -1
- package/dist/extensions/provider/catalog.d.ts +8 -1
- package/dist/extensions/provider/catalog.d.ts.map +1 -1
- package/dist/extensions/provider/catalog.js +31 -0
- package/dist/extensions/provider/catalog.js.map +1 -1
- package/dist/extensions/provider/connection.d.ts +4 -1
- package/dist/extensions/provider/connection.d.ts.map +1 -1
- package/dist/extensions/provider/connection.js +1 -5
- package/dist/extensions/provider/connection.js.map +1 -1
- package/dist/extensions/provider/editing.d.ts +36 -0
- package/dist/extensions/provider/editing.d.ts.map +1 -0
- package/dist/extensions/provider/editing.js +99 -0
- package/dist/extensions/provider/editing.js.map +1 -0
- package/dist/extensions/provider/json-fields.d.ts +5 -0
- package/dist/extensions/provider/json-fields.d.ts.map +1 -0
- package/dist/extensions/provider/json-fields.js +31 -0
- package/dist/extensions/provider/json-fields.js.map +1 -0
- package/dist/extensions/provider/store.d.ts +1 -4
- package/dist/extensions/provider/store.d.ts.map +1 -1
- package/dist/extensions/provider/store.js +2 -30
- package/dist/extensions/provider/store.js.map +1 -1
- package/dist/extensions/provider/ui/builtin-data.d.ts +0 -2
- package/dist/extensions/provider/ui/builtin-data.d.ts.map +1 -1
- package/dist/extensions/provider/ui/builtin-data.js +14 -79
- package/dist/extensions/provider/ui/builtin-data.js.map +1 -1
- package/dist/extensions/provider/ui/compat.d.ts.map +1 -1
- package/dist/extensions/provider/ui/compat.js +6 -9
- package/dist/extensions/provider/ui/compat.js.map +1 -1
- package/dist/extensions/provider/ui/controls.d.ts +48 -0
- package/dist/extensions/provider/ui/controls.d.ts.map +1 -0
- package/dist/extensions/provider/ui/controls.js +108 -0
- package/dist/extensions/provider/ui/controls.js.map +1 -0
- package/dist/extensions/provider/ui/dictionary.d.ts.map +1 -1
- package/dist/extensions/provider/ui/dictionary.js +6 -9
- package/dist/extensions/provider/ui/dictionary.js.map +1 -1
- package/dist/extensions/provider/ui/editor.d.ts +3 -3
- package/dist/extensions/provider/ui/editor.d.ts.map +1 -1
- package/dist/extensions/provider/ui/editor.js +35 -140
- package/dist/extensions/provider/ui/editor.js.map +1 -1
- package/dist/extensions/provider/ui/fetch-models.d.ts +0 -3
- package/dist/extensions/provider/ui/fetch-models.d.ts.map +1 -1
- package/dist/extensions/provider/ui/fetch-models.js +49 -44
- package/dist/extensions/provider/ui/fetch-models.js.map +1 -1
- package/dist/extensions/provider/ui/model-fields.d.ts.map +1 -1
- package/dist/extensions/provider/ui/model-fields.js +11 -14
- package/dist/extensions/provider/ui/model-fields.js.map +1 -1
- package/dist/extensions/provider/ui/model-options.d.ts +4 -34
- package/dist/extensions/provider/ui/model-options.d.ts.map +1 -1
- package/dist/extensions/provider/ui/model-options.js +90 -271
- package/dist/extensions/provider/ui/model-options.js.map +1 -1
- package/dist/extensions/provider/ui/pane.d.ts +4 -18
- package/dist/extensions/provider/ui/pane.d.ts.map +1 -1
- package/dist/extensions/provider/ui/pane.js.map +1 -1
- package/dist/extensions/provider/ui/provider-fields.d.ts +2 -19
- package/dist/extensions/provider/ui/provider-fields.d.ts.map +1 -1
- package/dist/extensions/provider/ui/provider-fields.js +58 -171
- package/dist/extensions/provider/ui/provider-fields.js.map +1 -1
- package/dist/extensions/provider/ui/thinking-map.d.ts.map +1 -1
- package/dist/extensions/provider/ui/thinking-map.js +6 -9
- package/dist/extensions/provider/ui/thinking-map.js.map +1 -1
- package/dist/extensions/question/detail-pane.d.ts +7 -2
- package/dist/extensions/question/detail-pane.d.ts.map +1 -1
- package/dist/extensions/question/detail-pane.js +16 -5
- package/dist/extensions/question/detail-pane.js.map +1 -1
- package/dist/extensions/question/dialog-view.d.ts +41 -0
- package/dist/extensions/question/dialog-view.d.ts.map +1 -0
- package/dist/extensions/question/dialog-view.js +329 -0
- package/dist/extensions/question/dialog-view.js.map +1 -0
- package/dist/extensions/question/dialog.d.ts +3 -3
- package/dist/extensions/question/dialog.d.ts.map +1 -1
- package/dist/extensions/question/dialog.js +220 -634
- package/dist/extensions/question/dialog.js.map +1 -1
- package/dist/extensions/question/index.d.ts.map +1 -1
- package/dist/extensions/question/index.js +2 -3
- package/dist/extensions/question/index.js.map +1 -1
- package/dist/extensions/question/render.d.ts.map +1 -1
- package/dist/extensions/question/render.js +22 -32
- package/dist/extensions/question/render.js.map +1 -1
- package/dist/extensions/question/results.d.ts.map +1 -1
- package/dist/extensions/question/results.js +56 -12
- package/dist/extensions/question/results.js.map +1 -1
- package/dist/extensions/question/schema.d.ts +21 -6
- package/dist/extensions/question/schema.d.ts.map +1 -1
- package/dist/extensions/question/schema.js.map +1 -1
- package/dist/extensions/question/state.d.ts +9 -7
- package/dist/extensions/question/state.d.ts.map +1 -1
- package/dist/extensions/question/state.js +63 -54
- package/dist/extensions/question/state.js.map +1 -1
- package/dist/extensions/question/types.d.ts +41 -18
- package/dist/extensions/question/types.d.ts.map +1 -1
- package/dist/extensions/question/types.js.map +1 -1
- package/dist/extensions/statusline/index.d.ts +4 -0
- package/dist/extensions/statusline/index.d.ts.map +1 -1
- package/dist/extensions/statusline/index.js +18 -355
- package/dist/extensions/statusline/index.js.map +1 -1
- package/dist/extensions/statusline/render.d.ts +19 -0
- package/dist/extensions/statusline/render.d.ts.map +1 -0
- package/dist/extensions/statusline/render.js +163 -0
- package/dist/extensions/statusline/render.js.map +1 -0
- package/dist/extensions/statusline/usage.d.ts +12 -0
- package/dist/extensions/statusline/usage.d.ts.map +1 -0
- package/dist/extensions/statusline/usage.js +36 -0
- package/dist/extensions/statusline/usage.js.map +1 -0
- package/dist/extensions/tool-search/tool.d.ts +5 -4
- package/dist/extensions/tool-search/tool.d.ts.map +1 -1
- package/dist/extensions/tool-search/tool.js +7 -28
- package/dist/extensions/tool-search/tool.js.map +1 -1
- package/dist/extensions/web-search/execute.d.ts +1 -5
- package/dist/extensions/web-search/execute.d.ts.map +1 -1
- package/dist/extensions/web-search/execute.js +4 -9
- package/dist/extensions/web-search/execute.js.map +1 -1
- package/dist/extensions/web-search/format.d.ts +12 -3
- package/dist/extensions/web-search/format.d.ts.map +1 -1
- package/dist/extensions/web-search/format.js +33 -25
- package/dist/extensions/web-search/format.js.map +1 -1
- package/dist/extensions/web-search/index.d.ts.map +1 -1
- package/dist/extensions/web-search/index.js +6 -29
- package/dist/extensions/web-search/index.js.map +1 -1
- package/dist/extensions/web-search/providers/deepseek.d.ts.map +1 -1
- package/dist/extensions/web-search/providers/deepseek.js +0 -1
- package/dist/extensions/web-search/providers/deepseek.js.map +1 -1
- package/dist/extensions/web-search/providers/http.d.ts +1 -1
- package/dist/extensions/web-search/providers/http.d.ts.map +1 -1
- package/dist/extensions/web-search/providers/http.js.map +1 -1
- package/dist/extensions/web-search/providers/minimax.d.ts.map +1 -1
- package/dist/extensions/web-search/providers/minimax.js +0 -1
- package/dist/extensions/web-search/providers/minimax.js.map +1 -1
- package/dist/extensions/web-search/render.d.ts +7 -2
- package/dist/extensions/web-search/render.d.ts.map +1 -1
- package/dist/extensions/web-search/render.js +32 -4
- package/dist/extensions/web-search/render.js.map +1 -1
- package/dist/extensions/web-search/results.d.ts.map +1 -1
- package/dist/extensions/web-search/results.js +3 -8
- package/dist/extensions/web-search/results.js.map +1 -1
- package/dist/extensions/web-search/types.d.ts +4 -2
- package/dist/extensions/web-search/types.d.ts.map +1 -1
- package/dist/extensions/web-search/types.js.map +1 -1
- package/dist/index.d.ts +3 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +6 -0
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/armin.d.ts +3 -0
- package/dist/modes/interactive/components/armin.d.ts.map +1 -1
- package/dist/modes/interactive/components/armin.js +7 -5
- package/dist/modes/interactive/components/armin.js.map +1 -1
- package/dist/modes/interactive/components/auth-url.d.ts +14 -0
- package/dist/modes/interactive/components/auth-url.d.ts.map +1 -0
- package/dist/modes/interactive/components/auth-url.js +34 -0
- package/dist/modes/interactive/components/auth-url.js.map +1 -0
- package/dist/modes/interactive/components/easter-egg-3d.d.ts +104 -0
- package/dist/modes/interactive/components/easter-egg-3d.d.ts.map +1 -0
- package/dist/modes/interactive/components/easter-egg-3d.js +1123 -0
- package/dist/modes/interactive/components/easter-egg-3d.js.map +1 -0
- package/dist/modes/interactive/components/easter-egg-3d.lazy.d.ts +6 -0
- package/dist/modes/interactive/components/easter-egg-3d.lazy.d.ts.map +1 -0
- package/dist/modes/interactive/components/easter-egg-3d.lazy.js +24 -0
- package/dist/modes/interactive/components/easter-egg-3d.lazy.js.map +1 -0
- package/dist/modes/interactive/components/index.d.ts +0 -1
- package/dist/modes/interactive/components/index.d.ts.map +1 -1
- package/dist/modes/interactive/components/index.js +0 -1
- package/dist/modes/interactive/components/index.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts +2 -0
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js +9 -5
- package/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.d.ts +8 -2
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.js +24 -21
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
- package/dist/modes/interactive/components/pi-logo.d.ts +7 -0
- package/dist/modes/interactive/components/pi-logo.d.ts.map +1 -1
- package/dist/modes/interactive/components/pi-logo.js +13 -1
- package/dist/modes/interactive/components/pi-logo.js.map +1 -1
- package/dist/modes/interactive/components/radius-login-selector.d.ts +15 -0
- package/dist/modes/interactive/components/radius-login-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/radius-login-selector.js +83 -0
- package/dist/modes/interactive/components/radius-login-selector.js.map +1 -0
- package/dist/modes/interactive/components/settings-selector.d.ts +3 -3
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +5 -5
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/status-marker.d.ts +0 -2
- package/dist/modes/interactive/components/status-marker.d.ts.map +1 -1
- package/dist/modes/interactive/components/status-marker.js +0 -4
- package/dist/modes/interactive/components/status-marker.js.map +1 -1
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message.js +5 -4
- package/dist/modes/interactive/components/user-message.js.map +1 -1
- package/dist/modes/interactive/components/visual-truncate.d.ts +27 -3
- package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
- package/dist/modes/interactive/components/visual-truncate.js +36 -6
- package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +12 -2
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +180 -55
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/tasks/completion-render.d.ts +1 -1
- package/dist/modes/interactive/tasks/completion-render.d.ts.map +1 -1
- package/dist/modes/interactive/tasks/completion-render.js +28 -82
- package/dist/modes/interactive/tasks/completion-render.js.map +1 -1
- package/dist/modes/interactive/tasks/index.d.ts.map +1 -1
- package/dist/modes/interactive/tasks/index.js +18 -13
- package/dist/modes/interactive/tasks/index.js.map +1 -1
- package/dist/modes/interactive/tasks/inspector.d.ts +35 -0
- package/dist/modes/interactive/tasks/inspector.d.ts.map +1 -0
- package/dist/modes/interactive/tasks/inspector.js +93 -0
- package/dist/modes/interactive/tasks/inspector.js.map +1 -0
- package/dist/modes/interactive/tasks/layout.d.ts +40 -0
- package/dist/modes/interactive/tasks/layout.d.ts.map +1 -0
- package/dist/modes/interactive/tasks/layout.js +212 -0
- package/dist/modes/interactive/tasks/layout.js.map +1 -0
- package/dist/modes/interactive/tasks/list.d.ts +21 -0
- package/dist/modes/interactive/tasks/list.d.ts.map +1 -0
- package/dist/modes/interactive/tasks/list.js +96 -0
- package/dist/modes/interactive/tasks/list.js.map +1 -0
- package/dist/modes/interactive/tasks/manager.d.ts +29 -36
- package/dist/modes/interactive/tasks/manager.d.ts.map +1 -1
- package/dist/modes/interactive/tasks/manager.js +315 -315
- package/dist/modes/interactive/tasks/manager.js.map +1 -1
- package/dist/modes/interactive/tasks/model.d.ts +21 -0
- package/dist/modes/interactive/tasks/model.d.ts.map +1 -0
- package/dist/modes/interactive/tasks/model.js +41 -0
- package/dist/modes/interactive/tasks/model.js.map +1 -0
- package/dist/modes/interactive/tasks/render.d.ts +5 -19
- package/dist/modes/interactive/tasks/render.d.ts.map +1 -1
- package/dist/modes/interactive/tasks/render.js +18 -102
- package/dist/modes/interactive/tasks/render.js.map +1 -1
- package/dist/modes/interactive/tasks/task-view.d.ts +8 -48
- package/dist/modes/interactive/tasks/task-view.d.ts.map +1 -1
- package/dist/modes/interactive/tasks/task-view.js +11 -51
- package/dist/modes/interactive/tasks/task-view.js.map +1 -1
- package/dist/modes/interactive/tasks/text.d.ts +1 -7
- package/dist/modes/interactive/tasks/text.d.ts.map +1 -1
- package/dist/modes/interactive/tasks/text.js +6 -29
- package/dist/modes/interactive/tasks/text.js.map +1 -1
- package/dist/modes/interactive/tasks/viewport.d.ts +2 -0
- package/dist/modes/interactive/tasks/viewport.d.ts.map +1 -1
- package/dist/modes/interactive/tasks/viewport.js +17 -7
- package/dist/modes/interactive/tasks/viewport.js.map +1 -1
- package/dist/modes/interactive/tasks/views.d.ts +9 -0
- package/dist/modes/interactive/tasks/views.d.ts.map +1 -0
- package/dist/modes/interactive/tasks/views.js +42 -0
- package/dist/modes/interactive/tasks/views.js.map +1 -0
- package/dist/modes/interactive/theme/system-theme.d.ts +2 -1
- package/dist/modes/interactive/theme/system-theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/system-theme.js +16 -5
- package/dist/modes/interactive/theme/system-theme.js.map +1 -1
- package/dist/modes/interactive/tool-view/tool-execution.d.ts +4 -19
- package/dist/modes/interactive/tool-view/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/tool-view/tool-execution.js +23 -67
- package/dist/modes/interactive/tool-view/tool-execution.js.map +1 -1
- package/dist/utils/image-convert.d.ts +12 -0
- package/dist/utils/image-convert.d.ts.map +1 -1
- package/dist/utils/image-convert.js +45 -6
- package/dist/utils/image-convert.js.map +1 -1
- package/docs/bundled/README.md +0 -1
- package/docs/bundled/extensions/question.md +2 -2
- package/docs/bundled/extensions/statusline.md +24 -15
- package/docs/bundled/tasks.md +34 -48
- package/docs/codemode.md +207 -0
- package/docs/docs.json +4 -4
- package/docs/environment-variables.md +1 -1
- package/docs/extensions.md +11 -9
- package/docs/keybindings.md +14 -7
- package/docs/mcp.md +164 -82
- package/docs/models.md +51 -3
- package/docs/providers.md +8 -0
- package/docs/sdk.md +2 -2
- package/docs/session-format.md +12 -22
- package/docs/settings.md +4 -2
- package/docs/tui.md +1 -1
- package/docs/usage.md +6 -16
- package/examples/README.md +1 -1
- package/examples/extensions/README.md +1 -2
- package/examples/extensions/built-in-tool-renderer.ts +16 -40
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/minimal-mode.ts +24 -96
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/examples/sdk/14-codemode-mcp.ts +2 -2
- package/npm-shrinkwrap.json +73 -62
- package/package.json +11 -10
- package/dist/bundle/chunks/anthropic-messages-KIXY7EDT.js +0 -6
- package/dist/bundle/chunks/azure-openai-responses-RPBERDXD.js +0 -2
- package/dist/bundle/chunks/chunk-CLLDCO64.js +0 -2
- package/dist/bundle/chunks/chunk-PJVFYVHE.js +0 -42
- package/dist/bundle/chunks/chunk-UUSTLCVC.js +0 -2
- package/dist/bundle/chunks/chunk-VWCWZD6E.js +0 -2
- package/dist/bundle/chunks/node-CXWYTK2I.js +0 -16
- package/dist/bundle/chunks/openai-completions-SKDGF6OE.js +0 -7
- package/dist/bundle/chunks/openai-responses-FPML4SSG.js +0 -3
- package/dist/bundle/chunks/virtual-modules-TQRORWJQ.js +0 -2
- package/dist/core/tasks/view-data.d.ts +0 -8
- package/dist/core/tasks/view-data.d.ts.map +0 -1
- package/dist/core/tasks/view-data.js +0 -61
- package/dist/core/tasks/view-data.js.map +0 -1
- package/dist/core/tasks/view.d.ts +0 -30
- package/dist/core/tasks/view.d.ts.map +0 -1
- package/dist/core/tasks/view.js +0 -50
- package/dist/core/tasks/view.js.map +0 -1
- package/dist/core/tools/renderers/shell-task.d.ts +0 -4
- package/dist/core/tools/renderers/shell-task.d.ts.map +0 -1
- package/dist/core/tools/renderers/shell-task.js +0 -35
- package/dist/core/tools/renderers/shell-task.js.map +0 -1
- package/dist/extensions/todo/constants.d.ts +0 -16
- package/dist/extensions/todo/constants.d.ts.map +0 -1
- package/dist/extensions/todo/constants.js +0 -30
- package/dist/extensions/todo/constants.js.map +0 -1
- package/dist/extensions/todo/index.d.ts +0 -3
- package/dist/extensions/todo/index.d.ts.map +0 -1
- package/dist/extensions/todo/index.js +0 -98
- package/dist/extensions/todo/index.js.map +0 -1
- package/dist/extensions/todo/schema.d.ts +0 -60
- package/dist/extensions/todo/schema.d.ts.map +0 -1
- package/dist/extensions/todo/schema.js +0 -56
- package/dist/extensions/todo/schema.js.map +0 -1
- package/dist/extensions/todo/state.d.ts +0 -34
- package/dist/extensions/todo/state.d.ts.map +0 -1
- package/dist/extensions/todo/state.js +0 -425
- package/dist/extensions/todo/state.js.map +0 -1
- package/dist/extensions/todo/view.d.ts +0 -36
- package/dist/extensions/todo/view.d.ts.map +0 -1
- package/dist/extensions/todo/view.js +0 -580
- package/dist/extensions/todo/view.js.map +0 -1
- package/dist/extensions/todo/widget.d.ts +0 -15
- package/dist/extensions/todo/widget.d.ts.map +0 -1
- package/dist/extensions/todo/widget.js +0 -50
- package/dist/extensions/todo/widget.js.map +0 -1
- package/dist/modes/interactive/components/daxnuts.d.ts +0 -23
- package/dist/modes/interactive/components/daxnuts.d.ts.map +0 -1
- package/dist/modes/interactive/components/daxnuts.js +0 -138
- package/dist/modes/interactive/components/daxnuts.js.map +0 -1
- package/dist/modes/interactive/tasks/fallback-view.d.ts +0 -4
- package/dist/modes/interactive/tasks/fallback-view.d.ts.map +0 -1
- package/dist/modes/interactive/tasks/fallback-view.js +0 -27
- package/dist/modes/interactive/tasks/fallback-view.js.map +0 -1
- package/docs/bundled/extensions/todo.md +0 -104
- package/examples/extensions/todo.ts +0 -297
|
@@ -157,6 +157,10 @@ export declare class InteractiveMode {
|
|
|
157
157
|
private formatExtensionDisplayPath;
|
|
158
158
|
private formatContextPath;
|
|
159
159
|
private getStartupExpansionState;
|
|
160
|
+
/** Startup header (logo, version, key hints). Hidden only by quietStartup: true. */
|
|
161
|
+
private shouldShowStartupHeader;
|
|
162
|
+
/** Startup details (model scope, loaded resources). Hidden by quietStartup: true or "header". */
|
|
163
|
+
private shouldShowStartupDetails;
|
|
160
164
|
/**
|
|
161
165
|
* Get a short path relative to the package root for display.
|
|
162
166
|
*/
|
|
@@ -181,6 +185,8 @@ export declare class InteractiveMode {
|
|
|
181
185
|
*/
|
|
182
186
|
private bindCurrentSessionExtensions;
|
|
183
187
|
private applyFullscreenScrollbarSetting;
|
|
188
|
+
/** Lets extension images use the PNG transcoder; tool results register it themselves. */
|
|
189
|
+
private ensurePngTranscoder;
|
|
184
190
|
private applyRuntimeSettings;
|
|
185
191
|
private rebindCurrentSession;
|
|
186
192
|
private handleFatalRuntimeError;
|
|
@@ -424,6 +430,7 @@ export declare class InteractiveMode {
|
|
|
424
430
|
private getLogoutProviderOptions;
|
|
425
431
|
private findLoginProviderOptions;
|
|
426
432
|
private handleLoginCommand;
|
|
433
|
+
/** `onBack` reopens the selector the login was started from when the user cancels it. */
|
|
427
434
|
private startProviderLogin;
|
|
428
435
|
private showLoginAuthTypeSelector;
|
|
429
436
|
private showLoginProviderSelector;
|
|
@@ -436,6 +443,11 @@ export declare class InteractiveMode {
|
|
|
436
443
|
private notifyAuthDialog;
|
|
437
444
|
private loginProvider;
|
|
438
445
|
private showLoginDialog;
|
|
446
|
+
/**
|
|
447
|
+
* Offer to point the Radius MCP server in the global mcp.json at the Radius login, adding the server
|
|
448
|
+
* when missing. Nothing is asked when a global server already uses this login.
|
|
449
|
+
*/
|
|
450
|
+
private offerRadiusMcpServer;
|
|
439
451
|
private handleReloadCommand;
|
|
440
452
|
private handleExportCommand;
|
|
441
453
|
private getPathCommandArgument;
|
|
@@ -459,8 +471,6 @@ export declare class InteractiveMode {
|
|
|
459
471
|
private handleDebugCommand;
|
|
460
472
|
private handleArminSaysHi;
|
|
461
473
|
private handleDementedDelves;
|
|
462
|
-
private handleDaxnuts;
|
|
463
|
-
private checkDaxnutsEasterEgg;
|
|
464
474
|
private handleBashCommand;
|
|
465
475
|
private handleCompactCommand;
|
|
466
476
|
stop(fullscreenExitOutput?: FullscreenExitOutput): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-mode.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"interactive-mode.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { bindTasksUI } from "./tasks/index.js";
|
|
2
|
+
import { cleanTaskText, firstCommandLine } from "./tasks/text.js";
|
|
2
3
|
/**
|
|
3
4
|
* Interactive mode for the coding agent.
|
|
4
5
|
* Handles TUI rendering and user interaction, delegating business logic to AgentSession.
|
|
@@ -26,6 +27,7 @@ import { createCompactionSummaryMessage, createCustomMessage } from "../../core/
|
|
|
26
27
|
import { defaultModelPerProvider, findExactModelReferenceMatch, resolveModelScopeFromModels, } from "../../core/model-resolver.js";
|
|
27
28
|
import { CredentialSynchronizationError } from "../../core/model-runtime.js";
|
|
28
29
|
import { DefaultPackageManager } from "../../core/package-manager.js";
|
|
30
|
+
import { RADIUS_MCP_URL, RADIUS_PROVIDER_ID } from "../../core/radius.js";
|
|
29
31
|
import { formatMissingSessionCwdPrompt, MissingSessionCwdError } from "../../core/session-cwd.js";
|
|
30
32
|
import { SessionManager, sessionEntryToContextMessages, } from "../../core/session-manager.js";
|
|
31
33
|
import { BUILTIN_SLASH_COMMANDS } from "../../core/slash-commands.js";
|
|
@@ -33,10 +35,12 @@ import { isInstallTelemetryEnabled } from "../../core/telemetry.js";
|
|
|
33
35
|
import { withBuiltInRenderers } from "../../core/tools/renderers/index.js";
|
|
34
36
|
import { hasTrustRequiringProjectResources, ProjectTrustStore } from "../../core/trust-manager.js";
|
|
35
37
|
import { getUsageCostBreakdown } from "../../core/usage-totals.js";
|
|
38
|
+
import { addMcpServerConfig, loadMcpConfig } from "../../extensions/mcp/config.js";
|
|
36
39
|
import { getChangelogPath, getNewEntries, normalizeChangelogLinks, parseChangelog } from "../../utils/changelog.js";
|
|
37
40
|
import { copyToClipboard, readClipboardFilePaths, readClipboardText } from "../../utils/clipboard.js";
|
|
38
41
|
import { extensionForImageMimeType, readClipboardImage } from "../../utils/clipboard-image.js";
|
|
39
42
|
import { parseGitUrl } from "../../utils/git.js";
|
|
43
|
+
import { ensurePngTranscoder } from "../../utils/image-convert.js";
|
|
40
44
|
import { getCwdRelativePath } from "../../utils/paths.js";
|
|
41
45
|
import { getPiUserAgent } from "../../utils/pi-user-agent.js";
|
|
42
46
|
import { killTrackedDetachedChildren } from "../../utils/shell.js";
|
|
@@ -53,9 +57,9 @@ import { CompactionSummaryMessageComponent } from "./components/compaction-summa
|
|
|
53
57
|
import { CustomEditor } from "./components/custom-editor.js";
|
|
54
58
|
import { CustomEntryComponent } from "./components/custom-entry.js";
|
|
55
59
|
import { CustomMessageComponent } from "./components/custom-message.js";
|
|
56
|
-
import { DaxnutsComponent } from "./components/daxnuts.js";
|
|
57
60
|
import { DynamicBorder } from "./components/dynamic-border.js";
|
|
58
61
|
import { EarendilAnnouncementComponent } from "./components/earendil-announcement.js";
|
|
62
|
+
import { playArmin3d, playPiLogo3d } from "./components/easter-egg-3d.lazy.js";
|
|
59
63
|
import { ExtensionEditorComponent } from "./components/extension-editor.js";
|
|
60
64
|
import { ExtensionInputComponent } from "./components/extension-input.js";
|
|
61
65
|
import { ExtensionSelectorComponent } from "./components/extension-selector.js";
|
|
@@ -64,8 +68,9 @@ import { formatKeyText, keyDisplayText, keyHint, keyText, rawKeyHint } from "./c
|
|
|
64
68
|
import { LoginDialogComponent } from "./components/login-dialog.js";
|
|
65
69
|
import { createMermaidMarkdownTransformer } from "./components/mermaid.js";
|
|
66
70
|
import { ModelSelectorComponent } from "./components/model-selector.js";
|
|
67
|
-
import { formatAuthSelectorProviderType, OAuthSelectorComponent, } from "./components/oauth-selector.js";
|
|
68
|
-
import { piLogoLines } from "./components/pi-logo.js";
|
|
71
|
+
import { formatAuthSelectorProviderStatus, formatAuthSelectorProviderType, OAuthSelectorComponent, } from "./components/oauth-selector.js";
|
|
72
|
+
import { piLogoLines, piWordmark, supportsPiLogo } from "./components/pi-logo.js";
|
|
73
|
+
import { createLoginMenuSelector } from "./components/radius-login-selector.js";
|
|
69
74
|
import { ScopedModelsSelectorComponent } from "./components/scoped-models-selector.js";
|
|
70
75
|
import { SessionSelectorComponent } from "./components/session-selector.js";
|
|
71
76
|
import { SettingsSelectorComponent } from "./components/settings-selector.js";
|
|
@@ -108,6 +113,15 @@ class ExpandableText extends ThemedText {
|
|
|
108
113
|
this.invalidate();
|
|
109
114
|
}
|
|
110
115
|
}
|
|
116
|
+
/** The built-in header. Clicking its logo (the first two lines, after one column of padding) plays an easter egg. */
|
|
117
|
+
class BuiltInHeader extends ExpandableText {
|
|
118
|
+
handleMouse(event) {
|
|
119
|
+
if (event.type !== "click" || event.y > 1 || event.x < 1 || event.x > 4 || !this.onLogoClick)
|
|
120
|
+
return undefined;
|
|
121
|
+
this.onLogoClick(event.screenX - event.x + 1, event.screenY - event.y);
|
|
122
|
+
return { handled: true };
|
|
123
|
+
}
|
|
124
|
+
}
|
|
111
125
|
function isCustomSessionEntry(item) {
|
|
112
126
|
return "type" in item && item.type === "custom";
|
|
113
127
|
}
|
|
@@ -177,6 +191,7 @@ function llamaCppPostLoginGuidance(actionLabel, loadedModelCount) {
|
|
|
177
191
|
? `${actionLabel}. No llama.cpp models are loaded. Use /llama to load a model, then /model to select it.`
|
|
178
192
|
: `${actionLabel}. Use /model to select a loaded llama.cpp model, or /llama to manage models.`;
|
|
179
193
|
}
|
|
194
|
+
const RADIUS_LOGIN_INTRO = "Radius is a service crafted for Pi by the builders of Pi, Earendil Works";
|
|
180
195
|
const AUTH_TYPE_ORDER = { oauth: 0, api_key: 1 };
|
|
181
196
|
function createFuzzyAutocompleteItems(items, prefix, getSearchText, toAutocompleteItem) {
|
|
182
197
|
const filtered = fuzzyFilter(items, prefix, getSearchText);
|
|
@@ -199,18 +214,21 @@ function getLoginProviderCompletionOptions(providerOptions) {
|
|
|
199
214
|
id: provider.id,
|
|
200
215
|
name: provider.name,
|
|
201
216
|
authTypes: [provider.authType],
|
|
217
|
+
subscription: provider.subscription,
|
|
202
218
|
});
|
|
203
219
|
}
|
|
204
220
|
return Array.from(byId.values()).sort((a, b) => a.name.localeCompare(b.name));
|
|
205
221
|
}
|
|
206
222
|
function getLoginProviderSearchText(provider) {
|
|
207
223
|
const authTypes = provider.authTypes
|
|
208
|
-
.map((authType) => `${authType} ${formatAuthSelectorProviderType(authType)}`)
|
|
224
|
+
.map((authType) => `${authType} ${formatAuthSelectorProviderType(authType, provider.subscription)}`)
|
|
209
225
|
.join(" ");
|
|
210
226
|
return `${provider.id} ${provider.name} ${authTypes}`;
|
|
211
227
|
}
|
|
212
228
|
function formatLoginProviderCompletionDescription(provider) {
|
|
213
|
-
const authTypes = provider.authTypes
|
|
229
|
+
const authTypes = provider.authTypes
|
|
230
|
+
.map((authType) => formatAuthSelectorProviderType(authType, provider.subscription))
|
|
231
|
+
.join("/");
|
|
214
232
|
return provider.name === provider.id ? authTypes : `${provider.name} · ${authTypes}`;
|
|
215
233
|
}
|
|
216
234
|
export class InteractiveMode {
|
|
@@ -617,7 +635,7 @@ export class InteractiveMode {
|
|
|
617
635
|
this.registerSignalHandlers();
|
|
618
636
|
// Load changelog (only show new entries, skip for resumed sessions)
|
|
619
637
|
this.changelogMarkdown = this.getChangelogForDisplay();
|
|
620
|
-
if (this.session.scopedModels.length > 0 &&
|
|
638
|
+
if (this.session.scopedModels.length > 0 && this.shouldShowStartupDetails()) {
|
|
621
639
|
const modelList = this.session.scopedModels
|
|
622
640
|
.map((sm) => {
|
|
623
641
|
const thinkingStr = sm.thinkingLevel ? `:${sm.thinkingLevel}` : "";
|
|
@@ -663,15 +681,21 @@ export class InteractiveMode {
|
|
|
663
681
|
// Start the UI before initializing extensions so session_start handlers can use interactive dialogs
|
|
664
682
|
this.ui.start();
|
|
665
683
|
this.isInitialized = true;
|
|
684
|
+
this.ensurePngTranscoder();
|
|
666
685
|
this.themeController.applyFromSettings();
|
|
667
686
|
// The header and startup notices bake theme colors into their text, so build them once the terminal
|
|
668
687
|
// reported its colors. This ends at the terminal's DA1 reply, or after 100 ms if it answers nothing.
|
|
669
688
|
await this.themeController.waitForTerminalColors();
|
|
670
689
|
// Add header with keybindings from config (unless silenced)
|
|
671
|
-
if (this.
|
|
690
|
+
if (this.shouldShowStartupHeader()) {
|
|
691
|
+
const showDetails = this.shouldShowStartupDetails();
|
|
672
692
|
// Built on demand so the header follows theme changes. The logo's first line carries the version,
|
|
673
|
-
// its second line the first line of key hints.
|
|
693
|
+
// its second line the first line of key hints. Terminals that cannot render the logo get a
|
|
694
|
+
// "Pi vX" line instead, with the key hints below it.
|
|
695
|
+
const showLogo = supportsPiLogo();
|
|
674
696
|
const withLogo = (hints) => {
|
|
697
|
+
if (!showLogo)
|
|
698
|
+
return `${piWordmark()} ${theme.fg("dim", `v${this.version}`)}\n${hints}`;
|
|
675
699
|
const [top, bottom] = piLogoLines();
|
|
676
700
|
return `${top} ${theme.fg("dim", `v${this.version}`)}\n${bottom} ${hints}`;
|
|
677
701
|
};
|
|
@@ -705,9 +729,12 @@ export class InteractiveMode {
|
|
|
705
729
|
rawKeyHint("!", "bash"),
|
|
706
730
|
hint("app.tools.expand", "more"),
|
|
707
731
|
].join(theme.fg("muted", " · "));
|
|
708
|
-
const compactOnboarding = () => theme.fg("dim", `Press ${keyText("app.tools.expand")} to show full startup help and loaded resources.`);
|
|
732
|
+
const compactOnboarding = () => theme.fg("dim", `Press ${keyText("app.tools.expand")} to show full startup help${showDetails ? " and loaded resources" : ""}.`);
|
|
709
733
|
const onboarding = () => theme.fg("dim", `Pi can explain its own features and look up its docs. Ask it how to use or extend Pi.`);
|
|
710
|
-
|
|
734
|
+
const header = new BuiltInHeader(() => `${withLogo(compactInstructions())}\n${compactOnboarding()}\n\n${onboarding()}`, () => `${withLogo(expandedInstructions())}\n\n${onboarding()}`, this.getStartupExpansionState(), 1, 0);
|
|
735
|
+
if (showLogo)
|
|
736
|
+
header.onLogoClick = (column, row) => playPiLogo3d(this.renderer, column, row);
|
|
737
|
+
this.builtInHeader = header;
|
|
711
738
|
// Setup UI layout
|
|
712
739
|
this.headerContainer.addChild(new Spacer(1));
|
|
713
740
|
this.headerContainer.addChild(this.builtInHeader);
|
|
@@ -1008,6 +1035,14 @@ export class InteractiveMode {
|
|
|
1008
1035
|
getStartupExpansionState() {
|
|
1009
1036
|
return this.options.verbose || this.toolOutputExpanded;
|
|
1010
1037
|
}
|
|
1038
|
+
/** Startup header (logo, version, key hints). Hidden only by quietStartup: true. */
|
|
1039
|
+
shouldShowStartupHeader() {
|
|
1040
|
+
return this.options.verbose === true || this.settingsManager.getQuietStartup() !== true;
|
|
1041
|
+
}
|
|
1042
|
+
/** Startup details (model scope, loaded resources). Hidden by quietStartup: true or "header". */
|
|
1043
|
+
shouldShowStartupDetails() {
|
|
1044
|
+
return this.options.verbose === true || this.settingsManager.getQuietStartup() === false;
|
|
1045
|
+
}
|
|
1011
1046
|
/**
|
|
1012
1047
|
* Get a short path relative to the package root for display.
|
|
1013
1048
|
*/
|
|
@@ -1269,7 +1304,7 @@ export class InteractiveMode {
|
|
|
1269
1304
|
showLoadedResources(options) {
|
|
1270
1305
|
// Resource rendering is idempotent; chat clears no longer clear this separate container.
|
|
1271
1306
|
this.loadedResourcesContainer.clear();
|
|
1272
|
-
const showListing = options?.force || this.
|
|
1307
|
+
const showListing = options?.force || this.shouldShowStartupDetails();
|
|
1273
1308
|
const showDiagnostics = showListing || options?.showDiagnosticsWhenQuiet === true;
|
|
1274
1309
|
if (!showListing && !showDiagnostics) {
|
|
1275
1310
|
return;
|
|
@@ -1494,8 +1529,16 @@ export class InteractiveMode {
|
|
|
1494
1529
|
applyFullscreenScrollbarSetting() {
|
|
1495
1530
|
this.transcriptScrollView?.setScrollbar(this.settingsManager.getFullscreenScrollbar());
|
|
1496
1531
|
}
|
|
1532
|
+
/** Lets extension images use the PNG transcoder; tool results register it themselves. */
|
|
1533
|
+
ensurePngTranscoder() {
|
|
1534
|
+
ensurePngTranscoder(() => {
|
|
1535
|
+
this.ui.invalidate();
|
|
1536
|
+
this.ui.requestRender();
|
|
1537
|
+
});
|
|
1538
|
+
}
|
|
1497
1539
|
applyRuntimeSettings() {
|
|
1498
1540
|
setCapabilityOverrides(this.settingsManager.getTerminalCapabilityOverrides());
|
|
1541
|
+
this.ensurePngTranscoder();
|
|
1499
1542
|
configureHttpDispatcher(this.settingsManager.getHttpIdleTimeoutMs());
|
|
1500
1543
|
this.applyFullscreenScrollbarSetting();
|
|
1501
1544
|
if (this.renderer instanceof TuiAltScreen) {
|
|
@@ -1615,7 +1658,7 @@ export class InteractiveMode {
|
|
|
1615
1658
|
* whatever this returns, so they never reach into the tool registry themselves.
|
|
1616
1659
|
*/
|
|
1617
1660
|
getRegisteredToolDefinition(toolName) {
|
|
1618
|
-
return withBuiltInRenderers(toolName, this.session.getToolDefinition(toolName));
|
|
1661
|
+
return this.session.extensionRunner.resolveToolRenderers(toolName, () => withBuiltInRenderers(toolName, this.session.getToolDefinition(toolName)));
|
|
1619
1662
|
}
|
|
1620
1663
|
getMarkdownTransformers() {
|
|
1621
1664
|
return [this.mermaidMarkdownTransformer, ...this.session.extensionRunner.getMarkdownTransformers()];
|
|
@@ -4049,8 +4092,8 @@ export class InteractiveMode {
|
|
|
4049
4092
|
onEnableInstallTelemetryChange: (enabled) => {
|
|
4050
4093
|
this.settingsManager.setEnableInstallTelemetry(enabled);
|
|
4051
4094
|
},
|
|
4052
|
-
onQuietStartupChange: (
|
|
4053
|
-
this.settingsManager.setQuietStartup(
|
|
4095
|
+
onQuietStartupChange: (quiet) => {
|
|
4096
|
+
this.settingsManager.setQuietStartup(quiet);
|
|
4054
4097
|
},
|
|
4055
4098
|
onDefaultProjectTrustChange: (defaultProjectTrust) => {
|
|
4056
4099
|
this.settingsManager.setDefaultProjectTrust(defaultProjectTrust);
|
|
@@ -4198,7 +4241,6 @@ export class InteractiveMode {
|
|
|
4198
4241
|
this.updateEditorBorderColor();
|
|
4199
4242
|
this.showStatus(`Model: ${model.id}`);
|
|
4200
4243
|
void this.maybeWarnAboutAnthropicSubscriptionAuth(model);
|
|
4201
|
-
this.checkDaxnutsEasterEgg(model);
|
|
4202
4244
|
}
|
|
4203
4245
|
catch (error) {
|
|
4204
4246
|
this.showError(error instanceof Error ? error.message : String(error));
|
|
@@ -4331,7 +4373,6 @@ export class InteractiveMode {
|
|
|
4331
4373
|
done();
|
|
4332
4374
|
this.showStatus(persist ? `Default model: ${model.provider}/${model.id}` : `Model: ${model.id}`);
|
|
4333
4375
|
void this.maybeWarnAboutAnthropicSubscriptionAuth(model);
|
|
4334
|
-
this.checkDaxnutsEasterEgg(model);
|
|
4335
4376
|
}
|
|
4336
4377
|
catch (error) {
|
|
4337
4378
|
done();
|
|
@@ -4526,6 +4567,20 @@ export class InteractiveMode {
|
|
|
4526
4567
|
}
|
|
4527
4568
|
// Ask about summarization
|
|
4528
4569
|
done(); // Close selector first
|
|
4570
|
+
// Results are saved on their launch branch, so leaving it stops its running tasks.
|
|
4571
|
+
const stopped = this.session.tasksStoppedByTreeNavigation(entryId);
|
|
4572
|
+
if (stopped.length > 0) {
|
|
4573
|
+
const shown = stopped
|
|
4574
|
+
.slice(0, 5)
|
|
4575
|
+
.map((task) => ` ${cleanTaskText(firstCommandLine(task.command ?? task.title))}`);
|
|
4576
|
+
if (stopped.length > shown.length)
|
|
4577
|
+
shown.push(` …and ${stopped.length - shown.length} more`);
|
|
4578
|
+
const confirmed = await this.showExtensionConfirm(`Stop ${stopped.length} running task${stopped.length === 1 ? "" : "s"}?`, `They were started on the branch you are leaving and will be cancelled:\n${shown.join("\n")}`);
|
|
4579
|
+
if (!confirmed) {
|
|
4580
|
+
this.showTreeSelector(entryId);
|
|
4581
|
+
return;
|
|
4582
|
+
}
|
|
4583
|
+
}
|
|
4529
4584
|
// Loop until user makes a complete choice or cancels to tree
|
|
4530
4585
|
let wantsSummary = false;
|
|
4531
4586
|
let customInstructions;
|
|
@@ -4702,6 +4757,7 @@ export class InteractiveMode {
|
|
|
4702
4757
|
source: authStatus.label ?? authStatus.source,
|
|
4703
4758
|
}
|
|
4704
4759
|
: undefined;
|
|
4760
|
+
const subscription = provider.auth.oauth?.isSubscription === true;
|
|
4705
4761
|
if ((!authType || authType === "oauth") && provider.auth.oauth) {
|
|
4706
4762
|
options.push({
|
|
4707
4763
|
id: provider.id,
|
|
@@ -4709,6 +4765,7 @@ export class InteractiveMode {
|
|
|
4709
4765
|
authType: "oauth",
|
|
4710
4766
|
method: provider.auth.oauth,
|
|
4711
4767
|
status,
|
|
4768
|
+
subscription,
|
|
4712
4769
|
});
|
|
4713
4770
|
}
|
|
4714
4771
|
if ((!authType || authType === "api_key") && provider.auth.apiKey) {
|
|
@@ -4718,6 +4775,7 @@ export class InteractiveMode {
|
|
|
4718
4775
|
authType: "api_key",
|
|
4719
4776
|
method: provider.auth.apiKey,
|
|
4720
4777
|
status,
|
|
4778
|
+
subscription,
|
|
4721
4779
|
});
|
|
4722
4780
|
}
|
|
4723
4781
|
}
|
|
@@ -4725,12 +4783,16 @@ export class InteractiveMode {
|
|
|
4725
4783
|
}
|
|
4726
4784
|
async getLogoutProviderOptions() {
|
|
4727
4785
|
return (await this.session.modelRuntime.listCredentials({ signal: AbortSignal.timeout(15_000) }))
|
|
4728
|
-
.map(({ providerId, type }) =>
|
|
4729
|
-
|
|
4730
|
-
|
|
4731
|
-
|
|
4732
|
-
|
|
4733
|
-
|
|
4786
|
+
.map(({ providerId, type }) => {
|
|
4787
|
+
const provider = this.session.modelRuntime.getProvider(providerId);
|
|
4788
|
+
return {
|
|
4789
|
+
id: providerId,
|
|
4790
|
+
name: provider?.name ?? providerId,
|
|
4791
|
+
authType: type,
|
|
4792
|
+
status: { type, source: "stored credential" },
|
|
4793
|
+
subscription: provider?.auth.oauth?.isSubscription === true,
|
|
4794
|
+
};
|
|
4795
|
+
})
|
|
4734
4796
|
.sort((a, b) => a.name.localeCompare(b.name));
|
|
4735
4797
|
}
|
|
4736
4798
|
findLoginProviderOptions(providerRef) {
|
|
@@ -4760,18 +4822,25 @@ export class InteractiveMode {
|
|
|
4760
4822
|
}
|
|
4761
4823
|
this.showLoginProviderSelector(undefined, providerRef);
|
|
4762
4824
|
}
|
|
4763
|
-
|
|
4825
|
+
/** `onBack` reopens the selector the login was started from when the user cancels it. */
|
|
4826
|
+
async startProviderLogin(providerOption, onBack) {
|
|
4764
4827
|
if (providerOption.authType === "oauth") {
|
|
4765
|
-
await this.showLoginDialog(providerOption.id, providerOption.name);
|
|
4828
|
+
await this.showLoginDialog(providerOption.id, providerOption.name, onBack);
|
|
4766
4829
|
}
|
|
4767
4830
|
else if (providerOption.method?.login) {
|
|
4768
|
-
await this.showApiKeyLoginDialog(providerOption.id, providerOption.name);
|
|
4831
|
+
await this.showApiKeyLoginDialog(providerOption.id, providerOption.name, onBack);
|
|
4769
4832
|
}
|
|
4770
4833
|
else {
|
|
4771
|
-
this.showAmbientAuthDialog(providerOption);
|
|
4834
|
+
this.showAmbientAuthDialog(providerOption, onBack);
|
|
4772
4835
|
}
|
|
4773
4836
|
}
|
|
4774
4837
|
showLoginAuthTypeSelector(providerOptions) {
|
|
4838
|
+
// The top-level selector offers Radius directly, as its last option.
|
|
4839
|
+
const radiusOption = providerOptions
|
|
4840
|
+
? undefined
|
|
4841
|
+
: this.getLoginProviderOptions("oauth").find((provider) => provider.id === RADIUS_PROVIDER_ID);
|
|
4842
|
+
const radiusText = radiusOption ? `Sign in with ${radiusOption.name}` : undefined;
|
|
4843
|
+
const radiusLabel = radiusOption ? `${radiusText}${formatAuthSelectorProviderStatus(radiusOption)}` : undefined;
|
|
4775
4844
|
const oauthProvider = providerOptions?.find((provider) => provider.authType === "oauth");
|
|
4776
4845
|
const oauthLoginLabel = oauthProvider?.method && "loginLabel" in oauthProvider.method ? oauthProvider.method.loginLabel : undefined;
|
|
4777
4846
|
const subscriptionLabel = oauthLoginLabel ?? "Sign in with an account";
|
|
@@ -4786,6 +4855,8 @@ export class InteractiveMode {
|
|
|
4786
4855
|
if (availableAuthTypes.has("api_key")) {
|
|
4787
4856
|
options.push(apiKeyLabel);
|
|
4788
4857
|
}
|
|
4858
|
+
if (radiusLabel)
|
|
4859
|
+
options.push(radiusLabel);
|
|
4789
4860
|
if (options.length === 0) {
|
|
4790
4861
|
this.showStatus("No login methods available.");
|
|
4791
4862
|
return;
|
|
@@ -4801,29 +4872,37 @@ export class InteractiveMode {
|
|
|
4801
4872
|
? `Select authentication method for ${providerOptions[0].name}:`
|
|
4802
4873
|
: "Select authentication method:";
|
|
4803
4874
|
this.showSelector((done) => {
|
|
4804
|
-
const
|
|
4875
|
+
const onSelect = (option) => {
|
|
4805
4876
|
done();
|
|
4877
|
+
if (radiusOption && option === radiusLabel) {
|
|
4878
|
+
void this.startProviderLogin(radiusOption, () => this.showLoginAuthTypeSelector());
|
|
4879
|
+
return;
|
|
4880
|
+
}
|
|
4806
4881
|
const authType = option === subscriptionLabel ? "oauth" : "api_key";
|
|
4807
4882
|
if (providerOptions) {
|
|
4808
4883
|
const providerOption = providerOptions.find((provider) => provider.authType === authType);
|
|
4809
4884
|
if (providerOption) {
|
|
4810
|
-
void this.startProviderLogin(providerOption);
|
|
4885
|
+
void this.startProviderLogin(providerOption, () => this.showLoginAuthTypeSelector(providerOptions));
|
|
4811
4886
|
}
|
|
4812
4887
|
return;
|
|
4813
4888
|
}
|
|
4814
4889
|
this.showLoginProviderSelector(authType);
|
|
4815
|
-
}
|
|
4890
|
+
};
|
|
4891
|
+
const onCancel = () => {
|
|
4816
4892
|
done();
|
|
4817
4893
|
this.ui.requestRender();
|
|
4818
|
-
}
|
|
4819
|
-
|
|
4894
|
+
};
|
|
4895
|
+
const selector = radiusLabel && radiusText
|
|
4896
|
+
? createLoginMenuSelector(this.ui, title, options, { label: radiusLabel, text: radiusText }, onSelect, onCancel)
|
|
4897
|
+
: new ExtensionSelectorComponent(title, options, onSelect, onCancel);
|
|
4898
|
+
return { component: selector, focus: selector, dispose: () => selector.dispose() };
|
|
4820
4899
|
});
|
|
4821
4900
|
}
|
|
4822
4901
|
showLoginProviderSelector(authType, initialSearchInput) {
|
|
4823
4902
|
const providerOptions = this.getLoginProviderOptions(authType);
|
|
4824
4903
|
if (providerOptions.length === 0) {
|
|
4825
4904
|
const message = authType === "oauth"
|
|
4826
|
-
? "No
|
|
4905
|
+
? "No account providers available."
|
|
4827
4906
|
: authType === "api_key"
|
|
4828
4907
|
? "No API key providers available."
|
|
4829
4908
|
: "No login providers available.";
|
|
@@ -4837,7 +4916,7 @@ export class InteractiveMode {
|
|
|
4837
4916
|
if (!providerOption) {
|
|
4838
4917
|
return;
|
|
4839
4918
|
}
|
|
4840
|
-
await this.startProviderLogin(providerOption);
|
|
4919
|
+
await this.startProviderLogin(providerOption, () => this.showLoginProviderSelector(authType, initialSearchInput));
|
|
4841
4920
|
}, () => {
|
|
4842
4921
|
done();
|
|
4843
4922
|
if (authType) {
|
|
@@ -4949,7 +5028,6 @@ export class InteractiveMode {
|
|
|
4949
5028
|
if (selectedModel) {
|
|
4950
5029
|
this.showStatus(`${actionLabel}. Selected ${selectedModel.id}. Credentials saved to ${getAuthPath()}`);
|
|
4951
5030
|
void this.maybeWarnAboutAnthropicSubscriptionAuth(selectedModel);
|
|
4952
|
-
this.checkDaxnutsEasterEgg(selectedModel);
|
|
4953
5031
|
}
|
|
4954
5032
|
else {
|
|
4955
5033
|
this.showStatus(`${actionLabel}. Credentials saved to ${getAuthPath()}`);
|
|
@@ -4991,21 +5069,24 @@ export class InteractiveMode {
|
|
|
4991
5069
|
})
|
|
4992
5070
|
.finally(() => clearTimeout(timeout));
|
|
4993
5071
|
}
|
|
4994
|
-
showAmbientAuthDialog(providerOption) {
|
|
5072
|
+
showAmbientAuthDialog(providerOption, onBack) {
|
|
4995
5073
|
const restoreEditor = () => {
|
|
4996
5074
|
this.editorContainer.clear();
|
|
4997
5075
|
this.editorContainer.addChild(this.editor);
|
|
4998
5076
|
this.ui.setFocus(this.editor);
|
|
4999
5077
|
this.ui.requestRender();
|
|
5000
5078
|
};
|
|
5001
|
-
const dialog = new LoginDialogComponent(this.ui, providerOption.id, () =>
|
|
5079
|
+
const dialog = new LoginDialogComponent(this.ui, providerOption.id, () => {
|
|
5080
|
+
restoreEditor();
|
|
5081
|
+
onBack?.();
|
|
5082
|
+
}, providerOption.name, `${providerOption.name} setup`);
|
|
5002
5083
|
dialog.showInfo(`${providerOption.method?.name ?? "Authentication"} is configured outside ${APP_NAME}.`, [], true);
|
|
5003
5084
|
this.editorContainer.clear();
|
|
5004
5085
|
this.editorContainer.addChild(dialog);
|
|
5005
5086
|
this.ui.setFocus(dialog);
|
|
5006
5087
|
this.ui.requestRender();
|
|
5007
5088
|
}
|
|
5008
|
-
async showApiKeyLoginDialog(providerId, providerName) {
|
|
5089
|
+
async showApiKeyLoginDialog(providerId, providerName, onBack) {
|
|
5009
5090
|
const previousModel = this.session.model;
|
|
5010
5091
|
const dialog = new LoginDialogComponent(this.ui, providerId, (_success, _message) => {
|
|
5011
5092
|
// Completion handled below
|
|
@@ -5038,12 +5119,15 @@ export class InteractiveMode {
|
|
|
5038
5119
|
if (error instanceof CredentialSynchronizationError) {
|
|
5039
5120
|
this.showError(`Saved API key for ${providerName}, but local model state could not be synchronized: ${errorMsg}`);
|
|
5040
5121
|
}
|
|
5041
|
-
else if (errorMsg
|
|
5122
|
+
else if (errorMsg === "Login cancelled") {
|
|
5123
|
+
onBack?.();
|
|
5124
|
+
}
|
|
5125
|
+
else {
|
|
5042
5126
|
this.showError(`Failed to save API key for ${providerName}: ${errorMsg}`);
|
|
5043
5127
|
}
|
|
5044
5128
|
}
|
|
5045
5129
|
}
|
|
5046
|
-
showAuthSelect(dialog, prompt) {
|
|
5130
|
+
showAuthSelect(dialog, prompt, providerId) {
|
|
5047
5131
|
return new Promise((resolve, reject) => {
|
|
5048
5132
|
const restoreDialog = () => {
|
|
5049
5133
|
this.editorContainer.clear();
|
|
@@ -5062,17 +5146,17 @@ export class InteractiveMode {
|
|
|
5062
5146
|
}, () => {
|
|
5063
5147
|
restoreDialog();
|
|
5064
5148
|
reject(new Error("Login cancelled"));
|
|
5065
|
-
});
|
|
5149
|
+
}, { description: providerId === RADIUS_PROVIDER_ID ? RADIUS_LOGIN_INTRO : undefined });
|
|
5066
5150
|
this.editorContainer.clear();
|
|
5067
5151
|
this.editorContainer.addChild(selector);
|
|
5068
5152
|
this.ui.setFocus(selector);
|
|
5069
5153
|
this.ui.requestRender();
|
|
5070
5154
|
});
|
|
5071
5155
|
}
|
|
5072
|
-
async showAuthPrompt(dialog, prompt) {
|
|
5156
|
+
async showAuthPrompt(dialog, prompt, providerId) {
|
|
5073
5157
|
let response;
|
|
5074
5158
|
if (prompt.type === "select") {
|
|
5075
|
-
response = this.showAuthSelect(dialog, prompt);
|
|
5159
|
+
response = this.showAuthSelect(dialog, prompt, providerId);
|
|
5076
5160
|
}
|
|
5077
5161
|
else if (prompt.type === "manual_code") {
|
|
5078
5162
|
response = dialog.showManualInput(prompt.message);
|
|
@@ -5116,11 +5200,11 @@ export class InteractiveMode {
|
|
|
5116
5200
|
async loginProvider(dialog, providerId, method) {
|
|
5117
5201
|
await this.session.modelRuntime.login(providerId, method, {
|
|
5118
5202
|
signal: dialog.signal,
|
|
5119
|
-
prompt: (prompt) => this.showAuthPrompt(dialog, prompt),
|
|
5203
|
+
prompt: (prompt) => this.showAuthPrompt(dialog, prompt, providerId),
|
|
5120
5204
|
notify: (event) => this.notifyAuthDialog(dialog, event),
|
|
5121
5205
|
}, { getDeviceId: () => this.settingsManager.getOrCreateDeviceId() });
|
|
5122
5206
|
}
|
|
5123
|
-
async showLoginDialog(providerId, providerName) {
|
|
5207
|
+
async showLoginDialog(providerId, providerName, onBack) {
|
|
5124
5208
|
const previousModel = this.session.model;
|
|
5125
5209
|
const dialog = new LoginDialogComponent(this.ui, providerId, (_success, _message) => { }, providerName);
|
|
5126
5210
|
this.editorContainer.clear();
|
|
@@ -5137,6 +5221,8 @@ export class InteractiveMode {
|
|
|
5137
5221
|
await this.loginProvider(dialog, providerId, "oauth");
|
|
5138
5222
|
restoreEditor();
|
|
5139
5223
|
await this.completeProviderAuthentication(providerId, providerName, "oauth", previousModel);
|
|
5224
|
+
if (providerId === RADIUS_PROVIDER_ID)
|
|
5225
|
+
this.offerRadiusMcpServer(providerId, providerName);
|
|
5140
5226
|
}
|
|
5141
5227
|
catch (error) {
|
|
5142
5228
|
restoreEditor();
|
|
@@ -5144,11 +5230,58 @@ export class InteractiveMode {
|
|
|
5144
5230
|
if (error instanceof CredentialSynchronizationError) {
|
|
5145
5231
|
this.showError(`Logged in to ${providerName}, but local model state could not be synchronized: ${errorMsg}`);
|
|
5146
5232
|
}
|
|
5147
|
-
else if (errorMsg
|
|
5233
|
+
else if (errorMsg === "Login cancelled") {
|
|
5234
|
+
onBack?.();
|
|
5235
|
+
}
|
|
5236
|
+
else {
|
|
5148
5237
|
this.showError(`Failed to login to ${providerName}: ${errorMsg}`);
|
|
5149
5238
|
}
|
|
5150
5239
|
}
|
|
5151
5240
|
}
|
|
5241
|
+
/**
|
|
5242
|
+
* Offer to point the Radius MCP server in the global mcp.json at the Radius login, adding the server
|
|
5243
|
+
* when missing. Nothing is asked when a global server already uses this login.
|
|
5244
|
+
*/
|
|
5245
|
+
offerRadiusMcpServer(providerId, providerName) {
|
|
5246
|
+
const mcpPath = path.join(getAgentDir(), "mcp.json");
|
|
5247
|
+
const normalizeUrl = (url) => url.replace(/\/+$/u, "");
|
|
5248
|
+
const { servers } = loadMcpConfig({
|
|
5249
|
+
agentDir: getAgentDir(),
|
|
5250
|
+
cwd: this.sessionManager.getCwd(),
|
|
5251
|
+
projectTrusted: false,
|
|
5252
|
+
});
|
|
5253
|
+
const existing = servers.find((server) => "url" in server.config && normalizeUrl(server.config.url) === normalizeUrl(RADIUS_MCP_URL));
|
|
5254
|
+
if (existing && "url" in existing.config && existing.config.auth?.provider === providerId)
|
|
5255
|
+
return;
|
|
5256
|
+
let name = existing?.name ?? "radius";
|
|
5257
|
+
if (!existing && servers.some((server) => server.name === name))
|
|
5258
|
+
name = "radius-mcp";
|
|
5259
|
+
const config = existing && "url" in existing.config
|
|
5260
|
+
? { ...existing.config, auth: { provider: providerId } }
|
|
5261
|
+
: { url: RADIUS_MCP_URL, auth: { provider: providerId } };
|
|
5262
|
+
// `auth` replaces the MCP OAuth sign-in.
|
|
5263
|
+
delete config.oauth;
|
|
5264
|
+
this.showSelector((done) => {
|
|
5265
|
+
const selector = new ExtensionSelectorComponent(`Configure ${providerName} MCP in ${mcpPath}?`, ["Yes", "No"], (option) => {
|
|
5266
|
+
done();
|
|
5267
|
+
if (option !== "Yes")
|
|
5268
|
+
return;
|
|
5269
|
+
try {
|
|
5270
|
+
addMcpServerConfig(mcpPath, name, config);
|
|
5271
|
+
}
|
|
5272
|
+
catch (error) {
|
|
5273
|
+
this.showError(`Could not update ${mcpPath}: ${error instanceof Error ? error.message : String(error)}`);
|
|
5274
|
+
return;
|
|
5275
|
+
}
|
|
5276
|
+
// The MCP extension reads mcp.json when the session starts.
|
|
5277
|
+
void this.handleReloadCommand();
|
|
5278
|
+
}, () => {
|
|
5279
|
+
done();
|
|
5280
|
+
this.ui.requestRender();
|
|
5281
|
+
});
|
|
5282
|
+
return { component: selector, focus: selector };
|
|
5283
|
+
});
|
|
5284
|
+
}
|
|
5152
5285
|
// =========================================================================
|
|
5153
5286
|
// Command handlers
|
|
5154
5287
|
// =========================================================================
|
|
@@ -5643,6 +5776,8 @@ export class InteractiveMode {
|
|
|
5643
5776
|
this.ui.requestRender();
|
|
5644
5777
|
}
|
|
5645
5778
|
handleArminSaysHi() {
|
|
5779
|
+
if (playArmin3d(this.renderer))
|
|
5780
|
+
return;
|
|
5646
5781
|
this.chatContainer.addChild(new Spacer(1));
|
|
5647
5782
|
this.chatContainer.addChild(new ArminComponent(this.ui));
|
|
5648
5783
|
this.ui.requestRender();
|
|
@@ -5652,16 +5787,6 @@ export class InteractiveMode {
|
|
|
5652
5787
|
this.chatContainer.addChild(new EarendilAnnouncementComponent());
|
|
5653
5788
|
this.ui.requestRender();
|
|
5654
5789
|
}
|
|
5655
|
-
handleDaxnuts() {
|
|
5656
|
-
this.chatContainer.addChild(new Spacer(1));
|
|
5657
|
-
this.chatContainer.addChild(new DaxnutsComponent(this.ui));
|
|
5658
|
-
this.ui.requestRender();
|
|
5659
|
-
}
|
|
5660
|
-
checkDaxnutsEasterEgg(model) {
|
|
5661
|
-
if (model.provider === "opencode" && model.id.toLowerCase().includes("kimi-k2.5")) {
|
|
5662
|
-
this.handleDaxnuts();
|
|
5663
|
-
}
|
|
5664
|
-
}
|
|
5665
5790
|
async handleBashCommand(command, excludeFromContext = false) {
|
|
5666
5791
|
const extensionRunner = this.session.extensionRunner;
|
|
5667
5792
|
// Emit user_bash event to let extensions intercept
|