@astralyn/pi 0.99.0 → 1.0.0
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 -3
- package/dist/bundle/chunks/anthropic-messages-CG2BSDQS.js +6 -0
- package/dist/bundle/chunks/anthropic.js +2 -2
- package/dist/bundle/chunks/{azure-openai-responses-RPBERDXD.js → azure-openai-responses-PBA4QKCM.js} +1 -1
- package/dist/bundle/chunks/bedrock-converse-stream.js +2 -2
- package/dist/bundle/chunks/{chunk-ABVRAYXT.js → chunk-6UFFVA7M.js} +2 -2
- package/dist/bundle/chunks/chunk-GIG5IHES.js +2 -0
- package/dist/bundle/chunks/{chunk-VW2P3X6P.js → chunk-HESRDUKO.js} +414 -666
- package/dist/bundle/chunks/{chunk-A576H74Y.js → chunk-PFZKRUMO.js} +1 -1
- package/dist/bundle/chunks/chunk-SGLYRVQL.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-Z2RKSI3O.js +2 -0
- package/dist/bundle/chunks/{cloudflare-workers-ai-system-one-ZYSAFXXL.js → cloudflare-workers-ai-system-one-YB7XPPP4.js} +1 -1
- package/dist/bundle/chunks/codemode-worker.js +67 -8
- package/dist/bundle/chunks/github-copilot.js +1 -1
- package/dist/bundle/chunks/{google-generative-ai-SDNQVVXA.js → google-generative-ai-V5ZM5MCL.js} +1 -1
- package/dist/bundle/chunks/{google-vertex-LZXOLBIO.js → google-vertex-22THOFP5.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-WHSCJJWP.js} +1 -1
- package/dist/bundle/chunks/openai-chatgpt.js +1 -1
- package/dist/bundle/chunks/{openai-codex-responses-HZ4VUDXD.js → openai-codex-responses-N7GDPBPP.js} +1 -1
- package/dist/bundle/chunks/openai-codex.js +1 -1
- package/dist/bundle/chunks/{openai-completions-SKDGF6OE.js → openai-completions-RGGQK5UW.js} +1 -1
- package/dist/bundle/chunks/{openai-responses-FPML4SSG.js → openai-responses-3ZLD5JYI.js} +1 -1
- 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-4RQ2L6W4.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.js +1 -1
- 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 +16 -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 +64 -11
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/extensions/index.d.ts +1 -1
- 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 +13 -1
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/types.d.ts +6 -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 +34 -7
- package/dist/core/mcp-servers.d.ts.map +1 -1
- package/dist/core/mcp-servers.js +52 -11
- package/dist/core/mcp-servers.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-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/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/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 +20 -5
- package/dist/extensions/mcp/cli.js.map +1 -1
- package/dist/extensions/mcp/config.d.ts +4 -2
- package/dist/extensions/mcp/config.d.ts.map +1 -1
- package/dist/extensions/mcp/config.js +14 -2
- package/dist/extensions/mcp/config.js.map +1 -1
- package/dist/extensions/mcp/index.d.ts +32 -8
- package/dist/extensions/mcp/index.d.ts.map +1 -1
- package/dist/extensions/mcp/index.js +235 -61
- package/dist/extensions/mcp/index.js.map +1 -1
- package/dist/extensions/mcp/oauth.d.ts +10 -7
- package/dist/extensions/mcp/oauth.d.ts.map +1 -1
- package/dist/extensions/mcp/oauth.js +56 -31
- 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 +16 -9
- package/dist/extensions/mcp/runtime.js.map +1 -1
- package/dist/extensions/mcp/tools.d.ts +5 -4
- package/dist/extensions/mcp/tools.d.ts.map +1 -1
- package/dist/extensions/mcp/tools.js +33 -15
- 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 +4 -2
- 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 +2 -4
- 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/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-animation.d.ts +68 -0
- package/dist/modes/interactive/components/pi-logo-animation.d.ts.map +1 -0
- package/dist/modes/interactive/components/pi-logo-animation.js +1076 -0
- package/dist/modes/interactive/components/pi-logo-animation.js.map +1 -0
- package/dist/modes/interactive/components/pi-logo-animation.lazy.d.ts +7 -0
- package/dist/modes/interactive/components/pi-logo-animation.lazy.d.ts.map +1 -0
- package/dist/modes/interactive/components/pi-logo-animation.lazy.js +12 -0
- package/dist/modes/interactive/components/pi-logo-animation.lazy.js.map +1 -0
- 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 +10 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +167 -40
- 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/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 +7 -9
- package/docs/keybindings.md +13 -6
- package/docs/mcp.md +142 -82
- package/docs/models.md +21 -0
- 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 +69 -58
- package/package.json +11 -10
- package/dist/bundle/chunks/anthropic-messages-KIXY7EDT.js +0 -6
- package/dist/bundle/chunks/chunk-CLLDCO64.js +0 -2
- package/dist/bundle/chunks/chunk-UUSTLCVC.js +0 -2
- package/dist/bundle/chunks/chunk-VWCWZD6E.js +0 -2
- 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/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
|
*/
|
|
@@ -424,6 +428,7 @@ export declare class InteractiveMode {
|
|
|
424
428
|
private getLogoutProviderOptions;
|
|
425
429
|
private findLoginProviderOptions;
|
|
426
430
|
private handleLoginCommand;
|
|
431
|
+
/** `onBack` reopens the selector the login was started from when the user cancels it. */
|
|
427
432
|
private startProviderLogin;
|
|
428
433
|
private showLoginAuthTypeSelector;
|
|
429
434
|
private showLoginProviderSelector;
|
|
@@ -436,6 +441,11 @@ export declare class InteractiveMode {
|
|
|
436
441
|
private notifyAuthDialog;
|
|
437
442
|
private loginProvider;
|
|
438
443
|
private showLoginDialog;
|
|
444
|
+
/**
|
|
445
|
+
* Offer to point the Radius MCP server in the global mcp.json at the Radius login, adding the server
|
|
446
|
+
* when missing. Nothing is asked when a global server already uses this login.
|
|
447
|
+
*/
|
|
448
|
+
private offerRadiusMcpServer;
|
|
439
449
|
private handleReloadCommand;
|
|
440
450
|
private handleExportCommand;
|
|
441
451
|
private getPathCommandArgument;
|
|
@@ -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,6 +35,7 @@ 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";
|
|
@@ -64,8 +67,10 @@ import { formatKeyText, keyDisplayText, keyHint, keyText, rawKeyHint } from "./c
|
|
|
64
67
|
import { LoginDialogComponent } from "./components/login-dialog.js";
|
|
65
68
|
import { createMermaidMarkdownTransformer } from "./components/mermaid.js";
|
|
66
69
|
import { ModelSelectorComponent } from "./components/model-selector.js";
|
|
67
|
-
import { formatAuthSelectorProviderType, OAuthSelectorComponent, } from "./components/oauth-selector.js";
|
|
68
|
-
import { piLogoLines } from "./components/pi-logo.js";
|
|
70
|
+
import { formatAuthSelectorProviderStatus, formatAuthSelectorProviderType, OAuthSelectorComponent, } from "./components/oauth-selector.js";
|
|
71
|
+
import { piLogoLines, piWordmark, supportsPiLogo } from "./components/pi-logo.js";
|
|
72
|
+
import { playPiLogoAnimation } from "./components/pi-logo-animation.lazy.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}` : "";
|
|
@@ -668,10 +686,15 @@ export class InteractiveMode {
|
|
|
668
686
|
// reported its colors. This ends at the terminal's DA1 reply, or after 100 ms if it answers nothing.
|
|
669
687
|
await this.themeController.waitForTerminalColors();
|
|
670
688
|
// Add header with keybindings from config (unless silenced)
|
|
671
|
-
if (this.
|
|
689
|
+
if (this.shouldShowStartupHeader()) {
|
|
690
|
+
const showDetails = this.shouldShowStartupDetails();
|
|
672
691
|
// 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.
|
|
692
|
+
// its second line the first line of key hints. Terminals that cannot render the logo get a
|
|
693
|
+
// "Pi vX" line instead, with the key hints below it.
|
|
694
|
+
const showLogo = supportsPiLogo();
|
|
674
695
|
const withLogo = (hints) => {
|
|
696
|
+
if (!showLogo)
|
|
697
|
+
return `${piWordmark()} ${theme.fg("dim", `v${this.version}`)}\n${hints}`;
|
|
675
698
|
const [top, bottom] = piLogoLines();
|
|
676
699
|
return `${top} ${theme.fg("dim", `v${this.version}`)}\n${bottom} ${hints}`;
|
|
677
700
|
};
|
|
@@ -705,9 +728,12 @@ export class InteractiveMode {
|
|
|
705
728
|
rawKeyHint("!", "bash"),
|
|
706
729
|
hint("app.tools.expand", "more"),
|
|
707
730
|
].join(theme.fg("muted", " · "));
|
|
708
|
-
const compactOnboarding = () => theme.fg("dim", `Press ${keyText("app.tools.expand")} to show full startup help and loaded resources.`);
|
|
731
|
+
const compactOnboarding = () => theme.fg("dim", `Press ${keyText("app.tools.expand")} to show full startup help${showDetails ? " and loaded resources" : ""}.`);
|
|
709
732
|
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
|
-
|
|
733
|
+
const header = new BuiltInHeader(() => `${withLogo(compactInstructions())}\n${compactOnboarding()}\n\n${onboarding()}`, () => `${withLogo(expandedInstructions())}\n\n${onboarding()}`, this.getStartupExpansionState(), 1, 0);
|
|
734
|
+
if (showLogo)
|
|
735
|
+
header.onLogoClick = (column, row) => playPiLogoAnimation(this.renderer, column, row);
|
|
736
|
+
this.builtInHeader = header;
|
|
711
737
|
// Setup UI layout
|
|
712
738
|
this.headerContainer.addChild(new Spacer(1));
|
|
713
739
|
this.headerContainer.addChild(this.builtInHeader);
|
|
@@ -1008,6 +1034,14 @@ export class InteractiveMode {
|
|
|
1008
1034
|
getStartupExpansionState() {
|
|
1009
1035
|
return this.options.verbose || this.toolOutputExpanded;
|
|
1010
1036
|
}
|
|
1037
|
+
/** Startup header (logo, version, key hints). Hidden only by quietStartup: true. */
|
|
1038
|
+
shouldShowStartupHeader() {
|
|
1039
|
+
return this.options.verbose === true || this.settingsManager.getQuietStartup() !== true;
|
|
1040
|
+
}
|
|
1041
|
+
/** Startup details (model scope, loaded resources). Hidden by quietStartup: true or "header". */
|
|
1042
|
+
shouldShowStartupDetails() {
|
|
1043
|
+
return this.options.verbose === true || this.settingsManager.getQuietStartup() === false;
|
|
1044
|
+
}
|
|
1011
1045
|
/**
|
|
1012
1046
|
* Get a short path relative to the package root for display.
|
|
1013
1047
|
*/
|
|
@@ -1269,7 +1303,7 @@ export class InteractiveMode {
|
|
|
1269
1303
|
showLoadedResources(options) {
|
|
1270
1304
|
// Resource rendering is idempotent; chat clears no longer clear this separate container.
|
|
1271
1305
|
this.loadedResourcesContainer.clear();
|
|
1272
|
-
const showListing = options?.force || this.
|
|
1306
|
+
const showListing = options?.force || this.shouldShowStartupDetails();
|
|
1273
1307
|
const showDiagnostics = showListing || options?.showDiagnosticsWhenQuiet === true;
|
|
1274
1308
|
if (!showListing && !showDiagnostics) {
|
|
1275
1309
|
return;
|
|
@@ -4049,8 +4083,8 @@ export class InteractiveMode {
|
|
|
4049
4083
|
onEnableInstallTelemetryChange: (enabled) => {
|
|
4050
4084
|
this.settingsManager.setEnableInstallTelemetry(enabled);
|
|
4051
4085
|
},
|
|
4052
|
-
onQuietStartupChange: (
|
|
4053
|
-
this.settingsManager.setQuietStartup(
|
|
4086
|
+
onQuietStartupChange: (quiet) => {
|
|
4087
|
+
this.settingsManager.setQuietStartup(quiet);
|
|
4054
4088
|
},
|
|
4055
4089
|
onDefaultProjectTrustChange: (defaultProjectTrust) => {
|
|
4056
4090
|
this.settingsManager.setDefaultProjectTrust(defaultProjectTrust);
|
|
@@ -4526,6 +4560,20 @@ export class InteractiveMode {
|
|
|
4526
4560
|
}
|
|
4527
4561
|
// Ask about summarization
|
|
4528
4562
|
done(); // Close selector first
|
|
4563
|
+
// Results are saved on their launch branch, so leaving it stops its running tasks.
|
|
4564
|
+
const stopped = this.session.tasksStoppedByTreeNavigation(entryId);
|
|
4565
|
+
if (stopped.length > 0) {
|
|
4566
|
+
const shown = stopped
|
|
4567
|
+
.slice(0, 5)
|
|
4568
|
+
.map((task) => ` ${cleanTaskText(firstCommandLine(task.command ?? task.title))}`);
|
|
4569
|
+
if (stopped.length > shown.length)
|
|
4570
|
+
shown.push(` …and ${stopped.length - shown.length} more`);
|
|
4571
|
+
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")}`);
|
|
4572
|
+
if (!confirmed) {
|
|
4573
|
+
this.showTreeSelector(entryId);
|
|
4574
|
+
return;
|
|
4575
|
+
}
|
|
4576
|
+
}
|
|
4529
4577
|
// Loop until user makes a complete choice or cancels to tree
|
|
4530
4578
|
let wantsSummary = false;
|
|
4531
4579
|
let customInstructions;
|
|
@@ -4702,6 +4750,7 @@ export class InteractiveMode {
|
|
|
4702
4750
|
source: authStatus.label ?? authStatus.source,
|
|
4703
4751
|
}
|
|
4704
4752
|
: undefined;
|
|
4753
|
+
const subscription = provider.auth.oauth?.isSubscription === true;
|
|
4705
4754
|
if ((!authType || authType === "oauth") && provider.auth.oauth) {
|
|
4706
4755
|
options.push({
|
|
4707
4756
|
id: provider.id,
|
|
@@ -4709,6 +4758,7 @@ export class InteractiveMode {
|
|
|
4709
4758
|
authType: "oauth",
|
|
4710
4759
|
method: provider.auth.oauth,
|
|
4711
4760
|
status,
|
|
4761
|
+
subscription,
|
|
4712
4762
|
});
|
|
4713
4763
|
}
|
|
4714
4764
|
if ((!authType || authType === "api_key") && provider.auth.apiKey) {
|
|
@@ -4718,6 +4768,7 @@ export class InteractiveMode {
|
|
|
4718
4768
|
authType: "api_key",
|
|
4719
4769
|
method: provider.auth.apiKey,
|
|
4720
4770
|
status,
|
|
4771
|
+
subscription,
|
|
4721
4772
|
});
|
|
4722
4773
|
}
|
|
4723
4774
|
}
|
|
@@ -4725,12 +4776,16 @@ export class InteractiveMode {
|
|
|
4725
4776
|
}
|
|
4726
4777
|
async getLogoutProviderOptions() {
|
|
4727
4778
|
return (await this.session.modelRuntime.listCredentials({ signal: AbortSignal.timeout(15_000) }))
|
|
4728
|
-
.map(({ providerId, type }) =>
|
|
4729
|
-
|
|
4730
|
-
|
|
4731
|
-
|
|
4732
|
-
|
|
4733
|
-
|
|
4779
|
+
.map(({ providerId, type }) => {
|
|
4780
|
+
const provider = this.session.modelRuntime.getProvider(providerId);
|
|
4781
|
+
return {
|
|
4782
|
+
id: providerId,
|
|
4783
|
+
name: provider?.name ?? providerId,
|
|
4784
|
+
authType: type,
|
|
4785
|
+
status: { type, source: "stored credential" },
|
|
4786
|
+
subscription: provider?.auth.oauth?.isSubscription === true,
|
|
4787
|
+
};
|
|
4788
|
+
})
|
|
4734
4789
|
.sort((a, b) => a.name.localeCompare(b.name));
|
|
4735
4790
|
}
|
|
4736
4791
|
findLoginProviderOptions(providerRef) {
|
|
@@ -4760,18 +4815,25 @@ export class InteractiveMode {
|
|
|
4760
4815
|
}
|
|
4761
4816
|
this.showLoginProviderSelector(undefined, providerRef);
|
|
4762
4817
|
}
|
|
4763
|
-
|
|
4818
|
+
/** `onBack` reopens the selector the login was started from when the user cancels it. */
|
|
4819
|
+
async startProviderLogin(providerOption, onBack) {
|
|
4764
4820
|
if (providerOption.authType === "oauth") {
|
|
4765
|
-
await this.showLoginDialog(providerOption.id, providerOption.name);
|
|
4821
|
+
await this.showLoginDialog(providerOption.id, providerOption.name, onBack);
|
|
4766
4822
|
}
|
|
4767
4823
|
else if (providerOption.method?.login) {
|
|
4768
|
-
await this.showApiKeyLoginDialog(providerOption.id, providerOption.name);
|
|
4824
|
+
await this.showApiKeyLoginDialog(providerOption.id, providerOption.name, onBack);
|
|
4769
4825
|
}
|
|
4770
4826
|
else {
|
|
4771
|
-
this.showAmbientAuthDialog(providerOption);
|
|
4827
|
+
this.showAmbientAuthDialog(providerOption, onBack);
|
|
4772
4828
|
}
|
|
4773
4829
|
}
|
|
4774
4830
|
showLoginAuthTypeSelector(providerOptions) {
|
|
4831
|
+
// The top-level selector offers Radius directly, as its last option.
|
|
4832
|
+
const radiusOption = providerOptions
|
|
4833
|
+
? undefined
|
|
4834
|
+
: this.getLoginProviderOptions("oauth").find((provider) => provider.id === RADIUS_PROVIDER_ID);
|
|
4835
|
+
const radiusText = radiusOption ? `Sign in with ${radiusOption.name}` : undefined;
|
|
4836
|
+
const radiusLabel = radiusOption ? `${radiusText}${formatAuthSelectorProviderStatus(radiusOption)}` : undefined;
|
|
4775
4837
|
const oauthProvider = providerOptions?.find((provider) => provider.authType === "oauth");
|
|
4776
4838
|
const oauthLoginLabel = oauthProvider?.method && "loginLabel" in oauthProvider.method ? oauthProvider.method.loginLabel : undefined;
|
|
4777
4839
|
const subscriptionLabel = oauthLoginLabel ?? "Sign in with an account";
|
|
@@ -4786,6 +4848,8 @@ export class InteractiveMode {
|
|
|
4786
4848
|
if (availableAuthTypes.has("api_key")) {
|
|
4787
4849
|
options.push(apiKeyLabel);
|
|
4788
4850
|
}
|
|
4851
|
+
if (radiusLabel)
|
|
4852
|
+
options.push(radiusLabel);
|
|
4789
4853
|
if (options.length === 0) {
|
|
4790
4854
|
this.showStatus("No login methods available.");
|
|
4791
4855
|
return;
|
|
@@ -4801,29 +4865,37 @@ export class InteractiveMode {
|
|
|
4801
4865
|
? `Select authentication method for ${providerOptions[0].name}:`
|
|
4802
4866
|
: "Select authentication method:";
|
|
4803
4867
|
this.showSelector((done) => {
|
|
4804
|
-
const
|
|
4868
|
+
const onSelect = (option) => {
|
|
4805
4869
|
done();
|
|
4870
|
+
if (radiusOption && option === radiusLabel) {
|
|
4871
|
+
void this.startProviderLogin(radiusOption, () => this.showLoginAuthTypeSelector());
|
|
4872
|
+
return;
|
|
4873
|
+
}
|
|
4806
4874
|
const authType = option === subscriptionLabel ? "oauth" : "api_key";
|
|
4807
4875
|
if (providerOptions) {
|
|
4808
4876
|
const providerOption = providerOptions.find((provider) => provider.authType === authType);
|
|
4809
4877
|
if (providerOption) {
|
|
4810
|
-
void this.startProviderLogin(providerOption);
|
|
4878
|
+
void this.startProviderLogin(providerOption, () => this.showLoginAuthTypeSelector(providerOptions));
|
|
4811
4879
|
}
|
|
4812
4880
|
return;
|
|
4813
4881
|
}
|
|
4814
4882
|
this.showLoginProviderSelector(authType);
|
|
4815
|
-
}
|
|
4883
|
+
};
|
|
4884
|
+
const onCancel = () => {
|
|
4816
4885
|
done();
|
|
4817
4886
|
this.ui.requestRender();
|
|
4818
|
-
}
|
|
4819
|
-
|
|
4887
|
+
};
|
|
4888
|
+
const selector = radiusLabel && radiusText
|
|
4889
|
+
? createLoginMenuSelector(this.ui, title, options, { label: radiusLabel, text: radiusText }, onSelect, onCancel)
|
|
4890
|
+
: new ExtensionSelectorComponent(title, options, onSelect, onCancel);
|
|
4891
|
+
return { component: selector, focus: selector, dispose: () => selector.dispose() };
|
|
4820
4892
|
});
|
|
4821
4893
|
}
|
|
4822
4894
|
showLoginProviderSelector(authType, initialSearchInput) {
|
|
4823
4895
|
const providerOptions = this.getLoginProviderOptions(authType);
|
|
4824
4896
|
if (providerOptions.length === 0) {
|
|
4825
4897
|
const message = authType === "oauth"
|
|
4826
|
-
? "No
|
|
4898
|
+
? "No account providers available."
|
|
4827
4899
|
: authType === "api_key"
|
|
4828
4900
|
? "No API key providers available."
|
|
4829
4901
|
: "No login providers available.";
|
|
@@ -4837,7 +4909,7 @@ export class InteractiveMode {
|
|
|
4837
4909
|
if (!providerOption) {
|
|
4838
4910
|
return;
|
|
4839
4911
|
}
|
|
4840
|
-
await this.startProviderLogin(providerOption);
|
|
4912
|
+
await this.startProviderLogin(providerOption, () => this.showLoginProviderSelector(authType, initialSearchInput));
|
|
4841
4913
|
}, () => {
|
|
4842
4914
|
done();
|
|
4843
4915
|
if (authType) {
|
|
@@ -4991,21 +5063,24 @@ export class InteractiveMode {
|
|
|
4991
5063
|
})
|
|
4992
5064
|
.finally(() => clearTimeout(timeout));
|
|
4993
5065
|
}
|
|
4994
|
-
showAmbientAuthDialog(providerOption) {
|
|
5066
|
+
showAmbientAuthDialog(providerOption, onBack) {
|
|
4995
5067
|
const restoreEditor = () => {
|
|
4996
5068
|
this.editorContainer.clear();
|
|
4997
5069
|
this.editorContainer.addChild(this.editor);
|
|
4998
5070
|
this.ui.setFocus(this.editor);
|
|
4999
5071
|
this.ui.requestRender();
|
|
5000
5072
|
};
|
|
5001
|
-
const dialog = new LoginDialogComponent(this.ui, providerOption.id, () =>
|
|
5073
|
+
const dialog = new LoginDialogComponent(this.ui, providerOption.id, () => {
|
|
5074
|
+
restoreEditor();
|
|
5075
|
+
onBack?.();
|
|
5076
|
+
}, providerOption.name, `${providerOption.name} setup`);
|
|
5002
5077
|
dialog.showInfo(`${providerOption.method?.name ?? "Authentication"} is configured outside ${APP_NAME}.`, [], true);
|
|
5003
5078
|
this.editorContainer.clear();
|
|
5004
5079
|
this.editorContainer.addChild(dialog);
|
|
5005
5080
|
this.ui.setFocus(dialog);
|
|
5006
5081
|
this.ui.requestRender();
|
|
5007
5082
|
}
|
|
5008
|
-
async showApiKeyLoginDialog(providerId, providerName) {
|
|
5083
|
+
async showApiKeyLoginDialog(providerId, providerName, onBack) {
|
|
5009
5084
|
const previousModel = this.session.model;
|
|
5010
5085
|
const dialog = new LoginDialogComponent(this.ui, providerId, (_success, _message) => {
|
|
5011
5086
|
// Completion handled below
|
|
@@ -5038,12 +5113,15 @@ export class InteractiveMode {
|
|
|
5038
5113
|
if (error instanceof CredentialSynchronizationError) {
|
|
5039
5114
|
this.showError(`Saved API key for ${providerName}, but local model state could not be synchronized: ${errorMsg}`);
|
|
5040
5115
|
}
|
|
5041
|
-
else if (errorMsg
|
|
5116
|
+
else if (errorMsg === "Login cancelled") {
|
|
5117
|
+
onBack?.();
|
|
5118
|
+
}
|
|
5119
|
+
else {
|
|
5042
5120
|
this.showError(`Failed to save API key for ${providerName}: ${errorMsg}`);
|
|
5043
5121
|
}
|
|
5044
5122
|
}
|
|
5045
5123
|
}
|
|
5046
|
-
showAuthSelect(dialog, prompt) {
|
|
5124
|
+
showAuthSelect(dialog, prompt, providerId) {
|
|
5047
5125
|
return new Promise((resolve, reject) => {
|
|
5048
5126
|
const restoreDialog = () => {
|
|
5049
5127
|
this.editorContainer.clear();
|
|
@@ -5062,17 +5140,17 @@ export class InteractiveMode {
|
|
|
5062
5140
|
}, () => {
|
|
5063
5141
|
restoreDialog();
|
|
5064
5142
|
reject(new Error("Login cancelled"));
|
|
5065
|
-
});
|
|
5143
|
+
}, { description: providerId === RADIUS_PROVIDER_ID ? RADIUS_LOGIN_INTRO : undefined });
|
|
5066
5144
|
this.editorContainer.clear();
|
|
5067
5145
|
this.editorContainer.addChild(selector);
|
|
5068
5146
|
this.ui.setFocus(selector);
|
|
5069
5147
|
this.ui.requestRender();
|
|
5070
5148
|
});
|
|
5071
5149
|
}
|
|
5072
|
-
async showAuthPrompt(dialog, prompt) {
|
|
5150
|
+
async showAuthPrompt(dialog, prompt, providerId) {
|
|
5073
5151
|
let response;
|
|
5074
5152
|
if (prompt.type === "select") {
|
|
5075
|
-
response = this.showAuthSelect(dialog, prompt);
|
|
5153
|
+
response = this.showAuthSelect(dialog, prompt, providerId);
|
|
5076
5154
|
}
|
|
5077
5155
|
else if (prompt.type === "manual_code") {
|
|
5078
5156
|
response = dialog.showManualInput(prompt.message);
|
|
@@ -5116,11 +5194,11 @@ export class InteractiveMode {
|
|
|
5116
5194
|
async loginProvider(dialog, providerId, method) {
|
|
5117
5195
|
await this.session.modelRuntime.login(providerId, method, {
|
|
5118
5196
|
signal: dialog.signal,
|
|
5119
|
-
prompt: (prompt) => this.showAuthPrompt(dialog, prompt),
|
|
5197
|
+
prompt: (prompt) => this.showAuthPrompt(dialog, prompt, providerId),
|
|
5120
5198
|
notify: (event) => this.notifyAuthDialog(dialog, event),
|
|
5121
5199
|
}, { getDeviceId: () => this.settingsManager.getOrCreateDeviceId() });
|
|
5122
5200
|
}
|
|
5123
|
-
async showLoginDialog(providerId, providerName) {
|
|
5201
|
+
async showLoginDialog(providerId, providerName, onBack) {
|
|
5124
5202
|
const previousModel = this.session.model;
|
|
5125
5203
|
const dialog = new LoginDialogComponent(this.ui, providerId, (_success, _message) => { }, providerName);
|
|
5126
5204
|
this.editorContainer.clear();
|
|
@@ -5137,6 +5215,8 @@ export class InteractiveMode {
|
|
|
5137
5215
|
await this.loginProvider(dialog, providerId, "oauth");
|
|
5138
5216
|
restoreEditor();
|
|
5139
5217
|
await this.completeProviderAuthentication(providerId, providerName, "oauth", previousModel);
|
|
5218
|
+
if (providerId === RADIUS_PROVIDER_ID)
|
|
5219
|
+
this.offerRadiusMcpServer(providerId, providerName);
|
|
5140
5220
|
}
|
|
5141
5221
|
catch (error) {
|
|
5142
5222
|
restoreEditor();
|
|
@@ -5144,11 +5224,58 @@ export class InteractiveMode {
|
|
|
5144
5224
|
if (error instanceof CredentialSynchronizationError) {
|
|
5145
5225
|
this.showError(`Logged in to ${providerName}, but local model state could not be synchronized: ${errorMsg}`);
|
|
5146
5226
|
}
|
|
5147
|
-
else if (errorMsg
|
|
5227
|
+
else if (errorMsg === "Login cancelled") {
|
|
5228
|
+
onBack?.();
|
|
5229
|
+
}
|
|
5230
|
+
else {
|
|
5148
5231
|
this.showError(`Failed to login to ${providerName}: ${errorMsg}`);
|
|
5149
5232
|
}
|
|
5150
5233
|
}
|
|
5151
5234
|
}
|
|
5235
|
+
/**
|
|
5236
|
+
* Offer to point the Radius MCP server in the global mcp.json at the Radius login, adding the server
|
|
5237
|
+
* when missing. Nothing is asked when a global server already uses this login.
|
|
5238
|
+
*/
|
|
5239
|
+
offerRadiusMcpServer(providerId, providerName) {
|
|
5240
|
+
const mcpPath = path.join(getAgentDir(), "mcp.json");
|
|
5241
|
+
const normalizeUrl = (url) => url.replace(/\/+$/u, "");
|
|
5242
|
+
const { servers } = loadMcpConfig({
|
|
5243
|
+
agentDir: getAgentDir(),
|
|
5244
|
+
cwd: this.sessionManager.getCwd(),
|
|
5245
|
+
projectTrusted: false,
|
|
5246
|
+
});
|
|
5247
|
+
const existing = servers.find((server) => "url" in server.config && normalizeUrl(server.config.url) === normalizeUrl(RADIUS_MCP_URL));
|
|
5248
|
+
if (existing && "url" in existing.config && existing.config.auth?.provider === providerId)
|
|
5249
|
+
return;
|
|
5250
|
+
let name = existing?.name ?? "radius";
|
|
5251
|
+
if (!existing && servers.some((server) => server.name === name))
|
|
5252
|
+
name = "radius-mcp";
|
|
5253
|
+
const config = existing && "url" in existing.config
|
|
5254
|
+
? { ...existing.config, auth: { provider: providerId } }
|
|
5255
|
+
: { url: RADIUS_MCP_URL, auth: { provider: providerId } };
|
|
5256
|
+
// `auth` replaces the MCP OAuth sign-in.
|
|
5257
|
+
delete config.oauth;
|
|
5258
|
+
this.showSelector((done) => {
|
|
5259
|
+
const selector = new ExtensionSelectorComponent(`Configure ${providerName} MCP in ${mcpPath}?`, ["Yes", "No"], (option) => {
|
|
5260
|
+
done();
|
|
5261
|
+
if (option !== "Yes")
|
|
5262
|
+
return;
|
|
5263
|
+
try {
|
|
5264
|
+
addMcpServerConfig(mcpPath, name, config);
|
|
5265
|
+
}
|
|
5266
|
+
catch (error) {
|
|
5267
|
+
this.showError(`Could not update ${mcpPath}: ${error instanceof Error ? error.message : String(error)}`);
|
|
5268
|
+
return;
|
|
5269
|
+
}
|
|
5270
|
+
// The MCP extension reads mcp.json when the session starts.
|
|
5271
|
+
void this.handleReloadCommand();
|
|
5272
|
+
}, () => {
|
|
5273
|
+
done();
|
|
5274
|
+
this.ui.requestRender();
|
|
5275
|
+
});
|
|
5276
|
+
return { component: selector, focus: selector };
|
|
5277
|
+
});
|
|
5278
|
+
}
|
|
5152
5279
|
// =========================================================================
|
|
5153
5280
|
// Command handlers
|
|
5154
5281
|
// =========================================================================
|