@astralyn/pi 0.87.6 → 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 +69 -9
- package/README.md +3 -3
- package/dist/bun/runtime-setup.js +4 -1
- package/dist/bun/runtime-setup.js.map +1 -1
- 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-PBA4QKCM.js +2 -0
- package/dist/bundle/chunks/bedrock-converse-stream.js +8 -8
- package/dist/bundle/chunks/{chunk-NW5FIDD7.js → chunk-6UFFVA7M.js} +3 -3
- package/dist/bundle/chunks/chunk-G4RY3GN7.js +11 -0
- package/dist/bundle/chunks/chunk-GCKVOFWP.js +2 -0
- package/dist/bundle/chunks/chunk-GIG5IHES.js +2 -0
- package/dist/bundle/chunks/{chunk-4W4Q2H6W.js → chunk-HESRDUKO.js} +1000 -625
- package/dist/bundle/chunks/chunk-MPDALHNJ.js +2 -0
- package/dist/bundle/chunks/chunk-OO6DJ3CL.js +31 -0
- package/dist/bundle/chunks/{chunk-LPQCB2VJ.js → chunk-PFZKRUMO.js} +2 -2
- package/dist/bundle/chunks/chunk-SGLYRVQL.js +2 -0
- package/dist/bundle/chunks/chunk-TRHTWM3C.js +2 -0
- package/dist/bundle/chunks/chunk-V66VGGOM.js +2 -0
- package/dist/bundle/chunks/chunk-Z2RKSI3O.js +2 -0
- package/dist/bundle/chunks/cloudflare-workers-ai-system-one-YB7XPPP4.js +2 -0
- package/dist/bundle/chunks/codemode-worker.js +354 -0
- package/dist/bundle/chunks/github-copilot.js +1 -1
- package/dist/bundle/chunks/google-generative-ai-V5ZM5MCL.js +2 -0
- package/dist/bundle/chunks/google-vertex-22THOFP5.js +2 -0
- package/dist/bundle/chunks/llama-cpp-classify-R7DQLTQN.js +22 -0
- package/dist/bundle/chunks/meta.js +2 -0
- package/dist/bundle/chunks/mistral-conversations-WHSCJJWP.js +5 -0
- package/dist/bundle/chunks/openai-chatgpt.js +75 -0
- package/dist/bundle/chunks/openai-codex-responses-N7GDPBPP.js +10 -0
- package/dist/bundle/chunks/openai-codex.js +2 -2
- package/dist/bundle/chunks/openai-completions-RGGQK5UW.js +7 -0
- package/dist/bundle/chunks/openai-responses-3ZLD5JYI.js +3 -0
- package/dist/bundle/chunks/{openrouter-images-6XDE2CEW.js → openrouter-images-YP3YVB54.js} +1 -1
- package/dist/bundle/chunks/openrouter.js +2 -2
- package/dist/bundle/chunks/{pi-messages-MQMPIPNC.js → pi-messages-HZZ7GEEW.js} +2 -2
- package/dist/bundle/chunks/radius.js +2 -2
- package/dist/bundle/chunks/typesafe-system-one-RREJAKWB.js +2 -0
- 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.d.ts.map +1 -1
- package/dist/cli/args.js +5 -4
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/startup-ui.d.ts.map +1 -1
- package/dist/cli/startup-ui.js +38 -30
- package/dist/cli/startup-ui.js.map +1 -1
- package/dist/config.d.ts +15 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +33 -4
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session-runtime.d.ts +1 -1
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +13 -13
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session-services.d.ts +2 -2
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +14 -1
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session.d.ts +121 -36
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +518 -203
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/bug-report.js +1 -1
- package/dist/core/bug-report.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +1 -22
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/compaction/utils.d.ts +2 -1
- package/dist/core/compaction/utils.d.ts.map +1 -1
- package/dist/core/compaction/utils.js +25 -18
- package/dist/core/compaction/utils.js.map +1 -1
- package/dist/core/crash-log.d.ts.map +1 -1
- package/dist/core/crash-log.js +2 -1
- package/dist/core/crash-log.js.map +1 -1
- package/dist/core/export-html/template.css +10 -0
- package/dist/core/export-html/template.js +66 -17
- package/dist/core/extensions/distribution-api.d.ts +1 -1
- package/dist/core/extensions/distribution-api.d.ts.map +1 -1
- package/dist/core/extensions/distribution-api.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 +67 -5
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +22 -3
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +124 -8
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +310 -25
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/extensions/wrapper.d.ts +2 -2
- package/dist/core/extensions/wrapper.d.ts.map +1 -1
- package/dist/core/extensions/wrapper.js +3 -3
- package/dist/core/extensions/wrapper.js.map +1 -1
- package/dist/core/keybindings.d.ts +70 -5
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +15 -1
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/mcp-servers.d.ts +125 -0
- package/dist/core/mcp-servers.d.ts.map +1 -0
- package/dist/core/mcp-servers.js +199 -0
- package/dist/core/mcp-servers.js.map +1 -0
- package/dist/core/model-registry.d.ts +15 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +29 -0
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver.d.ts +2 -2
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +5 -5
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/model-runtime.d.ts +47 -3
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +189 -35
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/nested-tool-calls.d.ts +102 -0
- package/dist/core/nested-tool-calls.d.ts.map +1 -0
- package/dist/core/nested-tool-calls.js +177 -0
- package/dist/core/nested-tool-calls.js.map +1 -0
- package/dist/core/package-manager.d.ts +4 -0
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +58 -12
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/provider-composer.d.ts +40 -21
- package/dist/core/provider-composer.d.ts.map +1 -1
- package/dist/core/provider-composer.js +92 -40
- 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 +8 -1
- package/dist/core/remote-catalog-provider.d.ts.map +1 -1
- package/dist/core/remote-catalog-provider.js +21 -11
- package/dist/core/remote-catalog-provider.js.map +1 -1
- package/dist/core/resource-loader.d.ts +7 -1
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +160 -35
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/sdk.d.ts +3 -3
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +26 -7
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager.d.ts +9 -0
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +22 -22
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-manager.d.ts +41 -4
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +110 -3
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +1 -0
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/source-info.d.ts +8 -0
- package/dist/core/source-info.d.ts.map +1 -1
- package/dist/core/source-info.js +16 -0
- package/dist/core/source-info.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/delivery.d.ts +40 -0
- package/dist/core/tasks/delivery.d.ts.map +1 -0
- package/dist/core/tasks/delivery.js +157 -0
- package/dist/core/tasks/delivery.js.map +1 -0
- 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 +4 -0
- package/dist/core/tasks/history.d.ts.map +1 -0
- package/dist/core/{background → tasks}/history.js +8 -51
- package/dist/core/tasks/history.js.map +1 -0
- package/dist/core/{background → tasks}/output.d.ts +12 -4
- package/dist/core/tasks/output.d.ts.map +1 -0
- package/dist/core/{background → tasks}/output.js +30 -11
- package/dist/core/tasks/output.js.map +1 -0
- package/dist/core/tasks/presentation.d.ts +7 -0
- package/dist/core/tasks/presentation.d.ts.map +1 -0
- package/dist/core/tasks/presentation.js +226 -0
- package/dist/core/tasks/presentation.js.map +1 -0
- package/dist/core/tasks/runtime.d.ts +74 -0
- package/dist/core/tasks/runtime.d.ts.map +1 -0
- package/dist/core/tasks/runtime.js +580 -0
- package/dist/core/tasks/runtime.js.map +1 -0
- package/dist/core/tasks/session.d.ts +49 -0
- package/dist/core/tasks/session.d.ts.map +1 -0
- package/dist/core/tasks/session.js +138 -0
- package/dist/core/tasks/session.js.map +1 -0
- package/dist/core/tasks/store.d.ts +46 -0
- package/dist/core/tasks/store.d.ts.map +1 -0
- package/dist/core/tasks/store.js +162 -0
- package/dist/core/tasks/store.js.map +1 -0
- package/dist/core/{background → tasks}/types.d.ts +64 -86
- package/dist/core/tasks/types.d.ts.map +1 -0
- package/dist/core/tasks/types.js +27 -0
- package/dist/core/tasks/types.js.map +1 -0
- package/dist/core/tools/bash.d.ts +8 -93
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +8 -240
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/grep.d.ts +2 -0
- package/dist/core/tools/grep.d.ts.map +1 -1
- package/dist/core/tools/grep.js +2 -0
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/index.d.ts +2 -1
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +9 -0
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/output-accumulator.d.ts +11 -0
- package/dist/core/tools/output-accumulator.d.ts.map +1 -1
- package/dist/core/tools/output-accumulator.js +36 -0
- package/dist/core/tools/output-accumulator.js.map +1 -1
- package/dist/core/tools/powershell.d.ts +6 -2
- package/dist/core/tools/powershell.d.ts.map +1 -1
- package/dist/core/tools/powershell.js +1 -1
- package/dist/core/tools/powershell.js.map +1 -1
- package/dist/core/tools/render-utils.d.ts +6 -0
- package/dist/core/tools/render-utils.d.ts.map +1 -1
- package/dist/core/tools/render-utils.js +26 -0
- package/dist/core/tools/render-utils.js.map +1 -1
- package/dist/core/tools/renderers/bash.d.ts +1 -1
- package/dist/core/tools/renderers/bash.d.ts.map +1 -1
- package/dist/core/tools/renderers/bash.js +11 -35
- package/dist/core/tools/renderers/bash.js.map +1 -1
- package/dist/core/tools/renderers/index.d.ts.map +1 -1
- package/dist/core/tools/renderers/index.js +5 -7
- package/dist/core/tools/renderers/index.js.map +1 -1
- package/dist/core/tools/renderers/read.d.ts.map +1 -1
- package/dist/core/tools/renderers/read.js +3 -2
- package/dist/core/tools/renderers/read.js.map +1 -1
- package/dist/core/tools/shell-execution.d.ts +4 -6
- package/dist/core/tools/shell-execution.d.ts.map +1 -1
- package/dist/core/tools/shell-execution.js +22 -13
- package/dist/core/tools/shell-execution.js.map +1 -1
- package/dist/core/tools/shell-tool.d.ts +93 -0
- package/dist/core/tools/shell-tool.d.ts.map +1 -0
- package/dist/core/tools/shell-tool.js +249 -0
- package/dist/core/tools/shell-tool.js.map +1 -0
- package/dist/core/tools/tasks/actions.d.ts +12 -0
- package/dist/core/tools/tasks/actions.d.ts.map +1 -0
- package/dist/{extensions/background → core/tools/tasks}/actions.js +44 -29
- package/dist/core/tools/tasks/actions.js.map +1 -0
- package/dist/core/tools/tasks/constants.d.ts +20 -0
- package/dist/core/tools/tasks/constants.d.ts.map +1 -0
- package/dist/core/tools/tasks/constants.js +20 -0
- package/dist/core/tools/tasks/constants.js.map +1 -0
- package/dist/{extensions/background → core/tools/tasks}/schema.d.ts +7 -7
- package/dist/core/tools/tasks/schema.d.ts.map +1 -0
- package/dist/{extensions/background → core/tools/tasks}/schema.js +21 -20
- package/dist/core/tools/tasks/schema.js.map +1 -0
- package/dist/core/tools/tasks/types.d.ts +53 -0
- package/dist/core/tools/tasks/types.d.ts.map +1 -0
- package/dist/core/tools/tasks/types.js +12 -0
- package/dist/core/tools/tasks/types.js.map +1 -0
- package/dist/core/tools/tasks.d.ts +14 -0
- package/dist/core/tools/tasks.d.ts.map +1 -0
- package/dist/core/tools/tasks.js +40 -0
- package/dist/core/tools/tasks.js.map +1 -0
- package/dist/core/tools/tool-definition-wrapper.d.ts +4 -3
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.js +4 -2
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
- package/dist/core/tools/truncate.d.ts +14 -0
- package/dist/core/tools/truncate.d.ts.map +1 -1
- package/dist/core/tools/truncate.js +29 -0
- package/dist/core/tools/truncate.js.map +1 -1
- package/dist/core/trust-manager.d.ts.map +1 -1
- package/dist/core/trust-manager.js +1 -0
- package/dist/core/trust-manager.js.map +1 -1
- package/dist/core/usage-totals.d.ts +5 -3
- package/dist/core/usage-totals.d.ts.map +1 -1
- package/dist/core/usage-totals.js +27 -4
- package/dist/core/usage-totals.js.map +1 -1
- package/dist/core/virtual-models.d.ts +117 -0
- package/dist/core/virtual-models.d.ts.map +1 -0
- package/dist/core/virtual-models.js +124 -0
- package/dist/core/virtual-models.js.map +1 -0
- 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 +16 -0
- package/dist/extensions/codemode/execute.d.ts.map +1 -0
- package/dist/extensions/codemode/execute.js +536 -0
- package/dist/extensions/codemode/execute.js.map +1 -0
- package/dist/extensions/codemode/execute.lazy.d.ts +3 -0
- package/dist/extensions/codemode/execute.lazy.d.ts.map +1 -0
- package/dist/extensions/codemode/execute.lazy.js +3 -0
- package/dist/extensions/codemode/execute.lazy.js.map +1 -0
- package/dist/extensions/codemode/index.d.ts +21 -0
- package/dist/extensions/codemode/index.d.ts.map +1 -0
- package/dist/extensions/codemode/index.js +36 -0
- package/dist/extensions/codemode/index.js.map +1 -0
- package/dist/extensions/codemode/renderer.d.ts +12 -0
- package/dist/extensions/codemode/renderer.d.ts.map +1 -0
- package/dist/extensions/codemode/renderer.js +137 -0
- package/dist/extensions/codemode/renderer.js.map +1 -0
- package/dist/extensions/codemode/search.d.ts +33 -0
- package/dist/extensions/codemode/search.d.ts.map +1 -0
- package/dist/extensions/codemode/search.js +117 -0
- package/dist/extensions/codemode/search.js.map +1 -0
- package/dist/extensions/codemode/tool.d.ts +123 -0
- package/dist/extensions/codemode/tool.d.ts.map +1 -0
- package/dist/extensions/codemode/tool.js +268 -0
- package/dist/extensions/codemode/tool.js.map +1 -0
- package/dist/extensions/codemode/worker.d.ts +7 -0
- package/dist/extensions/codemode/worker.d.ts.map +1 -0
- package/dist/extensions/codemode/worker.js +7 -0
- package/dist/extensions/codemode/worker.js.map +1 -0
- package/dist/extensions/deepwiki/schema.d.ts +1 -1
- package/dist/extensions/index.js +13 -13
- package/dist/extensions/index.js.map +1 -1
- package/dist/extensions/llama/provider.d.ts +1 -1
- package/dist/extensions/llama/provider.d.ts.map +1 -1
- package/dist/extensions/llama/provider.js +65 -13
- package/dist/extensions/llama/provider.js.map +1 -1
- package/dist/extensions/mcp/cli.d.ts +21 -0
- package/dist/extensions/mcp/cli.d.ts.map +1 -0
- package/dist/extensions/mcp/cli.js +500 -0
- package/dist/extensions/mcp/cli.js.map +1 -0
- package/dist/extensions/mcp/cli.lazy.d.ts +3 -0
- package/dist/extensions/mcp/cli.lazy.d.ts.map +1 -0
- package/dist/extensions/mcp/cli.lazy.js +3 -0
- package/dist/extensions/mcp/cli.lazy.js.map +1 -0
- package/dist/extensions/mcp/config.d.ts +72 -0
- package/dist/extensions/mcp/config.d.ts.map +1 -0
- package/dist/extensions/mcp/config.js +158 -0
- package/dist/extensions/mcp/config.js.map +1 -0
- package/dist/extensions/mcp/index.d.ts +76 -0
- package/dist/extensions/mcp/index.d.ts.map +1 -0
- package/dist/extensions/mcp/index.js +1078 -0
- package/dist/extensions/mcp/index.js.map +1 -0
- package/dist/extensions/mcp/log.d.ts +16 -0
- package/dist/extensions/mcp/log.d.ts.map +1 -0
- package/dist/extensions/mcp/log.js +64 -0
- package/dist/extensions/mcp/log.js.map +1 -0
- package/dist/extensions/mcp/oauth.d.ts +97 -0
- package/dist/extensions/mcp/oauth.d.ts.map +1 -0
- package/dist/extensions/mcp/oauth.js +355 -0
- package/dist/extensions/mcp/oauth.js.map +1 -0
- package/dist/extensions/mcp/resources.d.ts +43 -0
- package/dist/extensions/mcp/resources.d.ts.map +1 -0
- package/dist/extensions/mcp/resources.js +262 -0
- package/dist/extensions/mcp/resources.js.map +1 -0
- package/dist/extensions/mcp/runtime.d.ts +98 -0
- package/dist/extensions/mcp/runtime.d.ts.map +1 -0
- package/dist/extensions/mcp/runtime.js +379 -0
- package/dist/extensions/mcp/runtime.js.map +1 -0
- package/dist/extensions/mcp/runtime.lazy.d.ts +3 -0
- package/dist/extensions/mcp/runtime.lazy.d.ts.map +1 -0
- package/dist/extensions/mcp/runtime.lazy.js +3 -0
- package/dist/extensions/mcp/runtime.lazy.js.map +1 -0
- package/dist/extensions/mcp/tools.d.ts +84 -0
- package/dist/extensions/mcp/tools.d.ts.map +1 -0
- package/dist/extensions/mcp/tools.js +251 -0
- package/dist/extensions/mcp/tools.js.map +1 -0
- package/dist/extensions/mcp/ui.d.ts +60 -0
- package/dist/extensions/mcp/ui.d.ts.map +1 -0
- package/dist/extensions/mcp/ui.js +168 -0
- package/dist/extensions/mcp/ui.js.map +1 -0
- 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/index.d.ts +12 -0
- package/dist/extensions/tool-search/index.d.ts.map +1 -0
- package/dist/extensions/tool-search/index.js +20 -0
- package/dist/extensions/tool-search/index.js.map +1 -0
- package/dist/extensions/tool-search/tool.d.ts +73 -0
- package/dist/extensions/tool-search/tool.d.ts.map +1 -0
- package/dist/extensions/tool-search/tool.js +187 -0
- package/dist/extensions/tool-search/tool.js.map +1 -0
- 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 +12 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +16 -0
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector.js +13 -3
- package/dist/modes/interactive/components/config-selector.js.map +1 -1
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-message.js +3 -1
- package/dist/modes/interactive/components/custom-message.js.map +1 -1
- package/dist/modes/interactive/components/first-time-setup.d.ts +4 -4
- package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -1
- package/dist/modes/interactive/components/first-time-setup.js +8 -2
- package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts +7 -0
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +42 -3
- package/dist/modes/interactive/components/footer.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 +19 -0
- package/dist/modes/interactive/components/pi-logo.d.ts.map +1 -0
- package/dist/modes/interactive/components/pi-logo.js +37 -0
- package/dist/modes/interactive/components/pi-logo.js.map +1 -0
- 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 +6 -4
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +33 -11
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/status-marker.d.ts +2 -4
- package/dist/modes/interactive/components/status-marker.d.ts.map +1 -1
- package/dist/modes/interactive/components/status-marker.js +2 -6
- package/dist/modes/interactive/components/status-marker.js.map +1 -1
- package/dist/modes/interactive/components/themed-text.d.ts +17 -0
- package/dist/modes/interactive/components/themed-text.d.ts.map +1 -0
- package/dist/modes/interactive/components/themed-text.js +28 -0
- package/dist/modes/interactive/components/themed-text.js.map +1 -0
- 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 -4
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +377 -199
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/tasks/completion-render.d.ts +8 -0
- package/dist/modes/interactive/tasks/completion-render.d.ts.map +1 -0
- package/dist/{extensions/background → modes/interactive/tasks}/completion-render.js +41 -91
- package/dist/modes/interactive/tasks/completion-render.js.map +1 -0
- package/dist/modes/interactive/tasks/index.d.ts +12 -0
- package/dist/modes/interactive/tasks/index.d.ts.map +1 -0
- package/dist/modes/interactive/tasks/index.js +102 -0
- package/dist/modes/interactive/tasks/index.js.map +1 -0
- 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 +60 -0
- package/dist/modes/interactive/tasks/manager.d.ts.map +1 -0
- package/dist/modes/interactive/tasks/manager.js +380 -0
- package/dist/modes/interactive/tasks/manager.js.map +1 -0
- 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 +28 -0
- package/dist/modes/interactive/tasks/render.d.ts.map +1 -0
- package/dist/modes/interactive/tasks/render.js +141 -0
- package/dist/modes/interactive/tasks/render.js.map +1 -0
- package/dist/modes/interactive/tasks/task-view.d.ts +13 -0
- package/dist/modes/interactive/tasks/task-view.d.ts.map +1 -0
- package/dist/modes/interactive/tasks/task-view.js +20 -0
- package/dist/modes/interactive/tasks/task-view.js.map +1 -0
- package/dist/modes/interactive/tasks/text.d.ts +6 -0
- package/dist/modes/interactive/tasks/text.d.ts.map +1 -0
- package/dist/modes/interactive/tasks/text.js +16 -0
- package/dist/modes/interactive/tasks/text.js.map +1 -0
- package/dist/modes/interactive/tasks/viewport.d.ts +17 -0
- package/dist/modes/interactive/tasks/viewport.d.ts.map +1 -0
- package/dist/modes/interactive/tasks/viewport.js +59 -0
- package/dist/modes/interactive/tasks/viewport.js.map +1 -0
- 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/dark.json +59 -72
- package/dist/modes/interactive/theme/light.json +57 -69
- package/dist/modes/interactive/theme/system-theme.d.ts +55 -0
- package/dist/modes/interactive/theme/system-theme.d.ts.map +1 -0
- package/dist/modes/interactive/theme/system-theme.js +546 -0
- package/dist/modes/interactive/theme/system-theme.js.map +1 -0
- package/dist/modes/interactive/theme/theme-controller.d.ts +46 -6
- package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-controller.js +125 -47
- package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
- package/dist/modes/interactive/theme/theme-json.d.ts +1 -0
- package/dist/modes/interactive/theme/theme-json.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-json.js +3 -1
- package/dist/modes/interactive/theme/theme-json.js.map +1 -1
- package/dist/modes/interactive/theme/theme-schema.json +7 -2
- package/dist/modes/interactive/theme/theme.d.ts +70 -39
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +247 -313
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/interactive/tool-view/fallback.d.ts +1 -1
- package/dist/modes/interactive/tool-view/fallback.d.ts.map +1 -1
- package/dist/modes/interactive/tool-view/fallback.js +4 -1
- package/dist/modes/interactive/tool-view/fallback.js.map +1 -1
- package/dist/modes/interactive/tool-view/tool-execution.js +2 -2
- package/dist/modes/interactive/tool-view/tool-execution.js.map +1 -1
- package/dist/modes/interactive/tui-renderer.d.ts +2 -1
- package/dist/modes/interactive/tui-renderer.d.ts.map +1 -1
- package/dist/modes/interactive/tui-renderer.js +1 -0
- package/dist/modes/interactive/tui-renderer.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +6 -6
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +12 -8
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +7 -9
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +10 -1
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +6 -2
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/utils/clipboard-image.d.ts.map +1 -1
- package/dist/utils/clipboard-image.js +14 -17
- package/dist/utils/clipboard-image.js.map +1 -1
- package/dist/utils/clipboard.d.ts +2 -0
- package/dist/utils/clipboard.d.ts.map +1 -1
- package/dist/utils/clipboard.js +5 -0
- package/dist/utils/clipboard.js.map +1 -1
- package/dist/utils/paths.d.ts +3 -3
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +5 -4
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/shell.d.ts +1 -3
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +3 -30
- package/dist/utils/shell.js.map +1 -1
- package/docs/bundled/README.md +22 -9
- package/docs/bundled/extensions/question.md +2 -2
- package/docs/bundled/extensions/statusline.md +26 -17
- package/docs/bundled/tasks.md +127 -0
- package/docs/bundled/tool-presentation.md +1 -1
- package/docs/codemode.md +207 -0
- package/docs/custom-provider.md +44 -0
- package/docs/docs.json +14 -10
- package/docs/environment-variables.md +1 -1
- package/docs/extensions.md +94 -93
- package/docs/index.md +2 -1
- package/docs/keybindings.md +17 -9
- package/docs/llama-cpp.md +12 -1
- package/docs/mcp.md +248 -0
- package/docs/models.md +56 -0
- package/docs/packages.md +4 -0
- package/docs/providers.md +14 -0
- package/docs/rpc.md +5 -3
- package/docs/sdk.md +26 -16
- package/docs/security.md +4 -0
- package/docs/session-format.md +20 -23
- package/docs/settings.md +29 -3
- package/docs/themes.md +27 -5
- package/docs/tui.md +21 -1
- package/docs/usage.md +52 -4
- package/docs/virtual-models.md +114 -0
- package/docs/windows.md +2 -0
- package/examples/README.md +2 -2
- package/examples/extensions/README.md +3 -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/custom-provider-gitlab-duo/test.ts +4 -4
- package/examples/extensions/debug-provider.ts +90 -0
- package/examples/extensions/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/jev-router.ts +113 -0
- 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/rpc-client.ts +1 -1
- package/examples/rpc-extension-ui.ts +1 -1
- package/examples/sdk/14-codemode-mcp.ts +61 -0
- package/examples/sdk/README.md +1 -0
- package/npm-shrinkwrap.json +420 -423
- package/package.json +14 -10
- package/dist/bundle/chunks/anthropic-messages-XWFTZP2N.js +0 -6
- package/dist/bundle/chunks/azure-openai-responses-HS35BQV6.js +0 -2
- package/dist/bundle/chunks/chunk-2IO5GDBS.js +0 -11
- package/dist/bundle/chunks/chunk-EDBLK2JQ.js +0 -2
- package/dist/bundle/chunks/chunk-I5IVW2WS.js +0 -2
- package/dist/bundle/chunks/chunk-IORR2FW4.js +0 -2
- package/dist/bundle/chunks/chunk-NUHFSC37.js +0 -25
- package/dist/bundle/chunks/chunk-UUSTLCVC.js +0 -2
- package/dist/bundle/chunks/google-generative-ai-NOVAJBFC.js +0 -2
- package/dist/bundle/chunks/google-vertex-4VHCZJV5.js +0 -2
- package/dist/bundle/chunks/mistral-conversations-WC6A2WCJ.js +0 -5
- package/dist/bundle/chunks/openai-codex-responses-XCDG75W2.js +0 -10
- package/dist/bundle/chunks/openai-completions-SHS3CAEL.js +0 -7
- package/dist/bundle/chunks/openai-responses-UT6XFKC7.js +0 -2
- package/dist/bundle/chunks/virtual-modules-KUEIEAZN.js +0 -2
- package/dist/core/background/history.d.ts +0 -4
- package/dist/core/background/history.d.ts.map +0 -1
- package/dist/core/background/history.js.map +0 -1
- package/dist/core/background/output.d.ts.map +0 -1
- package/dist/core/background/output.js.map +0 -1
- package/dist/core/background/presentation.d.ts +0 -9
- package/dist/core/background/presentation.d.ts.map +0 -1
- package/dist/core/background/presentation.js +0 -311
- package/dist/core/background/presentation.js.map +0 -1
- package/dist/core/background/service.d.ts +0 -68
- package/dist/core/background/service.d.ts.map +0 -1
- package/dist/core/background/service.js +0 -641
- package/dist/core/background/service.js.map +0 -1
- package/dist/core/background/session.d.ts +0 -67
- package/dist/core/background/session.d.ts.map +0 -1
- package/dist/core/background/session.js +0 -248
- package/dist/core/background/session.js.map +0 -1
- package/dist/core/background/types.d.ts.map +0 -1
- package/dist/core/background/types.js +0 -31
- package/dist/core/background/types.js.map +0 -1
- package/dist/extensions/background/actions.d.ts +0 -11
- package/dist/extensions/background/actions.d.ts.map +0 -1
- package/dist/extensions/background/actions.js.map +0 -1
- package/dist/extensions/background/completion-render.d.ts +0 -8
- package/dist/extensions/background/completion-render.d.ts.map +0 -1
- package/dist/extensions/background/completion-render.js.map +0 -1
- package/dist/extensions/background/constants.d.ts +0 -24
- package/dist/extensions/background/constants.d.ts.map +0 -1
- package/dist/extensions/background/constants.js +0 -24
- package/dist/extensions/background/constants.js.map +0 -1
- package/dist/extensions/background/index.d.ts +0 -7
- package/dist/extensions/background/index.d.ts.map +0 -1
- package/dist/extensions/background/index.js +0 -135
- package/dist/extensions/background/index.js.map +0 -1
- package/dist/extensions/background/keybindings.d.ts +0 -10
- package/dist/extensions/background/keybindings.d.ts.map +0 -1
- package/dist/extensions/background/keybindings.js +0 -14
- package/dist/extensions/background/keybindings.js.map +0 -1
- package/dist/extensions/background/manager.d.ts +0 -80
- package/dist/extensions/background/manager.d.ts.map +0 -1
- package/dist/extensions/background/manager.js +0 -673
- package/dist/extensions/background/manager.js.map +0 -1
- package/dist/extensions/background/render.d.ts +0 -42
- package/dist/extensions/background/render.d.ts.map +0 -1
- package/dist/extensions/background/render.js +0 -225
- package/dist/extensions/background/render.js.map +0 -1
- package/dist/extensions/background/schema.d.ts.map +0 -1
- package/dist/extensions/background/schema.js.map +0 -1
- package/dist/extensions/background/task-view.d.ts +0 -53
- package/dist/extensions/background/task-view.d.ts.map +0 -1
- package/dist/extensions/background/task-view.js +0 -60
- package/dist/extensions/background/task-view.js.map +0 -1
- package/dist/extensions/background/text.d.ts +0 -12
- package/dist/extensions/background/text.d.ts.map +0 -1
- package/dist/extensions/background/text.js +0 -39
- package/dist/extensions/background/text.js.map +0 -1
- package/dist/extensions/background/types.d.ts +0 -85
- package/dist/extensions/background/types.d.ts.map +0 -1
- package/dist/extensions/background/types.js +0 -17
- package/dist/extensions/background/types.js.map +0 -1
- package/dist/extensions/subagent/activity.d.ts +0 -34
- package/dist/extensions/subagent/activity.d.ts.map +0 -1
- package/dist/extensions/subagent/activity.js +0 -192
- package/dist/extensions/subagent/activity.js.map +0 -1
- package/dist/extensions/subagent/agents-command.d.ts +0 -4
- package/dist/extensions/subagent/agents-command.d.ts.map +0 -1
- package/dist/extensions/subagent/agents-command.js +0 -230
- package/dist/extensions/subagent/agents-command.js.map +0 -1
- package/dist/extensions/subagent/agents.d.ts +0 -6
- package/dist/extensions/subagent/agents.d.ts.map +0 -1
- package/dist/extensions/subagent/agents.js +0 -53
- package/dist/extensions/subagent/agents.js.map +0 -1
- package/dist/extensions/subagent/budget.d.ts +0 -15
- package/dist/extensions/subagent/budget.d.ts.map +0 -1
- package/dist/extensions/subagent/budget.js +0 -123
- package/dist/extensions/subagent/budget.js.map +0 -1
- package/dist/extensions/subagent/cancellation.d.ts +0 -29
- package/dist/extensions/subagent/cancellation.d.ts.map +0 -1
- package/dist/extensions/subagent/cancellation.js +0 -91
- package/dist/extensions/subagent/cancellation.js.map +0 -1
- package/dist/extensions/subagent/constants.d.ts +0 -25
- package/dist/extensions/subagent/constants.d.ts.map +0 -1
- package/dist/extensions/subagent/constants.js +0 -50
- package/dist/extensions/subagent/constants.js.map +0 -1
- package/dist/extensions/subagent/index.d.ts +0 -3
- package/dist/extensions/subagent/index.d.ts.map +0 -1
- package/dist/extensions/subagent/index.js +0 -151
- package/dist/extensions/subagent/index.js.map +0 -1
- package/dist/extensions/subagent/model-selection.d.ts +0 -16
- package/dist/extensions/subagent/model-selection.d.ts.map +0 -1
- package/dist/extensions/subagent/model-selection.js +0 -51
- package/dist/extensions/subagent/model-selection.js.map +0 -1
- package/dist/extensions/subagent/render.d.ts +0 -24
- package/dist/extensions/subagent/render.d.ts.map +0 -1
- package/dist/extensions/subagent/render.js +0 -336
- package/dist/extensions/subagent/render.js.map +0 -1
- package/dist/extensions/subagent/resolve.d.ts +0 -31
- package/dist/extensions/subagent/resolve.d.ts.map +0 -1
- package/dist/extensions/subagent/resolve.js +0 -111
- package/dist/extensions/subagent/resolve.js.map +0 -1
- package/dist/extensions/subagent/runner.d.ts +0 -35
- package/dist/extensions/subagent/runner.d.ts.map +0 -1
- package/dist/extensions/subagent/runner.js +0 -255
- package/dist/extensions/subagent/runner.js.map +0 -1
- package/dist/extensions/subagent/schema.d.ts +0 -28
- package/dist/extensions/subagent/schema.d.ts.map +0 -1
- package/dist/extensions/subagent/schema.js +0 -58
- package/dist/extensions/subagent/schema.js.map +0 -1
- package/dist/extensions/subagent/sdk-runner.d.ts +0 -33
- package/dist/extensions/subagent/sdk-runner.d.ts.map +0 -1
- package/dist/extensions/subagent/sdk-runner.js +0 -331
- package/dist/extensions/subagent/sdk-runner.js.map +0 -1
- package/dist/extensions/subagent/settings.d.ts +0 -8
- package/dist/extensions/subagent/settings.d.ts.map +0 -1
- package/dist/extensions/subagent/settings.js +0 -206
- package/dist/extensions/subagent/settings.js.map +0 -1
- package/dist/extensions/subagent/state.d.ts +0 -102
- package/dist/extensions/subagent/state.d.ts.map +0 -1
- package/dist/extensions/subagent/state.js +0 -383
- package/dist/extensions/subagent/state.js.map +0 -1
- package/dist/extensions/subagent/text.d.ts +0 -6
- package/dist/extensions/subagent/text.d.ts.map +0 -1
- package/dist/extensions/subagent/text.js +0 -66
- package/dist/extensions/subagent/text.js.map +0 -1
- package/dist/extensions/subagent/types.d.ts +0 -91
- package/dist/extensions/subagent/types.d.ts.map +0 -1
- package/dist/extensions/subagent/types.js +0 -2
- package/dist/extensions/subagent/types.js.map +0 -1
- package/dist/extensions/subagent/ui/agents-dialog.d.ts +0 -4
- package/dist/extensions/subagent/ui/agents-dialog.d.ts.map +0 -1
- package/dist/extensions/subagent/ui/agents-dialog.js +0 -84
- package/dist/extensions/subagent/ui/agents-dialog.js.map +0 -1
- package/dist/extensions/subagent/ui/choice-menu.d.ts +0 -39
- package/dist/extensions/subagent/ui/choice-menu.d.ts.map +0 -1
- package/dist/extensions/subagent/ui/choice-menu.js +0 -93
- package/dist/extensions/subagent/ui/choice-menu.js.map +0 -1
- package/dist/extensions/subagent/ui/choices.d.ts +0 -36
- package/dist/extensions/subagent/ui/choices.d.ts.map +0 -1
- package/dist/extensions/subagent/ui/choices.js +0 -54
- package/dist/extensions/subagent/ui/choices.js.map +0 -1
- package/dist/extensions/subagent/ui/model-list.d.ts +0 -66
- package/dist/extensions/subagent/ui/model-list.d.ts.map +0 -1
- package/dist/extensions/subagent/ui/model-list.js +0 -235
- package/dist/extensions/subagent/ui/model-list.js.map +0 -1
- package/dist/extensions/subagent/ui/model-picker.d.ts +0 -47
- package/dist/extensions/subagent/ui/model-picker.d.ts.map +0 -1
- package/dist/extensions/subagent/ui/model-picker.js +0 -143
- package/dist/extensions/subagent/ui/model-picker.js.map +0 -1
- package/dist/extensions/subagent/ui/profile-settings-menu.d.ts +0 -41
- package/dist/extensions/subagent/ui/profile-settings-menu.d.ts.map +0 -1
- package/dist/extensions/subagent/ui/profile-settings-menu.js +0 -98
- package/dist/extensions/subagent/ui/profile-settings-menu.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/docs/bundled/extensions/background.md +0 -132
- package/docs/bundled/extensions/subagent.md +0 -148
- package/docs/bundled/extensions/todo.md +0 -104
- package/examples/extensions/todo.ts +0 -297
|
@@ -9,6 +9,7 @@ import "../keybindings.js";
|
|
|
9
9
|
import { keyHint, rawKeyHint } from "../../../modes/interactive/components/keybinding-hints.js";
|
|
10
10
|
import { truncate } from "../constants.js";
|
|
11
11
|
import { modelCatalogUrl } from "../probe.js";
|
|
12
|
+
import { moveSelection } from "./controls.js";
|
|
12
13
|
import { renderInfoLine, renderPlainLine, truncateMiddle, ValueEditor } from "./value-row.js";
|
|
13
14
|
/** Compact token count for the row note, e.g. `1.0M`; the thresholds match the footer's usage stats. */
|
|
14
15
|
function formatTokens(count) {
|
|
@@ -38,7 +39,6 @@ export class FetchModelsPane {
|
|
|
38
39
|
this.query = "";
|
|
39
40
|
this.index = 0;
|
|
40
41
|
this.checked = new Set();
|
|
41
|
-
this.importing = false;
|
|
42
42
|
this.focused = false;
|
|
43
43
|
this.disposed = false;
|
|
44
44
|
this.host = host;
|
|
@@ -49,19 +49,20 @@ export class FetchModelsPane {
|
|
|
49
49
|
}
|
|
50
50
|
/** Enter pressed on the left-column row (or on the idle pane): start the request. */
|
|
51
51
|
start() {
|
|
52
|
-
if (this.disposed || this.state.type === "loading" || this.importing)
|
|
52
|
+
if (this.disposed || this.state.type === "loading" || this.state.type === "importing")
|
|
53
53
|
return;
|
|
54
54
|
if (!this.catalogUrl())
|
|
55
55
|
return; // the idle pane explains what to configure first
|
|
56
56
|
const controller = new AbortController();
|
|
57
|
-
this.
|
|
58
|
-
this.state = { type: "loading" };
|
|
59
|
-
this.error = undefined;
|
|
57
|
+
this.state = { type: "loading", controller };
|
|
60
58
|
this.host.refresh();
|
|
61
59
|
void this.host
|
|
62
60
|
.runFetch(controller.signal)
|
|
63
61
|
.then((result) => {
|
|
64
|
-
if (this.disposed ||
|
|
62
|
+
if (this.disposed ||
|
|
63
|
+
controller.signal.aborted ||
|
|
64
|
+
this.state.type !== "loading" ||
|
|
65
|
+
this.state.controller !== controller)
|
|
65
66
|
return;
|
|
66
67
|
if (!result.ok) {
|
|
67
68
|
if (result.error === "Cancelled.")
|
|
@@ -70,7 +71,7 @@ export class FetchModelsPane {
|
|
|
70
71
|
this.host.setFetchStatus("· failed");
|
|
71
72
|
}
|
|
72
73
|
else {
|
|
73
|
-
this.state = { type: "results",
|
|
74
|
+
this.state = { type: "results", catalog: result };
|
|
74
75
|
this.checked = new Set();
|
|
75
76
|
this.query = "";
|
|
76
77
|
this.search.reset("");
|
|
@@ -81,7 +82,10 @@ export class FetchModelsPane {
|
|
|
81
82
|
this.host.refresh();
|
|
82
83
|
})
|
|
83
84
|
.catch((error) => {
|
|
84
|
-
if (
|
|
85
|
+
if (this.disposed ||
|
|
86
|
+
controller.signal.aborted ||
|
|
87
|
+
this.state.type !== "loading" ||
|
|
88
|
+
this.state.controller !== controller)
|
|
85
89
|
return;
|
|
86
90
|
this.state = { type: "error", message: error instanceof Error ? error.message : String(error) };
|
|
87
91
|
this.host.setFetchStatus("· failed");
|
|
@@ -102,10 +106,10 @@ export class FetchModelsPane {
|
|
|
102
106
|
}
|
|
103
107
|
}
|
|
104
108
|
rows() {
|
|
105
|
-
if (this.state.type !== "results")
|
|
109
|
+
if (this.state.type !== "results" && this.state.type !== "importing")
|
|
106
110
|
return [];
|
|
107
111
|
const existing = this.existingIds();
|
|
108
|
-
const rows = this.state.models.map((model) => ({ model, added: existing.has(model.id) }));
|
|
112
|
+
const rows = this.state.catalog.models.map((model) => ({ model, added: existing.has(model.id) }));
|
|
109
113
|
const query = this.query.trim().toLowerCase();
|
|
110
114
|
if (!query)
|
|
111
115
|
return rows;
|
|
@@ -137,9 +141,10 @@ export class FetchModelsPane {
|
|
|
137
141
|
theme.fg("error", truncate(this.state.message, Math.max(10, width - 2))),
|
|
138
142
|
renderInfoLine(theme, "Enter retries; Esc goes back.", width),
|
|
139
143
|
];
|
|
144
|
+
case "importing":
|
|
140
145
|
case "results": {
|
|
141
146
|
const lines = [];
|
|
142
|
-
if (this.state.truncated) {
|
|
147
|
+
if (this.state.catalog.truncated) {
|
|
143
148
|
lines.push(renderInfoLine(theme, "The catalog was truncated; refine manually if a model is missing.", width));
|
|
144
149
|
}
|
|
145
150
|
lines.push(this.search.renderLine(width));
|
|
@@ -168,21 +173,21 @@ export class FetchModelsPane {
|
|
|
168
173
|
lines.push(renderInfoLine(theme, "No matching models.", width));
|
|
169
174
|
const addedCount = rows.filter((row) => row.added).length;
|
|
170
175
|
lines.push(renderInfoLine(theme, `${this.checked.size} selected · ${rows.length} shown${addedCount ? ` · ${addedCount} already added` : ""}`, width));
|
|
171
|
-
if (this.importing)
|
|
176
|
+
if (this.state.type === "importing")
|
|
172
177
|
lines.push(renderInfoLine(theme, "Importing…", width));
|
|
173
|
-
if (this.error)
|
|
174
|
-
lines.push(theme.fg("error", truncate(this.error, Math.max(10, width - 2))));
|
|
178
|
+
if (this.state.type === "results" && this.state.error)
|
|
179
|
+
lines.push(theme.fg("error", truncate(this.state.error, Math.max(10, width - 2))));
|
|
175
180
|
return lines;
|
|
176
181
|
}
|
|
177
182
|
}
|
|
178
183
|
}
|
|
179
184
|
scrollWindow() {
|
|
180
|
-
if (this.state.type !== "results")
|
|
185
|
+
if (this.state.type !== "results" && this.state.type !== "importing")
|
|
181
186
|
return {};
|
|
182
187
|
// The truncation notice and the filter input pin above the checklist;
|
|
183
188
|
// the selection summary (and import progress/error) pin below.
|
|
184
|
-
const top = (this.state.truncated ? 1 : 0) + 1;
|
|
185
|
-
const bottom = 1 + (this.
|
|
189
|
+
const top = (this.state.catalog.truncated ? 1 : 0) + 1;
|
|
190
|
+
const bottom = 1 + (this.state.type === "importing" || this.state.error ? 1 : 0);
|
|
186
191
|
return { top, bottom, cursor: top + this.index };
|
|
187
192
|
}
|
|
188
193
|
handleInput(data) {
|
|
@@ -200,7 +205,7 @@ export class FetchModelsPane {
|
|
|
200
205
|
return;
|
|
201
206
|
case "loading":
|
|
202
207
|
if (kb.matches(data, "tui.select.cancel")) {
|
|
203
|
-
this.controller
|
|
208
|
+
this.state.controller.abort();
|
|
204
209
|
this.state = { type: "idle" };
|
|
205
210
|
this.host.refresh();
|
|
206
211
|
return;
|
|
@@ -216,6 +221,7 @@ export class FetchModelsPane {
|
|
|
216
221
|
return;
|
|
217
222
|
}
|
|
218
223
|
return;
|
|
224
|
+
case "importing":
|
|
219
225
|
case "results":
|
|
220
226
|
this.handleResultsInput(data);
|
|
221
227
|
return;
|
|
@@ -224,21 +230,15 @@ export class FetchModelsPane {
|
|
|
224
230
|
handleResultsInput(data) {
|
|
225
231
|
const kb = this.host.keybindings;
|
|
226
232
|
const rows = this.rows();
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
this.host.refresh();
|
|
231
|
-
return;
|
|
232
|
-
}
|
|
233
|
-
if (kb.matches(data, "tui.select.down")) {
|
|
234
|
-
if (rows.length > 0)
|
|
235
|
-
this.index = (this.index + 1) % rows.length;
|
|
233
|
+
const next = moveSelection(kb, data, this.index, rows.length);
|
|
234
|
+
if (next !== undefined) {
|
|
235
|
+
this.index = next;
|
|
236
236
|
this.host.refresh();
|
|
237
237
|
return;
|
|
238
238
|
}
|
|
239
239
|
if (kb.matches(data, "app.list.toggle")) {
|
|
240
240
|
const row = rows[this.index];
|
|
241
|
-
if (!row || row.added || this.importing)
|
|
241
|
+
if (!row || row.added || this.state.type === "importing")
|
|
242
242
|
return;
|
|
243
243
|
if (this.checked.has(row.model.id))
|
|
244
244
|
this.checked.delete(row.model.id);
|
|
@@ -263,7 +263,7 @@ export class FetchModelsPane {
|
|
|
263
263
|
this.host.refresh();
|
|
264
264
|
}
|
|
265
265
|
importChecked() {
|
|
266
|
-
if (this.state.type !== "results"
|
|
266
|
+
if (this.state.type !== "results")
|
|
267
267
|
return;
|
|
268
268
|
// Nothing checked: import the highlighted row, like a fuzzy picker. Only Esc discards.
|
|
269
269
|
let chosen;
|
|
@@ -274,21 +274,22 @@ export class FetchModelsPane {
|
|
|
274
274
|
chosen = [row.model];
|
|
275
275
|
}
|
|
276
276
|
else {
|
|
277
|
-
chosen = this.state.models.filter((model) => this.checked.has(model.id));
|
|
277
|
+
chosen = this.state.catalog.models.filter((model) => this.checked.has(model.id));
|
|
278
278
|
}
|
|
279
279
|
const controller = new AbortController();
|
|
280
|
-
|
|
281
|
-
this.
|
|
282
|
-
this.error = undefined;
|
|
280
|
+
const catalog = this.state.catalog;
|
|
281
|
+
this.state = { type: "importing", catalog, controller };
|
|
283
282
|
this.host.refresh();
|
|
284
283
|
void this.host
|
|
285
284
|
.importModels(chosen, controller.signal)
|
|
286
285
|
.then((error) => {
|
|
287
|
-
if (this.disposed ||
|
|
286
|
+
if (this.disposed ||
|
|
287
|
+
controller.signal.aborted ||
|
|
288
|
+
this.state.type !== "importing" ||
|
|
289
|
+
this.state.controller !== controller)
|
|
288
290
|
return;
|
|
289
|
-
this.importing = false;
|
|
290
291
|
if (error) {
|
|
291
|
-
this.
|
|
292
|
+
this.state = { type: "results", catalog, error };
|
|
292
293
|
this.host.setFetchStatus("· import failed");
|
|
293
294
|
return this.host.refresh();
|
|
294
295
|
}
|
|
@@ -297,35 +298,39 @@ export class FetchModelsPane {
|
|
|
297
298
|
this.host.popPane(); // back to the left column with the new models visible
|
|
298
299
|
})
|
|
299
300
|
.catch((error) => {
|
|
300
|
-
if (this.disposed ||
|
|
301
|
+
if (this.disposed ||
|
|
302
|
+
controller.signal.aborted ||
|
|
303
|
+
this.state.type !== "importing" ||
|
|
304
|
+
this.state.controller !== controller)
|
|
301
305
|
return;
|
|
302
|
-
this.
|
|
303
|
-
this.error = error instanceof Error ? error.message : String(error);
|
|
306
|
+
this.state = { type: "results", catalog, error: error instanceof Error ? error.message : String(error) };
|
|
304
307
|
this.host.refresh();
|
|
305
308
|
});
|
|
306
309
|
}
|
|
307
310
|
exitResults() {
|
|
308
|
-
this.
|
|
309
|
-
|
|
311
|
+
if (this.state.type === "loading" || this.state.type === "importing")
|
|
312
|
+
this.state.controller.abort();
|
|
310
313
|
this.state = { type: "idle" };
|
|
311
314
|
this.checked = new Set();
|
|
312
315
|
this.host.popPane();
|
|
313
316
|
}
|
|
314
317
|
setFocused(focused) {
|
|
315
318
|
this.focused = focused;
|
|
316
|
-
this.search.focused = focused && this.state.type === "results";
|
|
319
|
+
this.search.focused = focused && (this.state.type === "results" || this.state.type === "importing");
|
|
317
320
|
}
|
|
318
321
|
isEditing() {
|
|
319
|
-
return this.state.type === "results"; // the filter input owns ←/→
|
|
322
|
+
return this.state.type === "results" || this.state.type === "importing"; // the filter input owns ←/→
|
|
320
323
|
}
|
|
321
324
|
dispose() {
|
|
322
325
|
this.disposed = true;
|
|
323
|
-
this.
|
|
326
|
+
if (this.state.type === "loading" || this.state.type === "importing")
|
|
327
|
+
this.state.controller.abort();
|
|
324
328
|
}
|
|
325
329
|
hints() {
|
|
326
330
|
switch (this.state.type) {
|
|
327
331
|
case "loading":
|
|
328
332
|
return keyHint("tui.select.cancel", "cancel request");
|
|
333
|
+
case "importing":
|
|
329
334
|
case "results":
|
|
330
335
|
return [
|
|
331
336
|
rawKeyHint("type", "filter"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-models.js","sourceRoot":"","sources":["../../../../src/extensions/provider/ui/fetch-models.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Fetch Models pane: idle intro → cancellable loading → error / searchable\n * checklist of the remote catalog. Rows summarize the metadata each entry\n * declared; already-configured ids are marked \"Added\" and cannot be checked.\n * Importing appends the new entries with that metadata, saves once, and\n * refreshes the provider immediately.\n */\n\nimport \"../keybindings.ts\";\nimport { keyHint, rawKeyHint } from \"../../../modes/interactive/components/keybinding-hints.ts\";\nimport { truncate } from \"../constants.ts\";\nimport { modelCatalogUrl, type ProbeModel } from \"../probe.ts\";\nimport type { EditorHost, EditorPane } from \"./pane.ts\";\nimport { renderInfoLine, renderPlainLine, type ScrollWindowInfo, truncateMiddle, ValueEditor } from \"./value-row.ts\";\n\ntype FetchState =\n\t| { type: \"idle\" }\n\t| { type: \"loading\" }\n\t| { type: \"error\"; message: string }\n\t| { type: \"results\"; models: ProbeModel[]; truncated: boolean };\n\n/** Compact token count for the row note, e.g. `1.0M`; the thresholds match the footer's usage stats. */\nfunction formatTokens(count: number): string {\n\tif (count < 1000) return count.toString();\n\tif (count < 10000) return `${(count / 1000).toFixed(1)}k`;\n\tif (count < 1000000) return `${Math.round(count / 1000)}k`;\n\tif (count < 10000000) return `${(count / 1000000).toFixed(1)}M`;\n\treturn `${Math.round(count / 1000000)}M`;\n}\n\n/** Dim row note for the declared metadata, e.g. `· 1.0M ctx · 393k out · img · think`. */\nfunction metadataNote(model: ProbeModel): string | undefined {\n\tconst parts = [\n\t\tmodel.contextWindow ? `${formatTokens(model.contextWindow)} ctx` : \"\",\n\t\tmodel.maxTokens ? `${formatTokens(model.maxTokens)} out` : \"\",\n\t\tmodel.input?.includes(\"image\") ? \"img\" : \"\",\n\t\tmodel.reasoning ? \"think\" : \"\",\n\t].filter(Boolean);\n\treturn parts.length > 0 ? `· ${parts.join(\" · \")}` : undefined;\n}\n\nexport class FetchModelsPane implements EditorPane {\n\tprivate state: FetchState = { type: \"idle\" };\n\tprivate controller: AbortController | undefined;\n\tprivate search: ValueEditor;\n\tprivate query = \"\";\n\tprivate index = 0;\n\tprivate checked = new Set<string>();\n\tprivate importing = false;\n\tprivate error: string | undefined;\n\tprivate focused = false;\n\tprivate disposed = false;\n\n\tprivate readonly host: EditorHost;\n\tconstructor(host: EditorHost) {\n\t\tthis.host = host;\n\n\t\tthis.search = new ValueEditor({\n\t\t\tonCommit: () => this.importChecked(),\n\t\t\tonCancel: () => this.exitResults(),\n\t\t});\n\t}\n\n\t/** Enter pressed on the left-column row (or on the idle pane): start the request. */\n\tstart(): void {\n\t\tif (this.disposed || this.state.type === \"loading\" || this.importing) return;\n\t\tif (!this.catalogUrl()) return; // the idle pane explains what to configure first\n\t\tconst controller = new AbortController();\n\t\tthis.controller = controller;\n\t\tthis.state = { type: \"loading\" };\n\t\tthis.error = undefined;\n\t\tthis.host.refresh();\n\t\tvoid this.host\n\t\t\t.runFetch(controller.signal)\n\t\t\t.then((result) => {\n\t\t\t\tif (this.disposed || controller.signal.aborted || this.controller !== controller) return;\n\t\t\t\tif (!result.ok) {\n\t\t\t\t\tif (result.error === \"Cancelled.\") return;\n\t\t\t\t\tthis.state = { type: \"error\", message: result.error };\n\t\t\t\t\tthis.host.setFetchStatus(\"· failed\");\n\t\t\t\t} else {\n\t\t\t\t\tthis.state = { type: \"results\", models: result.models, truncated: result.truncated };\n\t\t\t\t\tthis.checked = new Set();\n\t\t\t\t\tthis.query = \"\";\n\t\t\t\t\tthis.search.reset(\"\");\n\t\t\t\t\tthis.index = 0;\n\t\t\t\t\tthis.search.focused = this.focused;\n\t\t\t\t\tthis.host.setFetchStatus(`· ${result.models.length} models`);\n\t\t\t\t}\n\t\t\t\tthis.host.refresh();\n\t\t\t})\n\t\t\t.catch((error: unknown) => {\n\t\t\t\tif (controller.signal.aborted) return;\n\t\t\t\tthis.state = { type: \"error\", message: error instanceof Error ? error.message : String(error) };\n\t\t\t\tthis.host.setFetchStatus(\"· failed\");\n\t\t\t\tthis.host.refresh();\n\t\t\t});\n\t}\n\n\tprivate existingIds(): Set<string> {\n\t\treturn new Set(this.host.store.getModels(this.host.providerId).map((model) => model.id));\n\t}\n\n\t/** URL the catalog would be fetched from; undefined while no baseUrl is configured. */\n\tprivate catalogUrl(): string | undefined {\n\t\tconst baseUrl = this.host.store.getProvider(this.host.providerId)?.baseUrl;\n\t\ttry {\n\t\t\treturn baseUrl ? modelCatalogUrl(new URL(baseUrl), this.host.effectiveApi()).href : undefined;\n\t\t} catch {\n\t\t\treturn undefined; // validated before fetching\n\t\t}\n\t}\n\n\tprivate rows(): { model: ProbeModel; added: boolean }[] {\n\t\tif (this.state.type !== \"results\") return [];\n\t\tconst existing = this.existingIds();\n\t\tconst rows = this.state.models.map((model) => ({ model, added: existing.has(model.id) }));\n\t\tconst query = this.query.trim().toLowerCase();\n\t\tif (!query) return rows;\n\t\treturn rows.filter(\n\t\t\t(row) => row.model.id.toLowerCase().includes(query) || row.model.name?.toLowerCase().includes(query),\n\t\t);\n\t}\n\n\trender(width: number): string[] {\n\t\tconst theme = this.host.theme;\n\t\tconst catalogUrl = this.catalogUrl();\n\t\tswitch (this.state.type) {\n\t\t\tcase \"idle\":\n\t\t\t\t// A real action row, so → moving focus here has a visible effect.\n\t\t\t\treturn catalogUrl\n\t\t\t\t\t? [\n\t\t\t\t\t\t\trenderPlainLine(theme, \"Fetch Models\", {\n\t\t\t\t\t\t\t\tactive: true,\n\t\t\t\t\t\t\t\tpaneFocused: this.focused,\n\t\t\t\t\t\t\t\tnote: `· from ${truncateMiddle(catalogUrl, Math.max(10, width - 22))}`,\n\t\t\t\t\t\t\t\twidth,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t]\n\t\t\t\t\t: [renderInfoLine(theme, \"Set a baseUrl under API Auth first.\", width)];\n\t\t\tcase \"loading\":\n\t\t\t\treturn [\n\t\t\t\t\trenderInfoLine(theme, `Fetching ${catalogUrl ?? \"\"} …`, width),\n\t\t\t\t\trenderInfoLine(theme, \"Esc cancels the request.\", width),\n\t\t\t\t];\n\t\t\tcase \"error\":\n\t\t\t\treturn [\n\t\t\t\t\ttheme.fg(\"error\", truncate(this.state.message, Math.max(10, width - 2))),\n\t\t\t\t\trenderInfoLine(theme, \"Enter retries; Esc goes back.\", width),\n\t\t\t\t];\n\t\t\tcase \"results\": {\n\t\t\t\tconst lines: string[] = [];\n\t\t\t\tif (this.state.truncated) {\n\t\t\t\t\tlines.push(\n\t\t\t\t\t\trenderInfoLine(theme, \"The catalog was truncated; refine manually if a model is missing.\", width),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tlines.push(this.search.renderLine(width));\n\t\t\t\t// All rows render; the editor's fixed window scrolls around scrollWindow().\n\t\t\t\tconst rows = this.rows();\n\t\t\t\tfor (const [rowIndex, row] of rows.entries()) {\n\t\t\t\t\tif (row.added) {\n\t\t\t\t\t\tlines.push(\n\t\t\t\t\t\t\trenderPlainLine(theme, row.model.id, {\n\t\t\t\t\t\t\t\tactive: rowIndex === this.index,\n\t\t\t\t\t\t\t\tpaneFocused: this.focused,\n\t\t\t\t\t\t\t\tdim: true,\n\t\t\t\t\t\t\t\tnote: \"· Added\",\n\t\t\t\t\t\t\t\twidth,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tlines.push(\n\t\t\t\t\t\trenderPlainLine(theme, row.model.name ? `${row.model.id} · ${row.model.name}` : row.model.id, {\n\t\t\t\t\t\t\tchecked: this.checked.has(row.model.id),\n\t\t\t\t\t\t\tactive: rowIndex === this.index,\n\t\t\t\t\t\t\tpaneFocused: this.focused,\n\t\t\t\t\t\t\tnote: metadataNote(row.model),\n\t\t\t\t\t\t\twidth,\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (rows.length === 0) lines.push(renderInfoLine(theme, \"No matching models.\", width));\n\t\t\t\tconst addedCount = rows.filter((row) => row.added).length;\n\t\t\t\tlines.push(\n\t\t\t\t\trenderInfoLine(\n\t\t\t\t\t\ttheme,\n\t\t\t\t\t\t`${this.checked.size} selected · ${rows.length} shown${addedCount ? ` · ${addedCount} already added` : \"\"}`,\n\t\t\t\t\t\twidth,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t\tif (this.importing) lines.push(renderInfoLine(theme, \"Importing…\", width));\n\t\t\t\tif (this.error) lines.push(theme.fg(\"error\", truncate(this.error, Math.max(10, width - 2))));\n\t\t\t\treturn lines;\n\t\t\t}\n\t\t}\n\t}\n\n\tscrollWindow(): ScrollWindowInfo {\n\t\tif (this.state.type !== \"results\") return {};\n\t\t// The truncation notice and the filter input pin above the checklist;\n\t\t// the selection summary (and import progress/error) pin below.\n\t\tconst top = (this.state.truncated ? 1 : 0) + 1;\n\t\tconst bottom = 1 + (this.importing ? 1 : 0) + (this.error ? 1 : 0);\n\t\treturn { top, bottom, cursor: top + this.index };\n\t}\n\n\thandleInput(data: string): void {\n\t\tconst kb = this.host.keybindings;\n\t\tswitch (this.state.type) {\n\t\t\tcase \"idle\":\n\t\t\t\tif (kb.matches(data, \"tui.select.confirm\")) {\n\t\t\t\t\tthis.start(); // guarded internally\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (kb.matches(data, \"tui.select.cancel\")) {\n\t\t\t\t\tthis.host.popPane();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\tcase \"loading\":\n\t\t\t\tif (kb.matches(data, \"tui.select.cancel\")) {\n\t\t\t\t\tthis.controller?.abort();\n\t\t\t\t\tthis.state = { type: \"idle\" };\n\t\t\t\t\tthis.host.refresh();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\tcase \"error\":\n\t\t\t\tif (kb.matches(data, \"tui.select.confirm\")) {\n\t\t\t\t\tthis.start();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (kb.matches(data, \"tui.select.cancel\")) {\n\t\t\t\t\tthis.host.popPane();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\tcase \"results\":\n\t\t\t\tthis.handleResultsInput(data);\n\t\t\t\treturn;\n\t\t}\n\t}\n\n\tprivate handleResultsInput(data: string): void {\n\t\tconst kb = this.host.keybindings;\n\t\tconst rows = this.rows();\n\t\tif (kb.matches(data, \"tui.select.up\")) {\n\t\t\tif (rows.length > 0) this.index = this.index === 0 ? rows.length - 1 : this.index - 1;\n\t\t\tthis.host.refresh();\n\t\t\treturn;\n\t\t}\n\t\tif (kb.matches(data, \"tui.select.down\")) {\n\t\t\tif (rows.length > 0) this.index = (this.index + 1) % rows.length;\n\t\t\tthis.host.refresh();\n\t\t\treturn;\n\t\t}\n\t\tif (kb.matches(data, \"app.list.toggle\")) {\n\t\t\tconst row = rows[this.index];\n\t\t\tif (!row || row.added || this.importing) return;\n\t\t\tif (this.checked.has(row.model.id)) this.checked.delete(row.model.id);\n\t\t\telse this.checked.add(row.model.id);\n\t\t\tthis.host.refresh();\n\t\t\treturn;\n\t\t}\n\t\tif (kb.matches(data, \"tui.select.cancel\")) {\n\t\t\tthis.exitResults();\n\t\t\treturn;\n\t\t}\n\t\tif (kb.matches(data, \"tui.select.confirm\")) {\n\t\t\tthis.importChecked();\n\t\t\treturn;\n\t\t}\n\t\tconst before = this.query;\n\t\tthis.search.handleInput(data);\n\t\tthis.query = this.search.value;\n\t\tif (this.query !== before) this.index = 0;\n\t\tthis.host.refresh();\n\t}\n\n\tprivate importChecked(): void {\n\t\tif (this.state.type !== \"results\" || this.importing) return;\n\t\t// Nothing checked: import the highlighted row, like a fuzzy picker. Only Esc discards.\n\t\tlet chosen: ProbeModel[];\n\t\tif (this.checked.size === 0) {\n\t\t\tconst row = this.rows()[this.index];\n\t\t\tif (!row || row.added) return;\n\t\t\tchosen = [row.model];\n\t\t} else {\n\t\t\tchosen = this.state.models.filter((model) => this.checked.has(model.id));\n\t\t}\n\t\tconst controller = new AbortController();\n\t\tthis.controller = controller;\n\t\tthis.importing = true;\n\t\tthis.error = undefined;\n\t\tthis.host.refresh();\n\t\tvoid this.host\n\t\t\t.importModels(chosen, controller.signal)\n\t\t\t.then((error) => {\n\t\t\t\tif (this.disposed || controller.signal.aborted || this.controller !== controller) return;\n\t\t\t\tthis.importing = false;\n\t\t\t\tif (error) {\n\t\t\t\t\tthis.error = error;\n\t\t\t\t\tthis.host.setFetchStatus(\"· import failed\");\n\t\t\t\t\treturn this.host.refresh();\n\t\t\t\t}\n\t\t\t\tthis.host.setFetchStatus(`· ${this.host.store.getModels(this.host.providerId).length} models`);\n\t\t\t\tthis.state = { type: \"idle\" };\n\t\t\t\tthis.host.popPane(); // back to the left column with the new models visible\n\t\t\t})\n\t\t\t.catch((error: unknown) => {\n\t\t\t\tif (this.disposed || controller.signal.aborted || this.controller !== controller) return;\n\t\t\t\tthis.importing = false;\n\t\t\t\tthis.error = error instanceof Error ? error.message : String(error);\n\t\t\t\tthis.host.refresh();\n\t\t\t});\n\t}\n\n\tprivate exitResults(): void {\n\t\tthis.controller?.abort();\n\t\tthis.importing = false;\n\t\tthis.state = { type: \"idle\" };\n\t\tthis.checked = new Set();\n\t\tthis.host.popPane();\n\t}\n\n\tsetFocused(focused: boolean): void {\n\t\tthis.focused = focused;\n\t\tthis.search.focused = focused && this.state.type === \"results\";\n\t}\n\n\tisEditing(): boolean {\n\t\treturn this.state.type === \"results\"; // the filter input owns ←/→\n\t}\n\n\tdispose(): void {\n\t\tthis.disposed = true;\n\t\tthis.controller?.abort();\n\t}\n\n\thints(): string {\n\t\tswitch (this.state.type) {\n\t\t\tcase \"loading\":\n\t\t\t\treturn keyHint(\"tui.select.cancel\", \"cancel request\");\n\t\t\tcase \"results\":\n\t\t\t\treturn [\n\t\t\t\t\trawKeyHint(\"type\", \"filter\"),\n\t\t\t\t\tkeyHint(\"app.list.toggle\", \"check\"),\n\t\t\t\t\tkeyHint(\"tui.select.confirm\", \"import\"),\n\t\t\t\t\tkeyHint(\"tui.select.cancel\", \"discard\"),\n\t\t\t\t].join(\" \");\n\t\t\tcase \"error\":\n\t\t\t\treturn [keyHint(\"tui.select.confirm\", \"retry\"), keyHint(\"tui.select.cancel\", \"back\")].join(\" \");\n\t\t\tdefault:\n\t\t\t\treturn this.catalogUrl()\n\t\t\t\t\t? [keyHint(\"tui.select.confirm\", \"fetch\"), keyHint(\"tui.select.cancel\", \"back\")].join(\" \")\n\t\t\t\t\t: keyHint(\"tui.select.cancel\", \"back\");\n\t\t}\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"fetch-models.js","sourceRoot":"","sources":["../../../../src/extensions/provider/ui/fetch-models.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Fetch Models pane: idle intro → cancellable loading → error / searchable\n * checklist of the remote catalog. Rows summarize the metadata each entry\n * declared; already-configured ids are marked \"Added\" and cannot be checked.\n * Importing appends the new entries with that metadata, saves once, and\n * refreshes the provider immediately.\n */\n\nimport \"../keybindings.ts\";\nimport { keyHint, rawKeyHint } from \"../../../modes/interactive/components/keybinding-hints.ts\";\nimport { truncate } from \"../constants.ts\";\nimport { modelCatalogUrl, type ProbeModel } from \"../probe.ts\";\nimport { moveSelection } from \"./controls.ts\";\nimport type { EditorHost, EditorPane } from \"./pane.ts\";\nimport { renderInfoLine, renderPlainLine, type ScrollWindowInfo, truncateMiddle, ValueEditor } from \"./value-row.ts\";\n\ninterface CatalogResults {\n\tmodels: ProbeModel[];\n\ttruncated: boolean;\n}\n\ntype FetchState =\n\t| { type: \"idle\" }\n\t| { type: \"loading\"; controller: AbortController }\n\t| { type: \"error\"; message: string }\n\t| { type: \"results\"; catalog: CatalogResults; error?: string }\n\t| { type: \"importing\"; catalog: CatalogResults; controller: AbortController };\n\n/** Compact token count for the row note, e.g. `1.0M`; the thresholds match the footer's usage stats. */\nfunction formatTokens(count: number): string {\n\tif (count < 1000) return count.toString();\n\tif (count < 10000) return `${(count / 1000).toFixed(1)}k`;\n\tif (count < 1000000) return `${Math.round(count / 1000)}k`;\n\tif (count < 10000000) return `${(count / 1000000).toFixed(1)}M`;\n\treturn `${Math.round(count / 1000000)}M`;\n}\n\n/** Dim row note for the declared metadata, e.g. `· 1.0M ctx · 393k out · img · think`. */\nfunction metadataNote(model: ProbeModel): string | undefined {\n\tconst parts = [\n\t\tmodel.contextWindow ? `${formatTokens(model.contextWindow)} ctx` : \"\",\n\t\tmodel.maxTokens ? `${formatTokens(model.maxTokens)} out` : \"\",\n\t\tmodel.input?.includes(\"image\") ? \"img\" : \"\",\n\t\tmodel.reasoning ? \"think\" : \"\",\n\t].filter(Boolean);\n\treturn parts.length > 0 ? `· ${parts.join(\" · \")}` : undefined;\n}\n\nexport class FetchModelsPane implements EditorPane {\n\tprivate state: FetchState = { type: \"idle\" };\n\tprivate search: ValueEditor;\n\tprivate query = \"\";\n\tprivate index = 0;\n\tprivate checked = new Set<string>();\n\tprivate focused = false;\n\tprivate disposed = false;\n\n\tprivate readonly host: EditorHost;\n\tconstructor(host: EditorHost) {\n\t\tthis.host = host;\n\n\t\tthis.search = new ValueEditor({\n\t\t\tonCommit: () => this.importChecked(),\n\t\t\tonCancel: () => this.exitResults(),\n\t\t});\n\t}\n\n\t/** Enter pressed on the left-column row (or on the idle pane): start the request. */\n\tstart(): void {\n\t\tif (this.disposed || this.state.type === \"loading\" || this.state.type === \"importing\") return;\n\t\tif (!this.catalogUrl()) return; // the idle pane explains what to configure first\n\t\tconst controller = new AbortController();\n\t\tthis.state = { type: \"loading\", controller };\n\t\tthis.host.refresh();\n\t\tvoid this.host\n\t\t\t.runFetch(controller.signal)\n\t\t\t.then((result) => {\n\t\t\t\tif (\n\t\t\t\t\tthis.disposed ||\n\t\t\t\t\tcontroller.signal.aborted ||\n\t\t\t\t\tthis.state.type !== \"loading\" ||\n\t\t\t\t\tthis.state.controller !== controller\n\t\t\t\t)\n\t\t\t\t\treturn;\n\t\t\t\tif (!result.ok) {\n\t\t\t\t\tif (result.error === \"Cancelled.\") return;\n\t\t\t\t\tthis.state = { type: \"error\", message: result.error };\n\t\t\t\t\tthis.host.setFetchStatus(\"· failed\");\n\t\t\t\t} else {\n\t\t\t\t\tthis.state = { type: \"results\", catalog: result };\n\t\t\t\t\tthis.checked = new Set();\n\t\t\t\t\tthis.query = \"\";\n\t\t\t\t\tthis.search.reset(\"\");\n\t\t\t\t\tthis.index = 0;\n\t\t\t\t\tthis.search.focused = this.focused;\n\t\t\t\t\tthis.host.setFetchStatus(`· ${result.models.length} models`);\n\t\t\t\t}\n\t\t\t\tthis.host.refresh();\n\t\t\t})\n\t\t\t.catch((error: unknown) => {\n\t\t\t\tif (\n\t\t\t\t\tthis.disposed ||\n\t\t\t\t\tcontroller.signal.aborted ||\n\t\t\t\t\tthis.state.type !== \"loading\" ||\n\t\t\t\t\tthis.state.controller !== controller\n\t\t\t\t)\n\t\t\t\t\treturn;\n\t\t\t\tthis.state = { type: \"error\", message: error instanceof Error ? error.message : String(error) };\n\t\t\t\tthis.host.setFetchStatus(\"· failed\");\n\t\t\t\tthis.host.refresh();\n\t\t\t});\n\t}\n\n\tprivate existingIds(): Set<string> {\n\t\treturn new Set(this.host.store.getModels(this.host.providerId).map((model) => model.id));\n\t}\n\n\t/** URL the catalog would be fetched from; undefined while no baseUrl is configured. */\n\tprivate catalogUrl(): string | undefined {\n\t\tconst baseUrl = this.host.store.getProvider(this.host.providerId)?.baseUrl;\n\t\ttry {\n\t\t\treturn baseUrl ? modelCatalogUrl(new URL(baseUrl), this.host.effectiveApi()).href : undefined;\n\t\t} catch {\n\t\t\treturn undefined; // validated before fetching\n\t\t}\n\t}\n\n\tprivate rows(): { model: ProbeModel; added: boolean }[] {\n\t\tif (this.state.type !== \"results\" && this.state.type !== \"importing\") return [];\n\t\tconst existing = this.existingIds();\n\t\tconst rows = this.state.catalog.models.map((model) => ({ model, added: existing.has(model.id) }));\n\t\tconst query = this.query.trim().toLowerCase();\n\t\tif (!query) return rows;\n\t\treturn rows.filter(\n\t\t\t(row) => row.model.id.toLowerCase().includes(query) || row.model.name?.toLowerCase().includes(query),\n\t\t);\n\t}\n\n\trender(width: number): string[] {\n\t\tconst theme = this.host.theme;\n\t\tconst catalogUrl = this.catalogUrl();\n\t\tswitch (this.state.type) {\n\t\t\tcase \"idle\":\n\t\t\t\t// A real action row, so → moving focus here has a visible effect.\n\t\t\t\treturn catalogUrl\n\t\t\t\t\t? [\n\t\t\t\t\t\t\trenderPlainLine(theme, \"Fetch Models\", {\n\t\t\t\t\t\t\t\tactive: true,\n\t\t\t\t\t\t\t\tpaneFocused: this.focused,\n\t\t\t\t\t\t\t\tnote: `· from ${truncateMiddle(catalogUrl, Math.max(10, width - 22))}`,\n\t\t\t\t\t\t\t\twidth,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t]\n\t\t\t\t\t: [renderInfoLine(theme, \"Set a baseUrl under API Auth first.\", width)];\n\t\t\tcase \"loading\":\n\t\t\t\treturn [\n\t\t\t\t\trenderInfoLine(theme, `Fetching ${catalogUrl ?? \"\"} …`, width),\n\t\t\t\t\trenderInfoLine(theme, \"Esc cancels the request.\", width),\n\t\t\t\t];\n\t\t\tcase \"error\":\n\t\t\t\treturn [\n\t\t\t\t\ttheme.fg(\"error\", truncate(this.state.message, Math.max(10, width - 2))),\n\t\t\t\t\trenderInfoLine(theme, \"Enter retries; Esc goes back.\", width),\n\t\t\t\t];\n\t\t\tcase \"importing\":\n\t\t\tcase \"results\": {\n\t\t\t\tconst lines: string[] = [];\n\t\t\t\tif (this.state.catalog.truncated) {\n\t\t\t\t\tlines.push(\n\t\t\t\t\t\trenderInfoLine(theme, \"The catalog was truncated; refine manually if a model is missing.\", width),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tlines.push(this.search.renderLine(width));\n\t\t\t\t// All rows render; the editor's fixed window scrolls around scrollWindow().\n\t\t\t\tconst rows = this.rows();\n\t\t\t\tfor (const [rowIndex, row] of rows.entries()) {\n\t\t\t\t\tif (row.added) {\n\t\t\t\t\t\tlines.push(\n\t\t\t\t\t\t\trenderPlainLine(theme, row.model.id, {\n\t\t\t\t\t\t\t\tactive: rowIndex === this.index,\n\t\t\t\t\t\t\t\tpaneFocused: this.focused,\n\t\t\t\t\t\t\t\tdim: true,\n\t\t\t\t\t\t\t\tnote: \"· Added\",\n\t\t\t\t\t\t\t\twidth,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tlines.push(\n\t\t\t\t\t\trenderPlainLine(theme, row.model.name ? `${row.model.id} · ${row.model.name}` : row.model.id, {\n\t\t\t\t\t\t\tchecked: this.checked.has(row.model.id),\n\t\t\t\t\t\t\tactive: rowIndex === this.index,\n\t\t\t\t\t\t\tpaneFocused: this.focused,\n\t\t\t\t\t\t\tnote: metadataNote(row.model),\n\t\t\t\t\t\t\twidth,\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (rows.length === 0) lines.push(renderInfoLine(theme, \"No matching models.\", width));\n\t\t\t\tconst addedCount = rows.filter((row) => row.added).length;\n\t\t\t\tlines.push(\n\t\t\t\t\trenderInfoLine(\n\t\t\t\t\t\ttheme,\n\t\t\t\t\t\t`${this.checked.size} selected · ${rows.length} shown${addedCount ? ` · ${addedCount} already added` : \"\"}`,\n\t\t\t\t\t\twidth,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t\tif (this.state.type === \"importing\") lines.push(renderInfoLine(theme, \"Importing…\", width));\n\t\t\t\tif (this.state.type === \"results\" && this.state.error)\n\t\t\t\t\tlines.push(theme.fg(\"error\", truncate(this.state.error, Math.max(10, width - 2))));\n\t\t\t\treturn lines;\n\t\t\t}\n\t\t}\n\t}\n\n\tscrollWindow(): ScrollWindowInfo {\n\t\tif (this.state.type !== \"results\" && this.state.type !== \"importing\") return {};\n\t\t// The truncation notice and the filter input pin above the checklist;\n\t\t// the selection summary (and import progress/error) pin below.\n\t\tconst top = (this.state.catalog.truncated ? 1 : 0) + 1;\n\t\tconst bottom = 1 + (this.state.type === \"importing\" || this.state.error ? 1 : 0);\n\t\treturn { top, bottom, cursor: top + this.index };\n\t}\n\n\thandleInput(data: string): void {\n\t\tconst kb = this.host.keybindings;\n\t\tswitch (this.state.type) {\n\t\t\tcase \"idle\":\n\t\t\t\tif (kb.matches(data, \"tui.select.confirm\")) {\n\t\t\t\t\tthis.start(); // guarded internally\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (kb.matches(data, \"tui.select.cancel\")) {\n\t\t\t\t\tthis.host.popPane();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\tcase \"loading\":\n\t\t\t\tif (kb.matches(data, \"tui.select.cancel\")) {\n\t\t\t\t\tthis.state.controller.abort();\n\t\t\t\t\tthis.state = { type: \"idle\" };\n\t\t\t\t\tthis.host.refresh();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\tcase \"error\":\n\t\t\t\tif (kb.matches(data, \"tui.select.confirm\")) {\n\t\t\t\t\tthis.start();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (kb.matches(data, \"tui.select.cancel\")) {\n\t\t\t\t\tthis.host.popPane();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\tcase \"importing\":\n\t\t\tcase \"results\":\n\t\t\t\tthis.handleResultsInput(data);\n\t\t\t\treturn;\n\t\t}\n\t}\n\n\tprivate handleResultsInput(data: string): void {\n\t\tconst kb = this.host.keybindings;\n\t\tconst rows = this.rows();\n\t\tconst next = moveSelection(kb, data, this.index, rows.length);\n\t\tif (next !== undefined) {\n\t\t\tthis.index = next;\n\t\t\tthis.host.refresh();\n\t\t\treturn;\n\t\t}\n\t\tif (kb.matches(data, \"app.list.toggle\")) {\n\t\t\tconst row = rows[this.index];\n\t\t\tif (!row || row.added || this.state.type === \"importing\") return;\n\t\t\tif (this.checked.has(row.model.id)) this.checked.delete(row.model.id);\n\t\t\telse this.checked.add(row.model.id);\n\t\t\tthis.host.refresh();\n\t\t\treturn;\n\t\t}\n\t\tif (kb.matches(data, \"tui.select.cancel\")) {\n\t\t\tthis.exitResults();\n\t\t\treturn;\n\t\t}\n\t\tif (kb.matches(data, \"tui.select.confirm\")) {\n\t\t\tthis.importChecked();\n\t\t\treturn;\n\t\t}\n\t\tconst before = this.query;\n\t\tthis.search.handleInput(data);\n\t\tthis.query = this.search.value;\n\t\tif (this.query !== before) this.index = 0;\n\t\tthis.host.refresh();\n\t}\n\n\tprivate importChecked(): void {\n\t\tif (this.state.type !== \"results\") return;\n\t\t// Nothing checked: import the highlighted row, like a fuzzy picker. Only Esc discards.\n\t\tlet chosen: ProbeModel[];\n\t\tif (this.checked.size === 0) {\n\t\t\tconst row = this.rows()[this.index];\n\t\t\tif (!row || row.added) return;\n\t\t\tchosen = [row.model];\n\t\t} else {\n\t\t\tchosen = this.state.catalog.models.filter((model) => this.checked.has(model.id));\n\t\t}\n\t\tconst controller = new AbortController();\n\t\tconst catalog = this.state.catalog;\n\t\tthis.state = { type: \"importing\", catalog, controller };\n\t\tthis.host.refresh();\n\t\tvoid this.host\n\t\t\t.importModels(chosen, controller.signal)\n\t\t\t.then((error) => {\n\t\t\t\tif (\n\t\t\t\t\tthis.disposed ||\n\t\t\t\t\tcontroller.signal.aborted ||\n\t\t\t\t\tthis.state.type !== \"importing\" ||\n\t\t\t\t\tthis.state.controller !== controller\n\t\t\t\t)\n\t\t\t\t\treturn;\n\t\t\t\tif (error) {\n\t\t\t\t\tthis.state = { type: \"results\", catalog, error };\n\t\t\t\t\tthis.host.setFetchStatus(\"· import failed\");\n\t\t\t\t\treturn this.host.refresh();\n\t\t\t\t}\n\t\t\t\tthis.host.setFetchStatus(`· ${this.host.store.getModels(this.host.providerId).length} models`);\n\t\t\t\tthis.state = { type: \"idle\" };\n\t\t\t\tthis.host.popPane(); // back to the left column with the new models visible\n\t\t\t})\n\t\t\t.catch((error: unknown) => {\n\t\t\t\tif (\n\t\t\t\t\tthis.disposed ||\n\t\t\t\t\tcontroller.signal.aborted ||\n\t\t\t\t\tthis.state.type !== \"importing\" ||\n\t\t\t\t\tthis.state.controller !== controller\n\t\t\t\t)\n\t\t\t\t\treturn;\n\t\t\t\tthis.state = { type: \"results\", catalog, error: error instanceof Error ? error.message : String(error) };\n\t\t\t\tthis.host.refresh();\n\t\t\t});\n\t}\n\n\tprivate exitResults(): void {\n\t\tif (this.state.type === \"loading\" || this.state.type === \"importing\") this.state.controller.abort();\n\t\tthis.state = { type: \"idle\" };\n\t\tthis.checked = new Set();\n\t\tthis.host.popPane();\n\t}\n\n\tsetFocused(focused: boolean): void {\n\t\tthis.focused = focused;\n\t\tthis.search.focused = focused && (this.state.type === \"results\" || this.state.type === \"importing\");\n\t}\n\n\tisEditing(): boolean {\n\t\treturn this.state.type === \"results\" || this.state.type === \"importing\"; // the filter input owns ←/→\n\t}\n\n\tdispose(): void {\n\t\tthis.disposed = true;\n\t\tif (this.state.type === \"loading\" || this.state.type === \"importing\") this.state.controller.abort();\n\t}\n\n\thints(): string {\n\t\tswitch (this.state.type) {\n\t\t\tcase \"loading\":\n\t\t\t\treturn keyHint(\"tui.select.cancel\", \"cancel request\");\n\t\t\tcase \"importing\":\n\t\t\tcase \"results\":\n\t\t\t\treturn [\n\t\t\t\t\trawKeyHint(\"type\", \"filter\"),\n\t\t\t\t\tkeyHint(\"app.list.toggle\", \"check\"),\n\t\t\t\t\tkeyHint(\"tui.select.confirm\", \"import\"),\n\t\t\t\t\tkeyHint(\"tui.select.cancel\", \"discard\"),\n\t\t\t\t].join(\" \");\n\t\t\tcase \"error\":\n\t\t\t\treturn [keyHint(\"tui.select.confirm\", \"retry\"), keyHint(\"tui.select.cancel\", \"back\")].join(\" \");\n\t\t\tdefault:\n\t\t\t\treturn this.catalogUrl()\n\t\t\t\t\t? [keyHint(\"tui.select.confirm\", \"fetch\"), keyHint(\"tui.select.cancel\", \"back\")].join(\" \")\n\t\t\t\t\t: keyHint(\"tui.select.cancel\", \"back\");\n\t\t}\n\t}\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-fields.d.ts","sourceRoot":"","sources":["../../../../src/extensions/provider/ui/model-fields.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"model-fields.d.ts","sourceRoot":"","sources":["../../../../src/extensions/provider/ui/model-fields.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,mBAAmB,CAAC;AAU3B,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAErE,OAAO,EAIN,KAAK,gBAAgB,EAErB,MAAM,gBAAgB,CAAC;AAcxB,qBAAa,eAAgB,YAAW,UAAU;IACjD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;IAEzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;gBACxB,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW;IAoBhD,mEAAmE;IACnE,cAAc,IAAI,IAAI;IAKtB,oEAAoE;IACpE,OAAO,CAAC,UAAU;IAIlB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAqB/B,YAAY,IAAI,gBAAgB;IAShC,OAAO,CAAC,SAAS;IAsFjB,uGAAuG;IACvG,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,cAAc;IAkCtB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IA6C/B,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,QAAQ;IAyChB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,SAAS;IA0BjB,OAAO,CAAC,UAAU;IA0ElB,OAAO,CAAC,WAAW;IAiBnB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAKlC,SAAS,IAAI,OAAO;IAIpB,OAAO,IAAI,IAAI;IAIf,KAAK,IAAI,MAAM;CASf"}
|
|
@@ -11,7 +11,8 @@ import { plural, truncate } from "../constants.js";
|
|
|
11
11
|
import { DELETE } from "../store.js";
|
|
12
12
|
import { BuiltinCandidatesPane } from "./builtin-data.js";
|
|
13
13
|
import { CompatPane } from "./compat.js";
|
|
14
|
-
import {
|
|
14
|
+
import { moveSelection } from "./controls.js";
|
|
15
|
+
import { CostPane, createReasoningPane, InputTypesPane, ModelSpecificApiPane } from "./model-options.js";
|
|
15
16
|
import { ThinkingMapPane } from "./thinking-map.js";
|
|
16
17
|
import { isPrintableInput, renderInfoLine, renderKeyValueLine, ValueEditor, } from "./value-row.js";
|
|
17
18
|
const DEFAULT_CONTEXT_WINDOW = 128000;
|
|
@@ -209,13 +210,9 @@ export class ModelFieldsPane {
|
|
|
209
210
|
this.host.refresh();
|
|
210
211
|
return;
|
|
211
212
|
}
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
this.
|
|
215
|
-
return;
|
|
216
|
-
}
|
|
217
|
-
if (kb.matches(data, "tui.select.down")) {
|
|
218
|
-
this.index = (this.index + 1) % this.rows.length;
|
|
213
|
+
const next = moveSelection(kb, data, this.index, this.rows.length);
|
|
214
|
+
if (next !== undefined) {
|
|
215
|
+
this.index = next;
|
|
219
216
|
this.host.refresh();
|
|
220
217
|
return;
|
|
221
218
|
}
|
|
@@ -251,7 +248,7 @@ export class ModelFieldsPane {
|
|
|
251
248
|
if (row.kind !== "reasoning")
|
|
252
249
|
return; // Space on other rows falls to overwrite handling below
|
|
253
250
|
const current = this.model.read().reasoning;
|
|
254
|
-
this.
|
|
251
|
+
this.model.setField(["reasoning"], current !== true);
|
|
255
252
|
}
|
|
256
253
|
enterRow() {
|
|
257
254
|
const row = this.rows[this.index];
|
|
@@ -261,7 +258,7 @@ export class ModelFieldsPane {
|
|
|
261
258
|
this.beginEdit("tweak");
|
|
262
259
|
return;
|
|
263
260
|
case "reasoning":
|
|
264
|
-
this.host.pushPane(
|
|
261
|
+
this.host.pushPane(createReasoningPane(this.host, this.model));
|
|
265
262
|
return;
|
|
266
263
|
case "subpage":
|
|
267
264
|
this.pushSubpage(row.key);
|
|
@@ -287,7 +284,7 @@ export class ModelFieldsPane {
|
|
|
287
284
|
return;
|
|
288
285
|
}
|
|
289
286
|
this.host.confirm(`Delete model "${id}" from ${this.host.providerId}?`, "Delete Model", () => {
|
|
290
|
-
this.host.
|
|
287
|
+
this.host.edits.removeModel(id);
|
|
291
288
|
this.host.onModelRemoved(id);
|
|
292
289
|
});
|
|
293
290
|
return;
|
|
@@ -382,13 +379,13 @@ export class ModelFieldsPane {
|
|
|
382
379
|
return;
|
|
383
380
|
}
|
|
384
381
|
if (row.key === "name") {
|
|
385
|
-
this.
|
|
382
|
+
this.model.setField(["name"], value === "" ? DELETE : value);
|
|
386
383
|
finish();
|
|
387
384
|
return;
|
|
388
385
|
}
|
|
389
386
|
// Numeric rows: empty clears the override; otherwise a finite positive integer.
|
|
390
387
|
if (value === "") {
|
|
391
|
-
this.
|
|
388
|
+
this.model.setField([row.key], DELETE);
|
|
392
389
|
finish();
|
|
393
390
|
return;
|
|
394
391
|
}
|
|
@@ -397,7 +394,7 @@ export class ModelFieldsPane {
|
|
|
397
394
|
finish(`${row.key} must be a positive integer.`);
|
|
398
395
|
return;
|
|
399
396
|
}
|
|
400
|
-
this.
|
|
397
|
+
this.model.setField([row.key], parsed);
|
|
401
398
|
finish();
|
|
402
399
|
return;
|
|
403
400
|
}
|