@ashx-j/lunr-dev 0.2.13-dev.8.1 → 0.2.19-dev.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +60 -1
- package/README.md +7 -1
- package/dist/builtin-extensions/ashxj-thinking.d.ts +1 -0
- package/dist/builtin-extensions/ashxj-thinking.d.ts.map +1 -1
- package/dist/builtin-extensions/ashxj-thinking.js +44 -19
- package/dist/builtin-extensions/ashxj-thinking.js.map +1 -1
- package/dist/builtin-extensions/ashxj-tui.d.ts +14 -0
- package/dist/builtin-extensions/ashxj-tui.d.ts.map +1 -1
- package/dist/builtin-extensions/ashxj-tui.js +37 -3
- package/dist/builtin-extensions/ashxj-tui.js.map +1 -1
- package/dist/builtin-extensions/index.d.ts +1 -15
- package/dist/builtin-extensions/index.d.ts.map +1 -1
- package/dist/builtin-extensions/index.js +8 -21
- package/dist/builtin-extensions/index.js.map +1 -1
- package/dist/builtin-extensions/lunr-computer-use.d.ts +3 -0
- package/dist/builtin-extensions/lunr-computer-use.d.ts.map +1 -0
- package/dist/builtin-extensions/lunr-computer-use.js +157 -0
- package/dist/builtin-extensions/lunr-computer-use.js.map +1 -0
- package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.d.ts.map +1 -1
- package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.js +6 -2
- package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.js.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/index.d.ts +4 -0
- package/dist/builtin-extensions/pi-lsp-extension/src/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/index.js +172 -171
- package/dist/builtin-extensions/pi-lsp-extension/src/index.js.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/runtime.d.ts +50 -0
- package/dist/builtin-extensions/pi-lsp-extension/src/runtime.d.ts.map +1 -0
- package/dist/builtin-extensions/pi-lsp-extension/src/runtime.js +131 -0
- package/dist/builtin-extensions/pi-lsp-extension/src/runtime.js.map +1 -0
- package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.d.ts +7 -0
- package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.d.ts.map +1 -0
- package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.js +211 -0
- package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.js.map +1 -0
- package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.d.ts +0 -5
- package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.js +0 -202
- package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.js.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/index.js +276 -109
- package/dist/builtin-extensions/pi-mcp-adapter/index.js.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/init.d.ts +4 -1
- package/dist/builtin-extensions/pi-mcp-adapter/init.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/init.js +10 -3
- package/dist/builtin-extensions/pi-mcp-adapter/init.js.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/metadata-cache.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/metadata-cache.js +6 -1
- package/dist/builtin-extensions/pi-mcp-adapter/metadata-cache.js.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/server-manager.d.ts +6 -1
- package/dist/builtin-extensions/pi-mcp-adapter/server-manager.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/server-manager.js +33 -8
- package/dist/builtin-extensions/pi-mcp-adapter/server-manager.js.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.js +2 -1
- package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.js.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.d.ts +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.js +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/index.js +68 -15
- package/dist/builtin-extensions/pi-subagents/src/extension/index.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/schemas.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js +6 -2
- package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.js +5 -2
- package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/request-params.d.ts +10 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/request-params.d.ts.map +1 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/request-params.js +38 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/request-params.js.map +1 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js +3 -16
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.js +2 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/fork-context.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/fork-context.js +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/fork-context.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts +2 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render.js +72 -31
- package/dist/builtin-extensions/pi-subagents/src/tui/render.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/review.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/review.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/review.js +2 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/review.js.map +1 -1
- package/dist/builtin-extensions/pi-web-access/extract.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-web-access/extract.js +105 -54
- package/dist/builtin-extensions/pi-web-access/extract.js.map +1 -1
- package/dist/builtin-extensions/pi-web-access/gemini-search.d.ts +1 -1
- package/dist/builtin-extensions/pi-web-access/gemini-search.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-web-access/gemini-search.js +82 -65
- package/dist/builtin-extensions/pi-web-access/gemini-search.js.map +1 -1
- package/dist/builtin-extensions/pi-web-access/github-extract.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-web-access/github-extract.js +2 -0
- package/dist/builtin-extensions/pi-web-access/github-extract.js.map +1 -1
- package/dist/builtin-extensions/pi-web-access/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-web-access/index.js +259 -168
- package/dist/builtin-extensions/pi-web-access/index.js.map +1 -1
- package/dist/builtin-extensions/pi-web-access/lazy.d.ts +18 -0
- package/dist/builtin-extensions/pi-web-access/lazy.d.ts.map +1 -0
- package/dist/builtin-extensions/pi-web-access/lazy.js +19 -0
- package/dist/builtin-extensions/pi-web-access/lazy.js.map +1 -0
- package/dist/builtin-extensions/pi-web-access/session-cleanup.d.ts +6 -0
- package/dist/builtin-extensions/pi-web-access/session-cleanup.d.ts.map +1 -0
- package/dist/builtin-extensions/pi-web-access/session-cleanup.js +17 -0
- package/dist/builtin-extensions/pi-web-access/session-cleanup.js.map +1 -0
- package/dist/catalog/publication.json +12 -12
- package/dist/cli-runtime.d.ts +3 -0
- package/dist/cli-runtime.d.ts.map +1 -0
- package/dist/cli-runtime.js +73 -0
- package/dist/cli-runtime.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +14 -53
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +1 -1
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session.d.ts +3 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +56 -12
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +10 -5
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/computer-use/adapter.d.ts +23 -0
- package/dist/core/computer-use/adapter.d.ts.map +1 -0
- package/dist/core/computer-use/adapter.js +116 -0
- package/dist/core/computer-use/adapter.js.map +1 -0
- package/dist/core/computer-use/lease.d.ts +18 -0
- package/dist/core/computer-use/lease.d.ts.map +1 -0
- package/dist/core/computer-use/lease.js +129 -0
- package/dist/core/computer-use/lease.js.map +1 -0
- package/dist/core/computer-use/macos-runtime.d.ts +14 -0
- package/dist/core/computer-use/macos-runtime.d.ts.map +1 -0
- package/dist/core/computer-use/macos-runtime.js +148 -0
- package/dist/core/computer-use/macos-runtime.js.map +1 -0
- package/dist/core/computer-use/policy.d.ts +19 -0
- package/dist/core/computer-use/policy.d.ts.map +1 -0
- package/dist/core/computer-use/policy.js +66 -0
- package/dist/core/computer-use/policy.js.map +1 -0
- package/dist/core/computer-use/release.generated.d.ts +31 -0
- package/dist/core/computer-use/release.generated.d.ts.map +1 -0
- package/dist/core/computer-use/release.generated.js +36 -0
- package/dist/core/computer-use/release.generated.js.map +1 -0
- package/dist/core/computer-use/runtime.d.ts +13 -0
- package/dist/core/computer-use/runtime.d.ts.map +1 -0
- package/dist/core/computer-use/runtime.js +158 -0
- package/dist/core/computer-use/runtime.js.map +1 -0
- package/dist/core/computer-use/schemas.d.ts +88 -0
- package/dist/core/computer-use/schemas.d.ts.map +1 -0
- package/dist/core/computer-use/schemas.js +80 -0
- package/dist/core/computer-use/schemas.js.map +1 -0
- package/dist/core/computer-use/windows-desktop.d.ts +3 -0
- package/dist/core/computer-use/windows-desktop.d.ts.map +1 -0
- package/dist/core/computer-use/windows-desktop.js +48 -0
- package/dist/core/computer-use/windows-desktop.js.map +1 -0
- package/dist/core/computer-use/workflow.d.ts +24 -0
- package/dist/core/computer-use/workflow.d.ts.map +1 -0
- package/dist/core/computer-use/workflow.js +330 -0
- package/dist/core/computer-use/workflow.js.map +1 -0
- package/dist/core/extensions/host-static.d.ts.map +1 -1
- package/dist/core/extensions/host-static.js +34 -12
- package/dist/core/extensions/host-static.js.map +1 -1
- package/dist/core/extensions/loader.d.ts +1 -2
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +10 -64
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/types.d.ts +2 -2
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/footer-data-provider.d.ts.map +1 -1
- package/dist/core/footer-data-provider.js +2 -0
- package/dist/core/footer-data-provider.js.map +1 -1
- package/dist/core/keybindings.d.ts +2 -2
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +2 -2
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/model-runtime.d.ts +0 -3
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +1 -10
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +1 -1
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/permissions.d.ts +1 -3
- package/dist/core/permissions.d.ts.map +1 -1
- package/dist/core/permissions.js +33 -25
- package/dist/core/permissions.js.map +1 -1
- package/dist/core/plan-mode.d.ts.map +1 -1
- package/dist/core/plan-mode.js +9 -0
- package/dist/core/plan-mode.js.map +1 -1
- package/dist/core/rollback.d.ts.map +1 -1
- package/dist/core/rollback.js +13 -90
- package/dist/core/rollback.js.map +1 -1
- package/dist/core/sdk.d.ts +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +1 -1
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager.d.ts +0 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +21 -79
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-manager.d.ts +6 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +19 -0
- 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 +0 -1
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/timings.d.ts +2 -1
- package/dist/core/timings.d.ts.map +1 -1
- package/dist/core/timings.js +17 -2
- package/dist/core/timings.js.map +1 -1
- package/dist/dev-cli.js +0 -0
- package/dist/gateway/agent-bridge.d.ts +6 -1
- package/dist/gateway/agent-bridge.d.ts.map +1 -1
- package/dist/gateway/agent-bridge.js +23 -6
- package/dist/gateway/agent-bridge.js.map +1 -1
- package/dist/gateway/commands.d.ts +1 -1
- package/dist/gateway/commands.d.ts.map +1 -1
- package/dist/gateway/commands.js +1 -18
- package/dist/gateway/commands.js.map +1 -1
- package/dist/gateway/cron.d.ts +1 -1
- package/dist/gateway/cron.d.ts.map +1 -1
- package/dist/gateway/cron.js +23 -7
- package/dist/gateway/cron.js.map +1 -1
- package/dist/main.d.ts +2 -2
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +57 -48
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts +4 -2
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +23 -32
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/processes-selector.d.ts +2 -3
- package/dist/modes/interactive/components/processes-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/processes-selector.js +5 -10
- package/dist/modes/interactive/components/processes-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +4 -0
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +20 -0
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +12 -21
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +138 -152
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +95 -84
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/interactive/thinking-level-slash.d.ts +4 -0
- package/dist/modes/interactive/thinking-level-slash.d.ts.map +1 -0
- package/dist/modes/interactive/thinking-level-slash.js +23 -0
- package/dist/modes/interactive/thinking-level-slash.js.map +1 -0
- package/dist/node-runtime/adapter-AZMY335J.js +279 -0
- package/dist/node-runtime/agent-session-services-RSGP5GDN.js +39 -0
- package/dist/node-runtime/benchmark-request-UC7PD3V3.js +57 -0
- package/dist/node-runtime/brave-UWDA3I22.js +143 -0
- package/dist/node-runtime/builtin-extensions-7STLFW3A.js +29 -0
- package/dist/node-runtime/chunk-2IDTZAG5.js +1415 -0
- package/dist/node-runtime/chunk-3GHXVUAK.js +21 -0
- package/dist/node-runtime/chunk-3RCWXWAY.js +466 -0
- package/dist/node-runtime/chunk-3WFAEVKS.js +115 -0
- package/dist/node-runtime/chunk-3X3KZKMI.js +49 -0
- package/dist/node-runtime/chunk-4HXHDDCF.js +16 -0
- package/dist/node-runtime/chunk-4SJWFTUP.js +24 -0
- package/dist/node-runtime/chunk-4ZWGEEAS.js +69 -0
- package/dist/node-runtime/chunk-53YJI7JU.js +137 -0
- package/dist/node-runtime/chunk-5NWQCSKR.js +19218 -0
- package/dist/node-runtime/chunk-5OLJGVCB.js +68 -0
- package/dist/node-runtime/chunk-5Q45AVQG.js +108 -0
- package/dist/node-runtime/chunk-5SQDLSZJ.js +949 -0
- package/dist/node-runtime/chunk-6SPPH4FY.js +1269 -0
- package/dist/node-runtime/chunk-6UB6NKA3.js +860 -0
- package/dist/node-runtime/chunk-7AFOFSDY.js +105 -0
- package/dist/node-runtime/chunk-7N3YHTYF.js +26 -0
- package/dist/node-runtime/chunk-ARC4KOTI.js +11178 -0
- package/dist/node-runtime/chunk-AUXVGBO4.js +19 -0
- package/dist/node-runtime/chunk-AY6CAJSL.js +30 -0
- package/dist/node-runtime/chunk-BHO7O6E5.js +296 -0
- package/dist/node-runtime/chunk-BI3DHYCN.js +8845 -0
- package/dist/node-runtime/chunk-BKAZ6BKX.js +2185 -0
- package/dist/node-runtime/chunk-BR7YDUKA.js +109 -0
- package/dist/node-runtime/chunk-BRJX2PRC.js +53 -0
- package/dist/node-runtime/chunk-C4O2RSQQ.js +37 -0
- package/dist/node-runtime/chunk-CCZJ3PYY.js +17 -0
- package/dist/node-runtime/chunk-CGBXPL3E.js +1171 -0
- package/dist/node-runtime/chunk-CH6OL6P2.js +295 -0
- package/dist/node-runtime/chunk-CJECDQKP.js +19 -0
- package/dist/node-runtime/chunk-DAPBPCBP.js +53 -0
- package/dist/node-runtime/chunk-DDGMHUOW.js +305 -0
- package/dist/node-runtime/chunk-DMMTJQMQ.js +43 -0
- package/dist/node-runtime/chunk-DVGWF6A2.js +1180 -0
- package/dist/node-runtime/chunk-EH2LJQPM.js +64 -0
- package/dist/node-runtime/chunk-EHMBW7FA.js +772 -0
- package/dist/node-runtime/chunk-FLYMHKCS.js +966 -0
- package/dist/node-runtime/chunk-FVDOXRUD.js +96 -0
- package/dist/node-runtime/chunk-GZQHMEWL.js +126 -0
- package/dist/node-runtime/chunk-H2EOZYMP.js +57 -0
- package/dist/node-runtime/chunk-HQCKFM2O.js +56 -0
- package/dist/node-runtime/chunk-HRS4HMDX.js +610 -0
- package/dist/node-runtime/chunk-HYHJIRDW.js +19 -0
- package/dist/node-runtime/chunk-I6R76AG7.js +22 -0
- package/dist/node-runtime/chunk-ISQDQIZN.js +296 -0
- package/dist/node-runtime/chunk-J7QGQD45.js +24921 -0
- package/dist/node-runtime/chunk-JHYKXIMM.js +378 -0
- package/dist/node-runtime/chunk-JT6YCS5B.js +5648 -0
- package/dist/node-runtime/chunk-JZHEUQRL.js +180 -0
- package/dist/node-runtime/chunk-K72NVGUB.js +2834 -0
- package/dist/node-runtime/chunk-KKSIVROT.js +88 -0
- package/dist/node-runtime/chunk-LCACDWHJ.js +1743 -0
- package/dist/node-runtime/chunk-LTXUQJI4.js +173 -0
- package/dist/node-runtime/chunk-LWJXTA6Z.js +6814 -0
- package/dist/node-runtime/chunk-M3LZLQW2.js +98 -0
- package/dist/node-runtime/chunk-MGSB2C3M.js +46 -0
- package/dist/node-runtime/chunk-MGWCVY6Y.js +47 -0
- package/dist/node-runtime/chunk-MJQDX3BA.js +72 -0
- package/dist/node-runtime/chunk-MUMMMTW4.js +8392 -0
- package/dist/node-runtime/chunk-MX3GJNXJ.js +986 -0
- package/dist/node-runtime/chunk-NUIFPZWX.js +209 -0
- package/dist/node-runtime/chunk-OBMWP3I5.js +68 -0
- package/dist/node-runtime/chunk-OR4L3IB2.js +42 -0
- package/dist/node-runtime/chunk-OTT6JMPU.js +807 -0
- package/dist/node-runtime/chunk-PCIGF2XK.js +250 -0
- package/dist/node-runtime/chunk-PL6JKXWI.js +3622 -0
- package/dist/node-runtime/chunk-PVCDKGR6.js +55 -0
- package/dist/node-runtime/chunk-Q4Q6D4IY.js +364 -0
- package/dist/node-runtime/chunk-Q5ZU2VRT.js +83 -0
- package/dist/node-runtime/chunk-QFWG2RVL.js +5477 -0
- package/dist/node-runtime/chunk-RQ2Q5IYR.js +72 -0
- package/dist/node-runtime/chunk-RQ5DNUNG.js +429 -0
- package/dist/node-runtime/chunk-RRIZE6QQ.js +17 -0
- package/dist/node-runtime/chunk-SN6G4OU6.js +4753 -0
- package/dist/node-runtime/chunk-SWSN6HAB.js +53 -0
- package/dist/node-runtime/chunk-T5GM5BFH.js +7558 -0
- package/dist/node-runtime/chunk-TAP7QTUT.js +1346 -0
- package/dist/node-runtime/chunk-U6C7VTR5.js +2033 -0
- package/dist/node-runtime/chunk-URD2SLIT.js +1019 -0
- package/dist/node-runtime/chunk-VRB2IYGG.js +53 -0
- package/dist/node-runtime/chunk-W3CVH5RX.js +62 -0
- package/dist/node-runtime/chunk-W7S2REEG.js +9478 -0
- package/dist/node-runtime/chunk-XBWPBZBN.js +125 -0
- package/dist/node-runtime/chunk-XTHQ7XR7.js +509 -0
- package/dist/node-runtime/chunk-ZCHMJ34K.js +130 -0
- package/dist/node-runtime/chunk-ZRDIMBEQ.js +651 -0
- package/dist/node-runtime/chunk-ZSEZY3II.js +247 -0
- package/dist/node-runtime/cli-runtime.js +81 -0
- package/dist/node-runtime/clipboard-OZ63BBC6.js +12 -0
- package/dist/node-runtime/clipboard-image-7QR6GXVA.js +13 -0
- package/dist/node-runtime/command-6UXQ6XZN.js +13 -0
- package/dist/node-runtime/commands-LGR5VT5X.js +293 -0
- package/dist/node-runtime/config-FMEOZSWE.js +77 -0
- package/dist/node-runtime/curator-server-XCM43VEF.js +3816 -0
- package/dist/node-runtime/customize-XEXL2DGQ.js +12 -0
- package/dist/node-runtime/direct-tool-executor-TDJS7TBD.js +191 -0
- package/dist/node-runtime/exa-LL64QZR2.js +329 -0
- package/dist/node-runtime/export-html-E4DT6ZJQ.js +150 -0
- package/dist/node-runtime/extension-input-RV5N6APL.js +14 -0
- package/dist/node-runtime/extension-selector-CPD5LWDD.js +14 -0
- package/dist/node-runtime/extract-IUCVZCWC.js +17 -0
- package/dist/node-runtime/file-sync-HCOP2QVF.js +117 -0
- package/dist/node-runtime/gateway-3OLC4GQN.js +2139 -0
- package/dist/node-runtime/gemini-api-QE7ANVDZ.js +29 -0
- package/dist/node-runtime/gemini-search-NCIDF7NE.js +330 -0
- package/dist/node-runtime/gemini-url-context-OKIN7AIP.js +103 -0
- package/dist/node-runtime/gemini-web-MM446SEH.js +14 -0
- package/dist/node-runtime/github-extract-F64RZOEA.js +619 -0
- package/dist/node-runtime/goal-CZQ7FFQJ.js +1831 -0
- package/dist/node-runtime/image-resize-6ZPBFMWW.js +11 -0
- package/dist/node-runtime/index.js +863 -0
- package/dist/node-runtime/init-EKE277AG.js +30 -0
- package/dist/node-runtime/install-cli-TH7IJJQQ.js +308 -0
- package/dist/node-runtime/interactive-mode-S5M26CQ7.js +59 -0
- package/dist/node-runtime/interactive-view-N6F4KUIT.js +247 -0
- package/dist/node-runtime/lsp-manager-3ASUSO4T.js +1104 -0
- package/dist/node-runtime/lunr-computer-use-4X3KUNF4.js +206 -0
- package/dist/node-runtime/lunr-cron-KKBOGAEF.js +274 -0
- package/dist/node-runtime/main.js +57 -0
- package/dist/node-runtime/mcp-auth-flow-YL6RWPYG.js +33 -0
- package/dist/node-runtime/mcp-panel-IIGMXQGP.js +501 -0
- package/dist/node-runtime/mcp-setup-panel-FEK7663I.js +355 -0
- package/dist/node-runtime/memory-cap-3S4XRLNP.js +20 -0
- package/dist/node-runtime/model-tiers-NJLHUEGK.js +20 -0
- package/dist/node-runtime/openai-search-B3MSNCQA.js +288 -0
- package/dist/node-runtime/package-manager-cli-C4EJOO5Q.js +751 -0
- package/dist/node-runtime/parallel-AI2MNSCU.js +265 -0
- package/dist/node-runtime/parser-manager-TQHWYDH7.js +152 -0
- package/dist/node-runtime/pdf-extract-IPE6H4HP.js +57 -0
- package/dist/node-runtime/perplexity-QVJW3I35.js +12 -0
- package/dist/node-runtime/pi-intercom-EEMBGQID.js +2215 -0
- package/dist/node-runtime/pi-mcp-adapter-DPTJGAAL.js +428 -0
- package/dist/node-runtime/pi-ollama-cloud-4VZRMULP.js +1440 -0
- package/dist/node-runtime/pi-prompt-template-model-4QT4LLXF.js +3946 -0
- package/dist/node-runtime/pi-subagents-VKCLYIBY.js +6050 -0
- package/dist/node-runtime/pi-web-access-BV6DSZOP.js +1867 -0
- package/dist/node-runtime/print-mode-VWIRFDAC.js +12 -0
- package/dist/node-runtime/proxy-modes-R64LU6WZ.js +688 -0
- package/dist/node-runtime/rpc-entry.js +65 -0
- package/dist/node-runtime/rpc-mode-SJNSOA4G.js +13 -0
- package/dist/node-runtime/runtime-3SB5ATHQ.js +21 -0
- package/dist/node-runtime/runtime-bridges-UJ5WJJLN.js +14 -0
- package/dist/node-runtime/session-manager-QEMZBMTM.js +33 -0
- package/dist/node-runtime/session-selector-URVJLOTK.js +14 -0
- package/dist/node-runtime/settings-manager-K6IPIQTI.js +23 -0
- package/dist/node-runtime/src-GPFAU3N6.js +2427 -0
- package/dist/node-runtime/subagent-executor-EFLTO32A.js +8501 -0
- package/dist/node-runtime/summary-review-YSMXKITO.js +228 -0
- package/dist/node-runtime/tavily-WEZFVFP7.js +154 -0
- package/dist/node-runtime/timings-UAD5BEAS.js +16 -0
- package/dist/node-runtime/tool-renderer-MV5O452K.js +204 -0
- package/dist/node-runtime/update-cli-I6OVDRPL.js +75 -0
- package/dist/node-runtime/v4-5MNC3H7G.js +424 -0
- package/dist/node-runtime/video-extract-ETA5RA7U.js +304 -0
- package/dist/node-runtime/workflow-SA34S4VX.js +325 -0
- package/dist/node-runtime/workspace-index-6DBXSTJ6.js +163 -0
- package/dist/node-runtime/youtube-extract-SRVGNN26.js +264 -0
- package/dist/rpc.d.ts +3 -0
- package/dist/rpc.d.ts.map +1 -0
- package/dist/rpc.js +18 -0
- package/dist/rpc.js.map +1 -0
- package/dist/startup/benchmark-request.d.ts +3 -0
- package/dist/startup/benchmark-request.d.ts.map +1 -0
- package/dist/startup/benchmark-request.js +65 -0
- package/dist/startup/benchmark-request.js.map +1 -0
- package/dist/startup/{interactive-shell.d.ts → interactive-view.d.ts} +18 -18
- package/dist/startup/interactive-view.d.ts.map +1 -0
- package/dist/startup/{interactive-shell.js → interactive-view.js} +119 -52
- package/dist/startup/interactive-view.js.map +1 -0
- package/dist/startup/launch-routing.d.ts.map +1 -1
- package/dist/startup/launch-routing.js +9 -10
- package/dist/startup/launch-routing.js.map +1 -1
- package/dist/startup/startup-milestones.d.ts +1 -1
- package/dist/startup/startup-milestones.d.ts.map +1 -1
- package/dist/startup/startup-milestones.js +3 -2
- package/dist/startup/startup-milestones.js.map +1 -1
- package/dist/utils/await-with-abort.d.ts +2 -0
- package/dist/utils/await-with-abort.d.ts.map +1 -0
- package/dist/utils/await-with-abort.js +19 -0
- package/dist/utils/await-with-abort.js.map +1 -0
- package/dist/utils/syntax-highlight.d.ts.map +1 -1
- package/dist/utils/syntax-highlight.js +10 -4
- package/dist/utils/syntax-highlight.js.map +1 -1
- package/docs/compaction.md +5 -3
- package/docs/computer-use.md +277 -0
- package/docs/development.md +5 -33
- package/docs/features.md +2 -3
- package/docs/interactive-startup.md +105 -0
- package/docs/keybindings.md +2 -2
- package/docs/terminal-setup.md +1 -1
- package/docs/usage.md +1 -2
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/hidden-thinking-label.ts +1 -1
- 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/install-lock/package-lock.json +3827 -0
- package/install-lock/package.json +18 -0
- package/native/computer-use/LICENSE.md +21 -0
- package/npm-shrinkwrap.json +3808 -0
- package/package.json +30 -24
- package/dist/core/swarm.d.ts +0 -23
- package/dist/core/swarm.d.ts.map +0 -1
- package/dist/core/swarm.js +0 -45
- package/dist/core/swarm.js.map +0 -1
- package/dist/startup/interactive-shell.d.ts.map +0 -1
- package/dist/startup/interactive-shell.js.map +0 -1
|
@@ -38,7 +38,6 @@ import { getSearchCuratorSetting, setSearchCuratorSetting } from "../../core/sea
|
|
|
38
38
|
import { formatMissingSessionCwdPrompt, MissingSessionCwdError } from "../../core/session-cwd.js";
|
|
39
39
|
import { SessionManager, sessionEntryToContextMessages } from "../../core/session-manager.js";
|
|
40
40
|
import { BUILTIN_SLASH_COMMANDS } from "../../core/slash-commands.js";
|
|
41
|
-
import { buildSwarmPrompt } from "../../core/swarm.js";
|
|
42
41
|
import { time } from "../../core/timings.js";
|
|
43
42
|
import { hasTrustRequiringProjectResources, ProjectTrustStore } from "../../core/trust-manager.js";
|
|
44
43
|
import { checkForUpdate, markUpdateNotified } from "../../core/update-check.js";
|
|
@@ -93,6 +92,7 @@ import { wrapSkillTagAutocomplete } from "./skill-tag-autocomplete.js";
|
|
|
93
92
|
import { computeSmoothRevealStep, countGraphemesBeforeToolCall, countMessageGraphemes, sliceMessageContent, } from "./smooth-streaming.js";
|
|
94
93
|
import { getAvailableThemes, getAvailableThemesWithPaths, getEditorTheme, getMarkdownTheme, getThemeByName, getThemeName, onThemeChange, setRegisteredThemes, stopThemeWatcher, Theme, theme, } from "./theme/theme.js";
|
|
95
94
|
import { InteractiveThemeController } from "./theme/theme-controller.js";
|
|
95
|
+
import { wrapThinkingLevelSlashCommands } from "./thinking-level-slash.js";
|
|
96
96
|
function isExpandable(obj) {
|
|
97
97
|
return typeof obj === "object" && obj !== null && "setExpanded" in obj && typeof obj.setExpanded === "function";
|
|
98
98
|
}
|
|
@@ -227,9 +227,6 @@ export class InteractiveMode {
|
|
|
227
227
|
stopCatalogRefresh;
|
|
228
228
|
onInputCallback;
|
|
229
229
|
pendingUserInputs = [];
|
|
230
|
-
startupUserInputs = [];
|
|
231
|
-
startedFromShell;
|
|
232
|
-
deferredStartupEditorFactory;
|
|
233
230
|
stagedSubmitImages;
|
|
234
231
|
fallbackImageAttachments = new Map();
|
|
235
232
|
activeStatusIndicator = undefined;
|
|
@@ -275,8 +272,6 @@ export class InteractiveMode {
|
|
|
275
272
|
signalCleanupHandlers = [];
|
|
276
273
|
// Track if editor is in bash mode (text starts with !)
|
|
277
274
|
isBashMode = false;
|
|
278
|
-
// Track whether a /swarm orchestration turn is in flight (footer status)
|
|
279
|
-
swarmMode = false;
|
|
280
275
|
// lunr: mode in effect before the current plan stretch. Used by approve / `/plan off`
|
|
281
276
|
// / `/plan <text>` to leave plan. Shift+Tab and `/mode` pick the destination themselves.
|
|
282
277
|
previousPermissionMode;
|
|
@@ -294,6 +289,7 @@ export class InteractiveMode {
|
|
|
294
289
|
pendingBashComponents = [];
|
|
295
290
|
// Auto-compaction state
|
|
296
291
|
autoCompactionEscapeHandler;
|
|
292
|
+
pendingCompactionRender;
|
|
297
293
|
// Auto-retry state
|
|
298
294
|
retryEscapeHandler;
|
|
299
295
|
// Messages queued while compaction is running
|
|
@@ -322,8 +318,9 @@ export class InteractiveMode {
|
|
|
322
318
|
autoTrustOnReloadCwd;
|
|
323
319
|
themeController;
|
|
324
320
|
deferredBuiltinsAttached = false;
|
|
321
|
+
startupReadyPromise;
|
|
322
|
+
startupFeatureError;
|
|
325
323
|
deferredBuiltinAttachPromise;
|
|
326
|
-
promptBarrierPromise;
|
|
327
324
|
// Convenience accessors
|
|
328
325
|
get session() {
|
|
329
326
|
return this.runtimeHost.session;
|
|
@@ -363,9 +360,7 @@ export class InteractiveMode {
|
|
|
363
360
|
this.syncPermissionModeEffects(this.settingsManager.getDefaultPermissionMode());
|
|
364
361
|
});
|
|
365
362
|
this.version = VERSION;
|
|
366
|
-
|
|
367
|
-
this.startedFromShell = startupShell !== undefined;
|
|
368
|
-
this.ui = startupShell?.ui ?? new TUI(new ProcessTerminal(), this.settingsManager.getShowHardwareCursor());
|
|
363
|
+
this.ui = options.startupView?.ui ?? new TUI(new ProcessTerminal(), this.settingsManager.getShowHardwareCursor());
|
|
369
364
|
this.ui.setClearOnShrink(this.settingsManager.getClearOnShrink());
|
|
370
365
|
// lunr: register the permission-mode footer bridge (provider-side: InteractiveMode owns the state).
|
|
371
366
|
registerPermissionModeBridge(() => getPermissionMode());
|
|
@@ -376,25 +371,29 @@ export class InteractiveMode {
|
|
|
376
371
|
// lunr: reset permission mode to configured default on startup.
|
|
377
372
|
resetPermissions(this.settingsManager.getDefaultPermissionMode());
|
|
378
373
|
this.headerContainer = new Container();
|
|
374
|
+
if (options.startupView) {
|
|
375
|
+
this.headerContainer.addChild(new Spacer(1));
|
|
376
|
+
this.headerContainer.addChild(options.startupView.header);
|
|
377
|
+
this.customFooter = options.startupView.footer;
|
|
378
|
+
}
|
|
379
379
|
this.loadedResourcesContainer = new Container();
|
|
380
380
|
this.chatContainer = new Container();
|
|
381
381
|
this.pendingMessagesContainer = new Container();
|
|
382
|
-
this.statusContainer = new Container();
|
|
382
|
+
this.statusContainer = options.startupView?.statusContainer ?? new Container();
|
|
383
383
|
this.widgetContainerAbove = new Container();
|
|
384
384
|
this.widgetContainerBelow = new Container();
|
|
385
|
-
this.keybindings =
|
|
385
|
+
this.keybindings = options.startupView?.keybindings ?? KeybindingsManager.create();
|
|
386
386
|
setKeybindings(this.keybindings);
|
|
387
387
|
const editorPaddingX = this.settingsManager.getEditorPaddingX();
|
|
388
388
|
const autocompleteMaxVisible = this.settingsManager.getAutocompleteMaxVisible();
|
|
389
389
|
this.defaultEditor =
|
|
390
|
-
|
|
390
|
+
options.startupView?.editor ??
|
|
391
391
|
new CustomEditor(this.ui, getEditorTheme(), this.keybindings, {
|
|
392
392
|
paddingX: editorPaddingX,
|
|
393
393
|
autocompleteMaxVisible,
|
|
394
394
|
});
|
|
395
|
-
this.defaultEditor.setPaddingX(editorPaddingX);
|
|
396
|
-
this.defaultEditor.setAutocompleteMaxVisible(autocompleteMaxVisible);
|
|
397
395
|
this.editor = this.defaultEditor;
|
|
396
|
+
options.startupView?.setCurrentEditor(() => this.editor);
|
|
398
397
|
this.editorContainer = new Container();
|
|
399
398
|
this.editorContainer.addChild(this.editor);
|
|
400
399
|
this.footerDataProvider = new FooterDataProvider(this.sessionManager.getCwd());
|
|
@@ -537,7 +536,7 @@ export class InteractiveMode {
|
|
|
537
536
|
});
|
|
538
537
|
}
|
|
539
538
|
setupAutocompleteProvider() {
|
|
540
|
-
let provider = this.createBaseAutocompleteProvider();
|
|
539
|
+
let provider = wrapThinkingLevelSlashCommands(this.createBaseAutocompleteProvider(), () => this.session.getAvailableThinkingLevels());
|
|
541
540
|
const triggerCharacters = [...(provider.triggerCharacters ?? [])];
|
|
542
541
|
for (const wrapProvider of this.autocompleteProviderWrappers) {
|
|
543
542
|
provider = wrapProvider(provider);
|
|
@@ -556,14 +555,11 @@ export class InteractiveMode {
|
|
|
556
555
|
if (this.isInitialized)
|
|
557
556
|
return;
|
|
558
557
|
this.registerSignalHandlers();
|
|
559
|
-
const startupBenchmark = process.env.PI_STARTUP_BENCHMARK === "1";
|
|
560
558
|
this.fdPath = getToolPath("fd") ?? undefined;
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
this.setupAutocompleteProvider();
|
|
566
|
-
});
|
|
559
|
+
void startInteractiveToolInstalls(this.fdPath, (fdPath) => {
|
|
560
|
+
this.fdPath = fdPath;
|
|
561
|
+
this.setupAutocompleteProvider();
|
|
562
|
+
});
|
|
567
563
|
time("ensureTools");
|
|
568
564
|
if (this.session.scopedModels.length > 0 && (this.options.verbose || !this.settingsManager.getQuietStartup())) {
|
|
569
565
|
const modelList = this.session.scopedModels
|
|
@@ -578,7 +574,7 @@ export class InteractiveMode {
|
|
|
578
574
|
: "";
|
|
579
575
|
console.log(theme.fg("dim", `Model scope: ${modelList}${cycleHint}`));
|
|
580
576
|
}
|
|
581
|
-
if (this.
|
|
577
|
+
if (this.options.startupView) {
|
|
582
578
|
this.ui.pinFrom(null);
|
|
583
579
|
this.ui.clear();
|
|
584
580
|
}
|
|
@@ -593,28 +589,20 @@ export class InteractiveMode {
|
|
|
593
589
|
this.ui.addChild(this.widgetContainerAbove);
|
|
594
590
|
this.ui.addChild(this.editorContainer);
|
|
595
591
|
this.ui.addChild(this.widgetContainerBelow);
|
|
596
|
-
this.ui.addChild(this.footer);
|
|
592
|
+
this.ui.addChild(this.customFooter ?? this.footer);
|
|
597
593
|
this.ui.setFocus(this.editor);
|
|
598
|
-
this.setupKeyHandlers();
|
|
599
|
-
const startupSubmissions = this.options.startupShellBinding?.pendingSubmissions.splice(0) ?? [];
|
|
600
|
-
this.startupUserInputs.push(...startupSubmissions.map(async ({ text, attachments }) => ({
|
|
601
|
-
text,
|
|
602
|
-
images: await this.loadImageAttachments(attachments),
|
|
603
|
-
})));
|
|
604
|
-
this.setupEditorSubmitHandler();
|
|
605
594
|
this.ui.pinFrom(this.widgetContainerAbove);
|
|
595
|
+
this.setupKeyHandlers();
|
|
596
|
+
if (!this.options.startupView)
|
|
597
|
+
this.setupEditorSubmitHandler();
|
|
606
598
|
this.ui.setAlternateScreen(true);
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
}
|
|
610
|
-
else {
|
|
599
|
+
// Start the UI before initializing extensions so session_start handlers can use interactive dialogs
|
|
600
|
+
if (!this.options.startupView)
|
|
611
601
|
this.ui.start();
|
|
612
|
-
}
|
|
613
602
|
this.isInitialized = true;
|
|
614
603
|
time("ui.start");
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
this.startPlanUsagePolling();
|
|
604
|
+
void this.maybeNotifyCliUpdate();
|
|
605
|
+
this.startPlanUsagePolling();
|
|
618
606
|
// lunr: register the permission approval dialog handler so manual mode can prompt.
|
|
619
607
|
registerApprovalHandler(async (req) => {
|
|
620
608
|
if (req.kind === "large-subagent-launch") {
|
|
@@ -638,6 +626,7 @@ export class InteractiveMode {
|
|
|
638
626
|
setRollbackWarningHandler((msg) => this.showStatus(msg));
|
|
639
627
|
this.syncPermissionModeEffects(this.settingsManager.getDefaultPermissionMode());
|
|
640
628
|
await this.themeController.applyFromSettings();
|
|
629
|
+
this.headerContainer.clear();
|
|
641
630
|
// Add boot screen header (unless silenced)
|
|
642
631
|
if (this.options.verbose || !this.settingsManager.getQuietStartup()) {
|
|
643
632
|
const header = theme.bold(theme.fg("accent", APP_NAME)) + theme.fg("dim", ` v${this.version}`);
|
|
@@ -657,21 +646,32 @@ export class InteractiveMode {
|
|
|
657
646
|
await this.rebindCurrentSession();
|
|
658
647
|
time("rebindCurrentSession");
|
|
659
648
|
this.renderInitialMessages();
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
else
|
|
664
|
-
this.showStatus(diagnostic.message);
|
|
665
|
-
}
|
|
649
|
+
this.ui.requestRender();
|
|
650
|
+
for (const diagnostic of this.options.startupDiagnostics ?? [])
|
|
651
|
+
this.showStatus(diagnostic.message);
|
|
666
652
|
for (const warning of this.options.deprecationWarnings ?? [])
|
|
667
653
|
this.showWarning(warning);
|
|
668
654
|
this.deferredBuiltinAttachPromise = this.attachDeferredBuiltinExtensions();
|
|
669
|
-
this.
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
655
|
+
this.startupReadyPromise = this.deferredBuiltinAttachPromise.then(() => {
|
|
656
|
+
if (!this.isInitialized)
|
|
657
|
+
return;
|
|
658
|
+
if (this.startupFeatureError)
|
|
659
|
+
throw this.startupFeatureError;
|
|
660
|
+
if (this.options.startupView) {
|
|
661
|
+
this.setupEditorSubmitHandler();
|
|
662
|
+
// Extensions can replace the editor. Wire its submit callback after readiness as well.
|
|
663
|
+
this.editor.onSubmit = this.defaultEditor.onSubmit;
|
|
664
|
+
this.options.startupView.activate();
|
|
665
|
+
}
|
|
673
666
|
time("attachDeferredBuiltins");
|
|
674
667
|
markStartupMilestone("prompt_barrier_open");
|
|
668
|
+
void this.options.deferredMaintenance?.();
|
|
669
|
+
});
|
|
670
|
+
void this.startupReadyPromise.catch((error) => {
|
|
671
|
+
if (this.options.startupView)
|
|
672
|
+
this.options.startupView.showError(error);
|
|
673
|
+
else
|
|
674
|
+
this.showError(String(error));
|
|
675
675
|
});
|
|
676
676
|
// Set up theme file watcher
|
|
677
677
|
onThemeChange(() => {
|
|
@@ -681,47 +681,40 @@ export class InteractiveMode {
|
|
|
681
681
|
});
|
|
682
682
|
// Set up git branch watcher (uses provider instead of footer)
|
|
683
683
|
this.footerDataProvider.onBranchChange(() => {
|
|
684
|
-
this.ui.
|
|
684
|
+
this.ui.requestRender();
|
|
685
685
|
});
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
isBusy: () => this.session.isStreaming,
|
|
701
|
-
onUpdate: () => {
|
|
702
|
-
this.session.refreshModelFromRegistry();
|
|
703
|
-
this.footer.invalidate();
|
|
704
|
-
},
|
|
705
|
-
});
|
|
686
|
+
// Cache-only footer snapshot. Do not hold time-to-type on it.
|
|
687
|
+
void this.updateAvailableProviderCount().then(() => {
|
|
688
|
+
time("updateAvailableProviderCount");
|
|
689
|
+
});
|
|
690
|
+
void this.waitForDeferredBuiltins().then(() => {
|
|
691
|
+
if (!this.isInitialized)
|
|
692
|
+
return;
|
|
693
|
+
this.stopCatalogRefresh = startCatalogRefreshPolling({
|
|
694
|
+
refresh: (signal) => this.session.modelRuntime.refreshIfStale({ signal }),
|
|
695
|
+
isBusy: () => this.session.isStreaming,
|
|
696
|
+
onUpdate: () => {
|
|
697
|
+
this.session.refreshModelFromRegistry();
|
|
698
|
+
this.footer.invalidate();
|
|
699
|
+
},
|
|
706
700
|
});
|
|
707
|
-
void Promise.allSettled([toolMaintenance, updateMaintenance, providerMaintenance, callerMaintenance]).then(() => {
|
|
708
|
-
markStartupMilestone("deferred_maintenance_idle");
|
|
709
701
|
});
|
|
710
702
|
}
|
|
703
|
+
async waitForStartupReady() {
|
|
704
|
+
await this.startupReadyPromise;
|
|
705
|
+
}
|
|
706
|
+
/** Wait until deferred builtins have attached (or were skipped). */
|
|
711
707
|
async waitForDeferredBuiltins() {
|
|
712
|
-
if (this.deferredBuiltinAttachPromise)
|
|
708
|
+
if (this.deferredBuiltinAttachPromise) {
|
|
713
709
|
await this.deferredBuiltinAttachPromise;
|
|
714
|
-
|
|
715
|
-
async waitForPromptBarrier() {
|
|
716
|
-
if (this.promptBarrierPromise)
|
|
717
|
-
await this.promptBarrierPromise;
|
|
710
|
+
}
|
|
718
711
|
}
|
|
719
712
|
planUsageTimer;
|
|
720
713
|
startPlanUsagePolling() {
|
|
721
714
|
const bridge = getUsageServiceBridge();
|
|
722
715
|
if (!bridge)
|
|
723
716
|
return;
|
|
724
|
-
bridge.setOnUpdate(() => this.ui.
|
|
717
|
+
bridge.setOnUpdate(() => this.ui.requestRender());
|
|
725
718
|
const tick = () => {
|
|
726
719
|
const provider = this.session.model?.provider;
|
|
727
720
|
if (provider)
|
|
@@ -769,6 +762,7 @@ export class InteractiveMode {
|
|
|
769
762
|
if (!this.isInitialized) {
|
|
770
763
|
await this.init();
|
|
771
764
|
}
|
|
765
|
+
await this.waitForStartupReady();
|
|
772
766
|
// Check tmux keyboard setup asynchronously
|
|
773
767
|
this.checkTmuxKeyboardSetup().then((warning) => {
|
|
774
768
|
if (warning) {
|
|
@@ -1307,7 +1301,7 @@ export class InteractiveMode {
|
|
|
1307
1301
|
* Initialize the extension system with TUI-based UI context.
|
|
1308
1302
|
*/
|
|
1309
1303
|
async awaitDeferredBuiltinsForPrompt() {
|
|
1310
|
-
await this.
|
|
1304
|
+
await this.waitForDeferredBuiltins();
|
|
1311
1305
|
}
|
|
1312
1306
|
async promptAfterDeferredBuiltins(text, options) {
|
|
1313
1307
|
await this.awaitDeferredBuiltinsForPrompt();
|
|
@@ -1323,24 +1317,24 @@ export class InteractiveMode {
|
|
|
1323
1317
|
}
|
|
1324
1318
|
this.setExtensionStatus("deferred-builtins", "loading tools…");
|
|
1325
1319
|
try {
|
|
1326
|
-
const
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
this.showError(`Failed to load deferred extensions: ${failures.map(({ name }) => name).join(", ")}`);
|
|
1336
|
-
}
|
|
1320
|
+
const factories = await this.options.deferredBuiltinFactories();
|
|
1321
|
+
this.deferredBuiltinsAttached = true;
|
|
1322
|
+
if (factories.length === 0)
|
|
1323
|
+
return;
|
|
1324
|
+
this.options.onDeferredBuiltinsAttached?.(factories);
|
|
1325
|
+
await this.session.attachInlineExtensions(factories);
|
|
1326
|
+
this.setupAutocompleteProvider();
|
|
1327
|
+
this.setupExtensionShortcuts(this.session.extensionRunner);
|
|
1328
|
+
this.showLoadedResources({ force: false, showDiagnosticsWhenQuiet: true });
|
|
1337
1329
|
}
|
|
1338
1330
|
catch (error) {
|
|
1331
|
+
this.deferredBuiltinsAttached = false;
|
|
1339
1332
|
const message = error instanceof Error ? error.message : String(error);
|
|
1333
|
+
if (this.options.startupView)
|
|
1334
|
+
this.startupFeatureError = new Error(message);
|
|
1340
1335
|
this.showError(`Failed to load deferred extensions: ${message}`);
|
|
1341
1336
|
}
|
|
1342
1337
|
finally {
|
|
1343
|
-
this.deferredBuiltinsAttached = true;
|
|
1344
1338
|
this.setExtensionStatus("deferred-builtins", undefined);
|
|
1345
1339
|
}
|
|
1346
1340
|
}
|
|
@@ -1490,6 +1484,7 @@ export class InteractiveMode {
|
|
|
1490
1484
|
this.chatContainer.clear();
|
|
1491
1485
|
this.pendingMessagesContainer.clear();
|
|
1492
1486
|
this.compactionQueuedMessages = [];
|
|
1487
|
+
this.pendingCompactionRender = undefined;
|
|
1493
1488
|
this.stopSmoothStreaming();
|
|
1494
1489
|
this.streamingComponent = undefined;
|
|
1495
1490
|
this.streamingMessage = undefined;
|
|
@@ -1715,7 +1710,13 @@ export class InteractiveMode {
|
|
|
1715
1710
|
if (leadingSpacer) {
|
|
1716
1711
|
container.addChild(new Spacer(1));
|
|
1717
1712
|
}
|
|
1713
|
+
let first = true;
|
|
1718
1714
|
for (const component of widgets.values()) {
|
|
1715
|
+
if (!first) {
|
|
1716
|
+
container.addChild(new Spacer(1));
|
|
1717
|
+
container.addChild(new DynamicBorder((s) => theme.fg("dim", s)));
|
|
1718
|
+
}
|
|
1719
|
+
first = false;
|
|
1719
1720
|
container.addChild(component);
|
|
1720
1721
|
}
|
|
1721
1722
|
}
|
|
@@ -1996,12 +1997,9 @@ export class InteractiveMode {
|
|
|
1996
1997
|
*/
|
|
1997
1998
|
setCustomEditorComponent(factory) {
|
|
1998
1999
|
this.editorComponentFactory = factory;
|
|
2000
|
+
// Save text from current editor before switching
|
|
1999
2001
|
const currentText = this.editor.getText();
|
|
2000
|
-
|
|
2001
|
-
this.deferredStartupEditorFactory = factory;
|
|
2002
|
-
return;
|
|
2003
|
-
}
|
|
2004
|
-
this.deferredStartupEditorFactory = undefined;
|
|
2002
|
+
const startupImages = this.options.startupView ? this.editor.getPendingImages?.() : undefined;
|
|
2005
2003
|
this.editorContainer.clear();
|
|
2006
2004
|
if (factory) {
|
|
2007
2005
|
// Create the custom editor with tui, theme, and keybindings
|
|
@@ -2010,7 +2008,16 @@ export class InteractiveMode {
|
|
|
2010
2008
|
newEditor.onSubmit = this.defaultEditor.onSubmit;
|
|
2011
2009
|
newEditor.onChange = this.defaultEditor.onChange;
|
|
2012
2010
|
// Copy text from previous editor
|
|
2013
|
-
newEditor.
|
|
2011
|
+
if (newEditor !== this.editor) {
|
|
2012
|
+
newEditor.setText(currentText);
|
|
2013
|
+
if (startupImages?.length) {
|
|
2014
|
+
if (newEditor.restoreImageMarkers)
|
|
2015
|
+
newEditor.restoreImageMarkers(startupImages);
|
|
2016
|
+
else
|
|
2017
|
+
for (const image of startupImages)
|
|
2018
|
+
this.fallbackImageAttachments.set(image.id, image);
|
|
2019
|
+
}
|
|
2020
|
+
}
|
|
2014
2021
|
// Copy appearance settings if supported
|
|
2015
2022
|
if (newEditor.borderColor !== undefined) {
|
|
2016
2023
|
newEditor.borderColor = this.defaultEditor.borderColor;
|
|
@@ -2025,7 +2032,9 @@ export class InteractiveMode {
|
|
|
2025
2032
|
// If extending CustomEditor, copy app-level handlers
|
|
2026
2033
|
// Use duck typing since instanceof fails across jiti module boundaries
|
|
2027
2034
|
const customEditor = newEditor;
|
|
2028
|
-
if (
|
|
2035
|
+
if (newEditor !== this.defaultEditor &&
|
|
2036
|
+
"actionHandlers" in customEditor &&
|
|
2037
|
+
customEditor.actionHandlers instanceof Map) {
|
|
2029
2038
|
if (!customEditor.onEscape) {
|
|
2030
2039
|
customEditor.onEscape = () => this.defaultEditor.onEscape?.();
|
|
2031
2040
|
}
|
|
@@ -2044,20 +2053,14 @@ export class InteractiveMode {
|
|
|
2044
2053
|
}
|
|
2045
2054
|
else {
|
|
2046
2055
|
// Restore default editor with text from custom editor
|
|
2047
|
-
this.defaultEditor
|
|
2056
|
+
if (this.editor !== this.defaultEditor)
|
|
2057
|
+
this.defaultEditor.setText(currentText);
|
|
2048
2058
|
this.editor = this.defaultEditor;
|
|
2049
2059
|
}
|
|
2050
2060
|
this.editorContainer.addChild(this.editor);
|
|
2051
2061
|
this.ui.setFocus(this.editor);
|
|
2052
2062
|
this.ui.requestRender();
|
|
2053
2063
|
}
|
|
2054
|
-
activateDeferredStartupEditor() {
|
|
2055
|
-
const factory = this.deferredStartupEditorFactory;
|
|
2056
|
-
if (!factory || this.editor.getText().length > 0)
|
|
2057
|
-
return;
|
|
2058
|
-
this.deferredStartupEditorFactory = undefined;
|
|
2059
|
-
this.setCustomEditorComponent(factory);
|
|
2060
|
-
}
|
|
2061
2064
|
/**
|
|
2062
2065
|
* Show a notification for extensions.
|
|
2063
2066
|
*/
|
|
@@ -2354,9 +2357,8 @@ export class InteractiveMode {
|
|
|
2354
2357
|
const image = await readClipboardImage();
|
|
2355
2358
|
if (image) {
|
|
2356
2359
|
const saved = this.writeClipboardImageFile(image);
|
|
2357
|
-
|
|
2360
|
+
this.insertImageChip(saved);
|
|
2358
2361
|
this.ui.requestRender();
|
|
2359
|
-
this.showStatus(`Pasted ${formatImageMarker(id)}`);
|
|
2360
2362
|
return;
|
|
2361
2363
|
}
|
|
2362
2364
|
if (options.textFallback !== false) {
|
|
@@ -2381,7 +2383,6 @@ export class InteractiveMode {
|
|
|
2381
2383
|
return;
|
|
2382
2384
|
}
|
|
2383
2385
|
const images = this.consumeStagedSubmitImages() ?? (await this.loadImageAttachments(this.takeSubmittedImages(text)));
|
|
2384
|
-
this.activateDeferredStartupEditor();
|
|
2385
2386
|
this.ui.setChatScroll(0);
|
|
2386
2387
|
// Handle commands
|
|
2387
2388
|
if (text === "/paste-image") {
|
|
@@ -2554,12 +2555,6 @@ export class InteractiveMode {
|
|
|
2554
2555
|
await this.handleInitCommand();
|
|
2555
2556
|
return;
|
|
2556
2557
|
}
|
|
2557
|
-
if (text === "/swarm" || text.startsWith("/swarm ")) {
|
|
2558
|
-
const task = text.startsWith("/swarm ") ? text.slice(7).trim() : "";
|
|
2559
|
-
this.editor.setText("");
|
|
2560
|
-
await this.handleSwarmCommand(task);
|
|
2561
|
-
return;
|
|
2562
|
-
}
|
|
2563
2558
|
if (text === "/debug") {
|
|
2564
2559
|
this.handleDebugCommand();
|
|
2565
2560
|
this.editor.setText("");
|
|
@@ -2957,16 +2952,17 @@ export class InteractiveMode {
|
|
|
2957
2952
|
this.streamingMessage = undefined;
|
|
2958
2953
|
}
|
|
2959
2954
|
this.pendingTools.clear();
|
|
2960
|
-
if (this.swarmMode) {
|
|
2961
|
-
this.swarmMode = false;
|
|
2962
|
-
this.setExtensionStatus("swarm", undefined);
|
|
2963
|
-
}
|
|
2964
2955
|
this.maybeAutoNameSession();
|
|
2965
2956
|
// lunr: capture tree-scope changes at turn boundary (bash side-effects).
|
|
2966
2957
|
captureTreeChanges(this.sessionManager.getCwd(), this.sessionManager.getSessionId());
|
|
2967
2958
|
this.ui.requestRender();
|
|
2968
2959
|
break;
|
|
2969
2960
|
case "agent_settled":
|
|
2961
|
+
if (this.pendingCompactionRender) {
|
|
2962
|
+
const result = this.pendingCompactionRender;
|
|
2963
|
+
this.pendingCompactionRender = undefined;
|
|
2964
|
+
this.renderCompactionResult(result);
|
|
2965
|
+
}
|
|
2970
2966
|
await this.checkShutdownRequested();
|
|
2971
2967
|
break;
|
|
2972
2968
|
case "compaction_start": {
|
|
@@ -3000,10 +2996,12 @@ export class InteractiveMode {
|
|
|
3000
2996
|
}
|
|
3001
2997
|
}
|
|
3002
2998
|
else if (event.result) {
|
|
3003
|
-
this.
|
|
3004
|
-
|
|
3005
|
-
|
|
3006
|
-
|
|
2999
|
+
if (this.session.isIdle) {
|
|
3000
|
+
this.renderCompactionResult(event.result);
|
|
3001
|
+
}
|
|
3002
|
+
else {
|
|
3003
|
+
this.pendingCompactionRender = event.result;
|
|
3004
|
+
}
|
|
3007
3005
|
}
|
|
3008
3006
|
else if (event.errorMessage) {
|
|
3009
3007
|
if (event.reason === "manual") {
|
|
@@ -3332,9 +3330,6 @@ export class InteractiveMode {
|
|
|
3332
3330
|
this.chatContainer.addChild(new Text(theme.fg("warning", `This project is not trusted. Project ${CONFIG_DIR_NAME} resources and packages are ignored. Use /trust to save a trust decision, then restart pi.`), 1, 0));
|
|
3333
3331
|
}
|
|
3334
3332
|
async getUserInput() {
|
|
3335
|
-
const startupInput = this.startupUserInputs.shift();
|
|
3336
|
-
if (startupInput !== undefined)
|
|
3337
|
-
return startupInput;
|
|
3338
3333
|
const queuedInput = this.pendingUserInputs.shift();
|
|
3339
3334
|
if (queuedInput !== undefined) {
|
|
3340
3335
|
return queuedInput;
|
|
@@ -3360,7 +3355,6 @@ export class InteractiveMode {
|
|
|
3360
3355
|
}
|
|
3361
3356
|
else {
|
|
3362
3357
|
this.clearEditor();
|
|
3363
|
-
this.activateDeferredStartupEditor();
|
|
3364
3358
|
this.lastSigintTime = now;
|
|
3365
3359
|
}
|
|
3366
3360
|
}
|
|
@@ -3626,7 +3620,6 @@ export class InteractiveMode {
|
|
|
3626
3620
|
else {
|
|
3627
3621
|
this.footer.invalidate();
|
|
3628
3622
|
this.updateEditorBorderColor();
|
|
3629
|
-
this.showStatus(`Thinking level: ${newLevel}`);
|
|
3630
3623
|
}
|
|
3631
3624
|
}
|
|
3632
3625
|
cyclePermissionMode() {
|
|
@@ -3642,8 +3635,6 @@ export class InteractiveMode {
|
|
|
3642
3635
|
else {
|
|
3643
3636
|
this.footer.invalidate();
|
|
3644
3637
|
this.updateEditorBorderColor();
|
|
3645
|
-
const thinkingStr = result.model.reasoning && result.thinkingLevel !== "off" ? ` (thinking: ${result.thinkingLevel})` : "";
|
|
3646
|
-
this.showStatus(`Switched to ${result.model.name || result.model.id}${thinkingStr}`);
|
|
3647
3638
|
void this.maybeWarnAboutAnthropicSubscriptionAuth(result.model);
|
|
3648
3639
|
}
|
|
3649
3640
|
}
|
|
@@ -3861,6 +3852,12 @@ export class InteractiveMode {
|
|
|
3861
3852
|
const commandName = spaceIndex === -1 ? text.slice(1) : text.slice(1, spaceIndex);
|
|
3862
3853
|
return !!extensionRunner.getCommand(commandName);
|
|
3863
3854
|
}
|
|
3855
|
+
renderCompactionResult(result) {
|
|
3856
|
+
this.chatContainer.clear();
|
|
3857
|
+
this.rebuildChatFromMessages();
|
|
3858
|
+
this.addMessageToChat(createCompactionSummaryMessage(result.summary, result.tokensBefore, new Date().toISOString()));
|
|
3859
|
+
this.footer.invalidate();
|
|
3860
|
+
}
|
|
3864
3861
|
async flushCompactionQueue(options) {
|
|
3865
3862
|
if (this.compactionQueuedMessages.length === 0) {
|
|
3866
3863
|
return;
|
|
@@ -4001,6 +3998,8 @@ export class InteractiveMode {
|
|
|
4001
3998
|
globalInstructionsPath: getGlobalInstructionsPath(getAgentDir()),
|
|
4002
3999
|
modelInstructionsPath: getModelInstructionsPath(getAgentDir(), this.session.model?.id ?? "no-model-selected"),
|
|
4003
4000
|
confirmLargeSubagentLaunches: this.settingsManager.getConfirmLargeSubagentLaunches(),
|
|
4001
|
+
computerUse: this.settingsManager.getComputerUse(),
|
|
4002
|
+
computerForeground: this.settingsManager.getComputerForeground(),
|
|
4004
4003
|
memoryEnabled: this.settingsManager.getMemoryEnabled(),
|
|
4005
4004
|
memoryCharCap: this.settingsManager.getMemoryCharCap(),
|
|
4006
4005
|
searchCurator: getSearchCuratorSetting(),
|
|
@@ -4206,6 +4205,12 @@ export class InteractiveMode {
|
|
|
4206
4205
|
onMemoryCharCapChange: (cap) => {
|
|
4207
4206
|
this.settingsManager.setMemoryCharCap(cap);
|
|
4208
4207
|
},
|
|
4208
|
+
onComputerUseChange: (enabled) => {
|
|
4209
|
+
this.settingsManager.setComputerUse(enabled);
|
|
4210
|
+
},
|
|
4211
|
+
onComputerForegroundChange: (enabled) => {
|
|
4212
|
+
this.settingsManager.setComputerForeground(enabled);
|
|
4213
|
+
},
|
|
4209
4214
|
onMemoryEnabledChange: (enabled) => {
|
|
4210
4215
|
this.settingsManager.setMemoryEnabled(enabled);
|
|
4211
4216
|
this.session.refreshToolRegistry();
|
|
@@ -5599,24 +5604,6 @@ export class InteractiveMode {
|
|
|
5599
5604
|
await this.sendUserMessageAfterDeferredBuiltins(prompt);
|
|
5600
5605
|
this.showStatus("AGENTS.md is being generated — run /reload when it finishes to load it into context.");
|
|
5601
5606
|
}
|
|
5602
|
-
async handleSwarmCommand(task) {
|
|
5603
|
-
if (task.length === 0) {
|
|
5604
|
-
if (this.swarmMode) {
|
|
5605
|
-
this.showStatus("Swarm mode is active — run /subagents-fleet to monitor the fleet.");
|
|
5606
|
-
}
|
|
5607
|
-
else {
|
|
5608
|
-
this.showStatus("Usage: /swarm <task> — decomposes the task across parallel subagents. Monitor with /subagents-fleet.");
|
|
5609
|
-
}
|
|
5610
|
-
return;
|
|
5611
|
-
}
|
|
5612
|
-
if (this.session.isStreaming) {
|
|
5613
|
-
this.showWarning("Wait for the current response to finish before running /swarm.");
|
|
5614
|
-
return;
|
|
5615
|
-
}
|
|
5616
|
-
this.swarmMode = true;
|
|
5617
|
-
this.setExtensionStatus("swarm", "swarm");
|
|
5618
|
-
await this.sendUserMessageAfterDeferredBuiltins(buildSwarmPrompt(task));
|
|
5619
|
-
}
|
|
5620
5607
|
// lunr: /undo and /edit rewind the same session via navigateTree (no fork).
|
|
5621
5608
|
// /undo leaves the editor alone; /edit pastes the undone user text. /redo
|
|
5622
5609
|
// pops the previous leaf and navigates back.
|
|
@@ -6460,7 +6447,7 @@ export class InteractiveMode {
|
|
|
6460
6447
|
this.showSelector((done) => {
|
|
6461
6448
|
const component = new ProcessesSelectorComponent(() => {
|
|
6462
6449
|
done();
|
|
6463
|
-
}
|
|
6450
|
+
});
|
|
6464
6451
|
return { component, focus: component };
|
|
6465
6452
|
});
|
|
6466
6453
|
}
|
|
@@ -6630,8 +6617,7 @@ export class InteractiveMode {
|
|
|
6630
6617
|
${cycleThinkingLevel ? `| \`${cycleThinkingLevel}\` | Cycle thinking level |\n` : ""}| \`${cycleModelForward}\` / \`${cycleModelBackward}\` | Cycle models |
|
|
6631
6618
|
| \`${selectModel}\` | Open model selector |
|
|
6632
6619
|
| \`${expandTools}\` | Expand or collapse a thinking/tool card |
|
|
6633
|
-
|
|
6634
|
-
| \`${externalEditor}\` | Edit message in external editor |
|
|
6620
|
+
${toggleThinking ? `| \`${toggleThinking}\` | Toggle thinking block visibility |\n` : ""}| \`${externalEditor}\` | Edit message in external editor |
|
|
6635
6621
|
| \`${copyMessage}\` | Copy last assistant message |
|
|
6636
6622
|
| \`${followUp}\` | Queue follow-up message |
|
|
6637
6623
|
| \`${dequeue}\` | Restore queued messages |
|